From f3b6258e7c742213c22ab1a894873089ce416fe5 Mon Sep 17 00:00:00 2001 From: Rainer Walke Date: Wed, 13 Nov 2024 13:45:55 +0100 Subject: [PATCH 001/244] do not provide a default local directory Signed-off-by: Rainer Walke --- src/gui/owncloudsetupwizard.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp index 40b88289a340d..d5b4fbdeec9d9 100644 --- a/src/gui/owncloudsetupwizard.cpp +++ b/src/gui/owncloudsetupwizard.cpp @@ -119,6 +119,7 @@ void OwncloudSetupWizard::startWizard() localFolder = QDir::homePath() + QLatin1Char('/') + localFolder; } + localFolder = "Please select folder"; _ocWizard->setProperty("localFolder", localFolder); { ConfigFile cfg; From 7192ba87bfed1840aa4c6baf75d7c99b7be138c4 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Thu, 14 Nov 2024 02:55:19 +0000 Subject: [PATCH 002/244] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: Rainer Walke --- translations/client_fr.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/client_fr.ts b/translations/client_fr.ts index a8d5a0cc7ef9c..b04c3da8bfd0b 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -5981,7 +5981,7 @@ Le serveur a répondu avec l'erreur : %2 Easy-to-use web mail, calendaring & contacts - Courrier électronique, calendrier et contacts en ligne faciles à utiliser + E-mail, agenda et contacts en ligne faciles à utiliser From 82d068e55c046504d2cae0dc5ad07917100eaea5 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 12 Nov 2024 14:57:26 +0800 Subject: [PATCH 003/244] Add section on Apple ATS to docs troubleshooting section Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- doc/troubleshooting.rst | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/doc/troubleshooting.rst b/doc/troubleshooting.rst index 8c1666e62dac4..d6580af326e98 100644 --- a/doc/troubleshooting.rst +++ b/doc/troubleshooting.rst @@ -92,6 +92,20 @@ might be required in some situations, for example behind CloudFlare which has been seen limiting upload chunks to 100mb. In other situations, limiting ``targetChunkUploadDuration`` can help to avoid time-outs. +Connection issues with the macOS client on "insecure" connections +----------------------------------------------------------------- +When using macOS devices to connect to a Nextcloud server that uses a what maybe +be classified as an insecure connection (i.e. connecting to a server with a +self-signed certificate, or a certificate with what Apple may consider an +insufficiently secure cipher), the macOS client may not connect to the server. +This is because macOS requires a valid certificate to establish a connection. + +To resolve this issue, you must ensure the server is signed with a certificate +that is accepted by Apple's App Transport Security requirements. More +information on the requirements can be found in Apple's documentation pages. + +https://developer.apple.com/documentation/security/preventing-insecure-network-connections + Isolating other issues ---------------------- From 7b465acc486155f5d6d5646f47ff177db4942b23 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Fri, 8 Nov 2024 14:56:02 +0900 Subject: [PATCH 004/244] Add option to create developer builds of client via mac crafter Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- admin/osx/mac-crafter/Sources/main.swift | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/admin/osx/mac-crafter/Sources/main.swift b/admin/osx/mac-crafter/Sources/main.swift index 3d2f48f93acb7..d7e680a30fe41 100644 --- a/admin/osx/mac-crafter/Sources/main.swift +++ b/admin/osx/mac-crafter/Sources/main.swift @@ -110,6 +110,9 @@ struct Build: ParsableCommand { @Flag(help: "Create an installer package.") var package = false + @Flag(help: "Build in developer mode.") + var dev = false + mutating func run() throws { print("Configuring build tooling.") @@ -179,6 +182,11 @@ struct Build: ParsableCommand { craftOptions.append("\(craftBlueprintName).forceOverrideServerUrl=\(forceOverrideServerUrl ? "True" : "False")") } + if dev { + appName += "Dev" + craftOptions.append("\(craftBlueprintName).devMode=True") + } + if !disableAutoUpdater { print("Configuring Sparkle auto-updater.") From eee66b91fe096ef3d703d661e358317304083574 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 11 Nov 2024 13:40:23 +0800 Subject: [PATCH 005/244] Emit a signal on wizard close Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/wizard/owncloudwizard.cpp | 6 ++++++ src/gui/wizard/owncloudwizard.h | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/gui/wizard/owncloudwizard.cpp b/src/gui/wizard/owncloudwizard.cpp index f09c52fcaf155..1f4fd9b313c55 100644 --- a/src/gui/wizard/owncloudwizard.cpp +++ b/src/gui/wizard/owncloudwizard.cpp @@ -408,6 +408,12 @@ void OwncloudWizard::changeEvent(QEvent *e) QWizard::changeEvent(e); } +void OwncloudWizard::closeEvent(QCloseEvent *event) +{ + emit wizardClosed(); + QWizard::closeEvent(event); +} + void OwncloudWizard::customizeStyle() { // HINT: Customize wizard's own style here, if necessary in the future (Dark-/Light-Mode switching) diff --git a/src/gui/wizard/owncloudwizard.h b/src/gui/wizard/owncloudwizard.h index 7f69587a45da7..d184d9978911d 100644 --- a/src/gui/wizard/owncloudwizard.h +++ b/src/gui/wizard/owncloudwizard.h @@ -110,9 +110,11 @@ public slots: void needCertificate(); void styleChanged(); void onActivate(); + void wizardClosed(); protected: void changeEvent(QEvent *) override; + void closeEvent(QCloseEvent *) override; private: void customizeStyle(); From 60fc2627f9fc3ed8bff80ba31fc8da76e5becbe7 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 11 Nov 2024 13:41:23 +0800 Subject: [PATCH 006/244] Also emit close signal on window hide (i.e. user close) on macOS Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/wizard/owncloudwizard.cpp | 9 +++++++++ src/gui/wizard/owncloudwizard.h | 1 + 2 files changed, 10 insertions(+) diff --git a/src/gui/wizard/owncloudwizard.cpp b/src/gui/wizard/owncloudwizard.cpp index 1f4fd9b313c55..9368b3d162800 100644 --- a/src/gui/wizard/owncloudwizard.cpp +++ b/src/gui/wizard/owncloudwizard.cpp @@ -408,6 +408,15 @@ void OwncloudWizard::changeEvent(QEvent *e) QWizard::changeEvent(e); } +void OwncloudWizard::hideEvent(QHideEvent *event) +{ + QWizard::hideEvent(event); +#ifdef Q_OS_MACOS + // Closing the window on macOS hides it rather than closes it, so emit a wizardClosed here + emit wizardClosed(); +#endif +} + void OwncloudWizard::closeEvent(QCloseEvent *event) { emit wizardClosed(); diff --git a/src/gui/wizard/owncloudwizard.h b/src/gui/wizard/owncloudwizard.h index d184d9978911d..da614b92d7e5c 100644 --- a/src/gui/wizard/owncloudwizard.h +++ b/src/gui/wizard/owncloudwizard.h @@ -114,6 +114,7 @@ public slots: protected: void changeEvent(QEvent *) override; + void hideEvent(QHideEvent *) override; void closeEvent(QCloseEvent *) override; private: From 1487a93ce8ce7a8badd93185d2023561e9695cca Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 11 Nov 2024 13:41:35 +0800 Subject: [PATCH 007/244] Clear wizard static pointer on wizardClosed Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/owncloudsetupwizard.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp index d5b4fbdeec9d9..5a9c3e5f662de 100644 --- a/src/gui/owncloudsetupwizard.cpp +++ b/src/gui/owncloudsetupwizard.cpp @@ -85,6 +85,7 @@ void OwncloudSetupWizard::runWizard(QObject *obj, const char *amember, QWidget * wiz = new OwncloudSetupWizard(parent); connect(wiz, SIGNAL(ownCloudWizardDone(int)), obj, amember); + connect(wiz->_ocWizard, &OwncloudWizard::wizardClosed, obj, [] { wiz.clear(); }); FolderMan::instance()->setSyncEnabled(false); wiz->startWizard(); } From 6293040b8455867e88ebc03622c1d810c1a96dc6 Mon Sep 17 00:00:00 2001 From: Rello Date: Fri, 8 Nov 2024 13:21:22 +0100 Subject: [PATCH 008/244] Update nextcloudcmd.rst add note on exclude file https://github.com/nextcloud/desktop/issues/2917 Signed-off-by: Rello Signed-off-by: Rainer Walke --- doc/nextcloudcmd.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/nextcloudcmd.rst b/doc/nextcloudcmd.rst index 23b0212a439e5..a9bceb0138f2f 100644 --- a/doc/nextcloudcmd.rst +++ b/doc/nextcloudcmd.rst @@ -82,6 +82,8 @@ installed along with ``nextcloudcmd`` and thus be available in a system location be placed next to the binary as ``sync-exclude.lst`` or be explicitly specified with the ``--exclude`` switch. +The required file format is one exclude item per line and can use wildcards. + Example ~~~~~~~~~~~~ From e380edf6b721c61c0155809b3317b5ab8d23eb13 Mon Sep 17 00:00:00 2001 From: Rello Date: Thu, 14 Nov 2024 22:34:55 +0100 Subject: [PATCH 009/244] Update doc/nextcloudcmd.rst Co-authored-by: Camila Ayres Signed-off-by: Rello Signed-off-by: Rainer Walke --- doc/nextcloudcmd.rst | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/doc/nextcloudcmd.rst b/doc/nextcloudcmd.rst index a9bceb0138f2f..36cf64cb1b2be 100644 --- a/doc/nextcloudcmd.rst +++ b/doc/nextcloudcmd.rst @@ -82,7 +82,14 @@ installed along with ``nextcloudcmd`` and thus be available in a system location be placed next to the binary as ``sync-exclude.lst`` or be explicitly specified with the ``--exclude`` switch. -The required file format is one exclude item per line and can use wildcards. +The required file content is one exclude item per line where wildcards are allowed, e.g.: +:: + + ~*.tmp + ._* + ]Thumbs.db + ]photothumb.db + System Volume Information Example ~~~~~~~~~~~~ From 7f1c5addda93bd8a00fb33d4bfb9cf036a39c332 Mon Sep 17 00:00:00 2001 From: Fabian Creutz Date: Sun, 10 Nov 2024 21:48:28 +0100 Subject: [PATCH 010/244] Add null check for resultDacl after calling GetSecurityDescriptorDacl Signed-off-by: Fabian Creutz Signed-off-by: Rainer Walke --- src/libsync/filesystem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libsync/filesystem.cpp b/src/libsync/filesystem.cpp index 7ff29ca4c1e85..2931a3d877c7e 100644 --- a/src/libsync/filesystem.cpp +++ b/src/libsync/filesystem.cpp @@ -371,7 +371,7 @@ bool FileSystem::setFolderPermissions(const QString &path, qCWarning(lcFileSystem) << "error when calling GetSecurityDescriptorDacl" << path << GetLastError(); return false; } - if (!daclPresent) { + if (!daclPresent || !resultDacl) { qCWarning(lcFileSystem) << "error when calling DACL needed to set a folder read-only or read-write is missing" << path; return false; } From 609c65f794262ce5951981a18e7c2b449896e219 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Wed, 6 Nov 2024 15:28:12 +0100 Subject: [PATCH 011/244] Add step to remove Desktop.ini to removeFolder function. Signed-off-by: Camila Ayres Signed-off-by: Rainer Walke --- src/gui/accountsettings.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp index b882c15620079..6a7051a092a27 100644 --- a/src/gui/accountsettings.cpp +++ b/src/gui/accountsettings.cpp @@ -874,7 +874,6 @@ void AccountSettings::slotRemoveCurrentFolder() messageBox->addButton(tr("Cancel"), QMessageBox::NoRole); connect(messageBox, &QMessageBox::finished, this, [messageBox, yesButton, folder, row, this]{ if (messageBox->clickedButton() == yesButton) { - Utility::removeFavLink(folder->path()); FolderMan::instance()->removeFolder(folder); _model->removeRow(row); From 9a3c62df4c2a6b88d522b7340e665525ba0e4ea6 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Wed, 6 Nov 2024 15:42:14 +0100 Subject: [PATCH 012/244] f => folderToRemove. Signed-off-by: Camila Ayres Signed-off-by: Rainer Walke --- src/gui/folderman.cpp | 29 ++++++++++++++++------------- src/gui/folderman.h | 2 +- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/gui/folderman.cpp b/src/gui/folderman.cpp index 34592db2998c4..2f08c40a2f29c 100644 --- a/src/gui/folderman.cpp +++ b/src/gui/folderman.cpp @@ -1327,40 +1327,43 @@ QStringList FolderMan::findFileInLocalFolders(const QString &relPath, const Acco return re; } -void FolderMan::removeFolder(Folder *f) +void FolderMan::removeFolder(Folder *folderToRemove) { - if (!f) { + if (!folderToRemove) { qCCritical(lcFolderMan) << "Can not remove null folder"; return; } - qCInfo(lcFolderMan) << "Removing " << f->alias(); + qCInfo(lcFolderMan) << "Removing " << folderToRemove->alias(); - const bool currentlyRunning = f->isSyncRunning(); + const bool currentlyRunning = folderToRemove->isSyncRunning(); if (currentlyRunning) { // abort the sync now - f->slotTerminateSync(); + folderToRemove->slotTerminateSync(); } - if (_scheduledFolders.removeAll(f) > 0) { + if (_scheduledFolders.removeAll(folderToRemove) > 0) { emit scheduleQueueChanged(); } - f->setSyncPaused(true); - f->wipeForRemoval(); + folderToRemove->setSyncPaused(true); + folderToRemove->wipeForRemoval(); // remove the folder configuration - f->removeFromSettings(); + folderToRemove->removeFromSettings(); + + // remove Desktop.ini + Utility::removeFavLink(folderToRemove->path()); - unloadFolder(f); + unloadFolder(folderToRemove); if (currentlyRunning) { // We want to schedule the next folder once this is done - connect(f, &Folder::syncFinished, + connect(folderToRemove, &Folder::syncFinished, this, &FolderMan::slotFolderSyncFinished); // Let the folder delete itself when done. - connect(f, &Folder::syncFinished, f, &QObject::deleteLater); + connect(folderToRemove, &Folder::syncFinished, folderToRemove, &QObject::deleteLater); } else { - delete f; + delete folderToRemove; } _navigationPaneHelper.scheduleUpdateCloudStorageRegistry(); diff --git a/src/gui/folderman.h b/src/gui/folderman.h index f41be2fde02ad..ef892a57473e5 100644 --- a/src/gui/folderman.h +++ b/src/gui/folderman.h @@ -101,7 +101,7 @@ class FolderMan : public QObject Folder *addFolder(AccountState *accountState, const FolderDefinition &folderDefinition); /** Removes a folder */ - void removeFolder(Folder *); + void removeFolder(Folder *folderToRemove); /** Returns the folder which the file or directory stored in path is in */ Folder *folderForPath(const QString &path); From d14fa2c3263f4015bf0317a0289a673afb4ad032 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Tue, 5 Nov 2024 15:45:15 +0100 Subject: [PATCH 013/244] Modernize NavigationPaneHelper class. Signed-off-by: Camila Ayres Signed-off-by: Rainer Walke --- src/gui/navigationpanehelper.cpp | 40 ++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/src/gui/navigationpanehelper.cpp b/src/gui/navigationpanehelper.cpp index 3b2221f3c68d1..cf792084acd2b 100644 --- a/src/gui/navigationpanehelper.cpp +++ b/src/gui/navigationpanehelper.cpp @@ -41,14 +41,16 @@ NavigationPaneHelper::NavigationPaneHelper(FolderMan *folderMan) void NavigationPaneHelper::setShowInExplorerNavigationPane(bool show) { - if (_showInExplorerNavigationPane == show) + if (_showInExplorerNavigationPane == show) { return; + } _showInExplorerNavigationPane = show; // Re-generate a new CLSID when enabling, possibly throwing away the old one. // updateCloudStorageRegistry will take care of removing any unknown CLSID our application owns from the registry. - foreach (Folder *folder, _folderMan->map()) + for (const auto &folder : qAsConst(_folderMan->map())) { folder->setNavigationPaneClsid(show ? QUuid::createUuid() : QUuid()); + } scheduleUpdateCloudStorageRegistry(); } @@ -56,8 +58,9 @@ void NavigationPaneHelper::setShowInExplorerNavigationPane(bool show) void NavigationPaneHelper::scheduleUpdateCloudStorageRegistry() { // Schedule the update to happen a bit later to avoid doing the update multiple times in a row. - if (!_updateCloudStorageRegistryTimer.isActive()) + if (!_updateCloudStorageRegistryTimer.isActive()) { _updateCloudStorageRegistryTimer.start(500); + } } void NavigationPaneHelper::updateCloudStorageRegistry() @@ -66,11 +69,12 @@ void NavigationPaneHelper::updateCloudStorageRegistry() // that matches ours when we saved. QVector entriesToRemove; #ifdef Q_OS_WIN - QString nameSpaceKey = QStringLiteral(R"(Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace)"); + const auto nameSpaceKey = QStringLiteral(R"(Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace)"); if (Utility::registryKeyExists(HKEY_CURRENT_USER, nameSpaceKey)) { Utility::registryWalkSubKeys(HKEY_CURRENT_USER, nameSpaceKey, [&entriesToRemove](HKEY key, const QString &subKey) { - QVariant appName = Utility::registryGetKeyValue(key, subKey, QStringLiteral("ApplicationName")); + const auto appName = Utility::registryGetKeyValue(key, subKey, QStringLiteral("ApplicationName")); + qCDebug(lcNavPane) << "Searching for user with subKey:" << subKey; if (appName.toString() == QLatin1String(APPLICATION_NAME)) { QUuid clsid{ subKey }; Q_ASSERT(!clsid.isNull()); @@ -85,23 +89,23 @@ void NavigationPaneHelper::updateCloudStorageRegistry() // Then re-save every folder that has a valid navigationPaneClsid to the registry. // We currently don't distinguish between new and existing CLSIDs, if it's there we just // save over it. We at least need to update the tile in case we are suddently using multiple accounts. - foreach (Folder *folder, _folderMan->map()) { + for (const auto &folder : qAsConst(_folderMan->map())) { if (!folder->navigationPaneClsid().isNull()) { // If it already exists, unmark it for removal, this is a valid sync root. entriesToRemove.removeOne(folder->navigationPaneClsid()); - QString clsidStr = folder->navigationPaneClsid().toString(); - QString clsidPath = QString() % R"(Software\Classes\CLSID\)" % clsidStr; - QString clsidPathWow64 = QString() % R"(Software\Classes\Wow6432Node\CLSID\)" % clsidStr; - QString namespacePath = QString() % R"(Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\)" % clsidStr; + const auto clsidStr = folder->navigationPaneClsid().toString(); + const QString clsidPath = QString() % R"(Software\Classes\CLSID\)" % clsidStr; + const QString clsidPathWow64 = QString() % R"(Software\Classes\Wow6432Node\CLSID\)" % clsidStr; + const QString namespacePath = QString() % R"(Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\)" % clsidStr; - QString title = folder->shortGuiRemotePathOrAppName(); + auto title = folder->shortGuiRemotePathOrAppName(); // Write the account name in the sidebar only when using more than one account. if (AccountManager::instance()->accounts().size() > 1) { title = title % " - " % folder->accountState()->account()->prettyName(); } - QString iconPath = QDir::toNativeSeparators(qApp->applicationFilePath()); - QString targetFolderPath = QDir::toNativeSeparators(folder->cleanPath()); + const auto iconPath = QDir::toNativeSeparators(qApp->applicationFilePath()); + const auto targetFolderPath = QDir::toNativeSeparators(folder->cleanPath()); qCInfo(lcNavPane) << "Explorer Cloud storage provider: saving path" << targetFolderPath << "to CLSID" << clsidStr; #ifdef Q_OS_WIN @@ -157,11 +161,11 @@ void NavigationPaneHelper::updateCloudStorageRegistry() } // Then remove anything that isn't in our folder list anymore. - foreach (auto &clsid, entriesToRemove) { - QString clsidStr = clsid.toString(); - QString clsidPath = QString() % R"(Software\Classes\CLSID\)" % clsidStr; - QString clsidPathWow64 = QString() % R"(Software\Classes\Wow6432Node\CLSID\)" % clsidStr; - QString namespacePath = QString() % R"(Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\)" % clsidStr; + for (const auto &clsid : qAsConst(entriesToRemove)) { + const auto clsidStr = clsid.toString(); + const QString clsidPath = QString() % R"(Software\Classes\CLSID\)" % clsidStr; + const QString clsidPathWow64 = QString() % R"(Software\Classes\Wow6432Node\CLSID\)" % clsidStr; + const QString namespacePath = QString() % R"(Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\)" % clsidStr; qCInfo(lcNavPane) << "Explorer Cloud storage provider: now unused, removing own CLSID" << clsidStr; #ifdef Q_OS_WIN From 5a0af61ae4069f6ac667070bc76bb780349a773c Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Wed, 6 Nov 2024 14:48:40 +0100 Subject: [PATCH 014/244] Add documentation about Utility::setupFavLink and Utility::removeFavLink. Signed-off-by: Camila Ayres Signed-off-by: Rainer Walke --- src/common/utility.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/common/utility.h b/src/common/utility.h index 5f87946952a9d..167eb6b8e668b 100644 --- a/src/common/utility.h +++ b/src/common/utility.h @@ -66,8 +66,19 @@ namespace Utility { OCSYNC_EXPORT void sleep(int sec); OCSYNC_EXPORT void usleep(int usec); OCSYNC_EXPORT QString formatFingerprint(const QByteArray &, bool colonSeparated = true); + /** + * @brief Creates the Desktop.ini file which contains the folder IconResource shown as a favorite link + * + * @param folder absolute file path to folder + */ OCSYNC_EXPORT void setupFavLink(const QString &folder); + /** + * @brief Removes the Desktop.ini file which contains the folder IconResource shown as a favorite link + * + * @param folder absolute file path to folder + */ OCSYNC_EXPORT void removeFavLink(const QString &folder); + OCSYNC_EXPORT bool writeRandomFile(const QString &fname, int size = -1); OCSYNC_EXPORT QString octetsToString(const qint64 octets); OCSYNC_EXPORT QByteArray userAgentString(); From ef3618ff63d089087a05f2df2bf61011d31d6683 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Wed, 6 Nov 2024 15:08:23 +0100 Subject: [PATCH 015/244] Modernize Utility::removeFavLink and Utility::setupFavLink. Exit setupFavLink function when SHGetKnownFolderPath fails. Signed-off-by: Camila Ayres Signed-off-by: Rainer Walke --- src/common/utility_win.cpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/common/utility_win.cpp b/src/common/utility_win.cpp index ba4d2ba859156..e2b917028fd11 100644 --- a/src/common/utility_win.cpp +++ b/src/common/utility_win.cpp @@ -139,21 +139,25 @@ void Utility::setupFavLink(const QString &folder) SetFileAttributesW((wchar_t *)desktopIni.fileName().utf16(), FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM); } - // Windows Explorer: Place under "Favorites" (Links) - QString linkName; - QDir folderDir(QDir::fromNativeSeparators(folder)); - /* Use new WINAPI functions */ PWSTR path; - - if (SHGetKnownFolderPath(FOLDERID_Links, 0, nullptr, &path) == S_OK) { - QString links = QDir::fromNativeSeparators(QString::fromWCharArray(path)); - linkName = QDir(links).filePath(folderDir.dirName() + QLatin1String(".lnk")); - CoTaskMemFree(path); + if (!SHGetKnownFolderPath(FOLDERID_Links, 0, nullptr, &path) == S_OK) { + qCWarning(lcUtility) << "SHGetKnownFolderPath for " << folder << "has failed."; + return; } + + // Windows Explorer: Place under "Favorites" (Links) + const auto links = QDir::fromNativeSeparators(QString::fromWCharArray(path)); + CoTaskMemFree(path); + + const QDir folderDir(QDir::fromNativeSeparators(folder)); + const QString filePath = folderDir.dirName() + QLatin1String(".lnk"); + const auto linkName = QDir(links).filePath(filePath); + qCInfo(lcUtility) << "Creating favorite link from" << folder << "to" << linkName; - if (!QFile::link(folder, linkName)) + if (!QFile::link(folder, linkName)) { qCWarning(lcUtility) << "linking" << folder << "to" << linkName << "failed!"; + } } void Utility::removeFavLink(const QString &folder) From 3021e1c85ae7d7bd1a9884cefa343c1c04f13a16 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Sat, 16 Nov 2024 02:52:14 +0000 Subject: [PATCH 016/244] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: Rainer Walke --- translations/client_hu.ts | 92 ++++++++++++++++++------------------ translations/client_ja.ts | 45 +++++++++++------- translations/client_sk.ts | 6 +-- translations/client_zh_CN.ts | 8 ++-- 4 files changed, 81 insertions(+), 70 deletions(-) diff --git a/translations/client_hu.ts b/translations/client_hu.ts index 89818cb33f8e6..237de844ffc55 100644 --- a/translations/client_hu.ts +++ b/translations/client_hu.ts @@ -231,7 +231,7 @@ Reload - + Újratöltés @@ -239,7 +239,7 @@ Enable fast sync - + Gyorsszinkronizálás engedélyezése @@ -285,7 +285,7 @@ Create debug archive - + Hibakeresési archívum létrehozása @@ -293,7 +293,7 @@ Local storage use - + Helyi tároló alkalmazása @@ -311,12 +311,12 @@ Syncing - + Szinkronizálás All synced! - + Minden szinkronizálva! @@ -412,24 +412,24 @@ Nextcloud desktop main dialog - + A Nextcloud asztali alkalmazás főablaka Current account - + Jelenlegi fiók Resume sync for all - + Szinkronizálás folytatása mindenhova Pause sync for all - + Mindenhova szinkronizálás szüneteltetése @@ -454,27 +454,27 @@ Current account avatar - + Jelenlegi fiókprofilkép Current account status is online - + Jelenlegi fiókállapot: online Current account status is do not disturb - + Jelenlegi fiókállapot: ne zavarjanak Account switcher and settings menu - + Fiókváltó és beállítások menü Open local or group folders - + Helyi vagy csoportmappák megnyitása @@ -484,17 +484,17 @@ Open %1 in browser - + A(z) %1 megnyitása böngészőben Unified search results list - + Egyesített keresési találatlista New activities - + Új tevékenységek @@ -634,7 +634,7 @@ Should the account be imported? Virtual file sync - + Virtuális fájlszinkronizálás @@ -976,7 +976,7 @@ Ez a művelet megszakítja a jelenleg futó szinkronizálást. You need to accept the terms of service - + El kell fogadnia a felhasználási feltételeket @@ -1283,7 +1283,7 @@ Ez a művelet megszakítja a jelenleg futó szinkronizálást. Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - + A kiszolgáló helytelen HTTP-kódot adott vissza. 204-re várt, de a következőt kapta: „%1 %2”. @@ -1861,12 +1861,12 @@ Ez a művelet megszakítja a jelenleg futó szinkronizálást. Could not validate the request to open a file from server. - + Nem sikerült ellenőrizni a kiszolgálón lévő fájl megnyitására vonatkozó kérést. Please try again. - + Próbálja újra. @@ -1874,34 +1874,34 @@ Ez a művelet megszakítja a jelenleg futó szinkronizálást. Invalid token received. - + Érvénytelen token. Please try again. - + Próbálja újra. Invalid file path was provided. - + Érvénytelen fájlútvonal lett megadva. Could not find an account for local editing. - + Nem található fiók a helyi szerkesztéshez. Could not start editing locally. - + Nem sikerült a helyi szerkesztés elkezdése. An error occurred trying to verify the request to edit locally. - + Hiba történt a helyi szerkesztés kérésének ellenőrzése során. @@ -1924,7 +1924,7 @@ Ezt a problémát valószínűleg az OpenSSL programkönyvtárakban kell keresni Error fetching metadata. - + Hiba a metaadatok lekérdezésekor. @@ -6518,7 +6518,7 @@ A kiszolgáló hibával válaszolt: %2 Sharing is not available for this folder - + A megosztás nem elérhető el ebben a mappában @@ -6774,7 +6774,7 @@ A kiszolgáló hibával válaszolt: %2 %L1 TB - + %L1 TB @@ -6947,7 +6947,7 @@ A kiszolgáló hibával válaszolt: %2 Downloading - + Letöltés @@ -6957,7 +6957,7 @@ A kiszolgáló hibával válaszolt: %2 Uploading - + Feltöltés @@ -6967,7 +6967,7 @@ A kiszolgáló hibával válaszolt: %2 Deleting - + Törlés @@ -6977,7 +6977,7 @@ A kiszolgáló hibával válaszolt: %2 Moving - + Áthelyezés @@ -6987,7 +6987,7 @@ A kiszolgáló hibával válaszolt: %2 Ignoring - + Kihagyás @@ -7002,12 +7002,12 @@ A kiszolgáló hibával válaszolt: %2 Updating local metadata - + Helyi metaadatok frissítése Updating local virtual files metadata - + A helyi virtuális fájlok metaadatainak frissítése @@ -7025,12 +7025,12 @@ A kiszolgáló hibával válaszolt: %2 Sync status is unknown - + Szinkronizálás állapota ismeretlen Waiting to start syncing - + Várakozás a szinkronizálás elindítására @@ -7050,7 +7050,7 @@ A kiszolgáló hibával válaszolt: %2 Sync was successful - + Szinkronizálás sikeres. @@ -7060,7 +7060,7 @@ A kiszolgáló hibával válaszolt: %2 Sync was successful but some files were ignored - + A szinkronizálás sikeres, de néhány fájl ki lett hagyva. @@ -7070,12 +7070,12 @@ A kiszolgáló hibával válaszolt: %2 Error occurred during sync - + Hiba történt a szinkronizálás során Error occurred during setup - + Hiba történt a telepítés során @@ -7090,7 +7090,7 @@ A kiszolgáló hibával válaszolt: %2 Stopping sync - + Szinkronizálás leállítása diff --git a/translations/client_ja.ts b/translations/client_ja.ts index b10765c4ef607..e1adb217e8c85 100644 --- a/translations/client_ja.ts +++ b/translations/client_ja.ts @@ -979,7 +979,7 @@ This action will abort any currently running synchronization. You need to accept the terms of service - + 利用規約に同意する必要があります @@ -1090,7 +1090,7 @@ This action will abort any currently running synchronization. Need the user to accept the terms of service - + 利用規約への同意が必要 @@ -1705,7 +1705,7 @@ This action will abort any currently running synchronization. Encrypted metadata setup error: initial signature from server is empty. - + 暗号化メタデータのセットアップエラー:サーバーからの初期署名が空です。 @@ -2298,14 +2298,18 @@ This means that the synchronization client might not upload local changes immedi 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. - + サーバー内の大量のファイルが削除されました。 +削除を続行するか確認してください。 +または、'%1' フォルダからサーバにアップロードすることで、削除されたファイルをすべて復元できます。 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. - + ローカル '%1' フォルダ内の多数のファイルが削除されました。 +削除を続行するか確認してください。 +または、削除されたファイルをサーバーからダウンロードして復元することもできます。 @@ -2315,17 +2319,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Proceed with Deletion - + 削除を進める Restore Files to Server - + ファイルをサーバーに復元する Restore Files from Server - + サーバーからファイルを復元する @@ -3122,7 +3126,10 @@ Note that this selects only what pool upgrades are taken from, and that there ar Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. list of available update channels to non enterprise users and downgrading warning - + - beta: 十分なテストが行われていない可能性のある新機能を含むバージョンが含まれます。 +- daily: テストと開発のためだけに毎日作成されるバージョンが含まれます。 + +バージョンのダウングレードはすぐにはできません。ベータ版から安定版への変更は、新しい安定版を待つことを意味します。 @@ -3138,7 +3145,9 @@ Downgrading versions is not possible immediately: changing from beta to stable m Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. list of available update channels to enterprise users and downgrading warning - + - enterprise: 顧客向けの安定版を含まれます。 + +安定版からエンタープライズ版への変更は、新しいエンタープライズ版を待つことを意味します。 @@ -3166,7 +3175,9 @@ Downgrading versions is not possible immediately: changing from beta to stable m - stable: contains tested versions considered reliable starts list of available update channels, stable is always available - + チャネルは、インストールに提供されるアップグレードを決定します。 +-stable:信頼できると見なされるテスト済みバージョンが含まれます。 + @@ -4280,22 +4291,22 @@ This is a new, experimental mode. If you decide to use it, please report any iss Reason: the entire filename is forbidden. - + 理由:ファイル名全体が禁止されています。 Reason: the filename has a forbidden base name (filename start). - + 理由:ファイル名に禁止されているベース名(ファイル名の先頭)があります。 Reason: the file has a forbidden extension (.%1). - + 理由: ファイルには禁止されている拡張子 (.%1) があります。 Reason: the filename contains a forbidden character (%1). - + 理由: ファイル名に禁止文字 (%1) が含まれています。 @@ -5999,12 +6010,12 @@ Server replied with error: %2 Terms of service - + サービス利用規約 Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. - + アカウント %1 では、サーバの利用規約に同意する必要があります。%2にリダイレクトされ、利用規約を読み、同意したことを確認します。 diff --git a/translations/client_sk.ts b/translations/client_sk.ts index 5ff22fbd4ae37..792ea929b795f 100644 --- a/translations/client_sk.ts +++ b/translations/client_sk.ts @@ -434,17 +434,17 @@ Add account - + Pridať účet Add new account - + Pridať nový účet Settings - + Nastavenia diff --git a/translations/client_zh_CN.ts b/translations/client_zh_CN.ts index 118587edd0ede..e13426e1b0712 100644 --- a/translations/client_zh_CN.ts +++ b/translations/client_zh_CN.ts @@ -1462,7 +1462,7 @@ This action will abort any currently running synchronization. The file "%1" could not be synced because of a case clash conflict with an existing file on this system. - 无法同步文件「%1」,因为其会与系统上存在的文件产生大小写冲突。 + 无法同步文件“%1”,因为其会与系统上存在的文件产生大小写冲突。 @@ -3359,7 +3359,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from The file "%1" could not be synced because the name contains characters which are not allowed on this system. - 无法同步文件「%1」,因为名称包含了此系统中不允许的字符。 + 无法同步文件“%1”,因为名称包含了此系统中不允许的字符。 @@ -5003,7 +5003,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Could not encrypt the following folder: "%1". Server replied with error: %2 - 无法加密以下文件夹:「%1」。 + 无法加密以下文件夹:“%1”。 服务器响应了错误:%2 @@ -5015,7 +5015,7 @@ Server replied with error: %2 The following folder was encrypted successfully: "%1" - 以下文件夹加密成功:「%1」 + 以下文件夹加密成功:“%1” From 357cbba3bd7dbe54b020db4aaf22fc7a7a2efd93 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Sun, 17 Nov 2024 03:00:32 +0000 Subject: [PATCH 017/244] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: Rainer Walke --- translations/client_hu.ts | 58 +++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/translations/client_hu.ts b/translations/client_hu.ts index 237de844ffc55..d974ee4c176af 100644 --- a/translations/client_hu.ts +++ b/translations/client_hu.ts @@ -2305,7 +2305,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Remove all files? - + Eltávolítja az összes fájlt? @@ -2391,32 +2391,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Syncing %1 of %2 (A few seconds left) - + %1 / %2 szinkronizálása (néhány másodperc maradt) Syncing %1 of %2 (%3 left) - + %1 / %2 szinkronizálása (%3 maradt) Syncing %1 of %2 - + %1 / %2 szinkronizálása Syncing %1 (A few seconds left) - + %1 szinkronizálása (néhány másodperc maradt) Syncing %1 (%2 left) - + %1 szinkronizálása (%2 maradt) Syncing %1 - + %1 szinkronizálása @@ -2563,12 +2563,12 @@ Alternatively, you can restore all deleted files by downloading them from the se Synchronizing virtual files in local folder - + Virtuáis fájlok szinkronizálása a helyi mappában Synchronizing files in local folder - + Fájlok szinkronizálása a helyi mappában @@ -2588,7 +2588,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Syncing local and remote changes - + Helyi és távoli változások szinkronizálása @@ -2611,7 +2611,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Download %1/s Example text: "Download 24Kb/s" (%1 is replaced by 24Kb (translated)) - + Letöltés: %1/s @@ -2634,7 +2634,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Upload %1/s Example text: "Upload 24Kb/s" (%1 is replaced by 24Kb (translated)) - + Feltöltés: %1/s @@ -2679,7 +2679,7 @@ Alternatively, you can restore all deleted files by downloading them from the se File %1 of %2 - + %1 / %2 fájl @@ -2955,7 +2955,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Show sync folders in &Explorer's navigation pane - + Szinkronizálási mappák megjelenítése az &Intéző navigációs ablaktábláján @@ -2996,7 +2996,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Update channel - + Frissítési csatorna @@ -3006,7 +3006,7 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for updates - + Frissítések &automatikus keresése @@ -3016,7 +3016,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Usage Documentation - + Felhasználási dokumentáció @@ -3051,12 +3051,12 @@ Alternatively, you can restore all deleted files by downloading them from the se Show server &notifications - + Kiszolgálóé&rtesítések megjelenítése Show call notifications - + Hívásértesítések megjelenítése @@ -3102,12 +3102,12 @@ Ne feledje, hogy ez csak azt választja ki, hogy a frissítések milyen készlet daily - + napi enterprise - + vállalati @@ -3136,7 +3136,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp Changing update channel? - + Módosítja a frissítési csatornát? @@ -3728,7 +3728,7 @@ Ne feledje, hogy a naplózás parancssori kapcsolóinak használata felülbírá Downloading %1 … - + %1 letöltése… @@ -4194,13 +4194,13 @@ Ez egy új, kísérleti mód. Ha úgy dönt, hogy használja, akkor jelezze nek Folder name of folder entity to use when warning about invalid name - + Mappa File name of folder entity to use when warning about invalid name - + Fájl @@ -4917,7 +4917,7 @@ Ez egy új, kísérleti mód. Ha úgy dönt, hogy használja, akkor jelezze nek Error - + Hiba @@ -5471,12 +5471,12 @@ A kiszolgáló hibával válaszolt: %2 Checking folder changes - + Mappaváltozások keresése Syncing changes - + Változások szinkronizálása @@ -5709,7 +5709,7 @@ A kiszolgáló hibával válaszolt: %2 Rename file - + Fájl átnevezése From aa53da0eb5a07897d4e933b8451da66895c844b7 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 13 Nov 2024 13:50:02 +0800 Subject: [PATCH 018/244] Add starter documentation page on macOS VFS Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- doc/index.rst | 1 + doc/macosvfs.rst | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 doc/macosvfs.rst diff --git a/doc/index.rst b/doc/index.rst index d5167110fe315..dd5fd84a6728e 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -10,6 +10,7 @@ Nextcloud Desktop Client Manual installing visualtour navigating + macosvfs conflicts advancedusage autoupdate diff --git a/doc/macosvfs.rst b/doc/macosvfs.rst new file mode 100644 index 0000000000000..6fcf401021389 --- /dev/null +++ b/doc/macosvfs.rst @@ -0,0 +1,7 @@ +==== + +macOS Virtual Files + +==== + +.. index:: macosvfs From 5d9f6120f59714305f5cfb30681e5c39f9b15988 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 13 Nov 2024 13:58:44 +0800 Subject: [PATCH 019/244] Add introduction section to macosvfs docs Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- doc/macosvfs.rst | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/doc/macosvfs.rst b/doc/macosvfs.rst index 6fcf401021389..0849cebb8f909 100644 --- a/doc/macosvfs.rst +++ b/doc/macosvfs.rst @@ -5,3 +5,35 @@ macOS Virtual Files ==== .. index:: macosvfs + +Introduction +============ + +Virtual file-based synchronisation for Nextcloud desktop users is now +available on macOS. + +Unlike on Windows, virtual files support on macOS is provided by a +separate client version. This allows us to maintain the best possible +experience for classically-synced files, including sync status +integration and context menu actions, for users who want to keep using +this sync method. Just like our classic sync client, the macOS virtual +files client is released alongside the desktop client for Windows and +Linux, and will benefit from regular bug-fix and feature updates that +improve the user experience. + +Supported features +------------------ + +- Per-file local retention and eviction +- Intelligent local copy eviction +- Integration with Spotlight +- File previews within Finder for virtual files +- Support for Apple-specific formats such as app bundles and iWork + (Pages, Numbers, Keynote) bundles +- Remote file locking compatibility +- “Edit locally” support +- File sharing with other users +- Automatic synchronisation of remote changes **NOTE: we recommend the + use of ``notify_push`` on the server!** +- More! + From 12fdeb506a9a973c98b321b67cacbe3de9b7df83 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 13 Nov 2024 14:00:37 +0800 Subject: [PATCH 020/244] Add install/initial setup section to macosvfs docs Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- doc/images/macosvfs-finder-sidebar.png | Bin 0 -> 164291 bytes doc/macosvfs.rst | 35 +++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 doc/images/macosvfs-finder-sidebar.png diff --git a/doc/images/macosvfs-finder-sidebar.png b/doc/images/macosvfs-finder-sidebar.png new file mode 100644 index 0000000000000000000000000000000000000000..42a8bf9d9720dc7edf05cfeb836325907aa65c8c GIT binary patch literal 164291 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 z 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 Date: Wed, 13 Nov 2024 14:02:15 +0800 Subject: [PATCH 021/244] Add section on finder integration to macosvfs docs Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- doc/images/macosvfs-file-locking.png | Bin 0 -> 584668 bytes doc/images/macosvfs-file-sharing.png.png | Bin 0 -> 266804 bytes doc/images/macosvfs-sync-status-icons.png | Bin 0 -> 231653 bytes doc/macosvfs.rst | 39 ++++++++++++++++++++++ 4 files changed, 39 insertions(+) create mode 100644 doc/images/macosvfs-file-locking.png create mode 100644 doc/images/macosvfs-file-sharing.png.png create mode 100644 doc/images/macosvfs-sync-status-icons.png diff --git a/doc/images/macosvfs-file-locking.png b/doc/images/macosvfs-file-locking.png new file mode 100644 index 0000000000000000000000000000000000000000..c69357cbc15c7338ce912070719c9f4d60b2d2a3 GIT binary patch literal 584668 zcmeFYc|4SF`#&svQYk8xWEoNu^MxXn>Kfmwu{k>k#KhJ-+qiL?Wu5-E0<2ujtINtB$xFT;E=p5L0 zVjl+w#{u2z+J+n)d;2*!{`#?JH*kjYxTrD*$No!>T3WYswY0=SN&@KPUgI$#ayLBz7sw(uz)_DeNf!Gn8auP4QP;)<7S7r=3E zb>XB>ck5~f?|FQQ>sVb#eaBIytoJ`StV9DbTJSo?BX zYuoh9r9cjj>bJ6oiMuW(tv>8t(>B~M`}1%;hlG_}hZ7e!a#+h_fv|^N9{ZwGSPEX!f9!9<*E9^_g?LP^7w^k=Q+3XqMYY93imZ2fAmCL zkGLSg6d!9@khmrz^m5F%Li15whu!zIU7``9ej=<}5eLNijy%+PCPVExe_34E`rDPC zLQf&yA`O)X6=#UM8_qhbM&>r13CxUfv_59^9X%Og7xbZ4?0V5e%05P)P+-{=kdb_I z#LZ`KI1Bx1#U(hc??#Ba7h7u`Rh`_YY;s6T)mrz(`5=!78|n{nSOxSoT8i(*?f&Gc zDZUQDp(Kg>I%k$^t6zM(?-%q{RYB(%EREMYMbWm2e{R_W7k;2447bT2j~6A4^G@0v z1%tHxf|OPZFJ4U&{qPm1zcp~#aP){ZahPt>XabSoSGZmQ&5&x1j!MKu3fj6~c|Wx> zCVT1l{avU_Jcmt;zTb)8%Por3M=l$T3hcRfY5%WXpnlmmnTH~a#3ZVlo^mcrYX`<_ zKsw>QZ9H4?EO2`(h9a)to2n?B@K?r_G_EU`RjZSmuk8)5IUOt=e~4bM!E;aHg_`g^ zM;4YC-cQ~yp!{IpHRY*<0##ex{o>mKp^+il!WN*-Ce4*|z8hh`_u7vwX{}LR;l4L! zPeD#vNP8Y~g&#T+g^E%Z@x08qbXCC+)&7_3-V2tGVZ*$iwCpT+`gkbcRMzVoknijT zn~RP-xmkRLrAu>Dp^iJAS!j;6O@cgKxLL;Z%l`D`Q`^_5^L?-x9Wkf*$F-*QnlPF@ zBOWQ{tc5CTIA%jDEbiA`fOvB|ae6LX?0r#cqw~Sn*Gn_uOM!%&Qju@byVx-h^La-8 z`NWD?uh^Pc#1ztxF7(Ui{C)kS9Y=V7sjSZGQLm154_qmzKU0~Qm8in;iyTeg*pM=# zj9l^@#Cq_uIO<5$v9YmnvPJU~4ocgSb?S5<@3!Dh{_gcyupq;AnR7kVXH4a(_^D@6KM!g)951}Ia8UYLh_B?X>&Fj= zo|2Hc4nC=Us@d6A!Z0dH;#Kp*>|+DbB3BGf5)%xjR96qqUA2-#-`aooa_KFtp2MOs z%D1FWL^Wk5{`B-bVHSKWv+d`;lHDU=s_&({qG!EIc#$D|_c@H3JkJTVi`m?llRJE~ z>DM_WRYBSBt%WD@#hgO$TW5R2HXeYUoHVGP`=)8}{kt!uvoUwvW95VI=~^zghN0!p zRIO?d>)N}+`}cTr^K+)2%ZN94V{k?)NucZy-(iFLnjU>$ol}RsBJOFceG^QKNNF%_ z_|UM?uzO;!we*V8lVI(Wa|sLAt+KBl4o}iKEA>Tk@uaALyQjVb24SElI9#AlE~S*uAIzQ2QbJp_|uw;=U z-%qRJVBZ>92j%k!s~F-W=zkCIrWzsMYdD52|oL8ahZo64>jFwzJKt*?)@?Q zL-${OPTCI_q6p0$-#TG;;)^QyVULrZ3PttUaf~X|m7Z3hZ~v=!?&!LzKQ=N%_iJQ> zZLw~6i@lL-w{Q2A?%mzAheuSNo4y@*RD7>E$irss@!G(Q*Nl%`^RfNW`=d*b*~^cb zo0&?PDHJ&uEfoGLwKhL$^4oNzILC};0xvEotbM3e@}S>#AiuoAIeM_N|6%{V0jnad zMTVKax9ikd(C zp8otf^>cseXlY-^uzcf}!9^*p=tGSrtrv*~k2gKg#GnR7R`_R~3>-8L3t7}GhWPkX zUKF3efy%vxZ4`|ZWBVRr6x=F(qBf<-3LpVcEIbA;iBLggkW~rxdcqH-JOtN1ptI2Z zd$s>F^0*GokG>?W%ery@z9;hd;yY!wNn)B=N!_iaTMU`EJ5yR{r~( ztD><|*L1ELUxmd838-kyILpa<-&pAE_jwZZq-}Dk$sBic!d#%|u#{AfR5g4ZE_ZX` z1k9hFwj!9gp2)4+(ULv&Y|5pDOMp`5ydE@)Di;O-S(JJJY%$9gF6x}XhlF5yVldzj>H)L;;bT@AxUX7-X zC*IEJlD@z9>|Yq=P!+X@wfLy^!Hf%U(%+24XC)=R^tk>}ru}f4{)M+-n@73L26yD< z-_9txbd&@=`RHq|@KQsjTpiBKY%af$*ULj>G zU;OJ>xhYj{DZh6>s#vf+=wi6K{hEcX>-=!9-@~=2881BlTdd74yUV>#3B01bZTkoc zdKUeLwkGGXvnz_1u{}pWAB&E5Q&_bqd7@Nn^7WfdOaE!o>pO$Uo&rwiKD^2G}d7JMuGWj`IO98>hP2>1Di@r8mMjDjh{yCdlWu`Rt# zt>8octNg`Jdp<+H`OAMT_x zdAj^&NAiebxo0d1;@wDWZTZYJ##`7Rs(dvk{E0DC;c{1l>H)84pU*^Z%A&E)Dmk!L zgC#a@)q>ohP4n*;>!Ckb)6q(H>gx(;@(+O;p_Q~ZG-_kwur#7FI>QkC8m1C-Z)mc| zBU|n3=IYvBd=(hKE1;P1Wo@W8=OR>vEi;Wf0yCp;0Sl* z;QqUe8Su^iiw8bH?Z3adUOwmG0e&3@KF{89{;Txf{&!seI{xbiaE;@#k(RD5@NHz{ zZfED};o#;;;jTUhoY?#Lx~T^T$FbAw&n{iVQ_BDl8gRU0;%TC<2exr@QFvhMW^Je7 z>++c04hO^+3>>=Hc|H*Lb#Zp}0Q+j5+$jMDj@hRbPm1pp@pRHWX`+8iT+7YfPFz*t zoWi-2(0$_K;t+S+hhRhPYkyY4+=V9aS_}J6Y%~hP;?gMK#FHg;rC)pkS`|r)U*gc! zzI?}b*Fudx2GemjceC0iRNqF}rpo2q{yk#n@7qRR_CE~1T^ah0=g_X~z+ESfpH7I7 zJFW6CMdH+$@H4%YQ(RPzhe_8p9ZpH<-#m5lc6LKBqx$0J1{PmRE+uV|%RMOS0cekc z(<4=%?tL-)Jnw_~WadQ%)2dgl9pRKX_}_p3)xdu>@c&r@UnQ5lFFm`o2O_}f=K6&& zDE5mC>(Ul`%8xHv>rm}AjjOIKTezyRT6UM1q=H7qgC7gXt{kmj#xA5za9M5tYDlQ= zkDLQ8u|n=J)fg=o_$<~lXAo<6FK)ye=7iZ(Y_l|m-0#|&;>OsO$E8+ySVt)vLdp-9 zer?3>H#7)b;77&pW6i<8u)<*%!{4I5zzVXcKhhKnK6r>q{Hy9;d2POBOcCE%tuHX3 zfaDh#j?N*__p2f{-e)OdC`pB|&1;yv;>^%o{uyqDGDlhJn4#jfc1i8DLLNR;E@NN2 zA(*W&Ij|itmdRhrEMr#2mN3QExb!S;62VtSDXD7_N!QRO_y;@eJ&N}T3k!pT&|GM=S?mzm+7vUpOf-Y2KVGDEHJ z?X&EjgQ;NP2`6t3(w&$c7yd#AuOB6?Uua{Gc>5VCc5WS=(wBQZ;j|0Gk&)uG54vkk zws+3ywK;01zUY7IZ+CC2^c@N0{AHZq-6vPhEMd+H6lmmhqaIqJPhNdpvXQ%CUm!!} z&c>MJVoY6u=DMUUeDrcz?bXn$QF4wXI046#(}BS6Ns<1POp7fu|fQeK;SQO@Y|de7J_Id7F8Gcnh>uy7OtK`^eeK(2X<~if+-s0sTD)#}~F>JA>T*S+0 zNg3szkW-6kmas~q_0j}*$PrYr5RPJ&Iu7ro+G}FD9gOyFJcpWPx6TR@r9$+)S>8Z7}l4aBX;i-0#isTG%=xlgy7q_4jE9 zJ^f2*?Szg|-^8bn3Iyg~Ofj-W)9jyh?t5NrLPhWWlxWI_V%bR6R}qp?wd#Flnf ze6N&9um{Q=-H~ywTPwsvM#tSkqLq@V--2EmSnJC(&+N$Z!uKS{G?GF$lc=9rTdZzf+|My?XoxLwKTK$`;n$@^P%F^mv;;AaXz(b{qRQmKksjxUzun0K37PL zwpF`co(e`TkAEXxdFo4|jynDFOr5Z^_}7Hy=oA^Re-1bt_TNGM|MR4RoT=UT*$dY$ zg$Kq+_{xWOT63>3i7|oHB;rKrQ8=$~-l9p*%opTz?u(-3`0(q6E!d==1*}$ss+s6=7oe65#K7qXV} z8VPJ^k4S$b*co%-s&!}91peOwr-V(AC)_3-t;0J(>97~l_QTgj9G&y9b)iXWFr!r? z_=^3%MVfX6IL=*ZK;qCURuX)XRw~?kRI`kQca0YE?7udDa$@F+-%LWner?M$5ccxFA*=Cq6$PedI}5UuNZmH^if_XtfZ8EL3p+1#&`|z zv*!4_b=ncH<^!^u+lf>6hxkcnKHCqru~xBvU-{L^ld?7Dc5uUq=BUVOW97hRWr_4A zu#s)xSckoA#%!9H??FdqGD{!zrq+)6Dajk!y_wX9lS?%S*g^pA(}V4ZtL%jp_!izw!vONtaQEF3%Jng?k$C zLn6-a^s7fuM%}%kfu0L!CE2{z&#j>=vQnAnkPY;^d9^xGKr@=n;MMsQ$|{!bwq3t| zXwCRT$=cAj%sjATm?jz_isFSzc9kel{@Wg_Gr5rnfu|h z%8;q>`19G4x8zL78@$p=eezGhw6(I=IUuA5}(wl3e+ z^L;YJjP3gXCCpH71lk3}tS>K{wh5E8drhUT_HId)z0M28aa{n`&vx_Dp$=dU;`&m1 z(QTwckFW|Z)kHI384bHxn#-31)_zO?a%;tSCE2NA=@8q{HzJ&>D_*C|wu{b7-S)62+Tr{OTmA&HMTbLsw|%(5eAO0zA7~^{gs!vI{4h* z^Rm&s^ko;DQPtH~9n8YH;G^f2K2%#vz5bm4rc-ssrFecHYZ)C>yq(09B$RCNA5JFD zH+1PB^AYotFO{8l20hoN)~lpvK0L0 zzXp{lxuq_IHivxZUmRvgo9Hv6QcO;2+O^y)%git6McY_Kyy}k-o@+=dG8uecvcY4k zU~?L}+}K|Iro~v59#_f%@XaaT^4~;GpOww|`-aoKuR6syqVqay#!zgl86CE9@B`*7R1m;r&o8S1Bc#}#{}BtirPxdOQBq{3hw?} z1OILCzdHQywE4fUl*GrdE8^Tsg1e-1Wd!1}7gbmmGG5H1C-OCPTVyr1%07&ojZQ1O zZl6)P0D2Q8dOVCZE<5oQJB8BNeP2SM11riq6Z0mR|Jx;xjugN7_`Y1{A^MQgA=xLp z6bnx(!T{^C{1^Qyx(@ah_3r2PB=`z=?S3fsTh6RTbDhyWW>aPSX+_v)-<-c%Q1|(5vA0Mn=h`)(K{M3l@i#hS0Jhs_ z^#!Z3dz-HxKoYel6@=vkYp+-Zk=#g%wRP29(#vtZh+7wD4pF}W-jFeg92-*0rTPUM zj)`d7-4=$4PbL6cbF|_)x1Ih4cls}=${G8;U1jr*9IQ_w14AzQ?mjL%HC+x60TaCK z!bnb*1LLnS8?lf$Qh|(bq(BkdIS@VcCb9Wy^WL1ZTOJ`VbNA;h&g7_)#w91S@8Znv z#kss{tBqK=XaMWTmgk0yaQC=z+Th_tyhU8)+BabIUnFH2wTy{GY`V>)T zP8>3`8oGTA!7LA1e%8>SocE1wpE|HM(2D?NVTLl5>|;EXuZo>lD=1xroh+htHH4mc z;>2f4$Zbwwdrw}F(T?xr)y_k_4j3~*r>ROp zfnDEiMpJ3ohOxFc?5*!DN!LXfTX2DodrMd)tm?D0IH=|Jo`dIt{kSdjc!fD#gP5$} zAQwoeq_0yjH{A4>kV(R3Cg0m4*R#u0lA)Sy1K1Z>*7S+v9h)bYJfPp#kS+rPA<}_{ zp8BHmB^m4WixM9?RbShi``)7Xh*0-RjbkUp&u$^s;{3+Vl>6d)(a7|ppkKWN3W)xW zv1y{xU{fHv{B9ynlqcw^E&zAKJ-E2e1(2If&!6l0&Vb+&Pu1tw)ke%%3!z95f{Zip-#G*&oeo55|1 z*hMV$(h6>RSuS|5|w9^D+9UCpo}X}WviUP3t2a5^S=x7T*RW0G^6d{J)Yl}#_Q~V zfKBHb+lOR*^-LmF4etBSSiXrzY~;H*5Cd}4OUgo7)r;ujmN$W&1L$w+LHy5~;ptOC zvhE%$)vomB8v}$w0sgQ2ta{ukRy2BsprmMqvXJ*CI51p*Wx=Kez}9&acx2o~AK-Dw+|qz2UI%8!yLOS(>tc7RKr z4J!+>7>}#nJefaaB5gKQ7wA9>z;AC2A6mW&^U)IecByW!hO{C%Byvy3c6u>OTTDn= z#llbJL(O*cnnT-F4$;-Jg)qn#tq2bK`9XhmJC!0@%ox#D7(gSl54d~KRj`AZFZ9JW z&S+iYR-_5<5e9Z`UMlZ1)T~+(0Ik?e5qa3-;b=`GvH;i}%Bfk@&j2jUvXG3%Y5+q8 zcZ#HA`Q*T;CxZ+0fh}6U+RA^pp*IAPhok+KWPaS{LMI^|r~rEM%t@O_X8(v&u_uzb zqB{v`WndIGis&|@u00It!}^pJ1-ac|oSL?8mv_r4@zIpPYiZ`uFqHAjt%=Dxsk(!{ z$7ubg8wSGDWT9Q6OBug&miBSi4egz<_2B$vYoOg~u*cTd;WK2hMXPM+W`Ixz-q{09 zu?Kw}*MfbGk*DQYJ`HHPfP20_Th2dIhAXZtyE);keN~Lt$yUe!?A!s?2x65za)9xB zReIQ6)XUO^QS(A~hcClHrP=h)i1e@;#nN^&Zh{Ovb8IX%bIq8j*xS~LPKRlryqRhC zq)tM>l!J()g}Rda;;E~#0DN6Ei-LU*%?0$=R&kqdN}oGn1}rJ1&3nCjnoEBmy;^5A z{&6RZFrFN?3F`z%NL)FyQ$xAHsam=@K)!ukMn|mj5yL|?&BcP}>jMqL=G78Ke$mYb zAmm`v!*!8EKSMIIBKxc^bS^wQv|svw%oO)2OX-&zdJ2TTK{19wZ5}UlnpOmJ+kW58 z#84L7)M%vlZ z0rmyq{T@g;raI-$rlH}ck)dO6Icw=-M5OOgmQ@B~teZImNEJpf9i@ojXYV6HYfltU zd%@(H{e1_53<9ID-WCnoC>dsDb?s9)U{H)#`f9BJM$`(}nAt*6e;{}H5#%<#0+UKl zqaHymeT#@>8q)pzP`l7<&LR8-Y=H1JPVq{10m6xH6F3`~L4vt_DX*!#?l*kXUbC83 z&C){mVC}MqA;F3ZezQR%USQL-b7Pmql)X47W~cn#TtApN5P8in{ow37Q5pPTZ;Mts zxJ4_cL;^b)9*$JKVEfJy;YSOndr`VQez{byxI=Fn%#V5{$w0~yRzT< zBlHomILP2T1WoLnTJKdt{Hr7_o@@m}Qc`lRyrFN|Whf0$f~ZICmQTJ0Q4%&}TqVloVIMRI=1N+p*;39bWfk&WU$R?d zHNqNEwEQz8vMm~l3ew6uDgIm zA!S#C;NiiF#5uFR8{Cf_n0F6!=4aJs?Vno)e@S%2XbzfPvoe%Urt}q0A`4h&ij>4ZT%=~f8Kwd=L&+Pk$Oypfs`RA^r(@Yp z-aKHUs@68Uhhej{`bj!-OemrzW3!bmg;yc@q7Keg&_K%rpoq+twU0P(s~QqjSNp7b zJ%5GAI~TdS{z~ZvWn{I4e0&z?9B$=lg5g`t3i&cDMr zI)Gn_gP_cxtnbdi{@-n$V80%t8Tm608pO;%|w)`M`YA`mLvc!4&?EDtIq6u zy_J75!$$y!4nI@r*{%xx#q?-DL^NkB4NzMg32=P@r5OV>v=4it&?-X66&a$F;X|o|?Teo^^H0U7xiH-R1aE1Bl)E~us>RV+4CW7bf09WQTKYr7o&Kl8kRWs05Z(KjM%!qXl zdD$p#1K$m;lzw0oFhEE+#DC+yJDLom`@CSJ0M;qZ?F)>Se~|wM5b6coeOmRo*!Slr zr6v`OX4>zr7}LnHAAm^O5NgD25TMB=#F7Sq9{^+S*TtkQ5KvJtZ^WuS8#d8gR&Y?+ zhEPM`2Qbs1iojM5%h=d-Yedj2fFc0BxpHl#?@y5(YYtU>NdHT!QvgN&LADrEu@{@z zR2(FK7WL8%>=o7hseDz4JI%rVll1}a$I$fO!LOD1 zKGt{mi<;zKedRaQX2g?tq9~(Bbv9$W#mL^=)?U*qe$hTd_3(y*6v)}nB`caPGPHhl z5uySJ?wa6~>HH_{)Dg7G`EU-{MKPa3;wEdH+B>b59tFQ>x3i-R|M#y!EA0&#b8y$+oWOZsg(y#oDc#0ORG z4|c0r%rCa8c}=zkjr9MntyJx8fdW8_*1vK)V;#C+!}H_yn&cum?Vl*CQC!oJ*;K;1o6`(VMPda>4e!23_623I)`c_OBi z%l06}Z0KQbl^K&+OS`hE7=AD4a`VuVBN^d*R?LN77)wyspZ`Va?`RmsIE(5!Jjz(v~&y!(ZK)KfxAk(n6U&`5yr&X;P8#s!@VytS zO}tl?)0|cu2T|_HY@?V{tmT$X>EAT>=XsQtzkU_QpYY2&mQ_HRi)LH}*=@WWM6J9j zY8?q@bo4})aCIF=@AGKJa#tz~YI`%&M2T$oU$p=tbU zdmk~>dtdbu+L*zpS@S7#AQR2j_my8zsl;)^y$o*dxY^_IAz^HL}f1wOjp+^qrNw zD=5RSIxFmQYVmWQ>TCUkT-Vnv2s?!Nd_WgvF15^)JLI z8O4faa9$cjQEGl5d+#_uObPryjRD}C?**d}OolN5#Lj-$!L;KS5gr-OwwaF?lE=C> z!;?ugE^@SndQ|MKY1`VGs^SZ`pD%EEm847>?^fR+*n%`E(VneCYMyzt+C`_yVd|H*ASw|x zbZYqHR{7*(1PSe=N5aR-!tjfL3PjN}gjlULa?k{(7d?VDLjfEbkhYYDsLP^a0SQgH zMMuy}X_wh>3>nChWeyXKR)_!v#`ZQN%PoZ2v_~{{bEA;zfy)Fu_+skX0E)FFW)9#q zS-KpMN0PQ89Z*0kn2YX5ece?PLG7dN3n0=_jls2D&uQRhEo&RG+KtwiKXiIM+pdX^ zS&N)VPUn*T^(3dbr7xu+M%iTEvo~=*ekLL0vBUhk4b3|H&}Xp4#9U3hbLdjVB?puZ zqQBg2x6<(JZzfpD)rmmqSGOl94Y_T+91TY}!D`qDyDB5t^+d9K5 zC$NPIO&EnieOk$F%w%pFW4X^>)#qYD&`ZEfvgy%3ac|1SOaP!4Q)#PPaqqg;k_&DB zb|Tljh~!$BZ^06+jmbCw*=F`^O4~f|#^o-CuVu4A+C0sOfM%c0WoODnetSoDVWd!9as?*rppvzsm>1`SGge z6z$d!CFP%%3z9IGmx8?8eChQdp*^(bF4w_iH$>UI!0jAN*+2!O+EbV0^<0Yw&39Vt zVhmrlO~S9|JZ}vgMv_K8@Tm{U+|=}*d1iQxrWcVXklG3;&+=l$wgXo}<(WagloV_y zRPdLp6DWPt5oP3KcCd2**DHcm-gE?|`+R5B;?V4jGBF^Hi@8H3!)$nsY;uKA$BmAn z7FMK8E@$Hpqf`Nsxl^NihT!q3k@wajO7+JkhB%TMNf_^i)ZS*vf|?*r1*)X91qhmgC;?)rV` z_^|7#DCskAQ5yRJzWz3N;LqusW?(>9`rqaR%dxb+ExO9oB~I_z%=%MfeG_< zN)X$?I%zOsFG2bobd!wkH(l&@qXi+>K$`Q0o5%&2wXZ?BcYF$^d?K<0A8`Bm`Y?6e z+~*O!lJzqMVK4Idh)DDud(ODIGd**V9tl|6)O5m?oGBN#j5}M7=%Lc}%YKH<%HHBb zW;rpu!Q^!?t;9%LrYO6cc@MI3-8jHWh-Oe%)vu%G?HFpX63)|+1l1U&6)Ez~n&aHk z8O`i<+WtHa!voh~rQ391f!sGj8x7+Ty0u&N50BpdoPwSpw2>aH;JVYX!#01IktpoU zCa7;WWoQE5M$@N}?I3KY4Lw7{IO*+pXFDERH;akc@QKr1TBYHDCqZyzx$FqibQ96L z;>F5(0jG&`-S!?)L%!YMx12wCDP>)M4JfV-8YeTp#UM8_bu>OBZD&IB8Pf1{ zm!4g$+J(>E(08<9YM$}26ru~loJ3vZq4-I!rQ;#U^>ls9?Y)r4r@a=k zS6a&l_!uzit1u zrFVR9{XZ5vXDEZG5f_-B7rHwu0aI)Lov<<#mpY1K`*cIZ$7`4k9&R(#Ci1RG-7_S& zJ3y0Zq_EiL#Y@f94uFlcX<&Hfko;{uxS0Oo3EOU{J$ zdJHjV3uiL3$xnc}xPe*s1>EVc$1Uv<>NKg0l7PioFOh1#I_|o?XEgSXb+ptRRcviG zb<6ONtkm`3jL$ug=bmlxt*WIqHcCXhDv#JO9CY!}$G+FwGHcY@7D6u+>|igv@X@}_ z>Zi*BK8Vl+RV~#KbEgN)Q6tlkry6^~%&I{hTEz-nv-uLN$i=m(;q1Yw*Z-Dz4Vg{tS4A>LF zMPx9W@2Qe50kTUejL&4$!l4EO>Qnr%8URxQqhOmJ!qD%b=<9#-w;Blx68Q(%^S$HZ z59Ir`zF2OLYyg@78B7rvvOn|9=1mjh7qB-EoC431{l37unZ*kzYQ2bHB?LV}p^ux4 zM9bXt5rr+f+90Y+bqA`;bjRV=)$1)jZk4Sasu+u)+GS(c$Hx1c1@$i&aLnzQ@)9#_ zE{fd^mrkv04$bw-PVx%u9=JxkSm`(4$8^q*4h!>l(X*Vw4;WJ%7l#ya9&DDa6i-Pm zR1YG>|5lJGn;uDK=ud|oSghBAm0izdXR-oTf-%tdqnA(xM5zwg?hEp8%Pe3J`=h_- zFgA2@c%FVncg(%Q>1c0pN%{ z0W$K>3Rj$X%I5YVIwz!GdNUz2yFI3$K`aE_5)dSk-Z5AYc~E;fDIK+RH*hlK<79{f z*9e8izy145Y|5xNqq|_WycAwV`|5@UHm>RPZvN+x)@Yfc;`GVeJgY%IcfwcAe}9H! zy6+3g@+*plPlQb#1eY63;;v2`Gv(Ym;9yMsA!PST2|qgZGku`R6t*a-vG~CLb@_xT zt@Re`Jf)B(H;IEji_I;>EP7QtnF=pUJAyJOEs{Qhbin$Urk59zHCmWZqOYRb7AtDg zjE`lL@ife{lLZ8JU~9QRC_Vg5E|4Ub%h=qe1^`iCWtu!BLw6C&bE1jBo>1+H0D;XG zHi^9>q*@eag<>Yv`V6O%N2OiL0vsi>F@S^rhbZE7@}rx2oT_VHM=HP4JlV;Jjhg;E z0jG@Nlvxpb8Bm7Y{xz6LXNqt4ncJ05M6H zDWW2Dxc8!*qQ%><9#1@+q3n;lF%Fyyc7!G@(MttF; zaaHSR6SQd44sBqm2F$y}Sr3X2VocL&8dYnw{PsKn7N{g;Nx*s)BX^9=42X0I@Il;w zO;4l9xJV%*8s-zJ)k)=z4RGFp6MZ;55SlOpVm<$okw3;`(t;t@+qxxJYovsnqNx!}AdhsP#AkYqBkyD#y>wU-Tj_z&O}@ zbB^^H+1f7&&}a2nSH{&QVi^@qGhY)JX{=?OdNo^L5(kYq!aRWrUCjQ?EGe9TEq>yn z)f&wcxmXs$L$!xx#A_59+ScvXCS($?)H>KrnPMP|zeCpar4QZQ_|zSDHYwq9@?sAr zKNcIACKckI-J6g*QUc#9pp;7q+H}?Oig_8a9-&^l1Q^pwJm~$QB9eadg*J~yDpn*} zaum^e7aVqC$D4ff7p@XaObR?_y>t?lfO51Lh;tc-ro~=(YUI>og9X)Gz6RFS_HyP z3x(_njAW5$gctk~B~jQ--(oTr$y%bJu&h~n4JI6jKqANQ(iou0F8l~fNS=gVFCl|! z(k|$sXXuV;^ZtQ?^g^d9py|iM6Yj|?8rM7>(DVh|U7{j2ez7FZAfm|Sx6byB?$6LV zb?7SOVp^bRax&TWw3}aBMo{6Eec#LF{q~501uMPYJMyS6u1V{@l5X79H63HJ3Q;%? zo^9HGgY9%Tn?|A;-}=nyLU zPw)kRZx|XQRLPS~1*Bz)_wHY9IJoM%&Db%ye|Yl2V;wPUzTAIyO)!9>)xc_aiJxb6 zW>z(US_zF%MvW8wChL^*=mq9?G4i#y0BQT;`^vBs^U5_p97bWi#&GI%f$^hT@ZI${ zJp*emrG+K$`<_VVO(sSg8(5Y|V<7G&2^bYK>>#c}3h(WNE+~eJ#xcINK;4_;3n*Tc z-%zBdoH?cEUWT_mz$ELcpVw->R9=d5rHj>d1-R0eOKd<(-Aor8{$e42hmZc2X%m`Z zld%<~Ys}&zF7t!|EO|LCgk%i_an+yvX8O3YfWRf=f|V0%V6*>ET+YUFz5Nco0w>B& z$P~XtuK-Z5&&sBSfCg&e$tj|IgxAyDwZ0X`QAmU|7$x@P9@`_?=2)xu@LSp3-E=J- z<}ET~#mkQ8I&EtMfLYMV4tNK_>KG8v^8L7$ti+o!YihsQii|NMqi*S>=EkrbV0|cH zdQyogcP%|IT^W$JY{1xyz*c8BD_rTLC?y4}Nzhi`08VU5qe}s@+D|lH6DHYgBEFUn zUWqNkoT@3}8XE2O^i4m(lgRG|4)5Geh|HaI&cA8!EOzcp$zM0UjCv)yGPBk&(j`ux z4miI=`2^67kM+9b3(Ph2uZ&1|026K82*cP!Pc4GH25(W$(pnQ95twPkfNqTkbO`#B zFng4f_dKh3&|XAs0QY**i@rSD7yXs>a}pm!hOr35fHl?(gQ!4axd1p1y(6IB5H{xP z<=g`h<)e%czg@>5i&zalD$b=7tCr4Ulf{1v_K&eBuX~jBCwLA<6^eNS^xogEjm-UK zF}?RO#r)_*wHkW{Q|CoM9~re2R#Fv%T%wBy4AIn5XCoavlBsRvAK4|-56HV^BWg3M zP}v8j0Eh0Zmhc|)gQ^X7rI-cX<-1$s5-WFw_$Tk{LDs@<&wRiq-!Od|2T=q`-{P5* z>wZ|48k?gDyesD9{wo*RI+dVvtg^G#z4;L#$$S2d`*J~%oB7ln%rhOi;eexLe@1#r z_;fv)p(H^bQvYc)xWcDnr2L`9DgIbwen*dFPSRn7YxOv${e!o+gZ!Vt`e(t0=X(v41=hWXL03uF6>!x4TZH$`E>)E-QVz^R!2$X&PsJ zkSu`uJUAO7>ah=PMub(C#{zv4^-3La340v-axzyuax_Ts-bNC1e{;dVWVhR zY-thI2KRmqAFD-#J=9()2bLkQj$LYj{p%v7=TA<~!dfPfpu-;+{O#8pz~L=4KIr66 znWed5S@ZP97Z-b@{uC2Y;wEv?WVGiq2DeE4Mxa&tv_{1|GraI%K#gZNlgtpDLb7JN zjxA#RS@Rh#m}qQ#Xx%MFc?yboT74)(gXPe7#Izau(vWAaFT1=D8%t1qvFnN=|MXBl zy68ot_o`a&Uvc!CaL$ci{IQP)ycjpwVl(=k>unxT&aadTMi6dqwqX zZ^Hby`4T>;fu69#U^!^M*r38oWc5|Kog%`mpTEBvHTV;g|)jewbQNlgxlxs}pmW`nx;>HCCT>0Dlv%H)9-D;IFjo zH@6n1?kdfByxqU`AY^d$((ErjyN&Jd`?v1$m&JGI0V#Qhh2|ci2H#uJrX&^G^eer5B}O&?~zPednTDG66Qu(hTvB@o9>_CWkz%e9IF zrZ^0}hU(LwkFOwYIgP@UtklvefWOhp*D`Jq_-rY2Uw!$7ZEmr`Wcy^%4 z5i1g&9!w5+=`+H_yx5ky91znhDOftTMV z&sFz_iHSvcf{)q_{^*ACa%v0xKb*Y>R8#G?H7tsPq69=m1QLphSja0VH6#dXK!hkL zh?J;+fPhFRKnO@xlu*S2M5Kw7(4<3+@sD%QxnqZs zKtjfN_Fm6gbFDeo+G^FIzu1dB?%O7-K;yCaxB8{Du?>rZaq-6||8o|=l8^u1dhoaPd%gR; z{BZZFBr|vRd*?IxD%BoC8+FBivgR!FLkoU{Q}c$RlMGZcJl!mL-j5NcyMeGb>&Y+4 zqc=3On8L>{VojiEwOj8HN-fOrbT=zz2vYz4EFpzNAtF;Ugux5>@ktc*=Lx^SYcqfGHbb{kZ z>4q?0EZN1=%a+ylF`oiTuLAF=50wi*6$T}cA7UDwC!go7COhH7AJx8S% zzr)M{ncmnMGtkDeSHJIe->*qx>)V~C$%{Z00g!U;>C@@c>%A2wk6NC|_dA9IxI6Sq z1j7lfQ2Z#z-wbJHoc^jmN(%WUfuh*^;>=1BTkLHy(6Xr<`qtR>=|y9SnW&W~E&Xqf zs2EH;l;rDQeFw;f9_+Lvs{qZ}#Idb9?CD+lF4y z9vLL%aO?<-Ejd}sd_vEa)Zgtn9M|o>0b?Q^Fxkdpd7x$n^BlnC1ymLnFQ%!}%a_sC zV}2iFV5)f+8*N9vS0CqD6HxA4N;|cWCNBi#p*P%S1V_~>jT8u{YHiRTi_%rUW!t!@ zP4qGbWu~1am2EhxtQJ>=I9L#@{VpR@tG7A%JZx<_X+kTtMHNo&ASN(!jAd|FQ0hhb zNtLQ`*Mvdtuwv=Ey^P}9`rC?~hH67MnKTDn8@ou?!k}*uaC>%v36ANk%orHcr1kY+6vTxP!6>?g2Lt)+?W>r8**lme7_5DQA0qxvFUa`aZdwUjX!(;_oVLz zOCpOBv>h1r4!ZGthIGMaLMdV3CBhR{6TB&{5?>SH3wU#=UkC7?fe>1r;zr(^+7;%} zZ9oJB9Do=Zx42MOeBSIn(Awt#{L`AD%LSka=Pb(}c0L0SQGeX~xfbtcj*C@d6V^&L*-Z`}aw)plnZ>#fTVHj2Rto(FLlI28-26n8 z5?c!D)S47lzy!&1w=0sr0=g=eH^-JZvhbC7zIet}-y_0l4Y!)TmW5r&SD=Kqmo0aL z795Ee48ZQP$Pe++yc%eu$?47AUb59z-vgz8#4Cxv^CnA*?=qp!e*}vwkHp^1psVhd ze~>B8U)y333Ld)ko&OTW=lHWv$y2J#K`nx626j~|3yUdE2CX`NZQtm$L1%j2jA&Sv zwp8~fiURtH!^F zSiXoDVe+)n#`0S^Z|^D*5dfo>0qChIf2)OoDwBGpJ&^0)29z{_z7vzTLnNhBAv>7O zUt=eK$lm+6K=f}m+j9)Ua33!w0a>c<78vDbJo^KoMZP~oa<@pbD#9QwfQO0)zplhZ;OV~7UR zY3GUbeU-Fk%MX=wQ^sVx3;8S2RUbQOAZ(49|3EivgGC@MHZSfUxi$ z1(Yf~D&rNWB^zMyg5StiMWZZ*W86prh^4=q<#!t9E#T`O?BV5|7Hx^^JLS4Z7fPvA z+<&!a5`aF=y=oi%W)`5Fm51LbO?ta!K6Mv? z^KTeN5&AarxkirSn2IbDa3=Ky%+IfT8_8cj&$35WEii>4hSR;(pLtAO*&|kvsz`5R zW>2zZTsL4EYDPoRU5GG``45>afI*|TyhG0DYWc6p$LRBJL_!z7(B-~z?t}=3fd`+5 zM&w(gxFJ$^8TI{sz_5xR@NWd`p{QI&e$H#zjHmOR4bqvSBC9!!^I3Hsson7Dg+Ct3boa0gaMJN-^E+QVxRMm-^zKvjYw!Nu}{F-zJGcV~C=`Ai~?RZ9E`m}$9~xqeJjivltG4je=LyJsXN9-*=${6WH_$D=I_wJ?lSRh12#2D(8T?p z3TbpNw`24s=5yN_zR?0m#XY5k(nK9K1GcxAN2*;nOwq305|`(hh+TEzyL+Efho+>U zssNiO>aD&*zVUdZAr9!@Xc)0N6=snZluU2~V!McGG($TLsP%+`*{d12Zy>NYWvp!3 zurV-4#m{PHqqBJGY$u^40_EC2rCR#vJ%E?e z1K>CS!sFW!i3m9YVg|EAnY7P=m~sV;#)%|oUlc>=(!f9msB z*4weTIVRuOaf$6meonK@ZfjVLc6LpOvf(3e&N?c4%Iv^M5$Dq$5pes(!peNq)xM-$UP5 zlEaZttIY-tGb{|iR@#!3$WJk`Jn!XW?LrT#whxT;XXu2lXcQ3`c6Eh=WA|h}EhS*j zc3Ly-Al0l>*Gd?_G7ie(fx=YpIU;;oHYOvfc!!sb(~&%Op)ni2mW5(A*@wgEk+5li zb>NZj4~z_?ZsbVc<-rU+9pE$V8A8(q3L>rNF#zOs8O+Gp>XCLD9IKa`K$-Y7t=vj- z%qK>ekn)N3g!0V5%2fU>K5JYfmsx$t5#Jj1KV9i?rQh5A>DL$9W7fW{)qWLqAkV4M zBrZCzMwV?k1I{(j)z@=sJ4A1;WH*BLK5NoxJ{=Sl-_yBODBZPHIOUI?6-{j*HE<~@k@5P`G@RvKlF|r z(6_^Y>&&cnXLm2DGH3nsniYVW_(EsEQ^!Z` zl|Yr($X#k9lF^)nXGF>uS3TKo3g9?WNfN}T2CJyiBB)2iev@W)SMR!(c!42F^)$Oz znlo$1zm@NKEbml6p9qF)H@;50TD#T$OJI#KAD}LN#SdPc3L8wfVD_6)q&?%XLz$LB zRe7OU$VL-yE@)4U^j-ZZ3|CBc-|kT>RuQDAWh!>M@&lN$Qt?-Q zep>|Egra6KIAHXlWw-%u`4vk3b!}9BZ9WMoheSZmcUX@7YPu>s-IJ{%bq#G{l69JL4T+ivt`8u;s*T>Ro5rvAtq| zj*4=xG~|{P$o-FaZRIWK|Bn4OGwtfv$v^BC`vF-S@JkzE5r1oj3iPRMB~FYls%+*a zKU2d|`zz0mLHdQ?38gMb6Y|?CePn&X?#d-JQLl}cj?L{%h-Vq+nJ{PQN5b}|Dzho! z1E=U6-V$y@V7P9-dKaqr9qqb3YrYO~d@*#|4*wb-(own;>mW8 z&TLRRKjoqa{moYt!Leiz{il!sNQtC>0gQ>}U~jdD-q$K!1f9S?8RfasqrU5ynMDyM z02v0u2fea3^pXS5zbm(GCFlkrS+T!1-`Wy2yOBi6f**>WG9tHO(00Ow7Oih=s zR->7_gj7zSbT@uY@VkwwQ1SDMwX*@gQ(@N6gSG+W8Jdjp<#S4u?tQGHn5Ho+ z0?^l)G9|`-lpg`v1YGEz0hv*RrL$Os?zRCNQ_t)OdKh1e z{`QysNFYh+e~zs!?Rc97r0<4kiP5ucSnun}cJ+eufDH5TSY(r^eXDew@gJH7vnag- zEWRJkj>2+akCxgXJjed7c8D|6?H}({%@;o$#wOcMytoIF6i-X~&E7+8@ew6wuyVYl9QsKz*)d`}3jjWqy}bSeg4yyPRngy|ot*#Z z%9v0&W(DK;gM46XkFIT&FWcJ)G4ByN6ew9dU~fmYMw~FSM4Z!ON9bLyLqdF4Qe)Rj zE-*`91XLe9*|d6BW|xDw0NA=IUemAo(n_H^Ea9Novo9t{FkH60;YmwEAy6G!e18^y zp-CQ)ulQ;AYw0taawu^RximZ?#;Uun`xI6c(8M_1{WjbEp*=6u9qkCJD}}`F>J91E zz=Wwh*7x$`pvo*-Nn$3YQ-xwkJ)V1lbJ}GdZ}~~xEe<;$=l-MVLt_#*YFixPK6@R+ zDkRPSVDD?WK7kwEp&SYJ!S?(s4ZaH?+ePlvIV2{$o9(Jn{I^7CN1U;=J+&G2IeDcI zthOW7cVA-a?(B<1#QNnf1*KCfi6l>l`cxp8IklN!aiwCW44{Mn+EKb|{X?ZUb@SJH zyt<#?EESq$v!h@fdwz2bJ({@iZY?3SV}ixEpabaOiau-^F=s25wln=!B|Q69cqm1< zU+W;|h3iEZ@mL*Z#F*-;8e3L(l-xPPsh4{iI=CGQ3&{&A~%0(J}L#0-XlBZ zl{pmo-fCKX*G9;gnwk4>cjvMKTKq=68K-uuw!)E^ z2zMmgafYytUh1x9a;die#Lee?VB^nE&Ez9`3?G}3ZN4Ow7te=NYaV&)?^7B2Jmz=H zM$|0~2g2UvkfaOO@w@aJYY~D^+ zrKcr+WTh_Q%F@xaTrOI`q}r@2@r=25@u)?J9(_8k*Va*9ETLYOafM2;|>r zX=fA%%RolO5ch7+c*O!I7h$_weVD_&?-5Uj5|*IRHD@*KM&n*Lq4@-H^F}AKW<>!Y-OY zUjbzReusMs4QYS=W{;Qp)1(FPgae}Jv=yHGc5EZ!L6H8O;tU@1xZ*5ZW5#{M-gEv@ zo55p9A>@0l=)$U;j^t2`<}e4ti5;3skr^=jWMRPKVhKFhJ7yM&7r>MYC?$*6IL6HRcivyE zeJJ*Osws+#1_jSSlo5{)6Jq z?eNY!M-l-hTws}}SgJoR{dY;(2UhOKdB*E!QLy)nc;rBUXH~kTrxk{8r%Y# zPkDOSThef)#W4Nn6SR8jWY9rSawh4pd1AH$!KDp z(S3;(yUR3X)Jod;Y`k$KV%?ew5l!9DB*<_QD%x)?3(XoPZnqG(7yGIiUkQMU6tNzM z@&gng8$B6tmNd1R*_JViU9Un_eeLw2R)xZZmq)!;ekzS^%t}l2t8!RW(lTSn$#E{z z>#WmchWC7A+D(hil2PxK*C539>>Z?fdn)kaS@$L*_|SabawoDP;%^lZAc+M=&|n{8 zH^u`&qy4?vx(j&w$OWEEy!}zxg?2S+rK=sw`B2K}njSOu)OOcb-NeERE(2qI(0rMr zS$|C8@9vuKUW@NsL5`e}cH{9!Fir4IpVe9RFiHHlVcXY06$60E`>8qr2tSDM@%x?s zgnfU5!eLya#t)d~>`rHNq9`y{4+p6i3;0J#s4{5`U0lZbwqCtnMRj0Kg>q;>KVc%( zZ@q#u#@I&SIO{kL&S4e8o+q;B$FK{gV_PLSRv(Uqd#bxPo>IMXk~R8<&bP>l?*{}A zREXoE5T@}(tNaQaZ*8FHK;?LGc)@gbw0FxxytlzddeKg@#w6PX9=uxRUew6%8D9jV zCSd1th6>`Fn5fxaxT0jsV1DJG@tZBA7C*Vu&329#s{f2DvOpu6#|<17KcgFrRI}2F zO4Aqds=P&x9ViekkCXmYO^M1#q-0k{DVj;~&EnYz9+laJ;l(BCV2Oa}ifjd7?< zZu#D<^%B$a8*O6i8>095?^8o1Nwm>Hw#JdQA!^zfr-H<+AZ;^BNGxF-T?R)dv44(j z{~UX&$7VMxKnHWyaiw*IqnruwVSNQE=U&n}&NlSCtar9_uo4w=J0vo+5_gG;7)XLY z!N>AwzTxv`@Fh0oGAJ=FEe@aJmk_{>bV_a>xUEDXyv0*OYv9Fxoe-uX`Xf{;FDk{t zh7KZcoNZa7~Q9P`cT4eduxT&9Y>OAuVz}bW zVmA=0I`_*Wn9^wGcun1OIfO+SV^eU;_9TWqhr$>m`E9bOSp5EKlOh$p6an4<0k7tr znWVam+WDvdhOzy9hVJvyj47j-nM9@Pl|<@xD1z0EU=i5kAoh5Bi6DDys17I29HA^n zw3poh3wt&BWWIu}<0?t1!{1e#qjuyEm7Z_TXw4I3eOEQ<7l6i)O;-km#JG@!OYe6# zqklyuu9KP&Cq5bCU++Tg_WH(ilO9=fKLn`;wus)|tR2tUe(gTFNzVk_?|2kaSpQ&R zp_8e*UaT646=~rt|pn6PC;FsE{vYLoV!ox-<}~%Qx+Uw?}1UP)<;3O zDbcZwcoL0|L~BNHRuG($AxQOPt^l6Qf-G@I%`D4BuH$~QE>L&<1U%G-_2<7?DLM0Z zkX7sWo-1F#6vJLHMjK0Zv{&<*4gRcUgc&kLiikADRyvB2DB>jRq0U}aFOdFj#<;kM z_(#-kIF~eZW0x*ih0Jvnoaxg0O$H^N>1da6VZKKir7|zksz5x1$->H!^_a?HTXWKx z0O@p%GcB8e9sI~w0JSICt<(`X+cTuCM%;EIr>@WMw>^oC=WL89A%^9WuKw{-U!*$r zRv54SRLtEmoPX!xRmr{#7V*s`m4Xu^8{19Nn&w%y8|#{kl!4hJ&R{I61L}2Y+;D+#su4V zL9V`K#~asVh5BF7#eG})Na^iIjKiai!F{ zDQq%^6RM`sQHi^1fibY1U*Q*&y+noV_)N_Zc@V}uX3Jrqkm0DyDnh9N+NB7P2<4mM z=oUbcFWruWE?#uIo_E@7_Y+n0L6>Mp*>jfj;mNPS-?Qu9%KTb7>r|mf)+}KK@JOZr z6NgejtohD#-vm+c)ge0^JxA%9eg)NWvz^`R#OlSdiR@|87L~NlW;(e{oIJ3z%s#FF zx&A7Cr?QLxZUm{Bx?WSEir#E7u4XS)P}vnuIOY(?Z((`;IThe;H z%ek|y9K+!?p+YcJTZ>e~`1Q#2LzI+0_*=r<7Zj7$3|yHj#H}JHZ(-(#_n|Us><)D< zTl8BAgMGdhLGENpG(YCM2Bzg(XvZ{;dP4*|zdGFoR&l(^%(58NoLMx@0Fyf!2hk6onFD!ioWB!Yt3%hdDkVIA2Lc(9)pTIX=>+C~0%dt!ybsXJ>BOfA$y;mZEhc zAyvy0JdoiQBs6O$dD-Z$Hg2dQcaLbzmotqBY07 zIWOdcz*I;SfidBV+b?wuQfY@fmo)f;iE8@nI*QXQQEUP@QLjf2ITM}e7Fc(+w<4o1 z>H*vgBVHUhduqx7fiEZVO*ZrvL>;+E%ub<=n1IPZunT`Q$?h^=waNWo3qbtEl1@UzP(K2(GQ=*t;*xUvl)rr5-Y-wx%PC-fi_JT zr()>x7;dL(Gjs^_fsk61<;iOy!qO(8;Kiw$`QCR?0XAQ-UW3S9KdD9qX5mrj_fV|k z1EDUskiRO}P5-75({$|xd^s5EJ3(OA_TeV_%J#Mj1^?R^>Az5Er5Crpr)M>XrR29P zj9XSJR#V^3&qh53t@}$Xaeh=FM-k84)g=J~x3RTMY*M=pEL=Ef{K~8*zv(DqQtt2? zjHcZ_(3q47B3ozm<6YNEG0?9G}0G~nEW7t`eW-jP0YIVb{SApG> zj%{HCz(3hUG`t8AD~<|Se}P+Z@|!_mn29BbDb94|@~3|*sQvfA$D`q|26G~G+_ zp1AdR#g%QP{80r}Pr#{N9~PXDs?Sh{*6;PE_hVMZ}3VtyA4xAIJlT>w|lR)h1^O*q-LcUCU&j@WX&scH6&i^ zhA4g3EqmTSqtY?e5`BAr zGobY(a0WQ5Dfnv6b>T(-Q-3_%f3)UMtr|5LnzPl%Y3L1y41(FwVs1-p{QApE92v*e z%930?wfJzFD{dH%AiDTvx3FX%LJI?Ed+Ow&bju9VJFYWR=T8QAoWd6r z>qxpwSuzb9wAgvBpaC9#t|Q=G>(lqr!SAtqHPF27MOyseR4{$Feq!4Jyl@DZl0x9K zZvs39;2xX$fwj$d1j4nMMN|1Z)V-MvBs2}InUPvuf}13;>u3BHR}hRt=Wb~Ir*2Jx z8+Ca!i+8URh(GsuM4Yp00GU$z9{CZKT8YM~8Hy~5gShsi7 z(4QbSMt)yWK8caBNam{OP!W!b=EQTh>_5`H6F<`K(WG?YK&Vm z#ywtm!O=Spz||4yB`#-FQ-#(FyYqYXNnP=J>}mSU65=)w<(7c* zU27z5LEOupYMuGd%^4X|gJSidSgXCKp#9F!CLkyYPl6-4LG-7Bm?eRqOeCQH1yZ;T zV3o3Jly;9Erfn+|)eV;~3hc=QV*oBW6mFFnT7*1clEnD=VJRBAk+H|`+hf%4UDran zf;J5n@xm=!qjHu}V?M|(s=CPNMLTY$pI<^;1 z-|<$rQEHTTC6#v*-7aR1-{y?kz?tu$l`KYrji}OpzDfbFTik$)25L@a?W{ALYuTLc zQ=WdMx@2nzb#GJ~6Gc~I%q0mpmY%C;NribYLB0{zi4Hd9fbYgTQX#S>`J>~cth*L! zJAkBU0%&0OFeFyyG&kJq$N+D?no7Wui|~tlGOrLvxWFGZs+C*l+}`Oun_adtd4<6I z>nMX`wvFLhZN)7_XrRYnU+$cd`$YfW@ASg0wV6FvXzr?w@{V=ga=zq=s^v@+Za$o~ zS1mH^KLaAb4j*@xqyehoIp|Y$dM@5G>}DBfO8oSaASRv{?)k#DQ31dj8SG(}^fYSy zrJ@M%o8~a$lRlGH*>3}xkW7)=x;WI2q}b~MqtucBu7g~~6Z{G*MU?BhOR&^f3O>9G zc7*Hsu6GBdH26~8cV%dq%-V++DqYlcKo{D)F_sZ;SUrTOU))ypb5AOwy6959X<>sCD6THv4yI|*? z^jl{|Ucvv)^Nt#~-kWz(ca0w#J&m)<9k#Um>$p#o-_m+TF0v$-=ADhdgkfs zs<2Kyzb@wK>gm;`!`ocF`T&gyqTQ8okU|X(#ShQc*KgW;RqWflJ3vE1fS3D!@l>;X zWfvi7Ie$6JNP63kwqMFBO?gszyGf?$(>t=z)iWIFO-&YK`%hfPIqwOwI~6h2Vqh3SMLLYHH+M5{BzJa*x66Zs-FY> zPx41b`Wu+Zgk1WVS*ahkaW)i&QH_*|@SBX(#8}o!^Xq_|Tb@0fxB5lV1^Jru77%YS zI(5yg&kt65y|8b-HW05r;?PvH00Dzf;Eyi)OP~4QEg3jf$`-t@UcI_`?=^WP2qnnp zJ+Zz=uqBjNWb;5XX}`!O-#4x6Y+%KAz~*Y3h$!?rjy??t*iJV`j^ zVuR<|#xy%f`AN&pbbhxlEV6FK;^8fqH!!hU+C!m3M|pSe(l{b~t6btUf!-|SMLVTy zMkh1lrkkdMFeYD36=hSx1ywd?SFB@4!&!po_;h-QGAOe$pv0HO|B-UmqIiISmz!i1zhAau&_LGRomaNNz%`36i?4 zGhw%!sW@&F8+q&}99aMroi)HlUI9ztlpD{YPx-#D%ywwuw?2cqAK~H7ydiy#?o8Kl zy=APuIeRjKt(8`%c*Z9|EZ~Y5T*hC^P9p#sdH($rd5?sz#;Momd9I#N?}Dlfl#gzxmV08Q9C-yVC$T~lJw8tjJ$mGS zW!rzBu*SUs0bH(o23z=oCuD-Cpw!Z10x?7Zezy%i46t%x!Aa;z8A+(+qFD&cH$3uG zZqau1tGN9lEv=jvkwuH9molbXQ&m4Fk+ou@)F%t}pcvD*y{I5~b5?FwFf6sm!AE7< z=3Cu{mL-3T?fI*`0s=K&5B46!><%p@M;)C#pmK%W4Ib!tVK7+m9#j9z!wI79&ZK?R zXG|<;W(~!|hu4_mi~vGSO(SfzQObz zI`sN}+_UsLYQ_@us^c{3PP}A0Qz+^ULeTkhF8&gaYFgi?0ht#aOh_~JM)EpN^B8?g z+lM(DkEP=7mf(kp2uLj$X7<;c5}%~ z1;njpImz<*8T*>2wNY_#M_UgZ_#eF3Qwfb3rN+|}zaKBvEQE|sWe4(WfB0$7VH)71 zPlErup>(Kody$HS^?cfkJa3A!zP^=p!p_VqEExqN%{E^OdK=6c!B5~_*?F$5dV{>Ece&&_@WS6en_qD#B>`{?0^W(@si)iv3-(@yvT||kIPqm_WW0f z`8dQIyMEKBeQ?;8-$h~koXio#hN+qBrDr)4GX~O!jx)C~7HJu!&2bN>8LIU;Ab2RY z?Z$Y!yChP}+=+ePzES9@nP;ip_cb1=^6mqVYHyh(pY$8XjZ|^ua~U?Ru=i`gU3BHf z%8{#y=Qt3}M23s=9o$4~M%a@+7GZpo-hvEVM`?mWpXzD0IDgdIJm#1gzPKPC=NET( zTTQl#hoJ7v*^thnc7Ri(X^4|X;^wz)y9~_NZTU%3@Gwa(gFLvk~x5NLlrx~HUs0Q|%>V|FZ4UR7Y zM)d=$8dNe*Xfzh=E6*zR#0}o|;-y--SGeOPkVFFTwJ?4P#u|^mBnx_uc zzYnV1aA%U6;TVAeu~E27SBkvPSEp+rd{0&vcCU z4BwDW`SvJo%{t6S-P*RSOY3RWZGN$ay6VQmX2q6AHyYQB&4tUa*QC~_mE+xP=2W9$ zlJrl9i7m3I>Dcrm&dahWF^dM`YSRt#B$qh-hAfvBLzT3s?8T4MZi8dWWa@B8pg0>| z)5=rq8$bgXP$V0{o-)lCE%=Zjl(aE>;wf1N1e+_ERpdw~S`6G#>6(p$#4LW?W1!L= zD#MZ4ya@CZM{W~(9@Ae~f(}}>4=H)%hPy?+!A`#jjnI-j>vb>n`)+<7jR)u&E=5>Z zr2eN}LTAV+d{T1NUT2ZjgUBTPeVegbMEzr!ggeVo$cXKke4@*2j9&QTq14V(Oj;*Y ztzQOBS#ebGcyo=%cTQ>Me)N_9+N=Nns4x%0O>c1*b?e+q392c7=+>{W?fC^o{=aSc z*|6aFh+SQk&6B*hkq;m43%M+CDC08eGT!&|*PF5wcZtBHM}c?JGVbE~of_n6PF3(P z3+ZOprk&0`c4lodb(I@fo&`yW(9OgJU!T&OMe<@whwZ|Y;aA!6boP~v{a5sGlHpV` z?yAXLJldelIb7ULQkq$x56a|^jT!LQ}mKLRvf*gkt5r@B_{o zI>18o$jAQ9W`CLINGz}Wqb8v<_055I^f9WkXNi|&_G>~4y3R4lFV5)tjleg%Qd}sD zt%~wwAp`xb@wwAc+2r%*hTdSCb>deekKyG%Ad8@viUa?3s1L0wS*9QO&Dy`D5_#0ZMDoV{OS^8C3PnLh>~7tk?m(YE8qs1q)S3qh z(InP>9+x^Y6j~c?X2-j2n*VYExJ5KY0wT@aK|HLwq`hbFD~;PJT(>YiSDZD?m7^suB+V1u%q>3F#p@;R@)A=nZ1(B; z^ez^8#z(dJhR}SFdjYiCA*Fq&@g8szo30e##huW?pTw36o^9{{AEI=Xbj?8*_j*cI z&p;e^*6aS;Q;Qb6I_VnYZ>9YebZ`AJ%f`K2Lm@v-pN<_Ai2ZC!A!p6LEQI;uKag_6va&a#@0NFo^bzth z|9Y_iy6JZ4Zt0yqu}!cN&Ro#gWcgHIPQ)c)z986EvsRLjtm&7) zMcv-3@;XV}(@{f!JBSS^6_A*_Gh&7I{dJ{SJN!%_O!8_{OI^y%Vqt~rhhF?^pg*o6 z*p$^5T-fjW>2YE-Chy+Jn|5>9-`3b6#C(J6cl0}U9MP~5<39^r3X~rJnzH|irl4x8VcNI`;v}6!KOv;F*dM{JGU=t zAvM4%E@vi&p9$`K9vOKwJ*c)rH{NR;O_S~4BssH=+8j1l1B*6Hu~$6rT$wH%#f7dW zW({3uU!yyBo!UcM!d*RqlMIjrQgbMVBR$y^g-jSKS;BD>w5F>#G2367jDe0JFqsk) zLfjIZiNuCKRu8JC6lk$%fl>fW{S|-9J=Vf<+BZ%{Z!|eltlHb|2f~T#+G`>0)F?r8 zP1L@>0&IW_6~(2k$qU|^eRu>da}%g*0j!1%#Kel%T{BE8Rnoz^DZ*>kP{gYM#Y#(g z3Q=*30`hfhEy}v8?aaNDguVYV2xW)|JUceKB*G6{$IJA0+KC+D6;tAVV{Fv*MI5Q$ z`vIY<`X(gwz3Vi-@`01KfXqa;7HlaSABWQgWtkM$mh7;38{$|Vz5f^|7`st*mLEx}~Q0j`>z`DM7 zQxA(^g?5*Zx;a`szZX;ydz-mGO-NjTPLmj8*Uo)Izgms%(Z1XgcnGzt;~77B?`KVo zz|ZICO<^+Qpb)g7~K5uDz6B-vo?(Muk0FlFHddvTHG}csNi8u2}>LOV^;!doV6Z!c=Y-P_K4$( zzM7hw=o#mlsSMsoc(m~9)sOa{X=ygP#};%01NUI!`q+LxithsZ&+2>NAsLyi$^&+# z(?|BW_^0RO2-K)V#f2zcs25BOsDck2h_H9H zeRgIoxX@;AuSnQL(LD0m6NO4*ZJ_MRg}@GQ3xS=jJ`lYRG-?z;BjkZvh9!Z&X` zGJS77Z);uVhJ=Z{5Nz|DAl+aA;Xx(_{pH)dJB#dYf8z~|e^dTjhJNJyxE9^YIC=N^t*I=Wx`@(r2WuVs!%X8C$ODYCk= zPb5s}NaktTx@vCuvd0Tco86KL2^^OG3WO zNK^bPGJsupTE0{+n!aEBSKgmXQiJEfo`edOTWcQzJ09@JNE#*Hv-v1uo!GSRM(92s z%bFq~cw+*oJCkzbm*WHXKKsw-LY~~nu853aa*1|O?~Xle&(FFn8y!$%Ay_jJdUw&| zetn6eLdG?2bZJSta(gj58qnMZ&%(SK-(l4&%V)JoVYCq zIs_86u(WggVYKUDMtiYx;^}nHlb_6gRTy5*HTANND?dy6=pXC#()d*P^_&|a30A(9 zwr6o^tt8Q77X3uA6X)uKWW*Zwa1KCn+e+CjM<=K%5T|Rpne%5~GC?;Z##S;CgcFHN zp@(dI~?Ehb|RIJF=sa#32Q;y|H4EBU-5Rds)C?zyLDQY8gm z9|^m3gf6x#Gy0#i05F&IH&qIkkuWP2?(CKWSL-`M|xgk2>~iN<7w2 z{1|ie?ji02yJ4Jn=BmnP`Gncv6o zWh=q4DqUS&Ol$3-y45`973P-nM{)V>(_LXI*SHf8a(jV!5}$IypdZV~(7r`SjEyTXyUbMdBr3xzZhj-h9+sQhpnK`nlZ z=lHQ9{ew)Jnco}ZL&G;*T~|zI&#MmP+(S&q1P7~gdZ%92et9XzD&8$Yx-e6t`u%Y+ z+BPG^u*xT&KPDmS((E~lkuu#)$^%<*OwMYbwdu4M-$7;ouFS#>JNG_p0d(^0VffLE zmzc7|>YV%2lkD!V`=V=&D`VVPca3YmJ$mhQf0Ns}jMjB63@XqgcL9Bt-giR2etO{= zW^UJG{*7&v0(+ny>k6ldPO*0Ws#4-gGi@(~Ne0jTa;yU1+PoPbg^8sE;zdzkJ@aUtIUj znSUhG^p5L^YmU~8v!wPPC>m>moQ_=T(Y+QC@sAZXMOp+QPbq6zx34|STCl&yS3QhI8Qxx zz_;4Y_7L>1l+LIqw`MUp8_K(zkoTON_T4tysFAYVo5~N=%tJn^3h_7YDW=R#c3%@x z_0jiGekL!NqAcQ_(DLPbwt>=vEa^aLOo(BjzB)M{IU7s2N_| z6lz6)$#Hk7iqImbGMX!@o5W|rc)BcBX!nEC|8jM%}aI*b2NBmVQm z!26Gi%Y1Kbkx0DMng3k+j)`87N>uQjq@xr$bn&mJ4gzIDId5H)5;E_pIC*JfUnky3 zI0$$AcKa3M>R9(mqJj~lbC>GK3uURiqs}s2yVPScLOe}Q9m*)2{_YVLc)DG}Pfe5G z=5RutgpvD+Ldxtu$IHbrn&Buyv2tJMXyQ`C(-OXeCYMn&E)&f{LtReUQ*XLPiXmG- zLjF-^^(4-SKHugpUHl$;j!pS(CgUq-b|&U< z+xwW2a+chWAAil2ZC5|%A&m(YpAa`CEv>3G_{dP-qJCby&Hrh20bZ=rp!}l1=!nDkTMXGf&G3SHNzG~9c;NO2Qn6wM1;`|nk2*~L z4p@a(JoXe>VAG{uw)G=st@d=YTu_zRYvUcySEIk%HGO0Q%=x0&ht;K@jJE&+wR0}0o3OQ;GZ~cU zskG?$_^_=wT_&!#_pFVcQChNkqFq+mZvH;eJ*#TB!vhnsJWHoZw)zjVx%qQ)aud(+ zR9L%)2*Z;9r@rwIQQ#t5tc2GCh^Q3vM>Y>>cuRtD05{;%CBLe>`sO8d0ODv#oh zCPXfiU@y;+Pej!v%mfGw#u?8=>7^b;o*1ADx27FSUAIJ>YdKX{{nxRG8$4`h*4+Iw z>$=0Z@moo-M%Jcb+dUMgg%cWofC@u;Ni%?j)Pv3O%7HtIz`<2tu&;_)KsAKp`p(UvILbW|h)oZDdWcBAgDnCzV?@B5p#ZIoT{R zA!GZ1kyvfAx5<=Aohm3#C{)R#O5z>r`M|)?D$PeXL6gQq^SvIOdabj?rJ%-%aEyu9 zQV0kAm-x#Ss`)0LH&S|DVtVe?jQBrYv)la}@Db`# zB#$*O+>(FjSyl)xq;a=ktcjFlpm0B@On0#Jx%JNgQ@V|MW7er6=n*GLLsY1|Y;otI z+95evrQnFB=#&`)sK}LiBbArDP<{0_lgTYzaE0iFeK`ly#m?{~czIc|-kdk#yOkBF zy1I5ux-`o7v9(F zz)x<{kc5a$9IzopY6kll54o#)Gy~N$<$&F((#9=6)g4RZFr5|v{Tj!W9Pn;DJrEFeYv(11R5&)i506hxLXxaKyfXgxXR!YyHEg*EHsx5DNs0B-`Cv7o_+qHPue?IiLJ^g*I0a7 zQ}gvVQSvcm%@ra#dJ4=VgtbeO9AKA5^%+6*}Xf{-uw?UYzA{m;1hDDiW|+ zrdk8WY~|OBlExj%Y%dVaZ(zYx$r>H#LZT|D?{; ziPBKjAieN4yx`18-}roZ>(DpgNyB;a7IL~_-C8H<-M;%JEuMC4gO??ba@{{sWEfSF zfB2wy=3^@3Z!3Xe?ic0dc`{{JY?uDHH-*=lAFk13CV6iZ=hdhU!n9h95i-XlH$e|> zz?pi6+#O_r0~xS^<&8==z_-Mkj~9PJpDZUry5O3k=!J0O<;#Pm4%!XwnbYdbD?Wq| zSHtPvoC@WhjP>^~6VB*PkO%+JNmc}wLFRXdhhBWd%m35dEFMsq*5-|E7}%d{XDpJT zU0*`VU;K0|SV$jN=TB@FztbC&8ZFO+jR*u}m6!zJClCuR^Zw-k@T}upmZ8tBnsYW( z*!slFt(V}DA~CWRx4ypIlCECBBAH8E=w=WzmKUnOfEO~TqXOMI?o0WWxVLKf#sL+F zK=YYeX3PLaRbvhP;l6w=gA7jT--x<70USAwC38|e(IgEgycLN)uuT*5wU6naJPbGUbD>iKY6QI%n^;5}Hd}6$@!vG>^Bsy%H zN<5et3rkZjOWH5fA)oNX*eCsSgZ&+0u_o|^GOl&WA-_p>i@V2V z(~b{YR7CC8cfWIWMHyUTe{Ha0D|>&{BmVw+R$f(SlxH1F5d!d?!fI6|@Gp7H6&Xwu zcKt{w-j-V`qe9M=$$Ur}3v8(%dZQVlW*ERs{pYU6_E9(DSDN#@Owac>Y zk$F6SOe31>uW9eXUD$IS+;$e9v`T$2O;Jad!$Q7gOV#|mv;m{svGAfaY;Y`}?|YHh6Rftn zU`}QDm9H~SojEvK;#Kk2n7I4!vA)tR9Sq;!dMGRGv9Cfpg0h-BO}PhiVILMs{KtW% zp9Fke7bRh{x)h))kP(oeXi^)~I(x&SoX*eVyIXDw$6`fk$s0lGBz{#S$;xv1*y*W% z=AH5@%B`)|(jb6YH)a7mryL-2#4qBzz<_WIa40n2xgn+wS?9Jf1QV8$YAWB^_)T+uwh}WoHlAx$>wg$w(ut*06J~$- zpVw7j>!IwIaLH;cb06z`XI(hBn5eqyo;vRd_)&v4zO5|~eLVKU@7D&9LzZhZF5Y!W ze9SxeP>O?<>&IQ!mjxP<2DQ8NX~p9DGVa%=En@AXgT~*$raMD`OX5pNE`+g3L0a18 za`t2=!546hsn-^1Z{j%k3+Ky3R0dj+c%@~ncw~TMf2paPy*j8mF4+#7=Cr=Q;0jaC zz$lj#!)dk%IXDwx647rj_5{?_ko(}v?YYp8U5*oQdXUZ+XM=YwOi=~_OcWj?HVu23 zspAjNh2G@>*=jfHh7He7bl{fNSkbniT2iJy`&zB~msLEa{XJ$LM zO~w@-e*`=%yv&e%7FT|EzO9aq1noz!W+*Y6$*0?Xwvz>p8#?iJ#+Y09R!^@8q~`iL zVhwf*$BF_*HHAO00BTMw{$yj#SS0W1m;UyUzAkm)VLGFG+ION&_2SSa@z05l7$!-A zFtWRp4v;OQ`+E>EYN_&kfz`ngN3+!t6xOs{L}9teMv23$E~(rqOg|0iyL!h@_%Y~h zc<6Op2oEp5r&^2&ni7Y8Ig}*&S$PxCdRBjzG4R(lznvB&VW~9(Sjk1GkdX++ zdP|d&cn8N!Q3bJ{DHTlcrY!A-#4^>d^ux|0LaWh0l4$g}8z)dbus81$o9EbMF4Un| z8kdH}C|%;}P<@_MFF;HZfbXc;nI0BCEqMLh??JEnqY0g@5W2F{f!@8@nS7gLQ~=Dl z$&z=1yqf0MC8?&AxCUAt`g|+0uIy$5P;pozN2i;1@W%4Bs^6Pyo);8NNa*;%S{K*W zg4D&Etz}C7eAf>66BrC%TDxrc*4?cQ$?M)FpfhS^meJzH_Clj1C%|XJas1kCw|uOa z*zqLC|Ccb~N~n*K^|RupF?iT8b-E@!77T3jE2+ ztgqe;C!4!mnOHwZpO3X^g%&Bp_mVXR+SEIr1_v^ieDs+IR9Wb74biB#iz-*v8;$fT z$$F;vzkZMZtzU5Juy0>G?NpXM@J(#8lH)ON`P)ccTBWSEM$EQY+M}c6t?J{yWiXnC zq)pxyx9~Z~59Ez%EW>?h4GDao7EBw#&WpE1f3C7T^Yvk9Qe)8}=pV7vUF{(+4+N&5 z72!L>3)jxqTaZtCDZ9fGXYr#=x60o?MB#8cPwVlB%6BCfVO|9*!1dy=ei9qs#Ls@K zi%S~{&rR5t8SNRKG1reO>n$IQD(hcq&<@(H{UUy=h|Q&xb_R~z=hk35`IJt@#E5Cx zCIEAKGv1|PN7?+wc6W=Ld%o>Ms=|iKpgfcAfAV4#iSDs+1rd)}YT3LMu;}FrDshyo zSLnI_5=cZV72DS%?Xv33$|aRkH%;0UIaYu0UY`0orYeFY^ zo{BxiJWyE5=Co3uZ3&QR!fw|zp~=_uXbcz{zobB6V&9iQQ=p#Fm#&n&>h^$8dTj;| zGGt_=PJaIQWy9%s{b7R|HQZ%x8WE73XObp3rFaCsfKPs%HPBkwiaCl%3qY8Aa_Ycsk{WD*frO%~mxc|j7n zvmSEt>ByQbJERz#rzq`8K@GRF;gXrnrmEiZYK1cdvd< z-0?9JaAT&pnXVJMBdVa?*y-z^m^`5DkXz@%#H&!17L~p;GO=y{xu)7>=iQD#H$O#M z$@k5ZWS4hRfCg3GLH&4kd6TBui3D(KVuGn|JkH@!MOGbCL zjg1dY1;mkEXpmf8HG1;SPs2VX(@V?McOK}(UsL1GXyiKGS&Idich>`+in*--J8n>J zuU;!iduszMvF0Xgjn_2r_d-3~Mh67_T+usLE5!pl8t(AzJf8DW8SO5AuT61-euM~* zS_fNTcAOdEjlp$W?@M3-_1dlaCzLUwmaLQsvblWD=${0Fwfb4ryJojm>gkRsmm(Gj zW0m8m>Z-ggF`J3&^aiVm_(>v(i9)meM@rzYdOr*>Q`F=A28PS>b^|?X{veTMw#qVs zWH%^hNfxBmc7u$kxLvRMy}?h#_TlQx$YJ!R0sMUK^mH$`SciYZW$sKUo_1{WGQiPb za>nIK1W(FUuS#1H&x}=(D&>#j`;nqy5Gywc=WBfJ_iC;g&oX`Yekju~o{loR${+{`j@mT7b$1 zyk4v2Cg6gcFsyc9uc)t2MTBURP}C#yR%?cG<^(+W!WTe74oL6DCBnY=2@I+YP?aC< z#CU-o*BJi?I^Cv(=bpxA_vjek?SB+Iw_AR!4Tj_&5 z-N=Lr2BEOF)i|)y^=kMa#?ZL8Iz$ib*$x%Y7jo|oDLyzFUtm-c1}XG9;jr}n9o|; z6x#Zf<1M#*vM5O#x2XNG_F|_hFq%dU3yCxf&!{#Dh7SXkW0U87T9W$-EtY->mTL;< z_9<>ATNsyj)DTJDyLC##2ANy!?Y{bgN`tRZH+@>+;sOuHH0oez1VWCxpa`TqzCh5` zXS^X9Rg3pToTHiHJKm9{x%67E4~v-Qs`pVQNYk1xkDi9lqw*b7-dQ?%FalpCtA>HD z3s3}%YZTMq3Ei0|<#pE}s$cd>24gg~qS-7@PMLZ^v|{#^kpxFp#iqd+Ptn(-^WprT zZnxA$NuTn)n@EzHx=Jd=Yet0KIg~tU;8kB*#`!3H}ZLh*gG`%PB7S zTfEuTQWPO=P`CA(qDg!Eg!>_pI5*MLintqOUaK8Csj)RgG^FD6J-n0*@h9GqbCNgC zUuTmoQWr_WeZ>xQp}yb5TUTU_-FFFlBW+vI48?jn6LR%Abj{n@^&g`}1!r$Kn5sKh*M2@#`yO;iP3tY_us(pYZFVVkGX=H)g-L%4cUuW>~*bX*I0?` zbY1HuNpEHjC(EcFL0xUky#&Ff2Db}?nc$&JicHaPv63ZA{;%{RWeHVTu)8aw){qir zQJK0}X%pPbOW;|HnDs=KFJb0!OmxF4e<{H*!}|}Bx{~jE60nl#Uw^v10d78vB$j1v zN49pM{TeeYfjN=iziv7|R0oz2+!b3$iI%zCia`IKP&fbUZ}1PBqVZWNCNnjAs++~H z1b8X-Vv`YR=rn;jRl0dw_p7V(wDR#} z&W@564+Rpufn!UeF+qiDKuaAqx8VKGmm`LL_?{#4x7H)xj5EmiW?SYx@0*&MG?)>Q z6tovwK}k%{HM>ek`5*t*%V)V>9l z{kGV{amDMdGtAB9FPf8i@kN*-XM^CO5J6P^D9!(P#!hLi{~0BI%^vXGaG`=`1dXs7 z>$?3UlauWJx|f8MbWG*ArNKLLB}-0`ez6)OF|x_s4qglDKitv6tKdfzyla)P)30;9 zBE~bZa`8sLlinm%ugq1c{m4jfoIcbmb7}VXsV(=enIxYQ-*45SIzHEquAsv7iy^lNR4NKH*QZn}rF5%Vrp1bYS#!xwuRm8N3-3qvnPaiKR44_N_I+ zYTuy;j#f_;$EZZQg`k7LR#yB?=i4vr?00PK(vZDnvPcABQ6GG9RNP{P5&kaheQ2*g z1zBL})e8f&jkooFc#kIxEoPCQ{9D|a)FW(G56j2Sc&Yy!mYcoV$>zuydRVMAt}3mv zmLIMod{$vif0E0Ty#cmrPrlZ80$Ednf1hh(G*3FG9WURwHYv^&n_7EeHu0(2GTQI# zIe^rD=8u+FN-vFt=~t7sv27d6t^wtZpmP7jdEcc=;b!-W^Foma|8xhQRIO|f4-b(A z#8^)^$SsdF3d<&R#E-HyjbTZ%Fz@JfSPJ)>M!Dj?mR`80ZpH*$WQ(P0tkahcqsoS* zuOwk*UHJ8jE3yT8+DG&S5_c~Nw#A`d=uC`_zy}* zB+aNiR)W@NZ@}ktKQ~7DqNi+WJ9&;*uO_89JuQL``9$o$X1^Y9zt9{^fp3T0W}-y(O-NkPyAh|WCVg@k`dH(q*y3jCS+KG!!y)kFF@czT}d%A9PcaLpfq=H{Jq~p7b8`-rIPb?y}GmddC&1CVS zK|{kYeppuycdp181P4#-OisP20t2c$H2u~OSA;F8yHC$Er+=ootu^nU!gcH@2@`hapg2( z;^asq2?0OSHmJH+f;I&A9D+aa)l(6S2gYl8Z}s- z{o~?|~`ljhuGaUvm3?Nl|6ZZkB^3<#ZSR?*sc zGe*1l={7vQ4CBMCH(%jFsmVbnPd6#oKUDrXTT$zM&=~)ZLr%e2e?zHUCOXMJj;DoOz+Vqx+ zxmT`c{%n3&BuK(~Hh>nES7JCdR5wJ44LS_MpPo8C|L|{x0(2|z2yy}v2RQ$wGiO*Wv$x)qRTkxX-LA@Shy(VVUxOIXXhwBL%NZ{AGx z8bV_t`_S*2^&;H(x+{u!y}5AE#o(XFxqq zY5enao|Xd?64Wjv6LjIPKI13={fe7oK!9yhj{VpA5`$fN>P771kH4RAd5$;R&X!$P z1w}eWoY9njS7u2UPj*>W4qG)q8(2x1ti|dW|0y;fBgr4iP4^mO!_nfqo-XtkFk+T< z8hI3@Z~f2rK)y#N~UKkz&A%uSQEXZg_YWRj$MtBrnJ!2)7l-wkSV`Ez=q%v;Bn zJsr|6)1Mli6^pY?^)_!ivLl$H^kQ!zpPELqKtm7d`t13DE zFHiLulxe4LO+m2QrTGt922B5iMQ!1QUt(VOJdgLX<3A1|?wg`hgX`*__H+wGr=rrb zHAdzim?nu+Sj2!MjKE8=GRJDSQRobX_PXu4(|MJa%R$Ffn1^e%E3yuJK6#vx+Npg~ zC^i782co`Sbi$vP0)853T(7lUa7yJ`bbhnEKz_hpvNUCmyM;Dho!f0yYw(g(OL*?B zmTKWxO?h=5pz=XsjTb%%58+qK$t?rO>n)ZmEq(9$r=!Q&ESCkAv0ur=AGe$>ALWt7 zJxHs>jb~n!)TMHqlJR1sgt^2X7;H`=O0|up5~zP|j0fTf3^L)w8xYiTt9Z5a`6fr& ziBYNI!KLRyezJ)_5(t-AgcuDoT<@VAk36cIXKQz+9&Y>qGkRs3^P*(@4!Hy#9{xv` z-26gBaU?1aBzXnM-&epgEjU((L8iR9TUAp8}Z@>E*GIQti;ticR# z1zg6KHPEmFWs9tP#UEdauIo@O`|TDsjoX}TIv`?PyIT$aCvkz7`vPVxH*QGMc|Hf% z{w-DATdr~Sq!J{$0JX!VES!&kPFOQk+%CP%UyA`qZBHfIfLn5>4a@yfj=mj$8xLRT z1&FRP-AYvYCJzI?7t)j3M6)_247sQ6=@&2Xa-EQQhCYz!j9o>a% zQcEOMyx`nVNgfDH21R~561Ma6VSs-UG#FM_GqQC)IDvaLFP1czeBbEykK0if+q<37 zUTQ{vU6L_mDg4<6So;?HWj9MRkL-2Vb?O9o`hl@JGZ^+2Mz>u)FmIQ)y$(+S<3ds*IdL`X#AmpO>z zl7^`XCk9@IjfCxfAwLWq5yR(POD^$GVlVHQp*UAP$49Z$F=XyFhv{unwy4}+=RA*O zxBuLtI{da%Va>1P#~s6raWhxeqKIeOV#^^D0cN_y%f~n!)Gx{3>pdc1@=;2(O}3PR zRowUt>OLE8zmtP(o*>5q z>F~7cJUh8DeMwrgNGE(DT*3x_9)(~eH5)gI86V)z6HGHC9paz@QT$P0BfAq|Jb?h2f^ep2wPa1 z?6dFIXkl!`4I)r`y_w)Iq;KK_q z=9+qe{vYP9BO~Uyr!A4r7>V0$ycg;A${ZcKCa}IU6K!>X?=;^^Lh|MwHqG+ISZ{Nt zb%&J6c2V49mfS9=gcu~rI2rd*Dvo`Kr&L8GW#&|1oJ-vHvSkd)>;ecYx1aA1uhtX7V~r(PrEh z-Ht)>^Bz~q+s05XZJfW5>>YB~AALyD0;8Rs)wDSu z-GbO!AshoTJ5wfguHIM4fv^3~Ag>nLdcp4*nMn|}GJM<`Nqj2w6n9QU2^a?cJhO!ULlNIG|5;X&R!YF@IIj@TSia*75Ieb-~ zB_tlbsMzWo9lY?h8d3_K+A_yx4KP1@S1*W)2ukC!XPi#Td3D0y4U`d3`DVV7BT0~1 z5G0hoX^)Yu4ip2|=3c=^q7M5DhYe~(mc1~J$ZaRi_~9qK(}!b=Gq(IBxq%b- z!iDs~Gtyv!Zmo}XKJVw<)SD}aabVnzH&H6EFY|P^+hM4p>#OzYl6Wko+mLogH+Q&< zy>7rV4XXs_1--Lp(|+#QaGy&E9aGD8{aD`sPZBy7G_lVR|A6rC-l|EMR6m&rS{n<( z#t^B$cPW#Nu+xy?56Kv5ZA8aWFJg| zx$fTpD5h5WQ;0PZ&?fpU-OqL?cl=BqukZ-L^%*GqN4|)KK}ZszAwWBDT8qqU#{NE! z!CAv^6V(bX16rx2uU=o>ax`c*$c?{9I$941>hV=4T*$6BCoK;J^SXbhw-|p&Z&}vy zv~>n8%`q@fX(#IN4^A^ovwB%$dKm zm8lZ_MazW+;7d|3-41O!>dIp+83~;FiVXE#a`bcDFf={>BOC(SG9K0quyJ*&D-qu<%mE41`| z0!<8N&E@W97tc+UmrK8X%R0h}`D?wVl0mIJ`zD<_q=Vk_v-&UKXonnRW?k;Hm_RXx zhXYru2tjfM$Y4Xt?Nd`{`Q6O!<2OS;gO;bcSnz$xeipC$3$G5MxenXSYk?=?wrUob zq>3o3IGuvg0mkEGx|Vd!#;qGp{Z|LBs&Q&4{#w17=hIUrZVBS6scZMJDQw0)7*FbG z*QlaI>&gbpaK`FJ-&d%6uDM@xo9ZeIX#GqQ`$Gm~9SXJvX{zY#ictX97^4USwe!IT zn(lqOOCj|5M>>#kCD=qx5@qeB&dY!Guyj)_W-CL zCeL|GMjbLH-FVKUH=*B1s`qtA(Nir~KkLjHP@4bJs9}f&WTmou*x*0Vb-q3ClO!ht3#y{^Ow1vQyb&=U~`E)~>c4da@EiWu_(GYV% zh{{YC1>1A$NOaO|!xD67r|#7xH>!;i2%8N;`)AQS#W6pr+)a1>Y^Y~EIOJE8GQksO ze}5yc@sn{|(W0Z@Hh^-^$AkM9xKmF!)ceQ~Vh)`-qEKARNoWTUqFZy5dpQ-3u5CAV!hDB(ooY|gVE|0_ z-+pq^U#RHw+@hLVL`n7Z##YgUBgAh4fUKr_>BH7(K*3v5k}PrZ{xQi${ln^(Q0GFQ zZ0U-G@D*6E!;c}m4uMwkfAZ-TUx--3?d?7&6(&6e(N0dH0rkLQ+eC?r$DfaX=mb)J zw#o?KoVGX-@()rcjzY1n8#p#65*q4kE7#`hJ-i!16tb!}0{(%g6==;lmt~X-t01Sg z5)BYzb3UF&e6pFID}NYX@GjySH^S{EtNSXN91-CZPc&90HOIoYDLfKh2+20Mf~1X# z;HKFW9UL8l>c2ePv!qF!E9~-xy#9A=+-f6FwDJAVAKT(8*bK;s7Wp7(!v3{r-v^Eu z^qe7Y8~SsGB>Yt0$f$q+xS=;A*cUF*=y5U=t-Z$3rMTmf5I!Kg$Vyr<)0dZTZzF>t>LAbG#y#rDZ|R2B778&zwYclq#sklsv_u)(lV(&tpaOHNd%MUs@(;(@+Y2L$r-n$c3>(jrI*5E=59zCqzvIZT`OgN znI59QyV97q|9ZZhAGx14)4RuHUngl%?+mwK&}GzAk%D8IIz%dPS5;RoejS=R>D0Iv zt3FibV~_kw+jC7#Q&mGZ)_zXZMiWz1)R0Iw)SfjjwYdf%=T}mcuw`-f&+2p6b=@an z-L?^l%BZ*ykIjo@ksq!`Wd;fE6cvBk7c;{r9QNvKgly=8=-3B@K@W zB|T1(tyr`Qc2QnH@)Y0MvJG)#)r!DL+nC7MHN93EhHSlc9 zv2H~r$6iQwNNdZNNpM#D=O10+*55Q#LVW|3>CbW|J_fD_e#wWbG3vn{MXU?g=TI`c zxZ}U@qgL58>Kzt#*rNF<{=ArJ{8D(I1j0BL(#Ul-9ab)QB2Jj<#mA{{F)Yfji&9q; zZvvT@Iet}sH*$#57H?ty=x4_?nTTn|!HBSejG`ruJt~3is>fev!{B0#Z>i2Qx z#}5&s>(>Hmvz-q+rn93%9W67x^-5h~41!naf>>=AFysXo=5z9MLPa1-JzqmdX5h@S zu}ZI4)?b;|T^LYS+)ft1)MfwO1)}@DNvL2_*Z@p zV!)QK#C2K4&ClLTl?+wx)vh1Bo*>c0y_W_v`TX==>54*sgX|mElH^~>;=}XKOtEdmt@B;v5(}`q3(N92bfekW7 zj_rL4W0w7Qs@AQ&(Kj^bcm4sxEH0A1Y_o1&62^2gTIq%47)0OkDP$TBQ*+&;enr;X z7bVxt64={&e=@VmFAHflmEJs4Z!svh^MyJPKwr9ZZ$sSm=_}tP@E`B?>bKkSIZcsm zj9nknKy7stl8_jngc7NeBBQ0ktYgV0D%`1RWm7>yY`$tOw;(Ng?(l-DD2yRVS~@DA zPo#w^a%WAmWtMW&^~_(7QFoxYVhQcOXP5%~QYPt@at#o_F9TYaDdFk9aVXI#p;|mJ zge|1`ygmQK8($LLJtQd_xyB@8FB>m7E5Hc9F!c9anXzzhur1bSkgt6w`}jIH=A=;! zw(hLP8?hGo{hgCT8sf^z4O7wqp|}gEvv5h6$r%w8s#L4>tg!Hz;TwMhJZUl`OyR)} zr3z56^H^l&ThSI+b@b~a`K~&J+&I-qC z5lmO`<-J|#hWj~&M~O6U!%|2H5!#5IS}-1NLG$p{N2sw-;%n`m9tq*kTM=TN?qKa+E|JAC<-Wb4%zK0?0kidF$2t+fhGY7{R5Mo=07Sr1nOp5Zs+ zBi-2UQ#KIjSGjZ$0<9{VH`Aqv3o_q)k-exw=iJAx<5;etatGqbA|00e&T8S7>>Rs^ z*q^(%g*`qyzs0Zy%F7e7OKkbjm9@AK$;Gk4kLR%uxMMzw0||MiF~Tl8!m7_?%!~R# zX~8Nvv8|7D+{6%k5eueDfG~-t-;!k(dvB?-{rGC_wmAgSYaBb2(k)YF3$G1oGCCMb zU;qYK1LcZ@B_wLvz&(~GRg4>;Ir!bmWH?BK_vb*Ps4l@1;((NxFCQNf+hNUq8(N?) z{5m_M&R;D0+g(da37_L?HM=0wICBPrdwj_Lo$a$y#l5SbWW~I3nHSfbQ5n?~evywK zuhC3orTYo#Z-F{auCtMxA0JXf8}BTR2-{*h*wUU%y$b){p^v2zwc*hzMP4nD|2$!Ad*46jkT4h{7w1 zN+>yi@!)g!_{MALXvt!F$Bl&dR!tp=^zmfdLO-XYY3D@PcQKwTm$>1843cY4XvD?8 z3;HR?&qSHWXR|g$T43PfcW|(ROOY8BiBc%cdM{nX6pABYt^_TdWdo@7-q#M3$lEiE9@Y^y#XC;kZcE7!|JuFxm z{}_rH{&Y_%NU;j14=NU%V+y&)!DEN2iUl69=&!W5Y@uFGB5 z6gf3~BGmHHpJn>%Bd%AOF;_;rZ-7r#bic)yV(EuXb44=9c}4bmbngr~`5KHG1Bk77 zwc#Z&bKj2D(RkSOla=!0{AK&~LpkgIv!1ud0m=AZ6V3Jqm!TcZ^}?YanAdWNrIyLb z=|D}p5X%rryCIPcL{{N6=v0Ja3+nKeGz_%Xd&kC)_fvP{ZTBSpfF8QS$o6)w+NR6+ zIH|3VGaFDP@9v#)HV(b^xBqBf22+`37Y<=jr@~FGOM30Q->)CADRmG(Ex*e9?XXtg z7`}nhM@ZsgFH*L*;teh`a|{R(RTB!&u_!|c{FpLRFV}3ZG_EF-YK{ssFYPSAp(j89 z?8(Km?d@_X%^-+V{IuRMp{;?CBfHyQ`ZUed?18JyDdq@@^8jh>aN@l<+)0d=ORz&S3(7B3f}YuRz^7})_ZT3Fr2`x2wE)Yg)yN*ZuV-BJdpaFpa9n|I?0G@G8 z$Y!nT3|rh`XW}}S!krhFkKLat&p(3ujT^rYS}^voZ=9&KA4(^|{j)_qfRI_790gK% zU1T6N=IzRxGIVlJ&S(DYh)e_Wp-~W5tK*!Z_gwu5d!Cz=uJmXEQPLuiVs47r`05(pEQvEH|@a+y(w0v+(Ri({g{#saAk{*iNAR%)M`8pmS^_@DT_&Bbxv>}gSQfs; zUaH7ls#xHBz`a8m$R^bXyk)50a=wrY(zxCiwjCmZ$m<@@&<_fT=`~D@ zKEzqJZ$mp8jY@l88@KBYP>@IgzWIn;54c_BN>z#rJZPT!5aS3_33!D|-jWfx@)P$Q zO;YaSentFEN}?c)n|LDB2R6~vR>}Llem(SuYUs!n9}?3+`1J)&H6qt& ze=^RO(f6V|W_&o{DuMzwbD^j$jM9ZwF6X%I+S>UMCbfImU4e1C^5*qFE*t%zO#jK% z%986e8Qtu zRLwome4JAeji1#B*tTx?)v_e$7XriY=}a&9aD zi>aT`uLOrO6qiq;H0J9|2YPvYFDLf}(inCakSWs|v+JI8`C^Qy$HPXoMqS^1Lju(M zNwKd?bCS4?ey>R;r0z9cx-(e|B#r#7_)8UEf)MceyTp2?<2^I&DEtyl$9nVnEAf=P z`&{SA)NeI!`UB^{Yf83*ourxqW?Ixm=5d=GJq3=TP|^mb=(ggUUjrmvQYH~k1dUor z#S+-oROf7obA!#>^7P08)TwXpgSWfr;=NTL{0C@^`b_zGeCVU3zc;Qt`rFhKbH+AT zgXM%7V8U5hhc}t@!IoCr{kvM-t2|^wZjQv>oa6(pPr`&PAII|Pz!Gn zv7boyX+@Kz^wu|ll_aCrjfQ0m{&aMl;|$3Q*{}W;;fZ|klYAenoli^n=^a{$fE+B!wYNEN)gQJ;(UM32s_}&V za$xVaGdlA7@W`fs>t@)_Wx4ck=w;9S|C)9Ej3%P?(4`7Niuc5zYMtgd!GoJb< z;T>m|9yacA{6Eg#1FFe2Ya6z3M2|`ll};2?EJzXQkf?~L2&jm3qC^A)L_m5-RFEP_ zM3f>W0@9mwsZj|*dMES%flvYjNJ4t@=gc=V-^}~J=X`5stt{4)gg~CV?0xO)+V|cs ze1FF(Vhyr?>l^`J3lQYU9XKodp(o2XT@^Bizm*M6BY!X15NKLnE9no=_B z(RS7=Ry@uIPV^sdZ9Z~Z;a%0|;m3}a-}+rTO6@GA3v8(K504ns)H+l#$x07T>d6r3 z4$iFx9S)zI4h5dUuSpE%FOi`bfqDD3ks18rDUXKQ3Tp8@z#3F|-A`TOQEogRS5x#B zH;3)5Cj9lvb(N%SCvZZ%pB82(!KX$~;H`JMlElh1 z4zPYRhiBBZ8N|Khx$*gJQp9>rAV$Kwd`aO-oGYDsX+w1D+>ofs?q@k3_Xpk?ihtQJ z0+wGsB@~2Ioqq(*^e9qdp2@ENfsH&=f0BO$>Q@Np)L4?tLVUdESk6}pzw{BmHd#D} z!$f8ZUMX8Gda45f!S$0_XUZ-VMqLsGA313%CxE!NS9>RMCthIr%TBoy&*Bxpio3W^ zw=GpXe4mN_9E`r7-e)MosdsfYt{AnFvFXV7tbi2XnvXHQ{%QA=NU*D-K1Duz`*_&X zF{`wT3-9pSqUb~+{)rb>QEjdTs!6*&zO)Qg+;IQ9nnZ_T>$t#)ZR}>%2WCh2qLQ zUvOSat6cP{{PmJo{AIt}#tPgkj0R851y?Rad!7==cvAc&$tpTqPP@b=S#Zo``1*qQ z`Lo~m&nF(t!qq`4Z#XiMV!91RVs_#KAS6?K83*IkE)SHr6RtWXMfe@wT(_7D zpna1OA4+b4_~f_!30}mQmt(pkoI}l3P*gvNVy!pi?zQ{G-FU0z^C@l;>lkuAl-aJ> z%~tV(y9otiYr0okB@rJbjrdk&E=I*?i(sNPI8oyyN9oZc5&YdI?!n-sycQq8 z62faAgsIDa{c&fLScX3HFjQ}BWb*nyPbTtx`LkyN65m29=qJuOy<6`1Sad$D{nqG% zcg4>kvXhPuyEQ}VuH2e({DM%~rLEl0J2@wvuXZfn#y&<_53W!&Ap~=5D!wBD#2u91 z6X6R&Zkc}9yR!D!E?8b4wzq5I=<{@bw)pwbFO|N&%k_5YX=}?f0rEBV_>i|isVHLD z1?L&QP{#B=+Fd^Tld%-(iMai&A$o_1;18aQj)uDM@H{X zz18mf;>hj>Q;(!}R#McOYnU0o)VS5G!xxR76{pyRBl6Rqgi$J{$=Ql_Wx(ov1KK&W zUkIJ9)kglue+0cvQiLs5WlgpLO_0}R;!6E*f zMuP18LR5zDs)JA#h*9wIQrz~}Ia%+I=jz`*`cOI7V$&TLbYNjS&v$XGpy-L9LY=$j zKKtNzUYJzTZ?`Su?zOLXCN!j6kCV%P3aESBTx~otmzX%5lY?DW6Fqv(%>`^(T;<^f zy3m^V+-mK#!q^-n`;C>ZWl~|<{7+a!S33DS4y;vg*7K8URT@6c_JsD%ky_dc*zgx0 zBjecc8Q&=O+CFo)*Uf3{sJ?y3i{3#04U?Zj+h<}9emsJFK2@_y9~AB-uL+*cbH=^z z);yFHy2WR!Mo%C`q?i;Y&No6O^A5+dVGxL`5yMj z8R_2vthhY|q>3CTnO8h&r!h;AQS+OMiHpvkIp#IGT_tv9^OAiY;wEjDdoZ`pOrUM; zwmc$z)OHF?`<>IAm@Co)=MYt99wgQ|cv1#m+7<9}P&FmnT+`r%kw-S|J!eOfX3ys( zp|mF#XdrpQH;j4F+Q6rp``E$sG7pWMRCs!Z(DcfasoVaQr2EVyE8bZSxR$4E+U(PM zf291#>t_+acx%ERD|if{=f{&Po^Oq>_HU;8ayB=@z03a?T<`<=8Innde)9FV3?#JaCO+?82R9nX*KxQD; z7;+J*c%+%yQSzL&?!a=Gb7)fUpCxly@I)Z{9g}HQwdQQ?CTxRBU-2(klX8;5uhkh`-9$@jH1m zvxz$!bmt5CjEy@Q@vo&S#@jXQyrt%J)4}+8J;!kw*iy$Lw1U5fsI@25t771ALZg1k=pzG}DDPam+K(@+ zGyFuhK9JF8S50a(PV`<8#Z~!~wv0u%S7wzoGPQ+t&S`p|O)vA2Kf0H4=;c$r zv0>J1&nMsXp5giVN7I?nIDw4c3<(n9Ef%$V7ZqTYHBvhjfgNEUy`cet@VQf@N!uCZ>7D9LMlRk5+%^P>LBZe6~FiuApt^{~>9&qF&@` z8_dvGeWupOtzcETl0KByzQ!qX(6e?k)61H<_miZ&?Jb~0J&pP!h1MbA^gWbD5$mVe zM0X1YvMjtHshDLNly!BFBF}B6ad`5Hq=Agzp|a6gtbLk%G#Nn3q})&$A8DipL>~-s zNls6#ru`~mH~lPpX`OX6W&pJthppYJ>Nk8~7`D>whV&zYFO zeFE1W+1|}#YIy7Nm9ZQe!KEk_Ar@!RWM89R#nqx5~H!~55Y=^NjoukRO}n+9GGX-vx#kLxlZ zz$1zkRw7D(0VHmdJ~7%%$?^A~F$h)WvGjacRkic?z~|3Y2j}>8x|W%5iDU6uR^8AG zl*hKg%W(66^$e3ic#cyf&OP;ZO7=!fji(&Io^xM34p@|GSu*2FS5wf^o3b`uu}HPl@b|jN zQNi*Ml)~k`f5_ztkvn>WffrIV&Sa5k+( zhLg6mNxYvFhpL_)-Qn^tp?+tR*%z897m_`Y0k7hUu%(ZUFC(I{VIu*!5Ur*_a_eMn zqW(GFmawCy;CI@ZmTj50Q5NiJ9g4^1bNCBEfGxCApA|S%gF{yYsdd?sSJo&C{Q6@5 zH*EM06PcN6u?Wpl*xlK5;uIufez?G-EYa`W*q4Ot+>z+I30x$i9;P?uRT2_U(LbmZ zB0H{pz)_E_C5`KSURaMf11em%^gzJUf1@tbJU*TD&^bH zC^=h~6jpaVgIq!$cXc=t)&x% z`NEEU5004~K$nL}3wy5yEb z(q%Ni?@S52ZE@bpY?99n8X#FRc-#j@z^$#yb@Iu3&TG&f@9d137S<6|(PpGj)P(3> zU}0X3eh@RT4KTgoTjzcDr8Jx#CK88S*t?ZHD6sikKo?Tu05sCdSrR_7z~gN+326xg z>?P8*wxppzySiwNy+;MNTC6G#X!i65k|hUfsU>8lSm@EB;mEEQt80RGi9A(D-aHbH zP-b(Bl8&*F-7G)=EvA_lLHcUQSOG~;?BrEB(^uj)GetO6=Q)wmCQu1vbLTzJJZ^{Z zcgiwZYjIhe+0=zwq#C+yz3*f*l{}>jH90o>6mWegP}V}e z>`wcJIq@Uh-#4b4^wyFTxC3+5*iwU}gFej3>{>3by`_N%)Zu{P>Os_x#?{U032W+k zHy>#k%zZN}3b~D)YM?0spj8HSym5f}I*K}M7^<{d(e3koibosgWw3D}JWWO(l8xMF z9&F$Mmn{zs4mo=uA8Zd0N3p6g%p89rA-bIe=HlDMOJROKn<4RJKjr=j8%aznN67vFbM$5{w0*WCenFj*wFn=UB9y_*dGHP$IIEsGYZ z@&0{A{NY`Yp5Q6JM(@_eutQvLUl1P1?npunOa?+X)0u)_EGF{C`87C+0WelAZU5jl zrAHi>0-fCtc6FZxBuDtArH3NOu8x4-2CwhhfA4_&-NgI_+$_4}=8M5(`m;B}-y(1g z{ux<6+kdRxxlV1EtW<^J>?k42mA|M;PFroq*>Y{s7okx>rDneeiDF3OwWN*HxF2Tc z=?clW$jS^z`V_kJ&qi_8?F z&xC}LBBd?8Vv?0(e`*}Ria%VRX|Re+n5FX$0#yh@*hqjs!oRhA*Vhrg23+MMRg->A zKWcMj$A?dy8kL^{YJloF=Daa$zhqo<yC0%S+=TWgARjOJry0)niNn2kvOK=;`^qeOmdIlSjXdDwg# zu1T#;JiFH%z=(E%jd;OslJ#(GjiK$EAm33CWXJ)q2Ah5+@YGLE3-5hk5yZG3y}Y6# zx*{$nmx8&|x|%5FM*o^B%)$keOU9-4W+10jj*oME!N@d5cbVC`KArK1HEn(>4@hsH zM{~dzr_Fo0nE7@_t)j3>qe0NKg@gpblMW#n{^j@lP$2~2Q=~?QT>{vE$(VNufa^0D zEKo`#zk%P{^*OB`HfEl@2vldxFV_+uAzO&6cs-(LQyBGN8-FDl;?mOIfKiZzv_j-?!r4UW4Yw9jNBZ6;hrS<@$7KM#4 ziicI4(15h9NFzZFU^2X_3&lO-sl7G{x6r!-pVWmHk6iXetNihA9S`p`^I8=6&VAJ3 zQhwCz!~jMSGXaV?joX^hUI9}i?~uy;WgD?fFk$DXC|qY?n`R}%QZ!5Z4T*h0FK?@ z$a9bk@IQh2J$wU+GanLK=C~}b)fD-CAfX&$4A4SA;@RC7j{rxF_6iF5UA6RtkimBa zIig(G2vv=HT~?`AyJmlraVk(*VQpA>4IjPW$@g-QE}5$KAIS`xbK=Z%nAqXP6>^dZ z8L+6BOFW+O7{==AUsM$5`#&UO{WTE!P1R``r#r&=c}i15ygSSKbj;(-sshLrkuRzd z{W`aw9)q$DN_U#7NBT*(us={}jH0ny)}gSudZ3e9E!;cY6LvEw1%FW3WD4? z8e}~I=yi#`jKwfmn@la-^zfOs?D-@)Zt%7f=M}no6e@WX0qmS+olI+h*UK?FEEQX2 zHT1wg>w2FysWVpVY;kPbxAab^H{HKfp@iQq-SFghaO5T^qt*+Tl2)S74_cqoopGpt zUcl+qg&!H&2J`x)_P_kszUoE-bXi8vl-`=aJooUtQS)|s0f;h~46if`U)=q>*=e1q z&6lpg!v=c`5UAcdU5zkd$)JlzF*p3pv(Y7EbA@&R5}ljjoUo*#z(4Sas?5x!aD5Ev$pfQDkSyO9w1nAnpO~M)~9LKfdIT@ z$ZGObGjS*JlNRMIC%*&m2F0|i0^}$ydO&82rdj)oSl@?0=W|hU-B<1E2g`>ge%Wrc7 zAHun9QxG~TW>zr*WOw)~L%Lg4H!74e>nMHVQOgA`q8ljBlc+}{4w8du)x{9LPvpZBM!!EJ5pW_Se1%zJ&E zLk^J^6jepG{i-09ShV1M#wLhfjSt6df-0_tc*QdL0H+}MRnJG=_NO8t|F~)#o}kTm^VOwN$2>uOvoj6-u4XE*0ik-0}e3lYPqm5y?jX=<3xc z3_ea908R{RbmE9*UG74dqsypd1eGyt5#OmFH>jwxl1wC$g%w(?*wJUy*~=575pc^< z?OS18b5lw&koYUlvnhj-@e}?e6XZ;k&U7*PwWad;+`hHERkDR*jr-NUYZK5=o2hO@ za%p;yH4?rwmVyhd6N1KG79vzCvQ^3TBbfmiI1WCtPM8Tf{Y3{9SNEijpD5i{0=2{Yb7bO zpy@}^)m^0@_P%mYY2rp>lMYr})X+Mbo;&S{6WEFVqVKcW^UC5DYjD%tto0seUjjcA zEfsTP+q;j(UF@rxW;BUJI5CnW!B%IspUC!=3>4 zjx^OQ1>Artf6QOH;sARQxM7JVe-oLhrnXF7KB3{r*jQm*E^j6y;uf=XK~FMRecALU zQ4@%M^-eHN!Kr-8Kajx~(*~*qC87?Is^RzRtN9t@`m}7XfC?O!*s{$`zvG*@7DjM! zBu$XLUh#j)Ei`U7xvV{84PM3$W5=wLu^rVXcsohFjb4rxzp`J5%jrd&MFWZ#5G?oD zo#`6LReV|1BEN@&kdmK1^v#vLr%k1J<@FHA66>Md%x)1c-*9mRVCyKeF6-rhHDEJ? z@j4Aw3{cE)*FZ7PLG1Wm-V5NpnQaQa*~MPP!EXB28M8NAM^T=bwY*+U{nfIS6-{12 zCDY#Jt3)ZR68~HM_0SX(K$364?$#O=&3CF^QLsU}Q%@!u0Ju3Pimg`bk;q|mLtqn$ z6g+AF6;P-I$FYXRF0G@v0DYm}ZjeyeI6-k*8>Mxb+Mtn({@+`=&n%q!9(gP+xH0

taD{dx0p!8TytD$D55%+=Sb3tku2Izr{#Oum@&f+q&}gs#UBN_dGw;Q|A8c3_gL+{&^7_f}Ms|nK<@I`R zL`P$ed;`-VdN3zrC?Vo0bmMY5A)xHM% zRM%>klv(bZ65}0z%oO$%-w&6HT_%~y8I%rQGA`>5j*ql~eyj6);_kEEHMZ^glY8%{ z>73kfUCdQ~6pZ#TdTGUboVqly>~?l-zS^DoZ6Jy$w0%=PYa!U4rbyChQJ4b^XDgeC z*pdvP!EJ6S`di7yZ5cYDkA3Rdc2%Ieb_{ zaQ8dNlkl|Otqnu>@SXyaRd)CbL~Y18H!A;$yE+yijPW<66xsN6)r_B-lSl}f$5L#J zc}BP93Y?`E1CY#q#}7E~k#K~2PE$=?e)aC5tKu!McC^m@c1^Y=5*WJdn?MPwLXsu4 zGSoK3GrT3m!nto&qcZ0bbbZ@j&+7FE@5kl~dlF_l(}1Xu!u7{-3E)yrbFztkY#<>| z7-ht0?_a#AT=&h)=Q%CDiV2vp{>y2;v{zqcR}}8PLF@A(w2BqDsea&)=rQkCmaAi; zGrNDqoV+{##?$P_74X+FjEwn*Dk%uVm}^PkIl&Goz3T?;F3)tDP=WIe1J;oGz$ zZV`CSqZZcQKTDoLWwExP>z}J zn-T^j51OZ|&CwV^*Hj~fIfQ_2LNz)d4S?fpsUsvhw-Q3i*jO>DHnCo^`)!&W6(+5tC|8DQ(-)H1=)DH{m1a4i$@uouG|SW ztgQXG2~3WxQz5bzTrzaejTkjxkyPe6C#O>6KvT_2Kh(x9k0-mHZDNQ!DbK9+G5X3F zx@R-O5CF5MG?-1qVf#Gfp4&VL&l1Lz& z)v>BU|E)pNQWH<#eXaWr*|3v08!=ty@ipv*hS^eUQ<({Exk4kok)Kqiiau4l-xh} zCkTkoM(o;^XO>==@R&^-NP5uH8yM5eEE_~_Zh>9tUqdqK3Htw_N@k+OmdsfTyK!{~ zuV{lr2w{#ZP3B;iFJ5+eGCf^V^5@F3TdhHzI!%kJaQgS)4Zt;q?lx&+GK0=#A0BVl+raG2xH&_>13=1uN+3XGDoZf_R5{tv?ugQW`IB7As zXG9W|_`R2dFG6g3Sorj#;yqR0arL-CRrt(vHa!92bvfLX6 z{jE!81tYzf*A2ZHo7@BnEt+?Eio{XRck}{Bd5NerOM|1k{w)~%TeSF(z;M?~W?S_b zXiur?T8`fWK=t9#eFURbd#7*<&KF?R*sc~nvR8TGfQT~QZX6LAr8NR7 zK&?>C(W)b78E^ZE$R)^mj9x4o4N<}5#HAnyfLpe0F6YGvwh4I&)>l=O6&?eyMgzv_ zrh836vuB_X8PSw-SBth@2IUT5k#?#$^D*HwI!PL01M|6nseTH>+8?(Ck~@E~i(A!b zsO~QnKoD6K%Hj;t9#KrMgO&cVPx(gfe>`S(2xv!p5C7E8+y^RlJ8NSEcN8#(0zUv~0{&{5Oi%5aUfsvUO ztB{}YWAQ8%92|h9As4Bb38$|s%B8#gRi^TpiWKjO=r|=QACW6J)KXk z2-E5EV+f@85@brko09oxI*_-X(+lQh7^(l&dJ}q?plD`hb`bHz#)WC3E_m(hzeN`^ zv6pxurvN*IHHX*_lA9T$>r8sWOuADUV->i^mr3_63n~GS7UPKR!j*NedC!cWA-ml5 zNE4HA2A7Bf)7Mi_We2KZP~ZsbAa!w*+XAseVtI>ZNVDa{;q&}6i^fC!fC7b|Nt!1i zt`WhW{qh{qX6C)>?i^DY9Z$EgDv${n~gEXS$BZ&AHhLaFCqx!cihOu=9o*m8ofGzb8{959|TwQxdL zAT&1{SFOScP{M63kUQGGh}+d>4qn95vbH+i@4%Sj)4s19;-mgF%=*4ZfF8MSk=9dl zITk^@m;C)P^Wpb4ztl0S{|ngl#dbBodnpI6({Oao>wt0{z_ozpvTjoL!(y7l#hP{+VAHXW zw^;wtF##Ph45W^qqTXW4xp2f-gp+=}$V}cV>1+0NqR9Q}pExU6rd?r#m6nlxQSYQq zn6^@c_|fccd5x9W@-wjqcXpZfKNiy33maN)!I=)^&4w}iWn!s}lttTc;|b%he2+@6 zXSlB@<*_~^>`S}Z#kDw)=SbsexL>VA%(jX&^xxU6e>GqtyW9`CD#oVi9yxB)=0(5s zEqQ*vKJI4WKX=~ouTn3$v|B*!kzyKve%9QnYd?IY2@om~N>=N!%Fa1RH6m~HRRYYp zFZXyfJ{tDT63!MzJyc@*@)!=SQ))xvQ(ELZB-!A6;pyp+YuWaPBbyo4>!`44xXKF8 z7pZSKjV_wHc&FqpxbJi(V9QyKi0lLCq$KexR5BHqQJ0amMrEL^IALdG_NVUTkRggy zaf08&;)!}zo+*gWf3AyzR%$lE6M@GyH5^a0f}8t15_MzH8$YZYf%6!In%06o=Ua5F zDZn=>8Y#|sHJGHv^hiYpQU*0a&4lb8nF*$q6_LCr#}nq;?*e4G^0nw_W5+GAP6k5`RjskCm5E9O^gx^Qv8Y9Fq=pr`6(52Mc%@y06rSVjV@APBIt9x3oTn!S@un}ms zMS4^bWl9&O-R>peeR!EgLH#^rgI`7ar%N3=({8toVLF3`I>fwoSy&w+hdir%o~ zUAMU?dO+AFO`}}gL(C-vv_-52^YiWD1#Hw<$#tR_1u%b66$bE z7vlFwweI8(J&ODjQ0l17E-#d?lKah6y!`|^53wKI4I9U(qEukLul(xZUR4R~xqlnA ze?pZ1bD^!j>rE$Ju<1tV-v6O7v>fXL9=^78`71jkNaDJf!XK_D?zfi(HF-@O?5lqE zF>NCCW>apI?)V9q$BdyYku!W`*>G7OdSqs75%l!4UY40#+%~>oJajoZ>%@5JZV=wG zx}*pU!lU!N(vW-}U|pZ^pft1BYw9lYA!d#p>OqKaYtr`0c`xp10XeQ5`@V)C??&5y zr0SI#Cf#LOMl)J+|7}c`8AxkSNG7hlu%^CliT3(OQjlP~xlk8-dyB>%p-|GABg-}19LKE&{g3OmnO3QhZ3nQunN1b@JQkv-1T>?mC#7fZ_F=LlwE!ybR01tiy-4N&-$vK{sRP=L zUoj3JkjdNXdB|Ef*qq!6kj|K34)LKQ5-A27NH$lj?wrSDY^MuY02`z>f!$5L%i zXc*(!bi5%d*DQJ0U~;HAzwv3bHdGG{^} zhV8reel6J7YFc-D?hvjMb`zSiXgMtDu`+o*S*@V*&TF@-Y9q$$pD|9bo1v0gS|0Wo^DKuScd7BJ+;cPU+8OaKlT$-%U{2+V*eWoL zhAXq1I^v#%w2woO5xyUZLYyOOAK#)Qojou{}cS_?5vg{?TWa;x^W(#%U48A;s{! zMMf~Zg;Qu344MXy=eniAWjVtY?A70V)8}i=P$4Tcuc_p9L0qNL27z7;#TXGR-T-h}|8tO(lv){OQ@(cY%yFt+_CVAWKa zFH@6sQMq|2#RODCrJOnQS8(9Z?vHOk5)@6D*@Vai8xqxg>2)9Q`~XNzP@0HLHdI0z z#!$@Z2&xrd(<5cOZ9=#(=D86QGgHoB1$#Z3e(>k>EEZS;MO-BpbxVe0D1h&l}-5-zw{x=@W+Z2|qXQGA{q-t^a)!DqMLG{A%g~M>O~t74#&0 zNLbDPHb+eAEcJSimhy@10r0X`Pj6!w!K!zdC7t9`#!g*AVS)>t8DpK}*ZNGm#rKMg z*ytzi$lq=9Y~C--(oiO6rATd4`}_e&GY()422hjPbi?-y9Rm$XlvI4ZOQ z97yyK$Tpoixb3NFEKNLqo7Sq@6WC~4sM1K6;3jXTv^l4$b!l#Pk;WzS0Cpd6uu#_o z6v8ci5|cO7xa>xjnjwuZtJg5n-9g?Zc))*d4@I;;2@Hv3?!2P)Wj*q4_d5>VX(?KD zoZh#-sOLCUf^2EpAVQ>Z5>-uwy5yYc#k|st=sNqVGjB=So+HDxRQ@2$k1rA1ipFBo zBw)##zoKPNfMB5>*_>Y{{C-`b#9xb#%8 zuc#!YP<2Ww1!H||V4+s+xL0w_5|R3$vRYdWd&XmZ&rg7W|J7={_JH}kgF^wWAniGq zDOOE{{4z1awSN8tF}4RmYH^YwuHC3{b7dl7LIrduaUqX)jHS3|gji;;9_rZbmZ0+V zNrJ>)RQOegOldWnDo+#Ui|Yjg?{wY!jg3xvQ*+ia>5F`BQVcsfKbLPr7Q?HOt-hs* zVjB|)ie)V854a}&SI67`SKs~mgR@^Pp4Hsqp*x0;-m%StTXIBwzqSm33m&dubGXqy zDjYFdLj0=7y=A@LG@vF^Jm-CDmMGYlWoJzU5hvpp- zw*S>0IkU^c)4U9H*LR2*J@i|_zALp~*7E_7G;87#GTB{8z?hKr6cri@!~T%KIx_eb z2i?RPaBvM5rV)woUEDVLL9iQKsy^YxLsO|fJoCJ>SetkE{$u3B z2eL9R9eLqG*DY9Irmr7-?@8#djpKIcyS`A z?anaYxQY1yFH6tdGL~A#n$eZ3i@68>!4m$vA^i&*E26C{(8qmN0Iql&_bcqzQg#XO zI-EHqtpf&WTw6i9y2nvBhfeeNs1AlN%Gb+H5L`k(L3-suI*%?xCF->>s!X-c%xa94 zW^KXFwBLTe{&F&w%Q~R6a8ctz{S@_x-YWv8+ zxhxx*O^mdHGKbE{s@ysL!7=tu8}p!;6&$h~EP-i_42oqqNg#rlmVQSO-epZ&37rhI z++sizo?Y6{?rQl}hvja%@bfq+q+cM;sp9p&Ac_As1osEx`!0Io#U9rJZXTvj^!y+| zP1pkd1@_fL?kn?$3=)!b*72QPyewG&JJFWE%A^R%#ZcR(B}NK zj@thPXF5wXLON+d^Th-|C#x;DS^cm@J%%isOeFK^&#Sv9$g4%S_c5OydH6! zum{od)-wBl#=0#>NDO*4K7)=)+`g@NVVboU4f8rZ*Wad3-v4VWpAgVgO~H7KaUDP* zt)pJGJm4+q-alta{@h$BT$({gr_@Bgu~odE%QZF_f-x1Vt^2_Tb=AI6_W+dX-|v=M zPIU>OZX71!C766)HOXut|7R!s2u!im0LN3H{cE!+E@+KKa(_4Qxg~ zTh~Typ6>QyuY8(X<;P5=?~&GMiN!p4BM%7jD=o=0|8D{Dy@{4~&rx|!uQmK?0~T=R zC+pTh&Myf>ZQF9emM5_cy*ep5`UQ>?#95&?GVlUEak= zoma$MCRYNW!Uk{weMOso=>nPCh|`NmJ|IFhl76Q>+wxuCu#KX1D}5c{Vz?VnkiOM7KR`98Z>o+Eb7 zgNZ!bulA6iBd7UEf#B3hF_xqIiExgn4S_{{%h<6gINdcq-OOIf$gqN4_2bkJgUgjY zi%}KulJ}-wPj+lM?Uqu}-#k)hbD=c(798w~4}{Fb2>Ukm$F?VPKTz=Q9t3Ui{H{FV zL6aK|g*~Z}T&PhofgJ3RX<1HDKP+`jgm zU*w-p%ir8UhJc(t^t-n1G0KgmJ<+=L$E&VL0Fyt-U%W->zi<8}F$zW~gs+%j`004n ztxIjoEquAopWqU!)48Q5jx6UE^_ovfV2Vp0W4^ux5FC>h+7NXa+b;Gu2^ZGwSM0yq zPK?gvj(8>hM!lBm-JSZ%^q4XvI~H#Yczi(91F4qm1q92C)A!XDR!X3K5U~k}?aSnZ zGTd%5lO5U+F`jW+gK)N39TeIHku7fXW~yT9n4Ce3H6lyDqkS;%TkHP;URyt)>;ITj z?Ph^3UpBqj-zMlUxsC7B0zGLuVY};(839+~hjtbK<^;5%LkBIZB|V>C!!yuVL3|64 z=5=74uue5zK@J`7KNUwV;`g`#;fp7};o0*)arR70>@7nK+lcYD)7p!W$4{r3(k4uv zg9ChX>gOsyo_d>RBY}Bkqb(kji?-LMp87pC@#%XQWaCPZVW07>w$mx3{l`4oB>4hn z3E0xkgFqzicRE1E6Pc&gpw@Osq;^kE+$@P(AU3GBNcxCd6ir3E4_pmnV4kpag9gqI zUH_Xd=jgO+Vxl>;87)#l{X2xyek{Odcm{PPA{YK29MAV=fts36LoUUjm5CIHYpGHkLL-9^IWCHx9m zy+?xF2>gDp_nf}8M z`5c|=3k);Q5zb%CQEDULOwdohbQ%Rwf=1;W*L}jwJ}dkQ8LHG_j$#z)4u+K!@qD_A z%W=Fc_DanVWELOX)%$6rhHGS}6{T`vKg6(Em9qP=Z+7fMX8m!^UlFQiPazq7k}XSO z0-hLt0%Zl@rc-=^&NfYF2_lm{jflrFVpHbaxAuUBzPO6@~V( z6@6dH(*JYh#AoSl3HM%+4ljUTF*HIlPh)~PqT|PvF)3jv+w5{~ly+BZa+r$Lsqla< zEh|eG#-J@P?2>#QYCz9_aEAVn08L(@!By*1}C zDaKQQLy{zxWXtI~358t#y0a6+5am=HrD`&5?6o^|ZoFt)5SgBdg9`E<_r`CZp@JC<@djqzWHrb9oHj6W2hzGIfO zm#}uw3M_{gyUtnAo9E27NQSmxAc3}hB+VvAPwsj7PsgW9LX@K(ih8489`cKmY?fql znP9chkh0gZ*IBRULTpA@en@}iw%=qGK$SRGLJf}_zsvy01mTCMa{vAqN=6bfDM}g% zJ=M${=inx3Qa8-I0A)pfn8xUi@_x7bSb;JuywF7x(!0NVGu})VE{zuKs`A7yqqL z|LgnFW|K2lXRdVgLGuw-q(0BMpUOH&0k%*iHkGpwx`dC=&CfXe5+_TD3EX} z>Q*p>dflY@L;W&kK7CA4y)`Z8xpysiIPuKs07&TkXY7&vZz09pu${FfQVu`au}mzu z^Wp~C!ZD&{)dB5&mJOU)5^Eb?%nPZ7BsVul>)OWe&^$mDVX#MI1Qg1j&7>pLJ`ZV) zM+9uB#_e03sL>(^;6t3=lowdxr;>2>ECu;73D4D(u>YA%{=c*AuV7gfgwe?vmwvDB>O34tL1m!<@&6Ejlc2{o0@ZUpXf+Sb5ey&?fvMVh)A>yN(itD65 z!}a{$MK0DjzhXAUizxiLRM8xv>-SD;rtQ1j&c8%hQy)Eg^Uj%g2c#>naoIge`&+DL zpt{kv4!=k2#t{nLo27HWVye>)b;D3^IxR_i<||fop3qL3b88>9$&B6k1ogS_(QP$wK zgs6)deuUCAQbUe+1jVmg^Ri8FS%>ls>ZBVo;uo$@1cYW$-g`s*r#;ibAAPCf+F!c5 zC71ZXOco78?F~NZRhT8gjwQjMgAOKkoAcc{Ee+LKeTpGClaPu!M1k~+)}Xn~67!J# z2cLzkHnN8LiZG(>MDxtyVGXQtiGSE=PPO>}uOH3=>&y}z$OrkERB7v!FK_9cr=Ng^ zIxfxT4!?G@gnA;k=cn!zZu;k$e{7grf0&?9up-S34a^TrO6hv?CjQ*;Qb}qYd(Bc} zqPXst+^3m47dJZ`R7A15<#i#u9kTzrUO4>v5ffx$q-5gKC-Wk)TKok4G7UpF?j)s# z#&`?7{h%mL)Or>mg;!JyKm(M5b_I}JK-Fd&9#&Nm%66pQnl?nDM}clzG@apXedGyS zEm17#Wm^ck=x(%330%+M(5tDhf!Goc+m zs{ry;;r5<;5#6TApj)fhIu&8S2T{{5owr`Wgts?6Coey@fQk^{clo79v7?oKaCy5W z5!B|d*DZy%&fW&PT&}DAWNQT1a!OmO!kn_>{FnmClhsY03ZLo8y(XlD)&bp24BuKY z%eqmg)#zzk?D+cl^B0z8&;akthGc2kNr4GyhW|>9E_35WAXYh{FOlY-E z6=Kf35T=bn`V%%aMW!>~)H?60xuvl+;J%XNK&|PG@b*WzWEMx#Gw~sVpX!bm>jh9~ zXxo4+WL5Ci%1m=KsIxIT(NESnY&L}#xA?D1oh+TbWd@Esb^=w$C$59~JQMpIv!UYV z*5Z^YsHUq}v}hW*|4cW@69Y8Yp{cq7M;8EA?Im*xO*{_*1$Qhn3q0kMZzaPt$!v*K z#_&6~kWc_>`+@hJ_?LL`>jLc($|lznEql1ROtP=Lo%8u2(kAlQZ*lv9P8WUW#M!oq zEur|FmVu701VHhS#+E|S<=^Rm)?zFo(~{{LS-+C5y_ zGx-PWx}BN0-%#R^(eC?GK0@r?(~O}JmleYIa&{rq@Qa+#?IivHR0SZlsDJ5hz5fy4 z-HT^Co2*Vl;Ie&H!mF>3zCI!aIqNsoaisN|tRZnMN9}0@|E4kiPTti;b+CITh~xvzaoowzjQc_5U}6kd)i! zZqvFwDQbNtcOVwBxG6jRHTCLZ@hK0r=Kdw@+Fhk;1rzf+s^R^Jey}3tTQtCXSq6Ie zU~2EpqvT;H<3kz%pp?KLkPs~!xU;@MwNBj+ckILwK*3V|V@$>H#4^&S27$p+cafzN z^Gh&C%}4yX2Gs?fnub!lNV1mzJnQ(=DlbvdGSIiiqpuS7k3 z*Tm;v0fL1SP-$dQo}{2*wvKGAOvd1@rgm%C|RgK{|Pw4@7)7NE*5xkKC+DG^8 zuD4<2Nvrw=S|Q^c@Wdj{cS^y;-FEe^h&eVbf?9!*mf_;HilX+r6j}$S)~t3piD@i_PKqm#Ci;Ap|(n z(zSTPv3QKtIKS1E0RWB;pavFg>a!{88Ft-1o>5p`Pk&cJ&pF5k_w#xDvh9-fR^HF9 zj*>rM?VL-SPv2v7CGvdI83wssm9!W9sKreT2@W*g*4xcuLHG0nHaUR31V9KqOR1D5 zZvuNq1NHR$AI-(B0?+zW!)&nT(tV0v{3CG3Yx-L=3yH>WnC`Y*3K+jT?0%?9Hq!kDZcl#)hxx5q5xsSK9@~!8N@)t|M_3;yJNmd#Y z1=jQGqV5^)Bx#{rwH1K7O3wZ0q(z@s(04|apEWl@f|x$5XJ4m|Y&X%7AP)tL za$~zMz|1WA$j-!?yqzy1u=;N1ovj(#j2^T`htZlor;yso|9v=2A_ECpEmew$(WzK8 zR!d)91*et$CC73XoD8m#(DEtkjbg-WaK1jC=-rl$J3}W5l>IX`3p#;6ZKZEVxyIX`-r(8i|9(=LrUJ`t`<79el`>$bZ_ST>nO zOKM=*WG+;-n|VOC3?<;4cdX5-aR4j47y;G13s z|K4qvM82j&g4a;YACdUuw8CP|fjQ%k(NJo_1mG*uoJQW9a)SXhhMk?4%#dA*+hKU) z%rv;{V^XDPKtlOhsASqwrIttFp<12p zxwItJa}9Z3xPJ_*I5pT(v{y)>hmPr-ZLBWs#(hof9S_P9)7pfDgj*Ir=^9_w8NU`@ zyF?Sj!+q^ODGWSV|Nc}8xA(*eT9h87Y*u61?-OHBuqk+1U=aP)cnfQub)vXXNP9#t z0s({2Gt;-0!bo%AQj9cdYbi54Fl=mdrUptl&uA~?S0IFXhd2f)^Eg+EBmK{Q@_??E z3J#sy2Wa_#eq%@}*GfMqmPJCbNk9TJH8YLWpaC%w@yUkJRZkzdl>~@M>ptQQw;S6Jd6R{ z2i-j}hwEZBE|SFxt4AD(rxIL1eqhS;)H)ZmC*=!%g5bGKehqLLdyQ+lx|kiXe!AC} z4R^Zs*~bSy@tO#C7kg_ME*m*0^AJX>YjlpN_IzOzyfhCxUP7DwS9laZMSXXvoMuxxYKAUbj3R*WC^e> z_w;C6e!^dDv67-~?)hl3!D#%t^eb(j7k(SV`5PB6G+zbrUsHMZ(_ByMJUe#N&hFEd zsKG6nAe{ou@wTAYxn@MhgD*~)$h#u?s=^~m&e)LU@*{HNS)+B~c(CVw`hj&B*GuNL z;mbnU61}?sZ9qog)Y#~ZUtI&VIA=a2srhIB`k~g~xnA7znXw}B)EKwf(H+zT3NV9D z;2+*`L?rRAu5oxWkT8D1`_6pY?F#4$C+J~l@bc))Vs3!+y@j8|dR8|E**88?JkSOD z8x4`v*azwdrLxwdp&z&AaLZd2o}^+kr9P0+TC^a`C;SWN(Y{Ej*)HVf=a!CiEd?z5 zmm8HRV7&aaJ?tNf(A$UhWp?hbd(M=DT)lbb(ha(CUC^JX;fSATI#ZSR#gAt9>-?@9ES)%p86+$*X-25AwR))y?tm%A$2?qOZWNfzP zUQ42ibdsW@C*PPN*-Nng9J3+j50l&eo1;Tv`il>yxfLFbV*mX0D17r5>!7arCo+v6 z^084m<+&HJ#h?C-l4B0IEqZ%>Oky;4OGBN{aspWP$>h4V!IDc$PRZegkP^gfO55`E z$=V(M6$>8`=p{4{b+Y71$GZy)0J}z8W$(D2w7xDl^ug}>OiNDKNU_$3pvO*^v@KUD zed*3CTnZ!WD^Cxtp1b9?NcFf$ z*@DfwRfO;Nr*-Vjks=!3>QnvdwSHTex9#ruhpzau1Zw80dgPeiYOPS@SbT)cOFb@w z+cJC2y>B`aTOJbDB?zV0w29%rBz$YZjL9eb!-~QB2AhC$@cK*uc4zc^+QL8P#M%(9 zJmxX3QxWZj*}GF#YDQ4+G6SBO`8in^isJiqxGQtL=_kk@XXXSop`1pF?R4L3N1D)W z0V=tw5+nB72&+BUJC=VL0!4@;%UXO<*a;-b_^eVyReM*MM|$d!oGv;IJu+DUyYeZY zE^+)O;kL;9^m;CTjs;AsH7sh1?|=Xr%u2Wls!t0zwN508{Llvoxn^U?xgN?TFn)IX z09X^e*)~ClVX9$6XW$c*>;$Mc5b+tWqirM$4T+Y!%n#DUVf;3WQB`^P+o*xx*hA~N z&P*)tFQ4&hjgiIIpWT8GSE`&aIX1VqEHn4`Q`*H6cRT~qb}Efjh8Mz&WP=uuD({X8 ztowc9Y4-4~Q+cowSgA3{8t~%_!+7y6Oz*%H|^zC23#DGOl2S;f0{yAZl)+Eh4j7QOhCXHHT}G`1L39`t(dV=8M8Ef;~QS z2J7f_dy9(QjflAgLv18s+ZV}yu8vG>H){>=bcCE;{<{Twm0cg^xv^5SYA!G!Q%jki z(TxfON?A%)jDRW@C?PhUfLOPGTa68Xuq<6n{8*CRAOFz3nVbhAh!6ULp|=38+D`M**r$SywcH7j zQBj&prwl(O-e?58HJ!HPGOA6PRXR9#G5OrWp zAXdj(7JA)IcafzGs?-9*GI4X3C#g?mz_tpuZFJ@v~;XJ zy)lOh&u@iaq-`O=hAKR2(8{}qejOkuh?TzE3Av8xt+O+@xG`F#=Vlrn9=^4JICtfD z58>mbJ$swV&xpv+S)`(U_#&lTo^e~|JhApQ_T9NSDZz(ys$)#6BjSDQD{tHt&RKNd zn1^rl9@!czN}@{ZXP~fZpAu#Eb%)@m>fUS}L2qRe80m!9tQIV*CCXakKiOTtzFjJG z*BaHn))q=E3tFFULNo=MPY08`A}DIhTzal`o5P+poHV0}fQb zLSiZq$@ia0<}{+13x557px|_N9p{J6tM&kMESC9+g|3pOyx~K^hiskH>W(oLD4(QF z5E+Ib%D8)g;1?2#uAk5MD5%(J&-#M=5_|R^OP0H z=fldZAAWLjt+T~DkAYK?Ui$>C3nm|Y`BKU!dRY7EgA$_%jP_tJz#$$S zF?-t%GXChAac8R##x7v*ZB5|!?c;6ML%BK02@|w7j87Xcua6i0lBxfPwSSPo`@6dq z{Zlggz`L1gS=b2jq3Nv-A#$G>d68U(i7(`bx9i+bki>Q9M=8#{_u&+DZdeDOZ~X3S zi6pg%`jr5Htd=vjm#&jq5y-Yb!xjyk4iLn3VW5|>0Ux&VP!nIQ#-4su_n7fIC_+9l zqzylRd=kDXYZs71<7;^d+509Mvgk;8+r?snFS8&76QziG=q3a6_-nC<2c14$^Ru{* z`HXxY-gX_0Z*@yzPVL+R|@cL~kVkGeDLC#pfSv$bHAu9TXfl zrt^536Uej<8#LBC<9MrMV^h|TDigE~!d{jUax&zv7Vu5EuO8S8P2$ch4nogw!9m#z zLE_-m*Q}}i1~oPb6SE;ByYmg0o0-)OAQ$!3p;~3)KV*opA<$Ft9FGh5;&|b} zVm1xtUK_?v1%*i(?eaC=oNd4ERb6jA zXT#5-UuC%==zvoBJ=R1?oDZ@YQG146AeNurWzpy!0FFKqFg6qHgh2ZDpATie&#aC5dbsolL+V7u*bD7Y zc#0!WN2P%0@t+q$re$4%jX`0~p|cxNOMVERq1&Wk?NI*kChO@xNcI!&IGwpovJ_Ra zp{+%)wYm<{n;1Uz%w6HdLEpw21KFFb#wC2$X5xMhxw1w+4-i}4mfgpBFd1GpRA%LC zSldy)RXdah$$2Ttq^+a7Yrdp$PP%@Lt?QNP59PnOw!_(3RX+Ak#%kvaY6mDOuFRbO z6%S)g&+x&vzxVVXzdn^*3j$`J=^2IA`XYd+oe{C@3G-y6{$Z!`wIv+26^tU8KR1}) zm_u>qmgn{rvmCd7mwddKhekhfr31jEHfmDvcqp;>uba9=Veh!1G$hOpHRyM5BaF=n z6m1R{)Pz)p^bclivVONICwT2gbX^HH0nN~VDh+Ro?4@6ccvpCj7aRxT-O0yK14N_g z9C;4`{6RL;`iKOKX50s+g3S*P!_W78VimveQ-Uw}+8e5|g%E(ga)h-=uoEKvR)D-F zbDZ>a)SJOu(aP%{@Zuqs;p!Wh)ApO*5q04YrGmmSrMHKZx9zOvT=zeot`uEt_D|~X zXTB~(fqLz>ErZdT0WnuSpm(8w_>Wccpk3ry1^5RZ1E%A%HEm(TfZ6sRTTfPj07D1w zu+T4dw;g!p&9m0zLMlcsWPEG!E*u<);}kZIw*^D@juwR5_oMLTcY&jF8?{frIz=nw z;JU=+k+3DZwUzT!j}(eVrFhQLYJuUesvR}_Qy<>EgXu8Tb}83GUwCv8LcceblmFj zMFz+h8y=)?p?0@E6Fs(i?U#ZHJ7c_wk(A?DzqN1f zYU8V@hzbAp{#Z|M01U#OTUtl%1{^buB;ep@(DS*C<{W53Z)bhkx5%H~!& z(hNGhGaH^ol`)}_j{P)Yt&u)t(Xh>S+&NXG)~OGBxM`SKUUHa)z6Sh?8@mt8 zPWydx0yu}Z0autzrb6fXvtl}V(^3<=V39EHwrTjDPqlF1c)i7v!JyXC>VA+_rg8b{ z=Y}Qvkg?^?Og*!9iYyO-maA+g5cuGYJVu_?1xy!cDZ2Fq$ffm%nZWY=N=)%v%$%;a zU9y}8YN5F|F&G{F@#kQFAg;0+W-z@!aPT+|aJg~t55cTZ(8@&HSbGgQAioNrLST!Hj$C|Wo zIwa%`-I#^DHvbgvHXea6!A!yAd?-Lob>FH_wB2g&J0~asz}_gpQ6gq+&UW`w76eMK z@2I3mdjm$Hw(#x>jLx=YYo~T{@lX|o80@WgFfx=cFegSmGQ%}I*8WPYB1I&H$!Tcx_pbQ0`7zOZ1bV@iF zR$pDds4UcLG_@2RsmuUV1^4H4L{J2BmQhSIyNz2+% zW)I|0m5^P=m0S51h=TL-5_@SF6ph@n%Us-j^Wf!t!DW4}@Y-EAa9Ib3EAO_uK|bG4 z+x`doI8eo10i?H?SY`pYYAe9-hcItV6QeWA7;hh0IVI_yq`2HqSJBnZTnw?*vRV_C5Ib{K(Cyi8dC>DvSKk+=EHz}9%2fxpLsnwvAUm-(s2l{Uz+~) zMA-Gd1CJyE+mX&jY{j9Ysh%!yM{-4dBl&xD=vUP&@8*0s(4_T6F4DxfUDCa&<4%jK9a)w&il?nbsCt0kTYw8i8kjB``^XaVpPb zzTUdW7JaOLASjNy`39pBWlY={9B_V4np*^VBh*tvcQMv8Cl#iTH|`V?n1#G2gv?tF zk5|?$V`d;>i@&Q66@{-JZ$xncrw21JD^66S>qrdrhvUhr0)x-}(TbTixXl2OqC5t-}P}3qSC>BYxKpJ?NMs!P9`U`r# z<`g`8Lua&iIl3Of>QcgffdDfE-2(PTP0$AU+K6OXQCllu^R}vn4SxVD1CtLH9V7hd z*W{r$YJZ&aZtSFl+l#WXsA*L#881ptv}I4TZCdkpkc8pg#7DxjTAEaP&gxW|H9YP3)ZfATa5~@L&hO zs|&QP8($u|Rqjiw-GNs`-`r9BCQx59K0NZZ7MpKTu=*Z+Hlh4t%fe;->A)8{c?Cv0X_qqe`@CQ}9PW*FA5e1GXQ2Sv$el zGH}Fl&abVm?cvLB%{oNSqRl?pX&SZgUCBhU3x+ifv7GHs_Is~adzhf@HoN7sQrR)2 z4|-Ug=EhVF*J2yg-274mOSIvz9<-{;jx@|TrhWtcpPP&2l=dFJdm{=Db^hHwBmuc0`AEWooj!bZZ!u!q|)c^Ho(Y#(vW2M}^&O?Ai zqnEPgJ{)-PA{euW5Wz6f3&o=*ZYelZ{*i|&iT+9pH~^KhGe$)v#$L;O0Xk&;t}g5a z6DRV5P%+xhF06YD*45bQ$G3Q<0m{@PlFt;K$xV&!pRXiTE2|^CVkDY>dpC96X~5_r zYI%HKLJol-_Nv_Q?bq1Qfv3hJZuL@4tdFnhr8t`{nDu{X?8+H?piY&o_fAw7oO$nl zH^IW`UW)w7!cO@Q0i#%Cg@V0^lZEKb?c(}CNOwaP>dR5=aoscll^FTo4BKaDW@ZR zGRxh}{~=ySeZ9|>hl!yJP3{uM(>a5FPIJtfxyX)CfuczC$8QZOLTzzLUt{FBFFyXt zBXAs~jNBcs18vALg!d;#4#py+nqHnGzB+69>CU0#Q&y7US)IP;YZlL~C=GZ7VSQdk zcLWdhhdYE9)nR)-8rC?k499Y=hMkHE;7{kovd28xB91E3Rt>m5Y`4OgXkdAcZet{deA!_MhCzA zHFj^G{Ox`6Yma!>Ivj_tn>q>^`jT}D>@2)t z)39~v_LtJq?wCmmg|eZ`Q0iHN$yK-QF9OY`83k4*(|d3koiN?dqO(D)?REbT`OvM= z0DJZCis512y^8^?WxYD2V;$4?1u=xk@@jD#c#lL@~n#ok-U|5X(mSg zjt=^4FO%jpN`5k4)8621r?y2&GB=c|0b?g)j5rRn;v?m+AMvI=;?;k!FJdQZJvaH> zaKW7NX$@C_^$f1yhlN>B1L&3YD{X$UD>tT-;DWNn;T}BtNJbm1*`d%>S1~c;Ncw}t zkr7`4f~cxJyFemv0#}S{Z~kdy@@>=;UpK(B-FkdxHcHR5s?~4tNM?X)FAOL?^O(v7 z3%}95(@(=c&i)?JSYJKR8j-njGTTWnbp%*bjAmpn&SI`tUnh`S^kv*6#!ts3k&qtj zRP7sN3IFJM7*Tt8lSyA%$P6C8N~Kag9(t)`Yln{EV4y96HO@R&0UPnDN_mqSNcjE! z{@3d(2RH{*{-n!oOk6mAxAp6jP-LHT$y|WwkB4{0FC;Bp)xYcJ!U6^?cWvb_i5Nk; zQ!Mas)5p3@bqhH}yUS-gv1^chk@JallU;H-N_(ZNj$YeQ+EKSCjlGB+z_VIgDi>$w zLJT9)a`f+VJ`vjS+i3VQD=wF{ZQX^eInRE~r75JcS4br?-0*_dT0|1Xc(jyimQlSz z3B1qfF~Yw(5b)HZml)zGKHP&peww$!xW<3hWZFnx>^nb~bbNgLLIXe4G)(Hmbh*{- zEjk``-l;YO96u@0BctvT5f-LPc=bGK=3#4ZymGzhPJg1+o7btU3G2jb1EAoxME4@fL1;up#|U z)OG2GzIos~Z2bg_q7_P*30cg?t-NX_|6ac1d%5Z|-Y@{zCKvbsh;1P6?5}m7Yr8Ua z0_6EdE42F$WvY-gZf?qK&vL$u2+da#TxY{tD~r?r_hLQb9lf=WzH5xfRVVlSSsrLT zkNK&SE%P$*RKYFUwH{qTV+X~iY;hZ(`MM1D{c3~y81eOC=w=)FQAKe;L+wS*J$q>e@Tr9HgcVb?##YG+T~O7t|> zfdx)4^5yV;BL3-Gw(J!Yq=^+UR?OkFp25EdvFDBLuWZ#!u$BDEm!FC_U$KC)AJ*t~ zW3J2s?Cq|1TIQLa5<0+`(^;wbYXF*%3imUSDjgzi)o;~B^hn_!Bk29MpSM>Mw8pPE zvYION@BSG%!Jy8Kv^^O4eG94XHLqqZ+7jNZs%0FB7O*#%&Wsr{5p=d!UOzEo_yO&n z7T$9lcYo#1xx3~hv;T2x{q>{G)C<>cD~$2ymKn^)yqD_9aW!dH3_aPNt3%7ix=OP* zUSyrB{^TK@Ys!$jkz*#QZrK`*-#GIJq7_zrtA6_h_6XE8K=JM}3+?>{MVV>{3wjAc zu^QjEcMM*r0PWM08@T75`qn)){pcxrO0Mht6M>M35BqPxlV_P4TGbNQ_vPs{UPsau zq23p5oH*M*as0`mWnbDr4MXa-p^EftSDhG&H5;C=)-J~miLL#g-@5!>o=6v&>k}=C z{u(Qj_L8;}W7o1JuXSpLFw~{`??eSO{tym~SP;#&;!l28H;T<%?cjG_2>Ufy8sYc& zrE|8!J;ObZA1wozCu$=A9vn+xtsfFivRgP6WyCyW~4< z^BPZyeMh%wEk1_#|612gVKmn2$a zt6eLoHQqqzn?Eus{mrv*r>;6oPqmt$&)Fu&w*4IzfynsZUJq1w*Uo;@%%Yj>8r600 z8l8t8DF%QSwc=|QaUR#YjACEBMJvF{F88e`SrAxLFU;*N5|wi}MY;Xvn$!BJmfjQ?QatAdT9uo@t@(JRKgLq&lam4j;h>*;oG*&9=S6jt zmt}`HbMV8XBl~&c@)^lAH4tprj@OiNE&B~6301>r|CWr^4XElPMhuvoRYF4&dh?1| zXpeeI@{-#@ke#0cHe&7_rw^cs>~fUxRiA&yuCKC&$8X#nHPShfxa;NRl}8VGy0D;z z18G0r!Yk$8lC{qNQvc$z0ZpS-YDcNr`5`>DX4uJ^Iu5@8J6k3=OczLN^1Q{5`S>1( znNT!XiVIZUp*h$``DWDj$)T50u}K-)emT&C@u5?9!Dna%%zIl;X;^gqM=>$2nV`_w-0-lLL;7_S)c@MFVt{x>hRllQ$d^K?Eq z>o=S65s`vTOWR0c97xu%R``QF)9V1Jvn2E^tu6(`!Bn2)q0$VfA8O|awr*ywh&eMOc8{w7m3zbPD zaC88@Al`aGeD{QNqSMZ%CV5Gj6&`9nv$^%XgryoH_4~m;Z>p(v4)^nusiSu4`7NH_ zO_JlxUE>LtD<*Swkco+N)+^}t|G6=Nn|yLo@B>Uxf*&Q3CuazjE8VE?*o;EG|8OimsHowDu@ z=hi@#>+P!l9STdh41QIJO{mvxw@&k&b{-aAeo^3*dfw=mWfy#^w`{@FsnMeu?kxE{ zb#9h3{6z#7T=!uvd|0 zoY)61P1~d5JRs&KG#o>@FU=7ri^OT>nit34mnIU<5H_1cMV5m&^Y{HvL5=xbXOdo| z>bK&N14R8<1#XBad$8^YzWfEMkAGU#ZTGL#FZ=j|kUNS9e}s-%`+6K<`_IYbs%;ao z?l01XeNK)O(#+F6Uz`^VvCP-TQYlix-iHg@#%6e%niq?f7Fd3Nu;VVC8vI>E+_vM% z&S z_7hl|?SG4^|L6M;pge0TcDg6B_64}i3QbvEY2FW~T}G?fGUXRH;F7?6_n4*k9`}iE z&N>6qm??QBBp}zPyu?&fdTyF-qg2YvWsS*WI|>9;;@@KFn$e&LhM;FmCJMVkfWAZ*&-lEhR` zeFGtYD+KgX^@kuA8+OqQ-{ z$~`x?0Nwbd74E>fzqaX^(1jaX=g&)VXZXlFAM*S=nf?8f|MCjC!}Ipov;qIq=0DHS zp?$fbrlu`*~c>?uYl_r+%|ecPUj~3An@n>FDF>(3aBe#Dn zSM+aiT_)@Jq;a|RfV!g}p)V?xT?lLas9OE$s@9Fo-sp;$kok3`6SNlS&2(igb~?ypp&*)H>Msba1~!?B@Nm zkDB&fOx0{Z0S5Fga`I5-osUobzTJRA;u=KrLT9>j(~>c!oF@;gy2BzI&a4x|{k%_} zYq~U6eG%E={a;h#|8t1{pPz6)dPKL_GTwdabMTOO?!)`x9QqJO=$Bnoqc_ipo#QRq z<#bqb4*)Cb)+rT)K1rr6y&S$CXHb4kV4pQ56^eAQSiotw!kVppOjs&Sa14P)e&iDzWC?!LxJKAfrd9))z(%xTU=`) z8}7o--9#WlPZkw_?s%j+a4mXToZqVd3@+S5He&5og2l$on6=7#&EX6450w)ZdL@{d zVUhoKu`#-l4!5Jfa`*FzA1^Z#9mbkmuui!8w%P91u8{e zH3P4wUDfNbI5>+lKkM((mx8ro=Mq@SSWU93>nU!8Lyo%5_N(^J`?g)WxmM@V2hJ4r? zJ^j>sZv2Nvj?_v2%WW39WBOKLFk9qh{Z(Drs5@y7&C7Bv42~P#ayYqwIrSQUrof(G z&RbAnC|mh7-FU<0Fm)ENG@}59EfKDkuE{;>*{H=zwZT?NJ`~fM+j_Y$$P2!kh8oJ;rZuFSoGM&>H#3 zSzV9MB9I%DBTxLAZoq7jvq|{jnbf!E3UuV<0QbGrZYAhL;JNw-Oc{EaY`$k3my3~f z6;nVkbd@Nz%HaOy+F*I^i?T}1BMSZWp4itN+Epu?!&-1RPYGGZjP4aQrtypmJmTbH zl4Vxfa&8LUxmp|?^I5tEdStpb+}jq9eDNyP*8dGKBjkPl!a}{Gh_G-^tI2FQl~Sax zr*_Nx?J8Q2yV$WlLsN_4zN+q10Vl&fA|muVOuOF4UZth|T>|`<*!ur*&LdsqO9Z1e zpJpdtNJuas5yU5?N@&FABKVa-x zL=CGwNfEl7xY6QWj}RlSZpEx zbshVffkK$TEDnU)Amd;eA9^fE4@T$?j#|g?q36N9*K&Tzd+BfmQ?u=z@?j#k=oAA!6D-i_EYL2U|F?9?6x7$11^eyDuVK%?63=P`X zeW1Hp;Pt%0K|?13p3yANl3?E4OJbrPt5hl(5Pl1vqQ`=HU5; zQ?CuB(T=T!;N?qj2Yzx~PHl3oM-lVx^;^_rL!Fc-70nM%WNsAP$>4)+-1oKgMnfWg z0Pf>JLQYJ9PJ_Keyur?VH3A0JEdr#>gML!gYKJ{)s`ah-mcl&bn+1L*G!=)J?u4B2 za!4Hcu8Mz};3@CS8y-=eO0>9yZi`nOi(v@)iAz&gp2~bU+kGh_{{rqq5`Q_B}2 zZ<`t;@S5i}`lAL9o~nH;yf@1$Fi^uOQE1gXLtEOlW~5#`*yEoH@&9MEl~=jJCBS$q zWgyY`loMUSJe8~UQuB&8#pGlZ7MR^#{b@W#(^Y@k+E%Rp-eH8@YwRX+M#22AGQ2tP z109D^LzxV+4L)bsuM|@i zvVSqGR!>-F%!-GW7F~IGB5A#KuuJ4b5ZbR`Y)^F4vDdl<-yVi4CbphA*h%Y<*1bU+ zFHUUyPB{#!A1jR($Ms}thi)YDNQzaLs9-Hh-~!+Yx+keOzZbXj=k5y6^x=QIqjxU9 z9oW1AkD_qr9%PQZrHqmZOqX@v@aX|fgCu8(3lGVzZ zxpSD^CuWUgfG;0J18%)VEKBcA!?Uw}m6ZGEbD^HOpqz1KsOMKvlH_7;_bb>Cfn3dX zOE2r^)Q@{*f||vbtlUf`e!A|xjM5SA@bbD0Iz_hQ{k&Lp=s9@vIz@R7eA&6_D+buc z)`^$Y8h*86u+!7HFg@s!FGi7Djv@EnnzOOLFM`#o?ZgnnG<38sbgLN!oiWER(J%Lu zI*5vdRnaa9lX4&GGw&JRR=AZQh4)^&Ke$JIApQ*G!=Q|7b-GLsxxB!~Ow{>qtoPsD-nlu3cX(G~#2?_#I5&<>zP!vI$q1Qwdr4y0frG_E|5Tp|ey+|)o zM0!U;lY}IkhdJjuYwvfzd%M;-=LlAFb1OLlZQvpf4`S$%crQ`QE4C(!)o?Km$h)tgGQF1C%rU5# z{r)<=`<6I3&R*U*Y7paVsC!*Y$t3pKY}dtc0_W(O1s+)Cr2`yfN^8U6tzk2ZiEoer zVFrsBsPvU86zJ4!*Ej*cmWrdO7u2d73FMp6G=6&+x{yD|S~k|h*j&=q;n_ATs}i=R zn7*k=v#hvL`q?NxbbTu|5*lK(*~j!X#L5*!?di^6Ft=Op8|)o3*Y}`=-&6E>{(TH8T#iC4EjvNEnRyqLsoy^Q$tUwpQIiQo~goA8z(-rd=|KXRXO= z50GLjoM|?qHA+j34m)q8D|?DfH6R4({^;T$z2OTdg;M>SM~*ET7Bz;;8?R;6Css1I zME9WG@i-5yAI(rx!QI;?K}Ng%nz;h!jqY*vFsF#p8p}e7;^U8y!}w9XSn%VvP_lR#Vy&hU9UHL zDI6?x|Q7KwRa-E7TbFIS*m;| zkv_8_ER>o!F{>7h#M_t}dK~HOIOA8zsYksuyNr8PQDBexM8>ikn;-tihVOsrFscer z=UP`#3J1J4Fce*)Li*MFVF_XzV@)K#JDfF%R?GI6pX7Ya9@YwTn2C$r>3TjEMH(Uq z4VV-0{b>a*Ov67fuiz&X4QwRhA}JJs=EVjTaPmcF(** zii%XBdPH|vbl2WS7wSi5RX(B#S=p^?k*LvKv8P$Mrh#afjgMW03}avSoC?TsB8M?xX3{=O)#xh}w9TA|1P( z>s=1^Os>=Cr`Tqdf)QhGuX%Y2EeSgQpkRcRqCx1|$aCSwIq8r!V{YzWEjD|m#*ng9 z+M82*9~&#aire{;C1PgPgIht#5Ue2gXJsc34+(vJ=mMbYxSN_cxOlo1nK>nhIPKVq zX}ACawzeSE`>3B&uY?5>sJ+tUM|*uFH#`t$`H&6Qy-Gly(XdY$s)*|v9;7Gte+p(~ zWI!4nVLKVM{ZdyY_F3Ec_XR^NRdmlS!lPn05(F7=?Q|2}ZPUN)5&q{L*_oIVb&=PC zd9<%w6Sc@aia~}OnqDT%W-iFydlCz7%Ae zv+Yr_?6gE>Lf#9*RKj+|6ZzTu*$HC2JC#yBMqk~I^b+{?f=U|S-lQtOrdMvvq1n-r zzkBm!{CR`x`AXrRq)yBw$-ncdOm5@WnKc|WCtf2MxveCkmCG3JQHTuIPL4GavQHfV zZ@GlCB&dWo@K(R()3!UFG%IDP{56LGNLh<;UCb2X)|7GR_Et;Hbf0FZ2p4*^^^GGq zGIo?P*m@2jVCFkJzUzTc8Bwi+&M;H@{nSrEYH4M1`>Fb!3N{ zvZFFTd{Znu zKNqKBS*{$a4{7c9KYU0-^(aSh0o&lG-aNL{SYEuh;_2hYY?;XaeW=i@LFdDC#$ozm zTL-Galx@NV33K_C{PByPRTo)G-f)`8yC~_q@vloVrmTwH_%D(v=BJUZvRat8+8-7XtR=Tdph=Xl^{Gr2~xW#ju z;m64fl3ru`@icGjx-;!B z*~fiu<%-Gl<>{7LMLx_jE}8>*3k$L;D#ckmiGr+=Jcq7JHKu8|6qH-B>LIM}I{Wwb zCc<0sKs0|Kgs2f&f`y^hM{FRzMVSHBsbCN&rp5DMTX|wzt|H~<05$!^lbeWQex0eY zc?fLkCnM{$3%+HL?xX}9jKH45@HfUU?GZx$<;U&g59-xwBOReHFKj9`IEv^UVwdL( zxsKkQ2i|Xyo>)q_Jd#FbOLFN+(=N=v2b$Kn_!wt#h~Csh-QQ$Aa)YRV{b$AY?ycqo zhwSqWe=2!>{XBPY%kn7}>hWD&MlCSch~~H8XLld#r7na@1#XQyc`SfP%U?pJjF9_Z z6w3=(LOw*FAM{(cHJ1jOMbSH-p=-A1ai!kKc76Lg%eB_QqHAeHOlJvw&_`rmA*XagBcB} z^M32kyWlLlc7X*pTyFJ}Y`VcWig#I(>uH0qp1o7r&!)X7aSh~eJszHj8`OnPhuj+mzzKyJDz& zTv>d9HAVgIZY>^+)L%#ukzOjW<&d9Aq+y5}nS{KjR`Ia{LfA6n0>N-GOR zJ)+Id^Cv^1)C1bYO|^VOHcpihUcS^Edo|!&E%HSl^0a~*_Z%NFw)C*>$-C_tJ20<% zozo3Vg^8aR>Z_`3D8NR^v&A!$R@I5RMm^AP??Ig`AMRHUf@n+n){ZhLaL))$@X0+6wbm)Ao^a*U-q}c)lY;RBKHnp%eBs2e%u06y0T7RB3y3RqIDN zW8|Btrw;uF&L9q}a^FS!_d`{pJvk)|W{fN1qs6M*Q8RWtkDN?7lvb4Y1LvQhMgo@g1oP;Hh;PMpewDmR_Xjy^_!4#1=sIR+dbXg&8~S!$<$3} zaTYwI!f^KI1)nMB(PB8$nUXfgtJ0RN6VS>pB!`i{iYi6c*CDMOR1L@-v%yK(ppcZ0 zJ;RDvdc>62Y+cQrHgaCblTxNHFP|zBN7ZjPG*xnAM)h+QKqh)iXey7m=93jQ3+Ok*>TV=RTSkDr8K~AAR>?K7JTIa zja!8wt5~bkGrf{Cl>?0naZi?j24B1`fzv3Hv~_>|oY?p~3-UOa0*ED}qu#MTi`T4^pSm2+7Wq$vVzmc=sj5TWUM?%J*UwFz$7}FlJzA z*Mo(f7lyTP9yfVCTKVAt<3$KWzg66wLGDyH&Wmh1xY(?kN~?O7+Q-?`lU2%ir26Iw z8nQ+J=e=K5mXk*#2@eL1NxltREq;DrN_V6?Nd(TWXoEl(H-WOPZjpZN8xPT?hGN?v zL%!y+ggh=%J=l!JKlU>|J!N4w4O4z!M&SOp(!$L@ zZH4}~o}sw$fF-tttVE%39c}%X?}#P*j2R-Fp(XMBTpf1A|LS_Vi*Mt@m{q&vVKR}# zth!&{S)S5A`Hgyd=9yZ_otsB5@OL@L4D3+PT8=>$OPw26GzBk{jaHzM#4I#B!V#CymcQ*JOIQ{+ zb~1IlPoZoh_ptuBh@|}B3Nw= zN?o)a_x^_Q4UggrB;JjKD{;coNmoL*tm(%SZr>=MIV{|cIe#EG}xZ~|LGaMy8DpB5yZf)5tl0#uuqaNR{6NdpoYE+n| ze?3`P@g&IBI8*67YkP6mvbO-G#IEY z=q;sG?jqm(eEhJ=ag-U`!V?kFaK$|VmXJEQ)~cT7c5qc>Z>k0-kz@lI1dd-Vb?_V)BQu_s3cf3oNZtSo!qaNhX z<|{FyTxNS2&kQbrH;R@tr=T}l!-5vb zflih@BrbPzAq0J?J+q=AJ9(+x^6igaMFisqrsI;v$&h&+RSTJQNKa`q*ONA`MoJ$p zBw_)zxy1+>V5~siwLWlk-u?-U@LIb|^69$NGb0NrP`3hj9S95{@iwgPJ&c2~X$~y3 z#CXWk>&F17E;f^5$i zFiqBJ@)grmDzmF`s;d^QqOdkJ&$N+CvoDDvfqnOI=DT4}R(D(2{ZI$Z;yInJtb7m? zW{|(t#L_YhR66m;;9MKp)nDv~v+Jndj~S7VE1r&A2-lS4b4+-9{37P_|j~M_j zE%T9q1;q5oILyBVU{>$!EvCBWCtCW6-XQM|=5?LIzTY=A_g)<;l*sLxoi?^G>)Zaw zzJ3}IX}GniXkw+{P3E|>AJ|2PoEKx)cu^$0$Nu^^=U?5^srhsFW~!%=DiP~7Sd()N zlGhnh{-b>JU%&s@$6`;ro_m-T_ke~crc!^+}Ha02s7Rc5Q6S&#e>W9-;0n3$x{v(&x zKPt$KW1`Y@%=63_<`#rGPZbb54W+4X{lI6@-;FXzSR0*Oc2T1R`V{JfVGODA^nFjl zoO&kcu1(+ftEh922hA7qhNOf%7clFc*g#RRyPRu4QVUg?Evak*|O=`R2&Qh(ca(gh~?-HzryM6&_uUO(%(2k8HD zeM;#L9&zXZ|I~~O2Wl^IL=npaB)xZO;kea)t$W#>2d(zXYiDmMK%T2#zAmGZnr~Y| zmWQ_%=BjMid#a3lR-ZK6sh;(GsN3V{wxCZBCVU#nINrTHL2)46;G$DJ&=~nrUMz3l%MN(K}r`{e45Gw7DBs6%Bh3S`zbzx6O&&D zewHj=D>ClR&Scr%%IlvvXW*WeR{h}t?X#7sl0f1LX5~2j>JC<$M{G{kdMx*4kxZQ| z>-`ow<5elsN91WjZk}u4npwTRdoRf(bv+(t*@3xPs84u|+JC$<kQ z1CwmxklO~xD1+>mHuU+mL#*gGsuqL=jI>V675CRDEAi7dFaEGLFuhyLxw>m>+7MtO z`w=i77Nhq~%_Hd;10(4Q77Lx05-Z+tB#js>jsj8Mt9WkbZQXWFE+gb>XR#qcw5u_W zfZynZPJ0nJzqI!{1Xjkw9(kO{@I%K*Xa55hK+ zi~>2I@+~}satmWb2C_Qp)0)3oYECU)*3ocR=47?zd0zRUU@jI4x`S;ZJ^|G-myZKK zD9K{Pr)m&_KVKbsBtDBC9e3N#_|qk}dHN(IHMWM{fSdj3hZ^?VcYO$jsX0$Kv7#o~ zpKIf06pOaW85HhMAOC-?C;#D-Nfgz>%{ws`L_r-+BHz{Ei@Q6DNpzAdLPsJv*?Z3L z#Xb?+XllOY%z`D6&Z-yNKo?33FrsS#s{@@-Vt^c*MNi7!-RvQhbhIdLwhvP`Qbe9B zCLQ#n;{n!Vl=M|dWlO~*m|QRaW<8OXBO>7`l*{VVf=!i@&TulcF*rx58CU~6TZVl+ z}@~!7r)}dW44LgoTvxesL!kj?hW2RLecmoBQ6noEZrz$y|hf{c&5Byzf;pz zQPcAGyhebaiZ5DPjsHf|f1KW$<}VeTXMw859EXC0i9m!g#jpOkeIm>O-smScRp%*g z8QTscZAR4|AETO4WC3mN_749ot|4O)0&tuK^`*?TXD~^QAA4fYQ%#~kVN>n3J>Q{vdv<2(Ya;lweY4-%8VM?p`a2=&BU$(^_mk&iEksQE z8gBR5ZGo(Gz+Zkk7NY0(;YQ#(^XCmA8faP7mDz%lp8nAU!x=$-3xC^6xl*`Tj|fBH zDyF&m9$XCEG$c*x+-ujW6-&QZzr%U*YE}BQhu9XQQsCY56e_F?_jA`$A z7wFK8zLR#bZkchfejcP0ZS?q86LsQFJL^|tG9x=fWV%Kc6KCZqQHqIS$qo}Qq+B>a8M7(Ez+QHJ($KkS+WU)$98m)HQRMJRdy&9wV(3OV2cz00TZd{IkSpXuV|l{Y@CU9`M@tGZ#C0i0S=_gX)N z5aR67x!~|8Im3nlmG{H-&jDx3{z-Z8oJt40RBO%FvT#EH95@e4C&z=jA4Te}*+G!X zyh6f!s|%Es(H1|Qs|TCo#>+?!I_pyskUTb1mwTzX59wPquQ}gyCT_8C&ss0kTzb#2 zaQ}|#;txSUUUXU#fv!M#z{K+Ug|?8SN62v?k2&$RmltSt=Oe302lS2nCzN;v>XZ8t zzRz=Jfx>v+sb-vBWZ8;tE%a=#9Qm_(qOSY4q55`UZqwkP^0|&sR!6^z6d!!7A8cz5ad+wm`$GEIuSBJ>KHov3IpOjK1YpBR*d{a>( zW-%TwSNewI7~m2!nh%PfC(TAkUFRZpCRH+xkmg0ecPub^pJ@7dvC*VWZ(Kw@P@8|8 zVEXYr$Y%op>-oY$mNqXiFw|KP8_^bx#Wc;c1ZCp+*K_RG5;_xH76~Mn(exvyJ3+i;e^dU zzjc#_KB9%=%b1?YXAP`Y4 zJ`)tV7mo{=|9B>cub!PyCBNNfMm5|`ctvURXb|%<&HPFaQ{fUB=~>OgsifIf`|Dcy z`3Yy9xSbHP;l1_!4PsX-Lv8X+t@x6PJL&a-{ziAm;fFt-SXH+bW1Ch<^+jKMRUvnT zlrN%I``bZTOnJ`#Zp%35xj^8FxdOon}wJR9RRzU`2Gi4&g~YrP`Qs>3FM`^Q%L(umY<9j zh}A)HY{Q$xd)(FUguD`Hh(0Caui9TXqz!3-AioZmbI{wva)e*Fqd*|EO(84|!f?c4 zlBu?a!q!{T?jUq$T=7OH@EkwAM)S08(f?;7mq>TX;&}ws@_P4rlWVm9tQpQ~hFb(QgjiI@aK_A6l|@k(v9`Z+oc-*@J&$HX386vJdx35hpVV)d>*$!0{=9yRZQj zJclt+a98`l-FiU3utyQ|<4*Dy^C;1#ZE=OUaF*eBzCfCa6xyS@D1L_E`_yn1E30X_ zcm=m;@Z>0x0*hqOa(xdX3pV|cHsg9f znwXN(r;b9}emUbI52=17sqG03=-Mj3igrC`LfNk&-~Sx;#8(j+mr~E$HqwHswl6@; zPe8;}Y&09$kG^$p8VGvOxBvL6kF|Q#3K&hiLFEe_cU%Bot=(pPyFOL4pjLD)khWH( zQ}ywb!1NgiXs%ti>>{!Q*oX3#C+d^liYGVWM|<%1iq!n+)LwNWE0-I~%gbdI6h>J; zyhm3pSE}wGZFfm22-pC|`Kk{z_k28^67ebK=irt?;_7;BYhG|5>)T-0?8i117Ol(T zQ$zdojnFMPByp~nQtQ5?e7nv6o6s*FYTRT_0$bt$kl|0i-8BjIc5GG-BziPqko({A zRHp>$rwl89m!V$|J3-`M3H7PydKnM(6=Iv?7iISoY)uvqWbq_OM+5fSMwXiM;lS=Qw zHd25^I>o&7w8l zqLZs>5h3Ct$?|r5myRYcE@H?eV$p4gFR=OcQ%s$Fsc(vVHEE$Pw8bDeE?nKBJbS#M z`oOxq*Y9sX(-*a8t}LaiS{K7y6EqdIyaTuvW+txov!@gHb8zK~>5#7mhCQE^#p<^5 zO0!F0H&l)~9M3-z7Z)$utdn^8g!yyTi%VNShRcmb+r`OSE5C|N(;p}le9Z06sT&Ep z3vnDw>U5i0H7Yb(vHArNo-ZBmj%a5(k);N;=71t`?#xL@{1?U35P^yGQYUL`{s@Fp zi-$-n`Aim%h?77?eE?w_lJ7}mjNnk|nc{3t|7{PhUf|;qn9q)EwCBMk$);A5JCXhM zMJ#afeENEf+!j|v>uherSWu4{9wqg+(bU1_*iQ`F2Fhb=#N@s{=X`8Clq`;F#KBVY zGZD^)zOuaPQ76zuFT!d3$AzVn$$!OXtj1`DFoP}CketjbxUk)x{6{hm4(tppJ(eRR zQ7o-BkoR4i2Qrxz(diT6wGkDnzALR!T=hw{!}kHyk@H}&b+z9;$;MY~F?W3ZG6H;u z9m$D$o^p?Hlve9!;rrcp?oG7({AH>MN%UJUZ*#NL@ch|y=t2b8NpC2G%p)c8A@0bZ z2vF6Tv9ZUwIc{z$zp4)!xccuVI}2qy$;><3bt^ZcVt-w=sEdPSs3x}ry=cX&{-)Yr z3rc4x$Yfnbl&Qc>ET|x_5QCkyd~7@G(0y-4pbglao|nCm$65#i!; z^`{L2A)UECQEcLoFu?yJw9>Wp(N_F+dq!JH-eeJ8%XB7HU zx9Z}J`#P%@`mr2-eg3qcl_8_^!F^JJE4pTz_v=kV(|@xA{z&}?|Hnb|wM;QLKdMrZ z*#YF8pLuOFPa-BDyN|nXztA*U?Jep)MQI>IYEGUS8tjZJS9ESzKcn+4AHwJOV^>-4 zIhg3#uf=0LG;G(T)~A))&?$x5lX*ZCjowbg$E5<41biqIwE}M)R-`N#1c&GCT>)c@ zA01UzWg-cjFcM&8_`4eNDh4sROdH3Aid5Wk$z}d}{}f^31(y#+xbX0)_++v2w5f3< zf05(jypCMlV6%3^x|Fi!fW6X#`t@8z&((XkF1O;+Y5@8OTe7qF8!ltOuXRSW zzcO0)c*7&2N1kCoY5#2eWodV^c$%_by#n-7)>Ae?0E!_b5;$1`1QCz5k&>_ety3Rl z+BZzGTZ?hMQ{zB`B!!XWhEg|I(2ks1{Ou~0q;~r)<;>yob07hQFHo!FUmc+8*D|{( zqT>*rJ-%G7119=fMQS?4YjVtSkn4tEi)~tj!bC)2EZk4D)xrHADX7LwN?18?UB!1I z!nVcXDkwcix7mo92qqRIld3-sM179U=8P|1mYvj#$b;KP?%bTsLCUMAgWk3)6xA}I z77@~~7@8JXd+d10NzHzb^jhg3Qh@l&_YbJQ>bj~u6@Q*%g4%|ccvJU*yg1QKhWm19 zENWyqzUf?FYjpujgx6*c(*tPn#rlJ=n$7iZ?|uKkI+KU7$f^yeV0-Wpp?7c%i_18s zcVX~|CL1HRF$Wv4^hI~3C2NaY@;$iBN43$wp`&EyLjCa`GadVWqZ(osk_H!fCgMV4bZk7Ew`iYXB*u(oB6x((1CFLZ7M`F(c@#|CaVMjh7wY)S=@w!Y+BJYe)XT2#Pw zVC4Icx@CH0ZK6KhEm@O$MKi28Lm#Uqq`>=wVI**|JGp@>IOqr{p~<&p-et06GERNU z?NV%9{S#sI9eKE+Vy>74#q8b*^$CepIaW-RsemDfkTjb%@_LWLv>uJUk~KXOVzg=s z9BzG#F>-WtTmd*nVTW|sLQTe!*z4YBqYf{M#0!+#HvP3${AX|X-`UE)KKwypzC!Ia z0-hQ{<7@oEyYOoZv(n0sLBR)AvGBTyIY287MoEq|!f58ygFrl5A zBMB$k>oQ_|`s2@o7rwCP^jIo_p4aZ4(vu$6LaE@kJ7CVF%Oep_avpy~7Y8Wc=7P6G zKiLV2Nu}enF{%*R02lStjNBG^t8Ev0Ut@YkY;y$_#IHcIVk=)W~bbkcnFXfI6pP@EY$l>v0MJZ3(>RQ(Ce2@Ewr6Bqk1^0&y!uxCRBR{s(r_A5cDAJt7NA=KKhjVB!1b0OK z`Th{tYVRa1g4*BU`jAU1({}*gExO|AYolxr!?=-`+VnwZG56#D;0pFxhl=d*+hk>e znnM9W#<$Z5dgDIC6VR}K@C&~^U_b+7d|dl)jBmVLJttVX6+aEm|=Wx-736FU_gQk3Z~4rL2-%(d6`%L zlJP!1WeoMNaOs+?jhOHl`FQ_^Z=s1dd(*e54B~`vra5e127@RfyGJk22UZNDzKDA> zJ6Ih8uT?VC;MTRz9d~{<>_D38s01#l$H}Xx)IT}^07mULvB!N+y01ul1l)-e^C>M6 zj;vK8Y|@9E=?i)mEr&3*Fk61Ewq-U=d~m#F*)-;S&T4r&;u4dcYXe@hX;}*TPM{S) z82wE834~vQLK05^=y~K`F~PD;6cOs+Yq8FTFfUB_-toW@HMP&Qtq+BYXmo_`{-G4~ z^>bbNvugBzuWk>5`y`>j4H^X%Z|d^tFbd63%f#?OBh3<jy1U$(e}6XyDfAmVKN}ko?30iF$Sw zT0qW*uoQcG_#)|JQ1|H17ETUFenM`u*B`eLGlyE&Xq3uJog0{sbtz~lURd~GwSF-4 zlY=5Q4`F1o<`K~rMagx6fklU&>LkS+IK)_5 z`u5z2{}+fxKWMjn*f$u_&ujaR`X2D*?P?DEQP^XCgSQo0KE!Te;;O+V&5JKAj(j2$ z0(#dC^#^aWV1~d`lHj?zcK9l;bFYkj!?T{u5`lQvcvR&5EK^7I*Y_ezSeXKe&Sw#FHe`{M&Uq=GU6fM~F1RTU`u95DyLc^{GaEcGA%=@HR-rFLbo zhCkbM4$Q@s>JaEGnGSL%1_}Bcts2(F=Nn2c*T~1re~Gtq7Ycs{{`6n{Zdmcy^1QBIv*(wZX-PV- zFF={hVEI9DJJ_1JjF7T1Uk7$<-Ji{x8>(HVI&V$+Hzo1wy&bjxRsV~A=1t?}-y9sq zSWjkfww@F|g6k14l@evLCNFo; zUX-Qj?ez~$F|BR0j?Z#dYToahziSH1Y>jX|tv~u&=d-9r?p)V1zJ8??c}>o5d~>_< zrNF5xol);xy*(A8>(2!)90+A7pmr3z)5_Y`+LVaBHV36ARS5$TTo`ggd~%yxhmh#G!G0VX zoBKy-Ow&9{oHx+_xNTp4=biZ#=Vvr0JOkf4QQ7Lvg?{Y>_Hu2vaU+EvT5SuGM<3jt z{gOg`0Y1|AwYLU>{t}|p-LjPju-*qoj~O1$OMivM_B8`cRKUo>mE z;b$iz2G?fUaGc&d{V@k(p(;qJ&3VCwB{_xcIJc`swTZ4TovNS~KlhRvhBIB+sXZr; z@TI{c!-Yt}7!{G?=Y%DCT0ICP{}_5s%fy4(ApbZ6))s+g=(VBwda*Cbq@CW>(S_~s zNlb>{laQDVpt5ciu>2SvOr!XciB$n;z*gBbaA}4jiQoaHx&8Sv|BpKY#WL!?Q}~BT zx+(lCkz=xfNxRTW&ZPl!0^o*N@Qsvt)ufFW(n{6ps_fUc-bM7=of`zOT2*YMD*7Iy ztJ_9xLy3Hjqs}WhuQ!>#>#^phDxM~_E(B)yA;4E?2-1-Zc-ygeSzd53-~K%?pMq#5 z>RGN7cvm_5Zh2+L(+*JcYZRwZ`BqM;^msQvvX;KJONrRR50;S4XArJS;V1$^tsR-t ztDRb0e1T6*+4Dx8L6hME%Coy&SUF~{FQb1iEtjboYn)vkRJ#YJ!caW49TuSr2UH*X zy5+o|ZqE0AwNX|UYL4(@TX?C>aKuZ-Pp`J}#S{t86yZ4vg9C`+?dp_rbtAsx@J-9Ce-LYlMeVb zw&&|ufOtKam;?4Jqx1CoO{oDOoBC=g0uI?e0q;WUhi!kXBCe4aI6&R;TTz7Ti!HHp zs*rDaI76p}Hf;JSK8uTA7>tnHvpI&84N~{xbAy(Jzq+uB2Ue9~S%G3;AzLvy=wVi{ zK{C9lzfl2*NAl1;>^H8pC)(SNU&y<3JWhf-G({IDUtCkUk{G{Hzc8xk?hzA9@j{kx zf=lkNWyg6gNG;7`K5UCy66n;C`*~zXNOGoeC4fFj3_SRoTg7`RsJ1c=)Kr@$OyA;o zpQ#yO)~O38uB9ndXRPg&WYmL)uK);C6Hj*Msc()qE%r75`AxVT6&32$T|(^{7m3at zHX9uz%$?vMRh4!lFE|5`fyUhd-4zmH2cQk=t}OPXIsn=TqK-%88{)?Pm@O^%&+4+C z@Db38x7Vy|aqVmXy&zfU@c_{BFT9%gTOIApYqh-x6(kRiKt?F?(NLasHd>^e0~)m# zT!Z{Lx$6KT({$#li0#25`{Be+w4uB`5bOf%{`jtchPx=N5g&-{5%5~C)dRy>Oh8=S zcI>`A!^1;-oH3o2=QCl?h`NTp79qZ}@wqETX%%OjJUu^s9_y7MO9{y2OIIdIW5R{%G&q~BF)bZ&N`BpGj@@~J8LaLH( z!!Q4p$ikBpzR7ngz*H7!?4#$exC;eha_DY21> zAhE&_aqlO=u?t#(Rz}-Fr`DmN$=o?h7vY?y%do-u^pqf zE$gPmd0^ND4QKWLrgkycr{D0E;7K;o6BpNwFLO~VpK!VDHmH@K3QIIK|8)Yzls0}G zgZ{w(bbsB}!Ou_3Qlu%_NABJ4Psu-6etdH^E`*Y?H<#joM^2 z@8GtLFi-^JNTEI-0S}C%$xqsK%mBUQ`npCh zmC@;K-=A{_uCdagB0s2!eK_H{0CQUGLN`^_m5{cLkbA#?z}EJcH-yTSQSK-iO{6po zIo>%K4}O(uOe_oQN$WGX`#0A599>X>~}e!tF}2;l00m=!}1tQ(3QL&?6?oL@E83Rj#2`m z7dH^`eqwtD35V##ADV9)Q)~b%S4Zm@qY&REPvQdmaDx(Y9xau+kd1x=vN5!2Hso`j zT`>gP$gQUIa=C*DwyTy6c)=)H0C26>nH2Cjv3639PD|?zDY-kmwkf^b*esq7ex9>$3 zUo1t>Pli}n%mW0-%y-`!Tz0c@)j1}fW z;IWEZrY%Y_=GZgjEC3O!vI^|@dh&V{xdvL3G0OM?nNs9}gl=nS7?|C5HRpRgxbD3) zB!Kp)Q?-ar(NT2Auq`g)O$2h!VEPU+pe6}JE`}h>+wo809si-m|Mgb?i(g-bsg-QR z*l80*WYz3Zxgy!kSMrp^_MmxS>8($>XhR7ddRc(0wk7mxTZVy;RP~|YdkoGz!Yz&h z5T|VCS31$yZ59}T74|6E$TNOpFX1rswJ-Tm=KpB!KgIFxe>V5$-9;`uH22)zA({jv zse>OZN*#8QfCvs4Xwq*>A1YD>Rpy#nU{ z{eOT1L?s!Nz6Xs@aK!DxXFJYFHFB6rI}GHiObklB3Vz~$)(~oU)08`6R4D$EbL5-z zD;E?N`(WWKmy^T;lU`hdQsOS6pJYsbg>IfopB5Rz_y66(`4=CTKVP;38Yd_1x;Q!L z2zUcaq030xeP}_HA>7M2MVdU`tO`a`dq^aKA}QN%q;N{(uLD+M)m$W3lWYthbKgu4 zST>6ELXz#M>@ftP?}D2Ee{k>bmFVC2BY-wqq}tk+#9F3T>Cqb(Ck3L^qPCeZIcfGB zDK+T82^ZO;y_Fxkpo2HBHQv51jOX(FWaYj)IKmC^pTE9zNb^fZy@|d?;Li{btlxfb zN8~Fam4JiG1Agl*{0|P&zZ>QsuQ77)+>VaxAz~){$^fIG@L898-q}Y~@`)Zc1F_O5 zt5`;tA19=lhBMi2b5{wucm10>AH)9ibiGxKc6mB|xWAYk==|Rlk8Kl3)k5nKfH{{1vb*YhjzsO<)wa8y6oRyX^k> zr^_xvxs{vra68Ll6F|7W!^}VbSsL|nGo+kR{^RVuCs_-cRd;k2t(>R_HHY&Vz@PYe zA4Jn#KfG%h-)u_{y54%N(+jyBM;XEcZYwhYRA;h?nfi*Y*&waov^8*E_3lFdRDTq@ z;!+x!n)|evyQR?}RIKC73Z|9I4z%6f(e_IRSY+H9v8k~K2 zZ$}Zx*HuZi*4S6?Xu)FD37(a2f6V1D+#{@fG3EoXp4V6#{J~|Rw-Yo^91)Uju7kuyZBv>m9-DewqtK0A#~1?fU*Es{e~&Y-*(S`P>37g@J-GkrD)yZj$(O19)$7?nzlR#0R;HK0~W2FEdxpc zy$hAHPw*4rhpX|)3i28n!g9H8bA zam)Hy8FbRcoaQUlU1;<_p}iZ|89?2G=23t*B%&@@#S}d&&9DYEQSfna=lDob-oR7e zkTmPmH&X?Kb#6sQImXuJP_kNNgcY}KzcgRai;}sIk27+CUuK0Q8sj;=>$n2J2Kbw$Fwnlip z1~c`|bI(rN!HFo8iKn02+2QxQ=brKYFfSICas4i|iN_iLz-7F6S~SCSORUT zTz-gA@F=KT%Y%2`+-AW|qBy;+4o4H7n^%9WP+6IOsMBUD*5C88M>{Ewx~}8WtbS`W z|F@|~+ed}ZLgM625Ff#7TwIN`UQGUhfr64!XTC_yHv=BWv2MLha3~7!GY*iV2o0W3 zlTuRr7_GN50HzkrvaXAkAoSu%K`ZLWXH3_qG(XaC{N{&`FP@(;=fBD;@}>Ni4uv5Q zk#Yl?G=X%DjL7 za`?sIY4mW_DzAL))vFsX-lKjF(X78ZQ60{|*~j*8T(4(LK0lZ^c)vd6VEWn&{$HHE zbySpX-!80(f+8*5pmYc*-6~1MG|Y zd7iz$^{u_%`+nd5TrAg`Yvwx7Umk%$)<>r5+I63(K*6!JCPGmA*LW8fBkd+GRPWmx zkJEL@HFY{FG*COOvr1H;#)lgmMG%F0;5i~3X`bu!3-bYWQzV4+1Ytk;jD{-+A9A$D zNGmg_&)Z+#H2zy%&UA0I6)_>BPo7Oca8hr}nd$8G$ZX#LE8n~jNBp=)x};qSTPKdC zx|;2nzX~1IFLu2{QaeQVi*pDtX4#&o;*vZDeqlp<3dM#C$Ay4V&}#_w9fN3-AuKjL zVG708GsYQSGlOw^GHj2%qeq(k2R=`dvm^Atm?8KY3JMAnfXls8bW?M4B0yRgudryW zu1=uU4q9?t)i=kC=@h`EpQ(@;f;;8>aX?Y-_1LloXvFrcM51CGh!G84+kyY=1pakU zSK9$AYKxx(x!x#B5XUvi*OmK3mY0o8OmJ7~=RZ7+RrEuD;0V8e_q~VJ%PB#4pJ);@b1(5; z`|F_L+Lnf_sh(bi>u*$MXH$z*0z*|$)YF(bp3nMOg-{zuNAU_Q-S2veFokX>PFDnJ zBYEH@&fNor#iM1krNl6ou9?T1Uk&XwpCz@IYQxsuyd3;k{jUo^z(_>Qv6p;Mx}yX} z#Ptti$^QvC)d84Z`kdTP;=>8WtpT8fAJbN~xhgP-jI(`7w!{sKY{#aEf_B@781EcD zW8UBcz!8$gt-|w&bTrSp@*xkXzflj2-mE%hBL%G!24~C*I%ek0674sQ_3OF$H!_Bv z(&T&oT(8qGtkkR`yPvZ)26@ny;gdMFC!p&9CdZz|I8WyTK)7AbtN!Y+=(FUv!Re+U9 zI(sAaAJm+Uo?C$RmVUyjh@A`X9ml@SO-m7Pgk1WU#`pFNOW!^0v!~W4G}mR~V2RCT zzhH)2&Wo>bxLgd#8erDe4NycUHnj(46NyPyYbN(fly4{C3yAG%$NZBw(K+y_1ZAeZ z5~J*yy|Fum?_A9DDNn6-a%x*tB90Gl<$cVkW?D^rR7MeA;aDM`68>|}+jkz=CBLeR z&TRo-`CMN?CF52bmwS5Tu7?3`lG2TANSFWacfP-mpZ*MQB)db&dhX{%u(Yq^j+2pL z(|}w)*+SW(oTly7Ja@dK9xHw=YtV+KDBCu^lT%l@l;2DkQ z1e>JD79p^aGc`)qPOW&bIXXdUq+};nHWO=yCHn1k{=wU%5@x1lTl&^^;gqysOV~K% z!)rND2J?Ers7u+=%}p=ZucUG3j6^ygbPXWNOnzi>dLF~cSDWcqXyVBktNTAN(2fZx zIcIIOb=_M`^s-%u9`fXP<<@2i*yAiU946$hmy;NI-S85Crq~Y zOwUEZ=$?LRyB|pP6W=~_)42|@aHi$vH_3=(c zI3?2)#5UH!&tul6ZP@s?WRm6cAQnECepbCULr+^N`33)a-*;s`uISSF9ZCa28|33p z+})1wUn+b~I%J9$OQQAJDJYJF{exK0NhqHW2IDl}rzLz$+4MRhmwD1g4fAF1>uX}r z{u;4eTt?I&HKZuoX~xu&)b+53B4GY%lO+r>$wJypfErNe@VDa;h1(2$4NsHbu&&G$@=n<7D7MIXlq&@Ztx?vOkI0kGNDc z#??YPp`lPf96LMgN3R9u0U4&iI>2DvT#2P0gJ-)ta323!XUc=oNL-$(R{xn!*9%tV zOR>-qwe2(;Y0fEbs;Q_H$=cu_qcAy_I`wE^&2a;u3l1UJ&X`jXJAXu zjj{&ACkA~E(o1HD{HUud8#WB8Eum$c5nclkK zcV4UkByPAr4}zpTH~J<|=_47m$tZASC^0e}iYliCD1ETqyT=)4rF>cub2i8|wgzg3 z@<~e0NA2L?Ss2wF&8)InjT|-Ss5$yR7p2~f4Blnk zn!x8X(Qj`h3VK|slZahjP~iKd+w-j%zOD|&#xjpj_@dR3=(?7ZaKuZxEBp zg*VO5mSB6mNjSO70cvu_jAO^3ZvIYbHdWqry<{A(Zkwj!Ynmx*8$(97 zDQ{u6ei(4s%z?&tG>gSqMJEwD3`xifCS z!?On8j>9S=!6!TRag}Ug;}; z2kLbyJ`s_cSmX56qj0Qxu`#RPB9)qM?-({yHbr(>N|;+QTTu#CUriQj7?+f_J4JQ1 zm%5vuVjNHoJy2MUV5lY(6b4fbtHvsl46a?sL|)P~esAha?871Y%__er3%D)eD^xAJC#GPrK9_TO92Xs@Yo*B zTOq`~UhCFQ__6}fbkPfmD@79Ao{D{9c7NLtzXc4ra56e?0{t*`bCu)?zx|d1@ zkw?`Iwrh_xnv3els<3GUdR7VfKwAW-MI~Iv8{wO4vf$kSjs!a3yfkbn>r;bYm_Dke#=NW9?J`BXh4=* zPzmhW8y)EdJFrkxam?6#6WIQOFk;wTmFD^}UJKWNgc_uizk;_7562!H)zlOyn`X!S zgst$Eh&g&Xw(v1eA-Mxwh0C^Ie~CPbG)`4dy_xr`;Kxv;2~;E4ANeGfR?HHlAV{rO zdGeqrZd7v-61`wXYu`QhQQE3*DGl(o3*nnQe!}!~h(71Sr$A&`Q+ve7$n0B+|8=OB zFW@&;DcD00#~D&Rc=hq@*8P^5DF6W7kER~C^d3BZj1hpE%$tA@rt^0#V73N&8+=c| zx)TWaND28P`dJ!(rvx}asG8N(&>P{mdQp!&dqjNC_8m$7Snf^#?KI>gp^zr_VIA24 zLA+1%>do`CI9)#`m*5w@dg{>-EzVt;RHQ--Loq>K`}~fl{}=;MriLfx2|c^9YeWz2 zF$VPCu+Max*3IOcsdH{6Ze4RY(goC)N*K3t8$QMfA@60BC*U9(iq@P@bNgOBG|1CJ zA=VoeDK7Ag!13(+t67Gg)Y$cOo<{=T9*S0Xrtt>R_`45$Z8B`_HJ>oyL5A8Jf#=x6 z5VB)T>C+2oW-dooV6TqNlEY?uqQxXRXv?s1Y9w4irv#!#N%(_{gM#kszF~30S8bYj z>ToXY%U$IJC3iH3NLf@0CZD_gp3XC26v4hHaa=@die+oVFOM4g1`%CdANHbs<^)79 zY_QScd!Wx9{iKhc(F>opFBXzn)a9OiE3=@h+CdgD~GgD(Y$ z4^|RNkcw3QWZtuS!1Tt=_k`}(8oCoV$m}Ql=BK~7k~J;gBMC8f((w=^pBgxZS|mgm zxmqP`*n7do0&-19LO70-YllWZAqMg2Ea-Q7k~P66R$%zg?|${U6S?)D6?e`7E4UDE zel{?H}HpcYLRwB`ma_xP3xBY@4 zGZe2PAmEQjBe2P~ZIRLCFc_b+Zczf}?^u2^YpW(~+s^|SR;2Ufqahq_b#NQ7Tf#$6 z5TrZxV&~g^qR+mMVP)~L=|*uTCkz^OT!R^JelaOz) zzmJWakzOvr#=X%~%n9qInt}oir;zf&kJiU(DS4EX>yD7t6tMnz8CY>-&8u%vc51Ca z_JMu4m6|$TG!~%0X1h?NpwnUO!V|~!#b@QKm;U17AfCCn73Krlz{Ix%ZsCK1$Er!? z2iQnwbRacWCO1|7PfSrzoWRqSXSI+Ayn3VjigbZY*^Y&I9rzZD(L&iYc!yZ7ePr#2 zp~hXuw{kg&%KnqCBSDbv#2If06|L{cv)x)Li z$9H+!*&82l&!GtYnJvkYS$j)xGNSoY2X6p<5RKwTw?9^|(ad%Kq!jr;7MMlGaG;4C zOO}ZDgA)G;E9t7MDI5)0P0umJW}f}29`6=IZrv3oOt}2!AT7^J6wdNs@9DD2tMvb9 z0W?g@;Z@XHBSMO6q^tZ3_EOEvXmH{NEx8)=|7J<-okk^Fy?JE! z#Iigk9DVMUfLjT?Ms`R=Wu@FRA&mzdu2emQAp`1{49xG1%h=~NhMoL^8aEC!iGF## zHKg5cYCT_qjEy(cN~^7T8CDw^>tkD(=p4l#8EU&z@Nhg>&M6X(CTuFi-Wik@yz<+Q zkI~K`=H=#*3VZy6+_&B1*Jsa|niOkR*T*Sy1!eAv`<%^F`O`G6Zb$1-Rk6!qXK*sp ztz~5eW@~eE^T{prv7wNNAq@ca0*0pBxqHnu0%m=d+U`DQb2i80kwyGxk{4b0HNS3| z#(TUmdH!bx0M`Ya;#fMyg1~v&{FhD$>Xzt~>4&(L09k6%&{^B`Jp;;8B{Kl7>Uzp@ zHrTEW(cVLqcc98udpTx`zzg6E5biA_%;?XWHkRMz??!&MEjmD3V)6zMBeCX8P4~D( z2k!FRAb1*edQrDH@j8NY!-phlH@kV)Z1@Z~V8EVwO1rYI&!t0~X_Nfz!zx0dOIrhm z^=ZI)=T06&8KruUv)q!I=lT3x&?w{QfE`G!#~%YQhbw-_r@{HNW25>H+N1yEs9wt5 zDaKLvZtkH7GWvq`eTM*>wZ_~O&E#G)<5%j+=@Pq2#un!u)8D24j{6$f@>j67jl$XWmdm8TYeJ*~ z?0PxkAGlvbWdYBgT3}v^8)#ghmR*Lm_!W_^<&H3k4s5UZC6K)Nd9?a_t#s+efU;qW zM|2Iba7*`&RCDVj;s*|oJIA;N-OYu7E6rXI`n25aiv8;Pyu;aK3yt=> zB@nx2^PKauM_mJ|G_MkV4EU;6fiv^#c8fXyQs`%qygrZFHLP*mAgUfw!^FjmnU+~+ zB?l1RZav+WkXllk#pIKU^ov`5BJmW);P;^bKqP1PmON(~jE4Mq2B)^9e-%l6X_T~g zXhm1mc4mm08wF2uq?`gt^e6UV^Lp*jcH$+E4n4j~sUOTHXT=9A5g_lDxE)c&__D%A z1pdrnMLL@O{fJND?I?Ccx8=3gsXqES(yT|O?3ccdAMK}euvgab`L*IuXPfV$(;OVP z=ZQZlSB?+{ry<$#cY|3>i_qt!iT4ciGg2&0kZHUQt zsvOc)WOv)9*^Ty}lz)P$(~+N8sJ**E{LA(s-c~gxFm+rX?nSVw8~j$VLo5ZzMI)}x z-|lEBYjw4@8I|1EggOcLVed;RqNT}YdwUt~=<(4hp7U~ZEJBmVRj2hMnA!;}hJWIl zDMo`X=wBSt*FQa$)@}t~8B$mD83}kiwYZ8(JH;`11Pdv0v!hZkyKG9m#={i7IE-RCuR^7c2qWVI z#<SpFw`>Nn@TvD5B`k546jOr@(9?0aV7z*K8CYU9j4)L^?}wP=rg zK~QWG#c@p?%~RW8+o`6CGi*p7tVS3_&?HQimMM@39pI~rpK5>bAZR-z$qZrtplui2 z=Ldk1Rr$Kl0pX^T&@RoR~NJZt8{H(=VUttB6;m z{hSZy$7&QJWW#l0ReW9TZ|74@Hqx5#+L3J^2Zt9o!9m@NbS};K-;a8!cKccK_BkZ- zuEOcSLRE>QFU}ngV4 zK^BI;c@PlU)We2UTsI39fhFWzsO?-1t2_BEAc*t4;U#8q*~md&&xo@!{oyN+US&=@ z!o1wCu7!R5H7hEyn|{`=Ytu%f=(#nm`8^-4YBp2tkJhxJcZ09vfeIG?D)YRmJfD6iW*MX3cNF2@7!u`@!0j{zJ6L+e_wdVo zS|6F>?6_-2%NAT4cPNoER4-E0|@x*~s-!F1t;$gFB z7vE!v^9y~ect8cotFIS&;Q392DTCd=ECrJ^IoT-nF3DsCq0lev_cl>2u174(@TuSI z&R>0DQKJfJ8GD|4;2GnM%FnL-E3|%ltmK|(Gg^G;)g95-(-I#_*P3*(Jzp6Z;7(-p zQkNUj^84J%xArl`fB6$|bD8;3@mVXtpx*Ljb2*$6UkB(?s>VbJ@#~9?UCHYWNrX6_ z=A1e4K0U&v=NtPQmw+u>`LZ4*Q=i=;Ra)yIbYuHz#Yxo-s>)kZn~Dp5I%D={c|}+z ztxcJp72z)>FV=n!a1rackbmuLKX(rFp{Lwx1mF8F{{UH=0tcJ_hr#Bb@g_Q^#af%& z#S7>Vm|I!V_=Y}b4OBe`Y7c%rL~zKx$Wctuf{kfx2Zqk=dq19c90`Fb5L6xEcv|$m z(pznwzYUpB+L2q?$i8=o-+B>Ho6NLH%D|8E$$E?CL~{hkE#aH14`w_R^X$SK8|*h zOLo}oAa{#FM9~$1)mdkcb4|O18F-#trfmhG9`^hofLfSibCG3F;M^~Dh)5GgvOaKr za`zi92Q3JFSU}Q*kPq+6O;d4}Kz;N#gI57CvWl*hBQG86-tzR#c};Dx4V^tLp?7Br z+COB~R6U7E5C_FWLnD~p6$2f#n~kBRluv~LbjZmYk{?ud1$xnZA*Vc zyfDIMEi6PeK?yrG>O)VXp1AGLx)163V&Y7{Aj1!9w(QQb0j&gIUppQwftad4V3x9z zO+Q~LyU|&BRXVm8tRlED<#dH|Ea$0oQbG#h+l@+{sQZ^0u0nq$|@q9j)e z;!L6-`7MV^qTvduyk$8V$ft^yttip&GbZdRyXI^)r~7YEt@Nd?miD^OV$8{Hia^7# zOMEH!*w15e&*gRp+MbtONxf_KI$|tyl#v%fK5BG)aQg9=EBuP?<)*}R*c+%*$7e5s zdJkva$FD*OaLoX@!4p8OM)@}|$q2-_%kGMx!q?=;Bfi4pRQ2&>7yu-`oqqgz8sV!w z6=Dl>ZarW2=OOm_aO{}PLhC{=Qm$;3o#XNM$10|Cjq%N~;7Q61x+M6xgTCU>>yxhf zg!gz4L*a1zDAn=o$+Lw_3IEVO9HObn`x7>apEd2eCZau*1l%v)+i^L3Di==UI%=x! z!mrMdePNv|@mbjLWI&xRXZ`(1N$)^B?vD&%s2qv7TQ^p8dVpv-}7r|U`#Tc$%ht4VHA}s)?gp2OrRn%W8$`-#PRdY4re9aayZ&&UDQQ+)1i8&Rb0j?h~m8W4`K zBG^_oqY+%#8cc*3e~=mQV3Rl(!}d(L`?Yh1nP4L82e?!uRLVjNT3Vd*{!5Tu_MtdE zk*S;M)GxVBr;$G|!cJf)dZmCrzAGwZ+{UlsB~Z2!lzLU$YS+2^82BO>s393$jsT^JB_MUL}MLiBl$f}KNiC60WLsw~)}r=?;V&{M&o@5F^{O{@s(`8vF` z0TS1Ie>@jxojzs?XlonR1I(+?Jre-0p*Lb(yU_odB;wM2!Fm}}Gux7%Gl`cBhpZVO zHq1Iap^+IRHwyf!Kg$$z|BD4qegirxwqt*+>y^bfbd45x*B7o>g?<|;2|7WHi@9x* zZ4Hd-d(R_a?t*Ei4i+24qtG3^_D{J{g<6F`UrYbI@kL5826DrIm`0Pdn?y z;&i;TxM1V1j!sUPnU4J1l(e)_zuteZcP5J&x)v|7k@OgogRl56E@ckYZa_cvxv8>r^Wk} z<}!IQZKYSwJ^m3HvC`IO%USX%c+&&ugtbv;j44Y674F>!@Z5!$%SB9| z8Lanz0}92vakK=#n?j0Wnr+h0^>*!icU7`Y{o@L)Ov-*hHPVeE*biJV|Cn1$*mF%& z1r|np?1P|X!@yrI8Xx+4ZlAMbiXQNYUa2jx(QkfNmu&mgU#I>1pUp#P15wSnxtlUu zA5}sQG4($&xEoV~0Hl;3`Jg(QqjzVG$=nDvU5H+O$8u=4EXIb zN&W_yAiN6Isd1!Yz@qJphtcWSqWv#nM6ile(WGaWkrk;BH=dAY4!f(hkb3q zfXLmhj0++-S%0klNu+E{S>4FA&sgLv>5>!pL_4WleUFJHs1mUKa6}&Q9D@eQ*^Udh zErxg4Ty(c)B*w>K4+jDxuocC%oe2j0UMGBSIz^gmA-r%nl-)VVW-$nCdq z7gZ2sp{9$b3c$~Ni5bZCLykaQ7)PM5ay|p#S`_dOZ$8DAjR5VOSh*`A)kDWiTKh?J-;^)SSY@9Y9tvqjI!VG*8lZDkaepY| z0z(~+uP^_UsHAhlm3@1@VhiOJe^~Zr0i>u`qM{1XFKU1h!5hX-=lreh@1IsG^8W0# zQoP*q$lED-_pE^ar>nF@nDO?g=e@W1vHu6_^Z&paE;3;L`m8FpB)@tywjIgq*nfXL zk|$kAoiTikiTlZM3?V8(6_E^j!Z1siP5y*-^3%L2GSvtf*$qV;r}vfQ-?S#nq!d!eE9-EZH=Ju!IQ9A?--i-7eOu{1qDmG}f<~v~wMFsV2AT-*WzB z$rE_mnE}gF$u2bO)u1!OytDIHExoY{gHoRn{LVs>7`a54Y?00GWFhC`(HY5AXVT^9 z@!v#OV|F))8IdQlpy^5pUIK>;0&G2ZMHwOPGbRpCU;6PW>{kySTnL4MM9w7lk>V)MA;S9wYpgZ1fl8w3IyGGG3=& zGJ4DXtW1pgqbe#Xxg!23?VUU0tn@s=?w4 z5rs_^=sh8+*~JesB9e^nbTl=iM}3@xcWAq(|10A_`{?b8fx}HR3-$Nh%7x)hFqQ^v7_x;}89H#K4OiCYXmOj|Y=ZaN5Qxayg;lLXSj-`52`OaO@I zXR_%m&-!KOO#zR>V=fVH%;m&au41^oX*k!!TrEQ_k)-CTkI`f4E>_`qW?zPQR;ls7swpj4?V8Xr-_V&sRQ(b=sxb*d- zZM<;ptY5b919B^44=w-J0vU}Z%HuBY=z?#RkeuyLb>2V`EiGWWRb#YId$4 zqTk8AJ=q;??;YYWlYfxn#yFeWemgG|1W%F$^#Ri!*vUcbAI}oy&)6a90)b+lf}xLG ze7n}ws=kt~RdfA05?V*An4vUL;ega|kH%^ru*jTO1-5ATVi+wS0FfL;JO7-UbgO_L z=TI=F4DC~4OHWTv$;xJ#XYC1lw7&bi$$Mv^xv_tL52>jGQBP&XsXuO8UQd#i?B}C- z&`>hs@R*XVos$z|)SFY5smaM}KR7hVi}?L6g(Rl%=@efTuDoC^C44Z$Ti{FVMv27H z4nI$uYZ{kZPfu>N@a|3{9N&X5`U!oLq6uj;w+&M!Xsbm*aAQ%lRIFpJK@^M=T?lA2g|xSvo6+SGT>MsQr=MSm3~_O}~4&7#X&A-vH8nqI#WKSy{?F z9cV-YGWfCFav(wfp1j{fp=OPr4v7nGH9?;JDswa8LATEP2EWK)uMIx zA2cV}*N-4o7}WnP&zFYlkKn_~CqjOekH_z%x8j_8u9zqIfETizG`1burRMx%tL~2` zizKucFURx=Tu*Ililrki4~iwOxy5s81%}$t+5xCqI4l?3uy>jtC-qn81Yka`*gFbp zy4cRz+nW+g&tN2j{enk6oJq#KCdeHsdS+L_Yj?-S`=#PIfHV{sl>iZ9*2ZYQMzBnzI0d;;CGTM_@>dpX>3A49+0 zDf!y8R9Kae`dF4dDt>M(p_zF(n0JHTc5DrLuD85$3$D9e zX*t)9f4s~sn^c;ac3qijt8i>jkMrfwtSm{dxEzpr03?Dz!_|6D*TVmN1~-FX!xY7?f0ENtCI&$4%% z$%21>&7?CXa7{%Hw#3%t9sp1vtHY6zHc_^=BE0Lmy#=joTx1>P8jdUN}m8IwOA;@o=6yv+_|g z&98*e=(y}9+6une8#8R(jteM{r~76`moxY{J2PSG#V5eDm8b1Q69p(CX7s7%qf|_oehzFk(V%~ksXKDl&#%9*GV837Umj>FW+TlNminRTfjT75y z=UqWp=g?H;BN$vq_;=MF3&&?7jULsG$m(0B8oU?d3fp0cENC-?V zBc(ZWPX#adZAs7k;|(I#UO4mp6nCp~avugvF@cl2+Q4=h1*iJO{RTr-qUQ~GHzf}u zrDJwBn?H%8{J2*X9>2?p&@nY^W83ABbTk43!fHpUE2VT9_bLBXE9KL_S?RaqBUJlv z>f>)h^MIlGVRl(XY^|FgLw<=_xm^uST#^_J60E`Y)otP1H@rm|#z4*oT^oR|ex$Oh zsQ=Adm`h0qV8q}i-|Tu<+qv+U*0HU@-1{CzOmV-#D78%xo*4};2c2PD@l|#QGTXQ! zuFQimN?M^HiTYSO@||*Xe2v+>^m}QaVU?x0 zExx9c1q2q3{;x zt_0JfS<@K@%1@fyDJkrnYVaRS@nSkx89Qs6482M@u8FU>Z&*;L$!m*zuncb#AIl+q zKW4)aOe?WDM1Hb_XU%S^q-srHdYbXO%)gvjcAiktd?qi-aY!+9t9xH?D7~p-c4XT> znP%phRj3oghlRW(4WiYK(BQ6_W04Ty%GIUE!A9O;^e3GAoDJKVExq&X0X=Im+HQOU z=)b>Usv=cBXQBH$k|iY~5RJFTTp z*a6&J-jpIhytf6U*mG>m`SI|&R13VpLbrpJDB-* zM*6R)Q|C+=AP{Jm16cUp#I{`tS7y6(;RhM@K$Fdcq>;Q{1)#?P5#DoS>%ptCW@69W zFJ8gCxVX0x`6Q4>+nW13*5g^^2_2g+*(57m?RaJjVOTVpXOMKs&io_O|E#d&gV}#yj`%xPF9XfWDE1^YXmlase=^ z0$d##1IGjX#P(Y$c^MIiROEeD`(pLSTm2>VDM-j}s+n+qRsCCa>iGur&f#8aM{_`h zxbehRe!>I&80c+UIm~COZXZ`Fm)4zs9JI9aYVk~klzMf?NJ;7?tmf;s%M6*??jV`+ z*Oj5itz+(ClfCahC>R{r4aP&kN=#R%ILz?`kOS6h)Y7Q*x%6@lQ0@@y-G+2(2@Hbm zTWBynnYto;WIG6JSp72LqEd=}#^u{-MX1qkvrXP$s>pH3&EF-r+qUx@7ek)#F)cyF zja*(dtm81umT(Iy4CJ{FWj@t!j^cM3kK$!=kV@-8k;aN*D4(H4jt&cU$)i5}Z6Kpj z$x$;S)6gYLfa!RXSsH3=z-B&=Z*CH7_0P)6GgceM6M7;{ARt7IirLhX=!dTMPij)eS*u zd_-(`n@NH5_2k-NM-Q$&V)VsUpie)=UOV>XF13(UPK=NtIgVl$$Q_6o2T>H&^4}(V zt?-5M7-$)NQ9j3CQB=IC!C>KDQ@3*?@R{{rcbz=YH&!ZPDd-oe9s!F5m*1R2Z(?Pp zE7`rc5AYB@_h#sWB>5pnrw3fl$zXr!$>?Twg&}--50Q0v`4}+=45uSwUuwPfUoX5< zie4(T4+y^^Iier9xwyFC?>xGXZVK`P0Jy~Q(GVc`IwDZ1Do((YNd{2Q{$}{FItEzn z-OaesX7HUwS6P2g;_2P+lyiLfYolra<7{o-W6eM^8XlXU4?hb zM=w+N=$FL-W$54<)vE4)^7h@Z55J^`ch{|xA0?3IcqxtlMpR{Vb4$LAOXKx>y5CH2 zR16I03k{BB52uX56VxEMp3@cyON;M7JPqWi+f2BxgHo@*V}jcINCS)M}CyFQ3d1&?>SVU)Uzf8!0zkTlNj-Wgx7-e+@w@O+9j3Yk%*}m-< zfMNO0oo_=b|5Xn7PZ@rIfg#348qZ3L&{g-{OJiw|=(C7vUZpaRuDW=AVg(Zm!i6x* ztj&^{@X8c1==?YA zKMXrH_UFg6Hp zqM9OvOfUO+R@h}u)6wsXdkSP!=mB@v@N0BPja9HtBA=zH_u|3xSo!#+uYTi{XGh**`f6Lg~zp57Uz`N3SJ}&?ycS;H> zb$+DRtUmdNz2Z`goReY5No&LDjP(ocW~xY#g+cJYL;M4>KmZJjcd-6X$ZrZjKq8OZ zZen2k6d4eLhe45S{65g@PE2Wqg3BeDBTIQ}Q2#>`3*UEHslJJig*WZ?>yLliMOP;Azk}_;^FnxFR;g z>YCj1xO+`=O85k5C_fCC9VlH|^R%7Cw|^qTD>$&o7n+xJyCfx|(bm5ceIL_g{&}?A z>>Yu+i2X4oeVk(qEgy#`;lgs@&GDj)I(${I9{c+5xBsoj{@=&^Ui3$#`iJnF`_7N? zC@Z|)VS%-7ucmy&VsEx|^ppPAA%eX__NsX*Q+pZdwsC1*#tHiaE)PRo-{lJL+ok>i zkI*grqut1VBFq2&)e}(-MT00cbQj6y4b6-!}g@-GK0cXb_4Tp-B0;>2C^d;}y zd_d1(MTN#i;TH;Yk^*0a#)n1r;e*ryvuS#dTYhK% zEt^k2n|V_Qr4!}6PWQ4|PfraId8M<1&lwIKv4Al4MLyBvCVKNFd?zdh8j9~}+>>D9 z-Wnp7_-l+|R->rWSX3m!qenNF=sDEt06avuaJ&BaM<4zF`)|Mta&WLLOG2uX@Tl?( zn;&(oMn5z<8tuEQ_?SVxpLcNJ>RR~y$5+_iu|n`4`r)JzKm~7P=+4+0d7(fp5X;Ie zFkAM{q}h6%m6>;kgSo^#nd$Z7*T{)OPCN+kE7J22**(<4BRu)Jyp62?E!Fuy z{djuDx4;S64(O5&R)3JLDpq^1gG??+^c6ktcl{JnwjAvDJ>iGNezSbxZ*jf?^;ey_ znw;?d%aW!T$eQLgU=vhhs=AVg6s2i!{GZ)cg|}k_rOo17k~%!9l4zbpctkbv&0|qH z{%&>5Nah31vY1RO!7UOjA=7&0(r?UuO(1GRJK=qslNwU8p?u&RJ z^+d%|C~>Kdp_g%CoG&fjLduJn0?(w`rT1b@R>c?vAhcc_6BARNFfJ?!BKPpk9ftq? zx`Kl~wnylz&(Wovdei*3GQ#^01f|h7yWx#FN3t0ul4$0ZphyU?RJ{@Z=r|? z7g4U2IdyLhN#%$5DoG>bBzlC}>;P39d`zLOrX7y7bqm-ts=JJrdLYkHnT+n~u!y1Yd+MNKhKvq?lJ5#iy5MEyT{XaMOy*UZ z_4ZZrtifkJI*6}d3h(3pmTb9-?lZkoEG5-)N|GRpe!>tpTx;%_@*0}}HDp%{8lS8=I<&K z6_EHOaWm#lNkylg%{ww}J+DKKtom| z?79rE86v)?Unc&oqJzboi)iYhuh4WbzobCR;WIq4y>3Nbh;;lI&oMEX(aC)98I1Zf zdNvPU@g5`!q^i1MS!h7r5`3!-o`@}~62s>Gf7;kiQ zoiNIZ`n2BsPJVowUus88FddoOtZW@X`E`IYcxIZtEwtaVkwk#h+UKz<5Q>c|C$c41 zgJyeg9>*HAqI#sN*JSC9#|{1!GFE9BJ7ZB3i^J|n-Nof_#YxmWrIkXtsMqybgd{Q` z=LMhGClM;pZaUqvDo<{na_!`#H#~b*W5P)YZQJ;e!u2CNGejjjV_;WxVj(OG>)%z= z>U4$CtwGMMI<=#N!CkMwvly=W77)z~7fb`RbUzm@H23kmn{` zNE`<26w2C;yD%Ka$t7(B@-`SB=Gl&SNhUpKegNJXY^sqB=h56scjlJ_54ofw=kP_K zu}&k3e*Xj!fFJx8%Zn4Uz>3M((A~Y2=kZ&Jw_lwBYCZ)`z6T|Z*cmuwk9PpIwBl_Y z-g^E4~nNVo!Ak>W>!IHCWkBnUU9HEhveD(JUG31W1vBo z1me3SimyaY4kMa+9uj@PUVl6?+sEBvf}oUGXBcM@@Vp?D{mx54XDpgmYm9#u>q~LkH_@!(By?HVgi2&3htF!h(Q<2W- zVRizK$kzSOA2BddvlBMCO&Iuj2n)3{45b!RWcRaZM6gmOU7PEp!v-{_2Dc$MlE}FV z3E?_U{|ggPW!)Tx+UZB2-mJ@1a_PKZ(yyd9GNe*2-^h7^H<4ySn2#|qfN*UPbwS8! zOMLyf5L3oF^I2w~7v+CnblUoS>iO#`EEqqM+iNe_oj%}fs20oA;Qv#BX$$FwCu zNqGZFOZHw&vl@>Ny%ORdF~V@gSeOR-ejqJbHP0rmP-;TvHId44NzJS(;M%QzKA0WM%F4>a=g{`vUiIliWw+asKfK)B#n)0Ku!HG{P!WT%w&PVv!@K@962E0a8 z8>;=<`EHua9HqN2BhpsBc~tB=O``AkDVo9lUp^=bemC@+GY>!bn!9vViOzHPPO|l_)v&&AR(oAM>(d z`Y7?OhLJ8vdAWQZts*Wy)@Q#98SZ}cQMsFt1B{A~dI4otcn)D=c))XCyzhun{0^fz z>F9yPU_YNN>Fwg|$+{7*y7bhBl!V0WG_xPc!+FDPFXDdDYdwp|=1jDEGqb6r_pR`n zryd~fFE|hc2RzV#v{nH;(d z;*$Cr+o+v$`b0?~7Ff&Lj7U0I0iTJVuMXSz0ZN-;!0W0R(HmmlEphJdw(^nEsCh4a zhrx+R`7c$}CiTTrmS8|$p6dr#KQ7838@z8vqRc_?qXl=s?ima0(tM_WZ!xcta*abN{OIFGk5Mwi;UU)IBRvFL`k`S!|OpNXzlUqzUFqN9P zg$T|o8)Fd@JS`4YAPcSx0H#K`GDJ7tqdpaNnkh}a%+ZnH#?rQCDbl5>=H-#zQ`VrlDfxU;)W9P;RleP#l77b;5?Sxg1Y?p zbg~l%^4qM;6@KIf>jLCBaY>i2E#2fq_h&oTWsBe|+LoXH@{N1keMHb>RNXk0y)ZRBpmmf-AhLy^wP znBC=vsCnuy4?(YZAU_1uefyell=^((;q z&g5IPA3)x+K}++#zFX*LQBtCSaSy1u&{DZBmdf+ zhyjI&n2(Vh#!vXM<*^z_g82u<=E^0Vp3kn71{<<@6RVW%oLesdsB89H(zg`%p!jfQ zwTx;)#V|vOMV$DLxtg-CLDwUO-gNiC96b~i{GScxNC$$(g z0+FJ3o(McmD{2fwX*ZSf_qsca-gbyz&e`^<^0}e+^6?|s=0wvo-OOh!N5J~c!5Zvv z<~)STJnk1;C1FSn&;E?cfBNI|H-{S^O!bkPkMLU?<6G(1-Swp$CB@|xxjp_ZEqzr03MUD zR0X_jzh5)UR*ApgU~YGD@jqN&w@XP11=Su?a{n@I_7^wMM%Nm4oOG)arPELan6H?^D1 z3J8zhCa6`Xkm`H&Evm&61khB#JNB~xS!H)N!438VNKU{Uo(ladaWmMeE@1P3FXjii z+J%s}ENwXhR}3q$L|UoYiW4Mmk^7Gy(EMyOFTO!ahili%FzCljKE;KFaYB=!^A*-5 z@jkn@e1NddciBd|_dV49TZY(qEx9nx1K!}=v)=-iiK8f3>RH(s@(e$0bSO*UCMNvq zt}(qS9p79C!(b|JTE1}Mcw(MHK8xRBJ&RSkOVZA zUbLndAVSC=sj__gy{yNc9K4ITqIop99jZI~=}d}~Br>w2L}q&;2IUQwL!!_F@hul? zryk6gX2cIF*-VvXOw_k1laZB04m@kTjp8#9AJ#)@>JgPZMx#FR>|Hv60mEJ|wh8U6 zJs={>Xl0y;2?z+-RCGB|h8*gcI_FI!i!ovn7H8qSKZcLlS~hP@xdA1OlsC!msrjKC z$nMSujtp;$sq#`>jWQ@EP23HwMdArKPHM||9()R6DumDNm(w)-JH3PxR;^c5-n)Pv z2gc8Ix~}5t?u-JJg zlrCY}ny?r2aST~>&Z@hVKPb)sh zDu%8WAAsQwTh3q>Ta*X)hk<$<$sk}~k*?)p4=BscsOC>A%gZy^**U7;Zyc=8S$D$7 zKM~Ey1<$=W7l$_sxMoUo%Hf#p%m3Wh2n6^x8RqZ4;@*eq5)aBY-p{xYK@!3U2`G={ z+lyi87MqxdkRCoEWUqSq=!H{!lZV8G1v&ySJ4v(+TmaXz{}Of-Kg|yudM)@(WaYO+ zasCqeOuUK@wpuU?x()PAi}TtpPr*nplFNs-et%i@9-Slw$UmG!iRdDip_3QMA4@45 zU@`I+8k3QciBXG?JBRRYIChT0-cJeE~H9ntFv@;R9b_m7kyn(q>t8_@R%m7u)D9%)RAp`L76R~ zj(KntyQK@$nXS4^%?E~}2-|=bc(Wf;?&?@B4 zIy0ev8SCc1OH>JxW8$@9BM~zQl6n@f5U*QD!4wno73fLV&k4&?&57Yk7;D6v{T0$s zr5w`MBzwsMrU5h(zc}LtyPNMXt@ZF8e+bb`Z(O$l9vr3s0)}7ClY@vcGy6QFU-@XH zt5V2Ey|FjB@gTTFCf075!hHEE_(+buHGW9~P5b8M@uWSHjl@4E1|mM1u-8IZ7C5(x zZjLhPlsfc^Za=3zWC8?bvw8rl2XuB;!!8{1MZY@%ip4K|o4pQ@sT0loUBMq8yPCwGlb zc^{Epe8E=-psz)r=U-xZ+(YpP#K(Ba~fF20VVsLo|Y8K`XGeI zKgi)yV2Iu8@zS83`)k=e}3{?dM)D#*vF z?U<-Bw63fyNvwKk_cbde$W~?)7t0t>n;wUXB+vBI7EAn#g7YM=DEwE_Yfv)JsK&&0;l73VEw`kfza@7moCz$Z-n)-arK{#9^w@y1HN?$h zu_sZ$M(4q2Nvfj*`hkB(r78<0k^MPu%U>d<^gH}#SmLc2{Z*ZQz}47w6AB_ z$Q6~m0^LT1j6jmyTC7pP##GJj1EtW5XZFCJFI6gG+4uMIHx)olH2DL8H~{v4#~XLE z^AImfz7wVI+LJRLw7mz3c7tY46<;5KKJC5`ntb_-)?O)MJWI{kG5SewV&Yd$C?z`e z!m6SY;=k7t0mcXamzGFbmBt`sX!4y|sb)$#$w%2j%II*@XFH$6T745~%Kbd_o1%R} zJxDsET&HQ3BOiY^x>3>POS$c>3d2ag|yE>8_y+|D#QoIoayK5jWvzrBRn+hDV}z#7s|@TxVH{ zMGBS8DXv9_zh;o;S}@;%N9&uC3`G#TGIiFe3OAzyo%K?BjymkCsE(@Jk>uR54l{n=)r?UL* ze}U zHW3^b&JEX#gYv6~g(_;qx8*N}Q3N)250>2g;eK915Az@!KZM52rkKRRIp>pu|k5G6dEvZ6B&VWHXG5$0cNh zW~1D=pI9}0zR&uYfoNFtgR#I_20kAmtlWBe#5)g z#1d^{fSVaouBPF?aUyijrupnNL3$GRxc)A;%X-=oV4!VQniyg zruybi^x?Dpr%NaK@Ef!>O{z1FU!Y_9JIeLi)zN3m0+UfcK6rS928qNt0DX&c;%_(J zFvg?02W|w5>KA8UpH9EIytGFqS1MIO|6#fYknv0BHPgh)vq6t1&l$>VFIg}ynKa_H zX>N1pH(%@Cg=>j(?9&fwDc0folh}3nxS+4oN@n~p=61Ph)T$GAxa-_<24OKmfc@0G z6|NX8Jyyu-80P%%jDokX6TNy{>s@H_#bTG$41@5VChfY|um1~Sevs{W9rN3O486ws zD*66W+fzhbd$|SgoUqL=4yCmo!#5dH;lSn$guxYH$CKcIhAT(H*cF<>n9s0xcBzy# zk>BoHDq!MUh7NEBsq4ei4e`t(v}_**Uy#dPC8;EOD`WpYYL?fRC5hH>q6;F^%hI%) z=xc#dSci8FG$Z1s!`D6N1r_bYsidmIU+8dIhp)V~PnEYdckFp87 z&Z_lqT>9G*7_G`g+4?LCZEHHMXGo2F(W|)VqWkpS z30GTrTtx0F&&`rm^brVACgyKd148)hwWG+tlYZ!Wy-c6`L{z3)k$Cg1GZOVvtebXF z=l_yn#lIqg#l$mcB%x zE&Lo>aK1)m7C};T-1YF$qw$A%_w-VK`-If)whO>9(fZ5wJ@)CqU{IMNaAO>~qNsaW zvxVxgo^-n?=H333^&>FVRz6+#jsR7f*PeYU2aV7{N(0|Jk3SzKkzY?K=UWCsWL4+G zN&!)VGMN^6_u0)eGWGpi>9xK@$fLWRdI68Kg04GX;ETIlF2PB1A39r3+-A#6X;plkmk#pPIRYKV z@4s4=Te223NqA$Z^fpg4@YRr-uy}FCQs~6rp()o1=E&n!mz!%kMd!M(pYpu=B;Nju z41+1oC^FiW=Vju}23JJR!`o|_mzd_bqvR zJXi<;X+FTrHs8K)6deRxdavv%6|J~Lr@sX3?-UTGt(I9%16QwvExS@0*HM&_Gis3H zq6rLJMoi!to+c7cz2?1@Dq7VsVC+(6K%9W8VIJBzoG*1*4-hLWGBy7SLtM`?IVV~O zeL3WhKdjBm5O-q-Q8jo$jQ<_yo0EHAAB<5-_uoFZ8R0+=TK*V@I;^!y>hSoX*X$!p z{L4cqvjAoOnJY$3AuAkRZ^ycbkhDiC}}KV5#VcfiozwnxCUE&vY{_nt-u z;z;Q>ciNzvU@Yt!saSs5a~dAX%b#WM$pA(pH1GK&uGyPsi2o7_xsj@vB)`P*_2uo@ zrsOqHz&CI-;0*uMems;X^m=D-06Lf%l9>y90aQ`9DV!n zJE7={V*C9<_BHN3?WW?y(9m(w7MPPHO~srOtK+Csrv2gE_Mi;++@o}IP@=Tzg@ENR z1BHb=Ris6)u}W-GKdb?i$o}@N0D75|)-QaQJ7+T@>xzzTE(@1=#d)g!v$f`e5BYkd&?;ai|-^rQ;zrfn`-6HX-s4KhBc~H~|G(Vf}O# za4_3g7rh~IJd_A~&o6XhOMV%5|5)IyhqI8Kl<+JXo*&j#OOw zk7br!X8Q^@V_~-Bo60fF=mvPhv8{th|Hb~bOW`5&UuH!PDi4hO&idtokjI1Dvs4GZ zSDO%kz`dLED~9fvob2$P&P=vbj=9`h>+V*i(MUWT;m1gI z{>h8;IVX`+UwpI*xBlh29nH(A7Yu7=f?q>w976(gC7UmEtocJ{SNlMM8hF8KK# zc=Ii*R0&wIT&JzdZ{-$#e7>4?zUbcN$IrV7yPc2?u9JUQm4tzEy>D*BpIVtjp&$;+ z2E0}AnTKu_0h5!E7D6NsJQ-Zy+2eg5Woxedo}X-v-(_Nb7nf$Uig=~{FfRarT6Ptz(!2CBoy zzb7Cg_)e75p&jc6nPJ0Y-do%qD$ZZr@ay}j+WUKU&#qBXrKC&yiCR5vm$%Ri8!F%r zQKt8=^pA3EiCqiLmDbMWGNV=VyB~4lvVNPkn?rNRsG%ldd$ulBY%pf0V{58r74B33cV z(a))ED;SDQmAEos2fwfz&@%}PRPVRZ1TEBGD6wtnVNnm}`kEXc>4jsljoC?iI?VOF zH5c==>EIuTeL)~loUix+_S^#dDYICX4~m>WPQv`Wk;ne1&G2*6dj`4Jek4erC!qc^OMsXJ`;Cq&sfy0OVXZ9vUQkar2jT)2Rs7*yU))|*%QzvYs|u9NLx11 z`e@LsG#@1_5>uHZkt3q0y;Ts9l_~Zz4hvm-K${Is!~<>?F_5hHX1JWh?*@1t^vm?P z?g66$o(xyro2eB5@`YRxjV@(UukaG%tS+V71?J84OOAp82?`J z##J+!{9=m2ODpicj`!HkH+25ql(=7&+PAwLW&6UxJfX{_rpIC><1+LceqU+dv@^W< zq9cBbmx8)G&d2ken7A{yS%Yy)tdwJLt)q={O|r0s-I$7VUFV5eYn3+}zX4lZcwIS^ zIJ~FFrsC_9K|=#nwq_!N;bNOp#d>t^*zCAG6Hb%nM%czu=0o36$I|eQ3y%H~67OwS zWbT^pR~EXEfyHN5*YYy^-=7yVSnaguJ}3D7X(lXIVrIjg$jt9q8eO;j%c~C+U?eA} zKxePcM|ukYAS2SEziN&RfLIn%otu+q0e-yu1GBe|=eFU2aAJ2z9WW-G3pm_QovO+l zUMb7T$@%n{xfF$!81u*NT19NU%d)Yd{y%QG|J5J&A~jvQEMFPQrF0*12-xF7rS(^W zUoL&1-9@e%p=sYVqtotr8Q#P(%srh|^M)r5#lgQC8>2q2wLHcCu1XK-H_- z@mrgakDlNVZc$Kna7}ZN2^jKspK)N7DJeJ-5%1gnh`~G+o&RReJt_6G3f~-GJ7DP_c)E0EkPsT8CRQkjv>;0&43nwK(x>hf%H_~&RBuo z8osjjbVj_L($Y6O#>1t0(RfbHE;~{q4)(fbJyFG`iA=nyj0N%f&T_`j(tMYV#ln_) zf7AP=*^s%H@yp{}kcdErH$D%aPU^>){G!kAL}Yt!*R8nH5r02BnLA70NJAej#X`t$ znQ=(6G%J1_7uC$#U{giwoKG;*qKZFV6t`1xu$`Sjt)Sr7D7 z_~e}5CnJZ|E|+!!j6PSXYF{lpmbn(|hblrgr%-OAsiRSITm<7BSk>7L?VFaxTS(D7 z^lYsQs|!dWvbROoBg^Ivs!ZaHe;IsB&cth?#f>6jLFf-RUNCT*`1-kZtsh>9$qN*6 zN}6jTrIe?D%~oCymC!@jc}e2Ku+Ph@WEC8Y7}!ppQD}`n6OqAwf)Ao!_9V(o-fZJC zbGK@R;D`f7{T8qi=phQhc0JI^7NMI1T7_X{cN4-35o%R$(>VIymMrYM+TqXdA1c=c z7?I?QqKr6lc2N;kdplfBg_v@@&$eFL3mVCZ!NL%encf!|SsRX! zh6)skW%nDT!P$-tO-y>T!2aH^8mc`X5%aj=Mr#hocG^>L*E?v%gDpu(^IV(!a~7K@ zGcjKiWSGcU^-L(3LZ0EY5~=6Bt62AF9~ZZBd4&AZNi(XVT4XTmQq5>-3);ltR0DsZ z8{F~kY2J_Ui9xY7-naS1_rl=ivpC9U_s}dhKI>zI$7yIAzol!hD%d+1d7DK))%Ai4 z$=}iCn;f{itd|~p)F9EFA3KWd7$4mYr;Wdswx$(1c_?;0*w%#5tQL8kJm8-zuD_el zz{A56)zc%;lGY5sAkYT4?kV7gGf(5p{I;sB8;jGT=PcnnlovNfq}o`p!-wb85tUWK zh%O{v*Ke$D+#dj|s-9ycD!jMPS-gw4WP-T~{BGB8=V8r@eGD(E4Se1fxkxQmPJDzg z$pDNl2=#W`Q9I4Y+n@ZJyfGF~b779&HFt^23v*AG114m_XQ#5*;#j$5KRw)A0e_Z; zN)+S60n~pRh5i|xI^{1!snFefw;RTfXR!_C6zYcKIXd>^lCHMJ=VuRrxM)sBmX*UY ziEnjNoBpB*SZf%`BMjLK8SLGvfx0hNi7DV9))51R%eAi+D`1cmxq9b4iX%&2y#`}>{ zN0?9fB|7#D?11$NBDB;14tw3*HCbf_lZ(rQ6S@$Y&0^X)nWdOYRRRqXI+OH-zI^!C z#9%?Pp+Li(pX{xN>M!$4$DM@~8!K*8FeHY$k#!U)?c;S5s$RuC;ck0+R9rgS^~>ku zB+UfockJ*CWqudZWZgehDj_kUrxdoYy|P2<`2?j-GFDwvvs>UR)wcXuqIAgHJMyOj z#S3vm1tl$^*avxQNZ8(sbv@VOe3tp5Q%HIwQv-{_F(3(?Y*T#xD4#`7{zAwRvHA2l zssg4aD4;iJ?i-!l+!y7w&Z5a_xs8+<*- z(}3p(q_@xMHx$^0*7KBhlK6;%rWVOeq!b*vni!C|N!__j5A#uWR<^CO59phpvzSio zPZN)&T#G*|e{63(mwU=MKK|{}AD_0vc-fPd(d;uh^}y2*iF)QR9&eG45h0&OmgU2q zk_0NO37AsBjs!#MD(|%F8Gx;lGkxgXgxXi*L347u_DyZ9&^k>#ewo8YvSo~=L{Aco zSw#(*EbAGwHK#`@BJ6l0Bl?~bWm81FwJV>D>6ZGG5rmKtYyU`*{es*_(3K0>QArzR zD;>!by{nUuTeaTvu^P=4;>vy1F=|agVp+dSjJA1cbT(@e@Ysz3wZL(foCuzPHp|JQ zN$cX@_$IrkCqva1UOjFOF0Ulpxja+3G~0?6r^(A_Ec_=ijV>>yrYCx3uLXa#jL{uH zuh8CIFcB!fombd5klwWz)#v?#+j2ke{%QC1yHT404ZQ-b@f6yJgYeQ3l2Q0-0TTIdKmL+S80{oO7y@zL=7%QTC@_3m|qYV#zXZv4UItl=0g3 zucyvaWYJto)w*t_dgco0ZMQ}}knlS7H+#Tg9N(ehm+TDrWVS!kh4H%_ExXP?E=y<^ zSPe*F&8~lY;b&GSIu2qa@@3)8bJSUp?Ds078q$ZhlYJfxeH+^x zFiOnce*2`i(~i+}dw^vZ(JjXk-;gqRVuRe-9fp9@p{d3(tf)$SPpf?m6>4xKAc>Xyq2fuhA(mXwJA*7eIw!F-&+XYwy7Ccj z$QF0{9yL{;I|+YfCazss{X8H?@WYt^f;^XBf3!i@l)A{Ylf}5GEl7(8O|ECh%|4lA zu1YTIY(3&iz-RGnM7?Bv$|Bsk@V1BA}r6<=Rcu$mo?|b)QvTQ+V47 zseFrtZfBzZu1%yUh|R@M22Ho9g%`GKFa^>N(d5%9oiKKCyV8?Yk zdssew#z`0C^!Ut?G%72=VRLd)!DwpagV!*1o);=UyHx-&-e=bI<&g`Qf^X~f{dWTr zM`SWVh{gRJI%I%i(mR*Ovrdg1v~oZ6Ld)6N4-R4&*Fo9+0+t?yop{Qga!saN6uuJS zZTzt=BlFCQZLW^b?o;EAELd0R$DTJdHN}qi*qgXTa_$th`_??3m#5LJ*{Ik)u5VUm z^FC>ktLivI`IX&9GBm%!e80r;`=F}IU9#Oi7MJmxF-(ATj<$K_BvJ^swDWXpqPKu? zsq>YCbZ0IiB09ZxTwPrwCnszlyY>ZjOyi=^$ z37^$Ql7QF}S5jVIlbR%Unr%#mw2ijV0~qq(JuMAlIk9K+7v(V7FMVgc1TY8LKU)1n z|6e)ue`MHVKE&SDxOk-h@>y7V6ZN>AN$CBb*FS-VvY)S;NQrhVauzCG$Qw>iN(50U zhavH6mc?oEAX=Z#&N`a@@$?|+3jRInRG&!QPG#IO67EmO+U&pD8d^XYshgCkTr)_^ z7cJK_fKLMb{bUQyYW(fkqjbm0ykUJKnvOTmq#{1G5eHXyJQMku)S6SCZ#`W5dbr@m zqJVC?(80%}?y$^`N`62OoQW&WW{9vp{kZD9(g_jA=$eYhK|$AL?&^{QduBuNxMbF0 z0$>nr$q^AJ;>XZq;iZNt9Oqw@sBYh|_G#Lj;T@AN6OB%luFd6@7_M2K|NUM%yB{nZ z$ncJG)b{%F$H$GX(d)Rlf*(BsO0+?JWm(PqJ_mha`_bI%zi0=dsFk1F`#o}G_KYx4 zfI!+a1CRQbT6nhvBo50wGhg01e55fRqngW2eAs$q`4zF6ral!L8HwcM=l3*XI3x@9 z=(K8+?=_d}bfNNK016>9;-{z)GtFKTL$P?7<6kQjgsE#TGv@`<<+jFXKU|WT+nhb$ z_Ic6tKYqLgi7RBXhN#M4>nJ`>zuGu-?bE|W7r`9DXYhwi)ioq`DVa{#KM8T6G_tjJ zvM>=t-h%*({~k{X&GBy9wTCVwtY~$&6x+8P9Zt50n00@<+kNst*|Kf4c5(30hxmx? zyP+Buyy2JE?}=Jg7Pys*PtsX(atJBd2rs@gJ+k}q6)0(}(pLMS*Q0cA%G>L}+dP&V zLx6=XHM*(05XlEEsWkF*iIB7igQjQ;9;yxZHZkc`*G6p%pVISg!88RCE~l&^&9yex zbMaP#*j?e%^|rN`IG1$`2HjgQZ6&DwxZzAkNV&fYk@Z$)PrkE0T-*~Y)SS8!ED*rN z>XqRK7F|jDJD|!_%jz{&RNUmSo>e)=RLPWR${kTy-7jsmDOj=JUfvq|Qy*%cg@cm9 z?TdFWKF_<5k$3T;muOhnh|;Zmmu@pWvidYq+|cJIL!;WsGtX6gHre#UE1*X8)U3V^ zTiwO%5B1HwlV#DIdd04>M}o93M|zUNZ_kM5cD#I`>^2H{)^Eo@T#2Ki!qxM31U-dmQBQops;4O60U*#1>6QRbYpH z%7mbD_o1f7Q@;-({FS(<&tJSb4}OR1wULQE#pZ!?fHp8^69!F>yS=yE{V0 zBcPI3W$H!VfpQ5;?aDcXDO~aZU2c=kP9oIh_qUhS^2d5`)eb$oj05=s>SMarCF3fk zBOeALNt*n(@e#QQ(OeDf>qM!{VAi3VZJzPL5>ZIm=`2)L2~P2c_KJH0->Jw)8uUTmOr~8NiC~HWe52ot zbiJ?zK3LE~jLW1NjIN9S82tegR_SuAM%_cy6^eSotEv9r|+U+eOgPQ zvd0H77bcJGOflS-=2v^K(d$Gt>sK#Klkjd|8#dO4)u?@LELryc-9{9YA?AlRGu&%f zb6@WEE6)$Z0{$GIffjny08!J;KVIVF$IpeqSNkD>MOT~RnL^%ry8{OUhix&4tTMY#x7A*$jl4vv;^Xb@7L|JtH7Y(T`v0T=A zZmB-_3&aL)x4)!=z)`j>c8A>q4JUCRaC_e867ldNmyR-Fum?^^2|k8|anT5^+MIm> z_P+`&j|8D^yQdq_#~qG;AA}S!uiKm;X;76OQm3zV@CG*@n{hFc4 z;e{3wO~>=@YY3(HVp!)efnd_8>Cb_&Gfe%%3!n70i{tB;xiXzI)|s0p&(5f=3c%kJ zi$fS`?+~t@ILMLYKc8;)je#9kb6P9GS!KX{D-2|hS z0|-Op1Ra~b1wSncNc|Qx-h5fG+3tHz#m2c#^g2=W6C5@lIoO$7TS?c0N|oPxFF${!o%;)>C_tF?}M2=;XD@sSN7 z8ncsZy8)Xy>u@?OkLIba>}H`o_i4}7h>e3lx4#b3j_9x5-Q5!SwLU_)TvsOC%y;2?dxGK3pjuL8A64qeo{wL+{HEC+} zRp~FV$5zfX&*^fS=lQ3|#;*L1)Z57$!$7~0zsy_3ec1Nz=0(Fhnk^SJ@+Zc5>{ZNGM>`%69(XIE*(EnJS;iV?z~!_E~=7A2GY#bCGYsH3lGC)6$N(EVaj6@S|;NIfQU$lSc z&yhC*@wdyz!1|d#Tvl6DPww~%Vl9UME~xu*vI% z2!-@@L%)ml>8clqCI><8=q^h3wJT#nv!^*E0$`E%{c6sWjsN8*k}9yEfYf2{$ z?u~eXc~t@S8_8IkxFmeh(~wLZtVhzMy7_w@Lb>32j<6OCYcH?eCzGO<>H=_)A3!`7 zwQWpJx}POPQc(x+cZ?`E8Jw>6cZgxw2t0fF{PV>*y=siQ{Hpx;QDs;R;pmkRg3m|;_`Yreo@c8-8pKam*G*_+x)1DDrQY-;r=(`Pz@sMGuIMlKvDDw6 z*+J87@>D1;@RHhB;?#;rd9vj&yXXS%I1Y&xNEwRtfB%4eJ)(MfZL>I_u+pS6=jK=P_k>IO4oHD)^bJ+5#wy}%#M*CZmivUg#Kv|zIH!}2bL5h2sw?r zi?GX>>xXPpr_XUrU9z=iCl)-W-Nwzd6U$`sM(&pC&OWOTn z_Qz2BUmxnPNmMTxGptUA=kWq-9q$GMgp?sa_5HjCM^F4>ooo4$ zmHOhN^*7(pt9d2jck?vTNr%Puh0k~y&3EOc4Dbit11W0(`MWjnYnHgbbJah^u>Y$T z4Rm1^6c1zIN(H7dzGZS)=!46T3WHW#UiY!31DB?E$Dxm7Lj3zIm7mVZCnDaruK<=^ zd@lA=X_OG8xs6BBv)76tpzRfYXzZt2jVH<|HxL*YPBIQsSk?reu81YO(HX-0*b9D*uYW3C|K$gs^IkJN6G=HGouTzD&Bj7k+g{|Hs=?A#iS0Yhc{2pw zh-TFj`&UwREQHvmiJnvn$!V!bS-dJh==fx%XuKkR=bfTl;JMs1&Q3$tz0XO}+zk!K zk03H53E^^?>%F@0_Mf!}?hLrFf230X^^W`x|3U{QS`Gfp%3Y;0lH>I_;Ik-f74hsTIA*YSoTgh-S^)%kC*A5DO|<3pqos$>ENo_f46*Y%TtkG_YhK zdyEi&{hc@izP_Z_E4P~{-s2l=+uTc`1|M_y`_ZFgCBg@ZD5>r0{Ocj`FPHg0{gsK~ zB38u&I2tlf)eva4ljJsc?Al$NZeplIoGkCtdk@!*q=cSTPI9w_X2%W1NZ7xpK-%XZ zYDu>B#ycKD+@iZ7ChhEF>WsQBOlU&+?Z3~4ueFpDQ7xhb?ehOcQ2x5~BEbfT!vwql zxp{1EWJSr@2Y&UG@_uN?Ze>lW+z}D;E6ex1q3tS1N?e#!Q3c5Wx2zZZr^WJF5{^mm zjxd$X_3qoI;-YS&1_0gwcRSW)*`QY#>?YVzzhvVi4n%^EayYJPOgP#T=rn9PB|OvZ3*lMBAf0ve-?`*}x^n;RHJ)Fhnwag^ zVPRshl;T9&?#i4%W)Rs-!n(>{pLI?n6ZgW@)N!8x+@1fLL4UreM|(D+-lB5vL9U13 zSUTDLOP$?2zyOOmdc~!wmrB4=qy>C0B%AoF2R|Q3J^!x%24SDVDaYQc2>kHL`hnBF zc4ofQG4-cHZHRS|hQ znM$sQka||tC?K?R3H2H9GMQN}Wg+U?KAWNqWcm;b?0}Ec5VQ+%(-MA1&Fy&EhJ53D zWpkl^RhTlFh22~nFfQr&jmmZudx-Udj=|#SW1`Q(BV1OVsF4Gsds%k=-PW)(2aL(?Rr|TzJNaTLcfMGIJ zJr0VS#911}QbWn0kx5D2g`*1`uaqB(b`t%%@bt}3v>|6*r7b})iZonQffqN-@tTMQ z3_Qmh5sK>V2Jpp2gitPKH%K3ZtKx{VckV_wBMC=tLP}%=sv+$>XkEM-?5F^OTeD=a zY+lrUcko#4lhr>8+!$h~lAYWc%5g`>r+Kqk$f;$gzV!5CkGMv5&+~Tn>@&z0w+8?V z9hqy>@06R@FOZ{h%k@{?tfEuRdhL&cC?Lr;E&HMQ+T^@8`FccI>$PKs2V8iQfHs!f zb8W0?gD0PchDHtqwywJd=u)rxPn-X#tor@xW`5?}z29=m!B?;E8r`d1@DHm&*WkFonC&EaWB7bE4u5Muq7HB98Tbn46Eq{dA z$K_t16J|Q4tE;3fDd-*W-vXU!UcqW>{G1>rwHoA&6ZKH1#L5Zh-YDd4xv>21c7%9u zXQj^~518#FrRa3kj?neV8*2}XBbnDyh!gtVUTM|=ETe)zi?JZqmc<@uBOnzUe@O4K z`vB_4+%l%t<-a^&k7^_R$BE}nIYI6+bBSk7}HcuQaGLSNgp*d-br}3hhu`&bmnBiOclgjRbGt z&H>&S@U!E&l`}DGYiss&aDWUjPRLzb6T^sTmKz%z_Yg^TpKsR9G{YoezyjuhttZ8< zyqnV>`dwn|L~p;6H^pEzhVHQ3Z~g3+#Rt1d5n`*xaQ}pgZO=pTAy~fy9~Ls@oI7e`i69_Z0`1lPX1T)VH*}gk8EFql`w#+S{mz#a z+uOnCxzTe6lFc?rvqy^pgB^I!$zS19o}sIrRHNEa4L&k`{N2UL5e)`bB%9q}El!)EfIfJw3v3cf;W|w(f7&(Rk3d-8+SJC6GGUvvr02K;1+s*T0?p!%H z?KZ$jw#xK}+aeek5`N*V97ZQ`k7=*_CxwbUP?8=DgM~6c)XH7DCr625P)YFKizBXPd=Fu1wAO-~|70^lbR&lkq#7yHVVmd| ziTapZia3i!;o9C?(7+}!*4hh|75I1o=Pi3P91ex7M5)9S4T ztSh&T>Y6iA^n~0jq2#EEI~}?`7((IZ9ju-zr0xL}(YWN0<<3EmFrdqJME(J~apSNt z!!;ed-viOylEdk%@{IOFr0}&OiTkm-j`4$|Gltmwj_eb3|G!P*Pml_77~-)MIT)FJAM>3 zDOL&Lf3tw$C%c_mvDwj`BL6tY#3%vk$P6yN-QA9#*frM0WyxfEb`KO-YrkUM^wS@o zMw8C?Qctt5%iSk!3MQstLo>S&q423P^M)6P|}|@Rn_K41NKkFB4fHk3s2Y3YnvM+1=qh2#Bk6_%jZN3;vo!y&1X> zfW#TaFq+MOu6mfbiKMm^CEK#i_$w7FN0qsnsB-+XQb3X$wnFgm92x)5;Kz}jCLMZ8 zRmt+8r|3KwP_gK)XGQ~lJ^Z_gc%-ZJrlOy;!&#dJgZ)m+`qppVh;_lLV*B}!D+Ko|0hT0ZSjc3L|_J8d<_h^p3=7>Bw%ll zwcY<8XJ;M`W#9k(7L_)8C^8`=vS()s5iye}vP~$FE&D!`$j&7DF0v&iA-kzCvS%I1 zQZx2_hQW-P@tnG@-+la^`~E#w&-47zaajJzoagyHKg;|5dZWB+<(7odwOgH%u(sQ9 z2LI^+{{SGaZB|CT!-4zntq|eD`&vbi&+LL?n*^Psm3H>JrB|;7>DUW%Z}r$X6>!bk z_|MJyx9L8?M*7_w>z{p-oH)ieBGWAGv2NT2uHJCrtg$p(%uVg=6c}77XuDy`z{qGO zr#}9R|A+k>Hq-u4ru;ULQrI5kFA$CE%>m~?x5r0EZ+dvNOk^l^#F@BF9q%W^W+)8Q zRZbk~TUuHoU&S@& zvQ68e-5C*eOzrG#$=Hw7PI~Z?+1F3({)(5wIP-5D3YLCw@}>Gyk|4L3!iD0?wzcF7 ziQ(#t7M<5~h+Rl&Tnd>iV7>DV$VjaD6o(xAs~Eig;K}8OZUk%u*oIO3ZROJ9EAPxF z?T)s7=biYFXl-($im^uw)@1T@&@U*0`qeh!MizW*cdnIVmN#Vot=dHF6cg0JtqqNh znbiXs(*ky!pg3MH$pZu>Qru2r3)OOZIJWV5JXUFJzo>k`acCT>=o}Y7OaQbF*+7hY zRc&o5tgdIlOIDUzBiC~FklN~ejmzXY7n`mOlV^e>KgI_3Oy14>Ed0Y6llm!0=w;4v z^S#ixlL_UwyvB4E(BFKMD3WTM+**5H;>_Q?1kOdTJ~{O4#QQ3?17255pDWKEXMtvR zD(>LhZ=gp?K4NT((~haS|7=m@ay%sEr4K0ba@?9Gli($1OW333@#&>IiK!z7@UoLr z-f#*>$Q|-`b8>5076{!;UV?pj>bE1Ftyx%I7Rli%r*CeER1mYfHm_s%e9|INW<$2& zK8(1&(kli?O?-`y&m%)zC}a$$l%jRquDPxI8$rs(?akrvF_LFjxuT2$lrh*+E+Xqn z%9EiWO-@E-7V8VD0ZU~yK&DvAQFxhk+KGyeHTZVJ=6<}`M1v3NEN*RNrYmJ|KRYZr zIXRuaPmrSln``GWW5pZDle<6Av>%&*Y;;B$%#m}|T{*$Y+go03d)#9o8b-C5GP&&D zIfR0fN$g4{&2?}DJx1Lce zM{V#QZgk(uN2+%odN?w2W7+4XFY_Op@l)Cd)L5W?b#KnT>WyIBv>pKW+gVTqXFFih zd18GDBaA`uxMHL{bG$=-{FixrUfHqkbgU$L&F5CEwrQ<=FjyFoC0?Ys)46WV7Zf9AXPnWv z*ltphmS0E7h1kFqRgJ?^SH~tIH|dKH>)l)h%A6r@dUiZ(e1tXZb%F#YVw;zwx9BU8 zp0>^c3@psUoK2>{MqDTL04l)woy$B*2{E$qo<8==bZ@v*pssjuoa?!|*Bu$F6yH_t zxWcn%F8bt;PES9iU=*7BBL-QT2>vbBD*ztOkFw&5Xn z6$D(YD7U>UFIqyn!QIC`OKmsz7|;+&OdG4LOm6!$xSi4v-q7E{MseT$vEYy~Dx{mOK*d!o?OzFLG&Pai!#nw07yIA7k5<@-F5 zh7iZd-v`U z#l|o}Jyug47jI|ZsmXvH;emD4diD36f5-M|c>6=s4{M>k!^fMCoD21->ZxROy$I~&De9vwKL+30_pKj`Bkn7-n`m1!M}ioSN}H7=46^f?4^Trz0k7WrBD3GEx_ zSPu)F(DDp__UG-%)4k(E;gRbXxq?{IL1(=jQs)N;Cw{K-bSwgmAzn z1oH+R^(5~9Qg*==sQkl?ak=UN=jS}V{2oQj(anMfMuD}@?0CTkjZRUI=t-xd0@>P2 z{#Fp|7|KA@iEJrwz_Rx0dg6&mE&e3hER$_&t67+FKRT? zQ6GN(4DZ6Ir5GPKxcL72!i1-ti$V|4VOjR$d5!w|HLF048V%XD5^pU2bV$Z^YIop_ zQ3LNSLjQ1SkK>^q2mRhFojGyM3REkFerX5UY5A(i>^N0&hdKI_OAyT}Gx2VdFtIyL zmdx+ITj}|OLH+ol@z*7E8Y~v;L@QCY5QoRx~zd!jz&% z4;!9%uGqOR!zS}}mEP~db_l$6M3*NKOsxEb+UIp34~AQGCsG@O+pr6y>J%{`pNLVpQNj>pH&Kb$>Pj2=G`+_~&Oll~&avLIF2d z++eMVfIu^x=Fcf4C^36xbed-*qD>7++)o7_yz+r3Igj>-DSR%^LHagXN>1B9HG1_} z0?CZSiYf$g`;{PH!6>CNX!kppP13+2#T!8A z=Wd=c4}yH-Do;ff0z)vd=rQVb-_uV9k$Ok0Zl_!mKV>A&8D{8SAsTf1+9S=x7>78U z^&>0~oJ|S#vPh-G=cRR<*2JReffS_jd#Ev;k|Oo->ZG@t)rMK*k~jWh{elrr!CH$}>ghNDcCu4}+gNdXXUY=ZXZ}WY~%>{GMgz zf)7HHq74&Whxe``vfR=1ffu(p`(HpMHjq!w-CYgzGMTtwca^W&iJc_sC+9wDr*UKVsPtwreI>ZUmaSCE1iXJBK$Nkb=D9!RR4yecj#584w-< zZ`cDSR+!|{Fp_%>v_}AK6a;OjFRAah(AVBa*Fp|WShspH&iE#g3^C{p*43sRT=aeW zcD0oiaN`8y3uO8fp9tS`wa~BB08ZBGKTe!~(%FlF#Uw%U_hMgC&PJ85s2e$)-};6> zf5?dJuBzfi<_|VcsY}m4V)WsXO|o0{1Hf~7gL@bQh4C>wZT*>7ZW^eAf98R#gJPKu%)LKz)c#Sa_#F95ht>UR%Pqz?^v>V)RXnDr1gOjGNq$4MZLT} z>#Ap)X&GK@_Hv88&=*!MCvK5?!s19ieKqk=t;bw1$>M+jv(@?Nr00#d2cq&9q+>C4X`mFWgwst!b>iyVhViIMs|u zYEHB8d>U;64r;rS<8pjGLM^zHNsLyS9S>IrP__%5Nn#5VK2tp+d~QTGl;_H0wox~Y z^8zz)%#x*&+VR)Nzs$4*c5xRxSOqfb+?0kYC0I{|Oz+Gppwr;Qgq-PJMG-|e>vt&$ zdFr$UsK|)j?~B#Kc=Kyl>HCIMm+vjzLBMNnaNil+lcBJ&^f5e54A$z0Aa{i?1X2T1 zOj>`pDE~F${vT)HtH30Kg+;9+DLJZD_26uWwC#L!?NA|7S$#lRI_~v*Ltg4P!C&UR z!-0X3*Len27h9%9dW*@`Ty2K%5e<-|_;#nSlFmjIf?8*9yYm*w#y5sAZpdi0nh-RO z7FE#AioT)8(mwk=RK8P~AynCROnl9M5HQ7Ro2;@kjw)-zvGFgY@&#o#>YB$nsqw2h!5js>bw>(F8N|@}#7sKoH1ybR4iD{81^i z%v#Lchg*;c1FTHU>Y}%iKq39JlzXTejFFmY4_C)Ln*L_7I4w#tSw3!i$_TF4Hpsn^iVD)H zZV+|bW*pX+FO7BBFq7hYn*ilulftC+74#TN;){DNP8}E`U@c}O@lwcWX)5bj^@i9- z91Gwt8r`hks08)c>U&f(>&+ma2yW&>cd>zGn$kmdD{t8kw}itExfQrBJBi)%kwl-9 zFOVfISu&en6j47-%yn0~7y+6xSb(sY#u*X5p#tw0Do{X8*wIg!#$f zuRY_{jg7q0knma;S;!-b;x?MDH@ zOfwP*7T;Ef{K9J#e~E;+Hj(aeX1^ESYIg*M-{;!cZ}5;zfJMD=HVJ{{72aCWd4ol> z?vmf;AWm9a(hnbB%@|)|!MY)q*ff`({!zdu#S0v0tZEB4L@qWlA7WhGv`*aA>^g+eQ(p3y84aCtWpr?Il7pyNgJ+ic# z$+WV0IXtYQ*5=i%bHJmLb53;9aOVB47@q%Pw^L_t9(--mpE8d}GQY>SDns(0L@%Xw zf&>`Cx>p{9bh@o@%2aZuOV|bCNSWU9pk&yt!2^~-q24Kd580MLwCcxA^kL zy!QA&cYqqnzokc$?+EE?Vgx-Ym!wH1WlZ3tTtHWRLi)||Z?bT`Ax#Uji|PfVvC=(8 zqA=$Vq1Uq9w0t^4K(ureT}K!pNw~hwee%c8gec?_KGB(Hm}5#2qOYQ54 zJRpRxu4$#?=TM3AUi^<%OHV2y<&R}KC7#?D0qsn6i4vRlF>x_)~a1yA-!p}iG4}n`f9mc&3#239hzAD zv9mh2Q(&igVyX4_$={%$lQYM9w>z2vM(13>ck5rbK9BD=YO~v@%nbk!@SzTL^GzP% zj^gC4Tx{Ib68*)?Y1keKw((-;##W~o>dii6U;#~ELK8cT7ESI)-SdQvq~6-E?=Ky< zh(JIIt}OIeLc$t&e23+w)V8}lmqfjvW%$`q(h>U8j~j2* ziLTpsRLoB0wRG2@{y6TjXV{sdw!G>8Kwkj<6N^P_?PxiXnVxj%aenucBmbd>6NQx&ugFwq+VWb;L^mp>Ce^fcy2DmImm4-g(=BYhjg zwyuxrH%hq4LhiOK@>rLr6urq}a+`2x{QNLeLP13(K|Ri-MkACR`%w^M96|EE)^*sJ z;@4EFWvg1{41PKDYsE9OHq zDBeSzDy{YE7QeDq+QoyDlU=G;TMCY!(#dTUYRgE|R6Hjc5xZu}*J>61Jn^PZ~DaSgP_XTlVNv zOJT`h_g~rHXw!Z%Bfc83bjjQ^^KyN@?0asxYEnR0t07J;j7PK7l4P=^u#WGR@!1$PkC%wbq>Wk;+Zq2(H|!sp|4$67 zlED;2K9=1IfX0p0i-umB&-C4FTqAfmGC{*41cCs^NJ>a5KOKehCYBG8cYQyIck=eYB%*yjS?O$=m^HAb{f7^%5X}V(gFs z*z4JYDgrA5*(ljWZbNnCBnS1Z2$P;5t_rX?;eP>vU07Y!GNX;uXi*@6B79U59r#xQ z1-_+zp@_K!=9qv0HjfodZBv)qEc?OtKKAIf6e_wq+_v35Y^plg9rkSIIybZ8BNY|W znuF@iVO_mJw?+|>k?Pa@-*F3V+Bd`AJM!D~^!3dc0sJKvVgB@1>&!+>h=o?r<`qn& zE3qeON7|(E$-SV&chwwN2Pe37GwUeHpY)cR?jA~G4N-G|8Fc4;kV1cZDvA{>taV>J z|GafzN7GZDAq26oq1=8v=)TQ>e`an?t?y;iMHBlS?7O5oONC(h;6TT>Yq!RGFWOz( zjgn%@&+gi(*yF@pW0c{J2_DaT^Gan2K1?XhdaJmbFC7SuNf3kqW6aG`811dAF9tg@ zGVsF{odv^FDsyPd&m=YK5If-r#S0wqwXr5u?#SsOrBl{Z`!?+*MtsEHeqcD^gnju( zw?1kEdbc5nkcQ+wihy|T&!?xdlc7HT0Jk%}Z}nM-%6?0gEBpze8vHW_d)EV6$0Kr9 zaI?*G4`ms^S-^;Tm(n}lwc}%<-lPzUoG34c{lT(%=edA=br?VvHLuLrQmW; zaN@uT!n5mR{A#R)4^_cu;$D%{H9`)TFgM!=wRIRV(w%V|W@!I*jq;kyN}r zQfl(Hw=HB?{C%`ZNZFjxiuZF}#??HDC80dqm~eEH(~~D_OQl}hM5C!oyGEyy8fU$2 zJp@-mPk21`5jly}*Wv+v8EEvA%rEp_Q@TEA?AQUz(;^(?7J$eCQvQIe| zf>>xUgp<-Y_9Ihrq#|<-Y^=#vKrqApgvw9#m_6;9e*1AR#(B>#54(hdfS8=V4W-kl zP3tSII@4HAWsjVlUZ3U!C{~ji&aEA0{{lM+oEIX8}yxaa&8}Kj2Mc z^*&brmtKG2VBAZ7zD2z~t)_n9A6zE$7T`-QzlDr(xYef>$)7BS@8G(A(u+DhD2b?j zIB22gUh?p^QbeiOx1!Na>nKA?hYtCwcI2}cN~yDVOjPxVK$0>z*6^}+S_n1E8EQSK zq-B-JY3vfFOiShLJ34RMe}J7AGt4y{niuAFFc0Z=a9A~Ih06GAUFc|`S0cGu7*ldf zRVRbmjXicFhiGJCmDCBnzgp0}uWs8spPVBdL(Lq~G55QxjotZf{LWM5UTwk+&~D0! zQD6sI>pe(*5h(|5@wFhiuwpHl4_Y;vxE&B@;k zMEm?GNd)QSOsqZ`9eZJ`o=fB%{~^uwum~thdq%6M{ zEa7rTMqMIV7aUU+Fpjyco%+;$9_lW2Nun{E1p17SImYfPWX6!yY*Y;H_ z^RA%0z^l&ax>be!DYyiK3kDsOjN_PuZwu28NB^jCoikdjZ`}qw>i=v82qp;U?#%-q z@1{HVm(t)D7TvOQA=q_ZWQ_0|!mFhgaVQ z(oSvrhu_`LOS`kzrdUW5V+wlfSO!?yI*}k6Fu!vf~fd2XbpIS(gyPxNcm@=RXcwp1eaav?8hN(TKqJjCsH zct{{+#soriyt2a{erNZ}hS6gyH1%CR(CGDNd7Gg_H)CU8OaF+=a>cC9nw6%<63g110*v4~n+L{M( zJNJe#jy9|jQoS9XY{|c#e{zx0;#WUsqdRSz)1njd`t zNmvDEK-a`-SCv+;KQ};oE#vDIl(3L2vr}Ok3oeWfBhM>FWf)t`3AZ!YNxj)>SOvJ) zn+)M^37_s2BNT7}_3Trn4#pVg>J0j22k!<0H2sTK(t<(d`bIuKS6uc)N7ec5 zK{pxrW7a0O(~jeyu`l)BF@`vkL*q%_H*5CGnxCVL7c%h|`(ChYAhs&|=CHTteiCX9 z;itf^&15^Xrpol}z0$d$=XQlS(7(@k|IKRj^aJDic%?ia%gsHltmt<1eAp#vOo5UH zBGmh>|NGku$YQYzkG^Yn3tUNU^=i#8Z||lN#R`e-iCS=*j~n=q>W!4&gb|oqz)FrA zlK}h45y^^PYw~^e=IRf{{fHYTKI}uQtXt~#Z4cs|ELiqetLF!`=do?P@5YPOjeCFr z5y|L8ZeSw%G};0gn3!>gK2)uaJDkbZa?B1O9$bkk^X(oCTucp2TzXG!?GGGwsLUy8 z(Yhf`zve7|uZ|DqY_;K^4y#MfiZWU{;C4EGVxqV$?pe?k1|K;VY!8VXHd%@|J*yQa zn)9+O?B=cUTZDF}%x4!JA%#XdhRL|bG;00m6PAOfdc&fQjSxeW_6>`?j4K)qi*E`^ zETbzk8GRnn7q?$4FVanGVg^fk#U+b6N}8BoCcN3K*CiVYJd3~JB4)*ejc?uWO@AQqFvx;9P|A~x^IR_jeFbq zGS+YzzVqYM+Gtr$AMe0)rnjcuC9AIt`{>fagG)F`?Xs@oS#0bC%Xb5Pm-bSdiN0Pjrj;9H>{NGXUBbtDgb6or7~ruV2|1 zM3}-c$2wr;I!m^ER`DAs=T`;GaH6gm>g9Z%93>*+?RMFrr?8UL6@>u{H^!P|EnW&8&Q9oey(^VJp2@e?e=9mYEP!T`+iM^7l@ z8vMu2-Du_{wT|A*?~>*DAVX_O%?Bd*P_z}sB9iY1esc|Tc-cJ@yWpNaVhd;&UigK^ zCXxKx-eD}#KV4(MZL2psyS358g`bAwnv;cm#^-9=+g8M;mM#$@r>s|lRa7#kO(%|J zC`sRIiy-)lyrUmrLof7g8{jbGjI|9vb|+=OQC1%QmUTUS$G~ESn3c`Z<-$$zQh&q_ zF76G-&Ran=E0Wd-zbT`L^DhFBVBjU*nY78YVQ`ynH7tP&U%8Ya9mJ zt2zANa8;EVZDJ6=vW0ss(MCGdN`*9D zr*QyNdvmh%h(o1EC7Itj+cyUh^8rn47*ltS8(dmtn6fI&j43Oh)GfFcubw!m5Y_jh zd7wOq>gK-}!aQ)yO*hdr4$1+`>nOq33MKbjB8C{n4c--010uS65tAQrSVV{k#$_$^ ztD+T+7ZEE@yvpiDVLjR2X1e2wG4#$L1i&o45L+2vH{=C5rLTsY^s~9jZr_NDsPJCW zHq&c*QH&gW{EPNmYp=-aOIaw|&s5CbL0F9MHqv#mRHGLd%VYA}|!P4ym$#dR= z!-}6>V#SzV4V8GWv<)EmBc47z_N5W-{a7$mm^B)8xB~fu#W6`hS<6MGKm36Ha|L$+ zPP`W^GxXj$6lh{+K7Y9@(iu_bU(MRXf7u*~ec73eOR`=e17RzyX)#7Co$TZ5b5-@k zH`P!a>Ae|rj&?+{X)@VVp?vD*#>owGtGZQD21p+JTw~@=hnPDnC-H>IvRR{zvpR%? z*HQ~bW1oXy$Eqw{|lfWz21DMpkpC~Fxg zwVvl1uo@M8u5feyV3Et&m-_Q7GmzAvA1ezZBpR&{HP2l{&jQtXAb0aLKChhQAR!b) z9OP22Pbb}xbWQ}oBik^{`38#9OC`02jC-2gK0#Nm9l1jBzYkF2%G+xewS%Mv-RJKW z@*_aYkW6v+)crAKrP$+u=HxTdyeKk75n_Np8B^@ybr;PPV913hy@?ne3riJ0Y0okq z%74+3N2B`AgCZ>EBW+bDAdz-OBD=GwkKcIwM8A#b#fN2sgimSo!<^3rd|{`538=E3 z<&P0_mVvy^IK?_RGV+-`eM76=!rjDgTPvpZ7gtnYh@w3Eyxui*12j`5A$e{MU1dWee%cib%t{c|X5qNB^1*A!iS<7*LDif!4fzV!it2ngfK zco5nfK5Os%{+d*TL(W~tH4(Qi?il;5C=@lIQhCU+^pVWndQ|mUZdS%qzBJ-&`iGG{b=Y8O1H^_p{lW1ZkVnhob zBzm7KsQYYyiY(~)TT@z-qTg!%x2svPnqMec53#PYnHE0z@Sf!o#T6G(t$=oi2qVhb zJTa?dD(6KCuY^iTL{Bmi=31*f=K6|&CSr~K3u}&I5exRp6_S3+4H-hGN!G{+(C@)* zY$Irj9c9il@V6cx#`pq*x3*Njk1-39Q!2uLzFVT(J)RpNxAT=k*9vcC%O2#x<^KERSg=g z?af7+9CeM2iKf6#L0jn48sAhwiJ}m}v+% z^IjCnbf*|b5t%h=4^NE|L!1S!Yq?d>bP>!iZ|q%?GHn2%yAMVhRvpm*JAU$?xdRfy z@Y=|RNBeRMIk#Oz;k2tWSe=Z;xbh6%n=YEkd67$U8plrY96h(A!(JFUIU%>912rY=VQPHw9IkAaxeL8tc~6qKPG9>D8;w5ars~JgrmYwYt+@! z_ZZv$m6Un8w>n8M3`ecFl$p4*=`Y>&zukA0?uTj zBXwyV6D)dd#ODLOt6F1>lx+bJ3#<61YrXF*?atqKmd^YS&eFIM6sbSlfw}cU;g-Su zS&@%`p^IV~O$0Xex*Q{F8dr^?2en1(I^jW=HXUNrM{=2sKy0-7`TX9nl2QZSXV#md z{xE|W>;3G@9xW(M?=uf57zcsZF4%zDNgI|VEa`_9$fro?=<2fUm@0f&+=%(it z+cn(q)5Lzh^H zg8Kjo(^lia84(FOx9vGeuqi1X7BEn|RY=|0>O_LMY+FCU*3=6ByC+mI88=f+i0TRN zv9ndkw5vI@7TeTtwrKdsa9QogjeEGH*Vi8?2P%G#GwI+Xo%`qa4 z_(pBL4PR^(;L^4viw?sm0E@^$Rzfh${aex14|cCV{SY@g>czmj&o{fK=WIT*8BRRQa6SI^at4vNqsl9|P6+CPv&Q-?}-*!ikuATnHiwdg# zqr(4xdt89e;gjyg+lo#d;J5eduR zxRNM>ml87q$ z<9UYPu7Uq}qW^hxfxr0)&?}<$G(y6%PhCm#v=c;dU3|_X^pe9$Trb)<2atT~tQQ9E z$b|hW-6qReQKW=l^U}{5S&RV)0EFnr1XIZ{s2zR6^8fcwum0FhDOwC!$lH5m8pjyE z(6`?5MyS;6t~m)(z~GoAj7{Ls6j0F9zc$M4RetBD4%%w>+^`c{N6DK6zf@u|#9V3K z2u_wR++MyjHx_fUWln3l=92^>`!Cu2KmYOn_FG#3KzKvEUP!-Qc(@FqY_|6TQ(8*b zSC;qn`AF1UI;RCYP;!K|UH3wJ>LOcpKSuBK5B=dJ1e?y%mlXMoq-PLvr=s+DquIyq zlB=x9QjX262r5aEfA{~L0`%;74CvreP8@Xa#c26Z?7}AnPwNjK>H4%Rz2o1N4a!Ay zsoEV!A2NBg#U$VWf|lf$D;rqYNZ^l5VeEoJBhSSrYlL zLgZgxU=p9n=>x#6v2y$ng7sv=H;BK?LhIXpR`})5jQk%2ZlBcrT9~@2d*x;pT%uWO zv+_7aC^R4Hu|CMFH+#v&*yB9HawpM)U})|JeFEQl^8fQ_${uQHxS8@Hu7gs9$0BsO zv?Jx;Io*QZd(yij9`-T*u$H#Xg;#i+cncZM&Xf=~%@-X)hUYu4&)z!4HH=A7B;M5@ z;}&w0o+$!I9&vj{aH6R228aS&6>FzI)>;2{ckF*F1z`{tsZ_mHe>vHXW<)yZHH?sk z0t~P_Iy~N~bn&nTb2>uje{$|VQKIGYQ;3EXkb?)a*-c3wT) z9jpcAy*Jzjr-^R$77^a3$eRB~p8{9@(IHz0D(vGl=qnNeWj{@jza>IUEs5A(R?--L~3b&+euk}Hy|ecAIIc>9^8NZWJi_J z$?1Y?Cq-x>9XLY46v>@DeoaB`CMTUrgl4OJ@r>(rhWO&xkF8GP_0&5T$`kxw8qBvU zJB!y7XYKJ~mWPBk*4yn<$PA$$jNlY$00n09U%A6cTRJXb9 zvcQ|_s*-^IE_jXJ&BVe+SrqsTBNV&g*+*c(ns~mLc z9q;Z#_zU((mbLZN*Eg9Em6LTc1hh5oDkvzWHwXI58|Xs{W9=WiimhDMraS)MR;$d6 z!N5&I33kf|YdC7bN{-+vWK-mzY~ioZzT%7`+(BG4;G}WGTZNAvL&S$jCv_K0_9BrI zvuxqfBxxOK!fQ~z)vSm_^QI&77|1r2h}Q(+W!&v0yoiYuF&mp0>rQBi?>Sq(jgHTw z*9uz?19S(cdpv`))eme+A?nUIKXE@+Pm$MYipj5+KXqVn$FZE4;+ERp#!Y8j0RVR9 zZV{HVTuziR@^|E{bYb1tu>znIV5RgI(HxscUUNUG^d623{?!5oq_%&XwB92bY7JqT z=roCms2{uYzGmi@GpYTHOxXxE9F#uQBPXw%E{_!%*b5Al4VqcjS5{TYFli13>5Ro< zR6Cuu!+3L}be9K!DqA^v^P}Nk%+9dbPi5vc17E&qn3M`W7hIU{&o807R-FFvq3O@?2KD1ZsEFai4?Hync60Y$LqOWPAg-`|r70ixKPXMR zZDUHi`{46NJCu(U>+KNPeu^EA$2K5FWetu!X?<*c`1ztqC1Md>76Mh4o}-alsBefXR}X zDsR1NlC_S>svzR5kw>-mtW7714rq)V4E%h+_7m*{DimoNU@SqxJ+&+b7<5$ta)~-I`iY>GZJg)Lp~%>rO`QQX!?!T< z@V#*$YUL3ekp33X-vX97U@S88SU-r^Vp35MZ?m^pguH5#MSM&%RvVcF)4K~07i<$k z&Slt0TR6qtdD*4DNDk#tsJc~q&^jnP+v+XtAu#pZ)P9>`{_gI&|DGP9RQ>2Qg7r|z9Y}1j&fGLxw zL`NPk(d-`}6l)MuRD&un*ybuPAP^{XM|8xkM9gV{TAvwKsXeAcCo>{)z7|2d-{8X^ zzg69V$8AjptO>yr;y~bRRG)OU(SFPF=^J~k8(!NV(9Bh?`v(T9W+}P}oLBa|w7QEY zbEvfXY;0h0#tm(ogmzF-hJtHhQMP|)(f89dk)zWtd7)WOJ zBFY@Sod&QcbCf6t{!(4SPW@J0_8tq#X||7Xn0k~mD=H7)T+jsi>4z3x#3e1|*>A`s zau;0&jgyT7B>u@nJXCFWc+J7?Z)nSdoa5`Dn0r|5fh+(NVS7c(d;IfK!|u)TCWR86 zG=!=rwhwGgu)TT)EGS5*;;t4*S>5;#zqStUmU zc6Kp5t`{YiJ4AB23+ODn(;W%q^fK7vQt71q1Xj*bwLR(v=jidM-wId8Lyafy;glhT z0YIiFP94?Y`yv9{vY)=WPg4p4DB=73m<8JQ6cmU%uR8mO>jGr%Jv~J72&R;{!du14 zZksE-pfhH%LlZJYI=z}QTSAWFbj1o3H4AmQ9ajkM9?HHXS4wjAT}FlpqdZ2YB}ElF%-yuv2&VPv zZCdXbiG)*CX4;uSZOEEa166m7BbUTVV^U(8=v)UCDvIto|p$l8keBc8_;bw+_ zL4oVnjZ9{;d?q`Fjfx-z`&t?Yo98)GzofJ-Wp2q`y_&?b^V{0^0DOGB-b>7~Ij|0X zX4x+Dc1=9AJOH>BgWoG3`&f)s*tQRBZh9&s=z*Nyffd|ixaD$OtE&AUUd}DhT%q>~ ztKoOd_&v1-nC>!%*LdEj@(b-QP}+Q*W0TD%X`~0`7fsL~0z*iLlW!M^fIK27w>7uPh|b+xSl4;0L{i9W zrf4}4wtELY`()C0cQcy%?}~ewJ-A0PZ*{s~)4}`lw0nNOgWS}2Je2ARS9`a*nP}R) zv?LGn34JQDD-#hRvD<2T4|}5_wd=UwFpsUKcTGi_OM8c3X=yaWxvzQ$84oqLwY7yl zV9=ENZ6OZ=z*eAh@e?|rphRE=mI$k{51zONY7zm)l&5a~{360NPym&jIP(JgIeB}e zfj25HEiG-I>ORfBtWMh;4D_G3rxuR>t1J6IeZeFgOd`!byPCcAxAe^t8b&&h_R7t2 zvFM5#yO8#Cne0HnPuI?a$(~&xiSKeLuPiQ~HDHF zxdnw+bAOzZZEEIv`6mBXiP79&tK{W`cUah`UAlGp?vE6u&5l$}P#8VZAD*YLlM1ka z{4T4^6d|cQ?>Y4($WO%U)2}YQ)+*Tp(m>#Cuc2OLcX!)O$b@{5*oG{G$2K#l11jD{ z!(%JsAENX>nO21cj2$>B!ByI0__jB2QHZyPp9x=8B36#cFC|Nz&3GfI4-fRygUyI< zRL&kwL6eX#)&2$nZ$*9@^`%1EC7E%xdKTfITrR>b6#L8HdQA21v6u7S*2%y&&C=_8 zh{Kr3mL;1@v9sKUBlN1Xk#-v)CL~sC*H}PtzLB-|=KJ^WyxhOqn_{r3FyJ_c4CBEH zE0ZID@Hm!7VSq{v1XzTVv{p-hCbk?ke((NBc!R!!0-(h^mU&=1ESd{^nt#*If3sib z_v(KwB_Sb!?AZgiDh6Jr^kq$+fM7Shh`2% zlyGG@1z@dtokF{-5e;4R$Tb_4kXhTEPw$L?{b9u!q+dGpd;-!PXs{I1QOYY+WL&uK z--x4M{I@5P;=i5YjK!_jsXnuZKw@1t`IEbRb|_m`TuCTQr!0j`W% zd_c_ozGUBXW41>eo{`x{`DphrBMU~v=uIWN!hzO4I- zxOi)1@Nl+b+KGeRQ}mT7yMqP`YxO{#!xjB$-$n}rC#0um>j8qO$%Gz{wHC!-7Z$vF z&`f8NINjEn7C}4Ou~zp#Ohf+rsB!&<$ZfR1NB^&;pL2T$E#+1WU- z09Ke@9I-rhNJYy9Ol1Oq|hvSTyPk`z>$$$DzVj_B9f3Z9e@b@n#WaU zQ0)Jr?99WV{QJINQYjTub|z%Y7P5v(wn8L@tVLO~jC~y`vJF#~l%)wVmY8H;C)xMx zJDIU>nK8r67(Azbzw5f5>%Q;j>bZ}jKcwSuhslYww(!AL)DX0uEQbJC9_r4W0+`dP$E6wmbajVXb{X-H$1Xh=aeL_cfu=N&!!k z9^VBLKQ49L-%-g!!q+%viUS3u!)ab-w(yAia16@IZ*3<uYmc=@ipwq6V!7+;N*@c5scefbL}ShgbL z_~igwG1uH;!|gnDKbt?0T>>z%_hj_X05N{t17_^VI1zNqQX_(t5&;J$86nI+_WAG2 zJcQjy^gi;)td_-+;^aw^va)(%2)zWWIGVT_sUEbjbPr$vy4c)iL%!>PBk=Ufw(o)p zjES?3286sG<>4FVQkm6@|HNvu(a;RR+w3?7q`as$ZFp4cu)!%5xu+4QZKG@1(6ZN-7S_Ii}(i)^n77G7x()@{m}0E@*AExCq65h_g)R0V0U(jvl%* zS-fiZDXUfRgby7i!u#ajke(N^CzuvyC9y+a596QEfU&RS2s~l!&{Q`{xy64?ZSV!} z!ga5u*Ew=e(YRC3*^VFO-o|%I%CCM%Pwz(6%*$xph@3^1&7C^{rj&kUHXjnpFwj@S#)Vu8NaKrO4{)rsU@YcIP z`ilX2As$}6&~L1VPhOXX4o0)+OG7o?{}zW zK3`aO#16F$Ta)9hRn6#&a|^l^SUrz~pW@jYY|ndF({8;Ww#t-4mIftKKac$-Pq=!9 zmL!lL66?Vf@^z_jZP6q~^u$em7VrH*O&Q|~TPq$xeV=Hs6e^0n&Hq`JSmwd4(;K5^&kD>#-*Osqsldy1k*MOueUB*}Ccj287xjAV>Uu5@N5!4zC;3R=s5V zH#z)~DV@80kMRSojvB8$-TSM{`85jl55-xZ%E+H=<4${$T!Up0DC(w)S5WDNz}`FN zR#hGXhed%~4*$~6x$6E8K;RJp6C?T7@(%YK3nA=Kk+hYsF#kRvdG_2Q;jk<91!Ap? zUF+MlNHwfyz=g~Um`jmWL1Yh>T6dZm*Ae#-yF+jjmKL;uQ{flpl>dy}jg4j|(JXdaoXn=%zq}sw+ zZXGZLCG{oU*#feLf3Pqyq$glRjlE>|`oU5NCDktb4|u?HF7g2GM69e<2a$0`0D?F0 zlRlbY-5((W_Lqg1{pjWRl8$$_?BbR4tc;8>JiPs{xZdBDi5j7#T6Xu}G-XR=qyyAM zA7B;o%@)*$Cx2}AX@ap$K&h=3S;S@VWm9BJridEduCTQX5a2_+>}@|IsCp8Mz^q$g zSR6fU*78Pjt9%`Ca{uI%U)gM7(i>`YV^w?iwWG4XCth3thEkukVgs3V?H`0z=@kvH_IA3pTh z)BvNcD@m&pO=oAPzjdudwdAV$&sSeqL%B`RG}rZ~u|p$~8B8btybA>I zC`6*z#eS^C^5^p95SxqrcX0$(Yr%|eYYypWrcbTM{+XbL+;}d`9?I=Ekf0v*0`8rc5e;u6c$NX_xjoRMCK$U z{2t17=)P5O$8FchwpX*h+AkCf-B6uAL1ALx-Lc;Olc1p2s+6THvD24@Xi^WUyw)K* zz9GrY5rK6qt-!vMO`m3xzRH9UXfW9&zcalpc+}JXw1XrQ<1mCG(2@OUV{(W5WFN4ZD&p5w*M6C;Jb zVq8C+Z+GPE>prV|5I-1v{^!uf(0ypx7rG=(Z|}O4G;O@81|0MN?;%;Zds3LOzi#t8 z{V|Otmn%0JPCX#xkLojZ6yv>%(}Oze>!N!dz1?TcEG_S((GYvC|9VnvBmbEj=hR`L|DCN z{T>9GM^1~N3HM+LsWFPc)`|K#DL{UY*>(yqW4yr1Ja1C(v;S^*u8Fmgm0vLDs}m7t zvPl5~rg%>PEzmm_U33fE;>#xOy=SkKf^WQWyYC6w@50)g0R?r6rgSS)q@su&?_esg z$rH%6Cp0I2GN8ihsxN?CbF~Cp!QPdH%B2cxvE@AT0XARojY!zY`x zt`PILwze!yEaSYHN4*1FC{`^a7{(lBd>j8VXnz(|9>pYST`$I(40MzX3P-0RRLOG* zrR6yXTiAV93Sda?K6MVHI%&k$Jqtss(ZB|H zB~J;#86b6v=&<8L%QN`tf*6`k%=o4PCgCKQC00tyTy>mL;1w9>)s7%Hy(LNHE1ugY z-Iaa?$7stg24C9Z=Tf-Kf>^qlcGp)$LN(_-uG`DWN5+wpp?USOzowYab^XeTfZ%6s z&#=rIuPc~FI1me}6ALX`hwR*HmKU$Ho125Jx?d(uKLdU4-J&l`HPfsRC>3=YazPn3 zEI+TIzWr9Y{=m1s@M}=uC8H8X$qr@IE1eLT8??vsS{ZbBGdci{_W*fo@t2vLkj5Sk z9@4c}TU0JC(I?80{PrzA>fZX1mrVyi6Y?5L?zGMcIoJvL#a3exqbcfwcRjqXe-7pu zMH#L6Js=4Db$BLNz~j zEq{t!efOIj_#Zd$q@Yt5Xs)j!$_cj08`JcAta?>`X8I3LuY3Z>Y&5{aH^Lo5+dh;k z=uiYie%Nhhz^v)7AX0S5_T+i5=P3J;QU`_ohMw zcbv&LpMbM#&(dt1)%KTHbiCPtbwGR9Rv)51Rjeo^OYt4$SB_C+=2gh{u3DGw@tNZCfj>b{nH z&dd5^4wCgG8_Wgauq#0RdS04Jpd8N3Sl==LXaZ81Gwb(>s6~^Gw-d@NbT9!u0CsTq^GDra0uOKCu6&F%L zCCKyuaK=ejGW(1Oz})YU48FKWa0I3sP#Yj>wgpkyp&QkQBqj!Sy{y~kZU1QO`rLH> zMcEB;9&5@~%3MM0SDqk;)tCLOFQlj!W%9>NvcLU=!|N|~@B@|aSvhuJf4GRaLZ3+`U=5&DLUYuWJ+HIq!d897SXY-UiXS{e+1)O4cU;Ie z8Hq_M-okN=4ZZVJ)bPPF=EVyCp3AYR(m<>S3dLt~%UuT^9%H2+-Vb8at zJsPQJ%q~OR0nzY|n&-kAAxLSV4@17VluI)Fni;oLAoFvC86y|Yn5E!1C_{e)} z2mutP3jA$ffVJyL>C{2v#zx>!LKgLO+s;e~nBL(+^1vs*y*2rIT&&kz8Mg zMi{2~)|<-_Fqq!BB5zwt43Bh@Q?p5{9)JECSTN^z!bw4omrS0mkm3#YVSNk7Z1h$$ z^%28*<`5wF%q4bK7aBYYkkO^)?}vCjwZ`jy6atEoJC-hmZgP|lLGwumTL(p-KWlg^ zxHvw&Y-w)i!tcmuwHsh#Cll)!QDf<`7Bt&)%M51vwGnvs_y;bHfhR^y;UoSJ_+GzP zcsOUOY*Ds;_GrlzXB@+`#Jf53A$wJmdaDqPh4B?9CGUU(>s~Tc_=Q_eUMagaH7@L` z^EFrV$ts^}b16X(VB&jkbiGXyuK9A50Ll0{5xL_IZ@TRip}p}58OL2&5m^$`VvOCI zyDUr_m^OJ$ret^TDk~ERBi{r`fA)hE69WtxV(AWk-%0M0G$SZ$17JAgx^cU4FZU=G~9RAdgpU1Ba|r0}Yo z&gse4ZYeO-PSyZXg!DN0R-S^T*hCkXAkzMy-0tZIy_W=e+>_i&Nbn~ZwQ7@r1gRi4 z{`#P$#>hPCVAZ&4>9R>$u3Yhb6X-6iv6BpbW4q%k9M(l*m)^g-@hLOV zvMQc*v(@>>u)0GVSimZwWe4KzE#QG#sMBw;YJG`-k%p>=H`;G{-hb<%tyS==6&7>doX${`Jk=^(I%TRtQ~VC#r<1HRHd6c#sb_j894S42j@`rKCEem19SQFEjLVLk__(xB#0(q#HYr%#9K>9tGSKnIik;=CQkZg(L;6Tx#BkNR> zcenKc|C!`jsV1H+oX+UHU!kZRJ4VTh{(5eAbDnpGfsdVe zS!#f?m!+``3pw52#~7%$;}_jegX43Z&{CK6B#agZNgFAa1FY*Jaj`iGe7BDR_p%R3 ztZmVO)a43R%R>b>MYObwDAR5bZXcQ?ZMEU^%vBvkD>Ot!Tymz}Qb<4T*2u!5XokV8 zm+>Fkwyr&Qb!_pA!4iYYtM z)3Cd4Xhf>T8Nqc;ev?meDg{7lGSygdV7)|XiO??#; zhM5$U0j7BOE0>%Xo2p%3`4wFlNrLVY6_cFZ_Zs+~e>=cS!l3Q&oII3eSkuJ|*b_cObli$Gb0oE<7F%s0@U0HHI28wwAX_R~s_i^FxCG(l% zN1J|FQ~Hzp+Y^xehucweH}u7W>=!FwZe0ssDhanH13PGbpYeQ2^AGdmZ!gtua0mh| zl9yFLW$dOlE5p5jp^)1tmvNCcBKzNFE{PmFd8%nE1c02|_pM|#mAdP+WHVg?dw+9~ zNNv>i%uJb>&tW$)ui7*^Lj>0RT$Xd6(CLUYf+#q9JW-l5LGG*~<#j8shx=1bs-qJV z#?cFj)ZZtm~I@Pr%W^|$)y3>%NplIN8S>GT}KWswJ_oiv9Xs3cW zJ$i`oT)9EafU?Fj8OZk;i_KY4hGWe`BED&1z789ARZqDoDgZuCg?WbI`PC;|H*oe! z`g#1SzXTT_pkiVw@b<4ZH=H7O_0yI8M@|LmEds6F-2Am0R=%kRio-hHd!#heg!Kji zci}00(2S`*v!^zufMurs?#O)2qro@d3nAKFGvJmN$K>0Dw;a9BzhCJAgcIZu!7CKa zj*5JT*2$G8$~rCD{TD;*Iiyx~f|hFV`AJVTCsu=Ek; zOK!h|OkDBNV3E-aperBQTMfQlI2ICm@63WIq6y-Jl|<*-@f#QBwv*entuXzlazKeg zK5i0RO3Z$u3P}X#`@`<-C$3XrCC2lTtpGO|cV)K?jvnqKJ}KH9V@*AyWSf<`yyQjq z6;qkrtYQ^T5VBR9H=V2GaTBsU#j(y%pIj;`TJZ2oGnds=0Cg0nwIs{VS2M==%`$di zg2QkUb5F?&ZsN!L_Wfx!HYE-#vaC|ah+vo%Z@KytpXC8vvhMS{FwSMGG}HcHs*JhC z#?Jx*lxRK70m)%nTC}(8E7Ky%<;OqnJTj@%+I9$fS%BKa`N^)@L!v?770O5+s61(Q$CcNuh|w-tt%sMbEnz+w}yfLB(m>LGiBlxNT?Auh-^;8?&1`a$d(~r z=r-NRguH>}?Uigo`@Px~|Jr@k7VxQ-*P~DSEEB1s?ULTH%u8SLd6K9qv52?SRaW0} zv9ARiOw}fvSjMB|)Pp-e5XU5@ZX0m(v^&3c^TC6DHdhE+6A0QHD?V%3r^N0ZA66iAKU_KiipPt;jj(T0le?2IL+6Y za#*sXXX23U@)e|q2}5o{?cm9FgK40l{&ZhrJA)d(^V%dpbot|8i#61+TT2Xp3@wNj zEr{4xg$Q=S17>pOeixT#Y#YR)V>FFy%oK<^Pwywe=p$`5LrVl(mW;Y`7v#2xN9oD| z7>#m~G`ju_!5NJQ^e;P1qF`vW!EJNT3no|?;DrFvjA7KzcXscI+5G6;7s6iIGHTs? zT)!~4w|db?;mk|!)IJZXli>H-B~R;zv`fkN=Wg)X$-6*{N&3>Ggd zl^g?Uj&k}XSDBAA(>N7fedG(D%gsH?H})*}9f+g&xJ8Y)HO3L!b&SRK-8jss^_tdg zG~Nga4HcC~+V_){!=}9e*D9)U*;vc9?6mHJ?uhnCx8Q7A-IbwoE#!Pk?da zDV!y$rO_zNE$xdIch#&`ZHFOBZ(Vj;e?PDoUdEWmWN#bHum38B*rFZb?jmno2Q8a_ zh_KWC%5Wuo5epIMH+V@Udf4qM@?N z|Jf;N%|+vI{`;p>@j$pq-F!ITiR?4Mdf$M+ZA#Ws4@Ia&s`<$Wg8pFC(4CNr>SLuR zY`i)UtRP#Mtr;t&KpzNkB?3}Y&ob-rj*LBRlh!?~=pL);Q`L2~-OSi1+o2U4>e9A? zOKKqJC%JYz)5|UrEE16Sa=fF@5>;XGa`i9rOi8w-y189UAN9!>Q_1)&hIvMpc_0n8 z0BsJXl*yY)Bjol{vLG#Ok_!N)(qHM&mi|`tnT?E)*M<8L1Eud>3(PIJZ_96ZSsi%1 zR#F+^y%|yDiu0X7m*=A{@_h-6DfVIZm2r)uA3-7KCm=6|Tm{!cdoS%)mei(=)C`>R z-Z8Tw_IC#Q6IJU6?4=FUs1?=259ulgs<*M8E9uYexvtStM&jv36Fu$1+<21Q>H!_H9Mt0U@75?c>WzIMe+QhttpKyc%90znus6+ z5yyZo6A>eu5OM{0=WX8xc?Vrx$!ZLFVQJ;u3Ld}J+TfbbH|hG-?uAp)g zkb~At%>N!a5MqQm6#a~SmdojOZt%FI@DgG+S}sR}27^J9O&RoAVz%FY2f_GJb7XU>53nIc7l)tz6+eWst2%_=B+ z4m0{Gh$M|tv(f^JDxno5FE`pq@}KT4#>r9c3c#S)40N6d$udf+IzkgJ&1^U;I&BYFzMlUU5;=w z(0ZppIUtn*z}cc|=tdbZQITs7vyai3#B`cuOz(Esm; z`}b2Wdms=*hZ9-@B)IxI&_2V+FnRyQXh)Ef~4M@`{k4Ja4qE4Gno*DI`LO=?HY*st_RMMBi-Y$4Kec=?;^!q6+Im4x3_NQZP4CJ>0h+WMaJW$(8RLbjPsBMCg~}*)*$@347(vBSqP<#PvzVqnpEpg=I-=J|)v0 zGj&k?nkcuw>bifv#QyX}ZW*ZG;o*T7K!R5qJ?qcJce(i2Zf9lo!t!+uD>`~xsl;rh ze2Y&(ZJ)9zI?b?!ye7C}|GlK*Iex~-jmRi)GOU``Z|B^mWXvu{PVH`?A*+ZeP|5`eF3P2)JC;{Xs zXNJ9A1I$u-&M;~uQRyLg_g!jg_jhoZmox90s6jY?s~_F|(u^c02t=QO)neiHQM%*C z*YrF{qHg>n!U#oPbNjW;6ef^P{(S)I|yzmG~SZF6(4GNjv|BE_vZc#Os&- zgih^%%%zST|3vBE0PZ`9hXC$qAfYySYc2*v7Qr=MOTIVU(>toaYtN(l*7)kCfy1x&3wF#ld8a8S8FoBKdZVHp@dB&IjE9-QzX?u{=jv& z4knZs+bkcuXVu+cLSE)S5u9RFgpdj{6-5%;ckT{?0)Ovz3J-TXq_v*$Th(8$#cOHH z4dhjIUu)^0uc?xbcb#_h9>y};O4+kqHgCyr+3Mtvs*FI&4ZNw`h|%P;y4@iHp)2)! zx_YT4Hr_OgR}g#gOWmm5=a*%V(k`>okM9vww;Pn?SBP=Eo2vpd8z#dQLdgAwuz~HL zeJpa@+zNu{@QP>SM?7~gF(N|tM-ZK)9S$L`qQasaBcuV5smth}$M1H+xBmWn`rzx= zYY?68u75a*D&1%WG2gNd18@&~FO!@tobeEThu-rePclHl_f>QTkKEr3foqx^J&9A7O{`0$72^1scrfEngTzXY2+aAr?Zwybyi zt2Y|AJi`E+d!mN)5;3HTBsz z5R*0Kisc=@u2lD4(EIwR>e}1?&F}jAIX!bWlyb3n80-?v7npYtFPv8hHsVxyn8!Y0 zrpZuN7cWxG$kK(me{b=8V(x-el38sSq_k@AEeNB~{0YS+B!@jenM97trUD}uF4)&} zYa5l|jEgZ)nB1^9*tTiVEYA~=k)#&ulgD0qU8*ZaAi$10_&nADF02@&w|{;JP})X;J#noa zMiXp8Xd9V0bdW5nOVZl$S4hY|SOD`Q0q-V&|0DiaBEo-M{W?ItNQQd|e;8(#n7}9F z*b>0Fr_tGf)kE#1tlYPo1T}}OXV0ZzN_%EszN zh(716u9_u{>Np*Cv+uAd0 z3}F6;75r^KNSPQPu$mLf`D1G4fA`fqBGG+hj*rV76f{hpKDC!HPRNkY?6z2r$?b$g z&VX!CEzQb+jy0QLFmD>jW!>Bi*TuEx$$57_wUBDJF30tSGi+Tm+3Oo>%ACG^kX;31 z2J)11E`Pum6vj*0oOyDYd(f0N=82lA$oN1@!J9%fUH~0b%3@<^k_wSnSbE83X>m}{Pl}GilkdQ=@|KTF8lxg23i9hD&2>{>*@Qt@P$6V+Xn(t z>81AlA!iBgzcd+H3N-JHU>>r?7@KF)LK5#u+_M+Q_XWO;iuoA_SsAZgaO|nWGn*7g z$uf<+j0cz7{KfiVW1&gKIX5!E{x?@xOS?q5lY*=p34ze1UVEBo(I1a%PN>&Qk)lw( z;!7*)X__wAAEBExy-aTdF%!#favOgg<{_21i0M_joImhtSx8Q5*~qdgQ?%8th|)m? z`Y{`6K-v9p!Twx}DVY4;ya#CXA)n2m0C|nydchG@RbQ+&@VBi&j8+R1SNFC2!!Ujw zC=8)3a@ZDdytysT*C`%R#uoc{;m=mwf1X`D$~3F153e-6wAE88aG@ZoLE0)$a^f~_ zWmDOaMRJfR5ir4|BV2N?gMBEch)ggvf%!mNO3$^7ld}rm$GnOe8SEG*J35P}17KF7 zGk9=fh9Tm#?nlOQ=hUhaBA`}2lu)2?O*W_VRoW}!b} z)rPB4d;ckvD1x?`zm1ESBs``(%1ww-_|or(q}t?Bn}h*j0O+!+MKtq}Ab78)2W<1; z#Mcv#D)+j_-{(6gn?JvQa z70sa(|;?||0k_q-T7R^Y$iSCra=?4 z_42D+U3v|Wi({H_wn((o#>hMB(xQkoNA^XI$4w1OBiZ%RVAT$TIwOGK$R-3391{`u z$PYz{uE2=1dfxtXm!x0^DrlW5RoEUS`ASktPw(l_3Rcn`I0IT~#*P@j__1IrTvh5w zy&6j&EvF$y9uRs?!wa@4-CB*&)N3|@VlZ&2931}T0}#1PDAw7n1MY^Tl02of&QO{9 z4UzvhztOfHWB6+Orf$YR9N`8u@*B@`x`8ETp)qng6E!jC+MS-h>z!CD=;IPBQz$Wg zJHhCX%HopbEb(oV(bURH|IjLC zW?@n5Y)AlNosh-F#a;lF#S7T!)dU@yUH+#_`mb-gUp+P0>&8U-$ba)#Sox`efhQ}l z+aI-R3PUnu!2x`+OhyoP{&Gs@I7!z{^V|mo8N}D*|3H7#F$#BMX9$5=jK>V$U$C#= zhKE?6AgJB>F-lASv`;Ki&RdU>peCJjHeU>VWd7B~7{#vEQh$snSYR)uV1LPp+MeM@ za1KtS`*~L*QEIcf)T(83JrM-LB!KwQm`>|jTr=B%z^NfZGpESbaApr{`F#;9(S37k`1K3(U*w1 z#zaaOL`fT<7O|s1nn6=rKmeslPYGJ7bk;2}ZFl14;0~aU`HfpSl&>Pbdxgj-0ZwCp z+#yCI?>c$wSN*Q*zGN$)6#B$0r2na^s_L35kI;t}5uXaTnI4+!fcRx!Va5Ovup)x6 z^ZlY~hZ_FFI8^DpFs;v0_$Rmc9y(rj!E|PqGoH7Q;B9q-Js3}0PvlXQoWf-3@x`a>y${$>VX#wHEIGS`76hhQ4>vMM815lKm zDoJE^&bG@W4&hsRb`4@ysWuJIa}dX!2MAboPBl&!a_%P}^Jm~Bi{;oR_Pm&qV+pJ3 z{e|-{A#}wOJwS0|OM)<2Yt>MHERRs$^@cM@36CXggNE!ZRzKZ`1_4Tq zUTZbO!p4xl;@7GfMt@aj^ ziWRyg!f#3J8XJ|b5G8MX&{k<7XT0`;n#>{D9Eg^Q_x|n`q%) zNMta6u05!`rzgKgMAEAEomJp^*`$^R9uSm&VfSo4yyo>ww0;*q10sCA9bj)cBaj9x zTI_q$ZjTgMb|NQnr^gPJk}3e9!rCin8vTbto6C=en!Milg9-P}`V1_giKN@uPs)8sdz;$HpP)LxARe;dWB~!*^IX>CvMm{dR|rf2 zy34>SRx}6G-&^lcVl|G>Xj-yO^Qmfe*mk|lK4=P)yYbnh!R#Xo92CqJj33f^2)9}O z58`9(|0+KIs$HmSO;>2*GLHndZYA0+?_)HBBOs<~@^60X<2GaF*hw7ipV|7u*KRqZM3K~2Z0 zTdUY*)RyRSvvvUMsAZ*l=$SE9($AOG=@sHe@C$AVh@iR@lAA?;g#ae@f~(?EY+jr>68AJXDvVuF!NQr{4|cu6fb98%1# z_lWSg_^!Ay=e_qrgPxmxCy{JGWNjBOgOc zNGGix&>jG8VxeU~_+RJzIN}_4HL_AaAqR0B1!4nT7mixsgWxX>vw{*&es zl+u6bj9EpYKLFZnw(la`{~)|19UygQW|jN?@PO!j)IJ|O{fj7zGU$6jQ^sv@(XJq4~e`rDF z!12HOmZ?-zB;nYa=Tj^9cBEkeN0QBifyo`ggHj!vy#k(@Dk-h`N_(Xhy-^}vRSYf5 zx-;Y+-~P3=XK`_xSs-(Bb6w!*ZbPZg4MjEDeO?|fbM}u-A1<%1P8q2OJVd!WHh|&O z5elte^sk%y0x-3|?KA$IZgBLROaKKF`Urr*8+mxrD=NOP4B6f?bD<5G>~pg~OZ~|4 zJFc+vYyJSHX5`}^i;f>VYWt!7Qrfg}O9KeNvX|+X$?~XoEB}0R4AfF(%6uu$ zmIGNtg{=~c2)f<3(oIX*M=Y9=O{K1YpZITeY)9{Oq@?p=E6RDF0?JsZ2HXI^BRXnN zLxKFb1D+w<-XS)4nHMDRtIWc{XeDBXPwCerSFgE)HBI{uj5IaxG}fL~-Ot*XXru{k zvxTd??LmMMhZ1x~819O?{@N};qgXU;wW9#UkdzN0`{bIhd}6x;i2c&_p{QE?Yoipu zLNSzjV(@0e$z}AxE_$eI{t!jc6dt^4KGU)KaercFUk<_6>}Uw4^ud>^JN>f7zb6kM z4Uiz}&y(GxLnz6#|6+P=#33K%cOG#+kj?Uy?l|vkFLb-41)#vNUtZ{xM5o1peg#!u zcy?G3G&%FT&D2jdsrxn7UoUn_vjBJp3Rh`KJ9X9NDLH~jeDGsQmY!f5EN!(KZ1>uZ z+(zGI3599*Z2XMpA5&zdj}mSKz{I*=dub^oQuwJ3GCkQ<_z}M|Pr;6{KUhWLC=OeU z@8vi|V5$=10pC9R_gnW#Y!$?zhna?I@ChdYI#`l51vNEie{T13^02;Ti-MLI`MmY6 z!(wZN+ranTbBxSmFul}F@gIqlM?UN9=&%qo%^C;c?Y zgLZhF!?KYdXGjHKg^9dcA$fILQ!rT!MF7c4m`8vtkjW3NpqlX)O9lM{_o{ITz42f* zgQ>!4FU6?cd#WxqbP2A6QG6A>p>tQ;y6?TFpQ3i;DxbE#dMf$Mw07$I_l}wTU)3u^ z9n^*L^Pi<#DU2)`*YR%8orkGcXBm9XBymA^QGe|tNo8k0A8S8*rF z#Ht;I9x{FCV-8lWJs)4UM`{J@YsYbkAfKvnW9nB&P;RTpV&Jga-;4myk!Nq(GSevfMb|9RF| zK+N5~EV2vK$i2l}VZjXjyCet}yqmsZE^Z@(J}n1j#JJuGA-?=*9!$DhSol5yrIgk6 zy+$|{vck~|@fR28tEpUaJ278cF%Q5~Q=V(Xd0bYeuB5Hpk6t~*E)f7--yCzI1W+_9 z6vn-Ct0Nj?yd%?Iw-#JvdhYJTh3t5ocD~h_wfNp#^7Rwcmwv}HxR5^~@m5um`f->< zO-xcY4VuhV(XE`de9- zPgISefDziyM@&EWw>N5jEif-sg7x%Z@~FP)f^D&>oo%4u+o4sj@ z3BMjsx-lO20F|^Au|{vp{^yN#=>Dm}lOdazS%Voq+N$>RK6wCW0r{K0%RsQUV|}Yt(mr`&E3DChTmvk zJwGDC zZ@PRq4v1?ju=L$ZQKNO}YOKd6q2@&8F$_|S-Fp~TblVGf#SHX1{Ti^}9>`FSz>7M} z$K=M_yE{RM=4Gv7??p9Wg1pmDC?8R~-kK!Snl*qJRe(_!N7%z^6em;Gd`fIN1z z`|Qmk&&;8b`t7nDkknKKz>A`CScFNWy|xdveA#-DS%Hz3RM9D#!!+X&An^U?y+<{y zsXw7%o5=&Xw}9bywF&`%V`}s}C+|quKoA*oNn`IceQJ2^|0GOcOS`dm=6viMo`uZa zhEE4?pwaitE|W2>3AO}HX)@M)1;vJB2$8UH7m*KU^Uq_5x26F-~bxpSys@5B3H@ zbheJxJVO}+|8oA9estu3j{R?Z{+Y8!^^;;a1C8s4P?3cp+-B7^D^IG~V$`F*V+^_; zbF3?eL$6dBCUL-xi8`YS4H7%^aa@t(AJ}ik>n2NNk5~m3`ahU$WB}I|kZSiYs_R93 zD{`STswWn@JwTa!zEo-nFr9@4yeW5vC`>uZfGOR#a9-D%a*t(9OiXN!c}M4@{)g`h z!KdFm_Q&&}hWGY&(AL#8t^gn9Ii0(KhDB?X2Ve@)Q{{H8=ma0qGcSe!*6eA>>7C1A zfppKo`y_18%KYxHIz&Cb-{kzwIjdMdy6sB&J;2=?I}_U->3ksB zEQNeB&rBzRy}>TA7Y!npUC&8nAx<7oB%L=f<6B{)@Hh7<2ryg~VQ+N!C5NU0;mva7ReSckvOEfba^zi!$B^Ol7RS<9=4ofU>CP!#1-c4G@uO)x;hRMu>(Y@~Vb>aO(P3Qq2oU$0DE;ZA>G~gygiwZ>uYDwKHvpbZ2`4IK-L6*p ztuy*eh7Q@xwD2X-)8oRcTlz> z8(9Cl<@j%Be(T$U3W8KOAXP-9mq@Qcs!|11Izb}R1Pr}|AcE3~3P?99B_IN#bZJr& zY0`@nQ38R`1EC}Yco%zn&U5bbp67T!WB7qFNGl?h2^@wHMi_ANS@o9G` z_=AO?>;Qo+&Q@az_RwCz$r3%M`-xQcH1t56s2_UitxTIgujs zJ~?3Ck7aW_eL)-2mah;tM0`FH3p1jKyS?ZW{AK%X7)~fV-D8@4ZPP;(?_&XQJ#Q{XFvOLG-?FPsRy8;F)DuxX{Jrcgn6f)SyWtc zcUjngJ}-X)r7()V790N0QfWK2`K9Ay%PLGsm|SU%hhS8(!v)*vw%kyirkMBXkmCug z)02gZx3bul7NusKN2%zIZ{g%zE2HH>2LyS}Q&#y`;^up+R^MWG~76u%HciTK7L% z0|n;jW8%#m`1rF&pl@&~&!mtG`u=#QW3Q8%@M7T?qJ!-cej)oxb0Fn^MUOcnz7&+@ zp!Qw)pqa&CH^stlalhdY1H4uqym4<7JS=lKIW?$)%$AhjqVhcxO)#54eT-^g;cHxU zq-~JDprw$*0oU+);-%i#203~u!E#JP`*YMf@ZMaV4j)Tu>`5-IIu3`RyUilQemXoM zyl))PHNp|9G~aJ5v@F^0f#}Z0_K3rjpO;$Vz!JWT=Q#p!m_)$t%YXka?^0dJmU{>= z+ubO7)PSi12C>ZtESk%hrBA`m9*V>jli~@&t6@*RvY2*CaJyVtjow&SSjOo1He2pQ z-Q*udVIO3V^bjEf@g~?aTz=42(Rq}n+-%CT-VFu{9E}7rliNG z9*JKel!5@n_TV?u2lkz1HF3ZXJR|XL3Gy;X#BeJAp?Nr_CV>pdUUQpB$%mzeCm7rx zoACVBy#f^an;C*IuKn>SylBDCPISTzJE}Yf3aCoJedHzRnkCnTi0#}=pw8Du8sO1xi&v(f>t>T^y?O~--nM6q?~(q=+sDZ8hAz= z%GOXn`>F=BV?*O?pPS(%jLFP(ymSoAmQJkNzSsLz)1F*p0(*Sj?i3FvFC3RKmXUL8RyfVT!q;+e z(z`x-D*F>ivl!w>-p(48(@1?>$hysB!-k>&|YmO7nq+ zpF^)k96Z*rMya)Q@U^R9{PTehZ4jiA^hl)mY#%~io$qy%y)62RaCYK ze0sjomaR>iFi6#@FeX)6(9DO6#d4F(fG<E z8pBeHbs6Hmjj^MN60bazEA}=XQe7!KG=(QCokT_(B!Vl%(85zSFu?}OVzISE3!TB> z;Gp%h$F4djYI@;#+0d6Nii)EZ(_uSPa$qpZ1f`K<>it3_kuBq1({8);0KIhmGyc(- zzB%B*5}3kwBcGlT10;Ur`UBf)ulz$Y>agPk2j5QTc+jMH=!*|)KsK^RGgsz^fVh?LJ7cbNzPYdB0VA+DVlR zlk_FIJKM17P+$~K(TGUeletrhPFVVT>G;3tUz(?cZXWVBH2%s@xl>q@r4=6aEw=2{ z4t#$yvsJOR?fD%87=XCdk>xHYd4Aj&l=AHZK4P8|KP^kG{WoxEs@aM%xUsWr{~09I zeLk9AuM|ia2?0U`B7hKqh`&Pwr2h#KpqJYpI{vsHqt85RYVFY9y=f(VbKNCdiFP6e zI2J!AM4M(b*$ERXOnQzGE$?lmovNuD!wA6t55)K_6`(X2!b^+~0CWph<$U<3JGFXg zzn`lE+gHUc%4!by*oLeF?kWGdD45mMFkI?UAPB^p8+4SN6n71Y&sx|@+>z?j(K@Q98pL8EgMJ6t8}^6hf06(^3V zL+$K#S`*b-BO|WTw;%HAUi-n{5FMo>RPpM`6WLni@4X0xcvod1#{Ty-tqn2X4Okqk zrK^*kA@@X(#dw4O3`X!phe&(WS}-90D6(ZRd42FXBj zbr=Su67o>`OhHHl`MT+O`|q5Cw*%$t1nGujZt%#N9eHZgHdCAIs^LUIun;00Z{Eq- zYD&H^;eFWM8ofn&!5>a-%j@nL(+uD|p(-?T-!<*EYg*QMk)s%bg(u8G@WPX~peb_{ zdBr;Jn$eQ1sp&WfEb{?_kumcgQ11$m{^lq0l5XRlok_YTMX zYps7*+O1lz8W-OXNI+@fS^@U-}_Xxz3|o$nw5-9u@yW64XcJW3JnfIhkC`v^3kJU7?{Hnv-DS7*xLp@poYk;Qxs@9V|Jdr) zYr;N2T)3ti!$b?O!a)N{tpf6bbFPmC~33kF;()qp#dSIM+^qkMx+ZTHM0nGkhbaSQ0=tgddP)q8< zP8a0B=OFv%!4Ze!RP9c0DWi8j#pq|_pAsu0&OARhZHpkrL#T&N-fNgj9uCUI3SB$+ zX8aYA@N*8Nem!to4O}E65)@tMXFvk!hgB%fIPr+%l2K&4INsq0Hf-lM((10vp>Ij8 zoC>F8X!GA0A&$Z^ZpoD5^z@BX@~ISg3*pna*+H95 zDlot=%bp#zSr=w>MpH?kGTVdggUapn7ghcnr_TLeP&NpCsI5#M(Y{{Ed*U;(yk;d$ zOzCBTsgUHSsh6he-~7UUrudRIMfa*dwMc~o=namz%D$D*zP%BxZ{oi+%3MIYbUzE| zOBMYf2a%FzE75Mi}_*EaR{KJ314W*#MuEvIse6KY*h zUFZ<}@x%YK=>5OUXM-GR7x;f+pYA@^qzEtC!T006VpySenSvyJSM)n+cCmeyt$#eJ zm)*WxE*0eS59^tfY;qC<6Tc$yMLGQcp}-CV6xi)RvI<7oOjp7RpoQ$sxk&C_WootD z^ub;PSA4mKcV~=u%C$)!*X+}Mb=8ufoda@u*pU|W;DyEoe`>HSa~5p;5wKhVVktr| zZu(yO_JJ!}v;bFr=}wjqdyvu{l1!wV}&<~I)|@jbDm1;%CSeK z-`x9&tq;l;Y20vuCm)0)ISulY0~U7$wW+o17aQ?El8Pv;Xn! zIvL~-*4*Se+P3}tBGgPs1%j0R&hDx6BbaNHNHNZKqfQ=aK@ffpRb9NBbk= z4|*N7S(-((MZmz}Ey&@jdvPD*8`-xgX@n^GQpSr`>}+q^0H^bTjfw#^!#12)KR={E z{aOZ?Ck{4->#sJ!Qz1)ty{f4R9ZhQTCS=jdGcy1M*n6qzZE-AmtIrZIjY~afOY4BF zG#au8+#Ea|BtV0v(S$2R0+e4Ed)YbHQv9!6P=jX5i3`JON#SVfI0w|OVgeAwcD$kT zNXF1<_&2=nH08%oIu-eq*S{=aSM?AjiPYTI-I%etN_*H;klH($M#~2h{59vrp3PM* z-unz4RCO~d3&F|rq~_dw_n;lhS3Pq}WLri<<9QrZRaMGI)ugDduHyWr!XUK;o|)6| z87a10LmLQ42Pb7u&2ciya`Kf$TGGwoyV(vLafyj@`4tZn7&m^iexE*R2DStl{7j)hqga1AYB<|2 z@JR9lsC*c@t~N0Kv9tKB|HwOpJdkG2CD?emfN9R?;EIxgTRLZ}bhrnP5HM?sd7w4(ji_dtWufEDJ}g)1j3A&IA##kCZOT# zR|Lp`6v{~jw~c_oKKaxukWu69;t*nmFy)pDpU3MGPBV29wT*|%w#50RzLuI|uc&{% z?qOrXU!o^4gb<^o-+G?V8_RcVT1AU1ra)F!k_X!5;owRns4d z#BwNrAY&BR#(No_~paWXxiX%_k+qYzR~KC&HF&?%<5udvo`=;9Fchr z_+QsVc9*!mo&*N7(I&^r+Xxou!9_fl5Xo&wBwXc1xx&J^dt7>Mqt5s2i=mt?r=aVx zS>q-#M7^05l_=j~&B+D58Jr|4KwkvokzucnW@JW`=VW;hCR?tD%#s8X*WP#!9RFwE zefrA!7!>LJeCh}dy*7WOmviZT#jEs6_>b9Ula@5QRaPpOqORI;3Qg}ivBvk~wY=Mu zeDl5EN`WyTcuZnVQgB7Bi~%LxGN}>^t%;52Pn+?O@?6X`wEdr51%aKWU}6fyGc|z) zry1~BtMKsQc+5o>3*qnOu%8vi@h(OWXR%LXMbo*2pU#M)#~q1f- z{w1cqqJ(7BkG}rl_h}(+0APgbbLc$zrqH|H&2Vg4N&0S=lPgFEmV9k_yd)?$YOTt| z(YL|fYFZ#>`^>}YRH*d?7h+Fulz*oEz^fsW`&i+Br|JN|vU|K69) z^rK^M5_%$Lu>i+^W8FoA@0`aUV~K-YX}Gh=vbzY4m8$H>{Km1@83(O9cZMY@GB8*b?VY#0{GcQ4$ zeJX!J$XPccZ&`I;D~alJNYMmhN)t3T22RJFzwsbJ1H-cLtF>lCq-NLc)y(GOyHgv* z{NYl(x>gwB(jP{%Saf$Qr$%%R#KY|1`tzMK>M}|`&D&r^m*4m4h|Ty%^`&e^;uHz~ zK+NR9O#2tojAhBTY4GiR+D+yKPn{0jePquvuXpcieoqH%jsT;*b6-m{`q?>c&g#yh z0D<&hhW+9KFI8FRCMQ>+jxMd?!W2&L__dhw#&SMb)keI2C>U3vHiu!#Ve}Y#cPeN| z+P*Qxsj9YMlbK6L+T6QQ%w zbJE@_DMOu0LZ;kLhM^TUT?vvanvK=m5tzNWP`XTYf z`k&+Je;&dAtG(%IlxEm7)=VM5vZ8)uSt()WdSia51F;Qnv+KcH0uGcuh$u%n@YSy? zn5K3MmX7EFc?oh^RM#56MIKFrKh${!|(Aj)qcoKnac7Ntc12PO2I^j*vD3n~+FyvUd#jpEjPn&OaZ(fn{l6k;ze ztxVBdETvWLW3gnZ;FU0J60d2RG{od62v?jYsTjxvwa#(kc&lhq)QZ7kvar=NUAD1o zdoqa9GRsR1&&T%LX78=8&7Bd(Nv=MK{<>-t0D;&piG2_}BRu8l?TNL~+l&p$E*5Bj&HQ_rEX*v8C288 ziPT@c8tv2T2H87JeEo-V?7t1NfQCEoQp{DE8_>%U&-G$idzhaxc^dR2uU=OXY44{# z^u&v^tB5Apkw9s|6c@hb67nkpyLx#_AWOMSgM4Bj!^!}13OQC% zuzDM7lLEn=Ol5s?POdgRuicF;#m>3O;XFl7kKdy&zKA0hVNWu1X&oBA!YHkxhniV5 zz8t=l{E1}2GbfD`RRks{Gc2fsfu@9F7&W#8KoeALhw;`MtjvLP}B!(^xmQv9;tjhe?!p@A28_$-}iVB9ym1 zK89TCVDHWsVf#&YJy3!VT{XRAPC452|F6s5|MtJFny)p~=vmHjgj|~C7!pc(&K{$I z$%DO3DG+&A3xRIrqLf@y-m$$2s5BuhT~fG%M;r4HQdQ>C9L_>~d_nqT(Nt8Wxux1% z!4Lw-6-Ca(#RBl39I%$6GO>NVJtns3z0FA~&FZyt$0VMea}=WWOnUOdFbl&pSo7Ld zyX^%yEadnpEkv8^{3v&PdR!T`t(_lggqx!;*4XeclIASaNo(|EFNJGsW5syZddL=DSzu>Du}6UPzS{YaohIa%oekm z29J78xxWO;=$EE$pDmb8d_reQgk=R*WTe`&xt^^HZ|;p`Hu0kS>;ZxVSfk3~R$E|# z;M*lX1AbrTc^JiR;`-;0K7xtu1UN121V+#|&GOFplyRtJ+apUU$c-cNr<#c+#^a%o z&&!DcP9foA4)sBx9K@{OsC?Q%=^v+p|MKQE%P<$73b=lW+2Hl@0k<2pvX@ov8l9*t zRA^Cgi{otNSASk%)^^JdvwjR1S2!IzUhT&vjvWIbQ zyU9qY&|Bf3zRGvNSzEzTQq&DtocRwU7#7aRUxTtqr09OSIX(os)<@rwu2A?9elmso zjs#wYe-IyAMol4klu~kwiNet{{bgHbmmcAio1GcppprBYz#qa!?*cmFvfT|1Z#W3! zPfWP^uLhp}tX6mQ{lL{l3-!^+^>%J8HKivM>rv(Awq0JnyEb_QvRox|b58K=bNE|s z;qNzUMrcVkCu%S0j*6l29UC}{rPGhQiY-eOfNb8PEF|0f*eC|C$Bq^FFfpkU6)2y> z@WvL+5i6h64z*_KhlNaTkKC!dpzQsGnGxsrIX0HaIT1D~f$VGmtPmG`(b_RF&ln>n z6P1P;N0zv`35x^6O1jcMqXD@4*+G`0EX`IlE1}Pk#1ZUbv5JxLa~K5{dMKLr1B(ZF00bW=O0|x z=)T(s|2#JeVCyqXB@7bGGp~?Lfw3#l1NB|I0mmoMXT`@4O59Xhrez*fetneQDaY2+$agUymn{y8-tUnhsSW{ua;a#Aqp<98CRaP)HS;4_H-*c zspYr8`H$17-@g#?=E_ZeYScp->nI}%KcRR5UG}%RNAUAcEz2kYKQjqRQ5VvjQhX%j zV*pbD^$7|#k|tf#vl?*CJu57zatH9J)1brl5*m+*W2nN>)Fk~ z8|R%W2DfldOq;1Sh%jZ8QZ=`)u#TH;r~{18O;uHOqUOQSjEV}LgPjYO!^1oQmq|B=$^Z@drA?do-suHjGQ_jC|+Pa zE0%4Wc@SnZb*Jsode3lHIeH4)n-slJuC^j&y3O>bA;7=R3u~BYhob4;99|QS0(2C0 z7som4F4|ugF6@eCEn$vMNR#9@&Doc}9AfG<#OBX#H1 zg#3T70G9H~Y!N^;{d4_hA67o} z(p}mazZ3SVm{}U(ncF8+`K*gS?J#eaj380=HgzxWytHH$#?K|M6d@QMK)6r8lhs87A$HMr^IAuTl!0m< z+!JTJ&9|Aq`tKM~iK5s1Hs*C(m;_7V=bPYW>vxTJznp-Kb0UTa7AEb(8*KbgJKw@IJzIoxc<IK=bf{XlQn91v;HL} z5;aaLD&^_yrA$COuf?LG{5m0xk1~;v3xFdIqrG|C1o=wfDtj2%O0nOvb~_iFl-i?Y z?Ij*YG86j1O)oGx^@03^td2CWhd=<4s{OYjr6)<)FD6kno@FcMsF>v00Nc=p5ge>E z8KeQ~C$oPz+;iViM-Oh^S_N1k9;TB{Fd(96akj(H!&7pqK3KLyU-X)wuhLXfIh%mk zazNdWmG8j3<6pkEe=1^kUTT&UX+ooJFy*OSVjx82nY~RxRovLHh_yP!UnCtP&>9V* z`>_DTv(K!gp*UwRR*mQ|mVB~6tcXw6;YT@P>n`9nOS{DZE73C^B0If2iMsyC14H-% z|Cma#2ZbK1_rd2)#rHx5BYXP$$(&FweZM1XPSb{N?ES$JrLatF)?=RTyV>#bbgs7m zSw0ZJN3N8@%Wwe5Wn5gz?uPW{e=+8GXu_>k!3g`!9kB=I57VmIL{0_7)G(J#5%MZ3 zE2psUlLA?ard|;o)svGgh+{)VL8K)cM!&FN$zuoRO=}Ry-80>)Ts5XGq-! zvLuyHa%X`H%P-i62*h+ejx`m%IZktsPTjIIY-f2umO*M@{z?Xsi%~&CAbcO9Z}Zcr zfULvn9##*q@<=ScORHzSBt_#e^}xkNRR==c9T*R~=ic-(JhXaisc&z&{Yg9iTqCvJ5x3_oNl=S6QyO7Yzg#@$oBP|nTo|NmNZ{JL`STr#lNDLZ^|kl6ZNhR{Lbz~9>R z-YcT1K1b@0xO1I8w=|t}BVQ*6A@xIs^ofolI*eA{bz>C50Z2wW;ippY&f49=M5e7X z^59V3t0#B%o#W#_x5%5618jPOm^QCNb!{2|WS?5Wt|j|GF3QpO)2FZp0cq!i=e9g> zF!M>H=WCQLk5C#Hw&c%FV3QhL`NvR+Hh;h&9gm%G_&S=HnyTLFK53VjjPqKJqa{RR zhx3blI*{p}TxQQ5rS|OUnqFRKF}s8eNp&lsJr1TWFbh{&>x&zj$VHp zhW$&CcC=Uu+huV&vxH)V917WU3XOmGc+R)f+?T!Qz*v863+x+sI=&Bf+jGva_PW9& z{(K$(kP&Hwxvc0@YUhy~W5l6~=za386e1-d8L22~mVLCDbu=c~4Joerl@0EezC3+P*%$U zaH5^5@q5f|&90S>C3rTB@9tV{(vIfm=gR@mPUfB-_P4dF?KXB+*NX)n;ZE1r)~0$* z)@J~j=Noc-f~wpgmam{B&S&cDUv0;`Cw`uh?_hI~_HF{qy-1*EiZB z6v4%GDp7J?Ru5I7*Y?xgivrrPNISSrr2LKRc6wn-&aD$}^0S{!{c*P6`1}1v>f6l3 zAl7-Aq^9kBrB3TrRL4fH#s^Vy^Kqw3^sQDh@iVL+3KgVzwhYWHQg`V9V7FHJ6;BgT zZgH?#Od?$=p7k?ej*~0ce>Wux)_)}WUt!(d!v{bq4%(0{2oq%oEw~&e1CY`p=&lUJ zcjI8o%7o`BR*YuCEP*gwM;|}&LwWKinOH2C8>`>;@nqY*toB^T3EOlgGuv?VXg*cM zrY&^rPBv{dEAhK77^tn>R23B`Vvbu&YbiHy098RIbd%Ov$0KI3#z0UQG1V3k^MiTj zw#QWHSw3GRuj)&T6K_6f9!R1kTt)Y_YYHXdBpXH@pK_XF==|vgMm_`n^;gkKrouFx z(LN_wW+&m_=j!MfBqJ83tR&0cGp#&skomXkWrsU~QZUgyQ>T zf#zpFu8)hsV}&JI{23rewuu)^26P&(JDCu~do;)XZD4=~P#ji)&K$A_+&=p$;~b4c zAcJyu-)_cz!0d{cPd#|>@|49#5vP|h0(OCo)6)SFLL{Abv~#)&KhFV{8n+u-OMxi! zeWh+m-*x2V%PO44jCv(T^@%$a2IYq|Fwbqxd}e`_xlD}$+Y)j3O&VAnmsS~@u<0x| zXEAYtu`Bnc=_|Dib|g=1;Iu>8^SAc5vY0=8@+B9MS;LFlEzCiEB@eVs7FsW1#4sSO2t2`u&AF+qO>MwgWk2MFAwSBd^T@H z$7pV}uI|X%AjFtw+=O?{-ks&}olAT6!S*11pzSf8-h&Z#itxKu=S|q@pTky!Mf`Oe zd$%&AXVo5K)dBeiGyf}M`t3Hm7!F0;c||@t!<@k%O1g<`qjeWFfIZ%dLiQfZcNpws z&*if`Toa0#3_dnf8L}>Qb)Y2RBc7?U4qxdg@@=ShS+}-Rd!aOJihQE`9!m%g{8+^N z9p>rned_a=;AYKFc4tMl!1FI>+t@}_GRh{@cCwm3u>ACF*}C8{KWc@hc1v&KCV)6{U?N22Id=y?szJz2V$uuq<23z{m6ITZNxCzl{Usf8 zyGmGmX_5PVHs{2Rc%u6-SL&C?%d+%$$8@sW3KV-aN>82(V{HL#_pN|Fs7tEgech)n zDyXOc;tj+(O2x_9W!dB@1hTBG+uZ<#vM1Pk^YiyMYh076CZPTo z>xwp_KMVkjt9OSFt6U1W|LH?owH*P+s-&c3ewLy)KKX_6-Jq)nW>}|eH8^R(4D~}* zO*+-m=?_gywAO2c&ilq=dcv0*m?->`PfocMe{gwoM8zX7bRnxO)mLfpRw-sXe^03I%x0SBCIAB?789d9~+M~h=0 zyu!O$Jq8YBT%zgoo**3(ez8QU!RyjKem{#)1kEDEveA=ao!=wulz!arw+u+r@CT!R z5v}h3Ua3B0u>#VM=X+760KlQf^KQ057!ZgOHMZKX&uiN?g$@0H~9uP1SRzM8!-`LS9Ld;p(!Y0UWY2>28=u}EE zP$H&6YEw|4tqvwg`%AsJ{bH2HNQ{3cYRh8FD)ewyHtpc#g)Ftga#8lycD%@`+GRiq zuXQU+@$^1t{>8KBnG4yFD!5r@HGB#Obc5sa)~``fAe-F+k)8r_x*hqo zZAGk|D;_80`rEruN>+i$>bJo~Q?CPE3wCBpUXM%+FM!027Y(^`8K)nNU*wBW`cg zo$2Ux$r;K2eW#%Yu;@L3 zFT4>&SWXjO+|`~ANZ5xs+Fhga!o~Ju&B9@m3F7SeQU3XOkveYsmn8kp;>urx-yo&B z$_C*jNYDi$@t2dvQv3Sw0l~!%)b+8usLlWwn*JsH)JJWj&@^~~dyG-r5vx@pV=#VI z@HYL;l4?*`Ab;%V9mXw@&FJV=3RzG><9)#l^xkESmouy1j{A|Xl!bT=?GHh- zIjy|(pm4aFeQ3B)*nY=(WOh!`=`*{r>B~8RKWM z`htz-N2DY6mmn^2G0?`nsWnE;p(ETdU%&~qvv+`vNI~dwId(>)>~oNAG`3X($gL(f z?xDf^qV}HyBpdd(CkPoXuY$*j!H0i%cOFi&6*h4cHf{Alhz8d=dhNWw+4Xy0!6eEWqvsPiisn^ z4uBl)yg=2S%!+b22?Rur=Q+?Cct-UM+?OT6%+Ap2ar0k$26hhCmFYMx$;P!+VXxVSj^$XK|EJ9juE zeQ?P-CF|qvscSPsL$@g1E*chJHcXEswXcrtbOUMZBgn^7H*AT&nj0v9Vc{sVdT--e zx0;-f>x-3mJ zUpUTPp(i&*v?b5@_r;T#B>D2c_I-J2}&~7e&DCFw%l zKUq%oFQ3}}e!0xGWuo8#|9Bkys(s_&Aad?=qt~XtKJENR>Bt_l0MN@}|JxF37w}PP zaJS_LYk9)}&Fm7JJWf7y#>2Tu+B{ML6xIc~V z=;**4UVE=bS;!^)ZHedb@qtVnL2RV#YMz5&u2(IMt?0NnwmQ^qUBbWAZ2;70TMa(#M=2FEjSTN3flyd4vkCE=i znNd0baid-=dz><0=&)2X*zf~J!--~MdKr<_lic*cr6VF)ILY8o0ZBSEN^m(=fH1@Q zp@LGFQ^2DB)UC~1Rhx#^HyDhTL^eH)6D-n#k`%}t`5bW?bLi4~u~gK@NyChz6*^%; z8VuzmE0-XvHr^#j{l0q}uE;3L@}l@~ZsI1%hOm}}>mtial_rXmhNZ!k9JU29elKDS zNss0GoOM6j**e~o5Mpebl~7%=Nl6#%LMQ6Zgqu&ur54pWJ)ecWjE^VttZ%~lmrq2tHsr8tUv zfb>K7q7YAy03)uVNW2sSOgcap2A`{J;Cd`5VlEjd`RPEiZBtbFssH%&FUctIp$3T^ zkxHe&U;lwSmWjipqIhw#dh@U)_2i=KX3gj%q}sY^TnQFr&(Kb%*PZZj8{KnVE{h5C zPP%SS#-!l0|I(dTU+4@yVZ0|}WRJigd9idAKSW_O_KMmcqD7(xS4G@*+;>Y$OYyZa zS{gTSVbn)uO+Ppr!Jch@4@NOpf3Xhi&=d-(N+CmiO!Z?Q%xTkIlCm9>WUhu@&Tl9Nt) z5OVIcm{1hAtB-oD_fDlq-H=q1vG)(rb{;yyICriw17@pW0KUI8y71!rR~9QpZFaAExDNFJuw_@ zEEMH&wavas2`&{Vm^p|(&wuv&Tc&cm##YOS0C4@{fm)KU`m1*TT0TbO*E}Wj{M_8s z)`(7a4vyOmB|7(Zj*Lt6KMSkRMRXjI^+@e zKTAq_hN~M>c01BwBrRtic)Drq_H{~bAzmeaCbz`=fzwZ0JQCkXzOW_~Udva4 z49>5Lr;?sS{I@MBGHD>Gk}PHN1W^P;zA3$9+9Wk%;q#^1Td?^qC(Md7Utz#2Ss$9x z*#jgG*=`zwe>%3c&YI=~b2d+qJA=N9B2r-ddDL;#Kb*pd&>NbltM3ICtr<8_CVqxW zSfI#1x}X<;Aj$lT-lkj|%y|bf#f!DM^ZWp#%8ieA7oZlcveZ;YUZgpy zt_B2=Y6E-*O_brXfg_HY`ix3;klLjdRUOZ%1Z?kBOJPC>l5IUmV&y26y`rKbZ`ID= zp2J~;UvD~B%z;emqV)Wwr`l1Y8dG%qIY3vP!1up)0*!c0%f#}uZn5`2uQKZnXt^YI2GP$_z&n(8em3#Z3+Ch?;}c2>79$s2h~tm&?tBMa zCq+CBMv4&zRMolBMo!$@sc-!D#u9U*{f{3bnSwiVsieEJF0VF{Px2=qmVv0E@r{Ee zNQ+oj_&=KQN!t^!X#ABN?;+yJe!K7A;&Du-T!oh6;b9WD=ci#=Wg#0uLz}42i|NWT z{w*N(clFDb#!&ZO%=5MwY32-pUCK`Q;SR|qeA~sEG^`%7g6>W6^u+9qT5+rjhzL?bwV{NAp0to@G#nq){+_f z0grwaB34E=AvWzatT})AAq{xMB&;$rGHy)ouLf?)@vbG%KDRhvUJoH*-HsV2j)zH02$% zxqwa*ZNeDTA@n57#q<@(2YK#Ej~neKMjBN2QZUtvp`hdzFM#kB&?UOM{>nGK9`^s*9{#HlK;48 z(Fo*XjA%(L0$-zc9?iRt^}+r=V)v!VUD?j+Epp!YJt441)jz`=hLguNVi!$w?b?tM zA>w=Fp&2c^v?Xec)Yg1?9q*S*}BCFKhf;u-(R2}J!xq)KYooH)d-&3`c~J^ealw}rzeIejkIAy#@1phu3! zEDhNG}=tKbQ{h|Jdc~K^{wr6Gh4y7wJ-<>UTKNY0Rr(z@6EvrMfDVy{)_;2#t+)TG7$mIqu7F)YJ8(JyN1T=~BmfW}`( zSiRSAAF2$R8NPb_opCr_lp@1pl>}o@8Z3zd^-SL;?r=?SZ zU=3$J%#ry^mn>-fqiN$)_=piAmdTnUto!#sje-97YWMedo!5iYO2M%o9U1w__bcuC zzio=2G5Of#MT}$}1vYLQn!Hk~92zF;U#9@*1_eH;H@Ah{nkvINcNFQ%M%TD4c5njX?B_gK{}H88q1&cCpSK(Lm%VWl z$+R1t#I%`#rnZ^E4Tf`V!tAHsAgQ~e;kUBX&Cw8wG@&&GRiBBqS#UWwhB#7OFlQ;- zwY7@4iC+o+OYvP~Mw>@uPw9O(0f_`-S{i>zE>p}zmXp-M`;)G_3vYojLm#^CqK;*f zu+?q~AooVJ-^(VG#P4T->pp=Lt|P9bZ32uVo~4%%4@unDwBXR~UXFXe0gZPBn+blf zr6kiFsz8CNYF8eh-_dJWFCnp4)-a+%OjeO0jK+}eF4N=^=&)C}(lY_qPznLPsrwqp z>~oG7JHi1gC@Owx#<_s^tSPI3O<9|Os1M-t9X3L}=qw(lG$&zOs`%f8U^SzEHs{){ z738P}N`X&sm|dFTTwysbh{3sS6@LF*%ZLU1nM!siSkEz0gXWLZc&YJmNAQlm29j-m z;1GTQ{)9TV)|x-#`iI$%BxzR_jvPhgSZ0N7t92BS|5`e)kxZ~gc(vlPLm`9gX`gN8y`W*hB^pA^8 zoGH`={;yWe*Ah>C61jH%`n5|M+|ALffG$#--{WpJh^#B$3;o0iO~=!5<~y0cD+y+L zaDXuFKKANAp&(yFVySfUFHEy0iolgzyt)aXZ0Xyi4)%T4zF%eHWfkikAZWH!X^`Us zp^sf`KKieG(!ogp{D$9bw>o^UI#F{O$krsEzr2y+v>_Gsetw>b~yZ|6ZQ|b3M;-babehqh`+Ud49j2?frUR80}xOX8SBI%R>8Y z`yuh?!1MYW%y*JuK(R(O8#QwQan_&;FswUeU{&{T(gip3bN?IDkC)vnFH_CSFPt=Z z`fU8RSZd$QrxZSK+SB~~mzT!!l~Cp;k-~ZQ^RqhFn@w&aK~Co`L zkKVOk7)1rrYTVcMJ~yeozF={0XPoV-V1OSWgqW8tR;r8E+T7$Z1ybMd2U@TE29}p! z0QKmuz3*_Z%RdQ^kSpm)Q&2GF>RL&vCH8>VWn4&>(r)YgH<`%gqbEPp8zI#~(%U!v z9|(a$Sa;mLJaDKdyWVkMsp z=^f~LRAc)y7$ncjIn)ZZ-`;#oXg}iUAEDG|w*cXNvQwJZi|sbH^btD%7`b<#q(;z( zxPfXtnPc|8r4r{9BfGOUU5dx8;txLPPPRmFw`b&Z#k3w)_h(L)sT4juANaE~MSh?R zJ=3ccon7nxXU3O z!+-}TY>8vYh5n=ysk)og;t|kWQt~$wCj6;40Ic_l`3h>Skj7e1d6>q{UdKZzR%_4^ z*OX%b18IlkB(vm0b%mKYCg_10QegMayu8hnw@B=lNvT87a~mGb*8^B0{kHw z&c46>Iyw;sS41%noESV!LG0wivJWvNT`?|(IXfTH`G0#mxZS@ml@xGP<YO?HCryR(vN-wj0zRY+g0Up*9;sffhL>0X2+E-0Z`k$~W&>ZQH5N z32r@ZfZle!drAJE79%o$S&V=nr90|NY>hlLfO)%`fA8@IR?C@VE(RbwZcbq%K9%bf z6r-rk!U*#D=;xL)E;|et#qEcDca9svDMWE7+!uc{0bc#rL)oMzwANZJ<+dR0)MxsK z@y=}a^KlE(b9vuogA{*Pi;?bBOzv*C;-|QU)`xUZ(U^8t;A#g)Ov zTexd5YDe~3WZ*8{3g;AWo<~snP``j`$5t6un3wq;Z4*GT$+?`LKiKbSHh68Fz&csno(fpqT95P3q{l19|fHV2n*eQlya|z3C!cxF3ojg^vC@ zjH3Vv%Z)=%td|I`q}0@o87sl4P6?MWEC=WMNo>N4CChTN{gv|WfVln17!j>+3O?_+ z7A3!|9IFlZKa^VzUz%D2&Y(iU1JLB3nSjH&beJ5*_>XGROk%bFh2B417EP99EKUZH zE(6AsXPfRDL!Tw1e0YH7)*_&7vjnt0%_6WWeMZjt1^Bpx*-ta{C zttgEgvZF&j6AoEh>11kP4A&ThP6os$M5WHd9!_e@%hcm7+MZW{IaE;c;MmCEw=5=0f|E zA>cV%Gh(1Zwmz?Hx(ppS%>fO!@bx|M-=FM1K2~r2U&;$=>Kc{Yscfxy^svam=xm<$PWI^INotBXySb z_T2Nx@(B*Z&hxh;jg0v?uFL`51oBCg{E36NdIGS`R+KER_C}>Ii*FG$>5=cMCx!iBUZn!*+6j zmp+Qa=>rDiOMt#&&%ePLW~$e2cahM1vO&aUxyN>_xXNx}$J126dNX78#|Oo-VCtsH zwJ<#}w`6&RM!&q=`!kw@ztGVFREe3?=H^ysz=(E`s4!>=*8RDpm-;+(DvB%JJ46zF zdBtYzWLG)^BIip}V{K z=9gTEa}tk)w>2milavzcuS|p~Rf|%3pih2r7|QI2H<~B{@ZvZv%K5qGMDnJv_|6rm zVlq$z@sEemma(C-Gwq>}$Rt28nNQG2fwzRe;L`P⋘nI<0Rf#<-=sdpBX|m?NbE}js0MJ-Rg_1(b#I5v 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

X*D?qu!unbR7qDn`=`prfHSvB4J` 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

*a*(keT0O%A`Rc@F4GTwU_uKjl|L;m^NW_i#? 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ĂR)H3YJp~df*46XZcec2fbs;o#+3V{iS9Xwf= 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

CH^#>&Z3x^6^S6mQ4TrkIpKKBHI~D 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%0At7o-${)wuNJf#Q@hA8 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 UYDs*%4E#BCz;1v3zB4!fAGnJ)H~;_u literal 0 HcmV?d00001 diff --git a/doc/images/macosvfs-file-sharing.png.png b/doc/images/macosvfs-file-sharing.png.png new file mode 100644 index 0000000000000000000000000000000000000000..831837e42ba915ac0228b7444f04ed8e464d8de4 GIT binary patch literal 266804 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ΜtfHZl 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

GPwE&fA#)D4sFfo*gpQ=CF^wKU=eVqE4jz&s3pn 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

*!j-!}ZP=rkbM~8C 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%0AwY6(;{ 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%0Ay7AW$+F+gG3#lO*#5IB`Fb|Ab*LvkFg7Y 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

48U%@9`zAc#5|8$4fjTew) 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 Date: Mon, 18 Nov 2024 02:54:13 +0000 Subject: [PATCH 024/244] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: Rainer Walke --- translations/client_cs.ts | 49 ++++++++++++++++++++++++--------------- translations/client_gl.ts | 30 ++++++++++++------------ translations/client_pl.ts | 4 ++-- 3 files changed, 47 insertions(+), 36 deletions(-) diff --git a/translations/client_cs.ts b/translations/client_cs.ts index faf44fdf60d38..a76e00758136d 100644 --- a/translations/client_cs.ts +++ b/translations/client_cs.ts @@ -978,7 +978,7 @@ Současně tato akce zruší jakoukoli právě probíhající synchronizaci. You need to accept the terms of service - + Je třeba přijmout všeobecné podmínky @@ -1089,7 +1089,7 @@ Současně tato akce zruší jakoukoli právě probíhající synchronizaci. Need the user to accept the terms of service - + Vyžadovat po uživateli přijetí všeobecných podmínek @@ -1704,7 +1704,7 @@ Současně tato akce zruší jakoukoli právě probíhající synchronizaci. Encrypted metadata setup error: initial signature from server is empty. - + Chyba nastavení šifrovaných metadat: počáteční signatura ze serveru je prázdná. @@ -2296,14 +2296,18 @@ To znamená, že se může stávat, že synchronizační klient nebude místní 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. - + Na serveru bylo smazáno velké množství souborů. +Potvrďte, že chcete v těchto mazáních pokračovat. +Případně je možné veškeré smazané soubory obnovit jejich nahráním ze složky „%1“ na 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. - + V lokální složce „%1“ bylo smazáno velké mnoštví . +Potvrďte, že chcete v těchto mazáních pokračovat. +Případně je možné veškeré smazané soubory obnovit jejich stažením si ze serveru. @@ -2313,17 +2317,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Proceed with Deletion - + Pokračovat v mazání Restore Files to Server - + Obnovit soubory na server Restore Files from Server - + Obnovit soubory ze serveru @@ -2822,7 +2826,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - Ve Windows kořenovém adresáři oddílu disku nejsou virtuální soubory podporovány. Vyberte platný adresář v disku. + V kořeni oddílu s Windows, coby lokální složce, nejsou virtuální soubory podporovány. Vyberte platnou podsložku na písmeni disku. @@ -3119,7 +3123,10 @@ Poznamenejme, že je možné přejít na novější verzi, ale není možné se Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. list of available update channels to non enterprise users and downgrading warning - + - beta: obsahuje verze s novými funkcemi, u kterých se může stát, že ještě nebudou důkladně vyzkoušené +- denní: obsahuje verze vytvářené každý den, určené pouze pro zkoušení a vývoj + +Přechod na konzervativnější verze není možný: změna z beta na stable znamená vyčkat na novou stabilní verzi. @@ -3135,7 +3142,9 @@ Downgrading versions is not possible immediately: changing from beta to stable m Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. list of available update channels to enterprise users and downgrading warning - + - enterprise: obsahuje stabilní verze pro zákazníky. + +Přechod na konzervativnější verze není možný: změna ze stable na enterprise znamená vyčkat na novou enterprise verzi. @@ -3163,7 +3172,9 @@ Okamžitý přechod na konzervativnější verze není možný: změna z beta na - stable: contains tested versions considered reliable starts list of available update channels, stable is always available - + Kanál určuje, které aktualizace budou nabízeny pro instalaci: +- stable: obsahuje otestované verze, považované za spolehlivé + @@ -3816,7 +3827,7 @@ Poznamenejme, že použití jakékoli volby příkazového řádku má před tí Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - Ve Windows kořenovém adresáři oddílu disku nejsou virtuální soubory podporovány. Vyberte platný adresář v disku. + V kořeni oddílu s Windows, coby lokální složce, nejsou virtuální soubory podporovány. Vyberte platnou podsložku na písmeni disku. @@ -4279,22 +4290,22 @@ Toto je nový, experimentální režim. Pokud se jej rozhodnete používat, pros Reason: the entire filename is forbidden. - + Důvod: celý název souboru není povolený. Reason: the filename has a forbidden base name (filename start). - + Důvod: název souboru má nepovolený základ (začátek názvu souboru). Reason: the file has a forbidden extension (.%1). - + Důvod: soubor má nepovolenou přípon (.%1). Reason: the filename contains a forbidden character (%1). - + Důvod: název souboru obsahuje nepovolený znak (%1). @@ -5998,12 +6009,12 @@ Server odpověděl chybou: %2 Terms of service - + Všeobecné podmínky Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. - + Váš %1 účet vyžaduje abyste přijali všeobecné podmínky služeb serveru, který využíváte. Budete přesměrování na %2, kde můžete potvrdit, že jste si je přečetli a souhlasíte s nimi. diff --git a/translations/client_gl.ts b/translations/client_gl.ts index 120fc9cd2dab2..f8b1b75b834ce 100644 --- a/translations/client_gl.ts +++ b/translations/client_gl.ts @@ -954,7 +954,7 @@ Esta acción interromperá calquera sincronización que estea a executarse actua Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. - Obtendo autorización dende o navegador. <a href='%1'>Prema aquí</a> para volver abrir o navegador. + Obtendo autorización desde o navegador. <a href='%1'>Prema aquí</a> para volver abrir o navegador. @@ -1800,7 +1800,7 @@ Esta acción interromperá calquera sincronización que estea a executarse actua Could not validate the request to open a file from server. - Non foi posíbel validar a solicitude para abrir un ficheiro dende o servidor. + Non foi posíbel validar a solicitude para abrir un ficheiro desde o servidor. @@ -1865,7 +1865,7 @@ Esta acción interromperá calquera sincronización que estea a executarse actua Could not validate the request to open a file from server. - Non foi posíbel validar a solicitude para abrir un ficheiro dende o servidor. + Non foi posíbel validar a solicitude para abrir un ficheiro desde o servidor. @@ -2009,7 +2009,7 @@ Isto pode ser un problema coas súas bibliotecas OpenSSL. Error returned from the server: <em>%1</em> - Erro devolto dende o servidor: <em>%1</em> + Erro devolto desde o servidor: <em>%1</em> @@ -2021,7 +2021,7 @@ Isto pode ser un problema coas súas bibliotecas OpenSSL. Could not parse the JSON returned from the server: <br><em>%1</em> - Non foi posíbel analizar o JSON devolto dende o servidor: <br><em>%1</em> + Non foi posíbel analizar o JSON devolto desde o servidor: <br><em>%1</em> @@ -2233,7 +2233,7 @@ 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. Elimináronse todos os ficheiros do cartafol de sincronización local «%1». Estes ficheiros eliminados sincronizaranse co seu servidor, polo que tales ficheiros non estarán dispoñíbeis a non ser que sexan restaurados. Confirma que quere sincronizar esas accións co servidor? -Se isto foi un accidente e decide manter os seus ficheiros, volveranse sincronizar dende o servidor. +Se isto foi un accidente e decide manter os seus ficheiros, volveranse sincronizar desde o servidor. @@ -2300,7 +2300,7 @@ 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. Elimináronse un gran número de ficheiros do servidor. Confirme que quere proceder a estas eliminacións. -Como alternativa, pode restaurar todos os ficheiros eliminados enviándoos dende o cartafol «%1» ao servidor. +Como alternativa, pode restaurar todos os ficheiros eliminados enviándoos desde o cartafol «%1» ao servidor. @@ -2537,7 +2537,7 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do Error while loading the list of folders from the server. - Produciuse un erro ao cargar a lista de cartafoles dende o servidor. + Produciuse un erro ao cargar a lista de cartafoles desde o servidor. @@ -3250,7 +3250,7 @@ Non é posíbel reverter versións inmediatamente: cambiar de beta a estábel si <a href="%1">Click here</a> to request an app password from the web interface. - <a href="%1">Prema aquí</a> para solicitar un contrasinal de aplicación dende a interface web. + <a href="%1">Prema aquí</a> para solicitar un contrasinal de aplicación desde a interface web. @@ -5445,7 +5445,7 @@ O servidor respondeu co erro: %2 Unable to read from the sync journal. - Non é posíbel ler dende o diario de sincronización. + Non é posíbel ler desde o diario de sincronización. @@ -6185,7 +6185,7 @@ O servidor respondeu co erro: %2 Synchronize everything from server - Sincronizar todo dende o servidor + Sincronizar todo desde o servidor @@ -6883,7 +6883,7 @@ O servidor respondeu co erro: %2 <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - <p><small>Construido dende a revisión Git <a href="%1">%2</a> en %3, %4 usando Qt %5, %6</small></p> + <p><small>Construido desde a revisión Git <a href="%1">%2</a> en %3, %4 usando Qt %5, %6</small></p> @@ -7189,7 +7189,7 @@ O servidor respondeu co erro: %2 Error returned from the server: <em>%1</em> - Erro devolto dende o servidor: <em>%1</em> + Erro devolto desde o servidor: <em>%1</em> @@ -7204,7 +7204,7 @@ O servidor respondeu co erro: %2 Could not parse the JSON returned from the server: <br><em>%1</em> - Non foi posíbel analizar o JSON devolto dende o servidor: <br><em>%1</em> + Non foi posíbel analizar o JSON devolto desde o servidor: <br><em>%1</em> @@ -7376,7 +7376,7 @@ O servidor respondeu co erro: %2 <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - <p><small>Construido dende a revisión Git <a href="%1">%2</a> en %3, %4 usando Qt %5, %6</small></p> + <p><small>Construido desde a revisión Git <a href="%1">%2</a> en %3, %4 usando Qt %5, %6</small></p> \ No newline at end of file diff --git a/translations/client_pl.ts b/translations/client_pl.ts index cf73e191746fe..ba1ff04f849ee 100644 --- a/translations/client_pl.ts +++ b/translations/client_pl.ts @@ -5713,7 +5713,7 @@ Serwer odpowiedział błędem: %2 Rename file - + Zmień nazwę pliku @@ -7019,7 +7019,7 @@ Serwer odpowiedział błędem: %2 Status undefined - Status niezdefiniowany + Status niezdefiniowane From 01719837fb5364a8175af9f8978609575347f334 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Mon, 18 Nov 2024 08:54:01 +0100 Subject: [PATCH 025/244] remove assert that is being hit always when running debug builds makes no sense as I have to always patch it out to be able to run a debug build Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/gui/iconutils.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/gui/iconutils.cpp b/src/gui/iconutils.cpp index 9fef22d57417a..69f543c783130 100644 --- a/src/gui/iconutils.cpp +++ b/src/gui/iconutils.cpp @@ -128,7 +128,6 @@ QImage createSvgImageWithCustomColor(const QString &fileName, } const auto result = drawSvgWithCustomFillColor(sourceSvg, customColor, originalSize, sizeToUse); - Q_ASSERT(!result.isNull()); if (result.isNull()) { qCWarning(lcIconUtils) << "Failed to load pixmap for" << fileName; From 78cdc62817152e75f010749c3bfa01c721a8479a Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 21 Oct 2024 11:15:22 +0800 Subject: [PATCH 026/244] Remove background from textfields to fix errors Fixes the following errors: ShareeSearchField.qml:53:17: QML QQuickRectangle: The current style does not support customization of this control (property: "background" item: QQuickRectangle(0x600001d42140, parent=0x0, geometry=0,0 0x0)). NCInputTextField.qml:57:17: QML QQuickRectangle: The current style does not support customization of this control (property: "background" item: QQuickRectangle(0x600001d42220, parent=0x0, geometry=0,0 0x0)). Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/NCInputTextField.qml | 5 ----- src/gui/filedetails/ShareeSearchField.qml | 6 ------ 2 files changed, 11 deletions(-) diff --git a/src/gui/filedetails/NCInputTextField.qml b/src/gui/filedetails/NCInputTextField.qml index 27c4236aa1643..6a9b9f17023a4 100644 --- a/src/gui/filedetails/NCInputTextField.qml +++ b/src/gui/filedetails/NCInputTextField.qml @@ -54,10 +54,5 @@ TextField { } verticalAlignment: Qt.AlignVCenter - background: Rectangle { - border.color: palette.dark - radius: Style.trayWindowRadius - color: palette.window - } } diff --git a/src/gui/filedetails/ShareeSearchField.qml b/src/gui/filedetails/ShareeSearchField.qml index 6017eea72f559..46fa73d9d32fa 100644 --- a/src/gui/filedetails/ShareeSearchField.qml +++ b/src/gui/filedetails/ShareeSearchField.qml @@ -50,12 +50,6 @@ TextField { verticalAlignment: Qt.AlignVCenter implicitHeight: Math.max(Style.talkReplyTextFieldPreferredHeight, contentHeight) - background: Rectangle { - border.color: palette.dark - radius: Style.trayWindowRadius - color: palette.window - } - onActiveFocusChanged: triggerSuggestionsVisibility() onTextChanged: triggerSuggestionsVisibility() Keys.onPressed: { From 968bd10fbc7e5f220a0467149ec5bd81bbd5eed0 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 21 Oct 2024 11:16:10 +0800 Subject: [PATCH 027/244] Add small top margin to shareview Fixes highlight of sharee search field with macOS styling Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/ShareView.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/filedetails/ShareView.qml b/src/gui/filedetails/ShareView.qml index 425e442800ba8..d5c63e8d6b935 100644 --- a/src/gui/filedetails/ShareView.qml +++ b/src/gui/filedetails/ShareView.qml @@ -142,6 +142,7 @@ ColumnLayout { ShareeSearchField { id: shareeSearchField Layout.fillWidth: true + Layout.topMargin: Style.smallSpacing Layout.leftMargin: root.horizontalPadding Layout.rightMargin: root.horizontalPadding From a56b7893986fc9bc1eaf6fe8b64de7be23bb002f Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Tue, 19 Nov 2024 02:53:36 +0000 Subject: [PATCH 028/244] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: Rainer Walke --- translations/client_ar.ts | 18 +++++++++--------- translations/client_bg.ts | 18 +++++++++--------- translations/client_br.ts | 18 +++++++++--------- translations/client_ca.ts | 18 +++++++++--------- translations/client_cs.ts | 18 +++++++++--------- translations/client_da.ts | 18 +++++++++--------- translations/client_de.ts | 18 +++++++++--------- translations/client_el.ts | 18 +++++++++--------- translations/client_en_GB.ts | 18 +++++++++--------- translations/client_eo.ts | 18 +++++++++--------- translations/client_es.ts | 18 +++++++++--------- translations/client_es_CL.ts | 18 +++++++++--------- translations/client_es_CO.ts | 18 +++++++++--------- translations/client_es_CR.ts | 18 +++++++++--------- translations/client_es_DO.ts | 18 +++++++++--------- translations/client_es_EC.ts | 18 +++++++++--------- translations/client_es_GT.ts | 18 +++++++++--------- translations/client_es_HN.ts | 18 +++++++++--------- translations/client_es_MX.ts | 18 +++++++++--------- translations/client_es_SV.ts | 18 +++++++++--------- translations/client_eu.ts | 18 +++++++++--------- translations/client_fa.ts | 18 +++++++++--------- translations/client_fi.ts | 18 +++++++++--------- translations/client_fr.ts | 18 +++++++++--------- translations/client_ga.ts | 18 +++++++++--------- translations/client_gl.ts | 18 +++++++++--------- translations/client_he.ts | 18 +++++++++--------- translations/client_hr.ts | 18 +++++++++--------- translations/client_hu.ts | 18 +++++++++--------- translations/client_is.ts | 18 +++++++++--------- translations/client_it.ts | 18 +++++++++--------- translations/client_ja.ts | 18 +++++++++--------- translations/client_ko.ts | 18 +++++++++--------- translations/client_lt_LT.ts | 18 +++++++++--------- translations/client_lv.ts | 18 +++++++++--------- translations/client_mk.ts | 18 +++++++++--------- translations/client_nb_NO.ts | 18 +++++++++--------- translations/client_nl.ts | 18 +++++++++--------- translations/client_oc.ts | 18 +++++++++--------- translations/client_pl.ts | 18 +++++++++--------- translations/client_pt.ts | 18 +++++++++--------- translations/client_pt_BR.ts | 18 +++++++++--------- translations/client_ro.ts | 18 +++++++++--------- translations/client_ru.ts | 18 +++++++++--------- translations/client_sc.ts | 18 +++++++++--------- translations/client_sk.ts | 18 +++++++++--------- translations/client_sl.ts | 18 +++++++++--------- translations/client_sr.ts | 18 +++++++++--------- translations/client_sv.ts | 18 +++++++++--------- translations/client_th.ts | 18 +++++++++--------- translations/client_tr.ts | 18 +++++++++--------- translations/client_ug.ts | 18 +++++++++--------- translations/client_uk.ts | 18 +++++++++--------- translations/client_zh_CN.ts | 18 +++++++++--------- translations/client_zh_HK.ts | 18 +++++++++--------- translations/client_zh_TW.ts | 18 +++++++++--------- 56 files changed, 504 insertions(+), 504 deletions(-) diff --git a/translations/client_ar.ts b/translations/client_ar.ts index d98d2d837f8b6..d84b29513dc09 100644 --- a/translations/client_ar.ts +++ b/translations/client_ar.ts @@ -962,7 +962,7 @@ This action will abort any currently running synchronization. لا يوجد اتصال مع %1 فى %2. - + Unable to connect to %1. تعذّر الاتصال بـ %1. @@ -972,7 +972,7 @@ This action will abort any currently running synchronization. خطـأ تهيئة الخادم: %1 في %2. - + You need to accept the terms of service يجب عليك قبول شروط الخدمة @@ -997,7 +997,7 @@ This action will abort any currently running synchronization. هنالك مجلدات لم تتم مزامنتها لأن حجمها كبيرٌ جدًا أو لأنها وحدات تخزين خارجية: - + There are folders that have grown in size beyond %1MB: %2 هنالك مجلدات تجاوز حجمها %1ميغا بايت: %2 @@ -2384,32 +2384,32 @@ Alternatively, you can restore all deleted files by downloading them from the se التحضير للمزامنة. - + Syncing %1 of %2 (A few seconds left) مزامنة %1 من %2 (المتبقي بضع ثوانٍ) - + Syncing %1 of %2 (%3 left) مزامنة %1 من %2 (مازال %3) - + Syncing %1 of %2 مزامنة %1 من %2 - + Syncing %1 (A few seconds left) مزامنة %1 (المتبقي بضع ثوانٍ) - + Syncing %1 (%2 left) مزامنة %1 (مازال %2) - + Syncing %1 مزامنة %1 diff --git a/translations/client_bg.ts b/translations/client_bg.ts index 6bff6fe30ded5..f222b3631dbf9 100644 --- a/translations/client_bg.ts +++ b/translations/client_bg.ts @@ -963,7 +963,7 @@ This action will abort any currently running synchronization. Не може да се осъществи връзка като %1 с %2. - + Unable to connect to %1. @@ -973,7 +973,7 @@ This action will abort any currently running synchronization. Грешка в конфигурацията на сървъра:% 1 при% 2. - + You need to accept the terms of service @@ -998,7 +998,7 @@ This action will abort any currently running synchronization. Има папки, които не са синхронизирани защото са твърде големи или са външни хранилища: - + There are folders that have grown in size beyond %1MB: %2 @@ -2388,32 +2388,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Подготвяне за синхронизиране. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_br.ts b/translations/client_br.ts index e5f7b9ae1f629..6023d40af7d01 100644 --- a/translations/client_br.ts +++ b/translations/client_br.ts @@ -958,7 +958,7 @@ This action will abort any currently running synchronization. Kestagadenn ebet da %1 da %2 - + Unable to connect to %1. @@ -968,7 +968,7 @@ This action will abort any currently running synchronization. - + You need to accept the terms of service @@ -993,7 +993,7 @@ This action will abort any currently running synchronization. Teuliadoù so n'int ke bet kemredet peogwir e oant pe re vra pe lec'hioù klenkañ diavaez : - + There are folders that have grown in size beyond %1MB: %2 @@ -2375,32 +2375,32 @@ Alternatively, you can restore all deleted files by downloading them from the se O prientiñ evit ar gemprenn. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_ca.ts b/translations/client_ca.ts index 17f39f6efec07..d0ccb68f82eba 100644 --- a/translations/client_ca.ts +++ b/translations/client_ca.ts @@ -963,7 +963,7 @@ Aquesta acció anul·larà qualsevol sincronització en execució. No hi ha connexió a %1 a %2. - + Unable to connect to %1. @@ -973,7 +973,7 @@ Aquesta acció anul·larà qualsevol sincronització en execució. Error de configuració del servidor: %1 a %2. - + You need to accept the terms of service @@ -998,7 +998,7 @@ Aquesta acció anul·larà qualsevol sincronització en execució. Hi ha carpetes que no s'han sincronitzat perquè són massa grans o són fonts d'emmagatzematge extern: - + There are folders that have grown in size beyond %1MB: %2 @@ -2378,32 +2378,32 @@ Alternatively, you can restore all deleted files by downloading them from the se S'està preparant la sincronització. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_cs.ts b/translations/client_cs.ts index a76e00758136d..8b5ef135d949b 100644 --- a/translations/client_cs.ts +++ b/translations/client_cs.ts @@ -966,7 +966,7 @@ Současně tato akce zruší jakoukoli právě probíhající synchronizaci.Bez připojení k %1 na %2. - + Unable to connect to %1. Nedaří se připojit k %1. @@ -976,7 +976,7 @@ Současně tato akce zruší jakoukoli právě probíhající synchronizaci.Chyba nastavení serveru: %1 na %2. - + You need to accept the terms of service Je třeba přijmout všeobecné podmínky @@ -1001,7 +1001,7 @@ Současně tato akce zruší jakoukoli právě probíhající synchronizaci.Tyto složky nebyly synchronizovány, protože jsou příliš velké, nebo se nacházejí na externích úložištích: - + There are folders that have grown in size beyond %1MB: %2 Jsou zde složky, jejichž velikost přesáhla %1MB: %2 @@ -2396,32 +2396,32 @@ Případně je možné veškeré smazané soubory obnovit jejich stažením si z Příprava na synchronizaci. - + Syncing %1 of %2 (A few seconds left) Synchronizuje se %1 z %2 (zbývá několik sekund) - + Syncing %1 of %2 (%3 left) Synchronizuje se %1 z %2 (zbývá %3) - + Syncing %1 of %2 Synchronizuje se %1 z %2 - + Syncing %1 (A few seconds left) Synchronizuje se %1 (zbývá několik sekund) - + Syncing %1 (%2 left) Synchronizuje se %1 (%2 zbývá) - + Syncing %1 Synchronizuje se %1 diff --git a/translations/client_da.ts b/translations/client_da.ts index 06204893bf46c..5fb5024224c5f 100644 --- a/translations/client_da.ts +++ b/translations/client_da.ts @@ -966,7 +966,7 @@ Denne handling vil annullere alle i øjeblikket kørende synkroniseringer.Ingen forbindelse til %1 hos %2. - + Unable to connect to %1. Kan ikke oprette forbindelse til %1. @@ -976,7 +976,7 @@ Denne handling vil annullere alle i øjeblikket kørende synkroniseringer.Serverkonfigurationsfejl: %1 på %2. - + You need to accept the terms of service @@ -1001,7 +1001,7 @@ Denne handling vil annullere alle i øjeblikket kørende synkroniseringer.Der er mapper som ikke blev synkroniseret fordi de er for store eller eksterne lagre: - + There are folders that have grown in size beyond %1MB: %2 @@ -2385,32 +2385,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Forbereder synkronisering - + Syncing %1 of %2 (A few seconds left) Synkroniserer %1 af %2 (et par sekunder tilbage) - + Syncing %1 of %2 (%3 left) Synkroniserer %1 af %2 (%3 tilbage) - + Syncing %1 of %2 Synkroniserer %1 af %2 - + Syncing %1 (A few seconds left) Synkroniserer %1 (et par sekunder tilbage) - + Syncing %1 (%2 left) Synkroniserer %1 (%2 tilbage) - + Syncing %1 Synkroniserer %1 diff --git a/translations/client_de.ts b/translations/client_de.ts index dc6dd239d9708..930dca4fd715d 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -966,7 +966,7 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. Keine Verbindung zu %1 auf %2 - + Unable to connect to %1. Verbindung zu %1 kann nicht hergestellt werden. @@ -976,7 +976,7 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. Konfigurationsfehler des Servers: %1 auf %2. - + You need to accept the terms of service Sie müssen die Nutzungsbedingungen akzeptieren @@ -1001,7 +1001,7 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. 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 @@ -2397,32 +2397,32 @@ Alternativ können Sie auch alle gelöschten Dateien wiederherstellen, indem Sie Synchronisierung wird vorbereitet. - + Syncing %1 of %2 (A few seconds left) Synchronisiere %1 von %2 (ein paar Sekunden übrig) - + Syncing %1 of %2 (%3 left) Synchronisiere %1 von %2 (%3 übrig) - + Syncing %1 of %2 Synchronisiere %1 von %2 - + Syncing %1 (A few seconds left) Synchronisiere %1 (ein paar Sekunden übrig) - + Syncing %1 (%2 left) Synchronisiere %1 (%2 übrig) - + Syncing %1 Synchronisiere %1 diff --git a/translations/client_el.ts b/translations/client_el.ts index f2c8a64a44a07..d35ffec87ab4a 100644 --- a/translations/client_el.ts +++ b/translations/client_el.ts @@ -958,7 +958,7 @@ This action will abort any currently running synchronization. Δεν υπάρχει σύνδεση με το %1 στο %2. - + Unable to connect to %1. @@ -968,7 +968,7 @@ This action will abort any currently running synchronization. Σφάλμα ρυθμίσεων διακομιστή: %1 σε %2. - + You need to accept the terms of service @@ -993,7 +993,7 @@ This action will abort any currently running synchronization. Υπάρχουν φάκελοι που δεν συγχρονίστηκαν επειδή είναι πολύ μεγάλοι ή αποθηκευτικοί χώροι: - + There are folders that have grown in size beyond %1MB: %2 @@ -2381,32 +2381,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Προετοιμασία για συγχρονισμό. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_en_GB.ts b/translations/client_en_GB.ts index fc169c0baec93..76b74fb112896 100644 --- a/translations/client_en_GB.ts +++ b/translations/client_en_GB.ts @@ -967,7 +967,7 @@ This action will abort any currently running synchronization. No connection to %1 at %2. - + Unable to connect to %1. Unable to connect to %1. @@ -977,7 +977,7 @@ This action will abort any currently running synchronization. Server configuration error: %1 at %2. - + You need to accept the terms of service You need to accept the terms of service @@ -1002,7 +1002,7 @@ This action will abort any currently running synchronization. There are folders that were not synchronised because they are too big or external storages: - + There are folders that have grown in size beyond %1MB: %2 There are folders that have grown in size beyond %1MB: %2 @@ -2398,32 +2398,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Preparing for sync. - + Syncing %1 of %2 (A few seconds left) Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 Syncing %1 of %2 - + Syncing %1 (A few seconds left) Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) Syncing %1 (%2 left) - + Syncing %1 Syncing %1 diff --git a/translations/client_eo.ts b/translations/client_eo.ts index 152255ecaea3c..2389ece4ef80f 100644 --- a/translations/client_eo.ts +++ b/translations/client_eo.ts @@ -957,7 +957,7 @@ This action will abort any currently running synchronization. Neniu konekto al servilo %1 je la adreso %2. - + Unable to connect to %1. @@ -967,7 +967,7 @@ This action will abort any currently running synchronization. - + You need to accept the terms of service @@ -992,7 +992,7 @@ This action will abort any currently running synchronization. Kelkaj dosierujoj ne sinkroniĝis, ĉar ili estas tro grandaj âù konservataj en ekstera konservejo: - + There are folders that have grown in size beyond %1MB: %2 @@ -2374,32 +2374,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Pretigado de la sinkronigo. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_es.ts b/translations/client_es.ts index 0eab1528586f4..5d04b189ae5eb 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -968,7 +968,7 @@ Además, esta acción interrumpirá cualquier sincronización en curso.Sin conexión a %1 en %2. - + Unable to connect to %1. No es posible conectarse con %1. @@ -978,7 +978,7 @@ Además, esta acción interrumpirá cualquier sincronización en curso.Error de configuración del servidor: %1 en %2, - + You need to accept the terms of service Tienes que aceptar los términos de servicio @@ -1003,7 +1003,7 @@ Además, esta acción interrumpirá cualquier sincronización en curso.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 @@ -2400,32 +2400,32 @@ Alternativamente, puedes restaurar todos los archivos borrados descargándolos d Preparándose para sincronizar. - + Syncing %1 of %2 (A few seconds left) Sincronizando %1 de %2 (quedan unos segundos) - + Syncing %1 of %2 (%3 left) Sicronizando %1 de %2 (quedan %3) - + Syncing %1 of %2 Sincronizando %1 de %2 - + Syncing %1 (A few seconds left) Sincronizando %1 (Quedan unos segundos) - + Syncing %1 (%2 left) Sincronizando %1 (Quedan %2) - + Syncing %1 Sincronizando %1 diff --git a/translations/client_es_CL.ts b/translations/client_es_CL.ts index b795f11ce7e0d..807eed3e98921 100644 --- a/translations/client_es_CL.ts +++ b/translations/client_es_CL.ts @@ -957,7 +957,7 @@ This action will abort any currently running synchronization. No hay conexión a %1 en %2. - + Unable to connect to %1. @@ -967,7 +967,7 @@ This action will abort any currently running synchronization. - + You need to accept the terms of service @@ -992,7 +992,7 @@ This action will abort any currently running synchronization. Hay carpetas que no fueron sincronizadas porque son demasiado grandes o son de almacenamiento externo: - + There are folders that have grown in size beyond %1MB: %2 @@ -2370,32 +2370,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Preparando para sincronizar. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_es_CO.ts b/translations/client_es_CO.ts index 79508f6d7464d..5587d9cfee9cf 100644 --- a/translations/client_es_CO.ts +++ b/translations/client_es_CO.ts @@ -957,7 +957,7 @@ This action will abort any currently running synchronization. No hay conexión a %1 en %2. - + Unable to connect to %1. @@ -967,7 +967,7 @@ This action will abort any currently running synchronization. - + You need to accept the terms of service @@ -992,7 +992,7 @@ This action will abort any currently running synchronization. Hay carpetas que no fueron sincronizadas porque son demasiado grandes o son de almacenamiento externo: - + There are folders that have grown in size beyond %1MB: %2 @@ -2370,32 +2370,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Preparando para sincronizar. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_es_CR.ts b/translations/client_es_CR.ts index 41aa03c5e130b..69be3d52a30ca 100644 --- a/translations/client_es_CR.ts +++ b/translations/client_es_CR.ts @@ -957,7 +957,7 @@ This action will abort any currently running synchronization. No hay conexión a %1 en %2. - + Unable to connect to %1. @@ -967,7 +967,7 @@ This action will abort any currently running synchronization. - + You need to accept the terms of service @@ -992,7 +992,7 @@ This action will abort any currently running synchronization. Hay carpetas que no fueron sincronizadas porque son demasiado grandes o son de almacenamiento externo: - + There are folders that have grown in size beyond %1MB: %2 @@ -2370,32 +2370,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Preparando para sincronizar. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_es_DO.ts b/translations/client_es_DO.ts index 930494bbcb3cf..6b650046221a1 100644 --- a/translations/client_es_DO.ts +++ b/translations/client_es_DO.ts @@ -957,7 +957,7 @@ This action will abort any currently running synchronization. No hay conexión a %1 en %2. - + Unable to connect to %1. @@ -967,7 +967,7 @@ This action will abort any currently running synchronization. - + You need to accept the terms of service @@ -992,7 +992,7 @@ This action will abort any currently running synchronization. Hay carpetas que no fueron sincronizadas porque son demasiado grandes o son de almacenamiento externo: - + There are folders that have grown in size beyond %1MB: %2 @@ -2370,32 +2370,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Preparando para sincronizar. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_es_EC.ts b/translations/client_es_EC.ts index e42217eb9c6dd..fac71c251f466 100644 --- a/translations/client_es_EC.ts +++ b/translations/client_es_EC.ts @@ -964,7 +964,7 @@ This action will abort any currently running synchronization. No hay conexión a %1 en %2. - + Unable to connect to %1. @@ -974,7 +974,7 @@ This action will abort any currently running synchronization. Error de configuración del servidor: %1 en %2. - + You need to accept the terms of service @@ -999,7 +999,7 @@ This action will abort any currently running synchronization. Hay carpetas que no fueron sincronizadas porque son demasiado grandes o son de almacenamiento externo: - + There are folders that have grown in size beyond %1MB: %2 @@ -2388,32 +2388,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Preparando para sincronizar. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_es_GT.ts b/translations/client_es_GT.ts index e39fa071f4e96..def9f1c596cb2 100644 --- a/translations/client_es_GT.ts +++ b/translations/client_es_GT.ts @@ -957,7 +957,7 @@ This action will abort any currently running synchronization. No hay conexión a %1 en %2. - + Unable to connect to %1. @@ -967,7 +967,7 @@ This action will abort any currently running synchronization. - + You need to accept the terms of service @@ -992,7 +992,7 @@ This action will abort any currently running synchronization. Hay carpetas que no fueron sincronizadas porque son demasiado grandes o son de almacenamiento externo: - + There are folders that have grown in size beyond %1MB: %2 @@ -2370,32 +2370,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Preparando para sincronizar. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_es_HN.ts b/translations/client_es_HN.ts index d86ba6e5f062c..54ab8af6d9616 100644 --- a/translations/client_es_HN.ts +++ b/translations/client_es_HN.ts @@ -957,7 +957,7 @@ This action will abort any currently running synchronization. No hay conexión a %1 en %2. - + Unable to connect to %1. @@ -967,7 +967,7 @@ This action will abort any currently running synchronization. - + You need to accept the terms of service @@ -992,7 +992,7 @@ This action will abort any currently running synchronization. Hay carpetas que no fueron sincronizadas porque son demasiado grandes o son de almacenamiento externo: - + There are folders that have grown in size beyond %1MB: %2 @@ -2370,32 +2370,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Preparando para sincronizar. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_es_MX.ts b/translations/client_es_MX.ts index 2f58ada932a23..874e08ed80e1c 100644 --- a/translations/client_es_MX.ts +++ b/translations/client_es_MX.ts @@ -967,7 +967,7 @@ This action will abort any currently running synchronization. No hay conexión a %1 en %2. - + Unable to connect to %1. No se pudo conectar a %1. @@ -977,7 +977,7 @@ This action will abort any currently running synchronization. Error de configuración del servidor: %1 en %2. - + You need to accept the terms of service @@ -1002,7 +1002,7 @@ This action will abort any currently running synchronization. Hay carpetas que no fueron sincronizadas porque son demasiado grandes o son de almacenamiento externo: - + There are folders that have grown in size beyond %1MB: %2 Existen carpetas que han aumentado de tamaño más allá de %1MB: %2 @@ -2394,32 +2394,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Preparando para sincronizar. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_es_SV.ts b/translations/client_es_SV.ts index b6d6d33d04cc7..ff905cdfd44cf 100644 --- a/translations/client_es_SV.ts +++ b/translations/client_es_SV.ts @@ -957,7 +957,7 @@ This action will abort any currently running synchronization. No hay conexión a %1 en %2. - + Unable to connect to %1. @@ -967,7 +967,7 @@ This action will abort any currently running synchronization. - + You need to accept the terms of service @@ -992,7 +992,7 @@ This action will abort any currently running synchronization. Hay carpetas que no fueron sincronizadas porque son demasiado grandes o son de almacenamiento externo: - + There are folders that have grown in size beyond %1MB: %2 @@ -2370,32 +2370,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Preparando para sincronizar. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_eu.ts b/translations/client_eu.ts index f10de7827f7d8..e46ce35745c06 100644 --- a/translations/client_eu.ts +++ b/translations/client_eu.ts @@ -967,7 +967,7 @@ Ekintza honek unean uneko sinkronizazioa bertan behera utziko du. Konexiorik ez %1-ekin %2-en - + Unable to connect to %1. Ezin izan da %1(e)ra konektatu. @@ -977,7 +977,7 @@ Ekintza honek unean uneko sinkronizazioa bertan behera utziko du. Zerbitzariaren konfigurazio errorea: %1 %2-n. - + You need to accept the terms of service Zerbitzuaren baldintzak onartu behar dituzu @@ -1002,7 +1002,7 @@ Ekintza honek unean uneko sinkronizazioa bertan behera utziko du. Hainbat karpeta ez dira sinkronizatu handiegiak direlako edo kanpoko biltegietan daudelako: - + There are folders that have grown in size beyond %1MB: %2 Badira %1MB baino gehiago handitu diren karpetak: %2 @@ -2398,32 +2398,32 @@ Bestela, ezabatutako fitxategi guztiak leheneratu ditzakezu zerbitzaritik deskar Sinkronizazioa prestatzen. - + Syncing %1 of %2 (A few seconds left) Sinkronizatzen %2-tik %1 (segundo batzuk falta dira) - + Syncing %1 of %2 (%3 left) Sinkronizatzen %2-tik %1 (%3 segundo falta dira) - + Syncing %1 of %2 Sinkronizatzen %2-tik %1 - + Syncing %1 (A few seconds left) Sinkronizatzen %1 (segundo batzuk falta dira) - + Syncing %1 (%2 left) Sinkronizatzen %1 (%2 segundo falta dira) - + Syncing %1 Sinkronizatzen %1 diff --git a/translations/client_fa.ts b/translations/client_fa.ts index a9acbe72a6b76..0cb2df286bc19 100644 --- a/translations/client_fa.ts +++ b/translations/client_fa.ts @@ -964,7 +964,7 @@ This action will abort any currently running synchronization. اتصال به 1% در 2% وجود ندارد. - + Unable to connect to %1. @@ -974,7 +974,7 @@ This action will abort any currently running synchronization. Server configuration error: %1 at %2. - + You need to accept the terms of service @@ -999,7 +999,7 @@ This action will abort any currently running synchronization. پوشه‌هایی وجود دارند که همگام سازی نشده اند زیرا آن ها بسیار بزرگ یا مخازن خارجی هستند: - + There are folders that have grown in size beyond %1MB: %2 There are folders that have grown in size beyond %1MB: %2 @@ -2390,32 +2390,32 @@ Alternatively, you can restore all deleted files by downloading them from the se آماده سازی برای همگام سازی کردن. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_fi.ts b/translations/client_fi.ts index f72fcb5adec18..73580e56ca9ed 100644 --- a/translations/client_fi.ts +++ b/translations/client_fi.ts @@ -961,7 +961,7 @@ Tämä toiminto peruu kaikki tämänhetkiset synkronoinnit. Ei yhteyttä kohteeseen %1 osoitteessa %2. - + Unable to connect to %1. @@ -971,7 +971,7 @@ Tämä toiminto peruu kaikki tämänhetkiset synkronoinnit. Palvelimen kokoonpanovirhe: %1 at %2. - + You need to accept the terms of service @@ -996,7 +996,7 @@ Tämä toiminto peruu kaikki tämänhetkiset synkronoinnit. Seuraavia kansioita ei synkronoitu, koska ne ovat liian suuria tai ulkoisia tallennustiloja: - + There are folders that have grown in size beyond %1MB: %2 @@ -2377,32 +2377,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Valmistellaan synkronointia. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_fr.ts b/translations/client_fr.ts index b04c3da8bfd0b..dd853cf7eada5 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -965,7 +965,7 @@ Vous prenez vos propres risques. Aucune connexion au serveur %1 à l'adresse %2. - + Unable to connect to %1. Impossible de se connecter à %1. @@ -975,7 +975,7 @@ Vous prenez vos propres risques. Erreur de configuration serveur : %1 à %2. - + You need to accept the terms of service Vous devez accepter les conditions générales d'utilisation @@ -1000,7 +1000,7 @@ Vous prenez vos propres risques. 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 @@ -2397,32 +2397,32 @@ Vous pouvez également restaurer tous les fichiers supprimés en les télécharg Préparation de la synchronisation. - + Syncing %1 of %2 (A few seconds left) Synchronisation de %1 sur %2 (il reste quelques secondes) - + Syncing %1 of %2 (%3 left) Synchronisation de %1 sur %2 (%3 restant⸱s) - + Syncing %1 of %2 Synchronisation de %1 sur %2 - + Syncing %1 (A few seconds left) Synchronisation de %1 (il reste quelques secondes) - + Syncing %1 (%2 left) Synchronisation de %1 (%2 restant⸱s) - + Syncing %1 Synchronisation de %1 diff --git a/translations/client_ga.ts b/translations/client_ga.ts index 1cd1f6ca1e94f..91405f2530529 100644 --- a/translations/client_ga.ts +++ b/translations/client_ga.ts @@ -967,7 +967,7 @@ Cuirfidh an gníomh seo deireadh le haon sioncrónú atá ar siúl faoi láthair Gan ceangal le % 1 ag % 2. - + Unable to connect to %1. Ní féidir ceangal le % 1. @@ -977,7 +977,7 @@ Cuirfidh an gníomh seo deireadh le haon sioncrónú atá ar siúl faoi láthair Earráid chumraíocht an fhreastalaí: % 1 ag % 2. - + You need to accept the terms of service Ní mór duit glacadh leis na téarmaí seirbhíse @@ -1002,7 +1002,7 @@ Cuirfidh an gníomh seo deireadh le haon sioncrónú atá ar siúl faoi láthair Tá fillteáin ann nár sioncronaíodh toisc go bhfuil siad rómhór nó mar stórais sheachtracha: - + There are folders that have grown in size beyond %1MB: %2 Tá fillteáin ann a d'fhás i méid thar % 1MB: % 2 @@ -2398,32 +2398,32 @@ De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n Ag ullmhú le haghaidh sioncronaithe. - + Syncing %1 of %2 (A few seconds left) %1 de %2 á shioncronú (cúpla soicind fágtha) - + Syncing %1 of %2 (%3 left) %1 de %2 á shioncronú (%3 fágtha) - + Syncing %1 of %2 %1 de %2 á shioncronú - + Syncing %1 (A few seconds left) %1 á shioncronú (cúpla soicind fágtha) - + Syncing %1 (%2 left) %1 á shioncronú (%2 fágtha) - + Syncing %1 %1 á shioncronú diff --git a/translations/client_gl.ts b/translations/client_gl.ts index f8b1b75b834ce..70fcc895dd8b0 100644 --- a/translations/client_gl.ts +++ b/translations/client_gl.ts @@ -967,7 +967,7 @@ Esta acción interromperá calquera sincronización que estea a executarse actua Non hai conexión con %1 en %2. - + Unable to connect to %1. Non é posíbel conectar con %1. @@ -977,7 +977,7 @@ Esta acción interromperá calquera sincronización que estea a executarse actua Produciuse un erro de configuración do servidor: %1 en %2. - + You need to accept the terms of service É preciso que Vde. acepte as condicións de servizo @@ -1002,7 +1002,7 @@ Esta acción interromperá calquera sincronización que estea a executarse actua Hai cartafoles que non se sincronizaron porque son demasiado grandes ou almacenamentos externos: - + There are folders that have grown in size beyond %1MB: %2 Hai cartafoles que creceron máis aló de %1MB: %2 @@ -2398,32 +2398,32 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do Preparando para sincronizar. - + Syncing %1 of %2 (A few seconds left) Sincronizando %1 de %2 (restan uns segundos) - + Syncing %1 of %2 (%3 left) Sincronizando %1 de %2 (restan %3) - + Syncing %1 of %2 Sincronizando %1 de %2 - + Syncing %1 (A few seconds left) Sincronizando %1 (restan uns segundos) - + Syncing %1 (%2 left) Sincronizando %1 (restan %2) - + Syncing %1 Sincronizando %1 diff --git a/translations/client_he.ts b/translations/client_he.ts index 07444e61e77a1..fa24f74e2d383 100644 --- a/translations/client_he.ts +++ b/translations/client_he.ts @@ -958,7 +958,7 @@ This action will abort any currently running synchronization. אין חיבור אל %1 ב־%2. - + Unable to connect to %1. @@ -968,7 +968,7 @@ This action will abort any currently running synchronization. שגיאה בתצורת השרת: %1 ב־%2. - + You need to accept the terms of service @@ -993,7 +993,7 @@ This action will abort any currently running synchronization. ישנן תיקיות שלא סונכרנו כיוון שהן גדולות מדי או באחסון חיצוני: - + There are folders that have grown in size beyond %1MB: %2 @@ -2373,32 +2373,32 @@ Alternatively, you can restore all deleted files by downloading them from the se בהכנות לסנכרון. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_hr.ts b/translations/client_hr.ts index 02ad3facbf099..462c9051fc1f5 100644 --- a/translations/client_hr.ts +++ b/translations/client_hr.ts @@ -962,7 +962,7 @@ Ova će radnja prekinuti bilo koju trenutačnu sinkronizaciju. Ne postoji veza s %1 na %2. - + Unable to connect to %1. @@ -972,7 +972,7 @@ Ova će radnja prekinuti bilo koju trenutačnu sinkronizaciju. Pogreška konfiguracije poslužitelja: %1 na %2. - + You need to accept the terms of service @@ -997,7 +997,7 @@ Ova će radnja prekinuti bilo koju trenutačnu sinkronizaciju. Ove mape nisu sinkronizirane jer su prevelike ili su vanjski prostori za pohranu: - + There are folders that have grown in size beyond %1MB: %2 @@ -2387,32 +2387,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Priprema za sinkronizaciju. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_hu.ts b/translations/client_hu.ts index d974ee4c176af..9ce12399e8c18 100644 --- a/translations/client_hu.ts +++ b/translations/client_hu.ts @@ -964,7 +964,7 @@ Ez a művelet megszakítja a jelenleg futó szinkronizálást. Nincs kapcsolat ehhez: %1, itt: %2. - + Unable to connect to %1. @@ -974,7 +974,7 @@ Ez a művelet megszakítja a jelenleg futó szinkronizálást. Kiszolgáló konfigurációs hiba: %1, itt: %2. - + You need to accept the terms of service El kell fogadnia a felhasználási feltételeket @@ -999,7 +999,7 @@ Ez a művelet megszakítja a jelenleg futó szinkronizálást. Az alábbi mappák nem lettek szinkronizálva, mert túl nagyok, vagy külső tárolók: - + There are folders that have grown in size beyond %1MB: %2 @@ -2389,32 +2389,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Előkészítés a szinkronizáláshoz. - + Syncing %1 of %2 (A few seconds left) %1 / %2 szinkronizálása (néhány másodperc maradt) - + Syncing %1 of %2 (%3 left) %1 / %2 szinkronizálása (%3 maradt) - + Syncing %1 of %2 %1 / %2 szinkronizálása - + Syncing %1 (A few seconds left) %1 szinkronizálása (néhány másodperc maradt) - + Syncing %1 (%2 left) %1 szinkronizálása (%2 maradt) - + Syncing %1 %1 szinkronizálása diff --git a/translations/client_is.ts b/translations/client_is.ts index 10488ac6ed377..83f14a7634caf 100644 --- a/translations/client_is.ts +++ b/translations/client_is.ts @@ -963,7 +963,7 @@ skráakerfið eða sameignarmöppur, gætu verið með önnur takmörk.Engin tenging við %1 á %2. - + Unable to connect to %1. @@ -973,7 +973,7 @@ skráakerfið eða sameignarmöppur, gætu verið með önnur takmörk. - + You need to accept the terms of service @@ -999,7 +999,7 @@ skráakerfið eða sameignarmöppur, gætu verið með önnur takmörk. - + There are folders that have grown in size beyond %1MB: %2 @@ -2381,32 +2381,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Undirbý samstillingu. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_it.ts b/translations/client_it.ts index 71101c869b5b5..7cac40a94ae84 100644 --- a/translations/client_it.ts +++ b/translations/client_it.ts @@ -967,7 +967,7 @@ Questa azione interromperà qualsiasi sincronizzazione attualmente in esecuzione Nessuna connessione a %1 su %2. - + Unable to connect to %1. Connessione non riuscita a %1. @@ -977,7 +977,7 @@ Questa azione interromperà qualsiasi sincronizzazione attualmente in esecuzione Errore di configurazione del server: %1 in %2. - + You need to accept the terms of service Devi accettare i termini del servizio @@ -1002,7 +1002,7 @@ Questa azione interromperà qualsiasi sincronizzazione attualmente in esecuzione Ci sono nuove cartelle che non sono state sincronizzate poiché sono troppo grandi o archiviazioni esterne: - + There are folders that have grown in size beyond %1MB: %2 Ci sono cartelle che sono cresciute di spazio superando %1MB: %2 @@ -2399,32 +2399,32 @@ In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli da Preparazione della sincronizzazione. - + Syncing %1 of %2 (A few seconds left) Sincronizzazione %1 di %2(Mancano pochi secondi) - + Syncing %1 of %2 (%3 left) Sincronizzazione%1 di %2 (%3 rimasto) - + Syncing %1 of %2 Sincronizzazione %1 di %2 - + Syncing %1 (A few seconds left) Sincronizzazione %1 (Mancano pochi secondi) - + Syncing %1 (%2 left) Sincronizzazione %1 (%2 rimasto) - + Syncing %1 Sincronizzazione %1 diff --git a/translations/client_ja.ts b/translations/client_ja.ts index e1adb217e8c85..ed565259c95f4 100644 --- a/translations/client_ja.ts +++ b/translations/client_ja.ts @@ -967,7 +967,7 @@ This action will abort any currently running synchronization. %2 の %1 への接続がありません。 - + Unable to connect to %1. %1 に接続できません。 @@ -977,7 +977,7 @@ This action will abort any currently running synchronization. サーバー設定エラー: %2 の %1 - + You need to accept the terms of service 利用規約に同意する必要があります @@ -1002,7 +1002,7 @@ This action will abort any currently running synchronization. 大きすぎたか、外部ストレージにあるため同期されなかったフォルダーがあります: - + There are folders that have grown in size beyond %1MB: %2 サイズが %1 MB を超えて大きくなったフォルダがあります: %2 @@ -2398,32 +2398,32 @@ Alternatively, you can restore all deleted files by downloading them from the se 同期の準備中。 - + Syncing %1 of %2 (A few seconds left) 同期中 %2 中 %1 (あと数秒) - + Syncing %1 of %2 (%3 left) 同期中 %2 中 %1 (残り %3) - + Syncing %1 of %2 %2 の %1 を同期しています - + Syncing %1 (A few seconds left) 同期中 %1 (あと数秒) - + Syncing %1 (%2 left) 同期中 %1 (残り %2) - + Syncing %1 同期中 %1 diff --git a/translations/client_ko.ts b/translations/client_ko.ts index 192c8eee4e9d7..e5bc1080a8577 100644 --- a/translations/client_ko.ts +++ b/translations/client_ko.ts @@ -966,7 +966,7 @@ This action will abort any currently running synchronization. %1와 %2에 연결이 없습니다. - + Unable to connect to %1. %1에 연결할 수 없습니다. @@ -976,7 +976,7 @@ This action will abort any currently running synchronization. 서버 설정 오류: %2에 있는 %1 - + You need to accept the terms of service @@ -1001,7 +1001,7 @@ This action will abort any currently running synchronization. 사이즈가 너무 크거나 외부 저장소이므로 동기화되지 않은 폴더가 있습니다: - + There are folders that have grown in size beyond %1MB: %2 크기가 %1MB보다 더 커진 폴더가 있습니다: %2 @@ -2393,32 +2393,32 @@ Alternatively, you can restore all deleted files by downloading them from the se 동기화 준비 중 - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_lt_LT.ts b/translations/client_lt_LT.ts index 48b36ae7ff9f3..92d1247368217 100644 --- a/translations/client_lt_LT.ts +++ b/translations/client_lt_LT.ts @@ -958,7 +958,7 @@ This action will abort any currently running synchronization. %2 neturi ryšio su %1. - + Unable to connect to %1. Nepavyko prisijungti prie %1. @@ -968,7 +968,7 @@ This action will abort any currently running synchronization. Serverio konfigūracijos klaida: %1 ties %2. - + You need to accept the terms of service @@ -993,7 +993,7 @@ This action will abort any currently running synchronization. Yra aplankų, kurie nebuvo sinchronizuoti dėl to, kad buvo per dideli arba yra išorinės saugyklos: - + There are folders that have grown in size beyond %1MB: %2 @@ -2374,32 +2374,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Ruošiamasi sinchronizavimui. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_lv.ts b/translations/client_lv.ts index cc1512676c505..a40c067c768a7 100644 --- a/translations/client_lv.ts +++ b/translations/client_lv.ts @@ -967,7 +967,7 @@ Vienīgā priekšrocība, izslēdzot virtuālo datņu atbalstu, ir tas, ka atkal Nav savienojuma ar %1 pie %2. - + Unable to connect to %1. @@ -977,7 +977,7 @@ Vienīgā priekšrocība, izslēdzot virtuālo datņu atbalstu, ir tas, ka atkal Servera konfigurācijas kļūda: %1 pie %2. - + You need to accept the terms of service @@ -1002,7 +1002,7 @@ Vienīgā priekšrocība, izslēdzot virtuālo datņu atbalstu, ir tas, ka atkal Šīs mapes netika sinhronizētas, jo tās ir pārāk lielas, vai atrodas ārējās krātuvēs: - + There are folders that have grown in size beyond %1MB: %2 Ir mapes, kas ir palielinājušās izmērā pāri %1MB: %2 @@ -2384,32 +2384,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Sagatavojas sinhronizācijai. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_mk.ts b/translations/client_mk.ts index 7fb78644e6253..e7f21298a28d6 100644 --- a/translations/client_mk.ts +++ b/translations/client_mk.ts @@ -957,7 +957,7 @@ This action will abort any currently running synchronization. Нема врска со %1 на %2. - + Unable to connect to %1. @@ -967,7 +967,7 @@ This action will abort any currently running synchronization. Грешка во конфигурацијата на серверот: %1 во %2. - + You need to accept the terms of service @@ -992,7 +992,7 @@ This action will abort any currently running synchronization. Има папки кој не се синхронизирани бидејќи се премногу големи или се надворешни складишта: - + There are folders that have grown in size beyond %1MB: %2 @@ -2372,32 +2372,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Подготовка за синхронизација. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_nb_NO.ts b/translations/client_nb_NO.ts index d84971767de26..7b44baf38a90e 100644 --- a/translations/client_nb_NO.ts +++ b/translations/client_nb_NO.ts @@ -967,7 +967,7 @@ Denne handlingen vil avbryte enhver synkronisering som kjører. Ingen tilkobling til %1 på %2. - + Unable to connect to %1. Ikke i stand til å koble til %1. @@ -977,7 +977,7 @@ Denne handlingen vil avbryte enhver synkronisering som kjører. Server konfigurasjons-feil: %1 ved %2. - + You need to accept the terms of service @@ -1002,7 +1002,7 @@ Denne handlingen vil avbryte enhver synkronisering som kjører. Noen mapper ble ikke synkronisert fordi de er for store eller de er eksterne lagringsplasser: - + There are folders that have grown in size beyond %1MB: %2 Det er mapper som har vokst i størrelse utover %1MB: %2 @@ -2393,32 +2393,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Forbereder synkronisering. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_nl.ts b/translations/client_nl.ts index 293804ab196b3..8567549982d83 100644 --- a/translations/client_nl.ts +++ b/translations/client_nl.ts @@ -963,7 +963,7 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken.Geen verbinding met %1 op %2. - + Unable to connect to %1. Kan niet verbinden met %1. @@ -973,7 +973,7 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken.Serverconfiguratiefout: %1 op %2. - + You need to accept the terms of service @@ -998,7 +998,7 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken.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 Er zijn bestanden die groter zijn geworden dan %1MB: %2 @@ -2389,32 +2389,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Synchronisatie wordt voorbereid - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_oc.ts b/translations/client_oc.ts index be7d0b1a38f02..0a10105e0421e 100644 --- a/translations/client_oc.ts +++ b/translations/client_oc.ts @@ -957,7 +957,7 @@ This action will abort any currently running synchronization. Cap de connexion a %1 a %2. - + Unable to connect to %1. @@ -967,7 +967,7 @@ This action will abort any currently running synchronization. Error de configuracion servidor : %1 a %2. - + You need to accept the terms of service @@ -992,7 +992,7 @@ This action will abort any currently running synchronization. - + There are folders that have grown in size beyond %1MB: %2 @@ -2368,32 +2368,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Preparacion per sincronizar. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_pl.ts b/translations/client_pl.ts index ba1ff04f849ee..0e8e729c768cf 100644 --- a/translations/client_pl.ts +++ b/translations/client_pl.ts @@ -967,7 +967,7 @@ Ta czynność spowoduje przerwanie aktualnie uruchomionej synchronizacji.Brak połączenia do %1 z %2. - + Unable to connect to %1. Nie można połączyć się z %@ @@ -977,7 +977,7 @@ Ta czynność spowoduje przerwanie aktualnie uruchomionej synchronizacji.Błąd konfiguracji serwera: %1 w %2. - + You need to accept the terms of service @@ -1002,7 +1002,7 @@ Ta czynność spowoduje przerwanie aktualnie uruchomionej synchronizacji.Katalogi te nie zostały zsynchronizowane, ponieważ są zbyt duże lub znajdują się w magazynach zewnętrznych: - + There are folders that have grown in size beyond %1MB: %2 Istnieją katalogi, których rozmiar przekracza %1MB: %2 @@ -2394,32 +2394,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Przygotowanie do synchronizacji. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_pt.ts b/translations/client_pt.ts index fffc25019deb7..3f6196c377083 100644 --- a/translations/client_pt.ts +++ b/translations/client_pt.ts @@ -958,7 +958,7 @@ This action will abort any currently running synchronization. Sem ligação para %1 em %2. - + Unable to connect to %1. @@ -968,7 +968,7 @@ This action will abort any currently running synchronization. - + You need to accept the terms of service @@ -993,7 +993,7 @@ This action will abort any currently running synchronization. Existem pastas que não foram sincronizadas por serem demasiado grandes ou armazenamento externo: - + There are folders that have grown in size beyond %1MB: %2 @@ -2371,32 +2371,32 @@ Alternatively, you can restore all deleted files by downloading them from the se A preparar para sincronizar. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_pt_BR.ts b/translations/client_pt_BR.ts index 4d45221e045a6..eecbe0b023d00 100644 --- a/translations/client_pt_BR.ts +++ b/translations/client_pt_BR.ts @@ -964,7 +964,7 @@ Esta ação irá cancelar qualquer sincronização atualmente em execução.Sem conexão para %1 em %2. - + Unable to connect to %1. Não foi possível conectar-se a %1. @@ -974,7 +974,7 @@ Esta ação irá cancelar qualquer sincronização atualmente em execução.Erro na configuração do servidor: %1 em %2. - + You need to accept the terms of service Você precisa aceitar os termos de serviço @@ -999,7 +999,7 @@ Esta ação irá cancelar qualquer sincronização atualmente em execução.Existem pastas que não foram sincronizadas porque são muito grandes ou são armazenamentos externos: - + There are folders that have grown in size beyond %1MB: %2 Existem pastas cujo tamanho aumentou além de %1MB: %2 @@ -2392,32 +2392,32 @@ Como alternativa, você pode restaurar todos os arquivos excluídos baixando-os Preparando para a sincronização. - + Syncing %1 of %2 (A few seconds left) Sincronizando %1 de %2 (faltam alguns segundos) - + Syncing %1 of %2 (%3 left) Sincronizando %1 de %2 (faltam %3) - + Syncing %1 of %2 Sincronizando %1 de %2 - + Syncing %1 (A few seconds left) Sincronizando %1 (faltam alguns segundos) - + Syncing %1 (%2 left) Sincronizando %1 (faltam %2) - + Syncing %1 Sincronizando %1 diff --git a/translations/client_ro.ts b/translations/client_ro.ts index 78661ac14e7dd..2f558500bfac4 100644 --- a/translations/client_ro.ts +++ b/translations/client_ro.ts @@ -962,7 +962,7 @@ Această acțiune va opri toate sincronizările în derulare din acest moment.Nu există nici-o conexiune către %1 la %2. - + Unable to connect to %1. @@ -972,7 +972,7 @@ Această acțiune va opri toate sincronizările în derulare din acest moment.Eroare de configurare a serverulu: %1 la %2. - + You need to accept the terms of service @@ -997,7 +997,7 @@ Această acțiune va opri toate sincronizările în derulare din acest moment.Există dosare ce nu au fost sinscronizate deoarece acestea sunt prea mari sau se află pe stocarea externă: - + There are folders that have grown in size beyond %1MB: %2 @@ -2385,32 +2385,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Se pregătește sincronizarea. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_ru.ts b/translations/client_ru.ts index 199c7b8afac34..70cddca8876c4 100644 --- a/translations/client_ru.ts +++ b/translations/client_ru.ts @@ -965,7 +965,7 @@ This action will abort any currently running synchronization. Нет соединения с %1 в %2. - + Unable to connect to %1. Не удалось подключиться к %1. @@ -975,7 +975,7 @@ This action will abort any currently running synchronization. Ошибка конфигурации сервера: %1: %2. - + You need to accept the terms of service Вам необходимо принять условия предоставления услуг @@ -1000,7 +1000,7 @@ This action will abort any currently running synchronization. Есть папки, которые не были синхронизированы, так как их размер превышает установленное ограничение или они являются внешними хранилищами: - + There are folders that have grown in size beyond %1MB: %2 Обнаружено %2 папки, размер которых превысил %1 МБ @@ -2393,32 +2393,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Подготовка к синхронизации. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_sc.ts b/translations/client_sc.ts index 32d7c9412cba8..1ff50e76f8ea9 100644 --- a/translations/client_sc.ts +++ b/translations/client_sc.ts @@ -962,7 +962,7 @@ Custa atzione at a firmare cale si siat sincronizatzione immoe in esecutzione.Peruna connessione a %1 in %2. - + Unable to connect to %1. @@ -972,7 +972,7 @@ Custa atzione at a firmare cale si siat sincronizatzione immoe in esecutzione.Ddoe at àpidu un'errore in su serbidore: %1 in %2. - + You need to accept the terms of service @@ -997,7 +997,7 @@ Custa atzione at a firmare cale si siat sincronizatzione immoe in esecutzione.Ddoe at cartellas chi non sunt istadas sincronizadas ca sunt tropu mannas o memòrias de archiviatziones de foras: - + There are folders that have grown in size beyond %1MB: %2 @@ -2388,32 +2388,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Aprontende sa sincronizatzione. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_sk.ts b/translations/client_sk.ts index 792ea929b795f..5b0dd0f1e6921 100644 --- a/translations/client_sk.ts +++ b/translations/client_sk.ts @@ -967,7 +967,7 @@ Táto akcia zruší všetky prebiehajúce synchronizácie. Žiadne pripojenie k %1 na %2. - + Unable to connect to %1. Nepodarilo sa pripojiť k %1. @@ -977,7 +977,7 @@ Táto akcia zruší všetky prebiehajúce synchronizácie. Chyba konfigurácie serveru: %1 na %2. - + You need to accept the terms of service @@ -1002,7 +1002,7 @@ Táto akcia zruší všetky prebiehajúce synchronizácie. Niektoré priečinky neboli synchronizované, pretože sú príliš veľké alebo sú na externom úložisku - + There are folders that have grown in size beyond %1MB: %2 Existujú priečinky, ktorých veľkosť presiahla %1 MB: %2 @@ -2394,32 +2394,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Príprava na synchronizáciu. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_sl.ts b/translations/client_sl.ts index 44aaab255578d..e474c5bd62bc5 100644 --- a/translations/client_sl.ts +++ b/translations/client_sl.ts @@ -962,7 +962,7 @@ S tem dejanjem prav tako prekinete vsa trenutna usklajevanja v izvajanju.S strežnikom %1 ni vzpostavljene povezave (%2). - + Unable to connect to %1. Vzpostavitev povezave z %1 je spodletela. @@ -972,7 +972,7 @@ S tem dejanjem prav tako prekinete vsa trenutna usklajevanja v izvajanju.Napaka nastavitve strežnika: %1 na %2 - + You need to accept the terms of service @@ -997,7 +997,7 @@ S tem dejanjem prav tako prekinete vsa trenutna usklajevanja v izvajanju.Zaznane so mape, ki zaradi omejitve velikosti, ali zato, ker so del zunanje shrambe, niso bile usklajene: - + There are folders that have grown in size beyond %1MB: %2 @@ -2387,32 +2387,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Poteka priprava na usklajevanje. - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_sr.ts b/translations/client_sr.ts index 90e87f6959a23..403bebe615349 100644 --- a/translations/client_sr.ts +++ b/translations/client_sr.ts @@ -967,7 +967,7 @@ This action will abort any currently running synchronization. Нема конекције на %1 са %2. - + Unable to connect to %1. Није успело повезивање са %1. @@ -977,7 +977,7 @@ This action will abort any currently running synchronization. Грешка у конфигурацији сервера: %1 у %2. - + You need to accept the terms of service Морате прихватити услове коришћења коришћења @@ -1002,7 +1002,7 @@ This action will abort any currently running synchronization. Ово су фасцикле које нису синхронизоване зато што су превелике или су на спољним складиштима: - + There are folders that have grown in size beyond %1MB: %2 Има фолдера чија је величина нарасла преко %1MB: %2 @@ -2398,32 +2398,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Припремам синхронизацију. - + Syncing %1 of %2 (A few seconds left) Синхронизујем %1 од %2 (преостало је неколико секунди) - + Syncing %1 of %2 (%3 left) Синхронизује се %1 од %2 (преостало %3) - + Syncing %1 of %2 Синхронизује се %1 од %2 - + Syncing %1 (A few seconds left) Синхронизује се %1 (преостало је неколико секунди) - + Syncing %1 (%2 left) Синхронизује се %1 (преостало %2) - + Syncing %1 Синхронизује се %1 diff --git a/translations/client_sv.ts b/translations/client_sv.ts index ea9eaf1d3fb0a..e3b5bd938584d 100644 --- a/translations/client_sv.ts +++ b/translations/client_sv.ts @@ -967,7 +967,7 @@ Den här åtgärden avbryter alla pågående synkroniseringar. Ingen anslutning till %1 vid %2. - + Unable to connect to %1. Kan inte ansluta till %1. @@ -977,7 +977,7 @@ Den här åtgärden avbryter alla pågående synkroniseringar. Felaktig serverkonfiguration: %1 vid %2. - + You need to accept the terms of service Du behöver acceptera användarvillkoren @@ -1002,7 +1002,7 @@ Den här åtgärden avbryter alla pågående synkroniseringar. Det finns mappar som inte blivit synkroniserade på grund av att de är för stora eller är externa lagringsytor: - + There are folders that have grown in size beyond %1MB: %2 Det finns mappar som har vuxit i storlek större än %1MB: %2 @@ -2398,32 +2398,32 @@ Alternativt kan du återställa alla raderade filer genom att ladda ner dem frå Förbereder synkronisering - + Syncing %1 of %2 (A few seconds left) Synkroniserar %1 av %2 (några sekunder kvar) - + Syncing %1 of %2 (%3 left) Synkroniserar %1 av %2 (%3 kvar) - + Syncing %1 of %2 Synkroniserar %1 av %2 - + Syncing %1 (A few seconds left) Synkroniserar %1 (några sekunder kvar) - + Syncing %1 (%2 left) Synkroniserar %1 (%2 kvar) - + Syncing %1 Synkroniserar %1 diff --git a/translations/client_th.ts b/translations/client_th.ts index 5ad0138575552..d761698df9317 100644 --- a/translations/client_th.ts +++ b/translations/client_th.ts @@ -961,7 +961,7 @@ This action will abort any currently running synchronization. ไม่มีการเชื่อมต่อไปยัง %1 ที่ %2 - + Unable to connect to %1. @@ -971,7 +971,7 @@ This action will abort any currently running synchronization. การกำหนดค่าเซิร์ฟเวอร์ผิดพลาด: %1 ที่ %2 - + You need to accept the terms of service @@ -996,7 +996,7 @@ This action will abort any currently running synchronization. มีบางโฟลเดอร์ที่ไม่ถูกซิงโครไนซ์เพราะมีขนาดใหญ่เกินไป หรือเป็นพื้นที่จัดเก็บข้อมูลภายนอก: - + There are folders that have grown in size beyond %1MB: %2 @@ -2376,32 +2376,32 @@ Alternatively, you can restore all deleted files by downloading them from the se กำลังเตรียมการซิงค์ - + Syncing %1 of %2 (A few seconds left) - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (A few seconds left) - + Syncing %1 (%2 left) - + Syncing %1 diff --git a/translations/client_tr.ts b/translations/client_tr.ts index 634de8f6ddd5d..4408f2c077a54 100644 --- a/translations/client_tr.ts +++ b/translations/client_tr.ts @@ -967,7 +967,7 @@ Bu işlem şu anda yürütülmekte olan eşitleme işlemlerini durdurur.%1 ile %2 üzerinde bağlantı yok. - + Unable to connect to %1. %1 ile bağlantı kurulamadı. @@ -977,7 +977,7 @@ Bu işlem şu anda yürütülmekte olan eşitleme işlemlerini durdurur.Sunucu yapılandırma sorunu: %1 ile %2. - + You need to accept the terms of service Hizmet koşullarını kabul etmelisiniz @@ -1002,7 +1002,7 @@ Bu işlem şu anda yürütülmekte olan eşitleme işlemlerini durdurur.Çok büyük oldukları için ya da dış depolama alanında bulundukları için eşitlenmeyen klasörler var: - + There are folders that have grown in size beyond %1MB: %2 Boyutu %1MB değerini aşan klasörler var: %2 @@ -2397,32 +2397,32 @@ Bir yanlışlık varsa, silinen tüm dosyaları sunucudan indirerek geri yükley Eşitleme için hazırlanılıyor. - + Syncing %1 of %2 (A few seconds left) %1 / %2 eşitleniyor (birkaç saniye kaldı) - + Syncing %1 of %2 (%3 left) %1 / %2 eşitleniyor (%3 kaldı) - + Syncing %1 of %2 %1 / %2 eşitleniyor - + Syncing %1 (A few seconds left) %1 eşitleniyor (birkaç saniye kaldı) - + Syncing %1 (%2 left) %1 eşitleniyor (%2 kaldı) - + Syncing %1 %1 eşitleniyor diff --git a/translations/client_ug.ts b/translations/client_ug.ts index 254d945d7c51b..ff3848f6a4feb 100644 --- a/translations/client_ug.ts +++ b/translations/client_ug.ts @@ -967,7 +967,7 @@ This action will abort any currently running synchronization. % 2 دىكى% 1 گە ئۇلىنىش يوق. - + Unable to connect to %1. % 1 گە ئۇلىنالمىدى. @@ -977,7 +977,7 @@ This action will abort any currently running synchronization. مۇلازىمېتىر سەپلەش خاتالىقى:% 1 دىكى% 1. - + You need to accept the terms of service مۇلازىمەت شەرتلىرىنى قوبۇل قىلىشىڭىز كېرەك @@ -1002,7 +1002,7 @@ This action will abort any currently running synchronization. ماس كېلىدىغان ھۆججەت قىسقۇچلار بار ، چۈنكى ئۇلار بەك چوڭ ياكى تاشقى دۇكانلار: - + There are folders that have grown in size beyond %1MB: %2 چوڭلۇقى% 1MB دىن ئېشىپ كەتكەن قىسقۇچلار بار:% 2 @@ -2398,32 +2398,32 @@ Alternatively, you can restore all deleted files by downloading them from the se ماسقەدەملەشكە تەييارلىق قىلماقتا. - + Syncing %1 of %2 (A few seconds left) % 2 نىڭ% 1 ماسقەدەملىنىشى (بىر نەچچە سېكۇنت قالدى) - + Syncing %1 of %2 (%3 left) % 2 نىڭ% 1 نى ماسقەدەملەش (% 3 قالدى) - + Syncing %1 of %2 % 2 نىڭ% 1 نى ماسقەدەملەش - + Syncing %1 (A few seconds left) ماس قەدەم% 1 (بىر نەچچە سېكۇنت قالدى) - + Syncing %1 (%2 left) ماس قەدەم% 1 (% 2 سول) - + Syncing %1 ماس قەدەم% 1 diff --git a/translations/client_uk.ts b/translations/client_uk.ts index 5867efb1626ff..27c17e65cddf5 100644 --- a/translations/client_uk.ts +++ b/translations/client_uk.ts @@ -967,7 +967,7 @@ This action will abort any currently running synchronization. Відсутнє з'єднання між %2 та %1. - + Unable to connect to %1. Не вдалося з'єднатися із %1. @@ -977,7 +977,7 @@ This action will abort any currently running synchronization. Помилка у налаштуванні сервера: %1, див. %2. - + You need to accept the terms of service Потрібно прийняти умови користування @@ -1002,7 +1002,7 @@ This action will abort any currently running synchronization. Окремі каталоги не було синхронізовано, оскільки їхній розмір завеликий або розміщені у зовнішніх сховищах: - + There are folders that have grown in size beyond %1MB: %2 Виявлено %2 каталогів, розмір яких збільшився поза встановленим обмеженням %1MB @@ -2398,32 +2398,32 @@ Alternatively, you can restore all deleted files by downloading them from the se Підготовка до синхронізації - + Syncing %1 of %2 (A few seconds left) Синхронізація %1 із %2 (залишилося декілька секунд) - + Syncing %1 of %2 (%3 left) Синхронізація %1 із %2 (залишилося ще %3) - + Syncing %1 of %2 Синхронізація %1 із %2 - + Syncing %1 (A few seconds left) Синхронізація %1 (залишилося декілька секунд) - + Syncing %1 (%2 left) Синхронізація %1 (залишилося ще %2) - + Syncing %1 Синхронізація %1 diff --git a/translations/client_zh_CN.ts b/translations/client_zh_CN.ts index e13426e1b0712..cde829012c75c 100644 --- a/translations/client_zh_CN.ts +++ b/translations/client_zh_CN.ts @@ -963,7 +963,7 @@ This action will abort any currently running synchronization. 没有到位于%2中的%1的连接 - + Unable to connect to %1. 无法连接至 %1。 @@ -973,7 +973,7 @@ This action will abort any currently running synchronization. 服务器配置错误:%1 于 %2. - + You need to accept the terms of service @@ -998,7 +998,7 @@ This action will abort any currently running synchronization. 以下目录由于太大或是外部存储而没有同步: - + There are folders that have grown in size beyond %1MB: %2 有些文件夹的大小已超过 %1MB: %2 @@ -2392,32 +2392,32 @@ Alternatively, you can restore all deleted files by downloading them from the se 准备同步。 - + Syncing %1 of %2 (A few seconds left) 正在同步 %1/%2(还剩几秒) - + Syncing %1 of %2 (%3 left) 正在同步 %1/%2 (剩余 %3 个) - + Syncing %1 of %2 同步 %1/%2 - + Syncing %1 (A few seconds left) 正在同步 %1(剩余几秒) - + Syncing %1 (%2 left) 正在同步 %1(剩余 %2) - + Syncing %1 正在同步 %1 diff --git a/translations/client_zh_HK.ts b/translations/client_zh_HK.ts index 8d9b2e5084e6d..2e0825aa1cbb8 100644 --- a/translations/client_zh_HK.ts +++ b/translations/client_zh_HK.ts @@ -968,7 +968,7 @@ This action will abort any currently running synchronization. %1 沒有連線到 %2 - + Unable to connect to %1. 無法連接至 %1。 @@ -978,7 +978,7 @@ This action will abort any currently running synchronization. 伺服器設定錯誤:%1 在 %2。 - + You need to accept the terms of service 您需要接受服務條款 @@ -1003,7 +1003,7 @@ This action will abort any currently running synchronization. 有部分資料夾因為容量太大或是外部存儲沒有辦法同步: - + There are folders that have grown in size beyond %1MB: %2 有些資料夾的大小已超過 %1MB:%2 @@ -2399,32 +2399,32 @@ Alternatively, you can restore all deleted files by downloading them from the se 正在準備同步。 - + Syncing %1 of %2 (A few seconds left) 正在同步 %1,共 %2(還剩幾秒) - + Syncing %1 of %2 (%3 left) 正在同步 %1,共 %2(剩餘 %3) - + Syncing %1 of %2 正在同步第 %1 項,共 %2 項 - + Syncing %1 (A few seconds left) 正在同步 %1(還剩幾秒) - + Syncing %1 (%2 left) 正在同步第 %1 項(剩餘 %2 項) - + Syncing %1 正在同步 %1 diff --git a/translations/client_zh_TW.ts b/translations/client_zh_TW.ts index 8325f0e4d250d..52641585ecf25 100644 --- a/translations/client_zh_TW.ts +++ b/translations/client_zh_TW.ts @@ -967,7 +967,7 @@ This action will abort any currently running synchronization. 未連線到在 %2 的 %1。 - + Unable to connect to %1. 無法連線至 %1。 @@ -977,7 +977,7 @@ This action will abort any currently running synchronization. 伺服器組態設定錯誤:%1 於 %2。 - + You need to accept the terms of service 您必須接受服務條款 @@ -1002,7 +1002,7 @@ This action will abort any currently running synchronization. 有些資料夾因為容量太大或是位在外部儲存空間而無法同步: - + There are folders that have grown in size beyond %1MB: %2 有些資料夾的大小已超過 %1MB:%2 @@ -2398,32 +2398,32 @@ Alternatively, you can restore all deleted files by downloading them from the se 正在準備同步。 - + Syncing %1 of %2 (A few seconds left) 正在同步 %1,共 %2(還剩幾秒) - + Syncing %1 of %2 (%3 left) 正在同步 %1,共 %2(剩餘 %3) - + Syncing %1 of %2 正在同步第 %1 項,共 %2 項 - + Syncing %1 (A few seconds left) 正在同步 %1(還剩幾秒) - + Syncing %1 (%2 left) 正在同步第 %1 項(剩餘 %2 項) - + Syncing %1 正在同步 %1 From 19f19668170d799f79593f19c7fb127667239b81 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 24 Oct 2024 18:08:47 +0800 Subject: [PATCH 029/244] Fix encoding used for override server url Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- 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 85efef02be0f4..d10d50be4f650 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -384,7 +384,7 @@ Theme::Theme() _forceOverrideServerUrl = true; #endif #ifdef APPLICATION_SERVER_URL - setOverrideServerUrl(QString::fromLatin1(APPLICATION_SERVER_URL)); + setOverrideServerUrl(QString::fromUtf8(APPLICATION_SERVER_URL)); #endif } From 6a68d89bd17f1fa54f2aea1623bbfdb9c98e0756 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 5 Nov 2024 16:05:33 +0900 Subject: [PATCH 030/244] If fileProviderExtRecheable is false, try to reconfigure client communication service Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/macOS/fileproviderxpc.h | 2 +- src/gui/macOS/fileproviderxpc_mac.mm | 32 ++++++++++++++++++++++++---- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/gui/macOS/fileproviderxpc.h b/src/gui/macOS/fileproviderxpc.h index 349dfc3264034..39bc86397ac6d 100644 --- a/src/gui/macOS/fileproviderxpc.h +++ b/src/gui/macOS/fileproviderxpc.h @@ -35,7 +35,7 @@ class FileProviderXPC : public QObject public: explicit FileProviderXPC(QObject *parent = nullptr); - [[nodiscard]] bool fileProviderExtReachable(const QString &extensionAccountId); + [[nodiscard]] bool fileProviderExtReachable(const QString &extensionAccountId, bool retry = true, bool reconfigureOnFail = true); // Returns enabled and set state of fast enumeration for the given extension [[nodiscard]] std::optional> fastEnumerationStateForExtension(const QString &extensionAccountId) const; diff --git a/src/gui/macOS/fileproviderxpc_mac.mm b/src/gui/macOS/fileproviderxpc_mac.mm index 4c55cc5d34490..96877d36813b8 100644 --- a/src/gui/macOS/fileproviderxpc_mac.mm +++ b/src/gui/macOS/fileproviderxpc_mac.mm @@ -17,6 +17,7 @@ #include #include "gui/accountmanager.h" +#include "gui/macOS/fileprovider.h" #include "gui/macOS/fileproviderdomainmanager.h" #include "gui/macOS/fileproviderxpc_mac_utils.h" @@ -144,10 +145,12 @@ } } -bool FileProviderXPC::fileProviderExtReachable(const QString &extensionAccountId) -{ +bool FileProviderXPC::fileProviderExtReachable(const QString &extensionAccountId, const bool retry, const bool reconfigureOnFail) const auto lastUnreachableTime = _unreachableAccountExtensions.value(extensionAccountId); - if (lastUnreachableTime.isValid() && lastUnreachableTime.secsTo(QDateTime::currentDateTime()) < ::reachableRetryTimeout) { + if (!retry + && !reconfigureOnFail + && lastUnreachableTime.isValid() + && lastUnreachableTime.secsTo(QDateTime::currentDateTime()) < ::reachableRetryTimeout) { qCInfo(lcFileProviderXPC) << "File provider extension was unreachable less than a minute ago. " << "Not checking again"; return false; @@ -155,6 +158,7 @@ const auto service = (NSObject *)_clientCommServices.value(extensionAccountId); if (service == nil) { + qCWarning(lcFileProviderXPC) << "Could not get service for extension" << extensionAccountId; return false; } @@ -170,7 +174,27 @@ _unreachableAccountExtensions.remove(extensionAccountId); } else { qCWarning(lcFileProviderXPC) << "Could not reach file provider extension."; - _unreachableAccountExtensions.insert(extensionAccountId, QDateTime::currentDateTime()); + + if (reconfigureOnFail) { + qCWarning(lcFileProviderXPC) << "Could not reach extension" + << extensionAccountId + << "going to attempt reconfiguring interface"; + const auto ncDomainManager = FileProvider::instance()->domainManager(); + const auto accountState = ncDomainManager->accountStateFromFileProviderDomainIdentifier(extensionAccountId); + const auto domain = (NSFileProviderDomain *)(ncDomainManager->domainForAccount(accountState.get())); + const auto manager = [NSFileProviderManager managerForDomain:domain]; + const auto fpServices = FileProviderXPCUtils::getFileProviderServices(@[manager]); + const auto connections = FileProviderXPCUtils::connectToFileProviderServices(fpServices); + const auto services = FileProviderXPCUtils::processClientCommunicationConnections(connections); + _clientCommServices.insert(services); + } + + if (retry) { + qCWarning(lcFileProviderXPC) << "Could not reach extension" << extensionAccountId << "retrying"; + return fileProviderExtReachable(extensionAccountId, false, false); + } else { + _unreachableAccountExtensions.insert(extensionAccountId, QDateTime::currentDateTime()); + } } return response; } From e4d59fa0ee086fd69551c54cadbf8abf8673a7aa Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Mon, 18 Nov 2024 17:08:14 +0100 Subject: [PATCH 031/244] Update url to dowload linuxdeploy-plugin-qt tool latest version. Fix https://github.com/linuxdeploy/linuxdeploy-plugin-qt/pull/186 for Qt6 has been released. Signed-off-by: Camila Ayres Signed-off-by: Rainer Walke --- admin/linux/build-appimage.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/admin/linux/build-appimage.sh b/admin/linux/build-appimage.sh index 9cbcbb1b48223..94ca4c5ad63ee 100755 --- a/admin/linux/build-appimage.sh +++ b/admin/linux/build-appimage.sh @@ -78,8 +78,7 @@ export LD_LIBRARY_PATH=/app/usr/lib:${QT_BASE_DIR}/lib:/usr/local/lib/x86_64-lin # Use linuxdeploy-plugin-qt to deploy qt dependencies export APPIMAGE_NAME=linuxdeploy-plugin-qt-x86_64.AppImage -# TODO: this share link is supposed to be a workaround, we need an url pointing to github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/tag/continuous, see github.com/linuxdeploy/linuxdeploy-plugin-qt/pull/186 -wget -O ${APPIMAGE_NAME} --ca-directory=/etc/ssl/certs -c "https://cloud.nextcloud.com/s/2TDi3Md257Lb8Wf/download/linuxdeploy-plugin-qt-x86_64.AppImage" +wget -O ${APPIMAGE_NAME} --ca-directory=/etc/ssl/certs -c "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage" chmod a+x ${APPIMAGE_NAME} ./${APPIMAGE_NAME} --appimage-extract rm ./${APPIMAGE_NAME} From aa1741bc5ff80e499d92330c0504e888ada8f289 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 29 Oct 2024 17:31:17 +0800 Subject: [PATCH 032/244] Rewrite setResult:forPath: method signature for SyncClient and FinderSync Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- .../MacOSX/NextcloudIntegration/FinderSyncExt/FinderSync.m | 2 +- .../FinderSyncExt/FinderSyncSocketLineProcessor.m | 2 +- .../MacOSX/NextcloudIntegration/FinderSyncExt/SyncClient.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/shell_integration/MacOSX/NextcloudIntegration/FinderSyncExt/FinderSync.m b/shell_integration/MacOSX/NextcloudIntegration/FinderSyncExt/FinderSync.m index 9d2c3a015c880..822a2b6393846 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FinderSyncExt/FinderSync.m +++ b/shell_integration/MacOSX/NextcloudIntegration/FinderSyncExt/FinderSync.m @@ -194,7 +194,7 @@ - (void)subMenuActionClicked:(id)sender { #pragma mark - SyncClientProxyDelegate implementation -- (void)setResultForPath:(NSString*)path result:(NSString*)result +- (void)setResult:(NSString *)result forPath:(NSString*)path { NSString *normalizedPath = [path decomposedStringWithCanonicalMapping]; [[FIFinderSyncController defaultController] setBadgeIdentifier:result forURL:[NSURL fileURLWithPath:normalizedPath]]; diff --git a/shell_integration/MacOSX/NextcloudIntegration/FinderSyncExt/FinderSyncSocketLineProcessor.m b/shell_integration/MacOSX/NextcloudIntegration/FinderSyncExt/FinderSyncSocketLineProcessor.m index e906154bb2d6e..79c5aa6e97aea 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FinderSyncExt/FinderSyncSocketLineProcessor.m +++ b/shell_integration/MacOSX/NextcloudIntegration/FinderSyncExt/FinderSyncSocketLineProcessor.m @@ -42,7 +42,7 @@ -(void)process:(NSString*)line dispatch_async(dispatch_get_main_queue(), ^{ NSLog(@"Setting result %@ for path %@", result, path); - [self.delegate setResultForPath:path result:result]; + [self.delegate setResult:result forPath:path]; }); } else if([command isEqualToString:@"UPDATE_VIEW"]) { NSString *path = [split objectAtIndex:1]; diff --git a/shell_integration/MacOSX/NextcloudIntegration/FinderSyncExt/SyncClient.h b/shell_integration/MacOSX/NextcloudIntegration/FinderSyncExt/SyncClient.h index f8c495a6c2738..05bbe091cf6ca 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FinderSyncExt/SyncClient.h +++ b/shell_integration/MacOSX/NextcloudIntegration/FinderSyncExt/SyncClient.h @@ -15,7 +15,7 @@ #import @protocol SyncClientDelegate -- (void)setResultForPath:(NSString *)path result:(NSString *)result; +- (void)setResult:(NSString *)result forPath:(NSString *)path; - (void)reFetchFileNameCacheForPath:(NSString *)path; - (void)registerPath:(NSString *)path; - (void)unregisterPath:(NSString *)path; From bcbaf5f845d4181b889e0eb3c857bc250f17a456 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 29 Oct 2024 17:31:59 +0800 Subject: [PATCH 033/244] Do not set badge identifier for a given path URL if the URL is nil Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- .../NextcloudIntegration/FinderSyncExt/FinderSync.m | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/shell_integration/MacOSX/NextcloudIntegration/FinderSyncExt/FinderSync.m b/shell_integration/MacOSX/NextcloudIntegration/FinderSyncExt/FinderSync.m index 822a2b6393846..c21c3a9ac3f5b 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FinderSyncExt/FinderSync.m +++ b/shell_integration/MacOSX/NextcloudIntegration/FinderSyncExt/FinderSync.m @@ -196,8 +196,12 @@ - (void)subMenuActionClicked:(id)sender { - (void)setResult:(NSString *)result forPath:(NSString*)path { - NSString *normalizedPath = [path decomposedStringWithCanonicalMapping]; - [[FIFinderSyncController defaultController] setBadgeIdentifier:result forURL:[NSURL fileURLWithPath:normalizedPath]]; + NSString *const normalizedPath = path.decomposedStringWithCanonicalMapping; + NSURL *const urlForPath = [NSURL fileURLWithPath:normalizedPath]; + if (urlForPath == nil) { + return; + } + [FIFinderSyncController.defaultController setBadgeIdentifier:result forURL:urlForPath]; } - (void)reFetchFileNameCacheForPath:(NSString*)path From a715267e4d828c5979999e8f13f95407cedd8384 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 5 Nov 2024 16:56:00 +0900 Subject: [PATCH 034/244] Revert "remove broken system paellete detection within our custom style" This reverts commit 2d08cdb503c69392ac5cb3eddf514f0550953ed8. Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/libsync/theme.cpp | 37 +++++++++++++++++++++++++++++++++++++ src/libsync/theme.h | 3 +++ theme/Style/Style.qml | 9 +++------ 3 files changed, 43 insertions(+), 6 deletions(-) diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index d10d50be4f650..e699cf4d136a3 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -947,12 +947,49 @@ void Theme::connectToPaletteSignal() { if (!_paletteSignalsConnected) { if (const auto ptr = qobject_cast(QGuiApplication::instance())) { + connect(ptr, &QGuiApplication::paletteChanged, this, &Theme::systemPaletteChanged); connect(ptr->styleHints(), &QStyleHints::colorSchemeChanged, this, &Theme::darkModeChanged); _paletteSignalsConnected = true; } } } +QVariantMap Theme::systemPalette() +{ + connectToPaletteSignal(); +#if defined(Q_OS_WIN) + auto systemPalette = QGuiApplication::palette(); + if(darkMode()) { + systemPalette = reserveDarkPalette; + } +#else + const auto systemPalette = QGuiApplication::palette(); +#endif + + return QVariantMap { + { QStringLiteral("base"), systemPalette.base().color() }, + { QStringLiteral("alternateBase"), systemPalette.alternateBase().color() }, + { QStringLiteral("text"), systemPalette.text().color() }, + { QStringLiteral("toolTipBase"), systemPalette.toolTipBase().color() }, + { QStringLiteral("toolTipText"), systemPalette.toolTipText().color() }, + { QStringLiteral("brightText"), systemPalette.brightText().color() }, + { QStringLiteral("buttonText"), systemPalette.buttonText().color() }, + { QStringLiteral("button"), systemPalette.button().color() }, + { QStringLiteral("highlightedText"), systemPalette.highlightedText().color() }, + { QStringLiteral("placeholderText"), systemPalette.placeholderText().color() }, + { QStringLiteral("windowText"), systemPalette.windowText().color() }, + { QStringLiteral("window"), systemPalette.window().color() }, + { QStringLiteral("dark"), systemPalette.dark().color() }, + { QStringLiteral("highlight"), systemPalette.highlight().color() }, + { QStringLiteral("light"), systemPalette.light().color() }, + { QStringLiteral("link"), systemPalette.link().color() }, + { QStringLiteral("midlight"), systemPalette.midlight().color() }, + { QStringLiteral("mid"), systemPalette.mid().color() }, + { QStringLiteral("linkVisited"), systemPalette.linkVisited().color() }, + { QStringLiteral("shadow"), systemPalette.shadow().color() }, + }; +} + bool Theme::darkMode() { connectToPaletteSignal(); diff --git a/src/libsync/theme.h b/src/libsync/theme.h index b414c9fa3fbe8..707cb07d555fc 100644 --- a/src/libsync/theme.h +++ b/src/libsync/theme.h @@ -67,6 +67,7 @@ class OWNCLOUDSYNC_EXPORT Theme : public QObject Q_PROPERTY(QColor defaultColor READ defaultColor CONSTANT) + Q_PROPERTY(QVariantMap systemPalette READ systemPalette NOTIFY systemPaletteChanged) Q_PROPERTY(bool darkMode READ darkMode NOTIFY darkModeChanged) public: enum CustomMediaType { @@ -600,6 +601,7 @@ class OWNCLOUDSYNC_EXPORT Theme : public QObject static constexpr const char *themePrefix = ":/client/theme/"; + QVariantMap systemPalette(); bool darkMode(); public slots: @@ -624,6 +626,7 @@ public slots: signals: void systrayUseMonoIconsChanged(bool); + void systemPaletteChanged(const QPalette &palette); void darkModeChanged(); void overrideServerUrlChanged(); void forceOverrideServerUrlChanged(); diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index 912aa10b8167b..2bb1905d3bd9c 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -8,20 +8,17 @@ QtObject { readonly property int pixelSize: fontMetrics.font.pixelSize readonly property bool darkMode: Theme.darkMode - property SystemPalette nativePalette: SystemPalette { - } - // Colors readonly property color ncBlue: Theme.wizardHeaderBackgroundColor readonly property color ncHeaderTextColor: Theme.wizardHeaderTitleColor - readonly property color ncTextColor: nativePalette.text + readonly property color ncTextColor: Theme.systemPalette.windowText readonly property color ncTextBrightColor: "white" readonly property color ncSecondaryTextColor: "#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: nativePalette.window - readonly property color buttonBackgroundColor: nativePalette.button + readonly property color backgroundColor: Theme.systemPalette.window + 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 From 8a03918a47b43edd17b54a116f0c91ea6dca2d9c Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 5 Nov 2024 17:02:14 +0900 Subject: [PATCH 035/244] Add convenience method to check Windows 11 availability Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/libsync/theme.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index e699cf4d136a3..2f9944b929fe8 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -33,6 +33,10 @@ #include #include +#ifdef Q_OS_WIN +#include +#endif + #include "nextcloudtheme.h" #ifdef THEME_INCLUDE @@ -62,6 +66,24 @@ bool shouldPreferSvg() return QByteArray(APPLICATION_ICON_SET).toUpper() == QByteArrayLiteral("SVG"); } +#ifdef Q_OS_WIN +bool IsWindows11OrGreater() { + OSVERSIONINFOEX osvi = {}; + osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); + osvi.dwMajorVersion = 10; + osvi.dwMinorVersion = 0; + osvi.dwBuildNumber = 22000; + + DWORDLONG const conditionMask = VerSetConditionMask( + VerSetConditionMask( + VerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL), + VER_MINORVERSION, VER_GREATER_EQUAL), + VER_BUILDNUMBER, VER_GREATER_EQUAL); + + return VerifyVersionInfo(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_BUILDNUMBER, conditionMask) != 0; +} +#endif + } namespace OCC { From 05c485f601b3e33ace066dc6ffdf3ee0b3ec9a6a Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 5 Nov 2024 17:02:32 +0900 Subject: [PATCH 036/244] Use old palette change detection method on Windows 10 and under Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/libsync/theme.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index 2f9944b929fe8..e69c34922e14b 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -969,8 +969,15 @@ void Theme::connectToPaletteSignal() { if (!_paletteSignalsConnected) { if (const auto ptr = qobject_cast(QGuiApplication::instance())) { - connect(ptr, &QGuiApplication::paletteChanged, this, &Theme::systemPaletteChanged); - connect(ptr->styleHints(), &QStyleHints::colorSchemeChanged, this, &Theme::darkModeChanged); +#ifdef Q_OS_WIN + // Windows 10 does not have proper dark mode support via Qt 6 so hack detection + if (!IsWindows11OrGreater()) { + connect(ptr, &QGuiApplication::paletteChanged, this, &Theme::darkModeChanged); + } else +#endif + { + connect(ptr->styleHints(), &QStyleHints::colorSchemeChanged, this, &Theme::darkModeChanged); + } _paletteSignalsConnected = true; } } From 52a6dc74ac3e6b76a790621cb3298c434c5a04ce Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 5 Nov 2024 17:02:54 +0900 Subject: [PATCH 037/244] If <= Windows 10, use the reserve dark palette for dark mode Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/libsync/theme.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index e69c34922e14b..44c2789b09beb 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -986,13 +986,13 @@ void Theme::connectToPaletteSignal() QVariantMap Theme::systemPalette() { connectToPaletteSignal(); -#if defined(Q_OS_WIN) auto systemPalette = QGuiApplication::palette(); - if(darkMode()) { +#if defined(Q_OS_WIN) + if (darkMode() && !IsWindows11OrGreater()) { systemPalette = reserveDarkPalette; } #else - const auto systemPalette = QGuiApplication::palette(); + #endif return QVariantMap { From 841160759b180e71c954284fddc6b4b4f1d17637 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 5 Nov 2024 17:03:14 +0900 Subject: [PATCH 038/244] Use registry-based dark mode detection on <= Windows 10 Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/libsync/theme.cpp | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index 44c2789b09beb..fef629491a86b 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -1022,17 +1022,29 @@ QVariantMap Theme::systemPalette() bool Theme::darkMode() { connectToPaletteSignal(); - switch (qGuiApp->styleHints()->colorScheme()) - { - case Qt::ColorScheme::Dark: - return true; - case Qt::ColorScheme::Light: + const auto isDarkFromStyle = [] { + switch (qGuiApp->styleHints()->colorScheme()) + { + case Qt::ColorScheme::Dark: + return true; + case Qt::ColorScheme::Light: + return false; + case Qt::ColorScheme::Unknown: + return Theme::isDarkColor(QGuiApplication::palette().window().color()); + } + return false; - case Qt::ColorScheme::Unknown: - return Theme::isDarkColor(QGuiApplication::palette().window().color()); - } + }; - return false; +#ifdef Q_OS_WIN + static const auto darkModeSubkey = QStringLiteral("Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"); + if (!IsWindows11OrGreater() && + Utility::registryKeyExists(HKEY_CURRENT_USER, darkModeSubkey) && + !Utility::registryGetKeyValue(HKEY_CURRENT_USER, darkModeSubkey, QStringLiteral("AppsUseLightTheme")).toBool()) { + return true; + } +#endif + return isDarkFromStyle(); } void Theme::setOverrideServerUrl(const QString &overrideServerUrl) From 57007f56a6e65ba891db6c635bdcde55a86cb253 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Sun, 10 Nov 2024 19:12:57 +0800 Subject: [PATCH 039/244] Use QOperatingSystemVersion in Windows 11 check Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/libsync/theme.cpp | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index fef629491a86b..7eadcac3543bf 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -67,20 +67,8 @@ bool shouldPreferSvg() } #ifdef Q_OS_WIN -bool IsWindows11OrGreater() { - OSVERSIONINFOEX osvi = {}; - osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); - osvi.dwMajorVersion = 10; - osvi.dwMinorVersion = 0; - osvi.dwBuildNumber = 22000; - - DWORDLONG const conditionMask = VerSetConditionMask( - VerSetConditionMask( - VerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL), - VER_MINORVERSION, VER_GREATER_EQUAL), - VER_BUILDNUMBER, VER_GREATER_EQUAL); - - return VerifyVersionInfo(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_BUILDNUMBER, conditionMask) != 0; +bool isWindows11OrGreater() { + return QOperatingSystemVersion::current().majorVersion() >= QOperatingSystemVersion::Windows11.majorVersion(); } #endif @@ -971,7 +959,7 @@ void Theme::connectToPaletteSignal() if (const auto ptr = qobject_cast(QGuiApplication::instance())) { #ifdef Q_OS_WIN // Windows 10 does not have proper dark mode support via Qt 6 so hack detection - if (!IsWindows11OrGreater()) { + if (!isWindows11OrGreater()) { connect(ptr, &QGuiApplication::paletteChanged, this, &Theme::darkModeChanged); } else #endif @@ -988,7 +976,7 @@ QVariantMap Theme::systemPalette() connectToPaletteSignal(); auto systemPalette = QGuiApplication::palette(); #if defined(Q_OS_WIN) - if (darkMode() && !IsWindows11OrGreater()) { + if (darkMode() && !isWindows11OrGreater()) { systemPalette = reserveDarkPalette; } #else @@ -1038,7 +1026,7 @@ bool Theme::darkMode() #ifdef Q_OS_WIN static const auto darkModeSubkey = QStringLiteral("Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"); - if (!IsWindows11OrGreater() && + if (!isWindows11OrGreater() && Utility::registryKeyExists(HKEY_CURRENT_USER, darkModeSubkey) && !Utility::registryGetKeyValue(HKEY_CURRENT_USER, darkModeSubkey, QStringLiteral("AppsUseLightTheme")).toBool()) { return true; From 246742fc1f0497cb2df669d612704218e43c903b Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Tue, 12 Nov 2024 14:11:24 +0100 Subject: [PATCH 040/244] use QWidget Fusion style on Windows 10: enable dark mode Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/gui/main.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/gui/main.cpp b/src/gui/main.cpp index e91fb3be9a1f4..da946bc3b32c0 100644 --- a/src/gui/main.cpp +++ b/src/gui/main.cpp @@ -35,8 +35,11 @@ #include #include #include +#include +#include #include #include +#include using namespace OCC; @@ -82,6 +85,12 @@ int main(int argc, char **argv) QQuickStyle::setStyle(style); QQuickStyle::setFallbackStyle(QStringLiteral("Fusion")); +#if defined Q_OS_WIN + if (QOperatingSystemVersion::current().version() < QOperatingSystemVersion::Windows11.version()) { + QApplication::setStyle(QStyleFactory::create("Fusion")); + } +#endif + OCC::Application app(argc, argv); #ifndef Q_OS_WIN From 9492913918c1969d5e14e4d34f0ea6b8386af933 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Tue, 12 Nov 2024 14:12:07 +0100 Subject: [PATCH 041/244] create a log category for OCC::Theme class Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/libsync/theme.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index 7eadcac3543bf..9a322f33808a9 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #ifdef Q_OS_WIN #include @@ -76,6 +77,8 @@ bool isWindows11OrGreater() { namespace OCC { +Q_LOGGING_CATEGORY(lcTheme, "nextcloud.gui.theme", QtInfoMsg) + Theme *Theme::_instance = nullptr; Theme *Theme::instance() From c28fa7839b10a8ae13f155b399fbaf771ad34057 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Tue, 12 Nov 2024 14:16:05 +0100 Subject: [PATCH 042/244] implement a drak mode palette and use it when needed for now unable to dynamically switch between light and dark mode Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/libsync/theme.cpp | 43 ++++++++++++++++++++++++++----------------- src/libsync/theme.h | 4 ++-- 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index 9a322f33808a9..05a8a1ba6b641 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -69,7 +69,7 @@ bool shouldPreferSvg() #ifdef Q_OS_WIN bool isWindows11OrGreater() { - return QOperatingSystemVersion::current().majorVersion() >= QOperatingSystemVersion::Windows11.majorVersion(); + return QOperatingSystemVersion::current().version() >= QOperatingSystemVersion::Windows11.version(); } #endif @@ -367,30 +367,40 @@ Theme::Theme() #if defined(Q_OS_WIN) // Windows does not provide a dark theme for Win32 apps so let's come up with a palette // Credit to https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle + reserveDarkPalette = qApp->palette(); - reserveDarkPalette.setColor(QPalette::Window, QColor(53, 53, 53)); reserveDarkPalette.setColor(QPalette::WindowText, Qt::white); - reserveDarkPalette.setColor(QPalette::Disabled, QPalette::WindowText, - QColor(127, 127, 127)); + reserveDarkPalette.setColor(QPalette::Button, QColor(127, 127, 127)); + reserveDarkPalette.setColor(QPalette::Light, QColor(53, 53, 53)); + reserveDarkPalette.setColor(QPalette::Midlight, QColor(78, 78, 78)); + reserveDarkPalette.setColor(QPalette::Dark, QColor(35, 35, 35)); + reserveDarkPalette.setColor(QPalette::Mid, QColor(44, 44, 44)); + reserveDarkPalette.setColor(QPalette::Text, Qt::white); + reserveDarkPalette.setColor(QPalette::BrightText, Qt::red); + reserveDarkPalette.setColor(QPalette::ButtonText, Qt::white); reserveDarkPalette.setColor(QPalette::Base, QColor(42, 42, 42)); + reserveDarkPalette.setColor(QPalette::Window, QColor(53, 53, 53)); + reserveDarkPalette.setColor(QPalette::Shadow, QColor(20, 20, 20)); + reserveDarkPalette.setColor(QPalette::Highlight, QColor(42, 130, 218)); + reserveDarkPalette.setColor(QPalette::HighlightedText, Qt::white); + reserveDarkPalette.setColor(QPalette::Link, QColor(42, 130, 218)); + reserveDarkPalette.setColor(QPalette::LinkVisited, QColor(42, 130, 218)); reserveDarkPalette.setColor(QPalette::AlternateBase, QColor(66, 66, 66)); + reserveDarkPalette.setColor(QPalette::NoRole, QColor(127, 127, 127)); reserveDarkPalette.setColor(QPalette::ToolTipBase, Qt::white); reserveDarkPalette.setColor(QPalette::ToolTipText, QColor(53, 53, 53)); - reserveDarkPalette.setColor(QPalette::Text, Qt::white); + reserveDarkPalette.setColor(QPalette::PlaceholderText, QColor(44, 44, 44)); + reserveDarkPalette.setColor(QPalette::Accent, QColor(127, 127, 200)); + reserveDarkPalette.setColor(QPalette::Disabled, QPalette::Text, QColor(127, 127, 127)); - reserveDarkPalette.setColor(QPalette::Dark, QColor(35, 35, 35)); - reserveDarkPalette.setColor(QPalette::Shadow, QColor(20, 20, 20)); - reserveDarkPalette.setColor(QPalette::Button, QColor(53, 53, 53)); - reserveDarkPalette.setColor(QPalette::ButtonText, Qt::white); reserveDarkPalette.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(127, 127, 127)); - reserveDarkPalette.setColor(QPalette::BrightText, Qt::red); - reserveDarkPalette.setColor(QPalette::Link, QColor(42, 130, 218)); - reserveDarkPalette.setColor(QPalette::Highlight, QColor(42, 130, 218)); reserveDarkPalette.setColor(QPalette::Disabled, QPalette::Highlight, QColor(80, 80, 80)); - reserveDarkPalette.setColor(QPalette::HighlightedText, Qt::white); reserveDarkPalette.setColor(QPalette::Disabled, QPalette::HighlightedText, QColor(127, 127, 127)); + reserveDarkPalette.setColor(QPalette::Disabled, QPalette::WindowText, + QColor(127, 127, 127)); + connectToPaletteSignal(); #endif #ifdef APPLICATION_SERVER_URL_ENFORCE @@ -974,13 +984,13 @@ void Theme::connectToPaletteSignal() } } -QVariantMap Theme::systemPalette() +QVariantMap Theme::systemPalette() const { - connectToPaletteSignal(); auto systemPalette = QGuiApplication::palette(); #if defined(Q_OS_WIN) if (darkMode() && !isWindows11OrGreater()) { systemPalette = reserveDarkPalette; + qApp->setPalette(reserveDarkPalette); } #else @@ -1010,9 +1020,8 @@ QVariantMap Theme::systemPalette() }; } -bool Theme::darkMode() +bool Theme::darkMode() const { - connectToPaletteSignal(); const auto isDarkFromStyle = [] { switch (qGuiApp->styleHints()->colorScheme()) { diff --git a/src/libsync/theme.h b/src/libsync/theme.h index 707cb07d555fc..37fea143ac8d9 100644 --- a/src/libsync/theme.h +++ b/src/libsync/theme.h @@ -601,8 +601,8 @@ class OWNCLOUDSYNC_EXPORT Theme : public QObject static constexpr const char *themePrefix = ":/client/theme/"; - QVariantMap systemPalette(); - bool darkMode(); + [[nodiscard]] QVariantMap systemPalette() const; + [[nodiscard]] bool darkMode() const; public slots: void setOverrideServerUrl(const QString &overrideServerUrl); From 1cfc2e234c37becb6465db93990663740a6f558e Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Tue, 12 Nov 2024 14:52:04 +0100 Subject: [PATCH 043/244] on Windows 10 follow color scheme changes and apply them Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/gui/application.cpp | 23 +++++------------------ src/gui/application.h | 1 + src/libsync/theme.cpp | 22 ++++++++++++---------- src/libsync/theme.h | 1 + 4 files changed, 19 insertions(+), 28 deletions(-) diff --git a/src/gui/application.cpp b/src/gui/application.cpp index f05f222a351bf..fb34647618350 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -126,21 +126,6 @@ namespace { // ---------------------------------------------------------------------------------- -#ifdef Q_OS_WIN -class WindowsNativeEventFilter : public QAbstractNativeEventFilter { -public: - bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) override { - const auto msg = static_cast(message); - if(msg->message == WM_SYSCOLORCHANGE || msg->message == WM_SETTINGCHANGE) { - if (const auto ptr = qobject_cast(QGuiApplication::instance())) { - emit ptr->paletteChanged(ptr->palette()); - } - } - return false; - } -}; -#endif - bool Application::configVersionMigration() { QStringList deleteKeys, ignoreKeys; @@ -237,9 +222,6 @@ Application::Application(int &argc, char **argv) // Ensure OpenSSL config file is only loaded from app directory QString opensslConf = QCoreApplication::applicationDirPath() + QString("/openssl.cnf"); qputenv("OPENSSL_CONF", opensslConf.toLocal8Bit()); - - // Set up event listener for Windows theme changing - installNativeEventFilter(new WindowsNativeEventFilter()); #endif // TODO: Can't set this without breaking current config paths @@ -384,6 +366,8 @@ Application::Application(int &argc, char **argv) _theme->setSystrayUseMonoIcons(ConfigFile().monoIcons()); connect(_theme, &Theme::systrayUseMonoIconsChanged, this, &Application::slotUseMonoIconsChanged); + connect(this, &Application::systemPaletteChanged, + _theme, &Theme::systemPaletteHasChanged); #if defined(Q_OS_WIN) _shellExtensionsServer.reset(new ShellExtensionsServer); @@ -1127,6 +1111,9 @@ bool Application::event(QEvent *event) qCInfo(lcApplication) << errorParsingLocalFileEditingUrl; showHint(errorParsingLocalFileEditingUrl.toStdString()); } + } else if (event->type() == QEvent::ApplicationPaletteChange) { + qCInfo(lcApplication) << "application palette changed"; + emit systemPaletteChanged(); } return SharedTools::QtSingleApplication::event(event); } diff --git a/src/gui/application.h b/src/gui/application.h index 9ec6e121bda39..f2c41fe453768 100644 --- a/src/gui/application.h +++ b/src/gui/application.h @@ -96,6 +96,7 @@ public slots: void folderRemoved(); void folderStateChanged(OCC::Folder *); void isShowingSettingsDialog(); + void systemPaletteChanged(); protected slots: void slotParseMessage(const QString &, QObject *); diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index 05a8a1ba6b641..98e2857c391c5 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -969,16 +969,8 @@ QColor Theme::defaultColor() void Theme::connectToPaletteSignal() { if (!_paletteSignalsConnected) { - if (const auto ptr = qobject_cast(QGuiApplication::instance())) { -#ifdef Q_OS_WIN - // Windows 10 does not have proper dark mode support via Qt 6 so hack detection - if (!isWindows11OrGreater()) { - connect(ptr, &QGuiApplication::paletteChanged, this, &Theme::darkModeChanged); - } else -#endif - { - connect(ptr->styleHints(), &QStyleHints::colorSchemeChanged, this, &Theme::darkModeChanged); - } + if (const auto ptr = qobject_cast(qApp)) { + connect(ptr->styleHints(), &QStyleHints::colorSchemeChanged, this, &Theme::darkModeChanged); _paletteSignalsConnected = true; } } @@ -1088,4 +1080,14 @@ void Theme::setStartLoginFlowAutomatically(bool startLoginFlowAuto) } } +void Theme::systemPaletteHasChanged() +{ + qCInfo(lcTheme()) << "system palette changed"; +#ifdef Q_OS_WIN + if (darkMode() && !isWindows11OrGreater()) { + qApp->setPalette(reserveDarkPalette); + } +#endif +} + } // end namespace client diff --git a/src/libsync/theme.h b/src/libsync/theme.h index 37fea143ac8d9..a7e817de15ca9 100644 --- a/src/libsync/theme.h +++ b/src/libsync/theme.h @@ -609,6 +609,7 @@ public slots: void setForceOverrideServerUrl(bool forceOverride); void setVfsEnabled(bool enabled); void setStartLoginFlowAutomatically(bool startLoginFlowAuto); + void systemPaletteHasChanged(); protected: #ifndef TOKEN_AUTH_ONLY From e24802ec8835e36cc477ab130ce7ec4211825d0d Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Tue, 12 Nov 2024 18:28:15 +0100 Subject: [PATCH 044/244] some improvements for account network settings Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/gui/networksettings.ui | 5 ++++- src/libsync/theme.cpp | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/gui/networksettings.ui b/src/gui/networksettings.ui index db6db42be4802..e8ee66ad60572 100644 --- a/src/gui/networksettings.ui +++ b/src/gui/networksettings.ui @@ -13,11 +13,14 @@ Form + + true + - Qt::Vertical + Qt::Orientation::Vertical diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index 98e2857c391c5..3c65e31bbcf8d 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -371,10 +371,10 @@ Theme::Theme() reserveDarkPalette.setColor(QPalette::WindowText, Qt::white); reserveDarkPalette.setColor(QPalette::Button, QColor(127, 127, 127)); - reserveDarkPalette.setColor(QPalette::Light, QColor(53, 53, 53)); + reserveDarkPalette.setColor(QPalette::Light, QColor(20, 20, 20)); reserveDarkPalette.setColor(QPalette::Midlight, QColor(78, 78, 78)); - reserveDarkPalette.setColor(QPalette::Dark, QColor(35, 35, 35)); - reserveDarkPalette.setColor(QPalette::Mid, QColor(44, 44, 44)); + reserveDarkPalette.setColor(QPalette::Dark, QColor(191, 191, 191)); + reserveDarkPalette.setColor(QPalette::Mid, QColor(95, 95, 95)); reserveDarkPalette.setColor(QPalette::Text, Qt::white); reserveDarkPalette.setColor(QPalette::BrightText, Qt::red); reserveDarkPalette.setColor(QPalette::ButtonText, Qt::white); From 7daf9faa4148527d65768eb6c857a0150d89fa63 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 23:52:34 +0000 Subject: [PATCH 045/244] Build(deps): Bump platisd/clang-tidy-pr-comments from 1.5.1 to 1.6.1 Bumps [platisd/clang-tidy-pr-comments](https://github.com/platisd/clang-tidy-pr-comments) from 1.5.1 to 1.6.1. - [Release notes](https://github.com/platisd/clang-tidy-pr-comments/releases) - [Commits](https://github.com/platisd/clang-tidy-pr-comments/compare/v1.5.1...v1.6.1) --- updated-dependencies: - dependency-name: platisd/clang-tidy-pr-comments dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: Rainer Walke --- .github/workflows/clang-tidy-review.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/clang-tidy-review.yml b/.github/workflows/clang-tidy-review.yml index c8539914df43e..963e5e17efdcc 100644 --- a/.github/workflows/clang-tidy-review.yml +++ b/.github/workflows/clang-tidy-review.yml @@ -24,7 +24,7 @@ jobs: /usr/bin/git config --global --add safe.directory "$GITHUB_WORKSPACE" /usr/bin/git diff -U0 HEAD^ | clang-tidy-diff-15.py -checks='-*,modernize-use-auto,modernize-use-using,modernize-use-nodiscard,modernize-use-nullptr,modernize-use-override,cppcoreguidelines-pro-type-static-cast-downcast' -p1 -path build -export-fixes clang-tidy-result/fixes.yml - name: Run clang-tidy-pr-comments action - uses: platisd/clang-tidy-pr-comments@v1.5.1 # >1.4.3 switches to composite method w/ a forced python version and breaks things: https://github.com/actions/setup-python/issues/871 + uses: platisd/clang-tidy-pr-comments@v1.6.1 # >1.4.3 switches to composite method w/ a forced python version and breaks things: https://github.com/actions/setup-python/issues/871 with: # The GitHub token (or a personal access token) github_token: ${{ secrets.GITHUB_TOKEN }} From ce4af95d4843a66d8c9829a06df529509fc5c658 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Wed, 20 Nov 2024 03:03:15 +0000 Subject: [PATCH 046/244] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: Rainer Walke --- translations/client_ar.ts | 76 ++++++++++++++++++------------------ translations/client_bg.ts | 68 ++++++++++++++++---------------- translations/client_br.ts | 68 ++++++++++++++++---------------- translations/client_ca.ts | 68 ++++++++++++++++---------------- translations/client_cs.ts | 68 ++++++++++++++++---------------- translations/client_da.ts | 68 ++++++++++++++++---------------- translations/client_de.ts | 68 ++++++++++++++++---------------- translations/client_el.ts | 68 ++++++++++++++++---------------- translations/client_en_GB.ts | 68 ++++++++++++++++---------------- translations/client_eo.ts | 68 ++++++++++++++++---------------- translations/client_es.ts | 68 ++++++++++++++++---------------- translations/client_es_CL.ts | 68 ++++++++++++++++---------------- translations/client_es_CO.ts | 68 ++++++++++++++++---------------- translations/client_es_CR.ts | 68 ++++++++++++++++---------------- translations/client_es_DO.ts | 68 ++++++++++++++++---------------- translations/client_es_EC.ts | 68 ++++++++++++++++---------------- translations/client_es_GT.ts | 68 ++++++++++++++++---------------- translations/client_es_HN.ts | 68 ++++++++++++++++---------------- translations/client_es_MX.ts | 68 ++++++++++++++++---------------- translations/client_es_SV.ts | 68 ++++++++++++++++---------------- translations/client_eu.ts | 68 ++++++++++++++++---------------- translations/client_fa.ts | 68 ++++++++++++++++---------------- translations/client_fi.ts | 68 ++++++++++++++++---------------- translations/client_fr.ts | 68 ++++++++++++++++---------------- translations/client_ga.ts | 68 ++++++++++++++++---------------- translations/client_gl.ts | 68 ++++++++++++++++---------------- translations/client_he.ts | 68 ++++++++++++++++---------------- translations/client_hr.ts | 68 ++++++++++++++++---------------- translations/client_hu.ts | 68 ++++++++++++++++---------------- translations/client_is.ts | 68 ++++++++++++++++---------------- translations/client_it.ts | 68 ++++++++++++++++---------------- translations/client_ja.ts | 68 ++++++++++++++++---------------- translations/client_ko.ts | 68 ++++++++++++++++---------------- translations/client_lt_LT.ts | 68 ++++++++++++++++---------------- translations/client_lv.ts | 72 +++++++++++++++++----------------- translations/client_mk.ts | 66 +++++++++++++++---------------- translations/client_nb_NO.ts | 68 ++++++++++++++++---------------- translations/client_nl.ts | 68 ++++++++++++++++---------------- translations/client_oc.ts | 68 ++++++++++++++++---------------- translations/client_pl.ts | 68 ++++++++++++++++---------------- translations/client_pt.ts | 68 ++++++++++++++++---------------- translations/client_pt_BR.ts | 68 ++++++++++++++++---------------- translations/client_ro.ts | 64 +++++++++++++++--------------- translations/client_ru.ts | 68 ++++++++++++++++---------------- translations/client_sc.ts | 68 ++++++++++++++++---------------- translations/client_sk.ts | 68 ++++++++++++++++---------------- translations/client_sl.ts | 68 ++++++++++++++++---------------- translations/client_sr.ts | 68 ++++++++++++++++---------------- translations/client_sv.ts | 68 ++++++++++++++++---------------- translations/client_th.ts | 68 ++++++++++++++++---------------- translations/client_tr.ts | 68 ++++++++++++++++---------------- translations/client_ug.ts | 68 ++++++++++++++++---------------- translations/client_uk.ts | 68 ++++++++++++++++---------------- translations/client_zh_CN.ts | 68 ++++++++++++++++---------------- translations/client_zh_HK.ts | 68 ++++++++++++++++---------------- translations/client_zh_TW.ts | 68 ++++++++++++++++---------------- 56 files changed, 1907 insertions(+), 1907 deletions(-) diff --git a/translations/client_ar.ts b/translations/client_ar.ts index d84b29513dc09..a4f3a96ffc149 100644 --- a/translations/client_ar.ts +++ b/translations/client_ar.ts @@ -1199,34 +1199,34 @@ This action will abort any currently running synchronization. استمرار - + %1 accounts number of accounts imported %1 حساب - + 1 account حساب واحد 1 - + %1 folders number of folders imported %1 مجلد - + 1 folder مجلد واحد 1 - + Legacy import استيراد القديمة - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1743,7 +1743,7 @@ This action will abort any currently running synchronization. Could not start editing locally. - تعذّر البدء في التحرير محليّاً. + تعذّر البدء في التحرير محلياً. @@ -3631,19 +3631,19 @@ Note that using any logging command line options will override this setting.ملاحظة: لا تؤثر إعدادات الوكيل على حسابات المضيف المحلي - + Manually specify proxy تعيين الوكيل يدوياً - + No proxy لا وكيل - - - + + + Use global settings استعمل الإعدادات الشاملة @@ -5578,7 +5578,7 @@ Server replied with error: %2 <p>%1 عميل سطح المكتب Desktop Client</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 عميل سطح المكتب</p><p>الإصدار %1. لمزيد المعلومات إضغَط <a href='%2'>هنا.</p> @@ -5589,7 +5589,7 @@ Server replied with error: %2 <p><small>إستعمال الملحق البرمجي plugin للملفات الظاهرية: %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> @@ -6856,7 +6856,7 @@ Server replied with 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>تمّ بناؤها من نسخة "قيت هب" <a href="%1">%2</a> في %3, %4 باستعمال "كيو تي" %5, %6</small></p> @@ -7018,12 +7018,12 @@ Server replied with error: %2 في انتظار بدء المزامنة. - + Sync status is unknown حالة المزامنة غير معروفة - + Waiting to start syncing في انتظار البدء في المزامنة ... @@ -7042,33 +7042,38 @@ Server replied with error: %2 Sync Success, some files were ignored. تمت عملية المزامنة بنجاح، تم تجاهل بعض الملفات. - - - Sync was successful - تمّت المزامنة بنجاح - Sync Error خطأ في المزامنة - - - Sync was successful but some files were ignored - تمّت المزامنة بنجاح مع تجاهل مزامنة بعض الملفات - Setup Error خطأ في التنصيب - + + Aborting … + جارٍ إجهاض العملية ... + + + + Sync was successful + تمّت المزامنة بنجاح + + + + Sync was successful but some files were ignored + تمّت المزامنة بنجاح مع تجاهل مزامنة بعض الملفات + + + Error occurred during sync حدث خطأ أثناء المزامنة - + Error occurred during setup حدث خطأ أثناء الإعداد @@ -7078,12 +7083,7 @@ Server replied with error: %2 التحضير للمزامنة - - Aborting … - جارٍ إجهاض العملية ... - - - + Stopping sync إيقاف المزامنة @@ -7118,12 +7118,12 @@ Server replied with error: %2 Always available locally - دائماً متاح محليّاً + دائماً متاح محلياً Currently available locally - متاح الآن محليّاً + متاح الآن محلياً @@ -7138,7 +7138,7 @@ Server replied with error: %2 Make always available locally - إجعله متاحاً دائماً محليّاً + إجعله متاحاً دائماً محلياً diff --git a/translations/client_bg.ts b/translations/client_bg.ts index f222b3631dbf9..562c769f46be7 100644 --- a/translations/client_bg.ts +++ b/translations/client_bg.ts @@ -1200,34 +1200,34 @@ This action will abort any currently running synchronization. Продължи - + %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. @@ -3629,19 +3629,19 @@ Note that using any logging command line options will override this setting.Забележка: прокси настройките не са ефективни за профили на местния сървър - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5581,7 +5581,7 @@ Server replied with error: %2 <p>%1 Клиент за настолен компютър</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) @@ -5592,7 +5592,7 @@ Server replied with error: %2 <p><small>Използване на добавка за виртуални файлове: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6859,7 +6859,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7021,12 +7021,12 @@ Server replied with error: %2 Изчакване на начало на сихронизиране. - + Sync status is unknown - + Waiting to start syncing @@ -7045,33 +7045,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Успешно синхронизиране, някои файлове бяха игнорирани. - - - Sync was successful - - Sync Error Грешка при синхронизирането - - - Sync was successful but some files were ignored - - Setup Error Грешка при синхронизирането - + + Aborting … + Прекратяване ... + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7081,12 +7086,7 @@ Server replied with error: %2 Подготвяне за синхронизиране... - - Aborting … - Прекратяване ... - - - + Stopping sync diff --git a/translations/client_br.ts b/translations/client_br.ts index 6023d40af7d01..6814466844834 100644 --- a/translations/client_br.ts +++ b/translations/client_br.ts @@ -1195,34 +1195,34 @@ This action will abort any currently running synchronization. - + %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. @@ -3611,19 +3611,19 @@ Note that using any logging command line options will override this setting. - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5555,7 +5555,7 @@ Server replied with error: %2 <p>%1 Kliant Burev</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) @@ -5566,7 +5566,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6833,7 +6833,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -6995,12 +6995,12 @@ Server replied with error: %2 Ho gortoz evit kregiñ ar gemprennadenn - + Sync status is unknown - + Waiting to start syncing @@ -7019,33 +7019,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Graet eo bet ar gemprennadenn, dianavezet eo bet restroù-zo - - - Sync was successful - - Sync Error Fazi kemprenn - - - Sync was successful but some files were ignored - - Setup Error Fazi staliañ - + + Aborting … + O arest ... + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7055,12 +7060,7 @@ Server replied with error: %2 Ho prientiñ ur gemprennadenn - - Aborting … - O arest ... - - - + Stopping sync diff --git a/translations/client_ca.ts b/translations/client_ca.ts index d0ccb68f82eba..f19941d15de51 100644 --- a/translations/client_ca.ts +++ b/translations/client_ca.ts @@ -1200,34 +1200,34 @@ Aquesta acció anul·larà qualsevol sincronització en execució. Continua - + %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. @@ -3612,19 +3612,19 @@ Note that using any logging command line options will override this setting.Nota: els paràmetres del servidor intermediari no tenen efecte per als comptes en localhost - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5556,7 +5556,7 @@ Server replied with error: %2 <p>Client d'escriptori del %1</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) @@ -5567,7 +5567,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6834,7 +6834,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -6996,12 +6996,12 @@ Server replied with error: %2 Pendent d'iniciar la sincronització - + Sync status is unknown - + Waiting to start syncing @@ -7020,33 +7020,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Sincronització correcta; s'han ignorat alguns fitxers. - - - Sync was successful - - Sync Error Error de sincronització - - - Sync was successful but some files were ignored - - Setup Error Error de configuració - + + Aborting … + S'està cancel·lant… + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7056,12 +7061,7 @@ Server replied with error: %2 S'està preparant la sincronització - - Aborting … - S'està cancel·lant… - - - + Stopping sync diff --git a/translations/client_cs.ts b/translations/client_cs.ts index 8b5ef135d949b..e9d70b6bbf628 100644 --- a/translations/client_cs.ts +++ b/translations/client_cs.ts @@ -1203,34 +1203,34 @@ Současně tato akce zruší jakoukoli právě probíhající synchronizaci.Pokračovat - + %1 accounts number of accounts imported %1 účtů - + 1 account 1 účet - + %1 folders number of folders imported %1 složek - + 1 folder 1 složka - + Legacy import Import ze starého - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3650,19 +3650,19 @@ Poznamenejme, že použití jakékoli volby příkazového řádku má před tí Poznámka: nastavení proxy nemá žádný vliv na účty na právě používaném počítači - + Manually specify proxy Zadat proxy ručně - + No proxy Bez proxy - - - + + + Use global settings Použít globální nastavení @@ -5602,7 +5602,7 @@ Server odpověděl chybou: %2 <p>%1 klient pro počítač</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>Klient %1 pro počítač</p><p>verze %1. Další informace získáte kliknutím <a href='%2'>sem</a>.</p> @@ -5613,7 +5613,7 @@ Server odpověděl chybou: %2 <p><small>Používá zásuvný modul pro virtuální soubory: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 klient pro počítač</p> @@ -6880,7 +6880,7 @@ Server odpověděl chybou: %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>Sestaveno z Git revize <a href="%1">%2</a> na %3, %4 s použitím Qt %5, %6</small></p> @@ -7042,12 +7042,12 @@ Server odpověděl chybou: %2 Čeká se na zahájení synchronizace - + Sync status is unknown Stav synchronizace není znám - + Waiting to start syncing Čeká se na spuštění synchronizace @@ -7066,33 +7066,38 @@ Server odpověděl chybou: %2 Sync Success, some files were ignored. Synchronizace úspěšná, některé soubory byly ignorovány. - - - Sync was successful - Synchronizace byla úspěšná - Sync Error Chyba synchronizace - - - Sync was successful but some files were ignored - Synchronizace byla úspěšná, ale některé soubory byly ingorovány - Setup Error Chyba nastavení - + + Aborting … + Přerušuje se… + + + + Sync was successful + Synchronizace byla úspěšná + + + + Sync was successful but some files were ignored + Synchronizace byla úspěšná, ale některé soubory byly ingorovány + + + Error occurred during sync Při synchronizaci došlo k chybě - + Error occurred during setup Při nastavování došlo k chybě @@ -7102,12 +7107,7 @@ Server odpověděl chybou: %2 Připravuje se na synchronizaci - - Aborting … - Přerušuje se… - - - + Stopping sync Zastavování synchronizace diff --git a/translations/client_da.ts b/translations/client_da.ts index 5fb5024224c5f..cb7437ff45d62 100644 --- a/translations/client_da.ts +++ b/translations/client_da.ts @@ -1203,34 +1203,34 @@ Denne handling vil annullere alle i øjeblikket kørende synkroniseringer.Fortsæt - + %1 accounts number of accounts imported %1 konti - + 1 account 1 konto - + %1 folders number of folders imported %1 mapper - + 1 folder 1 mappe - + Legacy import Bagudkompatibel import - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3621,19 +3621,19 @@ Note that using any logging command line options will override this setting. - + Manually specify proxy - + No proxy - - - + + + Use global settings Brug globale indstillinger @@ -5565,7 +5565,7 @@ Server replied with error: %2 <p>%1-skrivebordsklient</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) @@ -5576,7 +5576,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6843,7 +6843,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7005,12 +7005,12 @@ Server replied with error: %2 Venter på at starte synk. - + Sync status is unknown - + Waiting to start syncing @@ -7029,33 +7029,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Synk. fuldført, visse filer blev ignoreret. - - - Sync was successful - - Sync Error Fejl ved synk. - - - Sync was successful but some files were ignored - - Setup Error Fejl ved opsætning - + + Aborting … + Afbryder … + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7065,12 +7070,7 @@ Server replied with error: %2 Forbereder synkronisering - - Aborting … - Afbryder … - - - + Stopping sync diff --git a/translations/client_de.ts b/translations/client_de.ts index 930dca4fd715d..2e02e78c0f2b5 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -1203,34 +1203,34 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. 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. @@ -3649,19 +3649,19 @@ Beachten Sie, dass die Verwendung von Befehlszeilenoptionen für die Protokollie Hinweis: Proxy-Einstellungen haben keine Auswirkungen für Konten auf localhost - + Manually specify proxy Proxy manuell festlegen - + No proxy Kein Proxy - - - + + + Use global settings Globale Einstellungen verwenden @@ -5601,7 +5601,7 @@ Server antwortete mit Fehler: %2 <p>%1 Desktop-Client</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> @@ -5612,7 +5612,7 @@ Server antwortete mit Fehler: %2 <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> @@ -6879,7 +6879,7 @@ Server antwortete mit Fehler: %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>Erstellt aus der Git-Revision <a href="%1">%2</a> auf %3, %4 unter Verwendung von Qt %5, %6</small></p> @@ -7041,12 +7041,12 @@ Server antwortete mit Fehler: %2 Warte, um mit der Synchronisierung zu beginnen - + Sync status is unknown Synchronisierungsstatus ist unbekannt - + Waiting to start syncing Warte auf Beginn der Synchronisierung. @@ -7065,33 +7065,38 @@ Server antwortete mit Fehler: %2 Sync Success, some files were ignored. Synchronisierung abgeschlossen, einige Dateien wurden ignoriert. - - - Sync was successful - Synchronisierung war erfolgreich - Sync Error Synchronisierungsfehler - - - Sync was successful but some files were ignored - Synchronisierung war erfolgreich, aber einige Dateien wurden ignoriert - Setup Error Installationsfehler - + + Aborting … + Breche ab … + + + + Sync was successful + Synchronisierung war erfolgreich + + + + Sync was successful but some files were ignored + Synchronisierung war erfolgreich, aber einige Dateien wurden ignoriert + + + Error occurred during sync Fehler beim Synchronisieren aufgetreten - + Error occurred during setup Fehler bei der Einrichtung aufgetreten @@ -7101,12 +7106,7 @@ Server antwortete mit Fehler: %2 Synchronisierung wird vorbereitet - - Aborting … - Breche ab … - - - + Stopping sync Beende Synchronisierung diff --git a/translations/client_el.ts b/translations/client_el.ts index d35ffec87ab4a..46d5461955f50 100644 --- a/translations/client_el.ts +++ b/translations/client_el.ts @@ -1195,34 +1195,34 @@ This action will abort any currently running synchronization. Συνέχεια - + %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. @@ -3619,19 +3619,19 @@ Note that using any logging command line options will override this setting.Σημείωση: οι ρυθμίσεις διαμεσολαβητή δεν έχουν αποτελέσματα για λογαριασμούς στο localhost. - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5563,7 +5563,7 @@ Server replied with error: %2 <p>Εφαρμογή Υπολογιστή %1 </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) @@ -5574,7 +5574,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6841,7 +6841,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7003,12 +7003,12 @@ Server replied with error: %2 Αναμονή έναρξης συγχρονισμού - + Sync status is unknown - + Waiting to start syncing @@ -7027,33 +7027,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Επιτυχία Συγχρονισμού, κάποια αρχεία αγνοήθηκαν. - - - Sync was successful - - Sync Error Σφάλμα Συγχρονισμού - - - Sync was successful but some files were ignored - - Setup Error Σφάλμα Ρυθμίσεων - + + Aborting … + Ακύρωση '...' + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7063,12 +7068,7 @@ Server replied with error: %2 Προετοιμασία για συγχρονισμό - - Aborting … - Ακύρωση '...' - - - + Stopping sync diff --git a/translations/client_en_GB.ts b/translations/client_en_GB.ts index 76b74fb112896..5cf321c903dc5 100644 --- a/translations/client_en_GB.ts +++ b/translations/client_en_GB.ts @@ -1204,34 +1204,34 @@ This action will abort any currently running synchronization. Continue - + %1 accounts number of accounts imported %1 accounts - + 1 account 1 account - + %1 folders number of folders imported %1 folders - + 1 folder 1 folder - + Legacy import Legacy import - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3652,19 +3652,19 @@ Note that using any logging command line options will override this setting.Note: proxy settings have no effects for accounts on localhost - + Manually specify proxy Manually specify proxy - + No proxy No proxy - - - + + + Use global settings Use global settings @@ -5604,7 +5604,7 @@ Server replied with error: %2 <p>%1 Desktop Client</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. For more information please click <a href='%2'>here</a>.</p> @@ -5615,7 +5615,7 @@ Server replied with error: %2 <p><small>Using virtual files plugin: %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> @@ -6882,7 +6882,7 @@ Server replied with 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>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7044,12 +7044,12 @@ Server replied with error: %2 Waiting to start sync - + Sync status is unknown Sync status is unknown - + Waiting to start syncing Waiting to start syncing @@ -7068,33 +7068,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Sync Success, some files were ignored. - - - Sync was successful - Sync was successful - Sync Error Sync Error - - - Sync was successful but some files were ignored - Sync was successful but some files were ignored - Setup Error Setup Error - + + Aborting … + Aborting … + + + + Sync was successful + Sync was successful + + + + Sync was successful but some files were ignored + Sync was successful but some files were ignored + + + Error occurred during sync Error occurred during sync - + Error occurred during setup Error occurred during setup @@ -7104,12 +7109,7 @@ Server replied with error: %2 Preparing to sync - - Aborting … - Aborting … - - - + Stopping sync Stopping sync diff --git a/translations/client_eo.ts b/translations/client_eo.ts index 2389ece4ef80f..22b60a463dc19 100644 --- a/translations/client_eo.ts +++ b/translations/client_eo.ts @@ -1194,34 +1194,34 @@ This action will abort any currently running synchronization. Daŭrigi - + %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. @@ -3610,19 +3610,19 @@ Note that using any logging command line options will override this setting. - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5553,7 +5553,7 @@ Server replied with error: %2 <p>Labortabla Kliento %1</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) @@ -5564,7 +5564,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6831,7 +6831,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -6993,12 +6993,12 @@ Server replied with error: %2 Atendo de eksinkronigo - + Sync status is unknown - + Waiting to start syncing @@ -7017,33 +7017,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Sukcesa sinkronigo, kelkaj dosieroj ignoritaj. - - - Sync was successful - - Sync Error Sinkroniga eraro - - - Sync was successful but some files were ignored - - Setup Error Agorda eraro - + + Aborting … + + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7053,12 +7058,7 @@ Server replied with error: %2 Pretigado de sinkronigo - - Aborting … - - - - + Stopping sync diff --git a/translations/client_es.ts b/translations/client_es.ts index 5d04b189ae5eb..c16a7847d8e9f 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -1205,34 +1205,34 @@ Además, esta acción interrumpirá cualquier sincronización en curso.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. @@ -3654,19 +3654,19 @@ Nótese que usar cualquier opción de toma de registros a través de línea de c Nota: los ajustes de proxy no tienen efecto para cuentas en el sistema local. - + Manually specify proxy Proxy especificado manualmente - + No proxy Sin proxy - - - + + + Use global settings Usar la configuración global @@ -5606,7 +5606,7 @@ El servidor respondió con el error: %2 <p>%1 - Cliente de escritorio</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> @@ -5617,7 +5617,7 @@ El servidor respondió con el error: %2 <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> @@ -6884,7 +6884,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> @@ -7046,12 +7046,12 @@ El servidor respondió con el error: %2 Esperando para comenzar la sincronización - + Sync status is unknown Estado de sincronización desconocido - + Waiting to start syncing Esperando para empezar la sincronización @@ -7070,33 +7070,38 @@ El servidor respondió con el error: %2 Sync Success, some files were ignored. Sincronizado con éxito, algunos archivos han sido ignorados. - - - Sync was successful - La sincronización ha tenido éxito - Sync Error Error de sincronización. - - - Sync was successful but some files were ignored - La sincronización ha tenido éxito pero se han ignorado algunos archivos - Setup Error Error en la instalación - + + Aborting … + Cancelando ... + + + + Sync was successful + La sincronización ha tenido éxito + + + + Sync was successful but some files were ignored + La sincronización ha tenido éxito pero se han ignorado algunos archivos + + + Error occurred during sync Ha ocurrido un error durante la sincronización - + Error occurred during setup Ha ocurrido un error durante la configuración @@ -7106,12 +7111,7 @@ El servidor respondió con el error: %2 Preparando para sincronizar - - Aborting … - Cancelando ... - - - + Stopping sync Deteniendo la sincronización diff --git a/translations/client_es_CL.ts b/translations/client_es_CL.ts index 807eed3e98921..5128dc2695829 100644 --- a/translations/client_es_CL.ts +++ b/translations/client_es_CL.ts @@ -1194,34 +1194,34 @@ This action will abort any currently running synchronization. - + %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. @@ -3602,19 +3602,19 @@ Note that using any logging command line options will override this setting. - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5546,7 +5546,7 @@ Server replied with error: %2 - + <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) @@ -5557,7 +5557,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6824,7 +6824,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -6986,12 +6986,12 @@ Server replied with error: %2 Aguardando para iniciar la sincronización - + Sync status is unknown - + Waiting to start syncing @@ -7010,33 +7010,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Éxito en la Sincronización, algunos archivos fueron ignorados. - - - Sync was successful - - Sync Error Error de Sincronización - - - Sync was successful but some files were ignored - - Setup Error Error de Configuración - + + Aborting … + + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7046,12 +7051,7 @@ Server replied with error: %2 Preparando para sincronizar - - Aborting … - - - - + Stopping sync diff --git a/translations/client_es_CO.ts b/translations/client_es_CO.ts index 5587d9cfee9cf..9db85daeceddf 100644 --- a/translations/client_es_CO.ts +++ b/translations/client_es_CO.ts @@ -1194,34 +1194,34 @@ This action will abort any currently running synchronization. - + %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. @@ -3602,19 +3602,19 @@ Note that using any logging command line options will override this setting. - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5546,7 +5546,7 @@ Server replied with error: %2 - + <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) @@ -5557,7 +5557,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6824,7 +6824,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -6986,12 +6986,12 @@ Server replied with error: %2 Aguardando para iniciar la sincronización - + Sync status is unknown - + Waiting to start syncing @@ -7010,33 +7010,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Éxito en la Sincronización, algunos archivos fueron ignorados. - - - Sync was successful - - Sync Error Error de Sincronización - - - Sync was successful but some files were ignored - - Setup Error Error de Configuración - + + Aborting … + + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7046,12 +7051,7 @@ Server replied with error: %2 Preparando para sincronizar - - Aborting … - - - - + Stopping sync diff --git a/translations/client_es_CR.ts b/translations/client_es_CR.ts index 69be3d52a30ca..bc40a0dbbb0b8 100644 --- a/translations/client_es_CR.ts +++ b/translations/client_es_CR.ts @@ -1194,34 +1194,34 @@ This action will abort any currently running synchronization. - + %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. @@ -3602,19 +3602,19 @@ Note that using any logging command line options will override this setting. - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5546,7 +5546,7 @@ Server replied with error: %2 - + <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) @@ -5557,7 +5557,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6824,7 +6824,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -6986,12 +6986,12 @@ Server replied with error: %2 Aguardando para iniciar la sincronización - + Sync status is unknown - + Waiting to start syncing @@ -7010,33 +7010,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Éxito en la Sincronización, algunos archivos fueron ignorados. - - - Sync was successful - - Sync Error Error de Sincronización - - - Sync was successful but some files were ignored - - Setup Error Error de Configuración - + + Aborting … + + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7046,12 +7051,7 @@ Server replied with error: %2 Preparando para sincronizar - - Aborting … - - - - + Stopping sync diff --git a/translations/client_es_DO.ts b/translations/client_es_DO.ts index 6b650046221a1..df41fa9327a1a 100644 --- a/translations/client_es_DO.ts +++ b/translations/client_es_DO.ts @@ -1194,34 +1194,34 @@ This action will abort any currently running synchronization. - + %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. @@ -3602,19 +3602,19 @@ Note that using any logging command line options will override this setting. - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5546,7 +5546,7 @@ Server replied with error: %2 - + <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) @@ -5557,7 +5557,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6824,7 +6824,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -6986,12 +6986,12 @@ Server replied with error: %2 Aguardando para iniciar la sincronización - + Sync status is unknown - + Waiting to start syncing @@ -7010,33 +7010,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Éxito en la Sincronización, algunos archivos fueron ignorados. - - - Sync was successful - - Sync Error Error de Sincronización - - - Sync was successful but some files were ignored - - Setup Error Error de Configuración - + + Aborting … + + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7046,12 +7051,7 @@ Server replied with error: %2 Preparando para sincronizar - - Aborting … - - - - + Stopping sync diff --git a/translations/client_es_EC.ts b/translations/client_es_EC.ts index fac71c251f466..8e936f9a65159 100644 --- a/translations/client_es_EC.ts +++ b/translations/client_es_EC.ts @@ -1201,34 +1201,34 @@ This action will abort any currently running synchronization. Continuar - + %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. @@ -3629,19 +3629,19 @@ Note that using any logging command line options will override this setting.Nota: la configuración del proxy no tiene efectos para las cuentas en localhost - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5581,7 +5581,7 @@ Server replied with error: %2 <p>%1 Cliente de Escritorio</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) @@ -5592,7 +5592,7 @@ Server replied with error: %2 <p><small>Usando el complemento de archivos virtuales: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6859,7 +6859,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7021,12 +7021,12 @@ Server replied with error: %2 Aguardando para iniciar la sincronización - + Sync status is unknown - + Waiting to start syncing @@ -7045,33 +7045,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Éxito en la Sincronización, algunos archivos fueron ignorados. - - - Sync was successful - - Sync Error Error de Sincronización - - - Sync was successful but some files were ignored - - Setup Error Error de Configuración - + + Aborting … + Abortando... + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7081,12 +7086,7 @@ Server replied with error: %2 Preparando para sincronizar - - Aborting … - Abortando... - - - + Stopping sync diff --git a/translations/client_es_GT.ts b/translations/client_es_GT.ts index def9f1c596cb2..3a397621521a8 100644 --- a/translations/client_es_GT.ts +++ b/translations/client_es_GT.ts @@ -1194,34 +1194,34 @@ This action will abort any currently running synchronization. - + %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. @@ -3602,19 +3602,19 @@ Note that using any logging command line options will override this setting. - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5546,7 +5546,7 @@ Server replied with error: %2 - + <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) @@ -5557,7 +5557,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6824,7 +6824,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -6986,12 +6986,12 @@ Server replied with error: %2 Aguardando para iniciar la sincronización - + Sync status is unknown - + Waiting to start syncing @@ -7010,33 +7010,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Éxito en la Sincronización, algunos archivos fueron ignorados. - - - Sync was successful - - Sync Error Error de Sincronización - - - Sync was successful but some files were ignored - - Setup Error Error de Configuración - + + Aborting … + + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7046,12 +7051,7 @@ Server replied with error: %2 Preparando para sincronizar - - Aborting … - - - - + Stopping sync diff --git a/translations/client_es_HN.ts b/translations/client_es_HN.ts index 54ab8af6d9616..602e607ee84b4 100644 --- a/translations/client_es_HN.ts +++ b/translations/client_es_HN.ts @@ -1194,34 +1194,34 @@ This action will abort any currently running synchronization. - + %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. @@ -3602,19 +3602,19 @@ Note that using any logging command line options will override this setting. - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5546,7 +5546,7 @@ Server replied with error: %2 - + <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) @@ -5557,7 +5557,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6824,7 +6824,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -6986,12 +6986,12 @@ Server replied with error: %2 Aguardando para iniciar la sincronización - + Sync status is unknown - + Waiting to start syncing @@ -7010,33 +7010,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Éxito en la Sincronización, algunos archivos fueron ignorados. - - - Sync was successful - - Sync Error Error de Sincronización - - - Sync was successful but some files were ignored - - Setup Error Error de Configuración - + + Aborting … + + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7046,12 +7051,7 @@ Server replied with error: %2 Preparando para sincronizar - - Aborting … - - - - + Stopping sync diff --git a/translations/client_es_MX.ts b/translations/client_es_MX.ts index 874e08ed80e1c..58fe0fbf4a2e5 100644 --- a/translations/client_es_MX.ts +++ b/translations/client_es_MX.ts @@ -1204,34 +1204,34 @@ This action will abort any currently running synchronization. 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 antigua - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3640,19 +3640,19 @@ Tenga en cuenta que usar la línea de comandos para el registro anulará esta co Nota: la configuración del proxy no tiene efecto para las cuentas en el sistema local - + Manually specify proxy Especificar proxy manualmente - + No proxy Sin proxy - - - + + + Use global settings Usar la configuración global @@ -5592,7 +5592,7 @@ El servidor respondió con el error: %2 <p>%1 - Cliente de escritorio</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, haga clic <a href='%2'>aquí</a>.</p> @@ -5603,7 +5603,7 @@ El servidor respondió con el error: %2 <p><small>Usando el complemento para 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> @@ -6870,7 +6870,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>Construido de la revisión Git <a href="%1">%2</a> en %3, %4 usando Qt %5, %6</small></p> @@ -7032,12 +7032,12 @@ El servidor respondió con el error: %2 Aguardando para iniciar la sincronización - + Sync status is unknown Estado de sincronización desconocido - + Waiting to start syncing Esperando para empezar la sincronización @@ -7056,33 +7056,38 @@ El servidor respondió con el error: %2 Sync Success, some files were ignored. Éxito en la Sincronización, algunos archivos fueron ignorados. - - - Sync was successful - La sincronización fue exitosa - Sync Error Error de Sincronización - - - Sync was successful but some files were ignored - La sincronización fue exitosa pero algunos archivos fueron ignorados - Setup Error Error de Configuración - + + Aborting … + Abortando ... + + + + Sync was successful + La sincronización fue exitosa + + + + Sync was successful but some files were ignored + La sincronización fue exitosa pero algunos archivos fueron ignorados + + + Error occurred during sync Ocurrió un error durante la sincronización - + Error occurred during setup Ocurrió un error durante la configuración @@ -7092,12 +7097,7 @@ El servidor respondió con el error: %2 Preparando para sincronizar - - Aborting … - Abortando ... - - - + Stopping sync Deteniendo la sincronización diff --git a/translations/client_es_SV.ts b/translations/client_es_SV.ts index ff905cdfd44cf..bc07d520b7baf 100644 --- a/translations/client_es_SV.ts +++ b/translations/client_es_SV.ts @@ -1194,34 +1194,34 @@ This action will abort any currently running synchronization. - + %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. @@ -3602,19 +3602,19 @@ Note that using any logging command line options will override this setting. - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5546,7 +5546,7 @@ Server replied with error: %2 - + <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) @@ -5557,7 +5557,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6824,7 +6824,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -6986,12 +6986,12 @@ Server replied with error: %2 Aguardando para iniciar la sincronización - + Sync status is unknown - + Waiting to start syncing @@ -7010,33 +7010,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Éxito en la Sincronización, algunos archivos fueron ignorados. - - - Sync was successful - - Sync Error Error de Sincronización - - - Sync was successful but some files were ignored - - Setup Error Error de Configuración - + + Aborting … + + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7046,12 +7051,7 @@ Server replied with error: %2 Preparando para sincronizar - - Aborting … - - - - + Stopping sync diff --git a/translations/client_eu.ts b/translations/client_eu.ts index e46ce35745c06..92e24d27b09f5 100644 --- a/translations/client_eu.ts +++ b/translations/client_eu.ts @@ -1204,34 +1204,34 @@ Ekintza honek unean uneko sinkronizazioa bertan behera utziko du. Jarraitu - + %1 accounts number of accounts imported %1 kontu - + 1 account Kontu 1 - + %1 folders number of folders imported %1 karpeta - + 1 folder Karpeta 1 - + Legacy import Zaharkitutako inportazioa - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3651,19 +3651,19 @@ Kontuan izan erregistro-komando lerroaren edozein aukera erabiliz ezarpen hau ga Oharra: proxy ezarpenek ez dute eraginik ostalari lokaleko kontuengan - + Manually specify proxy Proxya eskuz zehaztu - + No proxy Proxyrik ez - - - + + + Use global settings Erabili ezarpen orokorrak @@ -5603,7 +5603,7 @@ Zerbitzariak errorearekin erantzun du: %2 <p>Mahaigaineko %1 bezeroa</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 Mahaigaineko bezeroa</p><p>%1 bertsioa. Infomazio gehiago jasotzeko egin klik <a href='%2'>hemen</a>.</p> @@ -5614,7 +5614,7 @@ Zerbitzariak errorearekin erantzun du: %2 <p><small>Fitxategi birtualen plugina erabiltzen: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 mahaigaineko bezeroa %2</p> @@ -6881,7 +6881,7 @@ Zerbitzariak errorearekin erantzun du: %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><a href="%1">%2</a> Git berrikuspenetik eraikia %3, %4 gainean Qt %5, %6 erabiliz</small></p> @@ -7043,12 +7043,12 @@ Zerbitzariak errorearekin erantzun du: %2 Itxoiten sinkronizazioaren hasiera - + Sync status is unknown Sinkronizazio-egoera ezezaguna da - + Waiting to start syncing Itxoiten sinkronizazioa hasteko @@ -7067,33 +7067,38 @@ Zerbitzariak errorearekin erantzun du: %2 Sync Success, some files were ignored. Sinkronizazioa ongi burutu da, fitxategi batzuk baztertu dira. - - - Sync was successful - Sinkronizazioa behar bezala burutu da. - Sync Error Sinkronizazio errorea - - - Sync was successful but some files were ignored - Sinkronizazioa ongi burutu da, baina fitxategi batzuk baztertu dira. - Setup Error Konfigurazio errorea - + + Aborting … + Bertan behera uzten ... + + + + Sync was successful + Sinkronizazioa behar bezala burutu da. + + + + Sync was successful but some files were ignored + Sinkronizazioa ongi burutu da, baina fitxategi batzuk baztertu dira. + + + Error occurred during sync Errorea gertatu da sinkronizatzean - + Error occurred during setup Errore bat gertatu da konfigurazioan @@ -7103,12 +7108,7 @@ Zerbitzariak errorearekin erantzun du: %2 Sinkronizazioa prestatzen - - Aborting … - Bertan behera uzten ... - - - + Stopping sync Sinkronizazioa gelditzen ... diff --git a/translations/client_fa.ts b/translations/client_fa.ts index 0cb2df286bc19..a8a53022af82b 100644 --- a/translations/client_fa.ts +++ b/translations/client_fa.ts @@ -1201,34 +1201,34 @@ This action will abort any currently running synchronization. Continue - + %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. @@ -3629,19 +3629,19 @@ Note that using any logging command line options will override this setting. - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5580,7 +5580,7 @@ Server replied with error: %2 <p>%1 Desktop Client</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) @@ -5591,7 +5591,7 @@ Server replied with error: %2 <p><small>Using virtual files plugin: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6858,7 +6858,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7020,12 +7020,12 @@ Server replied with error: %2 در حال انتظار برای شروع همگام‌سازی - + Sync status is unknown - + Waiting to start syncing @@ -7044,33 +7044,38 @@ Server replied with error: %2 Sync Success, some files were ignored. همگام‌سازی موفق، تعداد از فایل‌ها نادیده گرفته شده‌اند. - - - Sync was successful - - Sync Error خطای همگام‌سازی - - - Sync was successful but some files were ignored - - Setup Error خطای نصب - + + Aborting … + Aborting … + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7080,12 +7085,7 @@ Server replied with error: %2 آماده‌سازی همگام‌سازی - - Aborting … - Aborting … - - - + Stopping sync diff --git a/translations/client_fi.ts b/translations/client_fi.ts index 73580e56ca9ed..6a4097118f506 100644 --- a/translations/client_fi.ts +++ b/translations/client_fi.ts @@ -1198,34 +1198,34 @@ Tämä toiminto peruu kaikki tämänhetkiset synkronoinnit. Jatka - + %1 accounts number of accounts imported %1 tiliä - + 1 account 1 tili - + %1 folders number of folders imported %1 kansiota - + 1 folder 1 kansio - + Legacy import - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3613,19 +3613,19 @@ Note that using any logging command line options will override this setting. - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5557,7 +5557,7 @@ Server replied with error: %2 <p>%1-työpöytäsovellus</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) @@ -5568,7 +5568,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6835,7 +6835,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -6997,12 +6997,12 @@ Server replied with error: %2 Odotetaan synkronoinnin käynnistymistä - + Sync status is unknown - + Waiting to start syncing @@ -7021,33 +7021,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Synkronointi onnistui, jotkin tiedostot ohitettiin. - - - Sync was successful - - Sync Error Synkronointivirhe - - - Sync was successful but some files were ignored - - Setup Error Asetusvirhe. - + + Aborting … + Keskeytetään ... + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7057,12 +7062,7 @@ Server replied with error: %2 Valmistaudutaan synkronointiin - - Aborting … - Keskeytetään ... - - - + Stopping sync diff --git a/translations/client_fr.ts b/translations/client_fr.ts index dd853cf7eada5..79925ded16c65 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -1202,34 +1202,34 @@ Vous prenez vos propres risques. Continuer - + %1 accounts number of accounts imported %1 comptes - + 1 account 1 compte - + %1 folders number of folders imported %1 dossiers - + 1 folder 1 dossier - + Legacy import Importation héritée - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3650,19 +3650,19 @@ Notez que l'utilisation de toute option de ligne de commande de journalisat Remarque: les paramètres de proxy n'ont aucun effet sur les comptes sur localhost - + Manually specify proxy Spécifier manuellement le serveur proxy - + No proxy Aucun serveur proxy - - - + + + Use global settings Utiliser les paramètres globaux @@ -5602,7 +5602,7 @@ Le serveur a répondu avec l'erreur : %2 <p>Client de bureau %1</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> @@ -5613,7 +5613,7 @@ Le serveur a répondu avec l'erreur : %2 <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> @@ -6880,7 +6880,7 @@ Le serveur a répondu avec l'erreur : %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>Généré à partir de la révision Git <a href="%1">%2</a> du %3, %4 en utilisant Qt %5, %6</small></p> @@ -7042,12 +7042,12 @@ Le serveur a répondu avec l'erreur : %2 Synchronisation en attente - + Sync status is unknown Le statut de synchronisations est inconnu - + Waiting to start syncing En attente du démarrage de la synchronisation @@ -7066,33 +7066,38 @@ Le serveur a répondu avec l'erreur : %2 Sync Success, some files were ignored. Synchronisation terminée avec succès, certains fichiers ont été exclus. - - - Sync was successful - Synchronisation réussie - Sync Error Erreur de synchronisation - - - Sync was successful but some files were ignored - La syncronisation a réussi mais certains fichiers ont été ignorés - Setup Error Erreur de configuration - + + Aborting … + Annulation... + + + + Sync was successful + Synchronisation réussie + + + + Sync was successful but some files were ignored + La syncronisation a réussi mais certains fichiers ont été ignorés + + + Error occurred during sync Une erreur est survenue pendant la synchronisation - + Error occurred during setup Une erreur est survenue pendant l'installation @@ -7102,12 +7107,7 @@ Le serveur a répondu avec l'erreur : %2 Préparation à la synchronisation - - Aborting … - Annulation... - - - + Stopping sync Arrêt de la synchronisation diff --git a/translations/client_ga.ts b/translations/client_ga.ts index 91405f2530529..ad04fad20e65c 100644 --- a/translations/client_ga.ts +++ b/translations/client_ga.ts @@ -1204,34 +1204,34 @@ Cuirfidh an gníomh seo deireadh le haon sioncrónú atá ar siúl faoi láthair Lean ar aghaidh - + %1 accounts number of accounts imported % 1 cuntas - + 1 account 1 chuntas - + %1 folders number of folders imported % 1 fillteán - + 1 folder 1 fillteán - + Legacy import Iompórtáil oidhreachta - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3652,19 +3652,19 @@ Tabhair faoi deara go sárófar an socrú seo trí úsáid a bhaint as aon rogha Nóta: níl aon éifeachtaí ag socruithe seachfhreastalaí do chuntais ar localhost - + Manually specify proxy Sonraigh seachfhreastalaí de láimh - + No proxy Gan seachfhreastalaí - - - + + + Use global settings Úsáid socruithe domhanda @@ -5604,7 +5604,7 @@ D'fhreagair an freastalaí le hearráid: % 2 <p>%1 Cliant Deisce</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 Cliant Deisce</p><p>Leagan %1. Chun tuilleadh eolais a fháil cliceáil le do thoil ar <a href='%2'>anseo</a>.</p> @@ -5615,7 +5615,7 @@ D'fhreagair an freastalaí le hearráid: % 2 <p><small>Ag úsáid an breiseáin comhaid fhíorúil: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 cliant deisce %2</p> @@ -6882,7 +6882,7 @@ D'fhreagair an freastalaí le hearráid: % 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>Tógtha ó athbhreithniú Git <a href="%1">%2</a> ar %3, %4 ag úsáid %5, %6</small></p> @@ -7044,12 +7044,12 @@ D'fhreagair an freastalaí le hearráid: % 2 Ag fanacht le sioncronú a thosú - + Sync status is unknown Níl an stádas sioncronaithe anaithnid - + Waiting to start syncing Ag fanacht le sioncronú a thosú @@ -7068,33 +7068,38 @@ D'fhreagair an freastalaí le hearráid: % 2 Sync Success, some files were ignored. Sync Rath, tugadh neamhaird ar roinnt comhad. - - - Sync was successful - D'éirigh leis an tsioncronú - Sync Error Earráid Sioncronaithe - - - Sync was successful but some files were ignored - D'éirigh le sioncronú ach níor tugadh aird ar roinnt comhad - Setup Error Earráid Socraithe - + + Aborting … + Ag éirí as… + + + + Sync was successful + D'éirigh leis an tsioncronú + + + + Sync was successful but some files were ignored + D'éirigh le sioncronú ach níor tugadh aird ar roinnt comhad + + + Error occurred during sync Tharla earráid le linn sioncronaithe - + Error occurred during setup Tharla earráid le linn an tsocraithe @@ -7104,12 +7109,7 @@ D'fhreagair an freastalaí le hearráid: % 2 Ag ullmhú chun sioncronaithe - - Aborting … - Ag éirí as… - - - + Stopping sync Sioncronú á stopadh diff --git a/translations/client_gl.ts b/translations/client_gl.ts index 70fcc895dd8b0..5eaf6e5863156 100644 --- a/translations/client_gl.ts +++ b/translations/client_gl.ts @@ -1204,34 +1204,34 @@ Esta acción interromperá calquera sincronización que estea a executarse actua Continuar - + %1 accounts number of accounts imported %1 contas - + 1 account 1 conta - + %1 folders number of folders imported %1 cartafoles - + 1 folder 1 cartafol - + Legacy import Importar estilo antigo - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3651,19 +3651,19 @@ Teña en conta que o uso de calquera opción da liña de ordes anulara este axus Nota: Os axustes do proxy non teñen efectos para as contas en localhost - + Manually specify proxy Especificar manualmente o proxy - + No proxy Sen proxy - - - + + + Use global settings Usar os axustes globais @@ -5603,7 +5603,7 @@ O servidor respondeu co erro: %2 <p>Cliente de escritorio de %1</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>Cliente de escritorio de %1</p><p>Versión %1. Para obter máis información prema <a href='%2'>aquí</a>.</p> @@ -5614,7 +5614,7 @@ O servidor respondeu co erro: %2 <p><small>Usando o complemento de ficheiros virtuais: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>Cliente de escritorio de %1, %2</p> @@ -6881,7 +6881,7 @@ O servidor respondeu co erro: %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>Construido desde a revisión Git <a href="%1">%2</a> en %3, %4 usando Qt %5, %6</small></p> @@ -7043,12 +7043,12 @@ O servidor respondeu co erro: %2 Agardando o comezo da sincronización - + Sync status is unknown Descoñécese o estado da sincronización - + Waiting to start syncing Agardando para iniciar a sincronización @@ -7067,33 +7067,38 @@ O servidor respondeu co erro: %2 Sync Success, some files were ignored. A sincronización foi satisfactoria, algúns ficheiros foron ignorados. - - - Sync was successful - A sincronización realizouse correctamente - Sync Error Produciuse un erro de sincronización - - - Sync was successful but some files were ignored - A sincronización realizouse correctamente mais ignoráronse algúns ficheiros - Setup Error Produciuse un erro de configuración - + + Aborting … + Interrompendo… + + + + Sync was successful + A sincronización realizouse correctamente + + + + Sync was successful but some files were ignored + A sincronización realizouse correctamente mais ignoráronse algúns ficheiros + + + Error occurred during sync Produciuse un erro durante a sincronización - + Error occurred during setup Produciuse un erro durante a configuración @@ -7103,12 +7108,7 @@ O servidor respondeu co erro: %2 Preparando para sincronizar - - Aborting … - Interrompendo… - - - + Stopping sync Deter a sincronización diff --git a/translations/client_he.ts b/translations/client_he.ts index fa24f74e2d383..740c9b8b0bc31 100644 --- a/translations/client_he.ts +++ b/translations/client_he.ts @@ -1195,34 +1195,34 @@ This action will abort any currently running synchronization. המשך - + %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. @@ -3607,19 +3607,19 @@ Note that using any logging command line options will override this setting. - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5551,7 +5551,7 @@ Server replied with error: %2 <p>%1 לקוח לשולחן העבודה</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) @@ -5562,7 +5562,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6829,7 +6829,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -6991,12 +6991,12 @@ Server replied with error: %2 בהמתנה להתחלת סנכרון - + Sync status is unknown - + Waiting to start syncing @@ -7015,33 +7015,38 @@ Server replied with error: %2 Sync Success, some files were ignored. הסנכרון הצליח תוך התעלמות ממספר קבצים. - - - Sync was successful - - Sync Error שגיאת סנכרון - - - Sync was successful but some files were ignored - - Setup Error שגיאת התקנה - + + Aborting … + + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7051,12 +7056,7 @@ Server replied with error: %2 בהכנה לסנכרון - - Aborting … - - - - + Stopping sync diff --git a/translations/client_hr.ts b/translations/client_hr.ts index 462c9051fc1f5..6610dd5fc4294 100644 --- a/translations/client_hr.ts +++ b/translations/client_hr.ts @@ -1199,34 +1199,34 @@ Ova će radnja prekinuti bilo koju trenutačnu sinkronizaciju. Nastavi - + %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. @@ -3628,19 +3628,19 @@ Imajte na umu da će uporaba bilo koje opcije naredbenog retka u vezi sa zapisim Napomena: postavke proxyja ne utječu na račune na localhostu - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5578,7 +5578,7 @@ Server replied with error: %2 <p>%1 Klijent za osobna računala</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) @@ -5589,7 +5589,7 @@ Server replied with error: %2 <p><small>Upotreba dodatka za virtualne datoteke: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6856,7 +6856,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7018,12 +7018,12 @@ Server replied with error: %2 Čeka se početak sinkronizacije - + Sync status is unknown - + Waiting to start syncing @@ -7042,33 +7042,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Uspješna sinkronizacija, neke su datoteke zanemarene. - - - Sync was successful - - Sync Error Pogreška sinkronizacije - - - Sync was successful but some files were ignored - - Setup Error Pogreška pri postavljanju - + + Aborting … + Prekidanje… + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7078,12 +7083,7 @@ Server replied with error: %2 Priprema za sinkronizaciju - - Aborting … - Prekidanje… - - - + Stopping sync diff --git a/translations/client_hu.ts b/translations/client_hu.ts index 9ce12399e8c18..8f3a5bac46b55 100644 --- a/translations/client_hu.ts +++ b/translations/client_hu.ts @@ -1201,34 +1201,34 @@ Ez a művelet megszakítja a jelenleg futó szinkronizálást. Folytatás - + %1 accounts number of accounts imported %1 fiók - + 1 account 1 fiók - + %1 folders number of folders imported %1 mappa - + 1 folder 1 mappa - + Legacy import Importálás örökölt kliensből - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3631,19 +3631,19 @@ Ne feledje, hogy a naplózás parancssori kapcsolóinak használata felülbírá Megjegyzés: A proxy beállításai nincsenek hatással a localhoston található fiókokra - + Manually specify proxy Proxy kézi beállítása - + No proxy Nincs proxy - - - + + + Use global settings @@ -5583,7 +5583,7 @@ A kiszolgáló hibával válaszolt: %2 <p>%1 asztali kliens</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) @@ -5594,7 +5594,7 @@ A kiszolgáló hibával válaszolt: %2 <p><small>Virtuális fájlok bővítmény használata: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6861,7 +6861,7 @@ A kiszolgáló hibával válaszolt: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7023,12 +7023,12 @@ A kiszolgáló hibával válaszolt: %2 Várakozás a szinkronizálás elindulására - + Sync status is unknown Szinkronizálás állapota ismeretlen - + Waiting to start syncing Várakozás a szinkronizálás elindítására @@ -7047,33 +7047,38 @@ A kiszolgáló hibával válaszolt: %2 Sync Success, some files were ignored. A szinkronizálás sikeres, néhány fájl ki lett hagyva. - - - Sync was successful - Szinkronizálás sikeres. - Sync Error Szinkronizálási hiba - - - Sync was successful but some files were ignored - A szinkronizálás sikeres, de néhány fájl ki lett hagyva. - Setup Error Telepítési hiba - + + Aborting … + Megszakítás ... + + + + Sync was successful + Szinkronizálás sikeres. + + + + Sync was successful but some files were ignored + A szinkronizálás sikeres, de néhány fájl ki lett hagyva. + + + Error occurred during sync Hiba történt a szinkronizálás során - + Error occurred during setup Hiba történt a telepítés során @@ -7083,12 +7088,7 @@ A kiszolgáló hibával válaszolt: %2 Felkészülés a szinkronizálásra - - Aborting … - Megszakítás ... - - - + Stopping sync Szinkronizálás leállítása diff --git a/translations/client_is.ts b/translations/client_is.ts index 83f14a7634caf..5d30d72d50cf6 100644 --- a/translations/client_is.ts +++ b/translations/client_is.ts @@ -1201,34 +1201,34 @@ gagnageymslur: Halda áfram - + %1 accounts number of accounts imported %1 notandaaðgangar - + 1 account 1 notandaaðgangur - + %1 folders number of folders imported %1 möppur - + 1 folder 1 mappa - + Legacy import Eldri gerð innflutnings - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3614,19 +3614,19 @@ niðurhals. Uppsetta útgáfan er %3.</p> - + Manually specify proxy Skilgreina milliþjón handvirkt - + No proxy Enginn milliþjónn - - - + + + Use global settings @@ -5559,7 +5559,7 @@ Server replied with error: %2 <p>%1 vinnutölvuforrit</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 vinnutölvuforrit (Desktop Client)</p><p>Útgáfa %1. Til að sjá nánari upplýsingar skaltu <a href='%2'>smella hér</a>.</p> @@ -5570,7 +5570,7 @@ Server replied with error: %2 <p><small>Notar viðbót fyrir sýndarskrár: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 vinnutölvuforrit %2</p> @@ -6838,7 +6838,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7000,12 +7000,12 @@ Server replied with error: %2 Bíð eftir að samstilling ræsist - + Sync status is unknown - + Waiting to start syncing @@ -7024,33 +7024,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Samstilling tókst, einhverjar skrár voru hunsaðar. - - - Sync was successful - - Sync Error Samstillingarvilla - - - Sync was successful but some files were ignored - - Setup Error Villa í uppsetningu - + + Aborting … + Hætti við … + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7060,12 +7065,7 @@ Server replied with error: %2 Undirbý samstillingu - - Aborting … - Hætti við … - - - + Stopping sync diff --git a/translations/client_it.ts b/translations/client_it.ts index 7cac40a94ae84..936f1e1a25d5c 100644 --- a/translations/client_it.ts +++ b/translations/client_it.ts @@ -1204,34 +1204,34 @@ Questa azione interromperà qualsiasi sincronizzazione attualmente in esecuzione Continua - + %1 accounts number of accounts imported %1 account - + 1 account 1 account - + %1 folders number of folders imported %1 cartelle - + 1 folder 1 cartella - + Legacy import Importazione obsoleta - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3649,19 +3649,19 @@ Nota che l'utilizzo di qualsiasi opzione della riga di comando di registraz Nota: le impostazioni proxy non hanno effetto per gli account su localhost - + Manually specify proxy Impostazione manuale del proxy - + No proxy Nessun proxy - - - + + + Use global settings Usa le impostazioni globali @@ -5595,7 +5595,7 @@ Il server ha risposto con errore: %2 <p>Client desktop di %1</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 Client Desktop</p><p>Versione %1. Per maggiori informazioni clicca <a href='%2'>qui</a>.</p> @@ -5606,7 +5606,7 @@ Il server ha risposto con errore: %2 <p><small>Usato il plugin dei file virtuali: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 Client desktop %2</p> @@ -6873,7 +6873,7 @@ Il server ha risposto con errore: %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>Realizzato dalla revisione Git <a href="%1">%2</a> su %3, %4 usando Qt %5, %6</small></p> @@ -7035,12 +7035,12 @@ Il server ha risposto con errore: %2 In attesa di sincronizzazione - + Sync status is unknown Lo stato di sincronizzazione è sconosciuto - + Waiting to start syncing In attesa di iniziare la sincronizzazione @@ -7059,33 +7059,38 @@ Il server ha risposto con errore: %2 Sync Success, some files were ignored. Sincronizzazione avvenuta, alcuni file sono stati ignorati. - - - Sync was successful - Sincronizzazione riuscita - Sync Error Errore di sincronizzazione - - - Sync was successful but some files were ignored - La sincronizzazione è riuscita ma alcuni file sono stati ignorati - Setup Error Errore di configurazione - + + Aborting … + Interruzione... + + + + Sync was successful + Sincronizzazione riuscita + + + + Sync was successful but some files were ignored + La sincronizzazione è riuscita ma alcuni file sono stati ignorati + + + Error occurred during sync Si è verificato un errore durante la sincronizzazione - + Error occurred during setup Si è verificato un errore durante l'installazione @@ -7095,12 +7100,7 @@ Il server ha risposto con errore: %2 Preparazione della sincronizzazione - - Aborting … - Interruzione... - - - + Stopping sync Interruzione della sincronizzazione diff --git a/translations/client_ja.ts b/translations/client_ja.ts index ed565259c95f4..eb869ce0fa4f6 100644 --- a/translations/client_ja.ts +++ b/translations/client_ja.ts @@ -1204,34 +1204,34 @@ This action will abort any currently running synchronization. 続ける - + %1 accounts number of accounts imported %1 アカウント - + 1 account 1 アカウント - + %1 folders number of folders imported %1 フォルダ - + 1 folder 1 フォルダ - + Legacy import レガシーインポート(過去設定の取り込み) - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3651,19 +3651,19 @@ Note that using any logging command line options will override this setting.注: プロキシ設定は、ローカルホストのアカウントには影響しません - + Manually specify proxy 手動でプロキシを指定 - + No proxy プロキシを利用しない - - - + + + Use global settings グローバル設定を使用する @@ -5603,7 +5603,7 @@ Server replied with error: %2 <p>%1 デスクトップクライアント</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 デスクトップクライアント</p><p>バージョン %1. 詳細については <a href='%2'>ここ</a>をクリックしてください。</p> @@ -5614,7 +5614,7 @@ Server replied with error: %2 <p><small>仮想ファイルシステムプラグインを利用:%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> @@ -6881,7 +6881,7 @@ Server replied with 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>Git リビジョン <a href="%1">%2</a> から %3, %4 で Qt %5, %6 を使用してビルドされました</small></p> @@ -7043,12 +7043,12 @@ Server replied with error: %2 同期開始を待っています - + Sync status is unknown 同期ステータスが不明です - + Waiting to start syncing 同期開始を待機中 @@ -7067,33 +7067,38 @@ Server replied with error: %2 Sync Success, some files were ignored. 同期が完了しました。一部のファイルが除外されました。 - - - Sync was successful - 同期は成功しました - Sync Error 同期エラー - - - Sync was successful but some files were ignored - 同期に成功しましたが、一部のファイルが除外されました - Setup Error 設定エラー - + + Aborting … + 中止しています… + + + + Sync was successful + 同期は成功しました + + + + Sync was successful but some files were ignored + 同期に成功しましたが、一部のファイルが除外されました + + + Error occurred during sync 同期中にエラーが発生しました - + Error occurred during setup セットアップ中にエラーが発生しました @@ -7103,12 +7108,7 @@ Server replied with error: %2 同期の準備中 - - Aborting … - 中止しています… - - - + Stopping sync 同期を停止しています diff --git a/translations/client_ko.ts b/translations/client_ko.ts index e5bc1080a8577..bccf26fcc0b59 100644 --- a/translations/client_ko.ts +++ b/translations/client_ko.ts @@ -1203,34 +1203,34 @@ This action will abort any currently running synchronization. 계속 - + %1 accounts number of accounts imported %1개 계정 - + 1 account 1개 계정 - + %1 folders number of folders imported %1개 폴더 - + 1 folder 1개 폴더 - + Legacy import 레거시 불러오기 - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3635,19 +3635,19 @@ Note that using any logging command line options will override this setting.프록시 설정은 로컬호스트 계정에 효과가 없습니다. - + Manually specify proxy 프록시 수동으로 지정 - + No proxy 프록시 없음 - - - + + + Use global settings 전역 설정 사용 @@ -5588,7 +5588,7 @@ Server replied with error: %2 <p>%1 데스크톱 클라이언트</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) @@ -5599,7 +5599,7 @@ Server replied with error: %2 <small><p>가상 파일 플러그인 사용: %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> @@ -6866,7 +6866,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7028,12 +7028,12 @@ Server replied with error: %2 동기화 시작을 기다리는 중 - + Sync status is unknown - + Waiting to start syncing @@ -7052,33 +7052,38 @@ Server replied with error: %2 Sync Success, some files were ignored. 동기화 성공, 일부 파일은 무시되었습니다. - - - Sync was successful - - Sync Error 동기화 오류 - - - Sync was successful but some files were ignored - - Setup Error 설치 오류 - + + Aborting … + 중단 중... + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7088,12 +7093,7 @@ Server replied with error: %2 동기화 준비 중 - - Aborting … - 중단 중... - - - + Stopping sync diff --git a/translations/client_lt_LT.ts b/translations/client_lt_LT.ts index 92d1247368217..e863f5383e09a 100644 --- a/translations/client_lt_LT.ts +++ b/translations/client_lt_LT.ts @@ -1195,34 +1195,34 @@ This action will abort any currently running synchronization. Tęsti - + %1 accounts number of accounts imported - + 1 account 1 paskyra - + %1 folders number of folders imported - + 1 folder 1 aplankas - + Legacy import - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3611,19 +3611,19 @@ Note that using any logging command line options will override this setting. - + Manually specify proxy - + No proxy - - - + + + Use global settings Naudoti visuotinius nustatymus @@ -5555,7 +5555,7 @@ Server replied with error: %2 <p>%1 darbalaukio kliento programa</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) @@ -5566,7 +5566,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6833,7 +6833,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -6995,12 +6995,12 @@ Server replied with error: %2 Laukiama sinchronizavimo pradžios - + Sync status is unknown - + Waiting to start syncing @@ -7019,33 +7019,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Sinchronizavimas sėkmingas, kai kurie failai buvo praleisti. - - - Sync was successful - - Sync Error Sinchronizavimo klaida - - - Sync was successful but some files were ignored - - Setup Error Sąrankos klaida - + + Aborting … + Nutraukiama… + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7055,12 +7060,7 @@ Server replied with error: %2 Ruošiamasi sinchronizuoti - - Aborting … - Nutraukiama… - - - + Stopping sync diff --git a/translations/client_lv.ts b/translations/client_lv.ts index a40c067c768a7..9f16b79f7e327 100644 --- a/translations/client_lv.ts +++ b/translations/client_lv.ts @@ -1204,34 +1204,34 @@ Vienīgā priekšrocība, izslēdzot virtuālo datņu atbalstu, ir tas, ka atkal Turpināt - + %1 accounts number of accounts imported %1 konti - + 1 account 1 konts - + %1 folders number of folders imported %1 mapes - + 1 folder 1 mape - + Legacy import Mantojuma imports - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3622,19 +3622,19 @@ Note that using any logging command line options will override this setting. - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5564,7 +5564,7 @@ Server replied with error: %2 - + <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) @@ -5575,7 +5575,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6433,7 +6433,7 @@ Server replied with error: %2 Set expiration date - Uzstādīt beigu termiņu + Uzstādīt derīguma beigu datumu @@ -6842,7 +6842,7 @@ Server replied with 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>Izveidots no Git revīzijas <a href="%1">%2</a> %3, %4, izmantojot Qt %5, %6</small></p> @@ -7004,12 +7004,12 @@ Server replied with error: %2 Gaida, lai sāktu sinhronizāciju - + Sync status is unknown - + Waiting to start syncing @@ -7028,33 +7028,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Sinhronizācija sekmīga, dažas datnes tika ignorētas. - - - Sync was successful - - Sync Error Sinhronizācijas kļūda - - - Sync was successful but some files were ignored - - Setup Error Iestatīšanas kļūda. - + + Aborting … + Pārtraukšana ... + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7064,12 +7069,7 @@ Server replied with error: %2 Gatavojās sinhronizēt - - Aborting … - Pārtraukšana ... - - - + Stopping sync @@ -7221,7 +7221,7 @@ Server replied with error: %2 Expires: - Beigu termiņš: + Derīgums beigsies: diff --git a/translations/client_mk.ts b/translations/client_mk.ts index e7f21298a28d6..81644bd4ca477 100644 --- a/translations/client_mk.ts +++ b/translations/client_mk.ts @@ -1194,34 +1194,34 @@ This action will abort any currently running synchronization. Продолжи - + %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. @@ -3609,19 +3609,19 @@ Note that using any logging command line options will override this setting. - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5553,7 +5553,7 @@ Server replied with error: %2 <p>%1 Клиент за компјутер</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) @@ -5564,7 +5564,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6831,7 +6831,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -6993,12 +6993,12 @@ Server replied with error: %2 Чекање за почеток на синхронизација - + Sync status is unknown - + Waiting to start syncing @@ -7017,33 +7017,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Синхронизацијата е успешна, некој датотеки се игнорирани. - - - Sync was successful - - Sync Error Грешка при синхронизација - - Sync was successful but some files were ignored + + Setup Error - - Setup Error + + Aborting … + Откажување ... + + + + Sync was successful + + + + + Sync was successful but some files were ignored - + Error occurred during sync - + Error occurred during setup @@ -7053,12 +7058,7 @@ Server replied with error: %2 Подготовка за синхронизација - - Aborting … - Откажување ... - - - + Stopping sync diff --git a/translations/client_nb_NO.ts b/translations/client_nb_NO.ts index 7b44baf38a90e..49d2788213124 100644 --- a/translations/client_nb_NO.ts +++ b/translations/client_nb_NO.ts @@ -1204,34 +1204,34 @@ Denne handlingen vil avbryte enhver synkronisering som kjører. Fortsett - + %1 accounts number of accounts imported %1 kontoer - + 1 account 1 konto - + %1 folders number of folders imported %1 mapper - + 1 folder 1 mappe - + Legacy import Eldre import - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3640,19 +3640,19 @@ Merk at bruk av alle kommandolinjealternativer for logging vil overstyre denne i Merk: proxy-innstillinger har ingen effekter for kontoer på localhost - + Manually specify proxy Angi proxy manuelt - + No proxy Ingen proxy - - - + + + Use global settings Bruk globale innstillinger @@ -5592,7 +5592,7 @@ Server svarte med feil: %2 <p>%1 skrivebordsklient</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>%1Skrivebordsklient</p><p>Versjon %1. For mer informasjon, vennligst klikk <a href='%2'>her</a>.</p> @@ -5603,7 +5603,7 @@ Server svarte med feil: %2 <p><small>Bruker plugin for virtuelle filer: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 skrivebordsklient %2</p> @@ -6870,7 +6870,7 @@ Server svarte med feil: %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>Bygget fra Git-revisjon <a href="%1">%2</a> den %3, %4 med Qt %5, %6</small></p> @@ -7032,12 +7032,12 @@ Server svarte med feil: %2 Venter på å starte synkronisering - + Sync status is unknown Status for synkronisering er ukjent - + Waiting to start syncing Venter på å starte synkronisering @@ -7056,33 +7056,38 @@ Server svarte med feil: %2 Sync Success, some files were ignored. Vellykket synkronisering. Noen filer ble ignorert. - - - Sync was successful - Synkroniseringen var vellykket - Sync Error Synkroniseringsfeil - - - Sync was successful but some files were ignored - Synkroniseringen var vellykket, men noen filer ble ignorert - Setup Error Feil i oppsett - + + Aborting … + Avbryter … + + + + Sync was successful + Synkroniseringen var vellykket + + + + Sync was successful but some files were ignored + Synkroniseringen var vellykket, men noen filer ble ignorert + + + Error occurred during sync Feil oppstod under synkronisering - + Error occurred during setup Feil oppstod under oppsett @@ -7092,12 +7097,7 @@ Server svarte med feil: %2 Forbereder synkronisering - - Aborting … - Avbryter … - - - + Stopping sync Stopper synkroniseringen diff --git a/translations/client_nl.ts b/translations/client_nl.ts index 8567549982d83..818de8cb10145 100644 --- a/translations/client_nl.ts +++ b/translations/client_nl.ts @@ -1200,34 +1200,34 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken.Doorgaan - + %1 accounts number of accounts imported %1 accounts - + 1 account 1 account - + %1 folders number of folders imported %1 mappen - + 1 folder 1 map - + Legacy import Legacy import - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3637,19 +3637,19 @@ Merk op dat het gebruik van logging-opdrachtregel opties deze instelling zal ove Let op: proxy-instellingen hebben geen effect voor accounts op localhost - + Manually specify proxy Specificeer proxy handmatig - + No proxy Geen proxy - - - + + + Use global settings Gebruik globale instellingen @@ -5589,7 +5589,7 @@ Server antwoordde met fout: %2 <p>%1 Desktop Client</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. Voor meer informatie klik <a href='%2'>hier</a>.</p> @@ -5600,7 +5600,7 @@ Server antwoordde met fout: %2 <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>%1 desktop cliënt %2</p> @@ -6867,7 +6867,7 @@ Server antwoordde met fout: %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>Gebouwd vanaf Git revisie <a href="%1">%2</a> op %3, %4 gebruik makend van Qt %5, %6</small></p> @@ -7029,12 +7029,12 @@ Server antwoordde met fout: %2 In afwachting van synchronisatie - + Sync status is unknown Synchronisatiestatus is onbekend - + Waiting to start syncing In afwachting van synchronisatie @@ -7053,33 +7053,38 @@ Server antwoordde met fout: %2 Sync Success, some files were ignored. Synchronisatie geslaagd, sommige bestanden werden genegeerd. - - - Sync was successful - Synchronisatie was geslaagd - Sync Error Synchronisatiefout - - - Sync was successful but some files were ignored - Synchronisatie geslaagd, sommige bestanden werden genegeerd - Setup Error Installatiefout - + + Aborting … + Afbreken … + + + + Sync was successful + Synchronisatie was geslaagd + + + + Sync was successful but some files were ignored + Synchronisatie geslaagd, sommige bestanden werden genegeerd + + + Error occurred during sync Er trad een fout op tijdens synchronisatie - + Error occurred during setup Er trad een fout op bij het instellen @@ -7089,12 +7094,7 @@ Server antwoordde met fout: %2 Voorbereiden synchronisatie - - Aborting … - Afbreken … - - - + Stopping sync Synchronisatie stoppen diff --git a/translations/client_oc.ts b/translations/client_oc.ts index 0a10105e0421e..0b04cc9dda259 100644 --- a/translations/client_oc.ts +++ b/translations/client_oc.ts @@ -1194,34 +1194,34 @@ This action will abort any currently running synchronization. Contunhar - + %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. @@ -3600,19 +3600,19 @@ Note that using any logging command line options will override this setting. - + Manually specify proxy Indicar manualament un servidor mandatari - + No proxy Cap de servidor mandatari - - - + + + Use global settings @@ -5544,7 +5544,7 @@ Server replied with error: %2 <p>Client de burèu %1</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) @@ -5555,7 +5555,7 @@ Server replied with error: %2 <p><small>Usatge extension pels fichièrs virtuals : %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6822,7 +6822,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -6984,12 +6984,12 @@ Server replied with error: %2 En espèra d’aviar la sincro - + Sync status is unknown - + Waiting to start syncing @@ -7008,33 +7008,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Sincro. reüssida, unes fichièrs son estats ignorats. - - - Sync was successful - - Sync Error Error de sincronizacion - - - Sync was successful but some files were ignored - - Setup Error Error de parametratge - + + Aborting … + Abandon… + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7044,12 +7049,7 @@ Server replied with error: %2 Preparacion de la sincro. - - Aborting … - Abandon… - - - + Stopping sync diff --git a/translations/client_pl.ts b/translations/client_pl.ts index 0e8e729c768cf..b8379c93daa90 100644 --- a/translations/client_pl.ts +++ b/translations/client_pl.ts @@ -1204,34 +1204,34 @@ Ta czynność spowoduje przerwanie aktualnie uruchomionej synchronizacji.Kontynuuj - + %1 accounts number of accounts imported %1 kont - + 1 account 1 konto - + %1 folders number of folders imported %1 katalogów - + 1 folder 1 katalog - + Legacy import Import ze starszej wersji - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3635,19 +3635,19 @@ Zauważ, że użycie jakichkolwiek opcji wiersza poleceń logowania spowoduje za Uwaga: ustawienia proxy nie mają wpływu na konta na hoście lokalnym - + Manually specify proxy Ręcznie określ serwer proxy - + No proxy Brak proxy - - - + + + Use global settings @@ -5587,7 +5587,7 @@ Serwer odpowiedział błędem: %2 <p>%1 Desktop Client</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>Klient na komputer %1<p>Wersja %1. Aby uzyskać więcej informacji, kliknij <a href='%2'>tutaj</a>.</p> @@ -5598,7 +5598,7 @@ Serwer odpowiedział błędem: %2 <p><small>Używanie wtyczki plików wirtualnych: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 klient na komputer %2</p> @@ -6865,7 +6865,7 @@ Serwer odpowiedział błędem: %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>Zbudowany z wersji Git <a href="%1">%2</a> na %3, %4 przy użyciu Qt %5, %6</small></p> @@ -7027,12 +7027,12 @@ Serwer odpowiedział błędem: %2 Oczekiwanie na rozpoczęcie synchronizacji - + Sync status is unknown - + Waiting to start syncing @@ -7051,33 +7051,38 @@ Serwer odpowiedział błędem: %2 Sync Success, some files were ignored. Synchronizacja zakończona, niektóre pliki zostały zignorowane. - - - Sync was successful - - Sync Error Błąd synchronizacji - - - Sync was successful but some files were ignored - - Setup Error Błąd ustawień - + + Aborting … + Anulowanie… + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7087,12 +7092,7 @@ Serwer odpowiedział błędem: %2 Przygotowanie do synchronizacji - - Aborting … - Anulowanie… - - - + Stopping sync diff --git a/translations/client_pt.ts b/translations/client_pt.ts index 3f6196c377083..e130d2ebb840e 100644 --- a/translations/client_pt.ts +++ b/translations/client_pt.ts @@ -1195,34 +1195,34 @@ This action will abort any currently running synchronization. Continuar - + %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. @@ -3605,19 +3605,19 @@ Note that using any logging command line options will override this setting. - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5549,7 +5549,7 @@ Server replied with error: %2 - + <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) @@ -5560,7 +5560,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6827,7 +6827,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -6989,12 +6989,12 @@ Server replied with error: %2 A aguardar o início da sincronização. - + Sync status is unknown - + Waiting to start syncing @@ -7013,33 +7013,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Sincronizado com suceso, alguns ficheiros foram ignorados. - - - Sync was successful - - Sync Error Erro de sincronização - - - Sync was successful but some files were ignored - - Setup Error Erro na configuração - + + Aborting … + + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7049,12 +7054,7 @@ Server replied with error: %2 A preparar para sincronizar - - Aborting … - - - - + Stopping sync diff --git a/translations/client_pt_BR.ts b/translations/client_pt_BR.ts index eecbe0b023d00..2a8f8f86b9c8b 100644 --- a/translations/client_pt_BR.ts +++ b/translations/client_pt_BR.ts @@ -1201,34 +1201,34 @@ Esta ação irá cancelar qualquer sincronização atualmente em execução.Continuar - + %1 accounts number of accounts imported %1 contas - + 1 account 1 conta - + %1 folders number of folders imported %1 pastas - + 1 folder 1 pasta - + Legacy import Importação legada - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3645,19 +3645,19 @@ Note that using any logging command line options will override this setting.Nota: as configurações de proxy não têm efeito para contas no host local - + Manually specify proxy Especifique manualmente o proxy - + No proxy Sem proxy - - - + + + Use global settings Usar configurações globais @@ -5598,7 +5598,7 @@ Servidor respondeu com erro: %2 <p>%1 Cliente Desktop</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 desktop</p><p>Versão %1. Para mais informações por favor click <a href='%2'>aqui</a>.</p> @@ -5609,7 +5609,7 @@ Servidor respondeu com erro: %2 <p><small>Usando o plugin de arquivos virtuais: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 cliente desktop %2</p> @@ -6876,7 +6876,7 @@ Servidor respondeu com erro: %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>Construído a partir da revisão do Git <a href="%1">%2</a> em %3, %4 usando Qt %5, %6</small></p> @@ -7038,12 +7038,12 @@ Servidor respondeu com erro: %2 Aguardando para iniciar sincronização - + Sync status is unknown O status da sincronização é desconhecido - + Waiting to start syncing Aguardando para iniciar a sincronização @@ -7062,33 +7062,38 @@ Servidor respondeu com erro: %2 Sync Success, some files were ignored. Sincronizado Finalizada, alguns arquivos foram ignorados. - - - Sync was successful - A sincronização foi bem-sucedida - Sync Error Erro de sincronização - - - Sync was successful but some files were ignored - A sincronização foi bem-sucedida, mas alguns arquivos foram ignorados - Setup Error Erro na Configuração - + + Aborting … + Interrompendo... + + + + Sync was successful + A sincronização foi bem-sucedida + + + + Sync was successful but some files were ignored + A sincronização foi bem-sucedida, mas alguns arquivos foram ignorados + + + Error occurred during sync Ocorreu um erro durante a sincronização - + Error occurred during setup Ocorreu um erro durante a configuração @@ -7098,12 +7103,7 @@ Servidor respondeu com erro: %2 Preparando para sincronizar - - Aborting … - Interrompendo... - - - + Stopping sync Parando a sincronização diff --git a/translations/client_ro.ts b/translations/client_ro.ts index 2f558500bfac4..d1b54ca97bc74 100644 --- a/translations/client_ro.ts +++ b/translations/client_ro.ts @@ -1199,34 +1199,34 @@ Această acțiune va opri toate sincronizările în derulare din acest moment.Continuare - + %1 accounts number of accounts imported - + 1 account 1 cont - + %1 folders number of folders imported 1 foldere - + 1 folder 1 folder - + Legacy import Import mostenit - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3617,19 +3617,19 @@ Note that using any logging command line options will override this setting. - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5559,7 +5559,7 @@ Server replied with error: %2 - + <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) @@ -5570,7 +5570,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6837,7 +6837,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -6999,12 +6999,12 @@ Server replied with error: %2 - + Sync status is unknown - + Waiting to start syncing @@ -7024,32 +7024,37 @@ Server replied with error: %2 - - Sync was successful + + Sync Error - - Sync Error + + Setup Error - - Sync was successful but some files were ignored + + Aborting … - - Setup Error + + Sync was successful - + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7059,12 +7064,7 @@ Server replied with error: %2 - - Aborting … - - - - + Stopping sync diff --git a/translations/client_ru.ts b/translations/client_ru.ts index 70cddca8876c4..dd37960cd5207 100644 --- a/translations/client_ru.ts +++ b/translations/client_ru.ts @@ -1202,34 +1202,34 @@ This action will abort any currently running synchronization. Продолжить - + %1 accounts number of accounts imported учётных записей: %1 - + 1 account одна учётная запись - + %1 folders number of folders imported папок: %1 - + 1 folder одна папка - + Legacy import Импорт из устаревшей версии - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3639,19 +3639,19 @@ Note that using any logging command line options will override this setting.Внимание: параметры прокси не применяются для учётных записей, где адрес сервера localhost - + Manually specify proxy Настроить прокси-сервер - + No proxy Не использовать прокси-сервер - - - + + + Use global settings Использовать глобальные параметры @@ -5591,7 +5591,7 @@ Server replied with error: %2 <p>%1 клиент для ПК</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 для ПК</p> <p>Версия %1. Для получения дополнительной информации нажмите <a href='%2'>сюда</a>.</p> @@ -5602,7 +5602,7 @@ Server replied with error: %2 <p><small>Используемый модуль поддержки виртуальных файлов: %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> @@ -6869,7 +6869,7 @@ Server replied with 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>Собрано из исходников Git версии <a href="%1">%2</a> на %3, %4 с использованием библиотек Qt %5, %6</small></p> @@ -7031,12 +7031,12 @@ Server replied with error: %2 Ожидание начала синхронизации - + Sync status is unknown - + Waiting to start syncing @@ -7055,33 +7055,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Синхронизация прошла успешно, некоторые файлы были исключены из синхронизации. - - - Sync was successful - - Sync Error Ошибка синхронизации - - - Sync was successful but some files were ignored - - Setup Error Ошибка установки - + + Aborting … + Прерывание... + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync Произошла ошибка во время синхронизации - + Error occurred during setup Произошла ошибка во время настройки @@ -7091,12 +7096,7 @@ Server replied with error: %2 Подготовка к синхронизации - - Aborting … - Прерывание... - - - + Stopping sync diff --git a/translations/client_sc.ts b/translations/client_sc.ts index 1ff50e76f8ea9..e95d7f5cb4df4 100644 --- a/translations/client_sc.ts +++ b/translations/client_sc.ts @@ -1199,34 +1199,34 @@ Custa atzione at a firmare cale si siat sincronizatzione immoe in esecutzione.Sighi - + %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. @@ -3629,19 +3629,19 @@ Càstia chi s'impreu de cale si siat optzione de sa riga de cumandu de regi Avisu: sa cunfiguratzione de su serbidore intermèdiu non tenet nissunu efetu pro is contos de s'acollidore locale - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5578,7 +5578,7 @@ Server replied with error: %2 <p>%1 Cliente de iscrivania</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) @@ -5589,7 +5589,7 @@ Server replied with error: %2 <p><small>Impreende s'estensione de archìvios virtuales: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6856,7 +6856,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7018,12 +7018,12 @@ Server replied with error: %2 Isetende de cumintzare sa sincronizatzione - + Sync status is unknown - + Waiting to start syncing @@ -7042,33 +7042,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Sincronizatzione resèssida, calicunu archìviu est istadu ignoradu. - - - Sync was successful - - Sync Error Errore de sincronizatzione - - - Sync was successful but some files were ignored - - Setup Error Errore de cunfiguratzione - + + Aborting … + Firmada ... + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7078,12 +7083,7 @@ Server replied with error: %2 Ammaniende pro sa sincronizatzione - - Aborting … - Firmada ... - - - + Stopping sync diff --git a/translations/client_sk.ts b/translations/client_sk.ts index 5b0dd0f1e6921..8c25f98666618 100644 --- a/translations/client_sk.ts +++ b/translations/client_sk.ts @@ -1204,34 +1204,34 @@ Táto akcia zruší všetky prebiehajúce synchronizácie. Pokračovať - + %1 accounts number of accounts imported %1 účty - + 1 account 1 účet - + %1 folders number of folders imported %1 priečinkov - + 1 folder 1 priečinok - + Legacy import Starý import - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3635,19 +3635,19 @@ Upozorňujeme, že použitie akýchkoľvek príkazov pre logovanie z príkazové Poznámka: nastavenia proxy nemajú žiadny efekt pre účty na localhoste - + Manually specify proxy Zadať proxy ručne - + No proxy Žiadna proxy - - - + + + Use global settings @@ -5587,7 +5587,7 @@ Server odpovedal chybou: %2 <p>Klient %1 pre počítač</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 Desktopový klient</p><p> Verzia %1. Pre viac informácií kliknite <a href='%2'>sem</a>.</p> @@ -5598,7 +5598,7 @@ Server odpovedal chybou: %2 <p><small>Používa zásuvný modul virtuálnych súborov: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 Dektopový klient %2</p> @@ -6865,7 +6865,7 @@ Server odpovedal chybou: %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>Zostavené z Git revízie <a href="%1">%2</a> na %3, %4 s použitím Qt %5, %6</small></p> @@ -7027,12 +7027,12 @@ Server odpovedal chybou: %2 Čakanie na začiatok synchronizácie - + Sync status is unknown - + Waiting to start syncing @@ -7051,33 +7051,38 @@ Server odpovedal chybou: %2 Sync Success, some files were ignored. Synchronizácia prebehla úspešne, niektoré súbory boli ignorované. - - - Sync was successful - - Sync Error Chyba synchronizácie - - - Sync was successful but some files were ignored - - Setup Error Chyba inštalácie - + + Aborting … + Prerušuje sa... + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7087,12 +7092,7 @@ Server odpovedal chybou: %2 Príprava na synchronizáciu - - Aborting … - Prerušuje sa... - - - + Stopping sync diff --git a/translations/client_sl.ts b/translations/client_sl.ts index e474c5bd62bc5..c61382288afba 100644 --- a/translations/client_sl.ts +++ b/translations/client_sl.ts @@ -1199,34 +1199,34 @@ S tem dejanjem prav tako prekinete vsa trenutna usklajevanja v izvajanju.Nadaljuj - + %1 accounts number of accounts imported %1 računov - + 1 account 1 račun - + %1 folders number of folders imported %1 map - + 1 folder 1 mapa - + Legacy import Opuščeno uvažanje - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3628,19 +3628,19 @@ Uporaba kateregakoli argumenta z ukazom v ukazni vrstici prepiše to nastavitev. Opomba: nastavitve posredniškega strežnika nimajo učinka na krajevne račune - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5578,7 +5578,7 @@ Server replied with error: %2 <p>Namizni program %1</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) @@ -5589,7 +5589,7 @@ Server replied with error: %2 <p><small>Uporablja vstavek navideznih datotek: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6856,7 +6856,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7018,12 +7018,12 @@ Server replied with error: %2 Čakanje na začetek usklajevanja - + Sync status is unknown - + Waiting to start syncing @@ -7042,33 +7042,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Usklajevanje je končano, nekatere datoteke niso bile usklajene. - - - Sync was successful - - Sync Error Napaka usklajevanja - - - Sync was successful but some files were ignored - - Setup Error Napaka nastavitve - + + Aborting … + Poteka prekinjanje ... + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7078,12 +7083,7 @@ Server replied with error: %2 Priprava na usklajevanje - - Aborting … - Poteka prekinjanje ... - - - + Stopping sync diff --git a/translations/client_sr.ts b/translations/client_sr.ts index 403bebe615349..e058899f8e1f1 100644 --- a/translations/client_sr.ts +++ b/translations/client_sr.ts @@ -1204,34 +1204,34 @@ This action will abort any currently running synchronization. Настави - + %1 accounts number of accounts imported %1 налога - + 1 account 1 налог - + %1 folders number of folders imported %1 фолдера - + 1 folder 1 фолдер - + Legacy import Увоз старе верзије - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3652,19 +3652,19 @@ Note that using any logging command line options will override this setting.Напомена: прокси подешавања немају ефекат за налоге на локалном хосту - + Manually specify proxy Ручно наведи посредни сервер - + No proxy Без посредног сервера - - - + + + Use global settings Користи општа подешавања @@ -5604,7 +5604,7 @@ Server replied with error: %2 <p>%1 десктоп клијент</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 Десктоп клијент</p><p>верзија %1. За више информација, молимо вас да кликнете <a href='%2'>овде</a>.</p> @@ -5615,7 +5615,7 @@ Server replied with error: %2 <p><small>Користи се додатак виртуелних фајлова: %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> @@ -6882,7 +6882,7 @@ Server replied with 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>Изграђен из Git ревизије <a href="%1">%2</a> дана %3, %4 користећи Qt %5, %6</small></p> @@ -7044,12 +7044,12 @@ Server replied with error: %2 Чекам почетак синхронизације - + Sync status is unknown Не зна се статус синхронизације - + Waiting to start syncing Чека се на почетак синхронизације @@ -7068,33 +7068,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Синхронизација успешна. Неки фајлови су игнорисани. - - - Sync was successful - Синхронизација је била успешна - Sync Error Грешка синхронизације - - - Sync was successful but some files were ignored - Синхронизација је била успешна, али су неки фајлови игнорисани - Setup Error Грешка подешавања - + + Aborting … + Прекидам… + + + + Sync was successful + Синхронизација је била успешна + + + + Sync was successful but some files were ignored + Синхронизација је била успешна, али су неки фајлови игнорисани + + + Error occurred during sync Дошло је до грешке током синхронизације - + Error occurred during setup Дошло је до грешке током подешавања @@ -7104,12 +7109,7 @@ Server replied with error: %2 Припремам синхронизацију - - Aborting … - Прекидам… - - - + Stopping sync Синхронизација се зауставља diff --git a/translations/client_sv.ts b/translations/client_sv.ts index e3b5bd938584d..aeb977c29d7bd 100644 --- a/translations/client_sv.ts +++ b/translations/client_sv.ts @@ -1204,34 +1204,34 @@ Den här åtgärden avbryter alla pågående synkroniseringar. Fortsätt - + %1 accounts number of accounts imported %1 konton - + 1 account 1 konto - + %1 folders number of folders imported %1 mappar - + 1 folder 1 mapp - + Legacy import Legacyimport - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3652,19 +3652,19 @@ Observera att om du använder kommandoradsalternativ för loggning kommer den h Observera att proxy-inställningar inte används för konton på localhost - + Manually specify proxy Ange proxy manuellt - + No proxy Ingen proxy - - - + + + Use global settings Använd globala inställningar @@ -5604,7 +5604,7 @@ Servern svarade med fel: %2 <p>%1 Skrivbordsklient</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 Skrivbordsklient</p><p>Version %1. För mer information klicka <a href='%2'>här</a>.</p> @@ -5615,7 +5615,7 @@ Servern svarade med fel: %2 <p><small>Använder plugin för virtuella filer: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 skrivbordsklient %2</p> @@ -6882,7 +6882,7 @@ Servern svarade med fel: %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>Byggd från Git revision <a href="%1">%2</a> den %3, %4 med Qt %5, %6</small></p> @@ -7044,12 +7044,12 @@ Servern svarade med fel: %2 Väntar på att starta synkronisering - + Sync status is unknown Synkroniseringsstatus är okänd - + Waiting to start syncing Väntar på att starta synkronisering @@ -7068,33 +7068,38 @@ Servern svarade med fel: %2 Sync Success, some files were ignored. Synkronisering lyckades, men vissa filer ignorerades. - - - Sync was successful - Synkroniseringen lyckades - Sync Error Synkroniseringsfel - - - Sync was successful but some files were ignored - Synkroniseringen lyckades men vissa filer ignorerades - Setup Error Inställningsfel - + + Aborting … + Avbryter ... + + + + Sync was successful + Synkroniseringen lyckades + + + + Sync was successful but some files were ignored + Synkroniseringen lyckades men vissa filer ignorerades + + + Error occurred during sync Ett fel uppstod under synkroniseringen - + Error occurred during setup Ett fel uppstod under installationen @@ -7104,12 +7109,7 @@ Servern svarade med fel: %2 Förbereder synkronisering - - Aborting … - Avbryter ... - - - + Stopping sync Stoppar synkronisering diff --git a/translations/client_th.ts b/translations/client_th.ts index d761698df9317..02566424f8810 100644 --- a/translations/client_th.ts +++ b/translations/client_th.ts @@ -1198,34 +1198,34 @@ This action will abort any currently running synchronization. ดำเนินการต่อ - + %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. @@ -3610,19 +3610,19 @@ Note that using any logging command line options will override this setting. - + Manually specify proxy - + No proxy - - - + + + Use global settings @@ -5553,7 +5553,7 @@ Server replied with error: %2 - + <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) @@ -5564,7 +5564,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6831,7 +6831,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -6993,12 +6993,12 @@ Server replied with error: %2 กำลังรอเริ่มต้นการซิงค์ - + Sync status is unknown - + Waiting to start syncing @@ -7017,33 +7017,38 @@ Server replied with error: %2 Sync Success, some files were ignored. ซิงค์สำเร็จ บางไฟล์ถูกละเว้น - - - Sync was successful - - Sync Error ซิงค์ผิดพลาด - - - Sync was successful but some files were ignored - - Setup Error ตั้งค่าผิดพลาด - + + Aborting … + + + + + Sync was successful + + + + + Sync was successful but some files were ignored + + + + Error occurred during sync - + Error occurred during setup @@ -7053,12 +7058,7 @@ Server replied with error: %2 กำลังเตรียมการซิงค์ - - Aborting … - - - - + Stopping sync diff --git a/translations/client_tr.ts b/translations/client_tr.ts index 4408f2c077a54..456c390d40566 100644 --- a/translations/client_tr.ts +++ b/translations/client_tr.ts @@ -1204,34 +1204,34 @@ Bu işlem şu anda yürütülmekte olan eşitleme işlemlerini durdurur.Sürdür - + %1 accounts number of accounts imported %1 hesap - + 1 account 1 hesap - + %1 folders number of folders imported %1 klasör - + 1 folder 1 klasör - + Legacy import Eskileri içe aktarma - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3651,19 +3651,19 @@ Komut satırından verilen günlük komutlarının bu ayarın yerine geçeceğin Not: Vekil sunucu ayarları localhost üzerindeki hesaplar için uygulanmaz - + Manually specify proxy Vekil sunucuyu el ile ayarlayın - + No proxy Vekil sunucu yok - - - + + + Use global settings Genel ayarlar kullanılsın @@ -5603,7 +5603,7 @@ Sunucunun verdiği hata yanıtı: %2 <p>%1 Masaüstü istemcisi</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 masaüstü istemcisi</p> <p>%1. Sürüm. Ayrıntılı bilgi almak için <a href='%2'>buraya tıklayabilirsiniz</a>.</p> @@ -5614,7 +5614,7 @@ Sunucunun verdiği hata yanıtı: %2 <p><small>Sanal dosyalar eklentisi kullanılarak: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 masaüstü istemcisi %2</p> @@ -6881,7 +6881,7 @@ Sunucunun verdiği hata yanıtı: %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>Git <a href="%1">%2</a> sürümü ile %3 zamanında, %4 Qt %5 kullanılarak, %6 hazırlandı</small></p> @@ -7043,12 +7043,12 @@ Sunucunun verdiği hata yanıtı: %2 Eşitlemenin başlatılması bekleniyor - + Sync status is unknown Eşitleme durumu bilinmiyor - + Waiting to start syncing Eşitlemenin başlatılması bekleniyor @@ -7067,33 +7067,38 @@ Sunucunun verdiği hata yanıtı: %2 Sync Success, some files were ignored. Eşitleme tamamlandı, bazı dosyalar yok sayıldı. - - - Sync was successful - Eşitleme sorunsuz tamamlandı - Sync Error Eşitleme sorunu - - - Sync was successful but some files were ignored - Eşitleme tamamlandı ancak bazı dosyalar yok sayıldı - Setup Error Kurulum sorunu - + + Aborting … + İptal ediliyor… + + + + Sync was successful + Eşitleme sorunsuz tamamlandı + + + + Sync was successful but some files were ignored + Eşitleme tamamlandı ancak bazı dosyalar yok sayıldı + + + Error occurred during sync Eşitleme sırasında sorun çıktı - + Error occurred during setup Kurulum sırasında sorun çıktı @@ -7103,12 +7108,7 @@ Sunucunun verdiği hata yanıtı: %2 Eşitlemeye hazırlanılıyor - - Aborting … - İptal ediliyor… - - - + Stopping sync Eşitleme durduruluyor diff --git a/translations/client_ug.ts b/translations/client_ug.ts index ff3848f6a4feb..4caf4d85949ef 100644 --- a/translations/client_ug.ts +++ b/translations/client_ug.ts @@ -1204,34 +1204,34 @@ This action will abort any currently running synchronization. داۋاملاشتۇر - + %1 accounts number of accounts imported % 1 ھېسابات - + 1 account 1 ھېسابات - + %1 folders number of folders imported % 1 ھۆججەت قىسقۇچ - + 1 folder 1 ھۆججەت قىسقۇچ - + Legacy import مىراس ئىمپورت - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3652,19 +3652,19 @@ Note that using any logging command line options will override this setting.ئەسكەرتىش: ۋاكالەتچى تەڭشەكلەرنىڭ localhost دىكى ھېساباتىغا ھېچقانداق تەسىرى يوق - + Manually specify proxy ۋاكالەتچىنى قولدا بەلگىلەڭ - + No proxy ۋاكالەتچى يوق - - - + + + Use global settings يەرشارى تەڭشەكلىرىنى ئىشلىتىڭ @@ -5604,7 +5604,7 @@ Server replied with error: %2 <p>% 1 ئۈستەل يۈزى خېرىدارى </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 ئۈستەل يۈزى خېرىدارى </p> <p> نەشرى% 1. تېخىمۇ كۆپ ئۇچۇرغا ئېرىشىش ئۈچۈن بۇ يەردىكى <a href = '% 2'> نى بېسىڭ. </p> @@ -5615,7 +5615,7 @@ Server replied with error: %2 <p> <small> مەۋھۇم ھۆججەت قىستۇرمىسىنى ئىشلىتىش:% 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> @@ -6882,7 +6882,7 @@ Server replied with 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> Git تۈزىتىلگەن نۇسخىسىدىن ياسالغان <a href = "% 1">% 2 </a>% 3 ،% 4 Qt% 5 ،% 6 </small> </p> @@ -7044,12 +7044,12 @@ Server replied with error: %2 ماسقەدەملەشنى باشلايدۇ - + Sync status is unknown ماسقەدەملەش ھالىتى ئېنىق ئەمەس - + Waiting to start syncing ماسقەدەملەشنى باشلايدۇ @@ -7068,33 +7068,38 @@ Server replied with error: %2 Sync Success, some files were ignored. ماس قەدەملىك مۇۋەپپەقىيەت ، بەزى ھۆججەتلەرگە پەرۋا قىلىنمىدى. - - - Sync was successful - ماسقەدەملەش مۇۋەپپەقىيەتلىك بولدى - Sync Error ماسقەدەملەش خاتالىقى - - - Sync was successful but some files were ignored - ماسقەدەملەش مۇۋەپپەقىيەتلىك بولدى ، ئەمما بەزى ھۆججەتلەرگە پەرۋا قىلىنمىدى - Setup Error تەڭشەش خاتالىقى - + + Aborting … + Aborting… + + + + Sync was successful + ماسقەدەملەش مۇۋەپپەقىيەتلىك بولدى + + + + Sync was successful but some files were ignored + ماسقەدەملەش مۇۋەپپەقىيەتلىك بولدى ، ئەمما بەزى ھۆججەتلەرگە پەرۋا قىلىنمىدى + + + Error occurred during sync ماس قەدەمدە خاتالىق كۆرۈلدى - + Error occurred during setup تەڭشەش جەريانىدا خاتالىق كۆرۈلدى @@ -7104,12 +7109,7 @@ Server replied with error: %2 ماسقەدەملەشكە تەييارلىق قىلماقتا - - Aborting … - Aborting… - - - + Stopping sync ماسقەدەملەشنى توختىتىش diff --git a/translations/client_uk.ts b/translations/client_uk.ts index 27c17e65cddf5..192ff773af433 100644 --- a/translations/client_uk.ts +++ b/translations/client_uk.ts @@ -1204,34 +1204,34 @@ This action will abort any currently running synchronization. Продовжити - + %1 accounts number of accounts imported %1 облікових записів - + 1 account 1 обліковий запис - + %1 folders number of folders imported %1 каталогів - + 1 folder 1 каталог - + Legacy import Імпорт застарілих записів - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3650,19 +3650,19 @@ Note that using any logging command line options will override this setting.Увага! Налаштування проксі не впливатимуть на облікові записи на localhost. - + Manually specify proxy Власні налаштування proxy - + No proxy Без proxy - - - + + + Use global settings Використовувати глобальні налаштування. @@ -5602,7 +5602,7 @@ Server replied with error: %2 <p>%1 клієнт для робочої істанції</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</p><p>Версія %1. Для докладної інформації, перейдіть <a href='%2'>сюди</a>.</p> @@ -5613,7 +5613,7 @@ Server replied with error: %2 <p><small>Використання плаґіну віртуальних файлів: %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> @@ -6880,7 +6880,7 @@ Server replied with 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>Зібрано з ревізії Git %2</a> на %3, %4 з використанням Qt %5, %6</small></p> @@ -7042,12 +7042,12 @@ Server replied with error: %2 Очікування початку синхронізації - + Sync status is unknown Статус синхронізації невідомий - + Waiting to start syncing Очікуємо на початок синхронізації @@ -7066,33 +7066,38 @@ Server replied with error: %2 Sync Success, some files were ignored. Синхронізацію завершено, деякі файли проігноровано. - - - Sync was successful - Успішно синхронізовано - Sync Error Помилка синхронізації - - - Sync was successful but some files were ignored - Успішно синхронізовано, але окремі файли проігноровано - Setup Error Помилка налаштування - + + Aborting … + Скасування... + + + + Sync was successful + Успішно синхронізовано + + + + Sync was successful but some files were ignored + Успішно синхронізовано, але окремі файли проігноровано + + + Error occurred during sync Помилка під час синхронізації - + Error occurred during setup Помилка під час встановлення @@ -7102,12 +7107,7 @@ Server replied with error: %2 Підготовка до синхронізації - - Aborting … - Скасування... - - - + Stopping sync Зупинка синхронізації diff --git a/translations/client_zh_CN.ts b/translations/client_zh_CN.ts index cde829012c75c..d151e5017ce21 100644 --- a/translations/client_zh_CN.ts +++ b/translations/client_zh_CN.ts @@ -1200,34 +1200,34 @@ This action will abort any currently running synchronization. 继续 - + %1 accounts number of accounts imported %1 个账号 - + 1 account 1 个账号 - + %1 folders number of folders imported %1 个文件夹 - + 1 folder 1 个文件夹 - + Legacy import 旧版导入 - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3635,19 +3635,19 @@ Note that using any logging command line options will override this setting.注意:代理设置对本地主机上的账号无效 - + Manually specify proxy 手动设置指定代理 - + No proxy 无代理 - - - + + + Use global settings 使用全局设置 @@ -5581,7 +5581,7 @@ Server replied with error: %2 <p>%1 桌面客户端</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 桌面客户端</p><p>版本 %1。了解更多咨询请点击<a href='%2'>此处</a>。</p> @@ -5592,7 +5592,7 @@ Server replied with error: %2 <p><small>正使用虚拟文件插件:%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> @@ -6859,7 +6859,7 @@ Server replied with 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>由 Git 版本 <a href="%1">%2</a> 在 %3 构建,%4 使用 Qt %5,%6</small></p> @@ -7021,12 +7021,12 @@ Server replied with error: %2 等待同步启动 - + Sync status is unknown 同步状态未知 - + Waiting to start syncing 正在等待同步开始 @@ -7045,33 +7045,38 @@ Server replied with error: %2 Sync Success, some files were ignored. 同步成功,部分文件被忽略。 - - - Sync was successful - 同步成功 - Sync Error 同步错误 - - - Sync was successful but some files were ignored - 同步成功,但忽略了部分文件 - Setup Error 关闭 - + + Aborting … + 正在中止... + + + + Sync was successful + 同步成功 + + + + Sync was successful but some files were ignored + 同步成功,但忽略了部分文件 + + + Error occurred during sync 同步时发生错误 - + Error occurred during setup 安装时发生错误 @@ -7081,12 +7086,7 @@ Server replied with error: %2 正在准备同步 - - Aborting … - 正在中止... - - - + Stopping sync 正在停止同步 diff --git a/translations/client_zh_HK.ts b/translations/client_zh_HK.ts index 2e0825aa1cbb8..82bc968abf7ff 100644 --- a/translations/client_zh_HK.ts +++ b/translations/client_zh_HK.ts @@ -1207,34 +1207,34 @@ This action will abort any currently running synchronization. 繼續 - + %1 accounts number of accounts imported %1 個帳戶 - + 1 account 1 個帳戶 - + %1 folders number of folders imported %n 個資料夾 - + 1 folder 1 個資料夾 - + Legacy import 舊版匯入 - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3652,19 +3652,19 @@ Note that using any logging command line options will override this setting.注意:代理設定對於近端帳號沒有效果 - + Manually specify proxy 手動指定代理 - + No proxy 沒有代理伺服器 - - - + + + Use global settings 使用全域設定 @@ -5604,7 +5604,7 @@ Server replied with error: %2 <p>%1 桌面版用戶端</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 桌面客戶端</p><p>版本 %1。詳細資訊請點擊 <a href='%2'>此處</a>。</p> @@ -5615,7 +5615,7 @@ Server replied with error: %2 <p><small>使用虛擬文件插件:%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> @@ -6882,7 +6882,7 @@ Server replied with 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>根據Git版本號<a href="%1">%2</a>在 %3, %4建置 使用了Qt %5,%6</small></p> @@ -7044,12 +7044,12 @@ Server replied with error: %2 等待開始同步 - + Sync status is unknown 同步狀態不詳 - + Waiting to start syncing 正在等待同步開始 @@ -7068,33 +7068,38 @@ Server replied with error: %2 Sync Success, some files were ignored. 同步成功,部份檔案被忽略 - - - Sync was successful - 同步成功 - Sync Error 同步失敗 - - - Sync was successful but some files were ignored - 同步成功,部份檔案被忽略 - Setup Error 安裝錯誤 - + + Aborting … + 放棄操作 + + + + Sync was successful + 同步成功 + + + + Sync was successful but some files were ignored + 同步成功,部份檔案被忽略 + + + Error occurred during sync 同步時發生錯誤 - + Error occurred during setup 設定時發生錯誤 @@ -7104,12 +7109,7 @@ Server replied with error: %2 正在準備同步。 - - Aborting … - 放棄操作 - - - + Stopping sync 正在停止同步 diff --git a/translations/client_zh_TW.ts b/translations/client_zh_TW.ts index 52641585ecf25..f775e339505c2 100644 --- a/translations/client_zh_TW.ts +++ b/translations/client_zh_TW.ts @@ -1204,34 +1204,34 @@ This action will abort any currently running synchronization. 繼續 - + %1 accounts number of accounts imported %1 個帳號 - + 1 account 1 個帳號 - + %1 folders number of folders imported %1 個資料夾 - + 1 folder 1 個資料夾 - + Legacy import 舊版匯入 - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -3652,19 +3652,19 @@ Note that using any logging command line options will override this setting.注意:代理伺服器設定對於 localhost 上的帳號沒有作用 - + Manually specify proxy 手動指定代理伺服器 - + No proxy 沒有代理伺服器 - - - + + + Use global settings 使用全域設定 @@ -5604,7 +5604,7 @@ Server replied with error: %2 <p>%1 桌面版客戶端</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 桌面用戶端</p><p>版本 %1。若要了解更多資訊,請點擊<a href='%2'>這裡</a>。</p> @@ -5615,7 +5615,7 @@ Server replied with error: %2 <p><small>正在使用虛擬檔案插入式元件:%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> @@ -6882,7 +6882,7 @@ Server replied with 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>根據 Git 修訂版本 <a href="%1">%2</a> 於 %3 %4 建置,使用 Qt %5、%6</small></p> @@ -7044,12 +7044,12 @@ Server replied with error: %2 等待開始同步 - + Sync status is unknown 同步狀態位置 - + Waiting to start syncing 正在等待開始同步 @@ -7068,33 +7068,38 @@ Server replied with error: %2 Sync Success, some files were ignored. 同步成功,忽略部份檔案。 - - - Sync was successful - 同步成功 - Sync Error 同步錯誤 - - - Sync was successful but some files were ignored - 同步成功,但忽略了部份檔案 - Setup Error 設置錯誤 - + + Aborting … + 正在中止… + + + + Sync was successful + 同步成功 + + + + Sync was successful but some files were ignored + 同步成功,但忽略了部份檔案 + + + Error occurred during sync 同步時發生錯誤 - + Error occurred during setup 設定時發生錯誤 @@ -7104,12 +7109,7 @@ Server replied with error: %2 正在準備同步 - - Aborting … - 正在中止… - - - + Stopping sync 正在停止同步 From b4633cfb3e03f633d7567dd488c589bf944a8fc1 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 20 Nov 2024 12:12:21 +0800 Subject: [PATCH 047/244] Ensure paths are passed properly escaped into codesign command in mac-crafter Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- admin/osx/mac-crafter/Sources/Utils/Codesign.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift index c72ca0d66ae2b..4df74d68f308a 100644 --- a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift +++ b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift @@ -36,7 +36,7 @@ func codesign( options: String = "--timestamp --force --preserve-metadata=entitlements --verbose=4 --options runtime --deep" ) throws { print("Code-signing \(path)...") - let command = "codesign -s \"\(identity)\" \(options) \(path)" + let command = "codesign -s \"\(identity)\" \(options) \"\(path)\"" guard shell(command) == 0 else { throw CodeSigningError.failedToCodeSign("Failed to code-sign \(path).") } From b329839376c087b361895a7e333430d41636e8c9 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 20 Nov 2024 14:53:27 +0800 Subject: [PATCH 048/244] Add missing brace in FileProviderXPC's fileProviderExtReachable Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/macOS/fileproviderxpc_mac.mm | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/macOS/fileproviderxpc_mac.mm b/src/gui/macOS/fileproviderxpc_mac.mm index 96877d36813b8..965f826c5f8eb 100644 --- a/src/gui/macOS/fileproviderxpc_mac.mm +++ b/src/gui/macOS/fileproviderxpc_mac.mm @@ -146,6 +146,7 @@ } bool FileProviderXPC::fileProviderExtReachable(const QString &extensionAccountId, const bool retry, const bool reconfigureOnFail) +{ const auto lastUnreachableTime = _unreachableAccountExtensions.value(extensionAccountId); if (!retry && !reconfigureOnFail From 0fca9ee3ec0efe4cd2debeb48a896b84cd697ca5 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 20 Nov 2024 16:10:27 +0800 Subject: [PATCH 049/244] Also escape codesign call with saving entitlements Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- admin/osx/mac-crafter/Sources/Utils/Codesign.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift index 4df74d68f308a..62ec0e2d81f69 100644 --- a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift +++ b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift @@ -57,7 +57,7 @@ func recursivelyCodesign(path: String, identity: String) throws { } func saveCodesignEntitlements(target: String, path: String) throws { - let command = "codesign -d --entitlements \(path) --xml \(target)" + let command = "codesign -d --entitlements \"\(path)\" --xml \"\(target)\"" guard shell(command) == 0 else { throw CodeSigningError.failedToCodeSign("Failed to save entitlements for \(target).") } From a6856694417be132f7243312e1d1b6883f1aab36 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 20 Nov 2024 16:33:36 +0800 Subject: [PATCH 050/244] Also add options to recursive codesign function Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- admin/osx/mac-crafter/Sources/Utils/Codesign.swift | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift index 62ec0e2d81f69..47614874c2b64 100644 --- a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift +++ b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift @@ -14,6 +14,8 @@ import Foundation +fileprivate let defaultCodesignOptions = "--timestamp --force --preserve-metadata=entitlements --verbose=4 --options runtime --deep" + enum CodeSigningError: Error { case failedToCodeSign(String) } @@ -30,11 +32,7 @@ func isAppExtension(_ path: String) -> Bool { path.hasSuffix(".appex") } -func codesign( - identity: String, - path: String, - options: String = "--timestamp --force --preserve-metadata=entitlements --verbose=4 --options runtime --deep" -) throws { +func codesign(identity: String, path: String, options: String = defaultCodesignOptions) throws { print("Code-signing \(path)...") let command = "codesign -s \"\(identity)\" \(options) \"\(path)\"" guard shell(command) == 0 else { @@ -42,7 +40,11 @@ func codesign( } } -func recursivelyCodesign(path: String, identity: String) throws { +func recursivelyCodesign( + path: String, + identity: String, + options: String = defaultCodesignOptions +) throws { let fm = FileManager.default guard let pathEnumerator = fm.enumerator(atPath: path) else { throw AppBundleSigningError.couldNotEnumerate( From 94243de0342ae027bc8bd78be5c6805529a92d17 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 20 Nov 2024 16:34:09 +0800 Subject: [PATCH 051/244] Use recursive codesign instead of broken wildcard path for sparkle Autoupdate app Broken when we starting escaping paths in codesign arguments Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- admin/osx/mac-crafter/Sources/Utils/Codesign.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift index 47614874c2b64..902b858670609 100644 --- a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift +++ b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift @@ -94,9 +94,9 @@ func codesignClientAppBundle( print("Code-signing Sparkle autoupdater app (without entitlements)...") let sparkleFrameworkPath = "\(frameworksPath)/Sparkle.framework" - try codesign(identity: codeSignIdentity, - path: "\(sparkleFrameworkPath)/Resources/Autoupdate.app/Contents/MacOS/*", - options: "--timestamp --force --verbose=4 --options runtime --deep") + try recursivelyCodesign(path: "\(sparkleFrameworkPath)/Resources/Autoupdate.app", + identity: codeSignIdentity, + options: "--timestamp --force --verbose=4 --options runtime --deep") print("Re-codesigning Sparkle library...") try codesign(identity: codeSignIdentity, path: "\(sparkleFrameworkPath)/Sparkle") From 6a1eda093a21a999a2ff82fd23ea3d571220b784 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 20 Nov 2024 18:03:33 +0800 Subject: [PATCH 052/244] Fix codesign path for app bundle main binaries Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- admin/osx/mac-crafter/Sources/Utils/Codesign.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift index 902b858670609..46a1cf5c4295a 100644 --- a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift +++ b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift @@ -125,5 +125,5 @@ func codesignClientAppBundle( // Now we do the final codesign bit print("Code-signing Nextcloud Desktop Client binaries...") - try codesign(identity: codeSignIdentity, path: "\(clientContentsDir)/MacOS/*") + try recursivelyCodesign(path: "\(clientContentsDir)/MacOS/", identity: codeSignIdentity) } From b8b49ed7eea01f2f9e95d9faca67282e82dddc60 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 20 Nov 2024 18:15:32 +0800 Subject: [PATCH 053/244] Escape code sign entitlement paths in mac crafter Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- admin/osx/mac-crafter/Sources/Utils/Codesign.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift index 46a1cf5c4295a..dab7299bdf5af 100644 --- a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift +++ b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift @@ -83,7 +83,7 @@ func codesignClientAppBundle( "\(frameworksPath)/QtWebEngineCore.framework/Versions/A/Helpers/QtWebEngineProcess.app" try codesign(identity: codeSignIdentity, path: qtWebEngineProcessPath, - options: "--timestamp --force --verbose=4 --options runtime --deep --entitlements \(qtWebEngineProcessPath)/Contents/Resources/QtWebEngineProcess.entitlements") + options: "--timestamp --force --verbose=4 --options runtime --deep --entitlements \"\(qtWebEngineProcessPath)/Contents/Resources/QtWebEngineProcess.entitlements\"") print("Code-signing QtWebEngine...") try codesign(identity: codeSignIdentity, path: "\(frameworksPath)/QtWebEngineCore.framework") @@ -120,7 +120,7 @@ func codesignClientAppBundle( encoding: .utf8) try codesign(identity: codeSignIdentity, path: appExtensionPath, - options: "--timestamp --force --verbose=4 --options runtime --deep --entitlements \(tmpEntitlementXmlPath)") + options: "--timestamp --force --verbose=4 --options runtime --deep --entitlements \"\(tmpEntitlementXmlPath)\"") } // Now we do the final codesign bit From ad08ab16f134a128a6fc3e34297f3a8f7c8d53f2 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 29 Oct 2024 12:04:35 +0800 Subject: [PATCH 054/244] Add live photo properties to syncfileitem Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/libsync/syncfileitem.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libsync/syncfileitem.h b/src/libsync/syncfileitem.h index a4619535561b1..d90348af4ebda 100644 --- a/src/libsync/syncfileitem.h +++ b/src/libsync/syncfileitem.h @@ -340,6 +340,9 @@ class OWNCLOUDSYNC_EXPORT SyncFileItem bool _isAnyInvalidCharChild = false; bool _isAnyCaseClashChild = false; + bool _isLivePhoto = false; + QString _livePhotoFile; + QString _discoveryResult; }; From 06efda738556bc2727442a01563529102c7cecb5 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 29 Oct 2024 12:04:49 +0800 Subject: [PATCH 055/244] Add live photo properties to remoteinfo struct Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/libsync/discoveryphase.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libsync/discoveryphase.h b/src/libsync/discoveryphase.h index ff38d739118ae..2e801de34cd53 100644 --- a/src/libsync/discoveryphase.h +++ b/src/libsync/discoveryphase.h @@ -87,6 +87,9 @@ struct RemoteInfo qint64 lockTime = 0; qint64 lockTimeout = 0; QString lockToken; + + bool isLivePhoto = false; + QString livePhotoFile; }; struct LocalInfo From d60802c5a087f9eb5b67b42cd947ab189ad5b6ec Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 29 Oct 2024 12:05:07 +0800 Subject: [PATCH 056/244] Add live photo properties to sync journal file record Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/common/syncjournalfilerecord.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/common/syncjournalfilerecord.h b/src/common/syncjournalfilerecord.h index c7321c15f5600..4d299e3a9ff8d 100644 --- a/src/common/syncjournalfilerecord.h +++ b/src/common/syncjournalfilerecord.h @@ -88,6 +88,8 @@ class OCSYNC_EXPORT SyncJournalFileRecord bool _isShared = false; qint64 _lastShareStateFetchedTimestamp = 0; bool _sharedByMe = false; + bool _isLivePhoto = false; + QString _livePhotoFile; }; QDebug& operator<<(QDebug &stream, const SyncJournalFileRecord::EncryptionStatus status); From 9e040b7d573e61d630077d555c660e104d1aab97 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 29 Oct 2024 12:05:30 +0800 Subject: [PATCH 057/244] Handle live photo in syncjournaldb queries and inserts Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/common/syncjournaldb.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/common/syncjournaldb.cpp b/src/common/syncjournaldb.cpp index 5ed80a643f40c..fffd846b547a1 100644 --- a/src/common/syncjournaldb.cpp +++ b/src/common/syncjournaldb.cpp @@ -49,7 +49,7 @@ Q_LOGGING_CATEGORY(lcDb, "nextcloud.sync.database", QtInfoMsg) #define GET_FILE_RECORD_QUERY \ "SELECT path, inode, modtime, type, md5, fileid, remotePerm, filesize," \ " ignoredChildrenRemote, contentchecksumtype.name || ':' || contentChecksum, e2eMangledName, isE2eEncrypted, " \ - " lock, lockOwnerDisplayName, lockOwnerId, lockType, lockOwnerEditor, lockTime, lockTimeout, lockToken, isShared, lastShareStateFetchedTimestmap, sharedByMe" \ + " lock, lockOwnerDisplayName, lockOwnerId, lockType, lockOwnerEditor, lockTime, lockTimeout, lockToken, isShared, lastShareStateFetchedTimestmap, sharedByMe, isLivePhoto, livePhotoFile" \ " FROM metadata" \ " LEFT JOIN checksumtype as contentchecksumtype ON metadata.contentChecksumTypeId == contentchecksumtype.id" @@ -78,6 +78,8 @@ static void fillFileRecordFromGetQuery(SyncJournalFileRecord &rec, SqlQuery &que rec._isShared = query.intValue(20) > 0; rec._lastShareStateFetchedTimestamp = query.int64Value(21); rec._sharedByMe = query.intValue(22) > 0; + rec._isLivePhoto = query.intValue(23) > 0; + rec._livePhotoFile = query.stringValue(24); } static QByteArray defaultJournalMode(const QString &dbPath) @@ -837,6 +839,9 @@ bool SyncJournalDb::updateMetadataTableStructure() } commitInternal(QStringLiteral("update database structure: add basePath index")); + addColumn(QStringLiteral("isLivePhoto"), QStringLiteral("INTEGER")); + addColumn(QStringLiteral("livePhotoFile"), QStringLiteral("TEXT")); + return re; } @@ -963,7 +968,9 @@ Result SyncJournalDb::setFileRecord(const SyncJournalFileRecord & << "lock editor:" << record._lockstate._lockEditorApp << "sharedByMe:" << record._sharedByMe << "isShared:" << record._isShared - << "lastShareStateFetchedTimestamp:" << record._lastShareStateFetchedTimestamp; + << "lastShareStateFetchedTimestamp:" << record._lastShareStateFetchedTimestamp + << "isLivePhoto" << record._isLivePhoto + << "livePhotoFile" << record._livePhotoFile; const qint64 phash = getPHash(record._path); if (!checkConnect()) { @@ -989,8 +996,8 @@ Result SyncJournalDb::setFileRecord(const SyncJournalFileRecord & const auto query = _queryManager.get(PreparedSqlQueryManager::SetFileRecordQuery, QByteArrayLiteral("INSERT OR REPLACE INTO metadata " "(phash, pathlen, path, inode, uid, gid, mode, modtime, type, md5, fileid, remotePerm, filesize, ignoredChildrenRemote, " "contentChecksum, contentChecksumTypeId, e2eMangledName, isE2eEncrypted, lock, lockType, lockOwnerDisplayName, lockOwnerId, " - "lockOwnerEditor, lockTime, lockTimeout, lockToken, isShared, lastShareStateFetchedTimestmap, sharedByMe) " - "VALUES (?1 , ?2, ?3 , ?4 , ?5 , ?6 , ?7, ?8 , ?9 , ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, ?18, ?19, ?20, ?21, ?22, ?23, ?24, ?25, ?26, ?27, ?28, ?29);"), + "lockOwnerEditor, lockTime, lockTimeout, lockToken, isShared, lastShareStateFetchedTimestmap, sharedByMe, isLivePhoto, livePhotoFile) " + "VALUES (?1 , ?2, ?3 , ?4 , ?5 , ?6 , ?7, ?8 , ?9 , ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, ?18, ?19, ?20, ?21, ?22, ?23, ?24, ?25, ?26, ?27, ?28, ?29, ?30, ?31);"), _db); if (!query) { qCDebug(lcDb) << "database error:" << query->error(); @@ -1026,6 +1033,8 @@ Result SyncJournalDb::setFileRecord(const SyncJournalFileRecord & query->bindValue(27, record._isShared); query->bindValue(28, record._lastShareStateFetchedTimestamp); query->bindValue(29, record._sharedByMe); + query->bindValue(30, record._isLivePhoto); + query->bindValue(31, record._livePhotoFile); if (!query->exec()) { qCDebug(lcDb) << "database error:" << query->error(); From 54c3bf8acee22fec16308ea7571bdf25b5657130 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 29 Oct 2024 12:05:59 +0800 Subject: [PATCH 058/244] Fetch and record live photo properties during remote discovery single directory job Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/libsync/discoveryphase.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/libsync/discoveryphase.cpp b/src/libsync/discoveryphase.cpp index 4cb604b9aa7da..3ca34e94f50fb 100644 --- a/src/libsync/discoveryphase.cpp +++ b/src/libsync/discoveryphase.cpp @@ -400,7 +400,8 @@ void DiscoverySingleDirectoryJob::start() << "http://owncloud.org/ns:dDC" << "http://owncloud.org/ns:permissions" << "http://owncloud.org/ns:checksums" - << "http://nextcloud.org/ns:is-encrypted"; + << "http://nextcloud.org/ns:is-encrypted" + << "http://nextcloud.org/ns:metadata-files-live-photo"; if (_isRootPath) props << "http://owncloud.org/ns:data-fingerprint"; @@ -550,6 +551,10 @@ static void propertyMapToRemoteInfo(const QMap &map, RemotePer if (property == "lock-token") { result.lockToken = value; } + if (property == "metadata-files-live-photo") { + result.livePhotoFile = value; + result.isLivePhoto = true; + } } if (result.isDirectory && map.contains("size")) { From 2f78245f2bf9519249444c029c47f663abd69497 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 29 Oct 2024 12:06:27 +0800 Subject: [PATCH 059/244] Apply live photo server entry properties to syncfileitem Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/libsync/discovery.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp index ee7f7ae3a847a..00a0a44b225f0 100644 --- a/src/libsync/discovery.cpp +++ b/src/libsync/discovery.cpp @@ -718,6 +718,9 @@ void ProcessDirectoryJob::processFileAnalyzeRemoteInfo(const SyncFileItemPtr &it item->_lockTimeout = serverEntry.lockTimeout; item->_lockToken = serverEntry.lockToken; + item->_isLivePhoto = serverEntry.isLivePhoto; + item->_livePhotoFile = serverEntry.livePhotoFile; + // Check for missing server data { QStringList missingData; From e89d7be0bc33afd88e20132bbb7f8ae73248529b Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 29 Oct 2024 12:06:57 +0800 Subject: [PATCH 060/244] Set live photo properties on syncfileitem when creating one based on other types of items Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/libsync/syncfileitem.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/libsync/syncfileitem.cpp b/src/libsync/syncfileitem.cpp index 8b195d647ca76..2746b192cd4bf 100644 --- a/src/libsync/syncfileitem.cpp +++ b/src/libsync/syncfileitem.cpp @@ -126,6 +126,8 @@ SyncJournalFileRecord SyncFileItem::toSyncJournalFileRecordWithInode(const QStri rec._lockstate._lockTime = _lockTime; rec._lockstate._lockTimeout = _lockTimeout; rec._lockstate._lockToken = _lockToken; + rec._isLivePhoto = _isLivePhoto; + rec._livePhotoFile = _livePhotoFile; // Update the inode if possible rec._inode = _inode; @@ -167,6 +169,8 @@ SyncFileItemPtr SyncFileItem::fromSyncJournalFileRecord(const SyncJournalFileRec item->_sharedByMe = rec._sharedByMe; item->_isShared = rec._isShared; item->_lastShareStateFetchedTimestamp = rec._lastShareStateFetchedTimestamp; + item->_isLivePhoto = rec._isLivePhoto; + item->_livePhotoFile = rec._livePhotoFile; return item; } @@ -237,6 +241,11 @@ SyncFileItemPtr SyncFileItem::fromProperties(const QString &filePath, const QMap item->_checksumHeader = findBestChecksum(properties.value("checksums").toUtf8()); } + if (properties.contains(QStringLiteral("metadata-files-live-photo"))) { + item->_isLivePhoto = true; + item->_livePhotoFile = properties.value(QStringLiteral("metadata-files-live-photo")); + } + // direction and instruction are decided later item->_direction = SyncFileItem::None; item->_instruction = CSYNC_INSTRUCTION_NONE; From 7ad089bce7d4934f08412f9219cdf10a2d1c2811 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 30 Oct 2024 11:03:02 +0800 Subject: [PATCH 061/244] If the user tries to delete the movie component of a live photo, redownload this Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/libsync/discovery.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp index 00a0a44b225f0..b4e4b0434966d 100644 --- a/src/libsync/discovery.cpp +++ b/src/libsync/discovery.cpp @@ -1122,6 +1122,12 @@ void ProcessDirectoryJob::processFileAnalyzeLocalInfo( qCWarning(lcDisco) << "Failed to delete a file record from the local DB" << path._original; } return; + } else if (serverEntry.isLivePhoto && QMimeDatabase().mimeTypeForFile(item->_file).inherits(QStringLiteral("video/quicktime"))) { + // This is a live photo's video file; the server won't allow deletion of this file + // so we need to *not* propagate the .mov deletion to the server and redownload the file + qCInfo(lcDisco) << "Live photo video file deletion detected, redownloading" << item->_file; + item->_direction = SyncFileItem::Down; + item->_instruction = CSYNC_INSTRUCTION_SYNC; } else if (!serverModified) { // Removed locally: also remove on the server. if (!dbEntry._serverHasIgnoredFiles) { From 4e8ec77c0815a2fa397807830c7abcede6b7dc23 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 30 Oct 2024 12:16:28 +0800 Subject: [PATCH 062/244] Add isLivePhoto property to FileInfo in syncenginetestutils Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- test/syncenginetestutils.cpp | 1 + test/syncenginetestutils.h | 1 + 2 files changed, 2 insertions(+) diff --git a/test/syncenginetestutils.cpp b/test/syncenginetestutils.cpp index 7c8d4eabcddd3..263958832b3b2 100644 --- a/test/syncenginetestutils.cpp +++ b/test/syncenginetestutils.cpp @@ -411,6 +411,7 @@ FakePropfindReply::FakePropfindReply(FileInfo &remoteRootFileInfo, QNetworkAcces xml.writeTextElement(ncUri, QStringLiteral("lock-time"), QString::number(fileInfo.lockTime)); xml.writeTextElement(ncUri, QStringLiteral("lock-timeout"), QString::number(fileInfo.lockTimeout)); xml.writeTextElement(ncUri, QStringLiteral("is-encrypted"), fileInfo.isEncrypted ? QString::number(1) : QString::number(0)); + xml.writeTextElement(ncUri, QStringLiteral("metadata-files-live-photo"), fileInfo.isLivePhoto ? QString::number(1) : QString::number(0)); buffer.write(fileInfo.extraDavProperties); xml.writeEndElement(); // prop xml.writeTextElement(davUri, QStringLiteral("status"), QStringLiteral("HTTP/1.1 200 OK")); diff --git a/test/syncenginetestutils.h b/test/syncenginetestutils.h index 49cdac710338b..9dd2f6362a1b2 100644 --- a/test/syncenginetestutils.h +++ b/test/syncenginetestutils.h @@ -188,6 +188,7 @@ class FileInfo : public FileModifier quint64 lockTime = 0; quint64 lockTimeout = 0; bool isEncrypted = false; + bool isLivePhoto = false; // Sorted by name to be able to compare trees QMap children; From 32bb59bc5b237b6a4acd1fe99aa8d481991d6455 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 30 Oct 2024 12:16:44 +0800 Subject: [PATCH 063/244] Add setIsLivePhoto method to FileInfo Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- test/syncenginetestutils.cpp | 7 +++++++ test/syncenginetestutils.h | 2 ++ 2 files changed, 9 insertions(+) diff --git a/test/syncenginetestutils.cpp b/test/syncenginetestutils.cpp index 263958832b3b2..7671518be24d6 100644 --- a/test/syncenginetestutils.cpp +++ b/test/syncenginetestutils.cpp @@ -223,6 +223,13 @@ void FileInfo::setModTimeKeepEtag(const QString &relativePath, const QDateTime & file->lastModified = modTime; } +void FileInfo::setIsLivePhoto(const QString &relativePath, const bool isLivePhoto) +{ + const auto file = find(relativePath); + Q_ASSERT(file); + file->isLivePhoto = isLivePhoto; +} + void FileInfo::modifyLockState(const QString &relativePath, LockState lockState, int lockType, const QString &lockOwner, const QString &lockOwnerId, const QString &lockEditorId, quint64 lockTime, quint64 lockTimeout) { FileInfo *file = findInvalidatingEtags(relativePath); diff --git a/test/syncenginetestutils.h b/test/syncenginetestutils.h index 9dd2f6362a1b2..dca0eb02b92a4 100644 --- a/test/syncenginetestutils.h +++ b/test/syncenginetestutils.h @@ -142,6 +142,8 @@ class FileInfo : public FileModifier void setModTimeKeepEtag(const QString &relativePath, const QDateTime &modTime); + void setIsLivePhoto(const QString &relativePath, bool isLivePhoto); + void modifyLockState(const QString &relativePath, LockState lockState, int lockType, const QString &lockOwner, const QString &lockOwnerId, const QString &lockEditorId, quint64 lockTime, quint64 lockTimeout) override; void setE2EE(const QString &relativepath, const bool enabled) override; From b7a0234679f474eac35435da32d945705f598970 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 30 Oct 2024 12:17:27 +0800 Subject: [PATCH 064/244] Add test for correct handling of live photo mov deletion Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- test/testlocaldiscovery.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/test/testlocaldiscovery.cpp b/test/testlocaldiscovery.cpp index 687b46d79572d..bb6bcdc01f374 100644 --- a/test/testlocaldiscovery.cpp +++ b/test/testlocaldiscovery.cpp @@ -333,6 +333,41 @@ private slots: QVERIFY(!fakeFolder.currentRemoteState().find("C/filename.ext")); } + void testRedownloadDeletedLivePhotoMov() + { + FakeFolder fakeFolder{FileInfo{}}; + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + const auto livePhotoImg = QStringLiteral("IMG_0001.heic"); + const auto livePhotoMov = QStringLiteral("IMG_0001.mov"); + fakeFolder.localModifier().insert(livePhotoImg); + fakeFolder.localModifier().insert(livePhotoMov); + + ItemCompletedSpy completeSpy(fakeFolder); + QVERIFY(fakeFolder.syncOnce()); + + QCOMPARE(completeSpy.findItem(livePhotoImg)->_status, SyncFileItem::Status::Success); + QCOMPARE(completeSpy.findItem(livePhotoMov)->_status, SyncFileItem::Status::Success); + + fakeFolder.remoteModifier().setIsLivePhoto(livePhotoImg, true); + fakeFolder.remoteModifier().setIsLivePhoto(livePhotoMov, true); + QVERIFY(fakeFolder.syncOnce()); + + SyncJournalFileRecord imgRecord; + QVERIFY(fakeFolder.syncJournal().getFileRecord(livePhotoImg, &imgRecord)); + QVERIFY(imgRecord._isLivePhoto); + + SyncJournalFileRecord movRecord; + QVERIFY(fakeFolder.syncJournal().getFileRecord(livePhotoMov, &movRecord)); + QVERIFY(movRecord._isLivePhoto); + + completeSpy.clear(); + fakeFolder.localModifier().remove(livePhotoMov); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(completeSpy.findItem(livePhotoMov)->_status, SyncFileItem::Status::Success); + QCOMPARE(completeSpy.findItem(livePhotoMov)->_instruction, CSYNC_INSTRUCTION_SYNC); + QCOMPARE(completeSpy.findItem(livePhotoMov)->_direction, SyncFileItem::Direction::Down); + } + void testCreateFileWithTrailingSpaces_localAndRemoteTrimmedDoNotExist_renameAndUploadFile() { FakeFolder fakeFolder{FileInfo{}}; From a24768e2411ffd5be34e96154dcbed5a851f2e05 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 30 Oct 2024 16:01:28 +0800 Subject: [PATCH 065/244] Check for live photo against db entry instead of server entry Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/libsync/discovery.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp index b4e4b0434966d..05bdf1554bc0b 100644 --- a/src/libsync/discovery.cpp +++ b/src/libsync/discovery.cpp @@ -547,6 +547,7 @@ void ProcessDirectoryJob::processFile(PathTuple path, << " | e2eeMangledName: " << dbEntry.e2eMangledName() << "/" << serverEntry.e2eMangledName << " | file lock: " << localFileIsLocked << "//" << serverFileIsLocked << " | file lock type: " << localFileLockType << "//" << serverFileLockType + << " | live photo: " << dbEntry._isLivePhoto << "//" << serverEntry.isLivePhoto << " | metadata missing: /" << localEntry.isMetadataMissing << '/'; qCInfo(lcDisco).nospace() << processingLog; @@ -1122,7 +1123,7 @@ void ProcessDirectoryJob::processFileAnalyzeLocalInfo( qCWarning(lcDisco) << "Failed to delete a file record from the local DB" << path._original; } return; - } else if (serverEntry.isLivePhoto && QMimeDatabase().mimeTypeForFile(item->_file).inherits(QStringLiteral("video/quicktime"))) { + } else if (dbEntry._isLivePhoto && QMimeDatabase().mimeTypeForFile(item->_file).inherits(QStringLiteral("video/quicktime"))) { // This is a live photo's video file; the server won't allow deletion of this file // so we need to *not* propagate the .mov deletion to the server and redownload the file qCInfo(lcDisco) << "Live photo video file deletion detected, redownloading" << item->_file; From ffda6890191ead9577b90c0cbcf2d1f685c11f2b Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 20 Nov 2024 15:19:31 +0800 Subject: [PATCH 066/244] Handle NeedToSignTermsOfService account state in file provider components Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/macOS/fileproviderdomainmanager_mac.mm | 1 + src/gui/macOS/fileprovidersocketcontroller.cpp | 1 + src/gui/macOS/fileproviderxpc_mac.mm | 1 + 3 files changed, 3 insertions(+) diff --git a/src/gui/macOS/fileproviderdomainmanager_mac.mm b/src/gui/macOS/fileproviderdomainmanager_mac.mm index e433717047844..38a51c959584b 100644 --- a/src/gui/macOS/fileproviderdomainmanager_mac.mm +++ b/src/gui/macOS/fileproviderdomainmanager_mac.mm @@ -581,6 +581,7 @@ QStringList configuredDomainIds() const break; case AccountState::SignedOut: case AccountState::AskingCredentials: + case AccountState::NeedToSignTermsOfService: { // Disconnect File Provider domain while unauthenticated const auto trReason = tr("This account is not authenticated. Please check your account state in the %1 application.").arg(APPLICATION_NAME); diff --git a/src/gui/macOS/fileprovidersocketcontroller.cpp b/src/gui/macOS/fileprovidersocketcontroller.cpp index 44fca50f27f38..b8d09abf8313b 100644 --- a/src/gui/macOS/fileprovidersocketcontroller.cpp +++ b/src/gui/macOS/fileprovidersocketcontroller.cpp @@ -174,6 +174,7 @@ void FileProviderSocketController::slotAccountStateChanged(const AccountState::S case AccountState::SignedOut: case AccountState::AskingCredentials: case AccountState::RedirectDetected: + case AccountState::NeedToSignTermsOfService: // Notify File Provider that it should show the not authenticated message sendNotAuthenticated(); break; diff --git a/src/gui/macOS/fileproviderxpc_mac.mm b/src/gui/macOS/fileproviderxpc_mac.mm index 965f826c5f8eb..cc4b14a2aff08 100644 --- a/src/gui/macOS/fileproviderxpc_mac.mm +++ b/src/gui/macOS/fileproviderxpc_mac.mm @@ -101,6 +101,7 @@ case AccountState::SignedOut: case AccountState::AskingCredentials: case AccountState::RedirectDetected: + case AccountState::NeedToSignTermsOfService: // Notify File Provider that it should show the not authenticated message unauthenticateExtension(extensionAccountId); break; From e4faa39b3eeff0f869039dff6d8d1e3280838b9d Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 20 Nov 2024 15:19:45 +0800 Subject: [PATCH 067/244] Handle redirect detected for account state in domain manager Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/macOS/fileproviderdomainmanager_mac.mm | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/macOS/fileproviderdomainmanager_mac.mm b/src/gui/macOS/fileproviderdomainmanager_mac.mm index 38a51c959584b..022b2685ed1cf 100644 --- a/src/gui/macOS/fileproviderdomainmanager_mac.mm +++ b/src/gui/macOS/fileproviderdomainmanager_mac.mm @@ -581,6 +581,7 @@ QStringList configuredDomainIds() const break; case AccountState::SignedOut: case AccountState::AskingCredentials: + case AccountState::RedirectDetected: case AccountState::NeedToSignTermsOfService: { // Disconnect File Provider domain while unauthenticated From 3b14d1ea5ed907c49721cf9b2270ea6a4f9abd73 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Thu, 21 Nov 2024 02:56:27 +0000 Subject: [PATCH 068/244] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: Rainer Walke --- translations/client_ar.ts | 8 ++++---- translations/client_bg.ts | 8 ++++---- translations/client_br.ts | 8 ++++---- translations/client_ca.ts | 8 ++++---- translations/client_cs.ts | 8 ++++---- translations/client_da.ts | 8 ++++---- translations/client_de.ts | 8 ++++---- translations/client_el.ts | 8 ++++---- translations/client_en_GB.ts | 8 ++++---- translations/client_eo.ts | 8 ++++---- translations/client_es.ts | 8 ++++---- translations/client_es_CL.ts | 8 ++++---- translations/client_es_CO.ts | 8 ++++---- translations/client_es_CR.ts | 8 ++++---- translations/client_es_DO.ts | 8 ++++---- translations/client_es_EC.ts | 8 ++++---- translations/client_es_GT.ts | 8 ++++---- translations/client_es_HN.ts | 8 ++++---- translations/client_es_MX.ts | 8 ++++---- translations/client_es_SV.ts | 8 ++++---- translations/client_eu.ts | 8 ++++---- translations/client_fa.ts | 8 ++++---- translations/client_fi.ts | 8 ++++---- translations/client_fr.ts | 8 ++++---- translations/client_ga.ts | 8 ++++---- translations/client_gl.ts | 8 ++++---- translations/client_he.ts | 8 ++++---- translations/client_hr.ts | 8 ++++---- translations/client_hu.ts | 8 ++++---- translations/client_is.ts | 8 ++++---- translations/client_it.ts | 8 ++++---- translations/client_ja.ts | 8 ++++---- translations/client_ko.ts | 8 ++++---- translations/client_lt_LT.ts | 8 ++++---- translations/client_lv.ts | 8 ++++---- translations/client_mk.ts | 8 ++++---- translations/client_nb_NO.ts | 8 ++++---- translations/client_nl.ts | 8 ++++---- translations/client_oc.ts | 8 ++++---- translations/client_pl.ts | 14 +++++++------- translations/client_pt.ts | 8 ++++---- translations/client_pt_BR.ts | 8 ++++---- translations/client_ro.ts | 8 ++++---- translations/client_ru.ts | 8 ++++---- translations/client_sc.ts | 16 ++++++++-------- translations/client_sk.ts | 8 ++++---- translations/client_sl.ts | 8 ++++---- translations/client_sr.ts | 8 ++++---- translations/client_sv.ts | 8 ++++---- translations/client_th.ts | 8 ++++---- translations/client_tr.ts | 8 ++++---- translations/client_ug.ts | 8 ++++---- translations/client_uk.ts | 8 ++++---- translations/client_zh_CN.ts | 8 ++++---- translations/client_zh_HK.ts | 8 ++++---- translations/client_zh_TW.ts | 8 ++++---- 56 files changed, 231 insertions(+), 231 deletions(-) diff --git a/translations/client_ar.ts b/translations/client_ar.ts index a4f3a96ffc149..d40c315a58e17 100644 --- a/translations/client_ar.ts +++ b/translations/client_ar.ts @@ -1692,13 +1692,13 @@ This action will abort any currently running synchronization. خطأ في الخادم: رد PROPFIND ليس على نسق XML! - - + + Encrypted metadata setup error! خطأ في إعدادات البيانات الوصفية المشفرة! - + Encrypted metadata setup error: initial signature from server is empty. خطأ في إعداد البيانات الوصفية المشفرة: التوقيع الأوّلي من الخادم فارغ. @@ -4316,7 +4316,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss تعذّرت المزامنة لأن وقت آخر تعديل للملف غير صالح - + Could not upload file, because it is open in "%1". يتعذّر فتح الملف لأنه مفتوح سلفاً في "%1". diff --git a/translations/client_bg.ts b/translations/client_bg.ts index 562c769f46be7..6d9dd42b38159 100644 --- a/translations/client_bg.ts +++ b/translations/client_bg.ts @@ -1692,13 +1692,13 @@ This action will abort any currently running synchronization. Грешка на сървъра: PROPFIND отговорът не е форматиран в XML! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4317,7 +4317,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Не може да се синхронизира поради невалиден час на модификация - + Could not upload file, because it is open in "%1". diff --git a/translations/client_br.ts b/translations/client_br.ts index 6814466844834..97ba4adb445e2 100644 --- a/translations/client_br.ts +++ b/translations/client_br.ts @@ -1685,13 +1685,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4293,7 +4293,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_ca.ts b/translations/client_ca.ts index f19941d15de51..c2164e8863690 100644 --- a/translations/client_ca.ts +++ b/translations/client_ca.ts @@ -1692,13 +1692,13 @@ Aquesta acció anul·larà qualsevol sincronització en execució. Error del servidor: la resposta PROPFIND no té el format XML. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4294,7 +4294,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_cs.ts b/translations/client_cs.ts index e9d70b6bbf628..5833b828d2a5c 100644 --- a/translations/client_cs.ts +++ b/translations/client_cs.ts @@ -1696,13 +1696,13 @@ Současně tato akce zruší jakoukoli právě probíhající synchronizaci.Chyba serveru: odpověď PROPFIND není ve formátu XML! - - + + Encrypted metadata setup error! Chyba nastavení šifrovaných metadat! - + Encrypted metadata setup error: initial signature from server is empty. Chyba nastavení šifrovaných metadat: počáteční signatura ze serveru je prázdná. @@ -4338,7 +4338,7 @@ Toto je nový, experimentální režim. Pokud se jej rozhodnete používat, pros Není možné provést synchronizaci z důvodu neplatného času změny - + Could not upload file, because it is open in "%1". Nepodařilo se nahrát soubor, protože je otevřený v „%1“. diff --git a/translations/client_da.ts b/translations/client_da.ts index cb7437ff45d62..5335c85b7397f 100644 --- a/translations/client_da.ts +++ b/translations/client_da.ts @@ -1694,13 +1694,13 @@ Denne handling vil annullere alle i øjeblikket kørende synkroniseringer. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4303,7 +4303,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_de.ts b/translations/client_de.ts index 2e02e78c0f2b5..05f84036a7485 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -1696,13 +1696,13 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. 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. Fehler bei der Einrichtung der verschlüsselten Metadaten: Die ursprüngliche Signatur vom Server ist leer. @@ -4337,7 +4337,7 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver 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. diff --git a/translations/client_el.ts b/translations/client_el.ts index 46d5461955f50..0c1af3f3b67e5 100644 --- a/translations/client_el.ts +++ b/translations/client_el.ts @@ -1687,13 +1687,13 @@ This action will abort any currently running synchronization. Σφάλμα διακομιστή: Η απάντηση PROPFIND δεν έχει μορφοποίηση XML! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4301,7 +4301,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_en_GB.ts b/translations/client_en_GB.ts index 5cf321c903dc5..6a5cc560641e0 100644 --- a/translations/client_en_GB.ts +++ b/translations/client_en_GB.ts @@ -1697,13 +1697,13 @@ This action will abort any currently running synchronization. Server error: PROPFIND reply is not XML formatted! - - + + Encrypted metadata setup error! Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. Encrypted metadata setup error: initial signature from server is empty. @@ -4340,7 +4340,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Cannot sync due to invalid modification time - + Could not upload file, because it is open in "%1". Could not upload file, because it is open in "%1". diff --git a/translations/client_eo.ts b/translations/client_eo.ts index 22b60a463dc19..067cf79114a99 100644 --- a/translations/client_eo.ts +++ b/translations/client_eo.ts @@ -1684,13 +1684,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4292,7 +4292,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_es.ts b/translations/client_es.ts index c16a7847d8e9f..b7fe3faff1937 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -1698,13 +1698,13 @@ Además, esta acción interrumpirá cualquier sincronización en curso.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. Error de configuración de los metadatos cifrados: la signatura inical del servidor está vacía. @@ -4342,7 +4342,7 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c 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". diff --git a/translations/client_es_CL.ts b/translations/client_es_CL.ts index 5128dc2695829..8de75b841c978 100644 --- a/translations/client_es_CL.ts +++ b/translations/client_es_CL.ts @@ -1684,13 +1684,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4284,7 +4284,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_es_CO.ts b/translations/client_es_CO.ts index 9db85daeceddf..7879b07dd1e28 100644 --- a/translations/client_es_CO.ts +++ b/translations/client_es_CO.ts @@ -1684,13 +1684,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4284,7 +4284,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_es_CR.ts b/translations/client_es_CR.ts index bc40a0dbbb0b8..c3a8212e2a6d6 100644 --- a/translations/client_es_CR.ts +++ b/translations/client_es_CR.ts @@ -1684,13 +1684,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4284,7 +4284,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_es_DO.ts b/translations/client_es_DO.ts index df41fa9327a1a..16518c61c524e 100644 --- a/translations/client_es_DO.ts +++ b/translations/client_es_DO.ts @@ -1684,13 +1684,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4284,7 +4284,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_es_EC.ts b/translations/client_es_EC.ts index 8e936f9a65159..36455c6b74a32 100644 --- a/translations/client_es_EC.ts +++ b/translations/client_es_EC.ts @@ -1692,13 +1692,13 @@ This action will abort any currently running synchronization. Error del servidor: ¡La respuesta de PROPFIND no tiene formato XML! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4317,7 +4317,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss No se puede sincronizar debido a una hora de modificación no válida - + Could not upload file, because it is open in "%1". diff --git a/translations/client_es_GT.ts b/translations/client_es_GT.ts index 3a397621521a8..f32767c901b77 100644 --- a/translations/client_es_GT.ts +++ b/translations/client_es_GT.ts @@ -1684,13 +1684,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4284,7 +4284,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_es_HN.ts b/translations/client_es_HN.ts index 602e607ee84b4..fd6f6d4f31478 100644 --- a/translations/client_es_HN.ts +++ b/translations/client_es_HN.ts @@ -1684,13 +1684,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4284,7 +4284,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_es_MX.ts b/translations/client_es_MX.ts index 58fe0fbf4a2e5..47aabe3f13900 100644 --- a/translations/client_es_MX.ts +++ b/translations/client_es_MX.ts @@ -1697,13 +1697,13 @@ This action will abort any currently running synchronization. Error del servidor: ¡La respuesta 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. @@ -4328,7 +4328,7 @@ Este es un modo nuevo y experimental. Si decide usarlo, por favor informe cualqu No se puede sincronizar debido a una hora de modificación inválida - + Could not upload file, because it is open in "%1". No se puede cargar el archivo, porque está abierto en "%1". diff --git a/translations/client_es_SV.ts b/translations/client_es_SV.ts index bc07d520b7baf..6d0e590239225 100644 --- a/translations/client_es_SV.ts +++ b/translations/client_es_SV.ts @@ -1684,13 +1684,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4284,7 +4284,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_eu.ts b/translations/client_eu.ts index 92e24d27b09f5..405222d8d3ca6 100644 --- a/translations/client_eu.ts +++ b/translations/client_eu.ts @@ -1697,13 +1697,13 @@ Ekintza honek unean uneko sinkronizazioa bertan behera utziko du. Zerbitzariko errorea: PROPFINDaren erantzunak ez du XML formaturik! - - + + Encrypted metadata setup error! Zifratutako metadatuen konfigurazio errorea! - + Encrypted metadata setup error: initial signature from server is empty. Enkriptatutako metadatuen konfigurazio-errorea: zerbitzariaren hasierako sinadura hutsik dago. @@ -4339,7 +4339,7 @@ Modu hau berria eta experimentala da. Erabiltzea erabakitzen baduzu, agertzen di Ezin da sinkronizatu aldaketa-ordu baliogabea delako - + Could not upload file, because it is open in "%1". Ezin izan da fitxategia kargatu, "%1"(e)n irekita dagoelako. diff --git a/translations/client_fa.ts b/translations/client_fa.ts index a8a53022af82b..f32d368210731 100644 --- a/translations/client_fa.ts +++ b/translations/client_fa.ts @@ -1693,13 +1693,13 @@ This action will abort any currently running synchronization. Server error: PROPFIND reply is not XML formatted! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4317,7 +4317,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Cannot sync due to invalid modification time - + Could not upload file, because it is open in "%1". diff --git a/translations/client_fi.ts b/translations/client_fi.ts index 6a4097118f506..8c0cc9e168358 100644 --- a/translations/client_fi.ts +++ b/translations/client_fi.ts @@ -1690,13 +1690,13 @@ Tämä toiminto peruu kaikki tämänhetkiset synkronoinnit. Palvelinvirhe: PROPFIND-vastaus ei ole XML-formaatissa! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4295,7 +4295,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Ei voida synkronoida virheellisen muokkausajan vuoksi - + Could not upload file, because it is open in "%1". diff --git a/translations/client_fr.ts b/translations/client_fr.ts index 79925ded16c65..e0f73658fa94a 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -1695,13 +1695,13 @@ Vous prenez vos propres risques. Erreur du serveur : La réponse PROPFIND n'est pas au format XML ! - - + + Encrypted metadata setup error! Erreur lors de la configuration des métadonnées chiffrées ! - + Encrypted metadata setup error: initial signature from server is empty. Erreur de configuration des métadonnées chiffrées: la signature initiale du serveur est vide. @@ -4338,7 +4338,7 @@ Il s'agit d'un nouveau mode expérimental. Si vous décidez de l' 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 ». diff --git a/translations/client_ga.ts b/translations/client_ga.ts index ad04fad20e65c..2da00dacc7564 100644 --- a/translations/client_ga.ts +++ b/translations/client_ga.ts @@ -1697,13 +1697,13 @@ Cuirfidh an gníomh seo deireadh le haon sioncrónú atá ar siúl faoi láthair Earráid fhreastalaí: Níl an freagra PROPFIND formáidithe XML! - - + + Encrypted metadata setup error! Earráid socraithe meiteashonraí criptithe! - + Encrypted metadata setup error: initial signature from server is empty. Earráid socraithe meiteashonraí criptithe: tá síniú tosaigh an fhreastalaí folamh. @@ -4340,7 +4340,7 @@ Is modh turgnamhach nua é seo. Má shocraíonn tú é a úsáid, cuir in iúl l Ní féidir sioncronú a dhéanamh mar gheall ar am modhnuithe neamhbhailí - + Could not upload file, because it is open in "%1". Níorbh fhéidir an comhad a uaslódáil toisc go bhfuil sé oscailte i "% 1". diff --git a/translations/client_gl.ts b/translations/client_gl.ts index 5eaf6e5863156..c510e59bf5f7f 100644 --- a/translations/client_gl.ts +++ b/translations/client_gl.ts @@ -1697,13 +1697,13 @@ Esta acción interromperá calquera sincronización que estea a executarse actua Erro do servidor: a resposta PROPFIND non está formatada en XML. - - + + Encrypted metadata setup error! Produciuse un erro na configuración dos metadatos cifrados! - + Encrypted metadata setup error: initial signature from server is empty. Produciuse un erro de configuración dos metadatos cifrados: a sinatura inicial do servidor está baleira. @@ -4339,7 +4339,7 @@ Este é un novo modo experimental. Se decide usalo, agradecémoslle que informe Non é posíbel sincronizar por mor dunha hora de modificación incorrecta - + Could not upload file, because it is open in "%1". Non foi posíbel enviar o ficheiro porque está aberto en «%1». diff --git a/translations/client_he.ts b/translations/client_he.ts index 740c9b8b0bc31..227400bc17bd6 100644 --- a/translations/client_he.ts +++ b/translations/client_he.ts @@ -1687,13 +1687,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4289,7 +4289,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_hr.ts b/translations/client_hr.ts index 6610dd5fc4294..58c84fcb3b4d6 100644 --- a/translations/client_hr.ts +++ b/translations/client_hr.ts @@ -1691,13 +1691,13 @@ Ova će radnja prekinuti bilo koju trenutačnu sinkronizaciju. Pogreška poslužitelja: PROPFIND odgovor nije formatiran u XML-u! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4316,7 +4316,7 @@ Ovo je novi, eksperimentalni način rada. Ako se odlučite aktivirati ga, prijav - + Could not upload file, because it is open in "%1". diff --git a/translations/client_hu.ts b/translations/client_hu.ts index 8f3a5bac46b55..0ebae384c4916 100644 --- a/translations/client_hu.ts +++ b/translations/client_hu.ts @@ -1693,13 +1693,13 @@ Ez a művelet megszakítja a jelenleg futó szinkronizálást. Kiszolgálóhiba: A PROPFIND válasz nem XML formátumú! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4319,7 +4319,7 @@ Ez egy új, kísérleti mód. Ha úgy dönt, hogy használja, akkor jelezze nek Az érvénytelen módosítási idő miatt nem lehet szinkronizálni - + Could not upload file, because it is open in "%1". diff --git a/translations/client_is.ts b/translations/client_is.ts index 5d30d72d50cf6..38dfbd29af936 100644 --- a/translations/client_is.ts +++ b/translations/client_is.ts @@ -1694,13 +1694,13 @@ gagnageymslur: - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4297,7 +4297,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_it.ts b/translations/client_it.ts index 936f1e1a25d5c..3d345df66fe08 100644 --- a/translations/client_it.ts +++ b/translations/client_it.ts @@ -1697,13 +1697,13 @@ Questa azione interromperà qualsiasi sincronizzazione attualmente in esecuzione Errore del server: la risposta PROPFIND non è in formato XML! - - + + Encrypted metadata setup error! Eerrore nell'impostazione dei metadati di crittografia! - + Encrypted metadata setup error: initial signature from server is empty. Errore di configurazione dei metadati crittografati: la firma iniziale del server è vuota. @@ -4331,7 +4331,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Impossibile sincronizzare a causa di un orario di modifica non valido - + Could not upload file, because it is open in "%1". Impossibile caricare il file, perché è aperto in "%1". diff --git a/translations/client_ja.ts b/translations/client_ja.ts index eb869ce0fa4f6..1249e999aceee 100644 --- a/translations/client_ja.ts +++ b/translations/client_ja.ts @@ -1697,13 +1697,13 @@ This action will abort any currently running synchronization. サーバーエラーが発生しました。PROPFIND応答がXML形式ではありません! - - + + Encrypted metadata setup error! 暗号化されたメタデータのセットアップエラー! - + Encrypted metadata setup error: initial signature from server is empty. 暗号化メタデータのセットアップエラー:サーバーからの初期署名が空です。 @@ -4339,7 +4339,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss 修正日時が無効なため同期できません - + Could not upload file, because it is open in "%1". "%1" で開いているので、ファイルをアップロードできませんでした。 diff --git a/translations/client_ko.ts b/translations/client_ko.ts index bccf26fcc0b59..84e73dcad831a 100644 --- a/translations/client_ko.ts +++ b/translations/client_ko.ts @@ -1696,13 +1696,13 @@ This action will abort any currently running synchronization. 서버 오류: PROPFIND 응답이 XML 형식이 아닙니다! - - + + Encrypted metadata setup error! 암호화된 메타데이터 구성 오류! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4324,7 +4324,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss 유효하지 않은 수정 시간으로 인해 동기화할 수 없습니다. - + Could not upload file, because it is open in "%1". 파일이 "%1"에서 열려있기 때문에 업로드할 수 없습니다. diff --git a/translations/client_lt_LT.ts b/translations/client_lt_LT.ts index e863f5383e09a..17816b7502dab 100644 --- a/translations/client_lt_LT.ts +++ b/translations/client_lt_LT.ts @@ -1687,13 +1687,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! Šifruotų metaduomenų sąrankos klaida! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4293,7 +4293,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_lv.ts b/translations/client_lv.ts index 9f16b79f7e327..c4a1a7edaa93e 100644 --- a/translations/client_lv.ts +++ b/translations/client_lv.ts @@ -1697,13 +1697,13 @@ Vienīgā priekšrocība, izslēdzot virtuālo datņu atbalstu, ir tas, ka atkal Servera kļūda: PROPFIND atbilde nav XML formātā! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4304,7 +4304,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_mk.ts b/translations/client_mk.ts index 81644bd4ca477..69e92c8cd6c8d 100644 --- a/translations/client_mk.ts +++ b/translations/client_mk.ts @@ -1686,13 +1686,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4291,7 +4291,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_nb_NO.ts b/translations/client_nb_NO.ts index 49d2788213124..da9d933ad849e 100644 --- a/translations/client_nb_NO.ts +++ b/translations/client_nb_NO.ts @@ -1697,13 +1697,13 @@ Denne handlingen vil avbryte enhver synkronisering som kjører. Serverfeil: PROPFIND-svaret er ikke XML-formatert! - - + + Encrypted metadata setup error! Feil ved oppsett av kryptert metadata! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4328,7 +4328,7 @@ Dette er en ny, eksperimentell modus. Hvis du bestemmer deg for å bruke den, ve Kan ikke synkronisere på grunn av ugyldig endringstid - + Could not upload file, because it is open in "%1". Kunne ikke laste opp filen, fordi den er åpen i "%1". diff --git a/translations/client_nl.ts b/translations/client_nl.ts index 818de8cb10145..c344b02a32711 100644 --- a/translations/client_nl.ts +++ b/translations/client_nl.ts @@ -1693,13 +1693,13 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken.Serverfout: PROPFIND-antwoord heeft geen XML-opmaak! - - + + Encrypted metadata setup error! Fout bij instellen versleutelde metadata! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4325,7 +4325,7 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen Kan niet synchroniseren door ongeldig wijzigingstijdstip - + Could not upload file, because it is open in "%1". Kan bestand niet uploaden, omdat het geopend is in "%1". diff --git a/translations/client_oc.ts b/translations/client_oc.ts index 0b04cc9dda259..224304d5f3df0 100644 --- a/translations/client_oc.ts +++ b/translations/client_oc.ts @@ -1684,13 +1684,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4282,7 +4282,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_pl.ts b/translations/client_pl.ts index b8379c93daa90..9f0d46e6f45a8 100644 --- a/translations/client_pl.ts +++ b/translations/client_pl.ts @@ -1697,13 +1697,13 @@ Ta czynność spowoduje przerwanie aktualnie uruchomionej synchronizacji.Błąd serwera: odpowiedź PROPFIND nie ma formatu XML! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4198,7 +4198,7 @@ To nowy, eksperymentalny tryb. Jeśli zdecydujesz się z niego skorzystać, zgł Folder name of folder entity to use when warning about invalid name - Folder + Katalog @@ -4323,7 +4323,7 @@ To nowy, eksperymentalny tryb. Jeśli zdecydujesz się z niego skorzystać, zgł Nie można zsynchronizować z powodu nieprawidłowego czasu modyfikacji - + Could not upload file, because it is open in "%1". Nie można przesłać pliku, ponieważ jest on otwarty w „%1”. @@ -5689,7 +5689,7 @@ Serwer odpowiedział błędem: %2 Failed to unlock a folder. - Nie udało się odblokować folderu. + Nie udało się odblokować katalogu. @@ -6522,7 +6522,7 @@ Serwer odpowiedział błędem: %2 Sharing is not available for this folder - Udostępnianie nie jest dostępne w tym folderze + Udostępnianie nie jest dostępne w tym katalogu diff --git a/translations/client_pt.ts b/translations/client_pt.ts index e130d2ebb840e..0c4c0e1c578f4 100644 --- a/translations/client_pt.ts +++ b/translations/client_pt.ts @@ -1685,13 +1685,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4287,7 +4287,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_pt_BR.ts b/translations/client_pt_BR.ts index 2a8f8f86b9c8b..28b799de52b29 100644 --- a/translations/client_pt_BR.ts +++ b/translations/client_pt_BR.ts @@ -1693,13 +1693,13 @@ Esta ação irá cancelar qualquer sincronização atualmente em execução.Erro do servidor: a resposta PROPFIND não está formatada em XML! - - + + Encrypted metadata setup error! Erro de configuração de metadados criptografados! - + Encrypted metadata setup error: initial signature from server is empty. Erro de configuração de metadados criptografados: a assinatura inicial do servidor está vazia. @@ -4334,7 +4334,7 @@ Este é um novo modo experimental. Se você decidir usá-lo, relate quaisquer pr Não é possível sincronizar devido ao horário de modificação inválido - + Could not upload file, because it is open in "%1". Não foi possível fazer upload do arquivo porque ele está aberto em "%1". diff --git a/translations/client_ro.ts b/translations/client_ro.ts index d1b54ca97bc74..e502a200182ad 100644 --- a/translations/client_ro.ts +++ b/translations/client_ro.ts @@ -1691,13 +1691,13 @@ Această acțiune va opri toate sincronizările în derulare din acest moment.Eroare de server: PROPFIND reply is not XML formatted! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4299,7 +4299,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_ru.ts b/translations/client_ru.ts index dd37960cd5207..cfa964e760ee6 100644 --- a/translations/client_ru.ts +++ b/translations/client_ru.ts @@ -1695,13 +1695,13 @@ This action will abort any currently running synchronization. Ошибка сервера: ответ PROPFIND не в формате XML. - - + + Encrypted metadata setup error! Ошибка настройки зашифрованных метаданных! - + Encrypted metadata setup error: initial signature from server is empty. Ошибка настройки зашифрованных метаданных: первоначальная подпись с сервера пуста. @@ -4327,7 +4327,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Синхронизация невозможна по причине некорректного времени изменения файла - + Could not upload file, because it is open in "%1". diff --git a/translations/client_sc.ts b/translations/client_sc.ts index e95d7f5cb4df4..63a55d12dfaa5 100644 --- a/translations/client_sc.ts +++ b/translations/client_sc.ts @@ -1691,13 +1691,13 @@ Custa atzione at a firmare cale si siat sincronizatzione immoe in esecutzione.Errore de su serbidore: sa risposta PROPFIND no est in formadu XML! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -3326,7 +3326,7 @@ Is elementos in ue est permitidu ant a èssere cantzellados si impedint de catza The file could not be synced because it contains characters which are not allowed on this system. - No at fatu a sincronizare cust'archìviu, ca cuntenet caràteres no permìtidos in custu sistema. + No at fatu a sincronizare custu archìviu, ca cuntenet caràteres no permìtidos in custu sistema. @@ -3391,7 +3391,7 @@ Is elementos in ue est permitidu ant a èssere cantzellados si impedint de catza You don't have the permission to rename this file. Please ask the author of the file to rename it. - No tenes su permissu de torrare a numenare cust'archìviu. Pedi a chie at creadu s'archìviu de ddu torrare a numenare. + No tenes su permissu de torrare a numenare custu archìviu. Pedi a chie at creadu s'archìviu de ddu torrare a numenare. @@ -4316,7 +4316,7 @@ Custa est una modalidade noa, isperimentale. Si detzides de dda impreare, sinnal - + Could not upload file, because it is open in "%1". @@ -5967,7 +5967,7 @@ Server replied with error: %2 Host your own server - Retzi in su serbidore tuo + Imprea unu serbidore tuo @@ -7123,7 +7123,7 @@ Server replied with error: %2 Currently available locally - Como a disponimentu in logu + Immoe a disponimentu in logu diff --git a/translations/client_sk.ts b/translations/client_sk.ts index 8c25f98666618..dd828eff7a238 100644 --- a/translations/client_sk.ts +++ b/translations/client_sk.ts @@ -1697,13 +1697,13 @@ Táto akcia zruší všetky prebiehajúce synchronizácie. Chyba servera: odpoveď PROPFIND nie je vo formáte XML. - - + + Encrypted metadata setup error! Chyba nastavenia šifrovaných metadát! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4323,7 +4323,7 @@ Toto je nový experimentálny režim. Ak sa ho rozhodnete použiť, nahláste v Chyba pri synchronizácii z dôvodu neplatného času poslednej zmeny - + Could not upload file, because it is open in "%1". Súbor sa nepodarilo nahrať, pretože je otvorený v "%1". diff --git a/translations/client_sl.ts b/translations/client_sl.ts index c61382288afba..0a283c880e809 100644 --- a/translations/client_sl.ts +++ b/translations/client_sl.ts @@ -1691,13 +1691,13 @@ S tem dejanjem prav tako prekinete vsa trenutna usklajevanja v izvajanju.Napaka strežnika: odziv PROPFIND ni zapisan kot XML! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4316,7 +4316,7 @@ To je nov preizkusni način. Če ga boste uporabili, pošljite tudi poročila o - + Could not upload file, because it is open in "%1". diff --git a/translations/client_sr.ts b/translations/client_sr.ts index e058899f8e1f1..c8dd02c5e9fb6 100644 --- a/translations/client_sr.ts +++ b/translations/client_sr.ts @@ -1697,13 +1697,13 @@ This action will abort any currently running synchronization. Серверска грешка: PROPFIND одговор није XML форматиран! - - + + Encrypted metadata setup error! Грешка подешавања шифрованих метаподатака! - + Encrypted metadata setup error: initial signature from server is empty. Грешка у подешавању шифрованих метаподатака: почетни потпис са сервера је празан. @@ -4340,7 +4340,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Не може да се синхронизује због неисправног времена измене - + Could not upload file, because it is open in "%1". Фајл не може да се отпреми јер је отворен у „%1”. diff --git a/translations/client_sv.ts b/translations/client_sv.ts index aeb977c29d7bd..c27c88a10d1a3 100644 --- a/translations/client_sv.ts +++ b/translations/client_sv.ts @@ -1697,13 +1697,13 @@ Den här åtgärden avbryter alla pågående synkroniseringar. Serverfel: PROPFIND-svar är inte XML-formaterat! - - + + Encrypted metadata setup error! Inställningsfel för krypterad metadata! - + Encrypted metadata setup error: initial signature from server is empty. Inställningsfel för krypterad metadata: initial signatur från servern är tom. @@ -4340,7 +4340,7 @@ Detta är ett nytt experimentellt läge. Om du bestämmer dig för att använda Det går inte att synkronisera på grund av ogiltig ändringstid - + Could not upload file, because it is open in "%1". Kunde inte ladda upp filen eftersom den är öppen i "%1". diff --git a/translations/client_th.ts b/translations/client_th.ts index 02566424f8810..45690e785b8de 100644 --- a/translations/client_th.ts +++ b/translations/client_th.ts @@ -1690,13 +1690,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4292,7 +4292,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". diff --git a/translations/client_tr.ts b/translations/client_tr.ts index 456c390d40566..f40e4a32133d8 100644 --- a/translations/client_tr.ts +++ b/translations/client_tr.ts @@ -1697,13 +1697,13 @@ Bu işlem şu anda yürütülmekte olan eşitleme işlemlerini durdurur.Sunucu hatası: PROPFIND yanıtı XML biçiminde değil! - - + + Encrypted metadata setup error! Şifrelenmiş üst veri kurulumu sorunu! - + Encrypted metadata setup error: initial signature from server is empty. Şifrelenmiş üst veri kurulum hatası: Sunucudan gelen ilk imza boş. @@ -4339,7 +4339,7 @@ Bu yeni ve deneysel bir özelliktir. Kullanmaya karar verirseniz, lütfen karş Değiştirilme zamanı geçersiz olduğundan eşitlenemedi - + Could not upload file, because it is open in "%1". Dosya "%1" içinde açık olduğundan yüklenemedi. diff --git a/translations/client_ug.ts b/translations/client_ug.ts index 4caf4d85949ef..b05fd02d8df27 100644 --- a/translations/client_ug.ts +++ b/translations/client_ug.ts @@ -1697,13 +1697,13 @@ This action will abort any currently running synchronization. مۇلازىمېتىر خاتالىقى: PROPFIND جاۋاب XML فورماتى ئەمەس! - - + + Encrypted metadata setup error! شىفىرلانغان مېتا سانلىق مەلۇمات تەڭشەش خاتالىقى! - + Encrypted metadata setup error: initial signature from server is empty. شىفىرلانغان مېتا سانلىق مەلۇمات تەڭشەش خاتالىقى: مۇلازىمېتىردىن دەسلەپكى ئىمزا قۇرۇق. @@ -4340,7 +4340,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss ئۆزگەرتىش ۋاقتى ئىناۋەتسىز بولغاچقا ماسقەدەملىيەلمەيدۇ - + Could not upload file, because it is open in "%1". ھۆججەت يۈكلىيەلمىدى ، چۈنكى ئۇ «% 1» دە ئوچۇق. diff --git a/translations/client_uk.ts b/translations/client_uk.ts index 192ff773af433..48191874442f0 100644 --- a/translations/client_uk.ts +++ b/translations/client_uk.ts @@ -1697,13 +1697,13 @@ This action will abort any currently running synchronization. Помилка серверу: PROPFIND reply is not XML formatted! - - + + Encrypted metadata setup error! Помилка з налаштуванням шифрування метаданих! - + Encrypted metadata setup error: initial signature from server is empty. Помилка під час налаштування зашифрованих метаданих: початкова сиґнатура, отримана від сервера, є порожньою. @@ -4338,7 +4338,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Неможливо виконати синхронізацію через неправильний час модифікації - + Could not upload file, because it is open in "%1". Не вдалося завантажити файл, оскільки його відкрито у "%1". diff --git a/translations/client_zh_CN.ts b/translations/client_zh_CN.ts index d151e5017ce21..952a6cea91627 100644 --- a/translations/client_zh_CN.ts +++ b/translations/client_zh_CN.ts @@ -1693,13 +1693,13 @@ This action will abort any currently running synchronization. 服务器错误:PROPFIND 回复的格式不是 XML! - - + + Encrypted metadata setup error! 已加密的元数据设置错误! - + Encrypted metadata setup error: initial signature from server is empty. @@ -4317,7 +4317,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss 由于修改时间无效,因此无法同步 - + Could not upload file, because it is open in "%1". 无法上传文件,因为此文件已在 “%1” 中被打开。 diff --git a/translations/client_zh_HK.ts b/translations/client_zh_HK.ts index 82bc968abf7ff..2cacf00892be1 100644 --- a/translations/client_zh_HK.ts +++ b/translations/client_zh_HK.ts @@ -1700,13 +1700,13 @@ This action will abort any currently running synchronization. 伺服器錯誤:PROPFIND回覆未採用XML格式! - - + + Encrypted metadata setup error! 已加密的元數據設置錯誤! - + Encrypted metadata setup error: initial signature from server is empty. 加密中繼資料設定錯誤:來自伺服器的初始簽章為空。 @@ -4340,7 +4340,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss 由於修改時間無效,無法同步 - + Could not upload file, because it is open in "%1". 無法上傳檔案,因為其於「%1」開啟。 diff --git a/translations/client_zh_TW.ts b/translations/client_zh_TW.ts index f775e339505c2..ce8d01bd96978 100644 --- a/translations/client_zh_TW.ts +++ b/translations/client_zh_TW.ts @@ -1697,13 +1697,13 @@ This action will abort any currently running synchronization. 伺服器錯誤:PROPFIND 回覆未使用 XML 格式! - - + + Encrypted metadata setup error! 已加密的詮釋資料設定錯誤! - + Encrypted metadata setup error: initial signature from server is empty. 加密中繼資料設定錯誤:來自伺服器的初始簽章為空。 @@ -4340,7 +4340,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss 由於修改時間無效,無法同步 - + Could not upload file, because it is open in "%1". 無法上傳檔案,因為其於「%1」開啟。 From 826953fcca95e2fd2a610b0bf0c965a8f010c03b Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 21 Nov 2024 13:16:16 +0800 Subject: [PATCH 069/244] Do not do deep codesign as default Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- admin/osx/mac-crafter/Sources/Utils/Codesign.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift index dab7299bdf5af..7b4654762dd4f 100644 --- a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift +++ b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift @@ -14,7 +14,7 @@ import Foundation -fileprivate let defaultCodesignOptions = "--timestamp --force --preserve-metadata=entitlements --verbose=4 --options runtime --deep" +fileprivate let defaultCodesignOptions = "--timestamp --force --preserve-metadata=entitlements --verbose=4 --options runtime" enum CodeSigningError: Error { case failedToCodeSign(String) From ea5017ce0dcc1b634c8cde6825d8148511e38ce7 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 21 Nov 2024 13:16:33 +0800 Subject: [PATCH 070/244] Also sign executables during recursive codesign Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- admin/osx/mac-crafter/Sources/Utils/Codesign.swift | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift index 7b4654762dd4f..12999abb5ed00 100644 --- a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift +++ b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift @@ -32,6 +32,10 @@ func isAppExtension(_ path: String) -> Bool { path.hasSuffix(".appex") } +func isExecutable(_ path: String) -> Bool { + FileManager.default.isExecutableFile(atPath: path) +} + func codesign(identity: String, path: String, options: String = defaultCodesignOptions) throws { print("Code-signing \(path)...") let command = "codesign -s \"\(identity)\" \(options) \"\(path)\"" @@ -53,7 +57,10 @@ func recursivelyCodesign( } for case let enumeratedItem as String in pathEnumerator { - guard isLibrary(enumeratedItem) || isAppExtension(enumeratedItem) else { continue } + guard isLibrary(enumeratedItem) || + isAppExtension(enumeratedItem) || + isExecutable(enumeratedItem) + else { continue } try codesign(identity: identity, path: "\(path)/\(enumeratedItem)") } } From 22a5af59428af37a4dc4f27ba33eb2fa90db4142 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 21 Nov 2024 13:16:45 +0800 Subject: [PATCH 071/244] Do a codesign of the app bundle itself as final step Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- admin/osx/mac-crafter/Sources/Utils/Codesign.swift | 3 +++ 1 file changed, 3 insertions(+) diff --git a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift index 12999abb5ed00..a2b961eb87e3d 100644 --- a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift +++ b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift @@ -133,4 +133,7 @@ func codesignClientAppBundle( // Now we do the final codesign bit print("Code-signing Nextcloud Desktop Client binaries...") try recursivelyCodesign(path: "\(clientContentsDir)/MacOS/", identity: codeSignIdentity) + + print("Code-signing Nextcloud Desktop Client app bundle...") + try codesign(identity: codeSignIdentity, path: clientAppDir) } From 9941f73a8d65c448b2e7cd949ee614d3f0add743 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 14 Nov 2024 16:18:59 +0800 Subject: [PATCH 072/244] Bring back coloured header Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index be7ede737d5c5..7e364296e5d71 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -244,7 +244,13 @@ ApplicationWindow { anchors.right: trayWindowMainItem.right anchors.top: trayWindowMainItem.top height: Style.trayWindowHeaderHeight - color: palette.window + color: Style.currentUserHeaderColor + + palette { + text: Style.currentUserHeaderTextColor + windowText: Style.currentUserHeaderTextColor + buttonText: Style.currentUserHeaderTextColor + } RowLayout { id: trayWindowHeaderLayout From c26b05181d73f9246ab86c2d4d7122f11e2c052a Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 14 Nov 2024 16:46:44 +0800 Subject: [PATCH 073/244] Fix background colour for tray window (should be base as we only show item views) Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index 7e364296e5d71..c90dddaeab979 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -64,7 +64,7 @@ ApplicationWindow { radius: Systray.useNormalWindow ? 0.0 : Style.trayWindowRadius border.width: Style.trayWindowBorderWidth border.color: palette.dark - color: palette.window + color: palette.base } Connections { From 1e380f48fb797d70ea5a7b35a5ed65c494801847 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 14 Nov 2024 17:12:54 +0800 Subject: [PATCH 074/244] Use palette base colour for windows (we always display item views) Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/UserStatusSelector.qml | 2 +- src/gui/UserStatusSelectorPage.qml | 2 +- src/gui/filedetails/FileDetailsView.qml | 2 +- src/gui/filedetails/ShareDetailsPage.qml | 2 +- src/gui/macOS/ui/FileProviderSettings.qml | 2 +- src/gui/tray/CallNotificationDialog.qml | 2 +- src/gui/tray/EditFileLocallyLoadingDialog.qml | 2 +- src/gui/tray/MainWindow.qml | 2 +- theme/Style/Style.qml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/gui/UserStatusSelector.qml b/src/gui/UserStatusSelector.qml index 2c2dcbf0d8f6f..6756227238f28 100644 --- a/src/gui/UserStatusSelector.qml +++ b/src/gui/UserStatusSelector.qml @@ -186,7 +186,7 @@ ColumnLayout { anchors.centerIn: Overlay.overlay background: Rectangle { - color: palette.window + color: palette.base border.width: Style.normalBorderWidth border.color: palette.dark radius: Style.slightlyRoundedButtonRadius diff --git a/src/gui/UserStatusSelectorPage.qml b/src/gui/UserStatusSelectorPage.qml index c40654b6f0505..a60423f9a77f5 100644 --- a/src/gui/UserStatusSelectorPage.qml +++ b/src/gui/UserStatusSelectorPage.qml @@ -32,7 +32,7 @@ Page { padding: Style.standardSpacing * 2 background: Rectangle { - color: palette.window + color: palette.base radius: Style.trayWindowRadius } diff --git a/src/gui/filedetails/FileDetailsView.qml b/src/gui/filedetails/FileDetailsView.qml index 3572c66f49905..991da7d2b91c1 100644 --- a/src/gui/filedetails/FileDetailsView.qml +++ b/src/gui/filedetails/FileDetailsView.qml @@ -31,7 +31,7 @@ StackView { property bool backgroundsVisible: true background: Rectangle { - color: palette.window + color: palette.base visible: root.backgroundsVisible } diff --git a/src/gui/filedetails/ShareDetailsPage.qml b/src/gui/filedetails/ShareDetailsPage.qml index bdb3ca96f0738..72836f530bd14 100644 --- a/src/gui/filedetails/ShareDetailsPage.qml +++ b/src/gui/filedetails/ShareDetailsPage.qml @@ -175,7 +175,7 @@ Page { padding: Style.standardSpacing * 2 background: Rectangle { - color: palette.window + color: palette.base visible: root.backgroundsVisible } diff --git a/src/gui/macOS/ui/FileProviderSettings.qml b/src/gui/macOS/ui/FileProviderSettings.qml index b68e71757f63d..1cf4d7ec8b4d9 100644 --- a/src/gui/macOS/ui/FileProviderSettings.qml +++ b/src/gui/macOS/ui/FileProviderSettings.qml @@ -32,7 +32,7 @@ Page { title: qsTr("Virtual files settings") background: Rectangle { - color: palette.window + color: palette.base border.width: root.showBorder ? Style.normalBorderWidth : 0 border.color: root.palette.dark } diff --git a/src/gui/tray/CallNotificationDialog.qml b/src/gui/tray/CallNotificationDialog.qml index c2ab360273d82..c5a9c3cd18394 100644 --- a/src/gui/tray/CallNotificationDialog.qml +++ b/src/gui/tray/CallNotificationDialog.qml @@ -24,7 +24,7 @@ import Qt5Compat.GraphicalEffects ApplicationWindow { id: root - color: palette.window + color: palette.base flags: Qt.Dialog | Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint readonly property int windowSpacing: 10 diff --git a/src/gui/tray/EditFileLocallyLoadingDialog.qml b/src/gui/tray/EditFileLocallyLoadingDialog.qml index b23b0da746297..0696c302a0840 100644 --- a/src/gui/tray/EditFileLocallyLoadingDialog.qml +++ b/src/gui/tray/EditFileLocallyLoadingDialog.qml @@ -9,7 +9,7 @@ ApplicationWindow { id: root flags: Qt.Dialog | Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint - color: palette.window + color: palette.base width: 320 height: contentLayout.implicitHeight diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index c90dddaeab979..1486f723d91ac 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -140,7 +140,7 @@ ApplicationWindow { radius: Systray.useNormalWindow ? 0.0 : Style.trayWindowRadius border.width: Style.trayWindowBorderWidth border.color: palette.dark - color: palette.window + color: palette.base } property int userIndex: 0 diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index 2bb1905d3bd9c..61df414b87185 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -17,7 +17,7 @@ QtObject { 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.window + readonly property color backgroundColor: Theme.systemPalette.base readonly property color buttonBackgroundColor: Theme.systemPalette.button readonly property color positiveColor: Qt.rgba(0.38, 0.74, 0.38, 1) From fef76e9c105ccfd117b53061c6be0180c2401a8b Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 14 Nov 2024 17:18:46 +0800 Subject: [PATCH 075/244] Remove custom background from menus and menu buttons Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 29 +-------------------- src/gui/tray/TrayFolderListItem.qml | 11 -------- src/gui/tray/TrayFoldersMenuButton.qml | 6 ----- src/gui/tray/UserLine.qml | 36 +++----------------------- 4 files changed, 4 insertions(+), 78 deletions(-) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index 1486f723d91ac..591e5aefd15b0 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -293,12 +293,6 @@ ApplicationWindow { height: Math.min(implicitHeight, maxMenuHeight) closePolicy: Menu.CloseOnPressOutsideParent | Menu.CloseOnEscape - background: Rectangle { - border.color: palette.dark - color: palette.window - radius: Style.halfTrayWindowRadius - } - onClosed: { // HACK: reload account Instantiator immediately by restting it - could be done better I guess // see also onVisibleChanged above @@ -355,11 +349,6 @@ ApplicationWindow { Accessible.name: qsTr("Add new account") Accessible.onPressAction: addAccountButton.clicked() - background: Rectangle { - radius: Style.halfTrayWindowRadius - color: palette.highlight - visible: addAccountButton.hovered - } } Rectangle { @@ -378,11 +367,6 @@ ApplicationWindow { Accessible.name: Systray.syncIsPaused ? qsTr("Resume sync for all") : qsTr("Pause sync for all") Accessible.onPressAction: syncPauseButton.clicked() - background: Rectangle { - radius: Style.halfTrayWindowRadius - color: palette.highlight - visible: syncPauseButton.hovered - } } MenuItem { @@ -395,11 +379,6 @@ ApplicationWindow { Accessible.name: text Accessible.onPressAction: settingsButton.clicked() - background: Rectangle { - radius: Style.halfTrayWindowRadius - color: palette.highlight - visible: settingsButton.hovered - } } MenuItem { @@ -410,13 +389,7 @@ ApplicationWindow { onClicked: Systray.shutdown() Accessible.role: Accessible.MenuItem Accessible.name: text - Accessible.onPressAction: exitButton.clicked() - - background: Rectangle { - radius: Style.halfTrayWindowRadius - color: palette.highlight - visible: exitButton.hovered - } + Accessible.onPressAction: exitButton.clicked() } } diff --git a/src/gui/tray/TrayFolderListItem.qml b/src/gui/tray/TrayFolderListItem.qml index 13cc5fa0ec05f..720a311aa3a86 100644 --- a/src/gui/tray/TrayFolderListItem.qml +++ b/src/gui/tray/TrayFolderListItem.qml @@ -30,17 +30,6 @@ MenuItem { text: root.toolTipText } - background: Item { - height: parent.height - width: parent.width - Rectangle { - anchors.fill: parent - anchors.margins: Style.normalBorderWidth - color: parent.parent.hovered || parent.parent.visualFocus ? palette.highlight : palette.window - radius: Style.halfTrayWindowRadius - } - } - contentItem: RowLayout { anchors.fill: parent anchors.leftMargin: Style.trayWindowMenuEntriesMargin diff --git a/src/gui/tray/TrayFoldersMenuButton.qml b/src/gui/tray/TrayFoldersMenuButton.qml index 020f6398acffe..a2197c7c84a13 100644 --- a/src/gui/tray/TrayFoldersMenuButton.qml +++ b/src/gui/tray/TrayFoldersMenuButton.qml @@ -178,12 +178,6 @@ HeaderButton { height: implicitHeight + y > Style.trayWindowHeight ? Style.trayWindowHeight - y : implicitHeight closePolicy: Menu.CloseOnPressOutsideParent | Menu.CloseOnEscape - background: Rectangle { - border.color: palette.dark - color: palette.window - radius: Style.trayWindowRadius - } - contentItem: ScrollView { id: foldersMenuScrollView diff --git a/src/gui/tray/UserLine.qml b/src/gui/tray/UserLine.qml index e6f5ef800c218..5527ddf7f23d6 100644 --- a/src/gui/tray/UserLine.qml +++ b/src/gui/tray/UserLine.qml @@ -34,15 +34,6 @@ AbstractButton { height: Style.trayWindowHeaderHeight - background: Rectangle { - anchors.fill: parent - anchors.margins: 1 - color: (userLine.hovered || userLine.visualFocus) && - !(userMoreButton.hovered || userMoreButton.visualFocus) ? - palette.highlight : palette.window - radius: Style.halfTrayWindowRadius - } - contentItem: RowLayout { id: userLineLayout spacing: Style.userStatusSpacing @@ -158,12 +149,6 @@ AbstractButton { id: userMoreButtonMenu closePolicy: Menu.CloseOnPressOutsideParent | Menu.CloseOnEscape - background: Rectangle { - border.color: palette.dark - radius: Style.halfTrayWindowRadius - color: palette.window - } - MenuItem { visible: model.isConnected && model.serverHasUserStatus height: visible ? implicitHeight : 0 @@ -171,12 +156,7 @@ AbstractButton { font.pixelSize: Style.topLinePixelSize hoverEnabled: true onClicked: showUserStatusSelector(index) - - background: Rectangle { - radius: Style.halfTrayWindowRadius - color: parent.hovered ? palette.highlight : palette.window - } - } + } MenuItem { text: model.isConnected ? qsTr("Log out") : qsTr("Log in") @@ -198,12 +178,7 @@ AbstractButton { } accountMenu.close() } - - background: Rectangle { - radius: Style.halfTrayWindowRadius - color: parent.hovered ? palette.highlight : palette.window - } - } + } MenuItem { id: removeAccountButton @@ -218,12 +193,7 @@ AbstractButton { Accessible.role: Accessible.Button Accessible.name: text Accessible.onPressAction: removeAccountButton.clicked() - - background: Rectangle { - radius: Style.halfTrayWindowRadius - color: parent.hovered ? palette.highlight : palette.window - } - } + } } } } From b010874643889ac40dce7b8fa5e94038e1f09ec4 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 14 Nov 2024 17:19:25 +0800 Subject: [PATCH 076/244] Remove internal list view and scrollview from apps menu This was breaking proper hover handling and selection Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 58 ++++++++++--------------------------- 1 file changed, 16 insertions(+), 42 deletions(-) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index 591e5aefd15b0..6ddd7e9e41c56 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -568,7 +568,7 @@ ApplicationWindow { icon.source: "image://svgimage-custom-color/more-apps.svg/" + palette.windowText onClicked: { - if(appsMenuListView.count <= 0) { + if(appsMenu.count <= 0) { UserModel.openCurrentAccountServer() } else if (appsMenu.visible) { appsMenu.close() @@ -589,47 +589,21 @@ ApplicationWindow { height: implicitHeight + y > Style.trayWindowHeight ? Style.trayWindowHeight - y : implicitHeight closePolicy: Menu.CloseOnPressOutsideParent | Menu.CloseOnEscape - background: Rectangle { - border.color: palette.dark - radius: Style.halfTrayWindowRadius - color: palette.window - } - - 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.windowText - onTriggered: UserAppsModel.openAppUrl(appUrl) - hoverEnabled: true - Accessible.role: Accessible.MenuItem - Accessible.name: qsTr("Open %1 in browser").arg(model.appName) - Accessible.onPressAction: appEntry.triggered() - - background: Rectangle { - anchors.fill: parent - anchors.margins: 1 - color: appEntry.hovered ? palette.highlight : palette.window - radius: Style.halfTrayWindowRadius - } - } + Repeater { + model: UserAppsModel + 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.windowText + onTriggered: UserAppsModel.openAppUrl(appUrl) + hoverEnabled: true + Accessible.role: Accessible.MenuItem + Accessible.name: qsTr("Open %1 in browser").arg(model.appName) + Accessible.onPressAction: appEntry.triggered() } } } From 3c6bbddc9cc9256bb919cfbb559f2a1a2cdc915a Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 14 Nov 2024 17:19:37 +0800 Subject: [PATCH 077/244] Remove commented-out hover effect component Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index 6ddd7e9e41c56..5aa9ce9fd69e9 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -424,20 +424,6 @@ ApplicationWindow { radius: width * Style.trayFolderStatusIndicatorRadiusFactor } - // TODO: check if we want add any hover effect - // Rectangle { - // id: currentAccountStatusIndicatorMouseHover - // visible: UserModel.currentUser && UserModel.currentUser.isConnected - // && UserModel.currentUser.serverHasUserStatus - // width: Style.accountAvatarStateIndicatorSize + + Style.trayFolderStatusIndicatorSizeOffset - // height: width - // anchors.bottom: currentAccountAvatar.bottom - // anchors.right: currentAccountAvatar.right - // color: currentAccountButton.hovered ? palette.highlight : palette.window - // opacity: Style.trayFolderStatusIndicatorMouseHoverOpacityFactor - // radius: width * Style.trayFolderStatusIndicatorRadiusFactor - // } - Image { id: currentAccountStatusIndicator visible: UserModel.currentUser && UserModel.currentUser.isConnected From e985b316a3511b334305b3bd844fe69fa0c389bc Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 14 Nov 2024 17:20:31 +0800 Subject: [PATCH 078/244] Wrap the instantiated userLine components in a menu item Get proper handling of hover and so on this way Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index 5aa9ce9fd69e9..34ab12ad916de 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -303,12 +303,17 @@ ApplicationWindow { Instantiator { id: userLineInstantiator model: UserModel - delegate: UserLine { - onShowUserStatusSelector: { - userStatusDrawer.openUserStatusDrawer(model.index); - accountMenu.close(); + delegate: MenuItem { + implicitHeight: instantiatedUserLine.height + UserLine { + id: instantiatedUserLine + width: parent.width + onShowUserStatusSelector: { + userStatusDrawer.openUserStatusDrawer(model.index); + accountMenu.close(); + } + onClicked: UserModel.currentUserId = model.index; } - onClicked: UserModel.currentUserId = model.index; } onObjectAdded: accountMenu.insertItem(index, object) onObjectRemoved: accountMenu.removeItem(object) From 12ace508b0faaac1ef1044ea1ba7c2b8fb6f5c48 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 14 Nov 2024 17:23:01 +0800 Subject: [PATCH 079/244] Use standard icon for addAccountButton, fixing sizing Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 42 ++++++++----------------------------- 1 file changed, 9 insertions(+), 33 deletions(-) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index 34ab12ad916de..38ef8a8f423c3 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -319,48 +319,26 @@ ApplicationWindow { onObjectRemoved: accountMenu.removeItem(object) } + Rectangle { + anchors.left: parent.left + anchors.right: parent.right + implicitHeight: 1 + color: palette.dark + } + MenuItem { id: addAccountButton height: Systray.enableAddAccount ? Style.addAccountButtonHeight : 0 hoverEnabled: true visible: Systray.enableAddAccount - RowLayout { - anchors.fill: parent - spacing: 0 - - Image { - Layout.leftMargin: Style.accountIconsMenuMargin - verticalAlignment: Qt.AlignVCenter - horizontalAlignment: Qt.AlignCenter - source: "image://svgimage-custom-color/add.svg/" + palette.windowText - sourceSize.width: Style.addButtonIconSize - sourceSize.height: Style.addButtonIconSize - } - EnforcedPlainTextLabel { - Layout.leftMargin: 14 - text: qsTr("Add account") - font.pixelSize: Style.topLinePixelSize - } - // Filler on the right - Item { - Layout.fillWidth: true - Layout.fillHeight: true - } - } + icon.source: "image://svgimage-custom-color/add.svg/" + palette.windowText + text: qsTr("Add account") 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 { @@ -371,7 +349,6 @@ ApplicationWindow { Accessible.role: Accessible.MenuItem Accessible.name: Systray.syncIsPaused ? qsTr("Resume sync for all") : qsTr("Pause sync for all") Accessible.onPressAction: syncPauseButton.clicked() - } MenuItem { @@ -383,7 +360,6 @@ ApplicationWindow { Accessible.role: Accessible.MenuItem Accessible.name: text Accessible.onPressAction: settingsButton.clicked() - } MenuItem { From a2b120248f8ca02d7f0411a6fc903efa015f72b7 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 14 Nov 2024 17:23:11 +0800 Subject: [PATCH 080/244] Use standard icon property to set icon for userline Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/UserLine.qml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/gui/tray/UserLine.qml b/src/gui/tray/UserLine.qml index 5527ddf7f23d6..58dbdfb8555fe 100644 --- a/src/gui/tray/UserLine.qml +++ b/src/gui/tray/UserLine.qml @@ -138,12 +138,7 @@ AbstractButton { onClicked: userMoreButtonMenu.visible ? userMoreButtonMenu.close() : userMoreButtonMenu.popup() - Image { - anchors.fill: parent - source: "image://svgimage-custom-color/more.svg/" + palette.windowText - fillMode: Image.PreserveAspectFit - anchors.rightMargin: Style.accountLabelsAnchorsMargin - } + icon.source: "image://svgimage-custom-color/more.svg/" + palette.windowText AutoSizingMenu { id: userMoreButtonMenu From d657b289548ec4b321846076db94d42c8946db65 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 14 Nov 2024 17:44:01 +0800 Subject: [PATCH 081/244] Improve spacings of userline Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/UserLine.qml | 2 +- theme/Style/Style.qml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gui/tray/UserLine.qml b/src/gui/tray/UserLine.qml index 58dbdfb8555fe..7c22c7ae89fe1 100644 --- a/src/gui/tray/UserLine.qml +++ b/src/gui/tray/UserLine.qml @@ -36,7 +36,7 @@ AbstractButton { contentItem: RowLayout { id: userLineLayout - spacing: Style.userStatusSpacing + spacing: Style.userLineSpacing Image { id: accountAvatar diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index 61df414b87185..a41247831450a 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -105,7 +105,7 @@ QtObject { property int activityListButtonWidth: 42 property int activityListButtonHeight: 32 property int activityListButtonIconSize: 18 - property int headerButtonIconSize: 32 + property int headerButtonIconSize: 48 property int addButtonIconSize: 26 property int dismissButtonSize: 26 property int minimumActivityItemHeight: 24 @@ -129,6 +129,7 @@ QtObject { property int userStatusEmojiSize: 8 property int userStatusSpacing: trayHorizontalMargin property int userStatusAnchorsMargin: 2 + property int userLineSpacing: smallSpacing property int accountServerAnchorsMargin: 10 property int accountLabelsSpacing: 4 property int accountLabelsAnchorsMargin: 7 From 67183ae8efcbfe0f7d51edbac85c86b7458856c3 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 14 Nov 2024 17:44:17 +0800 Subject: [PATCH 082/244] Make sizing of addacount button more reasonable Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index 38ef8a8f423c3..1b5c847f3aa70 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -319,20 +319,13 @@ ApplicationWindow { onObjectRemoved: accountMenu.removeItem(object) } - Rectangle { - anchors.left: parent.left - anchors.right: parent.right - implicitHeight: 1 - color: palette.dark - } - MenuItem { id: addAccountButton - height: Systray.enableAddAccount ? Style.addAccountButtonHeight : 0 hoverEnabled: true visible: Systray.enableAddAccount icon.source: "image://svgimage-custom-color/add.svg/" + palette.windowText + icon.width: Style.accountAvatarSize text: qsTr("Add account") onClicked: UserModel.addAccount() @@ -341,6 +334,13 @@ ApplicationWindow { 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 From 00b2eaaaf639ac4482f05b524daeb4f7985d4d81 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 14 Nov 2024 18:24:01 +0800 Subject: [PATCH 083/244] Fix some more colours Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/FileDetailsPage.qml | 2 +- src/gui/filedetails/NCTabButton.qml | 2 +- src/gui/filedetails/ShareView.qml | 2 +- src/gui/tray/MainWindow.qml | 9 +++------ src/gui/tray/UnifiedSearchResultListItem.qml | 2 +- 5 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/gui/filedetails/FileDetailsPage.qml b/src/gui/filedetails/FileDetailsPage.qml index 6c0bac5af3899..de3bdb9801798 100644 --- a/src/gui/filedetails/FileDetailsPage.qml +++ b/src/gui/filedetails/FileDetailsPage.qml @@ -69,7 +69,7 @@ Page { bottomPadding: intendedPadding background: Rectangle { - color: palette.window + color: palette.base visible: root.backgroundsVisible } diff --git a/src/gui/filedetails/NCTabButton.qml b/src/gui/filedetails/NCTabButton.qml index 2f53254489e05..48e2fecccabec 100644 --- a/src/gui/filedetails/NCTabButton.qml +++ b/src/gui/filedetails/NCTabButton.qml @@ -29,7 +29,7 @@ TabButton { padding: Style.smallSpacing background: Rectangle { radius: Style.slightlyRoundedButtonRadius - color: tabButton.pressed ? palette.highlight : palette.window + color: tabButton.pressed ? palette.highlight : "transparent" } contentItem: ColumnLayout { diff --git a/src/gui/filedetails/ShareView.qml b/src/gui/filedetails/ShareView.qml index d5c63e8d6b935..1a6831ed143d0 100644 --- a/src/gui/filedetails/ShareView.qml +++ b/src/gui/filedetails/ShareView.qml @@ -251,7 +251,7 @@ ColumnLayout { z: Infinity sourceComponent: Rectangle { - color: palette.window + color: palette.base opacity: 0.5 NCBusyIndicator { diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index 1b5c847f3aa70..652339bd84936 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -177,7 +177,7 @@ ApplicationWindow { radius: Systray.useNormalWindow ? 0.0 : Style.trayWindowRadius border.width: Style.trayWindowBorderWidth border.color: palette.dark - color: palette.window + color: palette.base } property var folderAccountState: ({}) @@ -714,16 +714,13 @@ ApplicationWindow { visible: !trayWindowMainItem.isUnifiedSearchActive - anchors.top: trayWindowUnifiedSearchInputContainer.bottom + anchors.bottom: trayWindowUnifiedSearchInputContainer.bottom anchors.left: trayWindowMainItem.left anchors.right: trayWindowMainItem.right Rectangle { id: syncStatusSeparator - - Layout.fillWidth: true - Layout.preferredHeight: 1 - + width: parent.width height: 1 color: Style.menuBorder } diff --git a/src/gui/tray/UnifiedSearchResultListItem.qml b/src/gui/tray/UnifiedSearchResultListItem.qml index a69855c53ae23..bc3588e6e527f 100644 --- a/src/gui/tray/UnifiedSearchResultListItem.qml +++ b/src/gui/tray/UnifiedSearchResultListItem.qml @@ -46,7 +46,7 @@ MouseArea { Rectangle { id: unifiedSearchResultHoverBackground anchors.fill: parent - color: parent.containsMouse ? palette.highlight : palette.window + color: parent.containsMouse ? palette.highlight : "transparent" } Loader { From 410a1493887fb3f2866e8da3e1781e9f7bf0709c Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 14 Nov 2024 18:50:46 +0800 Subject: [PATCH 084/244] Fix colours for some more components Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/NCInputTextEdit.qml | 2 +- src/gui/tray/TalkReplyTextField.qml | 2 +- src/gui/tray/UnifiedSearchInputContainer.qml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/filedetails/NCInputTextEdit.qml b/src/gui/filedetails/NCInputTextEdit.qml index d002caf269617..4900f8cf3725e 100644 --- a/src/gui/filedetails/NCInputTextEdit.qml +++ b/src/gui/filedetails/NCInputTextEdit.qml @@ -39,7 +39,7 @@ TextEdit { radius: Style.trayWindowRadius border.width: Style.normalBorderWidth border.color: root.activeFocus ? root.accentColor : root.secondaryColor - color: palette.window + color: palette.base z: -1 } diff --git a/src/gui/tray/TalkReplyTextField.qml b/src/gui/tray/TalkReplyTextField.qml index 9e67629af95b3..40447957228ef 100644 --- a/src/gui/tray/TalkReplyTextField.qml +++ b/src/gui/tray/TalkReplyTextField.qml @@ -21,7 +21,7 @@ TextField { background: Rectangle { border.color: palette.dark radius: Style.trayWindowRadius - color: palette.window + color: palette.base } Button { diff --git a/src/gui/tray/UnifiedSearchInputContainer.qml b/src/gui/tray/UnifiedSearchInputContainer.qml index b1c11b8f2b557..7a6457c360355 100644 --- a/src/gui/tray/UnifiedSearchInputContainer.qml +++ b/src/gui/tray/UnifiedSearchInputContainer.qml @@ -48,7 +48,7 @@ TextField { background: Rectangle { border.color: palette.dark radius: Style.trayWindowRadius - color: palette.window + color: palette.base } Image { From abda8733aaa39064cbdabe2335c12618cd8dd861 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 14 Nov 2024 18:51:02 +0800 Subject: [PATCH 085/244] Fix components for share details page footer Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/ShareDetailsPage.qml | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/gui/filedetails/ShareDetailsPage.qml b/src/gui/filedetails/ShareDetailsPage.qml index 72836f530bd14..b6f2838eddcf3 100644 --- a/src/gui/filedetails/ShareDetailsPage.qml +++ b/src/gui/filedetails/ShareDetailsPage.qml @@ -750,7 +750,9 @@ Page { contentWidth: (contentItem as ListView).contentWidth visible: copyShareLinkButton.visible - CustomButton { + background: Rectangle { color: palette.base } + + Button { id: copyShareLinkButton function copyShareLink() { @@ -780,15 +782,6 @@ Page { onClicked: copyShareLink() - // TODO - // Behavior on bgColor { - // ColorAnimation { duration: Style.shortAnimationDuration } - // } - - // Behavior on bgHoverOpacity { - // NumberAnimation { duration: Style.shortAnimationDuration } - // } - Behavior on Layout.preferredWidth { SmoothedAnimation { duration: Style.shortAnimationDuration } } From 2f112cdc1de8218a9ad07ab832042f489602febb Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 14 Nov 2024 18:51:48 +0800 Subject: [PATCH 086/244] Fix sync status separator Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index 652339bd84936..28cec013f4b68 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -714,16 +714,19 @@ ApplicationWindow { visible: !trayWindowMainItem.isUnifiedSearchActive - anchors.bottom: trayWindowUnifiedSearchInputContainer.bottom + anchors.top: trayWindowUnifiedSearchInputContainer.bottom anchors.left: trayWindowMainItem.left anchors.right: trayWindowMainItem.right + } - Rectangle { - id: syncStatusSeparator - width: parent.width - height: 1 - color: Style.menuBorder - } + Rectangle { + id: syncStatusSeparator + anchors.left: syncStatus.left + anchors.right: syncStatus.right + anchors.bottom: syncStatus.bottom + height: 1 + color: palette.dark + visible: !trayWindowMainItem.isUnifiedSearchActive } Loader { From 3c0f87df03a7d7192b1d9271cc1d0d74a52c52d8 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 14 Nov 2024 18:58:41 +0800 Subject: [PATCH 087/244] Fix borders for share details page footer Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- 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 b6f2838eddcf3..72ca1c202fd7b 100644 --- a/src/gui/filedetails/ShareDetailsPage.qml +++ b/src/gui/filedetails/ShareDetailsPage.qml @@ -750,7 +750,7 @@ Page { contentWidth: (contentItem as ListView).contentWidth visible: copyShareLinkButton.visible - background: Rectangle { color: palette.base } + background: Rectangle { color: "transparent" } Button { id: copyShareLinkButton From eb1a50cd3b5bec79dab805f19822d3de49976109 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 14 Nov 2024 18:59:20 +0800 Subject: [PATCH 088/244] Fix icons in share delegate buttons being uncentered Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/ShareDelegate.qml | 31 +++++++++------------------ 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/src/gui/filedetails/ShareDelegate.qml b/src/gui/filedetails/ShareDelegate.qml index 09dbb233584c7..e5762c54f6f4d 100644 --- a/src/gui/filedetails/ShareDelegate.qml +++ b/src/gui/filedetails/ShareDelegate.qml @@ -156,14 +156,14 @@ GridLayout { id: createLinkButton Layout.alignment: Qt.AlignCenter - Layout.preferredWidth: Style.iconButtonWidth - Layout.preferredHeight: width - toolTipText: qsTr("Create a new share link") + Layout.preferredWidth: Style.activityListButtonWidth + Layout.preferredHeight: Style.activityListButtonHeight icon.source: "image://svgimage-custom-color/add.svg/" + palette.buttonText - icon.width: Style.smallIconSize - icon.height: Style.smallIconSize + icon.width: Style.activityListButtonIconSize + icon.height: Style.activityListButtonIconSize + display: AbstractButton.IconOnly visible: (root.isPlaceholderLinkShare || root.isSecureFileDropPlaceholderLinkShare) && root.canCreateLinkShares enabled: visible @@ -196,23 +196,13 @@ GridLayout { 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 - + icon.width: Style.activityListButtonIconSize + icon.height: Style.activityListButtonIconSize + display: AbstractButton.IconOnly visible: root.isLinkShare || root.isInternalLinkShare enabled: visible - onClicked: copyShareLink() - // TODO - // Behavior on bgColor { - // ColorAnimation { duration: Style.shortAnimationDuration } - // } - - // Behavior on bgNormalOpacity { - // NumberAnimation { duration: Style.shortAnimationDuration } - // } - Behavior on Layout.preferredWidth { SmoothedAnimation { duration: Style.shortAnimationDuration } } @@ -234,17 +224,16 @@ GridLayout { toolTipText: qsTr("Share options") + Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter Layout.preferredWidth: Style.activityListButtonWidth Layout.preferredHeight: Style.activityListButtonHeight - Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter icon.source: "image://svgimage-custom-color/more.svg/" + palette.buttonText icon.width: Style.activityListButtonIconSize icon.height: Style.activityListButtonIconSize - + display: AbstractButton.IconOnly visible: !root.isPlaceholderLinkShare && !root.isSecureFileDropPlaceholderLinkShare && !root.isInternalLinkShare enabled: visible - onClicked: root.rootStackView.push(shareDetailsPageComponent, {}, StackView.PushTransition) Component { From 9aebc927bc9b700e22e1ae3c10c7fa8e1f9c5666 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 14 Nov 2024 19:12:29 +0800 Subject: [PATCH 089/244] Fix spacing of activity item buttons Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/ActivityItemContent.qml | 64 ++++++++++++++-------------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/src/gui/tray/ActivityItemContent.qml b/src/gui/tray/ActivityItemContent.qml index 7569f6e06c02e..32ab5ec015eea 100644 --- a/src/gui/tray/ActivityItemContent.qml +++ b/src/gui/tray/ActivityItemContent.qml @@ -124,8 +124,6 @@ RowLayout { RowLayout { Layout.fillWidth: true - spacing: Style.trayHorizontalMargin - EnforcedPlainTextLabel { id: activityTextTitle text: (root.activityData.type === "Activity" || root.activityData.type === "Notification") ? root.activityData.subject : root.activityData.message @@ -156,55 +154,55 @@ RowLayout { visible: text !== "" } - CustomButton { - id: fileDetailsButton - - Layout.preferredWidth: Style.activityListButtonWidth - Layout.preferredHeight: Style.activityListButtonHeight + Row { Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter + spacing: Style.extraSmallSpacing - icon.source: "image://svgimage-custom-color/more.svg/" + palette.buttonText - icon.width: Style.activityListButtonIconSize - icon.height: Style.activityListButtonIconSize + CustomButton { + id: fileDetailsButton - ToolTip { - text: qsTr("Open file details") - visible: parent.hovered - } + width: Style.activityListButtonWidth + height: Style.activityListButtonHeight - display: Button.IconOnly + icon.source: "image://svgimage-custom-color/more.svg/" + palette.buttonText + icon.width: Style.activityListButtonIconSize + icon.height: Style.activityListButtonIconSize - visible: model.showFileDetails + ToolTip { + text: qsTr("Open file details") + visible: parent.hovered + } - onClicked: Systray.presentShareViewInTray(model.openablePath) - } + display: Button.IconOnly + visible: model.showFileDetails + onClicked: Systray.presentShareViewInTray(model.openablePath) + } - CustomButton { - id: dismissActionButton + CustomButton { + id: dismissActionButton - Layout.preferredWidth: Style.activityListButtonWidth - Layout.preferredHeight: Style.activityListButtonHeight - Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter + width: Style.activityListButtonWidth + height: Style.activityListButtonHeight - icon.source: "image://svgimage-custom-color/clear.svg/" + palette.buttonText - icon.width: Style.activityListButtonIconSize - icon.height: Style.activityListButtonIconSize + icon.source: "image://svgimage-custom-color/clear.svg/" + palette.buttonText + icon.width: Style.activityListButtonIconSize + icon.height: Style.activityListButtonIconSize - display: Button.IconOnly + display: Button.IconOnly - ToolTip { - text: qsTr("Dismiss") - visible: parent.hovered - } + ToolTip { + text: qsTr("Dismiss") + visible: parent.hovered + } - onClicked: root.dismissButtonClicked() + onClicked: root.dismissButtonClicked() + } } } RowLayout { Layout.fillWidth: true Layout.fillHeight: true - spacing: Style.trayHorizontalMargin visible: activityTextInfo.visible || talkReplyMessageSent.visible || activityActions.visible EnforcedPlainTextLabel { From 81da1f5b50125b4b8db4bf194427d7127211a8cf Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 14 Nov 2024 19:15:01 +0800 Subject: [PATCH 090/244] Respect showDismissButton Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/ActivityItemContent.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/tray/ActivityItemContent.qml b/src/gui/tray/ActivityItemContent.qml index 32ab5ec015eea..146a22ef37506 100644 --- a/src/gui/tray/ActivityItemContent.qml +++ b/src/gui/tray/ActivityItemContent.qml @@ -195,6 +195,7 @@ RowLayout { visible: parent.hovered } + visible: root.showDismissButton onClicked: root.dismissButtonClicked() } } From fff2cb1dd85b9e1c923708c49da042522186a893 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 24 Nov 2022 15:18:53 +0100 Subject: [PATCH 091/244] Simplify layout and fix alignments, sizings, and layouts of items with native theming in unified search input container Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 16 ++-- src/gui/tray/UnifiedSearchInputContainer.qml | 93 +++++++++----------- theme/Style/Style.qml | 1 + 3 files changed, 47 insertions(+), 63 deletions(-) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index 28cec013f4b68..4a421d9addec7 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -580,17 +580,13 @@ ApplicationWindow { UnifiedSearchInputContainer { id: trayWindowUnifiedSearchInputContainer - height: Math.max(Style.talkReplyTextFieldPreferredHeight, contentHeight) - anchors { - top: trayWindowHeaderBackground.bottom - left: trayWindowMainItem.left - right: trayWindowMainItem.right - - topMargin: Style.trayHorizontalMargin + controlRoot.padding - leftMargin: Style.trayHorizontalMargin + controlRoot.padding - rightMargin: Style.trayHorizontalMargin + controlRoot.padding - } + anchors.top: trayWindowHeaderBackground.bottom + anchors.left: trayWindowMainItem.left + anchors.right: trayWindowMainItem.right + anchors.topMargin: Style.trayHorizontalMargin + anchors.leftMargin: Style.trayHorizontalMargin + anchors.rightMargin: Style.trayHorizontalMargin text: UserModel.currentUser.unifiedSearchResultsListModel.searchTerm readOnly: !UserModel.currentUser.isConnected || UserModel.currentUser.unifiedSearchResultsListModel.currentFetchMoreInProgressProviderId diff --git a/src/gui/tray/UnifiedSearchInputContainer.qml b/src/gui/tray/UnifiedSearchInputContainer.qml index 7a6457c360355..186d344815de7 100644 --- a/src/gui/tray/UnifiedSearchInputContainer.qml +++ b/src/gui/tray/UnifiedSearchInputContainer.qml @@ -21,98 +21,85 @@ import Style import com.nextcloud.desktopclient TextField { - id: trayWindowUnifiedSearchTextField + id: root + + signal clearText() property bool isSearchInProgress: false readonly property color textFieldIconsColor: palette.dark - readonly property color placeholderColor: palette.dark - readonly property int textFieldIconsOffset: Style.trayHorizontalMargin - - readonly property double textFieldIconsScaleFactor: 0.6 - - readonly property int textFieldHorizontalPaddingOffset: Style.trayHorizontalMargin + readonly property int iconInset: Style.smallSpacing - signal clearText() - - leftPadding: trayWindowUnifiedSearchTextFieldSearchIcon.width + trayWindowUnifiedSearchTextFieldSearchIcon.anchors.leftMargin + textFieldHorizontalPaddingOffset - 1 - rightPadding: trayWindowUnifiedSearchTextFieldClearTextButton.width + trayWindowUnifiedSearchTextFieldClearTextButton.anchors.rightMargin + textFieldHorizontalPaddingOffset + topPadding: topInset + bottomPadding: bottomInset + leftPadding: searchIconImage.width + searchIconImage.x + Style.smallSpacing + rightPadding: (width - clearTextButton.x) + Style.smallSpacing + verticalAlignment: Qt.AlignVCenter placeholderText: qsTr("Search files, messages, events …") - verticalAlignment: Qt.AlignVCenter selectByMouse: true - background: Rectangle { - border.color: palette.dark - radius: Style.trayWindowRadius - color: palette.base - } - Image { - id: trayWindowUnifiedSearchTextFieldSearchIcon - width: Style.trayListItemIconSize - anchors.leftMargin - fillMode: Image.PreserveAspectFit - horizontalAlignment: Image.AlignLeft + id: searchIconImage anchors { - left: parent.left - leftMargin: parent.textFieldIconsOffset - verticalCenter: parent.verticalCenter + left: root.left + leftMargin: iconInset + top: root.top + topMargin: Style.extraSmallSpacing + bottom: root.bottom + bottomMargin: Style.extraSmallSpacing } - visible: !trayWindowUnifiedSearchTextField.isSearchInProgress - - smooth: true; + fillMode: Image.PreserveAspectFit + smooth: true antialiasing: true mipmap: true - source: "image://svgimage-custom-color/search.svg" + "/" + trayWindowUnifiedSearchTextField.textFieldIconsColor - sourceSize: Qt.size(parent.height * parent.textFieldIconsScaleFactor, parent.height * parent.textFieldIconsScaleFactor) + source: "image://svgimage-custom-color/search.svg" + "/" + root.textFieldIconsColor + visible: !root.isSearchInProgress } NCBusyIndicator { id: busyIndicator anchors { - left: trayWindowUnifiedSearchTextField.left - bottom: trayWindowUnifiedSearchTextField.bottom - leftMargin: trayWindowUnifiedSearchTextField.textFieldIconsOffset - 4 - topMargin: Style.smallSpacing - bottomMargin: Style.smallSpacing - verticalCenter: trayWindowUnifiedSearchTextField.verticalCenter + top: root.top + topMargin: Style.extraSmallSpacing + bottom: root.bottom + bottomMargin: Style.extraSmallSpacing + left: root.left + leftMargin: iconInset } width: height - color: trayWindowUnifiedSearchTextField.textFieldIconsColor - visible: trayWindowUnifiedSearchTextField.isSearchInProgress + color: root.textFieldIconsColor + visible: root.isSearchInProgress running: visible } Image { - id: trayWindowUnifiedSearchTextFieldClearTextButton + id: clearTextButton anchors { - right: parent.right - rightMargin: parent.textFieldIconsOffset - verticalCenter: parent.verticalCenter + top: root.top + topMargin: Style.extraSmallSpacing + bottom: root.bottom + bottomMargin: Style.extraSmallSpacing + right: root.right + rightMargin: iconInset } - smooth: true; - antialiasing: true - mipmap: true - - visible: parent.text - source: "image://svgimage-custom-color/clear.svg" + "/" + trayWindowUnifiedSearchTextField.textFieldIconsColor - sourceSize: Qt.size(parent.height * parent.textFieldIconsScaleFactor, parent.height * parent.textFieldIconsScaleFactor) + fillMode: Image.PreserveAspectFit + visible: root.text + source: "image://svgimage-custom-color/clear.svg" + "/" + root.textFieldIconsColor MouseArea { - id: trayWindowUnifiedSearchTextFieldClearTextButtonMouseArea - + id: clearTextButtonMouseArea anchors.fill: parent - - onClicked: trayWindowUnifiedSearchTextField.clearText() + onClicked: root.clearText() } } } diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index a41247831450a..cda260235dcb1 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -151,6 +151,7 @@ QtObject { readonly property int unifiedSearchResultSectionItemLeftPadding: 16 readonly property int unifiedSearchResultSectionItemVerticalPadding: 8 readonly property int unifiedSearchResultNothingFoundHorizontalMargin: 10 + readonly property int unifiedSearchInputContainerHeight: 40 readonly property int radioButtonCustomMarginLeftInner: 4 readonly property int radioButtonCustomMarginLeftOuter: 5 From c73bc2604060245bb6c57271f4f36cc6e7566ee0 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Fri, 15 Nov 2024 16:07:16 +0800 Subject: [PATCH 092/244] Fix placeholderTextColor in user status selector text field Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/UserStatusSelector.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/UserStatusSelector.qml b/src/gui/UserStatusSelector.qml index 6756227238f28..cdac7e9d770ed 100644 --- a/src/gui/UserStatusSelector.qml +++ b/src/gui/UserStatusSelector.qml @@ -211,7 +211,7 @@ ColumnLayout { Layout.preferredHeight: contentHeight + (Style.smallSpacing * 2) placeholderText: qsTr("What is your status?") - placeholderTextColor: palette.midlight + placeholderTextColor: palette.dark text: userStatusSelectorModel.userStatusMessage verticalAlignment: TextInput.AlignVCenter selectByMouse: true From 847cc643df618e7449349c937601f7b7d59c4294 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Fri, 25 Nov 2022 13:06:16 +0100 Subject: [PATCH 093/244] Decouple emoji field button from UserStatusSelectorButton Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/UserStatusSelector.qml | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/gui/UserStatusSelector.qml b/src/gui/UserStatusSelector.qml index cdac7e9d770ed..e20f58890537a 100644 --- a/src/gui/UserStatusSelector.qml +++ b/src/gui/UserStatusSelector.qml @@ -130,20 +130,18 @@ ColumnLayout { Layout.fillWidth: true spacing: 0 - UserStatusSelectorButton { + AbstractButton { id: fieldButton + readonly property bool showBorder: hovered || checked || emojiDialog.visible + Layout.preferredWidth: userStatusMessageTextField.height Layout.preferredHeight: userStatusMessageTextField.height text: userStatusSelectorModel.userStatusEmoji - - onClicked: emojiDialog.open() - onHeightChanged: topButtonsLayout.maxButtonHeight = Math.max(topButtonsLayout.maxButtonHeight, height) - - primary: true padding: 0 - z: hovered ? 2 : 0 // Make sure highlight is seen on top of text field + z: showBorder ? 2 : 0 // Make sure highlight is seen on top of text field + hoverEnabled: true property color borderColor: showBorder ? Style.ncBlue : palette.dark @@ -175,6 +173,15 @@ ColumnLayout { color: palette.button } } + + contentItem: Label { + text: fieldButton.text + textFormat: Text.PlainText + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + + onClicked: emojiDialog.open() } Popup { From b6d25db59257772cdad0f639cb4a52b381e04b60 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Fri, 25 Nov 2022 12:53:56 +0100 Subject: [PATCH 094/244] Replace use of CustomButton with standard Button Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/FileDetailsPage.qml | 5 +--- src/gui/filedetails/ShareDelegate.qml | 11 +++------ src/gui/filedetails/ShareDetailsPage.qml | 23 ++++++++----------- .../macOS/ui/FileProviderEvictionDialog.qml | 2 +- src/gui/macOS/ui/FileProviderFileDelegate.qml | 2 +- src/gui/macOS/ui/FileProviderSettings.qml | 4 ++-- src/gui/macOS/ui/FileProviderStorageInfo.qml | 2 +- src/gui/tray/ActivityItemActions.qml | 2 +- src/gui/tray/ActivityItemContent.qml | 4 ++-- src/gui/tray/CallNotificationDialog.qml | 7 ++---- src/gui/tray/MainWindow.qml | 8 +++---- src/gui/tray/SyncStatus.qml | 12 ++-------- 12 files changed, 29 insertions(+), 53 deletions(-) diff --git a/src/gui/filedetails/FileDetailsPage.qml b/src/gui/filedetails/FileDetailsPage.qml index de3bdb9801798..5b281720e952c 100644 --- a/src/gui/filedetails/FileDetailsPage.qml +++ b/src/gui/filedetails/FileDetailsPage.qml @@ -130,7 +130,7 @@ Page { wrapMode: Text.Wrap } - CustomButton { + Button { id: closeButton Layout.rowSpan: headerGridLayout.rows @@ -142,10 +142,7 @@ Page { icon.source: "image://svgimage-custom-color/clear.svg" + "/" + palette.buttonText icon.width: Style.activityListButtonIconSize icon.height: Style.activityListButtonIconSize - toolTipText: qsTr("Dismiss") - visible: root.showCloseButton - onClicked: root.closeButtonClicked() } diff --git a/src/gui/filedetails/ShareDelegate.qml b/src/gui/filedetails/ShareDelegate.qml index e5762c54f6f4d..895153fba632a 100644 --- a/src/gui/filedetails/ShareDelegate.qml +++ b/src/gui/filedetails/ShareDelegate.qml @@ -152,11 +152,10 @@ GridLayout { spacing: 0 - CustomButton { + Button { id: createLinkButton Layout.alignment: Qt.AlignCenter - toolTipText: qsTr("Create a new share link") Layout.preferredWidth: Style.activityListButtonWidth Layout.preferredHeight: Style.activityListButtonHeight @@ -171,7 +170,7 @@ GridLayout { onClicked: root.createNewLinkShare() } - CustomButton { + Button { id: copyLinkButton function copyShareLink() { @@ -190,8 +189,6 @@ GridLayout { Layout.preferredWidth: shareLinkCopied ? implicitWidth : Style.activityListButtonWidth Layout.preferredHeight: Style.activityListButtonHeight - toolTipText: qsTr("Copy share link location") - text: shareLinkCopied ? qsTr("Copied!") : "" icon.source: shareLinkCopied ? "image://svgimage-custom-color/copy.svg/" + palette.brightText : @@ -219,11 +216,9 @@ GridLayout { } } - CustomButton { + Button { id: moreButton - toolTipText: qsTr("Share options") - Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter Layout.preferredWidth: Style.activityListButtonWidth Layout.preferredHeight: Style.activityListButtonHeight diff --git a/src/gui/filedetails/ShareDetailsPage.qml b/src/gui/filedetails/ShareDetailsPage.qml index 72ca1c202fd7b..c2b8b95ba413d 100644 --- a/src/gui/filedetails/ShareDetailsPage.qml +++ b/src/gui/filedetails/ShareDetailsPage.qml @@ -220,7 +220,7 @@ Page { elide: Text.ElideRight } - CustomButton { + Button { id: closeButton Layout.rowSpan: headerGridLayout.rows @@ -232,8 +232,6 @@ Page { icon.source: "image://svgimage-custom-color/clear.svg" + "/" + palette.buttonText icon.width: Style.activityListButtonIconSize icon.height: Style.activityListButtonIconSize - toolTipText: qsTr("Dismiss") - onClicked: root.closeShareDetails() } @@ -716,26 +714,23 @@ Page { } } - CustomButton { + Button { height: Style.standardPrimaryButtonHeight - - icon.source: "image://svgimage-custom-color/close.svg/" + Style.errorBoxBackgroundColor - imageSourceHover: "image://svgimage-custom-color/close.svg/" + palette.brightText + icon.source: hovered + ? "image://svgimage-custom-color/close.svg/" + palette.brightText + : "image://svgimage-custom-color/close.svg/" + Style.errorBoxBackgroundColor text: qsTr("Unshare") - onClicked: root.deleteShare() } - CustomButton { + Button { height: Style.standardPrimaryButtonHeight - - icon.source: "image://svgimage-custom-color/add.svg/" + root.accentColor - imageSourceHover: "image://svgimage-custom-color/add.svg/" + palette.brightText + icon.source: hovered + ? "image://svgimage-custom-color/add.svg/" + palette.brightText + : "image://svgimage-custom-color/add.svg/" + root.accentColor text: qsTr("Add another link") - visible: root.isLinkShare && root.canCreateLinkShares enabled: visible - onClicked: root.createNewLinkShare() } } diff --git a/src/gui/macOS/ui/FileProviderEvictionDialog.qml b/src/gui/macOS/ui/FileProviderEvictionDialog.qml index 4d94affa725da..87b4c5e98b529 100644 --- a/src/gui/macOS/ui/FileProviderEvictionDialog.qml +++ b/src/gui/macOS/ui/FileProviderEvictionDialog.qml @@ -52,7 +52,7 @@ ApplicationWindow { Layout.fillWidth: true } - CustomButton { + Button { padding: Style.smallSpacing text: qsTr("Reload") onClicked: reloadMaterialisedItems(accountUserIdAtHost) diff --git a/src/gui/macOS/ui/FileProviderFileDelegate.qml b/src/gui/macOS/ui/FileProviderFileDelegate.qml index 731c8f4a64f11..7f59c7e89238d 100644 --- a/src/gui/macOS/ui/FileProviderFileDelegate.qml +++ b/src/gui/macOS/ui/FileProviderFileDelegate.qml @@ -86,7 +86,7 @@ Item { } } - CustomButton { + Button { id: deleteButton Layout.minimumWidth: implicitWidth diff --git a/src/gui/macOS/ui/FileProviderSettings.qml b/src/gui/macOS/ui/FileProviderSettings.qml index 1cf4d7ec8b4d9..b49288a20a18e 100644 --- a/src/gui/macOS/ui/FileProviderSettings.qml +++ b/src/gui/macOS/ui/FileProviderSettings.qml @@ -149,12 +149,12 @@ Page { elide: Text.ElideRight } - CustomButton { + Button { text: qsTr("Signal file provider domain") onClicked: root.controller.signalFileProviderDomain(root.accountUserIdAtHost) } - CustomButton { + Button { text: qsTr("Create debug archive") onClicked: root.controller.createDebugArchive(root.accountUserIdAtHost) } diff --git a/src/gui/macOS/ui/FileProviderStorageInfo.qml b/src/gui/macOS/ui/FileProviderStorageInfo.qml index 3ef4d9274d3c4..b84991d2df167 100644 --- a/src/gui/macOS/ui/FileProviderStorageInfo.qml +++ b/src/gui/macOS/ui/FileProviderStorageInfo.qml @@ -52,7 +52,7 @@ GridLayout { horizontalAlignment: Text.AlignRight } - CustomButton { + Button { Layout.row: 0 Layout.column: 2 Layout.alignment: Layout.AlignRight | Layout.AlignVCenter diff --git a/src/gui/tray/ActivityItemActions.qml b/src/gui/tray/ActivityItemActions.qml index 0795ef3b83b6c..873da58302024 100644 --- a/src/gui/tray/ActivityItemActions.qml +++ b/src/gui/tray/ActivityItemActions.qml @@ -26,7 +26,7 @@ Repeater { model: root.linksForActionButtons - CustomButton { + Button { id: activityActionButton property string verb: model.modelData.verb diff --git a/src/gui/tray/ActivityItemContent.qml b/src/gui/tray/ActivityItemContent.qml index 146a22ef37506..cc56103e40194 100644 --- a/src/gui/tray/ActivityItemContent.qml +++ b/src/gui/tray/ActivityItemContent.qml @@ -158,7 +158,7 @@ RowLayout { Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter spacing: Style.extraSmallSpacing - CustomButton { + Button { id: fileDetailsButton width: Style.activityListButtonWidth @@ -178,7 +178,7 @@ RowLayout { onClicked: Systray.presentShareViewInTray(model.openablePath) } - CustomButton { + Button { id: dismissActionButton width: Style.activityListButtonWidth diff --git a/src/gui/tray/CallNotificationDialog.qml b/src/gui/tray/CallNotificationDialog.qml index c5a9c3cd18394..6524c105ba412 100644 --- a/src/gui/tray/CallNotificationDialog.qml +++ b/src/gui/tray/CallNotificationDialog.qml @@ -210,7 +210,7 @@ ApplicationWindow { id: linksRepeater model: root.links - CustomButton { + Button { id: answerCall readonly property string verb: modelData.verb readonly property bool isAnswerCallButton: verb === "WEB" @@ -219,7 +219,6 @@ ApplicationWindow { text: modelData.label icon.source: root.talkIcon + palette.brightText - imageSourceHover: root.talkIcon + palette.brightText Layout.fillWidth: true Layout.preferredHeight: Style.callNotificationPrimaryButtonMinHeight @@ -233,15 +232,13 @@ ApplicationWindow { Accessible.name: qsTr("Answer Talk call notification") Accessible.onPressAction: answerCall.clicked() } - } - CustomButton { + Button { id: declineCall text: qsTr("Decline") icon.source: root.deleteIcon + "white" - imageSourceHover: root.deleteIcon + "white" Layout.fillWidth: true Layout.preferredHeight: Style.callNotificationPrimaryButtonMinHeight diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index 4a421d9addec7..83565fb5298c7 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -739,7 +739,7 @@ ApplicationWindow { active: false - sourceComponent: CustomButton { + sourceComponent: Button { id: newActivitiesButton hoverEnabled: true padding: Style.smallSpacing @@ -767,9 +767,9 @@ ApplicationWindow { OpacityAnimator { id: fadeoutActivitiesButtonDisappear - target: newActivitiesButton; - from: 1; - to: 0; + target: newActivitiesButton + from: 1 + to: 0 duration: Style.newActivityButtonDisappearFadeTimeout loops: 1 running: false diff --git a/src/gui/tray/SyncStatus.qml b/src/gui/tray/SyncStatus.qml index e8bb975189663..9dc67eda3b590 100644 --- a/src/gui/tray/SyncStatus.qml +++ b/src/gui/tray/SyncStatus.qml @@ -84,13 +84,9 @@ RowLayout { } } - CustomButton { + Button { id: syncNowButton - FontMetrics { - id: syncNowFm - } - Layout.rightMargin: Style.trayHorizontalMargin text: qsTr("Sync now") @@ -109,11 +105,7 @@ RowLayout { } } - CustomButton { - Layout.preferredWidth: syncNowFm.boundingRect(text).width + - leftPadding + - rightPadding + - Style.standardSpacing * 2 + Button { Layout.rightMargin: Style.trayHorizontalMargin text: qsTr("Resolve conflicts") From 86f77e23653c9f34fd7da98504972ff72a996f5c Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Fri, 15 Nov 2024 17:13:14 +0800 Subject: [PATCH 095/244] Remove custom button QML items Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- resources.qrc | 5 -- src/gui/tray/ActivityActionButton.qml | 54 --------------------- src/gui/tray/CustomButton.qml | 47 ------------------- src/gui/tray/NCButtonBackground.qml | 29 ------------ src/gui/tray/NCButtonContents.qml | 67 --------------------------- src/gui/tray/TextButtonContents.qml | 33 ------------- 6 files changed, 235 deletions(-) delete mode 100644 src/gui/tray/ActivityActionButton.qml delete mode 100644 src/gui/tray/CustomButton.qml delete mode 100644 src/gui/tray/NCButtonBackground.qml delete mode 100644 src/gui/tray/NCButtonContents.qml delete mode 100644 src/gui/tray/TextButtonContents.qml diff --git a/resources.qrc b/resources.qrc index 630251749749c..eb5b0e3e3f288 100644 --- a/resources.qrc +++ b/resources.qrc @@ -25,7 +25,6 @@ src/gui/tray/UserLine.qml src/gui/tray/HeaderButton.qml src/gui/tray/SyncStatus.qml - src/gui/tray/ActivityActionButton.qml src/gui/tray/ActivityItem.qml src/gui/tray/AutoSizingMenu.qml src/gui/tray/ActivityList.qml @@ -38,10 +37,6 @@ src/gui/tray/UnifiedSearchResultListItem.qml src/gui/tray/UnifiedSearchResultNothingFound.qml src/gui/tray/UnifiedSearchResultSectionItem.qml - src/gui/tray/CustomButton.qml - src/gui/tray/NCButtonContents.qml - src/gui/tray/NCButtonBackground.qml - src/gui/tray/TextButtonContents.qml src/gui/tray/ActivityItemContextMenu.qml src/gui/tray/ActivityItemActions.qml src/gui/tray/ActivityItemContent.qml diff --git a/src/gui/tray/ActivityActionButton.qml b/src/gui/tray/ActivityActionButton.qml deleted file mode 100644 index 36b92035c00a1..0000000000000 --- a/src/gui/tray/ActivityActionButton.qml +++ /dev/null @@ -1,54 +0,0 @@ -import QtQuick -import QtQuick.Controls -import Style -import com.nextcloud.desktopclient - -AbstractButton { - id: root - - property string toolTipText: "" - - property bool primaryButton: false - - readonly property color adjustedHeaderColor: Style.adjustedCurrentUserHeaderColor - - property string verb: "" - property bool isTalkReplyButton: false - - leftPadding: root.text === "" ? Style.smallSpacing : Style.standardSpacing - rightPadding: root.text === "" ? Style.smallSpacing : Style.standardSpacing - - contentItem: Loader { - id: contentItemLoader - active: true - sourceComponent: root.primaryButton ? primaryButtonContent : textButtonContent - } - - ToolTip { - id: customTextButtonTooltip - text: root.toolTipText - delay: Qt.styleHints.mousePressAndHoldInterval - visible: root.toolTipText !== "" && root.hovered - contentItem: EnforcedPlainTextLabel { text: customTextButtonTooltip.text } - } - - Component { - id: textButtonContent - TextButtonContents { - anchors.fill: parent - hovered: root.hovered - text: root.text - bold: root.primaryButton - } - } - - Component { - id: primaryButtonContent - NCButtonContents { - anchors.fill: parent - hovered: root.hovered - imageSource: root.icon.source - text: root.text - } - } -} diff --git a/src/gui/tray/CustomButton.qml b/src/gui/tray/CustomButton.qml deleted file mode 100644 index 2ed8dc40f36d7..0000000000000 --- a/src/gui/tray/CustomButton.qml +++ /dev/null @@ -1,47 +0,0 @@ -/* - * 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 -import QtQuick.Controls -import QtQuick.Layouts -import Style - -Button { - id: root - - property string imageSourceHover: root.icon.source - property var iconItem: icon - - property string toolTipText: "" - - leftPadding: root.text === "" ? Style.smallSpacing : Style.standardSpacing - rightPadding: root.text === "" ? Style.smallSpacing : Style.standardSpacing - implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding - - hoverEnabled: true - - ToolTip { - text: root.toolTipText - visible: root.toolTipText !== "" && root.hovered - } - - NCButtonContents { - id: contents - display: root.display - hovered: root.hovered - imageSource: root.icon.source - imageSourceWidth: root.icon.width - imageSourceHeight: root.icon.height - } -} diff --git a/src/gui/tray/NCButtonBackground.qml b/src/gui/tray/NCButtonBackground.qml deleted file mode 100644 index cc9d286e8aaa9..0000000000000 --- a/src/gui/tray/NCButtonBackground.qml +++ /dev/null @@ -1,29 +0,0 @@ -/* - * 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 - -import Style - -Rectangle { - property bool hovered: false - property real normalOpacity: 0.3 - property real hoverOpacity: 1.0 - property color normalColor: palette.button - property color hoverColor: palette.button - - color: hovered ? hoverColor : normalColor - opacity: hovered ? hoverOpacity : normalOpacity - radius: width / 2 -} diff --git a/src/gui/tray/NCButtonContents.qml b/src/gui/tray/NCButtonContents.qml deleted file mode 100644 index e0053d850436a..0000000000000 --- a/src/gui/tray/NCButtonContents.qml +++ /dev/null @@ -1,67 +0,0 @@ -/* - * 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 -import QtQuick.Controls -import QtQuick.Layouts - -import Style - -RowLayout { - id: root - - property bool hovered: false - property string imageSource: "" - property int imageSourceWidth: undefined - property int imageSourceHeight: undefined - property string text: "" - property var display - - property alias font: buttonLabel.font - - Image { - id: icon - - Layout.maximumWidth: root.height - Layout.maximumHeight: root.height - Layout.alignment: Qt.AlignCenter - - source: root.imageSource - - sourceSize { - width: root.imageSourceWidth - height: root.imageSourceHeight - } - - fillMode: Image.PreserveAspectFit - horizontalAlignment: Image.AlignHCenter - verticalAlignment: Image.AlignVCenter - visible: root.display === Button.TextOnly ? false : root.hovered ? root.imageSourceHover !== "" : root.imageSource !== "" - } - - EnforcedPlainTextLabel { - id: buttonLabel - - Layout.fillWidth: true - - text: root.text - - visible: root.text !== "" - - horizontalAlignment: icon.visible ? Text.AlignLeft : Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - - elide: Text.ElideRight - } -} diff --git a/src/gui/tray/TextButtonContents.qml b/src/gui/tray/TextButtonContents.qml deleted file mode 100644 index 0d49e63ba96e0..0000000000000 --- a/src/gui/tray/TextButtonContents.qml +++ /dev/null @@ -1,33 +0,0 @@ -/* - * 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 -import QtQuick.Controls -import QtQuick.Layouts - -import Style - -EnforcedPlainTextLabel { - property bool hovered: false - property bool bold: false - - font.underline: true - font.bold: bold - - horizontalAlignment: Text.AlignLeft - verticalAlignment: Text.AlignVCenter - - elide: Text.ElideRight -} - From dfc38718e089a1d22ee0995d1e273a59c6ccda36 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Fri, 15 Nov 2024 17:19:53 +0800 Subject: [PATCH 096/244] Fix sizing of share details page buttons Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/ShareDetailsPage.qml | 10 ++++------ theme/Style/Style.qml | 1 + 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/gui/filedetails/ShareDetailsPage.qml b/src/gui/filedetails/ShareDetailsPage.qml index c2b8b95ba413d..4a78ffe47253a 100644 --- a/src/gui/filedetails/ShareDetailsPage.qml +++ b/src/gui/filedetails/ShareDetailsPage.qml @@ -716,18 +716,16 @@ Page { Button { height: Style.standardPrimaryButtonHeight - icon.source: hovered - ? "image://svgimage-custom-color/close.svg/" + palette.brightText - : "image://svgimage-custom-color/close.svg/" + Style.errorBoxBackgroundColor + icon.source: "image://svgimage-custom-color/close.svg/" + palette.buttonText + icon.height: Style.extraSmallIconSize text: qsTr("Unshare") onClicked: root.deleteShare() } Button { height: Style.standardPrimaryButtonHeight - icon.source: hovered - ? "image://svgimage-custom-color/add.svg/" + palette.brightText - : "image://svgimage-custom-color/add.svg/" + root.accentColor + icon.source: "image://svgimage-custom-color/add.svg/" + palette.buttonText + icon.height: Style.extraSmallIconSize text: qsTr("Add another link") visible: root.isLinkShare && root.canCreateLinkShares enabled: visible diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index cda260235dcb1..d145b16c39c8d 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -71,6 +71,7 @@ QtObject { property int iconButtonWidth: 36 property int standardPrimaryButtonHeight: 40 readonly property int smallIconSize: 16 + readonly property int extraSmallIconSize: 8 property int minActivityHeight: variableSize(32) From 4e17bfee6bc8e243e20e3de13397224b913cfaf1 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Fri, 15 Nov 2024 18:21:15 +0800 Subject: [PATCH 097/244] Fix label alignments on share view checkboxes Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/ShareDetailsPage.qml | 30 ++++++++++++++++-------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/gui/filedetails/ShareDetailsPage.qml b/src/gui/filedetails/ShareDetailsPage.qml index 4a78ffe47253a..1ac69e1b38cbe 100644 --- a/src/gui/filedetails/ShareDetailsPage.qml +++ b/src/gui/filedetails/ShareDetailsPage.qml @@ -260,6 +260,7 @@ Page { readonly property int itemPadding: Style.smallSpacing width: parent.width + spacing: Style.smallSpacing RowLayout { Layout.fillWidth: true @@ -313,7 +314,8 @@ Page { visible: active sourceComponent: CheckBox { spacing: scrollContentsColumn.indicatorSpacing - padding: scrollContentsColumn.itemPadding + leftPadding: scrollContentsColumn.itemPadding + rightPadding: scrollContentsColumn.itemPadding indicator.width: scrollContentsColumn.indicatorItemWidth indicator.height: scrollContentsColumn.indicatorItemWidth @@ -339,7 +341,7 @@ Page { visible: active sourceComponent: ColumnLayout { id: permissionRadioButtonsLayout - spacing: 0 + spacing: Layout.smallSpacing width: parent.width ButtonGroup { @@ -354,7 +356,8 @@ Page { checked: root.currentPermissionMode === permissionMode text: qsTr("View only") spacing: scrollContentsColumn.indicatorSpacing - padding: scrollContentsColumn.itemPadding + leftPadding: scrollContentsColumn.itemPadding + rightPadding: scrollContentsColumn.itemPadding onClicked: root.permissionModeChanged(permissionMode) } @@ -366,7 +369,8 @@ Page { checked: root.currentPermissionMode === permissionMode text: qsTr("Allow upload and editing") spacing: scrollContentsColumn.indicatorSpacing - padding: scrollContentsColumn.itemPadding + leftPadding: scrollContentsColumn.itemPadding + rightPadding: scrollContentsColumn.itemPadding onClicked: root.permissionModeChanged(permissionMode) } @@ -378,7 +382,8 @@ Page { checked: root.currentPermissionMode === permissionMode text: qsTr("File drop (upload only)") spacing: scrollContentsColumn.indicatorSpacing - padding: scrollContentsColumn.itemPadding + leftPadding: scrollContentsColumn.itemPadding + rightPadding: scrollContentsColumn.itemPadding onClicked: root.permissionModeChanged(permissionMode) } @@ -388,7 +393,8 @@ Page { Layout.fillWidth: true spacing: scrollContentsColumn.indicatorSpacing - padding: scrollContentsColumn.itemPadding + leftPadding: scrollContentsColumn.itemPadding + rightPadding: scrollContentsColumn.itemPadding indicator.width: scrollContentsColumn.indicatorItemWidth indicator.height: scrollContentsColumn.indicatorItemWidth @@ -427,7 +433,8 @@ Page { anchors.right: parent.right spacing: scrollContentsColumn.indicatorSpacing - padding: scrollContentsColumn.itemPadding + leftPadding: scrollContentsColumn.itemPadding + rightPadding: scrollContentsColumn.itemPadding indicator.width: scrollContentsColumn.indicatorItemWidth indicator.height: scrollContentsColumn.indicatorItemWidth @@ -452,7 +459,8 @@ Page { Layout.fillWidth: true spacing: scrollContentsColumn.indicatorSpacing - padding: scrollContentsColumn.itemPadding + leftPadding: scrollContentsColumn.itemPadding + rightPadding: scrollContentsColumn.itemPadding indicator.width: scrollContentsColumn.indicatorItemWidth indicator.height: scrollContentsColumn.indicatorItemWidth @@ -561,7 +569,8 @@ Page { Layout.fillWidth: true spacing: scrollContentsColumn.indicatorSpacing - padding: scrollContentsColumn.itemPadding + leftPadding: scrollContentsColumn.itemPadding + rightPadding: scrollContentsColumn.itemPadding indicator.width: scrollContentsColumn.indicatorItemWidth indicator.height: scrollContentsColumn.indicatorItemWidth @@ -645,7 +654,8 @@ Page { Layout.fillWidth: true spacing: scrollContentsColumn.indicatorSpacing - padding: scrollContentsColumn.itemPadding + leftPadding: scrollContentsColumn.itemPadding + rightPadding: scrollContentsColumn.itemPadding indicator.width: scrollContentsColumn.indicatorItemWidth indicator.height: scrollContentsColumn.indicatorItemWidth From 7c3c2563d83ff5bda9a718568ad03b1440ecabbd Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Fri, 15 Nov 2024 18:23:02 +0800 Subject: [PATCH 098/244] Fix displaying of busy indicator on share view Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/ShareView.qml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gui/filedetails/ShareView.qml b/src/gui/filedetails/ShareView.qml index 1a6831ed143d0..e7e6046b7f38e 100644 --- a/src/gui/filedetails/ShareView.qml +++ b/src/gui/filedetails/ShareView.qml @@ -252,11 +252,12 @@ ColumnLayout { sourceComponent: Rectangle { color: palette.base + radius: Style.progressBarRadius opacity: 0.5 NCBusyIndicator { anchors.centerIn: parent - color: palette.midlight + color: palette.dark } } } From f2237ea8b395d1e94be8c6f1e9522c7083b9691a Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Fri, 15 Nov 2024 18:30:29 +0800 Subject: [PATCH 099/244] Do not use magic numnbers for spacing of sync status icon Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/SyncStatus.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/tray/SyncStatus.qml b/src/gui/tray/SyncStatus.qml index 9dc67eda3b590..e30c6eb63326c 100644 --- a/src/gui/tray/SyncStatus.qml +++ b/src/gui/tray/SyncStatus.qml @@ -26,9 +26,9 @@ RowLayout { Layout.preferredHeight: size Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter - Layout.topMargin: 16 + Layout.topMargin: Style.trayHorizontalMargin Layout.rightMargin: whiteSpace * (0.5 + Style.thumbnailImageSizeReduction) - Layout.bottomMargin: 16 + Layout.bottomMargin: Style.trayHorizontalMargin Layout.leftMargin: Style.trayHorizontalMargin + (whiteSpace * (0.5 - Style.thumbnailImageSizeReduction)) padding: 0 From 1efaf3778bd338feb1369beb21b6b0fe0bdc308d Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 10:25:27 +0800 Subject: [PATCH 100/244] Fix search bar separator in tray window Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index 83565fb5298c7..6b90cae4bbfb1 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -593,26 +593,26 @@ ApplicationWindow { isSearchInProgress: UserModel.currentUser.unifiedSearchResultsListModel.isSearchInProgress onTextEdited: { UserModel.currentUser.unifiedSearchResultsListModel.searchTerm = trayWindowUnifiedSearchInputContainer.text } onClearText: { UserModel.currentUser.unifiedSearchResultsListModel.searchTerm = "" } + } - // TODO: consult designers, this line looks weird atm - // Rectangle { - // id: bottomUnifiedSearchInputSeparator + Rectangle { + id: bottomUnifiedSearchInputSeparator - // anchors.left: parent.left - // anchors.right: parent.right - // anchors.bottom: parent.bottom + anchors.top: trayWindowUnifiedSearchInputContainer.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.topMargin: Style.trayHorizontalMargin - // height: 1 - // color: Style.menuBorder - // visible: trayWindowMainItem.isUnifiedSearchActive - // } + height: 1 + color: palette.dark + visible: trayWindowMainItem.isUnifiedSearchActive } ErrorBox { id: unifiedSearchResultsErrorLabel 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.top: bottomUnifiedSearchInputSeparator.bottom anchors.left: trayWindowMainItem.left anchors.right: trayWindowMainItem.right anchors.margins: Style.trayHorizontalMargin @@ -621,7 +621,7 @@ ApplicationWindow { UnifiedSearchResultNothingFound { id: unifiedSearchResultNothingFound - anchors.top: trayWindowUnifiedSearchInputContainer.bottom + anchors.top: bottomUnifiedSearchInputSeparator.bottom anchors.left: trayWindowMainItem.left anchors.right: trayWindowMainItem.right anchors.topMargin: Style.trayHorizontalMargin @@ -639,7 +639,7 @@ ApplicationWindow { Loader { id: unifiedSearchResultsListViewSkeletonLoader - anchors.top: trayWindowUnifiedSearchInputContainer.bottom + anchors.top: bottomUnifiedSearchInputSeparator.bottom anchors.left: trayWindowMainItem.left anchors.right: trayWindowMainItem.right anchors.bottom: trayWindowMainItem.bottom @@ -668,7 +668,7 @@ ApplicationWindow { } visible: unifiedSearchResultsListView.count > 0 - anchors.top: trayWindowUnifiedSearchInputContainer.bottom + anchors.top: bottomUnifiedSearchInputSeparator.bottom anchors.left: trayWindowMainItem.left anchors.right: trayWindowMainItem.right anchors.bottom: trayWindowMainItem.bottom From 8eef0a0acba461936222e647a6c2abd485122108 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 10:31:30 +0800 Subject: [PATCH 101/244] Remove menuBorder Style variable, just use palette (as we have already done in parts) Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/NCProgressBar.qml | 6 +++--- theme/Style/Style.qml | 3 --- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/gui/tray/NCProgressBar.qml b/src/gui/tray/NCProgressBar.qml index c620f149a2ff5..5c0d2afb3d59b 100644 --- a/src/gui/tray/NCProgressBar.qml +++ b/src/gui/tray/NCProgressBar.qml @@ -24,7 +24,7 @@ ProgressBar { implicitHeight: Style.progressBarBackgroundHeight radius: Style.progressBarRadius color: Style.progressBarBackgroundColor - border.color: Style.progressBarBackgroundBorderColor + border.color: palette.dark border.width: Style.progressBarBackgroundBorderWidth } @@ -36,8 +36,8 @@ ProgressBar { width: control.visualPosition * parent.width height: parent.height radius: Style.progressBarRadius - color: Style.progressBarContentColor - border.color: Style.progressBarContentBorderColor + color: palette.dark + border.color: palette.dark border.width: Style.progressBarContentBorderWidth } } diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index d145b16c39c8d..4ae40a68f2e53 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -16,7 +16,6 @@ QtObject { readonly property color ncSecondaryTextColor: "#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 buttonBackgroundColor: Theme.systemPalette.button readonly property color positiveColor: Qt.rgba(0.38, 0.74, 0.38, 1) @@ -194,9 +193,7 @@ QtObject { property int progressBarContentBorderWidth: 1 property int progressBarBackgroundBorderWidth: 1 property color progressBarContentColor: ncBlue - property color progressBarContentBorderColor: menuBorder property color progressBarBackgroundColor: backgroundColor - property color progressBarBackgroundBorderColor: menuBorder property int newActivitiesButtonWidth: 150 property int newActivitiesButtonHeight: 40 From 3b9bce00d6d73eacf2c1e7513da57b660f74a01c Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 10:36:50 +0800 Subject: [PATCH 102/244] Remove now unused hover colors Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- theme/Style/Style.qml | 2 -- 1 file changed, 2 deletions(-) diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index 4ae40a68f2e53..6c10e4c998dac 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -14,8 +14,6 @@ QtObject { readonly property color ncTextColor: Theme.systemPalette.windowText readonly property color ncTextBrightColor: "white" readonly property color ncSecondaryTextColor: "#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 backgroundColor: Theme.systemPalette.base readonly property color buttonBackgroundColor: Theme.systemPalette.button readonly property color positiveColor: Qt.rgba(0.38, 0.74, 0.38, 1) From 4abc226b5121cb3c021280ffb71414f17c7b5c4d Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 10:37:29 +0800 Subject: [PATCH 103/244] Remove background color from Style, use palette base in its place Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/ResolveConflictsDialog.qml | 2 +- src/gui/macOS/ui/FileProviderEvictionDialog.qml | 2 +- src/gui/tray/CallNotificationDialog.qml | 2 +- src/gui/tray/EditFileLocallyLoadingDialog.qml | 2 +- src/gui/tray/NCProgressBar.qml | 2 +- theme/Style/Style.qml | 2 -- 6 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/gui/ResolveConflictsDialog.qml b/src/gui/ResolveConflictsDialog.qml index af404fba41fd6..a4b8474cd47f1 100644 --- a/src/gui/ResolveConflictsDialog.qml +++ b/src/gui/ResolveConflictsDialog.qml @@ -167,7 +167,7 @@ ApplicationWindow { } Rectangle { - color: Style.backgroundColor + color: palette.base anchors.fill: parent z: 1 } diff --git a/src/gui/macOS/ui/FileProviderEvictionDialog.qml b/src/gui/macOS/ui/FileProviderEvictionDialog.qml index 87b4c5e98b529..c62363b659315 100644 --- a/src/gui/macOS/ui/FileProviderEvictionDialog.qml +++ b/src/gui/macOS/ui/FileProviderEvictionDialog.qml @@ -31,7 +31,7 @@ ApplicationWindow { property string accountUserIdAtHost: "" title: qsTr("Evict materialised files") - color: Style.backgroundColor + color: palette.base flags: Qt.Dialog | Qt.WindowStaysOnTopHint width: 640 height: 480 diff --git a/src/gui/tray/CallNotificationDialog.qml b/src/gui/tray/CallNotificationDialog.qml index 6524c105ba412..22f11da71fb5e 100644 --- a/src/gui/tray/CallNotificationDialog.qml +++ b/src/gui/tray/CallNotificationDialog.qml @@ -86,7 +86,7 @@ ApplicationWindow { width: parent.width height: contentLayout.height + (root.windowSpacing * 2) radius: Systray.useNormalWindow ? 0.0 : Style.trayWindowRadius - color: Style.backgroundColor + color: palette.base border.width: Style.trayWindowBorderWidth border.color: palette.dark clip: true diff --git a/src/gui/tray/EditFileLocallyLoadingDialog.qml b/src/gui/tray/EditFileLocallyLoadingDialog.qml index 0696c302a0840..47dd20d09aa77 100644 --- a/src/gui/tray/EditFileLocallyLoadingDialog.qml +++ b/src/gui/tray/EditFileLocallyLoadingDialog.qml @@ -30,7 +30,7 @@ ApplicationWindow { Rectangle { id: windowBackground - color: Style.backgroundColor + color: palette.base radius: Style.trayWindowRadius border.color: palette.dark anchors.fill: parent diff --git a/src/gui/tray/NCProgressBar.qml b/src/gui/tray/NCProgressBar.qml index 5c0d2afb3d59b..93b4d771c58e9 100644 --- a/src/gui/tray/NCProgressBar.qml +++ b/src/gui/tray/NCProgressBar.qml @@ -23,7 +23,7 @@ ProgressBar { implicitWidth: Style.progressBarWidth implicitHeight: Style.progressBarBackgroundHeight radius: Style.progressBarRadius - color: Style.progressBarBackgroundColor + color: palette.base border.color: palette.dark border.width: Style.progressBarBackgroundBorderWidth } diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index 6c10e4c998dac..301c42fbf40e7 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -15,7 +15,6 @@ QtObject { readonly property color ncTextBrightColor: "white" readonly property color ncSecondaryTextColor: "#808080" readonly property color backgroundColor: Theme.systemPalette.base - 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 @@ -191,7 +190,6 @@ QtObject { property int progressBarContentBorderWidth: 1 property int progressBarBackgroundBorderWidth: 1 property color progressBarContentColor: ncBlue - property color progressBarBackgroundColor: backgroundColor property int newActivitiesButtonWidth: 150 property int newActivitiesButtonHeight: 40 From 131c3b4f352640b1a05a08868de08513a387b651 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 10:41:28 +0800 Subject: [PATCH 104/244] Use standard text colour in ncinputtextedit Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/NCInputTextEdit.qml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/gui/filedetails/NCInputTextEdit.qml b/src/gui/filedetails/NCInputTextEdit.qml index 4900f8cf3725e..a2b95fc330dc6 100644 --- a/src/gui/filedetails/NCInputTextEdit.qml +++ b/src/gui/filedetails/NCInputTextEdit.qml @@ -27,7 +27,6 @@ TextEdit { readonly property alias submitButton: submitButton clip: true - color: Style.ncTextColor textMargin: Style.smallSpacing wrapMode: TextEdit.Wrap selectByMouse: true From c301de1acb77a03d001c9494a459d53f98f89f1f Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 10:50:51 +0800 Subject: [PATCH 105/244] Move remaining uses of secondary text color to use palette midlight, remove this property froms style Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/macOS/ui/FileProviderFileDelegate.qml | 2 +- src/gui/macOS/ui/FileProviderSettings.qml | 2 +- src/gui/macOS/ui/FileProviderStorageInfo.qml | 2 +- theme/Style/Style.qml | 1 - 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/gui/macOS/ui/FileProviderFileDelegate.qml b/src/gui/macOS/ui/FileProviderFileDelegate.qml index 7f59c7e89238d..8bfdd034a559b 100644 --- a/src/gui/macOS/ui/FileProviderFileDelegate.qml +++ b/src/gui/macOS/ui/FileProviderFileDelegate.qml @@ -81,7 +81,7 @@ Item { EnforcedPlainTextLabel { id: fileTypeLabel text: root.fileTypeString - color: Style.ncSecondaryTextColor + color: palette.midlight } } } diff --git a/src/gui/macOS/ui/FileProviderSettings.qml b/src/gui/macOS/ui/FileProviderSettings.qml index b49288a20a18e..8b11c0322021d 100644 --- a/src/gui/macOS/ui/FileProviderSettings.qml +++ b/src/gui/macOS/ui/FileProviderSettings.qml @@ -74,7 +74,7 @@ Page { Rectangle { Layout.fillWidth: true height: Style.normalBorderWidth - color: Style.ncSecondaryTextColor + color: palette.midlight } FileProviderSyncStatus { diff --git a/src/gui/macOS/ui/FileProviderStorageInfo.qml b/src/gui/macOS/ui/FileProviderStorageInfo.qml index b84991d2df167..107f2abe53616 100644 --- a/src/gui/macOS/ui/FileProviderStorageInfo.qml +++ b/src/gui/macOS/ui/FileProviderStorageInfo.qml @@ -48,7 +48,7 @@ GridLayout { Layout.fillWidth: true text: qsTr("%1 GB of %2 GB remote files synced").arg(root.localUsedStorage.toFixed(2)).arg(root.remoteUsedStorage.toFixed(2)); elide: Text.ElideRight - color: Style.ncSecondaryTextColor + color: palette.midlight horizontalAlignment: Text.AlignRight } diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index 301c42fbf40e7..3866bb82db2ab 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -13,7 +13,6 @@ QtObject { readonly property color ncHeaderTextColor: Theme.wizardHeaderTitleColor readonly property color ncTextColor: Theme.systemPalette.windowText readonly property color ncTextBrightColor: "white" - readonly property color ncSecondaryTextColor: "#808080" readonly property color backgroundColor: Theme.systemPalette.base readonly property color positiveColor: Qt.rgba(0.38, 0.74, 0.38, 1) From 8cf42bb3d11b909cc25100711d0f141e53e889cf Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 11:02:21 +0800 Subject: [PATCH 106/244] Remove unused colours from style Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- theme/Style/Style.qml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index 3866bb82db2ab..0ee8d5f5c630c 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -11,11 +11,6 @@ QtObject { // Colors readonly property color ncBlue: Theme.wizardHeaderBackgroundColor readonly property color ncHeaderTextColor: Theme.wizardHeaderTitleColor - readonly property color ncTextColor: Theme.systemPalette.windowText - readonly property color ncTextBrightColor: "white" - readonly property color backgroundColor: Theme.systemPalette.base - 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 adjustedCurrentUserHeaderColor: Theme.darkMode ? Qt.lighter(currentUserHeaderColor, 2) From 22883f5dfb729feda88b2d42a9121660a8317ee6 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 11:02:46 +0800 Subject: [PATCH 107/244] Use accentColor rather than header colour where appropriate Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 2 +- theme/Style/Style.qml | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index 6b90cae4bbfb1..1b74eb0b1b360 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -212,7 +212,7 @@ ApplicationWindow { height: parent.height backgroundsVisible: false - accentColor: Style.currentUserHeaderColor + accentColor: Style.accentColor accountState: fileDetailsDrawer.folderAccountState localPath: fileDetailsDrawer.fileLocalPath showCloseButton: true diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index 0ee8d5f5c630c..5e8f83a1cdc9d 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -9,8 +9,10 @@ QtObject { readonly property bool darkMode: Theme.darkMode // Colors - readonly property color ncBlue: Theme.wizardHeaderBackgroundColor + readonly property color ncBlue: Theme.wizardHeaderBackgroundColor readonly property color ncHeaderTextColor: Theme.wizardHeaderTitleColor + readonly property color accentColor: UserModel.currentUser ? UserModel.currentUser.accentColor : ncBlue + readonly property color currentUserHeaderColor: UserModel.currentUser ? UserModel.currentUser.headerColor : ncBlue readonly property color currentUserHeaderTextColor: UserModel.currentUser ? UserModel.currentUser.headerTextColor : ncHeaderTextColor readonly property color adjustedCurrentUserHeaderColor: Theme.darkMode ? Qt.lighter(currentUserHeaderColor, 2) From 8888899d11ff75363106fbba0d4fa0273e9a8ccf Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 11:07:04 +0800 Subject: [PATCH 108/244] Give sync progress bar expected fill colour Signed-off-by: Claudio Cambra f p Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 1 + src/gui/tray/NCProgressBar.qml | 5 ++++- src/gui/tray/SyncStatus.qml | 2 ++ theme/Style/Style.qml | 1 - 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index 1b74eb0b1b360..f14fa49287d3c 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -708,6 +708,7 @@ ApplicationWindow { SyncStatus { id: syncStatus + accentColor: Style.accentColor visible: !trayWindowMainItem.isUnifiedSearchActive anchors.top: trayWindowUnifiedSearchInputContainer.bottom diff --git a/src/gui/tray/NCProgressBar.qml b/src/gui/tray/NCProgressBar.qml index 93b4d771c58e9..b86d0faf30660 100644 --- a/src/gui/tray/NCProgressBar.qml +++ b/src/gui/tray/NCProgressBar.qml @@ -16,9 +16,12 @@ import QtQuick import QtQuick.Controls import Style +// TODO: the current style does not support customization of this control ProgressBar { id: control + property color fillColor: Style.ncBlue + background: Rectangle { implicitWidth: Style.progressBarWidth implicitHeight: Style.progressBarBackgroundHeight @@ -36,7 +39,7 @@ ProgressBar { width: control.visualPosition * parent.width height: parent.height radius: Style.progressBarRadius - color: palette.dark + color: control.fillColor border.color: palette.dark border.width: Style.progressBarContentBorderWidth } diff --git a/src/gui/tray/SyncStatus.qml b/src/gui/tray/SyncStatus.qml index e30c6eb63326c..b482c5586dab7 100644 --- a/src/gui/tray/SyncStatus.qml +++ b/src/gui/tray/SyncStatus.qml @@ -10,6 +10,7 @@ RowLayout { id: root property alias model: syncStatus + property color accentColor: Style.ncBlue spacing: Style.trayHorizontalMargin @@ -69,6 +70,7 @@ RowLayout { sourceComponent: NCProgressBar { id: syncProgressBar value: syncStatus.syncProgress + fillColor: root.accentColor } } diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index 5e8f83a1cdc9d..04dcd57dc2946 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -185,7 +185,6 @@ QtObject { property int progressBarRadius: 4 property int progressBarContentBorderWidth: 1 property int progressBarBackgroundBorderWidth: 1 - property color progressBarContentColor: ncBlue property int newActivitiesButtonWidth: 150 property int newActivitiesButtonHeight: 40 From 69b1aff7a399635ea05261a5df696a05889b75cd Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 11:10:16 +0800 Subject: [PATCH 109/244] Use constexpr for accentcolor adjustment value Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/libsync/account.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp index df4030de8c64d..84c68b010db84 100644 --- a/src/libsync/account.cpp +++ b/src/libsync/account.cpp @@ -222,7 +222,7 @@ QColor Account::accentColor() const auto darknessAdjustment = static_cast((1 - Theme::getColorDarkness(accentColor)) * effectMultiplier); darknessAdjustment *= darknessAdjustment; // Square the value to pronounce the darkness more in lighter colours - const auto baseAdjustment = 125; + constexpr auto baseAdjustment = 125; const auto adjusted = Theme::isDarkColor(accentColor) ? accentColor : accentColor.darker(baseAdjustment + darknessAdjustment); return adjusted; } From 779361aaecd63c74ae2da52caf6c3fc0b9a20051 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 11:45:43 +0800 Subject: [PATCH 110/244] Remove unused style measurements Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- theme/Style/Style.qml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index 04dcd57dc2946..a097bc61feaf4 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -93,14 +93,10 @@ QtObject { property double trayFoldersMenuButtonDropDownCaretIconSizeFraction: 0.3 property double trayFoldersMenuButtonMainIconSizeFraction: 1.0 - trayFoldersMenuButtonDropDownCaretIconSizeFraction - property int addAccountButtonHeight: 50 - property int activityListButtonWidth: 42 property int activityListButtonHeight: 32 property int activityListButtonIconSize: 18 property int headerButtonIconSize: 48 - property int addButtonIconSize: 26 - property int dismissButtonSize: 26 property int minimumActivityItemHeight: 24 property int accountIconsMenuMargin: 7 From 51f03942cc97117dd929cbe6c2dab467abe996a3 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 11:51:20 +0800 Subject: [PATCH 111/244] Fix colour of indicator outlines in tray header elements Signed-off-by: Claudio Cambra f bgc Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 2 ++ src/gui/tray/TrayFoldersMenuButton.qml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index f14fa49287d3c..82ea64a93c83b 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -400,6 +400,7 @@ ApplicationWindow { && UserModel.currentUser.serverHasUserStatus width: Style.accountAvatarStateIndicatorSize + + Style.trayFolderStatusIndicatorSizeOffset height: width + color: trayWindowHeaderBackground.color anchors.bottom: currentAccountAvatar.bottom anchors.right: currentAccountAvatar.right radius: width * Style.trayFolderStatusIndicatorRadiusFactor @@ -501,6 +502,7 @@ ApplicationWindow { visible: currentUser.hasLocalFolder currentUser: UserModel.currentUser + parentBackgroundColor: trayWindowHeaderBackground.color onClicked: openLocalFolderButton.userHasGroupFolders ? openLocalFolderButton.toggleMenuOpen() : UserModel.openCurrentAccountLocalFolder() diff --git a/src/gui/tray/TrayFoldersMenuButton.qml b/src/gui/tray/TrayFoldersMenuButton.qml index a2197c7c84a13..9ba7cf693a4ff 100644 --- a/src/gui/tray/TrayFoldersMenuButton.qml +++ b/src/gui/tray/TrayFoldersMenuButton.qml @@ -26,6 +26,7 @@ HeaderButton { required property var currentUser property bool userHasGroupFolders: currentUser.groupFolders.length > 0 + property color parentBackgroundColor: "transparent" function openMenu() { foldersMenuLoader.openMenu() @@ -90,6 +91,7 @@ HeaderButton { id: folderStateIndicatorBackground width: Style.folderStateIndicatorSize + Style.trayFolderStatusIndicatorSizeOffset height: width + color: root.parentBackgroundColor anchors.centerIn: parent radius: width * Style.trayFolderStatusIndicatorRadiusFactor z: -2 From 6a118d4f64ab4fcc0abd5fdc93a0f3457f176641 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 11:58:57 +0800 Subject: [PATCH 112/244] Reduce size of tray window header Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- theme/Style/Style.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index a097bc61feaf4..6d63d2898a705 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -44,7 +44,7 @@ QtObject { // dropdown menus radius property int halfTrayWindowRadius: 5 property int trayWindowBorderWidth: variableSize(1) - property int trayWindowHeaderHeight: variableSize(60) + property int trayWindowHeaderHeight: variableSize(50) property int trayHorizontalMargin: 10 property int trayModalWidth: 380 property int trayModalHeight: 490 From 1053c2deb1a43f955aa00e3e09adb433f99e5b48 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 21 Nov 2024 13:29:45 +0800 Subject: [PATCH 113/244] Remove rectangle aboce folder state indicator background in tray folders menu button Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/TrayFoldersMenuButton.qml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/gui/tray/TrayFoldersMenuButton.qml b/src/gui/tray/TrayFoldersMenuButton.qml index 9ba7cf693a4ff..85fa37d098ede 100644 --- a/src/gui/tray/TrayFoldersMenuButton.qml +++ b/src/gui/tray/TrayFoldersMenuButton.qml @@ -94,16 +94,6 @@ HeaderButton { color: root.parentBackgroundColor anchors.centerIn: parent radius: width * Style.trayFolderStatusIndicatorRadiusFactor - z: -2 - } - - Rectangle { - id: folderStateIndicatorBackgroundMouseHover - width: Style.folderStateIndicatorSize + Style.trayFolderStatusIndicatorSizeOffset - height: width - anchors.centerIn: parent - opacity: Style.trayFolderStatusIndicatorMouseHoverOpacityFactor - radius: width * Style.trayFolderStatusIndicatorRadiusFactor z: -1 } } From cd6877b07887cd03fe2c2842eafc9e36fb31163c Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 21 Nov 2024 13:51:29 +0800 Subject: [PATCH 114/244] Remove unused properties from UserLine Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/UserLine.qml | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/gui/tray/UserLine.qml b/src/gui/tray/UserLine.qml index 7c22c7ae89fe1..6502817e9f135 100644 --- a/src/gui/tray/UserLine.qml +++ b/src/gui/tray/UserLine.qml @@ -26,8 +26,6 @@ AbstractButton { signal showUserStatusSelector(int id) - property variant dialog; - property variant comp; Accessible.role: Accessible.MenuItem Accessible.name: qsTr("Switch to account") + " " + model.name From 6f26e9010bdbc7c9a2ea9c8574870095ec2c47a7 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 21 Nov 2024 14:11:41 +0800 Subject: [PATCH 115/244] Do not load caret on current user button if the button had a non-null indicator Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index 82ea64a93c83b..403accf3c2a0e 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -478,16 +478,19 @@ ApplicationWindow { } } - Image { - Layout.alignment: Qt.AlignRight - verticalAlignment: Qt.AlignCenter - horizontalAlignment: Qt.AlignRight - Layout.leftMargin: Style.accountDropDownCaretMargin - source: "image://svgimage-custom-color/caret-down.svg/" + palette.windowText - sourceSize.width: Style.accountDropDownCaretSize - sourceSize.height: Style.accountDropDownCaretSize - Accessible.role: Accessible.PopupMenu - Accessible.name: qsTr("Account switcher and settings menu") + Loader { + active: currentAccountButton.indicator === null + sourceComponent: Image { + Layout.alignment: Qt.AlignRight + verticalAlignment: Qt.AlignCenter + horizontalAlignment: Qt.AlignRight + Layout.leftMargin: Style.accountDropDownCaretMargin + source: "image://svgimage-custom-color/caret-down.svg/" + palette.windowText + sourceSize.width: Style.accountDropDownCaretSize + sourceSize.height: Style.accountDropDownCaretSize + Accessible.role: Accessible.PopupMenu + Accessible.name: qsTr("Account switcher and settings menu") + } } } } From 0b321cb6be909519a4c77fb162865b5edca8fe14 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 21 Nov 2024 14:22:24 +0800 Subject: [PATCH 116/244] Move current account header button definition into own file Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- resources.qrc | 1 + src/gui/tray/CurrentAccountHeaderButton.qml | 261 ++++++++++++++++++++ src/gui/tray/MainWindow.qml | 245 +----------------- 3 files changed, 269 insertions(+), 238 deletions(-) create mode 100644 src/gui/tray/CurrentAccountHeaderButton.qml diff --git a/resources.qrc b/resources.qrc index eb5b0e3e3f288..bcebefc776608 100644 --- a/resources.qrc +++ b/resources.qrc @@ -28,6 +28,7 @@ src/gui/tray/ActivityItem.qml src/gui/tray/AutoSizingMenu.qml src/gui/tray/ActivityList.qml + src/gui/tray/CurrentAccountHeaderButton.qml src/gui/tray/UnifiedSearchInputContainer.qml src/gui/tray/UnifiedSearchResultFetchMoreTrigger.qml src/gui/tray/UnifiedSearchResultItem.qml diff --git a/src/gui/tray/CurrentAccountHeaderButton.qml b/src/gui/tray/CurrentAccountHeaderButton.qml new file mode 100644 index 0000000000000..74d53db3cd237 --- /dev/null +++ b/src/gui/tray/CurrentAccountHeaderButton.qml @@ -0,0 +1,261 @@ +/* + * Copyright (C) 2024 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 +import QtQuick.Controls +import QtQuick.Layouts + +import "../" +import "../filedetails/" + +import Style +import com.nextcloud.desktopclient + +Button { + id: root + + readonly property alias userLineInstantiator: userLineInstantiator + readonly property alias accountMenu: accountMenu + + display: AbstractButton.IconOnly + flat: true + + Accessible.role: Accessible.ButtonMenu + Accessible.name: qsTr("Current account") + Accessible.onPressAction: root.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: (root.x + 2) + y: (root.y + Style.trayWindowHeaderHeight + 2) + + width: (Style.rootWidth - 2) + height: Math.min(implicitHeight, maxMenuHeight) + closePolicy: Menu.CloseOnPressOutsideParent | Menu.CloseOnEscape + + 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: MenuItem { + implicitHeight: instantiatedUserLine.height + UserLine { + id: instantiatedUserLine + width: parent.width + onShowUserStatusSelector: { + userStatusDrawer.openUserStatusDrawer(model.index); + accountMenu.close(); + } + onClicked: UserModel.currentUserId = model.index; + } + } + onObjectAdded: accountMenu.insertItem(index, object) + onObjectRemoved: accountMenu.removeItem(object) + } + + MenuItem { + id: addAccountButton + hoverEnabled: true + visible: Systray.enableAddAccount + + icon.source: "image://svgimage-custom-color/add.svg/" + palette.windowText + icon.width: Style.accountAvatarSize + text: qsTr("Add account") + 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 + 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() + 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() + Accessible.role: Accessible.MenuItem + Accessible.name: text + Accessible.onPressAction: exitButton.clicked() + } + } + + RowLayout { + id: accountControlRowLayout + + height: Style.trayWindowHeaderHeight + width: Style.rootWidth + spacing: 0 + + Image { + id: currentAccountAvatar + + Layout.leftMargin: Style.trayHorizontalMargin + verticalAlignment: Qt.AlignCenter + cache: false + source: (UserModel.currentUser && 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 && UserModel.currentUser.isConnected + && UserModel.currentUser.serverHasUserStatus + width: Style.accountAvatarStateIndicatorSize + + Style.trayFolderStatusIndicatorSizeOffset + height: width + color: trayWindowHeaderBackground.color + anchors.bottom: currentAccountAvatar.bottom + anchors.right: currentAccountAvatar.right + radius: width * Style.trayFolderStatusIndicatorRadiusFactor + } + + Image { + id: currentAccountStatusIndicator + visible: UserModel.currentUser && UserModel.currentUser.isConnected + && UserModel.currentUser.serverHasUserStatus + source: UserModel.currentUser ? 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 ? UserModel.currentUser.name : "" + elide: Text.ElideRight + + font.pixelSize: Style.topLinePixelSize + font.bold: true + } + + EnforcedPlainTextLabel { + id: currentAccountServer + Layout.alignment: Qt.AlignLeft | Qt.AlignBottom + width: Style.currentAccountLabelWidth + text: UserModel.currentUser ? UserModel.currentUser.server : "" + elide: Text.ElideRight + visible: UserModel.numUsers() > 1 + } + + RowLayout { + id: currentUserStatus + visible: UserModel.currentUser && UserModel.currentUser.isConnected && + UserModel.currentUser.serverHasUserStatus + spacing: Style.accountLabelsSpacing + width: parent.width + + EnforcedPlainTextLabel { + id: emoji + visible: UserModel.currentUser && UserModel.currentUser.statusEmoji !== "" + width: Style.userStatusEmojiSize + text: UserModel.currentUser ? UserModel.currentUser.statusEmoji : "" + } + EnforcedPlainTextLabel { + id: message + Layout.alignment: Qt.AlignLeft | Qt.AlignBottom + Layout.fillWidth: true + visible: UserModel.currentUser && UserModel.currentUser.statusMessage !== "" + width: Style.currentAccountLabelWidth + text: UserModel.currentUser && UserModel.currentUser.statusMessage !== "" + ? UserModel.currentUser.statusMessage + : UserModel.currentUser ? UserModel.currentUser.server : "" + elide: Text.ElideRight + font.pixelSize: Style.subLinePixelSize + } + } + } + + Loader { + active: root.indicator === null + sourceComponent: Image { + Layout.alignment: Qt.AlignRight + verticalAlignment: Qt.AlignCenter + horizontalAlignment: Qt.AlignRight + Layout.leftMargin: Style.accountDropDownCaretMargin + source: "image://svgimage-custom-color/caret-down.svg/" + palette.windowText + sourceSize.width: Style.accountDropDownCaretSize + sourceSize.height: Style.accountDropDownCaretSize + Accessible.role: Accessible.PopupMenu + Accessible.name: qsTr("Account switcher and settings menu") + } + } + } +} diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index 403accf3c2a0e..71742adf492e2 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -54,9 +54,9 @@ ApplicationWindow { 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; + // see also id:currentAccountHeaderButton.accountMenu below + currentAccountHeaderButton.userLineInstantiator.active = false; + currentAccountHeaderButton.userLineInstantiator.active = true; syncStatus.model.load(); } @@ -70,7 +70,7 @@ ApplicationWindow { Connections { target: UserModel function onCurrentUserChanged() { - accountMenu.close(); + currentAccountHeaderButton.accountMenu.close(); syncStatus.model.load(); } } @@ -96,7 +96,7 @@ ApplicationWindow { fileDetailsDrawer.close(); if(Systray.isOpen) { - accountMenu.close(); + currentAccountHeaderButton.accountMenu.close(); appsMenu.close(); openLocalFolderButton.closeMenu() } @@ -258,241 +258,10 @@ ApplicationWindow { spacing: 0 anchors.fill: parent - Button { - id: currentAccountButton - + CurrentAccountHeaderButton { + id: currentAccountHeaderButton 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 - - 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: MenuItem { - implicitHeight: instantiatedUserLine.height - UserLine { - id: instantiatedUserLine - width: parent.width - onShowUserStatusSelector: { - userStatusDrawer.openUserStatusDrawer(model.index); - accountMenu.close(); - } - onClicked: UserModel.currentUserId = model.index; - } - } - onObjectAdded: accountMenu.insertItem(index, object) - onObjectRemoved: accountMenu.removeItem(object) - } - - MenuItem { - id: addAccountButton - hoverEnabled: true - visible: Systray.enableAddAccount - - icon.source: "image://svgimage-custom-color/add.svg/" + palette.windowText - icon.width: Style.accountAvatarSize - text: qsTr("Add account") - 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 - 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() - 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() - Accessible.role: Accessible.MenuItem - Accessible.name: text - Accessible.onPressAction: exitButton.clicked() - } - } - - 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 && 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 && UserModel.currentUser.isConnected - && UserModel.currentUser.serverHasUserStatus - width: Style.accountAvatarStateIndicatorSize + + Style.trayFolderStatusIndicatorSizeOffset - height: width - color: trayWindowHeaderBackground.color - anchors.bottom: currentAccountAvatar.bottom - anchors.right: currentAccountAvatar.right - radius: width * Style.trayFolderStatusIndicatorRadiusFactor - } - - Image { - id: currentAccountStatusIndicator - visible: UserModel.currentUser && UserModel.currentUser.isConnected - && UserModel.currentUser.serverHasUserStatus - source: UserModel.currentUser ? 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 ? UserModel.currentUser.name : "" - elide: Text.ElideRight - - font.pixelSize: Style.topLinePixelSize - font.bold: true - } - - EnforcedPlainTextLabel { - id: currentAccountServer - Layout.alignment: Qt.AlignLeft | Qt.AlignBottom - width: Style.currentAccountLabelWidth - text: UserModel.currentUser ? UserModel.currentUser.server : "" - elide: Text.ElideRight - visible: UserModel.numUsers() > 1 - } - - RowLayout { - id: currentUserStatus - visible: UserModel.currentUser && UserModel.currentUser.isConnected && - UserModel.currentUser.serverHasUserStatus - spacing: Style.accountLabelsSpacing - width: parent.width - - EnforcedPlainTextLabel { - id: emoji - visible: UserModel.currentUser && UserModel.currentUser.statusEmoji !== "" - width: Style.userStatusEmojiSize - text: UserModel.currentUser ? UserModel.currentUser.statusEmoji : "" - } - EnforcedPlainTextLabel { - id: message - Layout.alignment: Qt.AlignLeft | Qt.AlignBottom - Layout.fillWidth: true - visible: UserModel.currentUser && UserModel.currentUser.statusMessage !== "" - width: Style.currentAccountLabelWidth - text: UserModel.currentUser && UserModel.currentUser.statusMessage !== "" - ? UserModel.currentUser.statusMessage - : UserModel.currentUser ? UserModel.currentUser.server : "" - elide: Text.ElideRight - font.pixelSize: Style.subLinePixelSize - } - } - } - - Loader { - active: currentAccountButton.indicator === null - sourceComponent: Image { - Layout.alignment: Qt.AlignRight - verticalAlignment: Qt.AlignCenter - horizontalAlignment: Qt.AlignRight - Layout.leftMargin: Style.accountDropDownCaretMargin - source: "image://svgimage-custom-color/caret-down.svg/" + palette.windowText - sourceSize.width: Style.accountDropDownCaretSize - sourceSize.height: Style.accountDropDownCaretSize - Accessible.role: Accessible.PopupMenu - Accessible.name: qsTr("Account switcher and settings menu") - } - } - } } // Add space between items From b631f220daaad48b84fc006a3ae60db3bde74770 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 21 Nov 2024 14:37:29 +0800 Subject: [PATCH 117/244] Move tray window header component into separate file Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- resources.qrc | 1 + src/gui/tray/CurrentAccountHeaderButton.qml | 3 +- src/gui/tray/MainWindow.qml | 134 ++----------------- src/gui/tray/TrayWindowHeader.qml | 138 ++++++++++++++++++++ 4 files changed, 155 insertions(+), 121 deletions(-) create mode 100644 src/gui/tray/TrayWindowHeader.qml diff --git a/resources.qrc b/resources.qrc index bcebefc776608..3733a5a73a710 100644 --- a/resources.qrc +++ b/resources.qrc @@ -29,6 +29,7 @@ src/gui/tray/AutoSizingMenu.qml src/gui/tray/ActivityList.qml src/gui/tray/CurrentAccountHeaderButton.qml + src/gui/tray/TrayWindowHeader.qml src/gui/tray/UnifiedSearchInputContainer.qml src/gui/tray/UnifiedSearchResultFetchMoreTrigger.qml src/gui/tray/UnifiedSearchResultItem.qml diff --git a/src/gui/tray/CurrentAccountHeaderButton.qml b/src/gui/tray/CurrentAccountHeaderButton.qml index 74d53db3cd237..44a3653d51098 100644 --- a/src/gui/tray/CurrentAccountHeaderButton.qml +++ b/src/gui/tray/CurrentAccountHeaderButton.qml @@ -27,6 +27,7 @@ Button { readonly property alias userLineInstantiator: userLineInstantiator readonly property alias accountMenu: accountMenu + property color parentBackgroundColor: "transparent" display: AbstractButton.IconOnly flat: true @@ -165,7 +166,7 @@ Button { && UserModel.currentUser.serverHasUserStatus width: Style.accountAvatarStateIndicatorSize + + Style.trayFolderStatusIndicatorSizeOffset height: width - color: trayWindowHeaderBackground.color + color: root.parentBackgroundColor anchors.bottom: currentAccountAvatar.bottom anchors.right: currentAccountAvatar.right radius: width * Style.trayFolderStatusIndicatorRadiusFactor diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index 71742adf492e2..e01729ed3da68 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -54,9 +54,9 @@ ApplicationWindow { onVisibleChanged: { // HACK: reload account Instantiator immediately by restting it - could be done better I guess - // see also id:currentAccountHeaderButton.accountMenu below - currentAccountHeaderButton.userLineInstantiator.active = false; - currentAccountHeaderButton.userLineInstantiator.active = true; + // see also id:trayWindowHeader.currentAccountHeaderButton.accountMenu below + trayWindowHeader.currentAccountHeaderButton.userLineInstantiator.active = false; + trayWindowHeader.currentAccountHeaderButton.userLineInstantiator.active = true; syncStatus.model.load(); } @@ -70,7 +70,7 @@ ApplicationWindow { Connections { target: UserModel function onCurrentUserChanged() { - currentAccountHeaderButton.accountMenu.close(); + trayWindowHeader.currentAccountHeaderButton.accountMenu.close(); syncStatus.model.load(); } } @@ -95,8 +95,8 @@ ApplicationWindow { userStatusDrawer.close() fileDetailsDrawer.close(); - if(Systray.isOpen) { - currentAccountHeaderButton.accountMenu.close(); + if (Systray.isOpen) { + trayWindowHeader.currentAccountHeaderButton.accountMenu.close(); appsMenu.close(); openLocalFolderButton.closeMenu() } @@ -237,125 +237,19 @@ 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 - - palette { - text: Style.currentUserHeaderTextColor - windowText: Style.currentUserHeaderTextColor - buttonText: Style.currentUserHeaderTextColor - } - - RowLayout { - id: trayWindowHeaderLayout - - spacing: 0 - anchors.fill: parent - - CurrentAccountHeaderButton { - id: currentAccountHeaderButton - Layout.preferredWidth: Style.currentAccountButtonWidth - Layout.preferredHeight: Style.trayWindowHeaderHeight - } - - // Add space between items - Item { - Layout.fillWidth: true - } - - TrayFoldersMenuButton { - id: openLocalFolderButton - - visible: currentUser.hasLocalFolder - currentUser: UserModel.currentUser - parentBackgroundColor: trayWindowHeaderBackground.color - - onClicked: openLocalFolderButton.userHasGroupFolders ? openLocalFolderButton.toggleMenuOpen() : UserModel.openCurrentAccountLocalFolder() + TrayWindowHeader { + id: trayWindowHeader - 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: trayWindowFeaturedAppButton - visible: UserModel.currentUser.isFeaturedAppEnabled - icon.source: UserModel.currentUser.featuredAppIcon + "/" - onClicked: UserModel.openCurrentAccountFeaturedApp() - - Accessible.role: Accessible.Button - Accessible.name: UserModel.currentUser.featuredAppAccessibleName - Accessible.onPressAction: trayWindowFeaturedAppButton.clicked() - - Layout.alignment: Qt.AlignRight - Layout.preferredWidth: Style.trayWindowHeaderHeight - Layout.preferredHeight: Style.trayWindowHeaderHeight - } - - HeaderButton { - id: trayWindowAppsButton - icon.source: "image://svgimage-custom-color/more-apps.svg/" + palette.windowText - - onClicked: { - if(appsMenu.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 - - Repeater { - model: UserAppsModel - 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.windowText - onTriggered: UserAppsModel.openAppUrl(appUrl) - hoverEnabled: true - Accessible.role: Accessible.MenuItem - Accessible.name: qsTr("Open %1 in browser").arg(model.appName) - Accessible.onPressAction: appEntry.triggered() - } - } - } - } - } - } // Rectangle trayWindowHeaderBackground + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + height: Style.trayWindowHeaderHeight + } UnifiedSearchInputContainer { id: trayWindowUnifiedSearchInputContainer - anchors.top: trayWindowHeaderBackground.bottom + anchors.top: trayWindowHeader.bottom anchors.left: trayWindowMainItem.left anchors.right: trayWindowMainItem.right anchors.topMargin: Style.trayHorizontalMargin diff --git a/src/gui/tray/TrayWindowHeader.qml b/src/gui/tray/TrayWindowHeader.qml new file mode 100644 index 0000000000000..142a77eee63bf --- /dev/null +++ b/src/gui/tray/TrayWindowHeader.qml @@ -0,0 +1,138 @@ +/* + * Copyright (C) 2020 by Dominique Fuchs <32204802+DominiqueFuchs@users.noreply.github.com> + * + * 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 +import QtQuick.Controls +import QtQuick.Layouts + +import "../" +import "../filedetails/" + +import Style +import com.nextcloud.desktopclient + +Rectangle { + id: root + + readonly property alias currentAccountHeaderButton: currentAccountHeaderButton + + color: Style.currentUserHeaderColor + + palette { + text: Style.currentUserHeaderTextColor + windowText: Style.currentUserHeaderTextColor + buttonText: Style.currentUserHeaderTextColor + } + + RowLayout { + id: trayWindowHeaderLayout + + spacing: 0 + anchors.fill: parent + + CurrentAccountHeaderButton { + id: currentAccountHeaderButton + parentBackgroundColor: root.color + Layout.preferredWidth: Style.currentAccountButtonWidth + Layout.fillHeight: true + } + + // Add space between items + Item { + Layout.fillWidth: true + } + + TrayFoldersMenuButton { + id: openLocalFolderButton + + Layout.alignment: Qt.AlignRight + Layout.preferredWidth: Style.trayWindowHeaderHeight + Layout.fillHeight: true + + visible: currentUser.hasLocalFolder + currentUser: UserModel.currentUser + parentBackgroundColor: root.color + + 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() + } + + HeaderButton { + id: trayWindowFeaturedAppButton + + Layout.alignment: Qt.AlignRight + Layout.preferredWidth: Style.trayWindowHeaderHeight + Layout.fillHeight: true + + visible: UserModel.currentUser.isFeaturedAppEnabled + icon.source: UserModel.currentUser.featuredAppIcon + "/" + onClicked: UserModel.openCurrentAccountFeaturedApp() + + Accessible.role: Accessible.Button + Accessible.name: UserModel.currentUser.featuredAppAccessibleName + Accessible.onPressAction: trayWindowFeaturedAppButton.clicked() + } + + HeaderButton { + id: trayWindowAppsButton + icon.source: "image://svgimage-custom-color/more-apps.svg/" + palette.windowText + + onClicked: { + if(appsMenu.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 + + Repeater { + model: UserAppsModel + 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.windowText + onTriggered: UserAppsModel.openAppUrl(appUrl) + hoverEnabled: true + Accessible.role: Accessible.MenuItem + Accessible.name: qsTr("Open %1 in browser").arg(model.appName) + Accessible.onPressAction: appEntry.triggered() + } + } + } + } + } +} From 3c83b98d6a7b924aabd102ddc2c24d690c0b1ed5 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 21 Nov 2024 16:24:52 +0800 Subject: [PATCH 118/244] Do not treat bundles as executables in codesign check Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- admin/osx/mac-crafter/Sources/Utils/Codesign.swift | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift index a2b961eb87e3d..139a1e802449c 100644 --- a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift +++ b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift @@ -33,7 +33,10 @@ func isAppExtension(_ path: String) -> Bool { } func isExecutable(_ path: String) -> Bool { - FileManager.default.isExecutableFile(atPath: path) + let fm = FileManager.default + var isDir: ObjCBool = false + let exists = fm.fileExists(atPath: path, isDirectory: &isDir) + return fm.isExecutableFile(atPath: path) && !isDir.boolValue && exists } func codesign(identity: String, path: String, options: String = defaultCodesignOptions) throws { From ea0831ee011d5efa910f624fcfb6590e5388179c Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 21 Oct 2024 14:52:14 +0800 Subject: [PATCH 119/244] Mark non-const getters in Folder definition as const Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/folder.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gui/folder.h b/src/gui/folder.h index c79153a86758f..f55f9c62bf3f6 100644 --- a/src/gui/folder.h +++ b/src/gui/folder.h @@ -223,11 +223,11 @@ class Folder : public QObject void setIgnoreHiddenFiles(bool ignore); // Used by the Socket API - SyncJournalDb *journalDb() { return &_journal; } - SyncEngine &syncEngine() { return *_engine; } - Vfs &vfs() { return *_vfs; } + SyncJournalDb *journalDb() const { return &_journal; } + SyncEngine &syncEngine() const { return *_engine; } + Vfs &vfs() const { return *_vfs; } - RequestEtagJob *etagJob() { return _requestEtagJob; } + RequestEtagJob *etagJob() const { return _requestEtagJob; } std::chrono::milliseconds msecSinceLastSync() const { return std::chrono::milliseconds(_timeSinceLastSyncDone.elapsed()); } std::chrono::milliseconds msecLastSyncDuration() const { return _lastSyncDuration; } int consecutiveFollowUpSyncs() const { return _consecutiveFollowUpSyncs; } From badb41d2f93a01a29a26c33d6c348de60394a887 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 21 Oct 2024 14:54:34 +0800 Subject: [PATCH 120/244] Store fetched folder as private member in filedetails Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/filedetails.cpp | 12 ++++++------ src/gui/filedetails/filedetails.h | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/gui/filedetails/filedetails.cpp b/src/gui/filedetails/filedetails.cpp index 67ebb554cec29..e7897aaf5f92b 100644 --- a/src/gui/filedetails/filedetails.cpp +++ b/src/gui/filedetails/filedetails.cpp @@ -61,15 +61,15 @@ void FileDetails::setLocalPath(const QString &localPath) _fileWatcher.addPath(localPath); connect(&_fileWatcher, &QFileSystemWatcher::fileChanged, this, &FileDetails::refreshFileDetails); - const auto folder = FolderMan::instance()->folderForPath(_localPath); - if (!folder) { + _folder = FolderMan::instance()->folderForPath(_localPath); + if (!_folder) { qCWarning(lcFileDetails) << "No folder found for path:" << _localPath << "will not load file details."; return; } - const auto file = _localPath.mid(folder->cleanPath().length() + 1); + const auto file = _localPath.mid(_folder->cleanPath().length() + 1); - if (!folder->journalDb()->getFileRecord(file, &_fileRecord)) { + if (!_folder->journalDb()->getFileRecord(file, &_fileRecord)) { qCWarning(lcFileDetails) << "Invalid file record for path:" << _localPath << "will not load file details."; @@ -77,9 +77,9 @@ void FileDetails::setLocalPath(const QString &localPath) _filelockState = _fileRecord._lockstate; updateLockExpireString(); - updateFileTagModel(folder); - _sharingAvailable = folder->accountState()->account()->capabilities().shareAPI(); + const auto account = _folder->accountState()->account(); + _sharingAvailable = account->capabilities().shareAPI(); Q_EMIT fileChanged(); } diff --git a/src/gui/filedetails/filedetails.h b/src/gui/filedetails/filedetails.h index 2834981afb768..a4dc7e5931ceb 100644 --- a/src/gui/filedetails/filedetails.h +++ b/src/gui/filedetails/filedetails.h @@ -73,6 +73,7 @@ private slots: QFileInfo _fileInfo; QFileSystemWatcher _fileWatcher; + Folder *_folder = nullptr; SyncJournalFileRecord _fileRecord; SyncJournalFileLockInfo _filelockState; QByteArray _numericFileId; From 069107c7e7874c6c4b54a1e693625bdc36f11b17 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 21 Oct 2024 14:56:14 +0800 Subject: [PATCH 121/244] Simply pass AccountPtr to updateFileTagModel Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/filedetails.cpp | 5 ++--- src/gui/filedetails/filedetails.h | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/gui/filedetails/filedetails.cpp b/src/gui/filedetails/filedetails.cpp index e7897aaf5f92b..2b76c70ad296e 100644 --- a/src/gui/filedetails/filedetails.cpp +++ b/src/gui/filedetails/filedetails.cpp @@ -80,6 +80,7 @@ void FileDetails::setLocalPath(const QString &localPath) const auto account = _folder->accountState()->account(); _sharingAvailable = account->capabilities().shareAPI(); + updateFileTagModel(account); Q_EMIT fileChanged(); } @@ -167,10 +168,8 @@ FileTagModel *FileDetails::fileTagModel() const return _fileTagModel.get(); } -void FileDetails::updateFileTagModel(const Folder * const folder) +void FileDetails::updateFileTagModel(const AccountPtr &account) { - Q_ASSERT(folder); - const auto account = folder->accountState()->account(); Q_ASSERT(account); const auto serverRelPath = QString(folder->remotePathTrailingSlash() + name()); diff --git a/src/gui/filedetails/filedetails.h b/src/gui/filedetails/filedetails.h index a4dc7e5931ceb..fef2b010aeda0 100644 --- a/src/gui/filedetails/filedetails.h +++ b/src/gui/filedetails/filedetails.h @@ -66,7 +66,7 @@ public slots: private slots: void refreshFileDetails(); void updateLockExpireString(); - void updateFileTagModel(const OCC::Folder * const folder); + void updateFileTagModel(const OCC::AccountPtr &account); private: QString _localPath; From 3fe4728e2a85df44e7357a1ba1bd2bbc8abf3e6b Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 21 Oct 2024 14:57:22 +0800 Subject: [PATCH 122/244] Ensure we are checking for tags in correct server path regardless of the particular local path Fixes issues with users who are using remote non-root sync folders Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/filedetails.cpp | 6 +----- src/gui/filetagmodel.cpp | 12 ++++++++++-- src/gui/filetagmodel.h | 7 ++++++- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/gui/filedetails/filedetails.cpp b/src/gui/filedetails/filedetails.cpp index 2b76c70ad296e..9ebe8fac2bc1a 100644 --- a/src/gui/filedetails/filedetails.cpp +++ b/src/gui/filedetails/filedetails.cpp @@ -170,11 +170,7 @@ FileTagModel *FileDetails::fileTagModel() const void FileDetails::updateFileTagModel(const AccountPtr &account) { - Q_ASSERT(account); - - const auto serverRelPath = QString(folder->remotePathTrailingSlash() + name()); - - _fileTagModel = std::make_unique(serverRelPath, account); + _fileTagModel = std::make_unique(_fileRecord, _folder, account); Q_EMIT fileTagModelChanged(); } diff --git a/src/gui/filetagmodel.cpp b/src/gui/filetagmodel.cpp index 64cab4486a4f9..282ff84c18848 100644 --- a/src/gui/filetagmodel.cpp +++ b/src/gui/filetagmodel.cpp @@ -20,13 +20,21 @@ Q_LOGGING_CATEGORY(lcFileTagModel, "nextcloud.gui.filetagmodel", QtInfoMsg) namespace OCC { -FileTagModel::FileTagModel(const QString &serverRelativePath, +FileTagModel::FileTagModel(const SyncJournalFileRecord &fileRecord, + const Folder * const syncFolder, const AccountPtr &account, QObject * const parent) : QAbstractListModel(parent) - , _serverRelativePath(serverRelativePath) , _account(account) { + _serverRelativePath = syncFolder->remotePathTrailingSlash() + fileRecord.path(); + + if (const auto vfsMode = syncFolder->vfs().mode(); fileRecord.isVirtualFile() && vfsMode == Vfs::WithSuffix) { + if (const auto suffix = syncFolder->vfs().fileSuffix(); !suffix.isEmpty() && _serverRelativePath.endsWith(suffix)) { + _serverRelativePath.chop(suffix.length()); + } + } + fetchFileTags(); } diff --git a/src/gui/filetagmodel.h b/src/gui/filetagmodel.h index 618702e8b5b09..77933eccd9841 100644 --- a/src/gui/filetagmodel.h +++ b/src/gui/filetagmodel.h @@ -16,6 +16,8 @@ #include +#include "common/syncjournalfilerecord.h" +#include "gui/folder.h" #include "libsync/account.h" namespace OCC { @@ -31,7 +33,10 @@ class FileTagModel : public QAbstractListModel Q_PROPERTY(QString overflowTagsString READ overflowTagsString NOTIFY overflowTagsStringChanged) public: - explicit FileTagModel(const QString &serverRelativePath, const AccountPtr &account, QObject * const parent = nullptr); + explicit FileTagModel(const SyncJournalFileRecord &fileRecord, + const Folder *const syncFolder, + const AccountPtr &account, + QObject *const parent = nullptr); [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override; [[nodiscard]] QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; From c572cbfdd141dc2ef61c82cdea542a70a97a0563 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 23 Oct 2024 14:53:37 +0800 Subject: [PATCH 123/244] Move setup of server relative path used in FileTagModel into FileDetails This fixes the build breakages in the file tag model tests Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/filedetails.cpp | 33 +++++++++++++++++++++++++---- src/gui/filedetails/filedetails.h | 2 +- src/gui/filetagmodel.cpp | 12 ++--------- src/gui/filetagmodel.h | 3 +-- 4 files changed, 33 insertions(+), 17 deletions(-) diff --git a/src/gui/filedetails/filedetails.cpp b/src/gui/filedetails/filedetails.cpp index 9ebe8fac2bc1a..bc8f2d4895c84 100644 --- a/src/gui/filedetails/filedetails.cpp +++ b/src/gui/filedetails/filedetails.cpp @@ -62,6 +62,7 @@ void FileDetails::setLocalPath(const QString &localPath) connect(&_fileWatcher, &QFileSystemWatcher::fileChanged, this, &FileDetails::refreshFileDetails); _folder = FolderMan::instance()->folderForPath(_localPath); + Q_ASSERT(_folder); if (!_folder) { qCWarning(lcFileDetails) << "No folder found for path:" << _localPath << "will not load file details."; return; @@ -78,9 +79,23 @@ void FileDetails::setLocalPath(const QString &localPath) _filelockState = _fileRecord._lockstate; updateLockExpireString(); - const auto account = _folder->accountState()->account(); + const auto accountState = _folder->accountState(); + Q_ASSERT(accountState); + if (!accountState) { + qCWarning(lcFileDetails) << "No account state found for path:" << _localPath << "will not correctly load file details."; + return; + } + + const auto account = accountState->account(); + Q_ASSERT(account); + if (!account) { + qCWarning(lcFileDetails) << "No account found for path:" << _localPath << "will not correctly load file details."; + return; + } + _sharingAvailable = account->capabilities().shareAPI(); - updateFileTagModel(account); + + updateFileTagModel(); Q_EMIT fileChanged(); } @@ -168,9 +183,19 @@ FileTagModel *FileDetails::fileTagModel() const return _fileTagModel.get(); } -void FileDetails::updateFileTagModel(const AccountPtr &account) +void FileDetails::updateFileTagModel() { - _fileTagModel = std::make_unique(_fileRecord, _folder, account); + const auto localPath = _fileRecord.path(); + const auto relPath = localPath.mid(_folder->cleanPath().length() + 1); + QString serverPath = _folder->remotePathTrailingSlash() + _fileRecord.path(); + + if (const auto vfsMode = _folder->vfs().mode(); _fileRecord.isVirtualFile() && vfsMode == Vfs::WithSuffix) { + if (const auto suffix = _folder->vfs().fileSuffix(); !suffix.isEmpty() && serverPath.endsWith(suffix)) { + serverPath.chop(suffix.length()); + } + } + + _fileTagModel = std::make_unique(relPath, _folder->accountState()->account()); Q_EMIT fileTagModelChanged(); } diff --git a/src/gui/filedetails/filedetails.h b/src/gui/filedetails/filedetails.h index fef2b010aeda0..8f0ff7165903c 100644 --- a/src/gui/filedetails/filedetails.h +++ b/src/gui/filedetails/filedetails.h @@ -66,7 +66,7 @@ public slots: private slots: void refreshFileDetails(); void updateLockExpireString(); - void updateFileTagModel(const OCC::AccountPtr &account); + void updateFileTagModel(); private: QString _localPath; diff --git a/src/gui/filetagmodel.cpp b/src/gui/filetagmodel.cpp index 282ff84c18848..64cab4486a4f9 100644 --- a/src/gui/filetagmodel.cpp +++ b/src/gui/filetagmodel.cpp @@ -20,21 +20,13 @@ Q_LOGGING_CATEGORY(lcFileTagModel, "nextcloud.gui.filetagmodel", QtInfoMsg) namespace OCC { -FileTagModel::FileTagModel(const SyncJournalFileRecord &fileRecord, - const Folder * const syncFolder, +FileTagModel::FileTagModel(const QString &serverRelativePath, const AccountPtr &account, QObject * const parent) : QAbstractListModel(parent) + , _serverRelativePath(serverRelativePath) , _account(account) { - _serverRelativePath = syncFolder->remotePathTrailingSlash() + fileRecord.path(); - - if (const auto vfsMode = syncFolder->vfs().mode(); fileRecord.isVirtualFile() && vfsMode == Vfs::WithSuffix) { - if (const auto suffix = syncFolder->vfs().fileSuffix(); !suffix.isEmpty() && _serverRelativePath.endsWith(suffix)) { - _serverRelativePath.chop(suffix.length()); - } - } - fetchFileTags(); } diff --git a/src/gui/filetagmodel.h b/src/gui/filetagmodel.h index 77933eccd9841..9f0a6b6d091dc 100644 --- a/src/gui/filetagmodel.h +++ b/src/gui/filetagmodel.h @@ -33,8 +33,7 @@ class FileTagModel : public QAbstractListModel Q_PROPERTY(QString overflowTagsString READ overflowTagsString NOTIFY overflowTagsStringChanged) public: - explicit FileTagModel(const SyncJournalFileRecord &fileRecord, - const Folder *const syncFolder, + explicit FileTagModel(const QString &serverRelativePath, const AccountPtr &account, QObject *const parent = nullptr); From 4ae577f08997d7fa5acb7a5a427dc68e0d8bbe49 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 21 Nov 2024 15:32:07 +0800 Subject: [PATCH 124/244] Add missing nodiscards in folder methods Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/folder.h | 64 ++++++++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/src/gui/folder.h b/src/gui/folder.h index f55f9c62bf3f6..8b59fc6a30978 100644 --- a/src/gui/folder.h +++ b/src/gui/folder.h @@ -128,23 +128,23 @@ class Folder : public QObject /** * The account the folder is configured on. */ - AccountState *accountState() const { return _accountState.data(); } + [[nodiscard]] AccountState *accountState() const { return _accountState.data(); } /** * alias or nickname */ - QString alias() const; - QString shortGuiRemotePathOrAppName() const; // since 2.0 we don't want to show aliases anymore, show the path instead + [[nodiscard]] QString alias() const; + [[nodiscard]] QString shortGuiRemotePathOrAppName() const; // since 2.0 we don't want to show aliases anymore, show the path instead /** * short local path to display on the GUI (native separators) */ - QString shortGuiLocalPath() const; + [[nodiscard]] QString shortGuiLocalPath() const; /** * canonical local folder path, always ends with / */ - QString path() const; + [[nodiscard]] QString path() const; /** * cleaned canonical folder path, like path() but never ends with a / @@ -152,39 +152,39 @@ class Folder : public QObject * Wrapper for QDir::cleanPath(path()) except for "Z:/", * where it returns "Z:" instead of "Z:/". */ - QString cleanPath() const; + [[nodiscard]] QString cleanPath() const; /** * remote folder path, usually without trailing /, exception "/" */ - QString remotePath() const; + [[nodiscard]] QString remotePath() const; /** * remote folder path, always with a trailing / */ - QString remotePathTrailingSlash() const; + [[nodiscard]] QString remotePathTrailingSlash() const; [[nodiscard]] QString fulllRemotePathToPathInSyncJournalDb(const QString &fullRemotePath) const; void setNavigationPaneClsid(const QUuid &clsid) { _definition.navigationPaneClsid = clsid; } - QUuid navigationPaneClsid() const { return _definition.navigationPaneClsid; } + [[nodiscard]] QUuid navigationPaneClsid() const { return _definition.navigationPaneClsid; } /** * remote folder path with server url */ - QUrl remoteUrl() const; + [[nodiscard]] QUrl remoteUrl() const; /** * switch sync on or off */ void setSyncPaused(bool); - bool syncPaused() const; + [[nodiscard]] bool syncPaused() const; /** * Returns true when the folder may sync. */ - bool canSync() const; + [[nodiscard]] bool canSync() const; void prepareToSync(); @@ -192,15 +192,15 @@ class Folder : public QObject * True if the folder is busy and can't initiate * a synchronization */ - virtual bool isBusy() const; + [[nodiscard]] virtual bool isBusy() const; /** True if the folder is currently synchronizing */ - bool isSyncRunning() const; + [[nodiscard]] bool isSyncRunning() const; /** * return the last sync result with error message and status */ - SyncResult syncResult() const; + [[nodiscard]] SyncResult syncResult() const; /** * This is called when the sync folder definition is removed. Do cleanups here. @@ -219,19 +219,19 @@ class Folder : public QObject * Ignore syncing of hidden files or not. This is defined in the * folder definition */ - bool ignoreHiddenFiles(); + [[nodiscard]] bool ignoreHiddenFiles(); void setIgnoreHiddenFiles(bool ignore); // Used by the Socket API - SyncJournalDb *journalDb() const { return &_journal; } - SyncEngine &syncEngine() const { return *_engine; } - Vfs &vfs() const { return *_vfs; } + [[nodiscard]] SyncJournalDb *journalDb() const { return &_journal; } + [[nodiscard]] SyncEngine &syncEngine() const { return *_engine; } + [[nodiscard]] Vfs &vfs() const { return *_vfs; } - RequestEtagJob *etagJob() const { return _requestEtagJob; } - std::chrono::milliseconds msecSinceLastSync() const { return std::chrono::milliseconds(_timeSinceLastSyncDone.elapsed()); } - std::chrono::milliseconds msecLastSyncDuration() const { return _lastSyncDuration; } - int consecutiveFollowUpSyncs() const { return _consecutiveFollowUpSyncs; } - int consecutiveFailingSyncs() const { return _consecutiveFailingSyncs; } + [[nodiscard]] RequestEtagJob *etagJob() const { return _requestEtagJob; } + [[nodiscard]] std::chrono::milliseconds msecSinceLastSync() const { return std::chrono::milliseconds(_timeSinceLastSyncDone.elapsed()); } + [[nodiscard]] std::chrono::milliseconds msecLastSyncDuration() const { return _lastSyncDuration; } + [[nodiscard]] int consecutiveFollowUpSyncs() const { return _consecutiveFollowUpSyncs; } + [[nodiscard]] int consecutiveFailingSyncs() const { return _consecutiveFailingSyncs; } /// Saves the folder data in the account's settings. void saveToSettings() const; @@ -244,12 +244,12 @@ class Folder : public QObject /** * Returns whether a file inside this folder should be excluded. */ - bool isFileExcludedAbsolute(const QString &fullPath) const; + [[nodiscard]] bool isFileExcludedAbsolute(const QString &fullPath) const; /** * Returns whether a file inside this folder should be excluded. */ - bool isFileExcludedRelative(const QString &relativePath) const; + [[nodiscard]] bool isFileExcludedRelative(const QString &relativePath) const; /** Calls schedules this folder on the FolderMan after a short delay. * @@ -288,13 +288,13 @@ class Folder : public QObject * and never have an automatic virtual file. But when it's on, the shell context menu will allow * users to make existing files virtual. */ - bool virtualFilesEnabled() const; + [[nodiscard]] bool virtualFilesEnabled() const; void setVirtualFilesEnabled(bool enabled); void setRootPinState(PinState state); /** Whether user desires a switch that couldn't be executed yet, see member */ - bool isVfsOnOffSwitchPending() const { return _vfsOnOffPending; } + [[nodiscard]] bool isVfsOnOffSwitchPending() const { return _vfsOnOffPending; } void setVfsOnOffSwitchPending(bool pending) { _vfsOnOffPending = pending; } void switchToVirtualFiles(); @@ -302,9 +302,9 @@ class Folder : public QObject void processSwitchedToVirtualFiles(); /** Whether this folder should show selective sync ui */ - bool supportsSelectiveSync() const; + [[nodiscard]] bool supportsSelectiveSync() const; - QString fileFromLocalPath(const QString &localPath) const; + [[nodiscard]] QString fileFromLocalPath(const QString &localPath) const; void whitelistPath(const QString &path); void blacklistPath(const QString &path); @@ -347,9 +347,9 @@ public slots: void startSync(const QStringList &pathList = QStringList()); int slotDiscardDownloadProgress(); - int downloadInfoCount(); + [[nodiscard]] int downloadInfoCount(); int slotWipeErrorBlacklist(); - int errorBlackListEntryCount(); + [[nodiscard]] int errorBlackListEntryCount(); /** * Triggered by the folder watcher when a file/dir in this folder From e3d82e722e59ae805dcc4f4933d7eae1f93a1def Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 21 Nov 2024 15:39:27 +0800 Subject: [PATCH 125/244] Remove unused includes in filetagmodel Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filetagmodel.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/gui/filetagmodel.h b/src/gui/filetagmodel.h index 9f0a6b6d091dc..37bb635c09ab4 100644 --- a/src/gui/filetagmodel.h +++ b/src/gui/filetagmodel.h @@ -16,8 +16,6 @@ #include -#include "common/syncjournalfilerecord.h" -#include "gui/folder.h" #include "libsync/account.h" namespace OCC { From bc704ffe398008d17ddc9e1b25dfdbeb9cde3d4e Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 13:37:20 +0800 Subject: [PATCH 126/244] Make the unified search input being focused a valid active reason Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index e01729ed3da68..b15a76e2cb6e2 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -229,6 +229,7 @@ ApplicationWindow { || unifiedSearchResultNothingFound.visible || unifiedSearchResultsErrorLabel.visible || unifiedSearchResultsListView.visible + || trayWindowUnifiedSearchInputContainer.activeFocus anchors.fill: parent anchors.margins: Style.trayWindowBorderWidth From 3866d4024440b4aa217abe25b24c44445ff99dfb Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 13:37:47 +0800 Subject: [PATCH 127/244] Add a mouse area to allow de-focusing the unified search text field on click elsewhere Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index b15a76e2cb6e2..5d9da51b81fc8 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -238,6 +238,11 @@ ApplicationWindow { Accessible.role: Accessible.Grouping Accessible.name: qsTr("Nextcloud desktop main dialog") + MouseArea { + anchors.fill: parent + onClicked: forceActiveFocus() + } + TrayWindowHeader { id: trayWindowHeader From c35f364b4ac11bc3f8ce532872cffef6304d75cf Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 13:43:59 +0800 Subject: [PATCH 128/244] Fix keyboard tab behaviour when focus reaches unified search bar Do not activate search if the focus reason is tab as otherwise the user will never be able to access elements that depend on search being inactive via the keyboard Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index 5d9da51b81fc8..df558f0d17423 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -229,7 +229,7 @@ ApplicationWindow { || unifiedSearchResultNothingFound.visible || unifiedSearchResultsErrorLabel.visible || unifiedSearchResultsListView.visible - || trayWindowUnifiedSearchInputContainer.activeFocus + || trayWindowUnifiedSearchInputContainer.activateSearchFocus anchors.fill: parent anchors.margins: Style.trayWindowBorderWidth @@ -255,6 +255,8 @@ ApplicationWindow { UnifiedSearchInputContainer { id: trayWindowUnifiedSearchInputContainer + property bool activateSearchFocus: activeFocus + anchors.top: trayWindowHeader.bottom anchors.left: trayWindowMainItem.left anchors.right: trayWindowMainItem.right @@ -267,6 +269,7 @@ ApplicationWindow { isSearchInProgress: UserModel.currentUser.unifiedSearchResultsListModel.isSearchInProgress onTextEdited: { UserModel.currentUser.unifiedSearchResultsListModel.searchTerm = trayWindowUnifiedSearchInputContainer.text } onClearText: { UserModel.currentUser.unifiedSearchResultsListModel.searchTerm = "" } + onActiveFocusChanged: activateSearchFocus = activeFocus && focusReason !== Qt.TabFocusReason && focusReason !== Qt.BacktabFocusReason } Rectangle { From fd236fc83447e9f8d66d84adb6d45d5e65cb7046 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 14:02:00 +0800 Subject: [PATCH 129/244] On escape pressed of unified search placeholder view, diable activeSearchFocus Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index df558f0d17423..d3d096038138f 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -270,6 +270,7 @@ ApplicationWindow { onTextEdited: { UserModel.currentUser.unifiedSearchResultsListModel.searchTerm = trayWindowUnifiedSearchInputContainer.text } onClearText: { UserModel.currentUser.unifiedSearchResultsListModel.searchTerm = "" } onActiveFocusChanged: activateSearchFocus = activeFocus && focusReason !== Qt.TabFocusReason && focusReason !== Qt.BacktabFocusReason + Keys.onEscapePressed: activateSearchFocus = false } Rectangle { From 3c677e05b16e0e8819d51b566f75f29c1899ef47 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 14:02:58 +0800 Subject: [PATCH 130/244] Add a UnifiedSearchPlaceholderView Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- resources.qrc | 1 + src/gui/tray/UnifiedSearchPlaceholderView.qml | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 src/gui/tray/UnifiedSearchPlaceholderView.qml diff --git a/resources.qrc b/resources.qrc index 3733a5a73a710..9d1da12609314 100644 --- a/resources.qrc +++ b/resources.qrc @@ -38,6 +38,7 @@ src/gui/tray/UnifiedSearchResultItemSkeletonGradientRectangle.qml src/gui/tray/UnifiedSearchResultListItem.qml src/gui/tray/UnifiedSearchResultNothingFound.qml + src/gui/tray/UnifiedSearchPlaceholderView.qml src/gui/tray/UnifiedSearchResultSectionItem.qml src/gui/tray/ActivityItemContextMenu.qml src/gui/tray/ActivityItemActions.qml diff --git a/src/gui/tray/UnifiedSearchPlaceholderView.qml b/src/gui/tray/UnifiedSearchPlaceholderView.qml new file mode 100644 index 0000000000000..2653223e19344 --- /dev/null +++ b/src/gui/tray/UnifiedSearchPlaceholderView.qml @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2024 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 QtQml +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Style + +ColumnLayout { + id: unifiedSearchResultNothingFoundContainer + + spacing: Style.standardSpacing + + Item { + Layout.fillWidth: true + Layout.fillHeight: true + } + + Image { + id: unifiedSearchResultsNoResultsLabelIcon + source: "image://svgimage-custom-color/magnifying-glass.svg" + sourceSize.width: Style.trayWindowHeaderHeight / 2 + sourceSize.height: Style.trayWindowHeaderHeight / 2 + Layout.alignment: Qt.AlignHCenter + } + + EnforcedPlainTextLabel { + id: unifiedSearchResultsNoResultsLabel + text: qsTr("Start typing to search") + font.pixelSize: Style.subLinePixelSize * 1.25 + wrapMode: Text.Wrap + Layout.fillWidth: true + horizontalAlignment: Text.AlignHCenter + } + + Item { + Layout.fillWidth: true + Layout.fillHeight: true + } +} From 9916e5d8540ec6ade95c1f54a0723ab1822891fb Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 14:03:20 +0800 Subject: [PATCH 131/244] Place unified search placeholder view in main tray window view when in focus and no text is entered Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index d3d096038138f..3f80f58c6d1cb 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -296,6 +296,18 @@ ApplicationWindow { anchors.margins: Style.trayHorizontalMargin } + UnifiedSearchPlaceholderView { + id: unifiedSearchPlaceholderView + + anchors.top: bottomUnifiedSearchInputSeparator.bottom + anchors.left: trayWindowMainItem.left + anchors.right: trayWindowMainItem.right + anchors.bottom: trayWindowMainItem.bottom + anchors.topMargin: Style.trayHorizontalMargin + + visible: trayWindowUnifiedSearchInputContainer.activateSearchFocus && !UserModel.currentUser.unifiedSearchResultsListModel.searchTerm + } + UnifiedSearchResultNothingFound { id: unifiedSearchResultNothingFound From 18f470cef5f43546e844f27648d70b0dc4051467 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 14:53:23 +0800 Subject: [PATCH 132/244] Clean up ids of internal components of placeholder views Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/UnifiedSearchPlaceholderView.qml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/gui/tray/UnifiedSearchPlaceholderView.qml b/src/gui/tray/UnifiedSearchPlaceholderView.qml index 2653223e19344..10eb94af0489d 100644 --- a/src/gui/tray/UnifiedSearchPlaceholderView.qml +++ b/src/gui/tray/UnifiedSearchPlaceholderView.qml @@ -19,7 +19,7 @@ import QtQuick.Layouts import Style ColumnLayout { - id: unifiedSearchResultNothingFoundContainer + id: root spacing: Style.standardSpacing @@ -29,7 +29,6 @@ ColumnLayout { } Image { - id: unifiedSearchResultsNoResultsLabelIcon source: "image://svgimage-custom-color/magnifying-glass.svg" sourceSize.width: Style.trayWindowHeaderHeight / 2 sourceSize.height: Style.trayWindowHeaderHeight / 2 @@ -37,7 +36,6 @@ ColumnLayout { } EnforcedPlainTextLabel { - id: unifiedSearchResultsNoResultsLabel text: qsTr("Start typing to search") font.pixelSize: Style.subLinePixelSize * 1.25 wrapMode: Text.Wrap From 168152754d40805f425938ce861c2ecce0771082 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 19 Nov 2024 14:53:51 +0800 Subject: [PATCH 133/244] Unify definition of unified seach placeholder views fonts Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/UnifiedSearchPlaceholderView.qml | 2 +- src/gui/tray/UnifiedSearchResultNothingFound.qml | 4 ++-- theme/Style/Style.qml | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/gui/tray/UnifiedSearchPlaceholderView.qml b/src/gui/tray/UnifiedSearchPlaceholderView.qml index 10eb94af0489d..692f32c97e07d 100644 --- a/src/gui/tray/UnifiedSearchPlaceholderView.qml +++ b/src/gui/tray/UnifiedSearchPlaceholderView.qml @@ -37,7 +37,7 @@ ColumnLayout { EnforcedPlainTextLabel { text: qsTr("Start typing to search") - font.pixelSize: Style.subLinePixelSize * 1.25 + font.pixelSize: Style.unifiedSearchPlaceholderViewSublineFontPixelSize wrapMode: Text.Wrap Layout.fillWidth: true horizontalAlignment: Text.AlignHCenter diff --git a/src/gui/tray/UnifiedSearchResultNothingFound.qml b/src/gui/tray/UnifiedSearchResultNothingFound.qml index 175874e57aa39..1cab7fa5d1730 100644 --- a/src/gui/tray/UnifiedSearchResultNothingFound.qml +++ b/src/gui/tray/UnifiedSearchResultNothingFound.qml @@ -38,7 +38,7 @@ ColumnLayout { EnforcedPlainTextLabel { id: unifiedSearchResultsNoResultsLabel text: qsTr("No results for") - font.pixelSize: Style.subLinePixelSize * 1.25 + font.pixelSize: Style.unifiedSearchPlaceholderViewSublineFontPixelSize wrapMode: Text.Wrap Layout.fillWidth: true Layout.preferredHeight: Style.trayWindowHeaderHeight / 2 @@ -48,7 +48,7 @@ ColumnLayout { EnforcedPlainTextLabel { id: unifiedSearchResultsNoResultsLabelDetails text: unifiedSearchResultNothingFoundContainer.text - font.pixelSize: Style.topLinePixelSize * 1.25 + font.pixelSize: Style.unifiedSearchPlaceholderViewTitleFontPixelSize wrapMode: Text.Wrap maximumLineCount: 2 elide: Text.ElideRight diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index 6d63d2898a705..014fa5a07690f 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -141,6 +141,8 @@ QtObject { readonly property int unifiedSearchResultSectionItemVerticalPadding: 8 readonly property int unifiedSearchResultNothingFoundHorizontalMargin: 10 readonly property int unifiedSearchInputContainerHeight: 40 + readonly property int unifiedSearchPlaceholderViewTitleFontPixelSize: pixelSize * 1.25 + readonly property int unifiedSearchPlaceholderViewSublineFontPixelSize: subLinePixelSize * 1.25 readonly property int radioButtonCustomMarginLeftInner: 4 readonly property int radioButtonCustomMarginLeftOuter: 5 From 0b974424d6562973b5c8e2c0f01ed79fad22cb93 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 21 Nov 2024 18:27:52 +0800 Subject: [PATCH 134/244] Allow using an external task for running commands in mac-crafter run command Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- .../osx/mac-crafter/Sources/Utils/Shell.swift | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/admin/osx/mac-crafter/Sources/Utils/Shell.swift b/admin/osx/mac-crafter/Sources/Utils/Shell.swift index 1d7a35522c411..8c1570c5e8f51 100644 --- a/admin/osx/mac-crafter/Sources/Utils/Shell.swift +++ b/admin/osx/mac-crafter/Sources/Utils/Shell.swift @@ -14,40 +14,39 @@ import Foundation -var task: Process? +weak var globalTaskRef: Process? @discardableResult func run( _ launchPath: String, _ args: [String], env: [String: String]? = nil, - quiet: Bool = false + quiet: Bool = false, + task: Process = Process() ) -> Int32 { - defer { task = nil } - task = Process() - + globalTaskRef = task signal(SIGINT) { _ in - task?.terminate() // Send terminate signal to the task - exit(0) // Exit the script after cleanup + globalTaskRef?.terminate() // Send terminate signal to the task + exit(0) // Exit the script after cleanup } - task?.launchPath = launchPath - task?.arguments = args + task.launchPath = launchPath + task.arguments = args if let env, - let combinedEnv = task?.environment?.merging(env, uniquingKeysWith: { (_, new) in new }) + let combinedEnv = task.environment?.merging(env, uniquingKeysWith: { (_, new) in new }) { - task?.environment = combinedEnv + task.environment = combinedEnv } if quiet { - task?.standardOutput = nil - task?.standardError = nil + task.standardOutput = nil + task.standardError = nil } - task?.launch() - task?.waitUntilExit() - return task?.terminationStatus ?? 1 + task.launch() + task.waitUntilExit() + return task.terminationStatus } func run( From 29007fc5383a25badd6d4ac14436418f07fc9112 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 21 Nov 2024 18:28:19 +0800 Subject: [PATCH 135/244] Do not rely on FileManager's isExecutableFile, check manually for Mach-O executable type Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- .../mac-crafter/Sources/Utils/Codesign.swift | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift index 139a1e802449c..bb8ded8ffeb6e 100644 --- a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift +++ b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift @@ -32,11 +32,21 @@ func isAppExtension(_ path: String) -> Bool { path.hasSuffix(".appex") } -func isExecutable(_ path: String) -> Bool { - let fm = FileManager.default - var isDir: ObjCBool = false - let exists = fm.fileExists(atPath: path, isDirectory: &isDir) - return fm.isExecutableFile(atPath: path) && !isDir.boolValue && exists +func isExecutable(_ path: String) throws -> Bool { + let outPipe = Pipe() + let errPipe = Pipe() + let task = Process() + task.standardOutput = outPipe + task.standardError = errPipe + + let command = "file \"\(path)\"" + guard run("/bin/zsh", ["-c", command], task: task) == 0 else { + throw CodeSigningError.failedToCodeSign("Failed to determine if \(path) is an executable.") + } + + let outputData = outPipe.fileHandleForReading.readDataToEndOfFile() + let output = String(data: outputData, encoding: .utf8) ?? "" + return output.contains("Mach-O 64-bit executable") } func codesign(identity: String, path: String, options: String = defaultCodesignOptions) throws { @@ -60,11 +70,11 @@ func recursivelyCodesign( } for case let enumeratedItem as String in pathEnumerator { - guard isLibrary(enumeratedItem) || - isAppExtension(enumeratedItem) || - isExecutable(enumeratedItem) - else { continue } - try codesign(identity: identity, path: "\(path)/\(enumeratedItem)") + let isExecutableFile = try isExecutable(fm.currentDirectoryPath + "/" + path + "/" + enumeratedItem) + guard isLibrary(enumeratedItem) || isAppExtension(enumeratedItem) || isExecutableFile else { + continue + } + try codesign(identity: identity, path: "\(path)/\(enumeratedItem)", options: options) } } From fde65786c3b0150fdeddeac22962cd64d00140b6 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 21 Nov 2024 18:43:58 +0800 Subject: [PATCH 136/244] Do not do final bundle codesign Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- admin/osx/mac-crafter/Sources/Utils/Codesign.swift | 3 --- 1 file changed, 3 deletions(-) diff --git a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift index bb8ded8ffeb6e..426d3ce05a4d6 100644 --- a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift +++ b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift @@ -146,7 +146,4 @@ func codesignClientAppBundle( // Now we do the final codesign bit print("Code-signing Nextcloud Desktop Client binaries...") try recursivelyCodesign(path: "\(clientContentsDir)/MacOS/", identity: codeSignIdentity) - - print("Code-signing Nextcloud Desktop Client app bundle...") - try codesign(identity: codeSignIdentity, path: clientAppDir) } From 36088fb980445d8d6aef3e4e1eb7900edc235420 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Tue, 19 Nov 2024 15:58:18 +0100 Subject: [PATCH 137/244] improve files explorer context menu by removing obsolete commands remove any commands related to publi share links because they either got replaced by the use of the share dialog or are better achieved by showing the share dialog Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/gui/socketapi/socketapi.cpp | 46 --------------------------------- src/gui/socketapi/socketapi.h | 2 -- 2 files changed, 48 deletions(-) diff --git a/src/gui/socketapi/socketapi.cpp b/src/gui/socketapi/socketapi.cpp index bd68063fa2978..ae32d0c6be3aa 100644 --- a/src/gui/socketapi/socketapi.cpp +++ b/src/gui/socketapi/socketapi.cpp @@ -696,11 +696,6 @@ void SocketApi::command_ENCRYPT(const QString &localFile, SocketListener *listen processEncryptRequest(localFile); } -void SocketApi::command_MANAGE_PUBLIC_LINKS(const QString &localFile, SocketListener *listener) -{ - processShareRequest(localFile, listener); -} - void SocketApi::command_VERSION(const QString &, SocketListener *listener) { listener->sendMessage(QLatin1String("VERSION:" MIRALL_VERSION_STRING ":" MIRALL_SOCKET_API_VERSION)); @@ -897,24 +892,6 @@ void SocketApi::command_COPY_SECUREFILEDROP_LINK(const QString &localFile, Socke getOrCreatePublicLinkShareJob->run(); } -void SocketApi::command_COPY_PUBLIC_LINK(const QString &localFile, SocketListener *) -{ - const auto fileData = FileData::get(localFile); - if (!fileData.folder) { - return; - } - - const auto account = fileData.folder->accountState()->account(); - const auto getOrCreatePublicLinkShareJob = new GetOrCreatePublicLinkShare(account, fileData.serverRelativePath, false, this); - connect(getOrCreatePublicLinkShareJob, &GetOrCreatePublicLinkShare::done, this, [](const QString &url) { - copyUrlToClipboard(url); - }); - connect(getOrCreatePublicLinkShareJob, &GetOrCreatePublicLinkShare::error, this, [=]() { - emit shareCommandReceived(fileData.localPath); - }); - getOrCreatePublicLinkShareJob->run(); -} - // Windows Shell / Explorer pinning fallbacks, see issue: https://github.com/nextcloud/desktop/issues/1599 #ifdef Q_OS_WIN void SocketApi::command_COPYASPATH(const QString &localFile, SocketListener *) @@ -1198,29 +1175,6 @@ void SocketApi::sendSharingContextMenuOptions(const FileData &fileData, SocketLi listener->sendMessage(QLatin1String("MENU_ITEM:DISABLED:d:") + (!record.isDirectory() ? tr("Resharing this file is not allowed") : tr("Resharing this folder is not allowed"))); } else { listener->sendMessage(QLatin1String("MENU_ITEM:SHARE") + flagString + tr("Share options")); - - // Do we have public links? - bool publicLinksEnabled = theme->linkSharing() && capabilities.sharePublicLink(); - - // Is is possible to create a public link without user choices? - bool canCreateDefaultPublicLink = publicLinksEnabled - && !capabilities.sharePublicLinkEnforceExpireDate() - && !capabilities.sharePublicLinkAskOptionalPassword() - && !capabilities.sharePublicLinkEnforcePassword(); - - if (canCreateDefaultPublicLink) { - if (isSecureFileDropSupported) { - listener->sendMessage(QLatin1String("MENU_ITEM:COPY_SECUREFILEDROP_LINK") + QLatin1String("::") + tr("Copy secure file drop link")); - } else { - listener->sendMessage(QLatin1String("MENU_ITEM:COPY_PUBLIC_LINK") + flagString + tr("Copy public link")); - } - } else if (publicLinksEnabled) { - if (isSecureFileDropSupported) { - listener->sendMessage(QLatin1String("MENU_ITEM:MANAGE_PUBLIC_LINKS") + QLatin1String("::") + tr("Copy secure filedrop link")); - } else { - listener->sendMessage(QLatin1String("MENU_ITEM:MANAGE_PUBLIC_LINKS") + flagString + tr("Copy public link")); - } - } } if (itemEncryptionFlag == SharingContextItemEncryptedFlag::NotEncryptedItem) { diff --git a/src/gui/socketapi/socketapi.h b/src/gui/socketapi/socketapi.h index bf95d780cd821..b981da3f18d01 100644 --- a/src/gui/socketapi/socketapi.h +++ b/src/gui/socketapi/socketapi.h @@ -129,9 +129,7 @@ private slots: Q_INVOKABLE void command_ENCRYPT(const QString &localFile, OCC::SocketListener *listener); Q_INVOKABLE void command_SHARE(const QString &localFile, OCC::SocketListener *listener); Q_INVOKABLE void command_LEAVESHARE(const QString &localFile, OCC::SocketListener *listener); - Q_INVOKABLE void command_MANAGE_PUBLIC_LINKS(const QString &localFile, OCC::SocketListener *listener); Q_INVOKABLE void command_COPY_SECUREFILEDROP_LINK(const QString &localFile, OCC::SocketListener *listener); - Q_INVOKABLE void command_COPY_PUBLIC_LINK(const QString &localFile, OCC::SocketListener *listener); Q_INVOKABLE void command_COPY_PRIVATE_LINK(const QString &localFile, OCC::SocketListener *listener); Q_INVOKABLE void command_EMAIL_PRIVATE_LINK(const QString &localFile, OCC::SocketListener *listener); Q_INVOKABLE void command_OPEN_PRIVATE_LINK(const QString &localFile, OCC::SocketListener *listener); From 1fdf200dd424e3922aa0f1b3f46e95f1f8c20e18 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Wed, 13 Nov 2024 11:54:36 +0100 Subject: [PATCH 138/244] flush logs every 5 lines written should help not loosing too much logs in case of a crash or similar not nominal stop of the client Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/libsync/logger.cpp | 8 +++++++- src/libsync/logger.h | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/libsync/logger.cpp b/src/libsync/logger.cpp index 5e885d7afebe4..a9ffad0f348c0 100644 --- a/src/libsync/logger.cpp +++ b/src/libsync/logger.cpp @@ -37,6 +37,7 @@ namespace { constexpr int CrashLogSize = 20; constexpr auto MaxLogLinesCount = 50000; +constexpr auto MaxLogLinesBeforeFlush = 10; static bool compressLog(const QString &originalName, const QString &targetName) { @@ -145,8 +146,13 @@ void Logger::doLog(QtMsgType type, const QMessageLogContext &ctx, const QString if (_logstream) { (*_logstream) << msg << "\n"; - if (_doFileFlush) + ++_linesCounter; + if (_doFileFlush || + _linesCounter >= MaxLogLinesBeforeFlush || + type == QtMsgType::QtWarningMsg || type == QtMsgType::QtCriticalMsg || type == QtMsgType::QtFatalMsg) { _logstream->flush(); + _linesCounter = 0; + } } if (_permanentDeleteLogStream && ctx.category && strcmp(ctx.category, lcPermanentLog().categoryName()) == 0) { (*_permanentDeleteLogStream) << msg << "\n"; diff --git a/src/libsync/logger.h b/src/libsync/logger.h index 2d9dce3193edd..b913678b40172 100644 --- a/src/libsync/logger.h +++ b/src/libsync/logger.h @@ -110,6 +110,7 @@ public slots: QFile _logFile; bool _doFileFlush = false; + int _linesCounter = 0; int _logExpire = 0; bool _logDebug = false; QScopedPointer _logstream; From a1ae1c9f341243cb7160699645b2c4230900d346 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Wed, 20 Nov 2024 12:03:37 +0100 Subject: [PATCH 139/244] ensure folder permissions are read-only when needed a folder item must be set read-only if files or sub-folders cannot be created a folder item must be set read-write in all other situations Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/libsync/owncloudpropagator.cpp | 8 +--- test/testpermissions.cpp | 63 ++---------------------------- 2 files changed, 4 insertions(+), 67 deletions(-) diff --git a/src/libsync/owncloudpropagator.cpp b/src/libsync/owncloudpropagator.cpp index c8b85657bb0c8..193da94df3e9a 100644 --- a/src/libsync/owncloudpropagator.cpp +++ b/src/libsync/owncloudpropagator.cpp @@ -1457,8 +1457,6 @@ void PropagateDirectory::slotSubJobsFinished(SyncFileItem::Status status) #if !defined(Q_OS_MACOS) || __MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_15 if (!_item->_remotePerm.isNull() && !_item->_remotePerm.hasPermission(RemotePermissions::CanAddFile) && - !_item->_remotePerm.hasPermission(RemotePermissions::CanRename) && - !_item->_remotePerm.hasPermission(RemotePermissions::CanMove) && !_item->_remotePerm.hasPermission(RemotePermissions::CanAddSubDirectories)) { try { if (FileSystem::fileExists(propagator()->fullLocalPath(_item->_file))) { @@ -1480,11 +1478,7 @@ void PropagateDirectory::slotSubJobsFinished(SyncFileItem::Status status) _item->_status = SyncFileItem::NormalError; _item->_errorString = tr("The folder %1 cannot be made read-only: %2").arg(_item->_file, e.what()); } - } else if (!_item->_remotePerm.isNull() && - (_item->_remotePerm.hasPermission(RemotePermissions::CanAddFile) || - !_item->_remotePerm.hasPermission(RemotePermissions::CanRename) || - !_item->_remotePerm.hasPermission(RemotePermissions::CanMove) || - !_item->_remotePerm.hasPermission(RemotePermissions::CanAddSubDirectories))) { + } else { try { if (FileSystem::fileExists(propagator()->fullLocalPath(_item->_file))) { FileSystem::setFolderPermissions(propagator()->fullLocalPath(_item->_file), FileSystem::FolderPermissions::ReadWrite); diff --git a/test/testpermissions.cpp b/test/testpermissions.cpp index f334b22de5abc..a090d3b6fe141 100644 --- a/test/testpermissions.cpp +++ b/test/testpermissions.cpp @@ -564,63 +564,6 @@ private slots: QVERIFY(cls.find("zallowed/sub2/file")); } - // Test for issue #7293 - void testAllowedMoveForbiddenDelete() { - FakeFolder fakeFolder{FileInfo{}}; - - QObject::connect(&fakeFolder.syncEngine(), &SyncEngine::aboutToRemoveRemnantsReadOnlyFolders, - [&](const QList &folders, const QString &localPath, std::function callback) { - for(const auto &oneFolder : folders) { - FileSystem::removeRecursively(localPath + oneFolder->_file); - } - callback(false); - }); - - // Some of this test depends on the order of discovery. With threading - // that order becomes effectively random, but we want to make sure to test - // all cases and thus disable threading. - auto syncOpts = fakeFolder.syncEngine().syncOptions(); - syncOpts._parallelNetworkJobs = 1; - fakeFolder.syncEngine().setSyncOptions(syncOpts); - - auto &lm = fakeFolder.localModifier(); - auto &rm = fakeFolder.remoteModifier(); - rm.mkdir("changeonly"); - rm.mkdir("changeonly/sub1"); - rm.insert("changeonly/sub1/file1"); - rm.insert("changeonly/sub1/filetorname1a"); - rm.insert("changeonly/sub1/filetorname1z"); - rm.mkdir("changeonly/sub2"); - rm.insert("changeonly/sub2/file2"); - rm.insert("changeonly/sub2/filetorname2a"); - rm.insert("changeonly/sub2/filetorname2z"); - - setAllPerm(rm.find("changeonly"), RemotePermissions::fromServerString("NSV")); - - QVERIFY(fakeFolder.syncOnce()); - - lm.rename("changeonly/sub1/filetorname1a", "changeonly/sub1/aaa1_renamed"); - lm.rename("changeonly/sub1/filetorname1z", "changeonly/sub1/zzz1_renamed"); - - lm.rename("changeonly/sub2/filetorname2a", "changeonly/sub2/aaa2_renamed"); - lm.rename("changeonly/sub2/filetorname2z", "changeonly/sub2/zzz2_renamed"); - - auto expectedState = fakeFolder.currentLocalState(); - - QVERIFY(fakeFolder.syncOnce()); - QCOMPARE(fakeFolder.currentLocalState(), expectedState); - QCOMPARE(fakeFolder.currentRemoteState(), expectedState); - - lm.rename("changeonly/sub1", "changeonly/aaa"); - lm.rename("changeonly/sub2", "changeonly/zzz"); - - expectedState = fakeFolder.currentLocalState(); - - QVERIFY(fakeFolder.syncOnce()); - QCOMPARE(fakeFolder.currentLocalState(), expectedState); - QCOMPARE(fakeFolder.currentRemoteState(), expectedState); - } - void testParentMoveNotAllowedChildrenRestored() { FakeFolder fakeFolder{FileInfo{}}; @@ -722,7 +665,7 @@ private slots: remote.mkdir("readWriteFolder"); - remote.find("readWriteFolder")->permissions = RemotePermissions::fromServerString("WDNVRSM"); + remote.find("readWriteFolder")->permissions = RemotePermissions::fromServerString("CKWDNVRSM"); QVERIFY(fakeFolder.syncOnce()); QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); @@ -757,7 +700,7 @@ private slots: QVERIFY(folderStatus.permissions() & std::filesystem::perms::owner_read); QVERIFY(!static_cast(folderStatus.permissions() & std::filesystem::perms::owner_write)); - remote.find("testFolder")->permissions = RemotePermissions::fromServerString("WDNVRSM"); + remote.find("testFolder")->permissions = RemotePermissions::fromServerString("CKWDNVRSM"); QVERIFY(fakeFolder.syncOnce()); QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); @@ -815,7 +758,7 @@ private slots: QVERIFY(subFolderReadOnlyStatus.permissions() & std::filesystem::perms::owner_read); QVERIFY(!static_cast(subFolderReadOnlyStatus.permissions() & std::filesystem::perms::owner_write)); - remote.find("testFolder/subFolderReadOnly")->permissions = RemotePermissions::fromServerString("WDNVRSm"); + remote.find("testFolder/subFolderReadOnly")->permissions = RemotePermissions::fromServerString("CKWDNVRSm"); remote.find("testFolder/subFolderReadWrite")->permissions = RemotePermissions::fromServerString("m"); remote.mkdir("testFolder/newSubFolder"); remote.create("testFolder/testFile", 12, '9'); From 4e0be55731b1c241b77ced207442a16207f097f0 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Wed, 20 Nov 2024 14:09:08 +0100 Subject: [PATCH 140/244] ensure no any user writable permissions in Nextcloud sync folder past versions may have wrongly set the write permissions for other users (UNIX style permissions) remove this under the hypothesis that newly created files or folders gets more restrictive permissions and that past files or folders should be updated to get the same permissions Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/csync/csync.h | 2 ++ src/csync/vio/csync_vio_local_unix.cpp | 2 ++ src/libsync/discovery.cpp | 11 +++++++++++ src/libsync/discoveryphase.cpp | 1 + src/libsync/discoveryphase.h | 1 + src/libsync/filesystem.cpp | 1 + src/libsync/owncloudpropagator.cpp | 14 +++----------- src/libsync/syncengine.cpp | 4 ++++ src/libsync/syncfileitem.h | 2 ++ 9 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/csync/csync.h b/src/csync/csync.h index 5c8fbc0978b6b..9da7497f75c7f 100644 --- a/src/csync/csync.h +++ b/src/csync/csync.h @@ -217,6 +217,7 @@ struct OCSYNC_EXPORT csync_file_stat_s { bool is_hidden BITFIELD(1); // Not saved in the DB, only used during discovery for local files. bool isE2eEncrypted BITFIELD(1); bool is_metadata_missing BITFIELD(1); // Indicates the file has missing metadata, f.ex. the file is not a placeholder in case of vfs. + bool isPermissionsInvalid BITFIELD(1); QByteArray path; QByteArray rename_path; @@ -244,6 +245,7 @@ struct OCSYNC_EXPORT csync_file_stat_s { , is_hidden(false) , isE2eEncrypted(false) , is_metadata_missing(false) + , isPermissionsInvalid(false) { } }; diff --git a/src/csync/vio/csync_vio_local_unix.cpp b/src/csync/vio/csync_vio_local_unix.cpp index c5e22abb3c8b0..ec47ab3c7c994 100644 --- a/src/csync/vio/csync_vio_local_unix.cpp +++ b/src/csync/vio/csync_vio_local_unix.cpp @@ -170,5 +170,7 @@ static int _csync_vio_local_stat_mb(const mbchar_t *wuri, csync_file_stat_t *buf buf->inode = sb.st_ino; buf->modtime = sb.st_mtime; buf->size = sb.st_size; + buf->isPermissionsInvalid = (sb.st_mode & S_IWOTH) == S_IWOTH; + return 0; } diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp index 05bdf1554bc0b..7300a4c5f9a1e 100644 --- a/src/libsync/discovery.cpp +++ b/src/libsync/discovery.cpp @@ -1070,6 +1070,10 @@ void ProcessDirectoryJob::processFileAnalyzeLocalInfo( if (_queryLocal != NormalQuery && _queryServer != NormalQuery) recurse = false; + if (localEntry.isPermissionsInvalid) { + recurse = true; + } + if ((item->_direction == SyncFileItem::Down || item->_instruction == CSYNC_INSTRUCTION_CONFLICT || item->_instruction == CSYNC_INSTRUCTION_NEW || item->_instruction == CSYNC_INSTRUCTION_SYNC) && (item->_modtime <= 0 || item->_modtime >= 0xFFFFFFFF)) { item->_instruction = CSYNC_INSTRUCTION_ERROR; @@ -1097,6 +1101,13 @@ void ProcessDirectoryJob::processFileAnalyzeLocalInfo( } } + if (localEntry.isPermissionsInvalid && item->_instruction == CSyncEnums::CSYNC_INSTRUCTION_NONE) { + item->_instruction = CSYNC_INSTRUCTION_UPDATE_METADATA; + item->_direction = SyncFileItem::Down; + } + + item->isPermissionsInvalid = localEntry.isPermissionsInvalid; + auto recurseQueryLocal = _queryLocal == ParentNotChanged ? ParentNotChanged : localEntry.isDirectory || item->_instruction == CSYNC_INSTRUCTION_RENAME ? NormalQuery : ParentDontExist; processFileFinalize(item, path, recurse, recurseQueryLocal, recurseQueryServer); }; diff --git a/src/libsync/discoveryphase.cpp b/src/libsync/discoveryphase.cpp index 3ca34e94f50fb..6cd226f2ee1a5 100644 --- a/src/libsync/discoveryphase.cpp +++ b/src/libsync/discoveryphase.cpp @@ -348,6 +348,7 @@ void DiscoverySingleLocalDirectoryJob::run() { i.isSymLink = dirent->type == ItemTypeSoftLink; i.isVirtualFile = dirent->type == ItemTypeVirtualFile || dirent->type == ItemTypeVirtualFileDownload; i.isMetadataMissing = dirent->is_metadata_missing; + i.isPermissionsInvalid = dirent->isPermissionsInvalid; i.type = dirent->type; results.push_back(i); } diff --git a/src/libsync/discoveryphase.h b/src/libsync/discoveryphase.h index 2e801de34cd53..bb932f568b4db 100644 --- a/src/libsync/discoveryphase.h +++ b/src/libsync/discoveryphase.h @@ -106,6 +106,7 @@ struct LocalInfo bool isVirtualFile = false; bool isSymLink = false; bool isMetadataMissing = false; + bool isPermissionsInvalid = false; [[nodiscard]] bool isValid() const { return !name.isNull(); } }; diff --git a/src/libsync/filesystem.cpp b/src/libsync/filesystem.cpp index 2931a3d877c7e..9dbdde6a7474c 100644 --- a/src/libsync/filesystem.cpp +++ b/src/libsync/filesystem.cpp @@ -468,6 +468,7 @@ bool FileSystem::setFolderPermissions(const QString &path, case OCC::FileSystem::FolderPermissions::ReadOnly: break; case OCC::FileSystem::FolderPermissions::ReadWrite: + std::filesystem::permissions(stdStrPath, std::filesystem::perms::others_write, std::filesystem::perm_options::remove); std::filesystem::permissions(stdStrPath, std::filesystem::perms::owner_write, std::filesystem::perm_options::add); break; } diff --git a/src/libsync/owncloudpropagator.cpp b/src/libsync/owncloudpropagator.cpp index 193da94df3e9a..f10fc6135913c 100644 --- a/src/libsync/owncloudpropagator.cpp +++ b/src/libsync/owncloudpropagator.cpp @@ -1461,15 +1461,9 @@ void PropagateDirectory::slotSubJobsFinished(SyncFileItem::Status status) try { if (FileSystem::fileExists(propagator()->fullLocalPath(_item->_file))) { FileSystem::setFolderPermissions(propagator()->fullLocalPath(_item->_file), FileSystem::FolderPermissions::ReadOnly); - qCDebug(lcDirectory) << "old permissions" << static_cast(std::filesystem::status(propagator()->fullLocalPath(_item->_file).toStdWString()).permissions()); - std::filesystem::permissions(propagator()->fullLocalPath(_item->_file).toStdWString(), std::filesystem::perms::owner_write | std::filesystem::perms::group_write | std::filesystem::perms::others_write, std::filesystem::perm_options::remove); - qCDebug(lcDirectory) << "new permissions" << static_cast(std::filesystem::status(propagator()->fullLocalPath(_item->_file).toStdWString()).permissions()); } if (!_item->_renameTarget.isEmpty() && FileSystem::fileExists(propagator()->fullLocalPath(_item->_renameTarget))) { FileSystem::setFolderPermissions(propagator()->fullLocalPath(_item->_renameTarget), FileSystem::FolderPermissions::ReadOnly); - qCDebug(lcDirectory) << "old permissions" << static_cast(std::filesystem::status(propagator()->fullLocalPath(_item->_renameTarget).toStdWString()).permissions()); - std::filesystem::permissions(propagator()->fullLocalPath(_item->_renameTarget).toStdWString(), std::filesystem::perms::owner_write | std::filesystem::perms::group_write | std::filesystem::perms::others_write, std::filesystem::perm_options::remove); - qCDebug(lcDirectory) << "new permissions" << static_cast(std::filesystem::status(propagator()->fullLocalPath(_item->_renameTarget).toStdWString()).permissions()); } } catch (const std::filesystem::filesystem_error &e) @@ -1481,15 +1475,13 @@ void PropagateDirectory::slotSubJobsFinished(SyncFileItem::Status status) } else { try { if (FileSystem::fileExists(propagator()->fullLocalPath(_item->_file))) { + qCDebug(lcDirectory) << propagator()->fullLocalPath(_item->_file) << "old permissions" << static_cast(std::filesystem::status(propagator()->fullLocalPath(_item->_file).toStdWString()).permissions()); FileSystem::setFolderPermissions(propagator()->fullLocalPath(_item->_file), FileSystem::FolderPermissions::ReadWrite); - qCDebug(lcDirectory) << "old permissions" << static_cast(std::filesystem::status(propagator()->fullLocalPath(_item->_file).toStdWString()).permissions()); - std::filesystem::permissions(propagator()->fullLocalPath(_item->_file).toStdWString(), std::filesystem::perms::owner_write, std::filesystem::perm_options::add); - qCDebug(lcDirectory) << "new permissions" << static_cast(std::filesystem::status(propagator()->fullLocalPath(_item->_file).toStdWString()).permissions()); + qCDebug(lcDirectory) << propagator()->fullLocalPath(_item->_file) << "new permissions" << static_cast(std::filesystem::status(propagator()->fullLocalPath(_item->_file).toStdWString()).permissions()); } if (!_item->_renameTarget.isEmpty() && FileSystem::fileExists(propagator()->fullLocalPath(_item->_renameTarget))) { - FileSystem::setFolderPermissions(propagator()->fullLocalPath(_item->_renameTarget), FileSystem::FolderPermissions::ReadWrite); qCDebug(lcDirectory) << "old permissions" << static_cast(std::filesystem::status(propagator()->fullLocalPath(_item->_renameTarget).toStdWString()).permissions()); - std::filesystem::permissions(propagator()->fullLocalPath(_item->_renameTarget).toStdWString(), std::filesystem::perms::owner_write, std::filesystem::perm_options::add); + FileSystem::setFolderPermissions(propagator()->fullLocalPath(_item->_renameTarget), FileSystem::FolderPermissions::ReadWrite); qCDebug(lcDirectory) << "new permissions" << static_cast(std::filesystem::status(propagator()->fullLocalPath(_item->_renameTarget).toStdWString()).permissions()); } } diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index ac48c0be2c2cf..0f8691cd05960 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -363,6 +363,10 @@ void OCC::SyncEngine::slotItemDiscovered(const OCC::SyncFileItemPtr &item) const bool isReadOnly = !item->_remotePerm.isNull() && !item->_remotePerm.hasPermission(RemotePermissions::CanWrite); modificationHappened = FileSystem::setFileReadOnlyWeak(filePath, isReadOnly); } + if (item->isPermissionsInvalid) { + const auto isReadOnly = !item->_remotePerm.isNull() && !item->_remotePerm.hasPermission(RemotePermissions::CanWrite); + FileSystem::setFileReadOnly(filePath, isReadOnly); + } modificationHappened |= item->_size != prev._fileSize; diff --git a/src/libsync/syncfileitem.h b/src/libsync/syncfileitem.h index d90348af4ebda..46ee49621c688 100644 --- a/src/libsync/syncfileitem.h +++ b/src/libsync/syncfileitem.h @@ -343,6 +343,8 @@ class OWNCLOUDSYNC_EXPORT SyncFileItem bool _isLivePhoto = false; QString _livePhotoFile; + bool isPermissionsInvalid = false; + QString _discoveryResult; }; From 49d5cf07205b210a8c2002b2dd0ad7f3ea910782 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Thu, 21 Nov 2024 11:52:04 +0100 Subject: [PATCH 141/244] better logs and factor common code in folder permissions handling Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/libsync/owncloudpropagator.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/libsync/owncloudpropagator.cpp b/src/libsync/owncloudpropagator.cpp index f10fc6135913c..ceb41fd84d021 100644 --- a/src/libsync/owncloudpropagator.cpp +++ b/src/libsync/owncloudpropagator.cpp @@ -1474,15 +1474,18 @@ void PropagateDirectory::slotSubJobsFinished(SyncFileItem::Status status) } } else { try { - if (FileSystem::fileExists(propagator()->fullLocalPath(_item->_file))) { - qCDebug(lcDirectory) << propagator()->fullLocalPath(_item->_file) << "old permissions" << static_cast(std::filesystem::status(propagator()->fullLocalPath(_item->_file).toStdWString()).permissions()); - FileSystem::setFolderPermissions(propagator()->fullLocalPath(_item->_file), FileSystem::FolderPermissions::ReadWrite); - qCDebug(lcDirectory) << propagator()->fullLocalPath(_item->_file) << "new permissions" << static_cast(std::filesystem::status(propagator()->fullLocalPath(_item->_file).toStdWString()).permissions()); + const auto permissionsChangeHelper = [] (const auto fileName) + { + qCDebug(lcDirectory) << fileName << "permissions changed: old permissions" << static_cast(std::filesystem::status(fileName.toStdWString()).permissions()); + FileSystem::setFolderPermissions(fileName, FileSystem::FolderPermissions::ReadWrite); + qCDebug(lcDirectory) << fileName << "applied new permissions" << static_cast(std::filesystem::status(fileName.toStdWString()).permissions()); + }; + + if (const auto fileName = propagator()->fullLocalPath(_item->_file); FileSystem::fileExists(fileName)) { + permissionsChangeHelper(fileName); } - if (!_item->_renameTarget.isEmpty() && FileSystem::fileExists(propagator()->fullLocalPath(_item->_renameTarget))) { - qCDebug(lcDirectory) << "old permissions" << static_cast(std::filesystem::status(propagator()->fullLocalPath(_item->_renameTarget).toStdWString()).permissions()); - FileSystem::setFolderPermissions(propagator()->fullLocalPath(_item->_renameTarget), FileSystem::FolderPermissions::ReadWrite); - qCDebug(lcDirectory) << "new permissions" << static_cast(std::filesystem::status(propagator()->fullLocalPath(_item->_renameTarget).toStdWString()).permissions()); + if (const auto fileName = propagator()->fullLocalPath(_item->_renameTarget); !_item->_renameTarget.isEmpty() && FileSystem::fileExists(fileName)) { + permissionsChangeHelper(fileName); } } catch (const std::filesystem::filesystem_error &e) From c227dc22e6e0be5332d86c86b7510107e7a99773 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 13 Feb 2023 13:15:01 +0100 Subject: [PATCH 142/244] Add checkbox to disable general talk notifications in general settings Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/generalsettings.ui | 251 ++++++++++++++++++++++++++++++------- 1 file changed, 209 insertions(+), 42 deletions(-) diff --git a/src/gui/generalsettings.ui b/src/gui/generalsettings.ui index d81e83cfbf50b..4a27fe0c838b2 100644 --- a/src/gui/generalsettings.ui +++ b/src/gui/generalsettings.ui @@ -7,13 +7,221 @@ 0 0 667 - 663 + 796 Form + + + + About + + + + + + + 0 + 0 + + + + About + + + + + + + + + Legal notice + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + General Settings + + + + + + &Launch on System Startup + + + + + + + Show Call Notifications + + + + + + + For System Tray + + + Use &Monochrome Icons + + + + + + + Show Chat Notifications + + + + + + + Show Server &Notifications + + + + + + + + + + Updates + + + + + + + + &Automatically check for Updates + + + true + + + + + + + + + + + + 0 + 0 + + + + &Channel + + + updateChannel + + + + + + + + 0 + 0 + + + + + stable + + + + + beta + + + + + + + + + + + true + + + true + + + + + + + + 0 + 0 + + + + &Restart && Update + + + + + + + + + + 0 + 0 + + + + &Check for Update now + + + + + + + + + + Qt::Vertical + + + + 20 + 0 + + + + @@ -383,52 +591,11 @@ - - - - General Settings - - - - - - For System Tray - - - Use &monochrome icons - - - - - - - &Launch on system startup - - - - - - - Show server &notifications - - - - - - - Show call notifications - - - - - - autostartCheckBox serverNotificationsCheckBox - monoIconsCheckBox ignoredFilesButton newFolderLimitCheckBox newFolderLimitSpinBox From 6487c82167c476676f3e0c472af86cf0298a8fcd Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 13 Feb 2023 13:47:52 +0100 Subject: [PATCH 143/244] Add setting for showing chat notifications to configfile Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/libsync/configfile.cpp | 14 ++++++++++++++ src/libsync/configfile.h | 5 ++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/libsync/configfile.cpp b/src/libsync/configfile.cpp index 1f571de3c42cf..2b1cda432e597 100644 --- a/src/libsync/configfile.cpp +++ b/src/libsync/configfile.cpp @@ -58,6 +58,7 @@ static constexpr char deleteFilesThresholdC[] = "deleteFilesThreshold"; static constexpr char crashReporterC[] = "crashReporter"; static constexpr char optionalServerNotificationsC[] = "optionalServerNotifications"; static constexpr char showCallNotificationsC[] = "showCallNotifications"; +static constexpr char showChatNotificationsC[] = "showChatNotifications"; static constexpr char showInExplorerNavigationPaneC[] = "showInExplorerNavigationPane"; static constexpr char skipUpdateCheckC[] = "skipUpdateCheck"; static constexpr char autoUpdateCheckC[] = "autoUpdateCheck"; @@ -205,6 +206,19 @@ bool ConfigFile::optionalServerNotifications() const return settings.value(QLatin1String(optionalServerNotificationsC), true).toBool(); } +bool ConfigFile::showChatNotifications() const +{ + const QSettings settings(configFile(), QSettings::IniFormat); + return settings.value(QLatin1String(showChatNotificationsC), true).toBool() && optionalServerNotifications(); +} + +void ConfigFile::setShowChatNotifications(const bool show) +{ + QSettings settings(configFile(), QSettings::IniFormat); + settings.setValue(QLatin1String(showChatNotificationsC), show); + settings.sync(); +} + bool ConfigFile::showCallNotifications() const { const QSettings settings(configFile(), QSettings::IniFormat); diff --git a/src/libsync/configfile.h b/src/libsync/configfile.h index ff289b1fe0605..212d6e6fe0d7d 100644 --- a/src/libsync/configfile.h +++ b/src/libsync/configfile.h @@ -167,8 +167,11 @@ class OWNCLOUDSYNC_EXPORT ConfigFile [[nodiscard]] bool optionalServerNotifications() const; void setOptionalServerNotifications(bool show); + [[nodiscard]] bool showChatNotifications() const; + void setShowChatNotifications(bool show); + [[nodiscard]] bool showCallNotifications() const; - void setShowCallNotifications(bool show); + void setShowCallNotifications(const bool show); [[nodiscard]] bool showInExplorerNavigationPane() const; void setShowInExplorerNavigationPane(bool show); From 4655df2ce0abd1ee7c8cc586e5881260076e4be2 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 13 Feb 2023 13:56:20 +0100 Subject: [PATCH 144/244] Add the chat notification toggle setting logic in generalsettings Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/generalsettings.cpp | 15 ++++++++++++++- src/gui/generalsettings.h | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/gui/generalsettings.cpp b/src/gui/generalsettings.cpp index d9fcbefe284cd..8653f433f6c6f 100644 --- a/src/gui/generalsettings.cpp +++ b/src/gui/generalsettings.cpp @@ -164,6 +164,10 @@ GeneralSettings::GeneralSettings(QWidget *parent) this, &GeneralSettings::slotToggleOptionalServerNotifications); _ui->serverNotificationsCheckBox->setToolTip(tr("Server notifications that require attention.")); + connect(_ui->chatNotificationsCheckBox, &QAbstractButton::toggled, + this, &GeneralSettings::slotToggleChatNotifications); + _ui->chatNotificationsCheckBox->setToolTip(tr("Show chat notification dialogs.")); + connect(_ui->callNotificationsCheckBox, &QAbstractButton::toggled, this, &GeneralSettings::slotToggleCallNotifications); _ui->callNotificationsCheckBox->setToolTip(tr("Show call notification dialogs.")); @@ -271,7 +275,9 @@ void GeneralSettings::loadMiscSettings() _ui->monoIconsCheckBox->setChecked(cfgFile.monoIcons()); _ui->serverNotificationsCheckBox->setChecked(cfgFile.optionalServerNotifications()); - _ui->callNotificationsCheckBox->setEnabled(_ui->serverNotificationsCheckBox->isEnabled()); + _ui->chatNotificationsCheckBox->setEnabled(cfgFile.optionalServerNotifications()); + _ui->chatNotificationsCheckBox->setChecked(cfgFile.showChatNotifications()); + _ui->callNotificationsCheckBox->setEnabled(cfgFile.optionalServerNotifications()); _ui->callNotificationsCheckBox->setChecked(cfgFile.showCallNotifications()); _ui->showInExplorerNavigationPaneCheckBox->setChecked(cfgFile.showInExplorerNavigationPane()); _ui->crashreporterCheckBox->setChecked(cfgFile.crashReporter()); @@ -512,9 +518,16 @@ void GeneralSettings::slotToggleOptionalServerNotifications(bool enable) { ConfigFile cfgFile; cfgFile.setOptionalServerNotifications(enable); + _ui->chatNotificationsCheckBox->setEnabled(enable); _ui->callNotificationsCheckBox->setEnabled(enable); } +void GeneralSettings::slotToggleChatNotifications(bool enable) +{ + ConfigFile cfgFile; + cfgFile.setShowChatNotifications(enable); +} + void GeneralSettings::slotToggleCallNotifications(bool enable) { ConfigFile cfgFile; diff --git a/src/gui/generalsettings.h b/src/gui/generalsettings.h index 02a8cef3dedf2..83067799a9753 100644 --- a/src/gui/generalsettings.h +++ b/src/gui/generalsettings.h @@ -52,6 +52,7 @@ private slots: void saveMiscSettings(); void slotToggleLaunchOnStartup(bool); void slotToggleOptionalServerNotifications(bool); + void slotToggleChatNotifications(bool); void slotToggleCallNotifications(bool); void slotShowInExplorerNavigationPane(bool); void slotIgnoreFilesEditor(); From 258601ff3e9ccb0705516d7e7f2df97dbe30c2bc Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 13 Feb 2023 14:15:18 +0100 Subject: [PATCH 145/244] Only notify talk chat notifications if this is enabled Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/usermodel.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/gui/tray/usermodel.cpp b/src/gui/tray/usermodel.cpp index 98393f4ca9406..fefbe27f46c2b 100644 --- a/src/gui/tray/usermodel.cpp +++ b/src/gui/tray/usermodel.cpp @@ -184,7 +184,12 @@ void User::showDesktopTalkNotification(const Activity &activity) { const auto notificationId = activity._id; - if (!canShowNotification(notificationId)) { + const ConfigFile cfg; + const auto userStatus = _account->account()->userStatusConnector()->userStatus().state(); + if (!canShowNotification(notificationId) || + userStatus == OCC::UserStatus::OnlineStatus::DoNotDisturb || + !cfg.showChatNotifications()) { + return; } From d7428ca423e2f0f9adff8456e6ceb27c1a9e6813 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 26 Jun 2024 17:24:42 +0800 Subject: [PATCH 146/244] Do not use const for POD type in setShowCallNotifications declaration Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/libsync/configfile.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libsync/configfile.h b/src/libsync/configfile.h index 212d6e6fe0d7d..844036336a6f9 100644 --- a/src/libsync/configfile.h +++ b/src/libsync/configfile.h @@ -171,7 +171,7 @@ class OWNCLOUDSYNC_EXPORT ConfigFile void setShowChatNotifications(bool show); [[nodiscard]] bool showCallNotifications() const; - void setShowCallNotifications(const bool show); + void setShowCallNotifications(bool show); [[nodiscard]] bool showInExplorerNavigationPane() const; void setShowInExplorerNavigationPane(bool show); From b0b4a9898301abee4a552c7d72a041c604ca061b Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 18 Nov 2024 16:15:31 +0800 Subject: [PATCH 147/244] Remove unneeded check for DnD status when showing desktop talk notification The server will not deliver it anyway Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/usermodel.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/gui/tray/usermodel.cpp b/src/gui/tray/usermodel.cpp index fefbe27f46c2b..c39b1406e57c3 100644 --- a/src/gui/tray/usermodel.cpp +++ b/src/gui/tray/usermodel.cpp @@ -184,12 +184,7 @@ void User::showDesktopTalkNotification(const Activity &activity) { const auto notificationId = activity._id; - const ConfigFile cfg; - const auto userStatus = _account->account()->userStatusConnector()->userStatus().state(); - if (!canShowNotification(notificationId) || - userStatus == OCC::UserStatus::OnlineStatus::DoNotDisturb || - !cfg.showChatNotifications()) { - + if (!canShowNotification(notificationId) || !ConfigFile().showChatNotifications()) { return; } From 6b0d293b1c1075fbbf2f7dd93d32499ed2cfe91a Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Thu, 21 Nov 2024 10:37:50 +0100 Subject: [PATCH 148/244] remove this call that is probably useless and crashing tests we initialize all colors in the palette, so this init methos is most probably not doing anything useful crashes when doing in automated tests Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/libsync/theme.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index 3c65e31bbcf8d..cb672c71750dd 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -367,8 +367,6 @@ Theme::Theme() #if defined(Q_OS_WIN) // Windows does not provide a dark theme for Win32 apps so let's come up with a palette // Credit to https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle - reserveDarkPalette = qApp->palette(); - reserveDarkPalette.setColor(QPalette::WindowText, Qt::white); reserveDarkPalette.setColor(QPalette::Button, QColor(127, 127, 127)); reserveDarkPalette.setColor(QPalette::Light, QColor(20, 20, 20)); From c30bc5c155a9a80226bede3cd59ec20cc5557e71 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 21 Nov 2024 23:08:38 +0800 Subject: [PATCH 149/244] Do not take current dir pth for filemanager for recursive codesign executable path check Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- admin/osx/mac-crafter/Sources/Utils/Codesign.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift index 426d3ce05a4d6..cbbdf0eb32d15 100644 --- a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift +++ b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift @@ -70,7 +70,7 @@ func recursivelyCodesign( } for case let enumeratedItem as String in pathEnumerator { - let isExecutableFile = try isExecutable(fm.currentDirectoryPath + "/" + path + "/" + enumeratedItem) + let isExecutableFile = try isExecutable(path + "/" + enumeratedItem) guard isLibrary(enumeratedItem) || isAppExtension(enumeratedItem) || isExecutableFile else { continue } From 908b18887b71c954ea5448d2048c75ccdc30a2fc Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 21 Nov 2024 23:09:13 +0800 Subject: [PATCH 150/244] Ensure path passed to codesigning is absolute when using mac-crafter codesign Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- admin/osx/mac-crafter/Sources/main.swift | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/admin/osx/mac-crafter/Sources/main.swift b/admin/osx/mac-crafter/Sources/main.swift index d7e680a30fe41..654954ec965c0 100644 --- a/admin/osx/mac-crafter/Sources/main.swift +++ b/admin/osx/mac-crafter/Sources/main.swift @@ -275,7 +275,10 @@ struct Codesign: ParsableCommand { var codeSignIdentity: String mutating func run() throws { - try codesignClientAppBundle(at: appBundlePath, withCodeSignIdentity: codeSignIdentity) + let absolutePath = appBundlePath.hasPrefix("/") + ? appBundlePath + : "\(FileManager.default.currentDirectoryPath)/\(appBundlePath)" + try codesignClientAppBundle(at: absolutePath, withCodeSignIdentity: codeSignIdentity) } } From b56bb72f35bb0e1cf0ec1b014aef28c102507255 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Fri, 22 Nov 2024 00:36:12 +0800 Subject: [PATCH 151/244] Only define enumeratedItemPath once Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- admin/osx/mac-crafter/Sources/Utils/Codesign.swift | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift index cbbdf0eb32d15..a3fb29d827531 100644 --- a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift +++ b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift @@ -70,11 +70,12 @@ func recursivelyCodesign( } for case let enumeratedItem as String in pathEnumerator { - let isExecutableFile = try isExecutable(path + "/" + enumeratedItem) + let enumeratedItemPath = "\(path)/\(enumeratedItem)" + let isExecutableFile = try isExecutable(enumeratedItemPath) guard isLibrary(enumeratedItem) || isAppExtension(enumeratedItem) || isExecutableFile else { continue } - try codesign(identity: identity, path: "\(path)/\(enumeratedItem)", options: options) + try codesign(identity: identity, path: enumeratedItemPath, options: options) } } From 9a52eb11b4b48c75a2411d9eb552516298b53683 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Fri, 22 Nov 2024 00:36:25 +0800 Subject: [PATCH 152/244] Ensure we sign the app bundle's main executable last Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- admin/osx/mac-crafter/Sources/Utils/Codesign.swift | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift index a3fb29d827531..405371f1106d4 100644 --- a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift +++ b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift @@ -145,6 +145,15 @@ func codesignClientAppBundle( } // Now we do the final codesign bit + let binariesDir = "\(clientContentsDir)/MacOS" print("Code-signing Nextcloud Desktop Client binaries...") - try recursivelyCodesign(path: "\(clientContentsDir)/MacOS/", identity: codeSignIdentity) + try recursivelyCodesign(path: binariesDir, identity: codeSignIdentity) + + guard let appName = clientAppDir.components(separatedBy: "/").last, clientAppDir.hasSuffix(".app") else { + throw AppBundleSigningError.couldNotEnumerate("Failed to determine main executable name.") + } + + // Sign the main executable last + let mainExecutableName = String(appName.dropLast(".app".count)) + try codesign(identity: codeSignIdentity, path: "\(binariesDir)/\(mainExecutableName)") } From dd35cdff889ec65a7ed22325cb5650b5894c51e1 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Fri, 22 Nov 2024 02:29:49 +0800 Subject: [PATCH 153/244] Add ability to skip certain files in recursive codesign Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- admin/osx/mac-crafter/Sources/Utils/Codesign.swift | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift index 405371f1106d4..1e31b244c58af 100644 --- a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift +++ b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift @@ -60,7 +60,8 @@ func codesign(identity: String, path: String, options: String = defaultCodesignO func recursivelyCodesign( path: String, identity: String, - options: String = defaultCodesignOptions + options: String = defaultCodesignOptions, + skip: [String] = [] ) throws { let fm = FileManager.default guard let pathEnumerator = fm.enumerator(atPath: path) else { @@ -71,6 +72,10 @@ func recursivelyCodesign( for case let enumeratedItem as String in pathEnumerator { let enumeratedItemPath = "\(path)/\(enumeratedItem)" + guard !skip.contains(enumeratedItemPath) else { + print("Skipping \(enumeratedItemPath)...") + continue + } let isExecutableFile = try isExecutable(enumeratedItemPath) guard isLibrary(enumeratedItem) || isAppExtension(enumeratedItem) || isExecutableFile else { continue From 1bf7669e82bbd09e52dd4e3270e1b5425fa5f183 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Fri, 22 Nov 2024 02:30:04 +0800 Subject: [PATCH 154/244] Skip main executable during first binary codesign round Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- admin/osx/mac-crafter/Sources/Utils/Codesign.swift | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift index 1e31b244c58af..be7eb586d6da9 100644 --- a/admin/osx/mac-crafter/Sources/Utils/Codesign.swift +++ b/admin/osx/mac-crafter/Sources/Utils/Codesign.swift @@ -152,7 +152,6 @@ func codesignClientAppBundle( // Now we do the final codesign bit let binariesDir = "\(clientContentsDir)/MacOS" print("Code-signing Nextcloud Desktop Client binaries...") - try recursivelyCodesign(path: binariesDir, identity: codeSignIdentity) guard let appName = clientAppDir.components(separatedBy: "/").last, clientAppDir.hasSuffix(".app") else { throw AppBundleSigningError.couldNotEnumerate("Failed to determine main executable name.") @@ -160,5 +159,7 @@ func codesignClientAppBundle( // Sign the main executable last let mainExecutableName = String(appName.dropLast(".app".count)) - try codesign(identity: codeSignIdentity, path: "\(binariesDir)/\(mainExecutableName)") + let mainExecutablePath = "\(binariesDir)/\(mainExecutableName)" + try recursivelyCodesign(path: binariesDir, identity: codeSignIdentity, skip: [mainExecutablePath]) + try codesign(identity: codeSignIdentity, path: mainExecutablePath) } From 3686a835f0c74f466150a44210d2ad272d08c95b Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Fri, 22 Nov 2024 02:52:48 +0000 Subject: [PATCH 155/244] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: Rainer Walke --- translations/client_ar.ts | 326 +++++++++++++++++++++++------------ translations/client_bg.ts | 310 +++++++++++++++++++++------------ translations/client_br.ts | 306 +++++++++++++++++++++----------- translations/client_ca.ts | 308 +++++++++++++++++++++------------ translations/client_cs.ts | 326 +++++++++++++++++++++++------------ translations/client_da.ts | 308 +++++++++++++++++++++------------ translations/client_de.ts | 324 ++++++++++++++++++++++------------ translations/client_el.ts | 308 +++++++++++++++++++++------------ translations/client_en_GB.ts | 326 +++++++++++++++++++++++------------ translations/client_eo.ts | 308 +++++++++++++++++++++------------ translations/client_es.ts | 326 +++++++++++++++++++++++------------ translations/client_es_CL.ts | 302 +++++++++++++++++++++----------- translations/client_es_CO.ts | 302 +++++++++++++++++++++----------- translations/client_es_CR.ts | 302 +++++++++++++++++++++----------- translations/client_es_DO.ts | 302 +++++++++++++++++++++----------- translations/client_es_EC.ts | 310 +++++++++++++++++++++------------ translations/client_es_GT.ts | 302 +++++++++++++++++++++----------- translations/client_es_HN.ts | 302 +++++++++++++++++++++----------- translations/client_es_MX.ts | 318 ++++++++++++++++++++++------------ translations/client_es_SV.ts | 302 +++++++++++++++++++++----------- translations/client_eu.ts | 326 +++++++++++++++++++++++------------ translations/client_fa.ts | 312 +++++++++++++++++++++------------ translations/client_fi.ts | 310 +++++++++++++++++++++------------ translations/client_fr.ts | 326 +++++++++++++++++++++++------------ translations/client_ga.ts | 326 +++++++++++++++++++++++------------ translations/client_gl.ts | 326 +++++++++++++++++++++++------------ translations/client_he.ts | 308 +++++++++++++++++++++------------ translations/client_hr.ts | 308 +++++++++++++++++++++------------ translations/client_hu.ts | 312 +++++++++++++++++++++------------ translations/client_is.ts | 310 +++++++++++++++++++++------------ translations/client_it.ts | 326 +++++++++++++++++++++++------------ translations/client_ja.ts | 326 +++++++++++++++++++++++------------ translations/client_ko.ts | 312 +++++++++++++++++++++------------ translations/client_lt_LT.ts | 310 +++++++++++++++++++++------------ translations/client_lv.ts | 302 +++++++++++++++++++++----------- translations/client_mk.ts | 306 +++++++++++++++++++++----------- translations/client_nb_NO.ts | 318 ++++++++++++++++++++++------------ translations/client_nl.ts | 318 ++++++++++++++++++++++------------ translations/client_oc.ts | 310 +++++++++++++++++++++------------ translations/client_pl.ts | 312 +++++++++++++++++++++------------ translations/client_pt.ts | 306 +++++++++++++++++++++----------- translations/client_pt_BR.ts | 326 +++++++++++++++++++++++------------ translations/client_ro.ts | 310 +++++++++++++++++++++------------ translations/client_ru.ts | 318 ++++++++++++++++++++++------------ translations/client_sc.ts | 308 +++++++++++++++++++++------------ translations/client_sk.ts | 312 +++++++++++++++++++++------------ translations/client_sl.ts | 310 +++++++++++++++++++++------------ translations/client_sr.ts | 326 +++++++++++++++++++++++------------ translations/client_sv.ts | 326 +++++++++++++++++++++++------------ translations/client_th.ts | 302 +++++++++++++++++++++----------- translations/client_tr.ts | 326 +++++++++++++++++++++++------------ translations/client_ug.ts | 326 +++++++++++++++++++++++------------ translations/client_uk.ts | 326 +++++++++++++++++++++++------------ translations/client_zh_CN.ts | 318 ++++++++++++++++++++++------------ translations/client_zh_HK.ts | 324 ++++++++++++++++++++++------------ translations/client_zh_TW.ts | 326 +++++++++++++++++++++++------------ 56 files changed, 11494 insertions(+), 6118 deletions(-) diff --git a/translations/client_ar.ts b/translations/client_ar.ts index d40c315a58e17..41dd7bb11e844 100644 --- a/translations/client_ar.ts +++ b/translations/client_ar.ts @@ -166,6 +166,66 @@ نسخة الخادم + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account إضافة حساب جديد + + + Unified search results list + قائمة نتائج البحث الموحد + Settings @@ -456,6 +521,11 @@ Current account avatar صورة الملف الشخصي الرمزية للحساب الحالي + + + New activities + أنشطة جديدة + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser فتح %1 في المُتصفِّح - - - Unified search results list - قائمة نتائج البحث الموحد - - - - New activities - أنشطة جديدة - OCC::AbstractNetworkJob @@ -2865,37 +2925,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - متقدمة - About حول - - - Ask for confirmation before synchronizing new folders larger than - أطلب الموافقة قبل المُضِي في مزامنة مجلدات جديدة حجمها أكبر من - Legal notice ملاحظة قانونية - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - ميغا بايت - - - - Use &Monochrome Icons - إستخدام &أيقونات_أحادية_اللون + + General Settings + الإعدادات العامة @@ -2903,19 +2947,29 @@ Alternatively, you can restore all deleted files by downloading them from the se &أطلقه عند بدء تشغيل النظام - - Show Server &Notifications - أعرض إشعارات الخادم + + Show Call Notifications + إظهار إشعارات المكالمات - - Notify when synchronised folders grow larger than specified limit - أشعرني عندما يتجاوز حجم المجلدات المُزَامَنَة الحد الأقصى المحدد + + For System Tray + لشريط النظام system tray + + + + Use &Monochrome Icons + إستخدام &أيقونات_أحادية_اللون - Show Call Notifications - إظهار إشعارات المكالمات + Show Chat Notifications + + + + + Show Server &Notifications + أعرض إشعارات الخادم @@ -2927,16 +2981,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &تلقائيّاً إبحث عن التحديثات - - - Automatically disable synchronisation of folders that overcome limit - قم بإيقاف المزامنة بصورة آلية إذا ما تجاوز حجم المجلدات المُزَامَنَة الحد الأقصى المحدد - &Channel &قناة + + + + stable + مُستقِرٌ + + + + + beta + بيتا + + + + &Restart && Update + &أعد_التشغيل_و_حدّث + + + + &Check for Update now + &إبحث عن التحديثات الآن + + + + Advanced + متقدمة + + + + 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 @@ -2968,11 +3065,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive إنشيء أرشيفاً بالتنقيحات Debug Archive - - - &Check for Update now - &إبحث عن التحديثات الآن - Info @@ -2994,9 +3086,9 @@ Alternatively, you can restore all deleted files by downloading them from the se قناة التحديث - - &Restart && Update - &أعد_التشغيل_و_حدّث + + Show sync folders in &Explorer's Navigation Pane + إظهار مجلدات المزامنة في جزء التنقل من &المتصفح @@ -3018,21 +3110,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice ملاحظة قانونية - - - General Settings - الإعدادات العامة - - - - For System Tray - لشريط النظام system tray - - - - Show sync folders in &Explorer's Navigation Pane - إظهار مجلدات المزامنة في جزء التنقل من &المتصفح - Use &monochrome icons @@ -3058,6 +3135,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. إشعارات الخادم ذات الأهمية + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3068,18 +3150,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. لا يمكنك تعطيل التشغيل التلقائي لأنه تم تمكين التشغيل التلقائي على مستوى النظام. - - - - stable - مُستقِرٌ - - - - - beta - بيتا - Change update channel? @@ -3104,6 +3174,14 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + - مُؤسَّسي: يحتوي على إصدارات مستقرة للعملاء. + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3115,15 +3193,22 @@ Downgrading versions is not possible immediately: changing from beta to stable m لا يمكن تخفيض مستوى الإصدارات على الفور: التغيير من الإصدار التجريبي إلى الإصدار المستقر يعني انتظار الإصدار المستقر الجديد. - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - مُؤسَّسي: يحتوي على إصدارات مستقرة للعملاء. - + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + تحدد القناة الترقيات التي سيتم عرضها للتثبيت: +- مستقر: يحتوي على إصدارات مجربة تعتبر موثوقة +- تجريبي: يحتوي على إصدارات ذات ميزات جديدة ربما لم يتم اختبارها بدقة +- يومي: يحتوي على إصدارات يتم إنشاؤها يوميًا للاختبار والتطوير فقط +%1 +لا يمكن خفض مستوى الإصدارات على الفور: فالتغيير من الإصدار التجريبي إلى الإصدار المستقر يعني انتظار الإصدار المستقر الجديد. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3138,22 +3223,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp تغيير قناة التحديث؟ - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - تحدد القناة الترقيات التي سيتم عرضها للتثبيت: -- مستقر: يحتوي على إصدارات مجربة تعتبر موثوقة -- تجريبي: يحتوي على إصدارات ذات ميزات جديدة ربما لم يتم اختبارها بدقة -- يومي: يحتوي على إصدارات يتم إنشاؤها يوميًا للاختبار والتطوير فقط -%1 -لا يمكن خفض مستوى الإصدارات على الفور: فالتغيير من الإصدار التجريبي إلى الإصدار المستقر يعني انتظار الإصدار المستقر الجديد. - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5066,6 +5136,11 @@ Server replied with error: %2 Resharing this folder is not allowed إعادة مشاركة هذا الملف غير مسموحة + + + Copy internal link + نسخ رابط داخلي + Copy secure file drop link @@ -5077,21 +5152,16 @@ Server replied with error: %2 Copy public link نسخ الرابط العمومي - - - Copy secure filedrop link - نسخ الرابط الآمن لإفلات الملف secure filedrop link - - - - Copy internal link - نسخ رابط داخلي - Encrypt تشفير + + + Copy secure filedrop link + نسخ الرابط الآمن لإفلات الملف secure filedrop link + Lock file @@ -6375,11 +6445,6 @@ Server replied with error: %2 Create a new share link أَنشِيءْ رابط مشاركة جديد - - - Copy share link location - إنسَخ موضع رابط المشاركة - Copied! @@ -6390,6 +6455,11 @@ Server replied with error: %2 Share options إعدادات المشاركة + + + Copy share link location + إنسَخ موضع رابط المشاركة + ShareDetailsPage @@ -6598,6 +6668,24 @@ Server replied with error: %2 قائمة مجموعة المستخدمين و المجلدات المحلية + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6606,6 +6694,14 @@ Server replied with error: %2 البحث في الملفات، و الرسائل، و الأحداث ... + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_bg.ts b/translations/client_bg.ts index 6d9dd42b38159..4d67e0d7d1b23 100644 --- a/translations/client_bg.ts +++ b/translations/client_bg.ts @@ -166,6 +166,66 @@ + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2869,37 +2929,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Допълнителни - About Относно - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice Правна информация - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Едноцветни икони + + General Settings + Общи настройки @@ -2907,19 +2951,29 @@ Alternatively, you can restore all deleted files by downloading them from the se Автоматично стартиране - - Show Server &Notifications - Показвай известия от сървъра + + Show Call Notifications + Показване на известия за обаждания + + + + For System Tray + За системния трей + + + + Use &Monochrome Icons + Едноцветни икони - Notify when synchronised folders grow larger than specified limit + Show Chat Notifications - - Show Call Notifications - Показване на известия за обаждания + + Show Server &Notifications + Показвай известия от сървъра @@ -2931,16 +2985,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates & Автоматична проверка за Актуализации - - - Automatically disable synchronisation of folders that overcome limit - - &Channel &Канал + + + + stable + стабилен + + + + + beta + бета + + + + &Restart && Update + & Рестартиране && Актуализиране + + + + &Check for Update now + &Проверете за Актуализация сега + + + + Advanced + Допълнителни + + + + Ask for confirmation before synchronizing new folders larger than + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit + + Ask for confirmation before synchronizing external storages @@ -2972,11 +3069,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Създаване на Архив за Отстраняване на грешки - - - &Check for Update now - &Проверете за Актуализация сега - Info @@ -2998,9 +3090,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - & Рестартиране && Актуализиране + + Show sync folders in &Explorer's Navigation Pane + Показване на папки за синхронизиране в екрана за навигация на &Explorer @@ -3022,21 +3114,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Общи настройки - - - - For System Tray - За системния трей - - - - Show sync folders in &Explorer's Navigation Pane - Показване на папки за синхронизиране в екрана за навигация на &Explorer - Use &monochrome icons @@ -3062,6 +3139,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Известия от сървъра, които изискват внимание. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3072,18 +3154,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Не можете да деактивирате автоматичното стартиране, защото е активирано автоматично стартиране в цялата система. - - - - stable - стабилен - - - - - beta - бета - Change update channel? @@ -3110,6 +3180,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3118,14 +3195,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3138,17 +3218,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5069,6 +5139,11 @@ Server replied with error: %2 Resharing this folder is not allowed Повторното споделяне на тази папка не е разрешено + + + Copy internal link + Копиране на вътрешна връзка + Copy secure file drop link @@ -5080,21 +5155,16 @@ Server replied with error: %2 Copy public link Копиране на публична връзка - - - Copy secure filedrop link - Копиране на връзка за защитено пускане на файлове - - - - Copy internal link - Копиране на вътрешна връзка - Encrypt Криптиране + + + Copy secure filedrop link + Копиране на връзка за защитено пускане на файлове + Lock file @@ -6378,11 +6448,6 @@ Server replied with error: %2 Create a new share link Създаване на нова връзка за споделяне - - - Copy share link location - Копиране на местоположението на връзка за споделяне - Copied! @@ -6393,6 +6458,11 @@ Server replied with error: %2 Share options Опции за споделяне + + + Copy share link location + Копиране на местоположението на връзка за споделяне + ShareDetailsPage @@ -6601,6 +6671,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6609,6 +6697,14 @@ Server replied with error: %2 Търсене на файлове, съобщения, събития... + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_br.ts b/translations/client_br.ts index 97ba4adb445e2..7c655257d3aa7 100644 --- a/translations/client_br.ts +++ b/translations/client_br.ts @@ -166,6 +166,66 @@ + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2856,58 +2916,52 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Araokadennet - About Diwar-benn - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice Meneg lezenn - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Skeudennigoù Implij &Monochrome + + General Settings + Arventennoù hollek &Launch on System Startup %Launch war arSistem Kregiñ - - - Show Server &Notifications - Diskouez &Notifications ar servijour - - Notify when synchronised folders grow larger than specified limit + Show Call Notifications + + + For System Tray + Evit an Tray sistem + + + + Use &Monochrome Icons + Skeudennigoù Implij &Monochrome + - Show Call Notifications + Show Chat Notifications + + + Show Server &Notifications + Diskouez &Notifications ar servijour + Updates @@ -2919,13 +2973,56 @@ Alternatively, you can restore all deleted files by downloading them from the se Gwiriañ en un doare &otomatek an Adnevesadennoù - - Automatically disable synchronisation of folders that overcome limit + + &Channel - - &Channel + + + stable + + + + + + beta + + + + + &Restart && Update + &Adloc'hañ && Adnevesadennoù + + + + &Check for Update now + &Gwiriañ evit Adnevesadennoù bremañ + + + + Advanced + Araokadennet + + + + Ask for confirmation before synchronizing new folders larger than + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit @@ -2959,11 +3056,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive - - - &Check for Update now - &Gwiriañ evit Adnevesadennoù bremañ - Info @@ -2985,9 +3077,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - &Adloc'hañ && Adnevesadennoù + + Show sync folders in &Explorer's Navigation Pane + Diskouez an teuliadoù kemprennet e &Explorer's Navigation Pane @@ -3009,21 +3101,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Arventennoù hollek - - - - For System Tray - Evit an Tray sistem - - - - Show sync folders in &Explorer's Navigation Pane - Diskouez an teuliadoù kemprennet e &Explorer's Navigation Pane - Use &monochrome icons @@ -3049,6 +3126,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Kemenadennoù servijour ho deus ezhomm ho hevez. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3059,18 +3141,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. - - - - stable - - - - - - beta - - Change update channel? @@ -3095,6 +3165,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3103,14 +3180,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3123,17 +3203,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5043,6 +5113,11 @@ Server replied with error: %2 Resharing this folder is not allowed + + + Copy internal link + Eilañ al liammm diabarzh + Copy secure file drop link @@ -5055,18 +5130,13 @@ Server replied with error: %2 Eilañ al liamm publik - - Copy secure filedrop link + + Encrypt - - Copy internal link - Eilañ al liammm diabarzh - - - - Encrypt + + Copy secure filedrop link @@ -6352,11 +6422,6 @@ Server replied with error: %2 Create a new share link - - - Copy share link location - - Copied! @@ -6367,6 +6432,11 @@ Server replied with error: %2 Share options + + + Copy share link location + + ShareDetailsPage @@ -6575,6 +6645,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6583,6 +6671,14 @@ Server replied with error: %2 + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_ca.ts b/translations/client_ca.ts index c2164e8863690..7fe7eefaccc58 100644 --- a/translations/client_ca.ts +++ b/translations/client_ca.ts @@ -166,6 +166,66 @@ Versió del servidor + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2859,58 +2919,52 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Avançat - About Quant a - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice Avís legal - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Utilitza les icones &monocromàtiques + + General Settings + Paràmetres generals &Launch on System Startup &Executa en iniciar el sistema - - - Show Server &Notifications - Mostra les &notificacions del servidor - - Notify when synchronised folders grow larger than specified limit + Show Call Notifications + + + For System Tray + Per la safata del sistema + + + + Use &Monochrome Icons + Utilitza les icones &monocromàtiques + - Show Call Notifications + Show Chat Notifications + + + Show Server &Notifications + Mostra les &notificacions del servidor + Updates @@ -2921,16 +2975,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates Comprova &automàticament les actualitzacions - - - Automatically disable synchronisation of folders that overcome limit - - &Channel &Canal + + + + stable + estable + + + + + beta + beta + + + + &Restart && Update + &Reinicia i actualitza + + + + &Check for Update now + &Comprova ara si hi ha actualitzacions + + + + Advanced + Avançat + + + + Ask for confirmation before synchronizing new folders larger than + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit + + Ask for confirmation before synchronizing external storages @@ -2962,11 +3059,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Crea un arxiu de depuració - - - &Check for Update now - &Comprova ara si hi ha actualitzacions - Info @@ -2988,9 +3080,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - &Reinicia i actualitza + + Show sync folders in &Explorer's Navigation Pane + Mostra les carpetes de sincronització a la subfinestra de navegació de l'&Explorer @@ -3012,21 +3104,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Paràmetres generals - - - - For System Tray - Per la safata del sistema - - - - Show sync folders in &Explorer's Navigation Pane - Mostra les carpetes de sincronització a la subfinestra de navegació de l'&Explorer - Use &monochrome icons @@ -3052,6 +3129,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Notificacions del servidor que requereixen atenció. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3062,18 +3144,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. No podeu inhabilitar l'inici automàtic perquè l'inici automàtic per a tot el sistema està habilitat. - - - - stable - estable - - - - - beta - beta - Change update channel? @@ -3098,6 +3168,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3106,14 +3183,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3126,17 +3206,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5044,6 +5114,11 @@ Server replied with error: %2 Resharing this folder is not allowed No es permet tornar a compartir la carpeta + + + Copy internal link + Copia l'enllaç intern + Copy secure file drop link @@ -5056,18 +5131,13 @@ Server replied with error: %2 Copia l'enllaç públic - - Copy secure filedrop link + + Encrypt - - Copy internal link - Copia l'enllaç intern - - - - Encrypt + + Copy secure filedrop link @@ -6353,11 +6423,6 @@ Server replied with error: %2 Create a new share link - - - Copy share link location - - Copied! @@ -6368,6 +6433,11 @@ Server replied with error: %2 Share options + + + Copy share link location + + ShareDetailsPage @@ -6576,6 +6646,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6584,6 +6672,14 @@ Server replied with error: %2 + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_cs.ts b/translations/client_cs.ts index 5833b828d2a5c..e11345bf3fbf0 100644 --- a/translations/client_cs.ts +++ b/translations/client_cs.ts @@ -166,6 +166,66 @@ Verze na serveru + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Přidat nový účet + + + Unified search results list + Seznam výsledků sjednoceného vyhledávání + Settings @@ -456,6 +521,11 @@ Current account avatar Stávající zástupný obrázek uživatele + + + New activities + Nové aktivity + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser Otevřít %1 v prohlížeči - - - Unified search results list - Seznam výsledků sjednoceného vyhledávání - - - - New activities - Nové aktivity - OCC::AbstractNetworkJob @@ -2877,37 +2937,21 @@ Případně je možné veškeré smazané soubory obnovit jejich stažením si z OCC::GeneralSettings - - - Advanced - Pokročilé - About O aplikaci - - - Ask for confirmation before synchronizing new folders larger than - Zeptat se před synchronizací nových složek větších než - Legal notice Právní upozornění - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Používat čer&nobílé ikony + + General Settings + Obecná nastavení @@ -2915,19 +2959,29 @@ Případně je možné veškeré smazané soubory obnovit jejich stažením si z &Spustit při startu systému - - Show Server &Notifications - Zobrazit &upozornění ze serveru + + Show Call Notifications + Zobrazovat upozornění na hovory - - Notify when synchronised folders grow larger than specified limit - Upozornit pokud se synchronizované složky stanou většími než nastavený limit + + For System Tray + Pro oznamovací oblast systémového panelu + + + + Use &Monochrome Icons + Používat čer&nobílé ikony - Show Call Notifications - Zobrazovat upozornění na hovory + Show Chat Notifications + + + + + Show Server &Notifications + Zobrazit &upozornění ze serveru @@ -2939,16 +2993,59 @@ Případně je možné veškeré smazané soubory obnovit jejich stažením si z &Automatically check for Updates &Automaticky zjišťovat dostupnost aktualizací - - - Automatically disable synchronisation of folders that overcome limit - Automaticky vypnout synchronizaci složek, které přesáhnou limit - &Channel &Kanál + + + + stable + stabilní + + + + + beta + vývojové + + + + &Restart && Update + &Restartovat a aktualizovat + + + + &Check for Update now + &Zjistit dostupnost aktualizací nyní + + + + Advanced + Pokročilé + + + + Ask for confirmation before synchronizing new folders larger than + Zeptat se před synchronizací nových složek větších než + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + Upozornit pokud se synchronizované složky stanou většími než nastavený limit + + + + Automatically disable synchronisation of folders that overcome limit + Automaticky vypnout synchronizaci složek, které přesáhnou limit + Ask for confirmation before synchronizing external storages @@ -2980,11 +3077,6 @@ Případně je možné veškeré smazané soubory obnovit jejich stažením si z Create Debug Archive Vytvořit archiv s informacemi pro ladění - - - &Check for Update now - &Zjistit dostupnost aktualizací nyní - Info @@ -3006,9 +3098,9 @@ Případně je možné veškeré smazané soubory obnovit jejich stažením si z Kanál aktualizací - - &Restart && Update - &Restartovat a aktualizovat + + Show sync folders in &Explorer's Navigation Pane + Zobrazit synchronizované složky v podokně navigac&e Průzkumníka @@ -3030,21 +3122,6 @@ Případně je možné veškeré smazané soubory obnovit jejich stažením si z Legal Notice Právní upozornění - - - General Settings - Obecná nastavení - - - - For System Tray - Pro oznamovací oblast systémového panelu - - - - Show sync folders in &Explorer's Navigation Pane - Zobrazit synchronizované složky v podokně navigac&e Průzkumníka - Use &monochrome icons @@ -3070,6 +3147,11 @@ Případně je možné veškeré smazané soubory obnovit jejich stažením si z Server notifications that require attention. Upozornění ze serveru, která vyžadují pozornost. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3080,18 +3162,6 @@ Případně je možné veškeré smazané soubory obnovit jejich stažením si z You cannot disable autostart because system-wide autostart is enabled. Automatické spouštění nemůžete vypnout, protože je celosystémově zapnuté pro všechny uživatele. - - - - stable - stabilní - - - - - beta - vývojové - Change update channel? @@ -3118,6 +3188,14 @@ Poznamenejme, že je možné přejít na novější verzi, ale není možné se + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + - podnikové: obsahuje stabilní verze pro zákazníky. + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3129,15 +3207,22 @@ Downgrading versions is not possible immediately: changing from beta to stable m Přechod na konzervativnější verze není možný: změna z beta na stable znamená vyčkat na novou stabilní verzi. - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - podnikové: obsahuje stabilní verze pro zákazníky. - + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + Kanál určuje které aktualizace budou nabízeny k instalaci: +- stabilní: obsahuje vyzkoušené verze, považované za spolehlivé +- beta: obsahuje verze s novými funkcemi, u kterých se může stát, že ještě nebudou důkladně vyzkoušené +- denní: obsahuje verze vytvářené každý den, určené pouze pro zkoušení a vývoj +%s1 +Okamžitý přechod na konzervativnější verze není možný: změna z beta na stable znamená vyčkat na novou stabilní verzi. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3152,22 +3237,7 @@ Přechod na konzervativnější verze není možný: změna ze stable na enterpr Změnit kanál aktualizací? - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Kanál určuje které aktualizace budou nabízeny k instalaci: -- stabilní: obsahuje vyzkoušené verze, považované za spolehlivé -- beta: obsahuje verze s novými funkcemi, u kterých se může stát, že ještě nebudou důkladně vyzkoušené -- denní: obsahuje verze vytvářené každý den, určené pouze pro zkoušení a vývoj -%s1 -Okamžitý přechod na konzervativnější verze není možný: změna z beta na stable znamená vyčkat na novou stabilní verzi. - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5090,6 +5160,11 @@ Server odpověděl chybou: %2 Resharing this folder is not allowed Sdílení této složky dál dalším není umožněno + + + Copy internal link + Zkopírovat interní odkaz + Copy secure file drop link @@ -5101,21 +5176,16 @@ Server odpověděl chybou: %2 Copy public link Zkopírovat veřejný odkaz - - - Copy secure filedrop link - Zkopírovat zabezpečený odkaz filedrop - - - - Copy internal link - Zkopírovat interní odkaz - Encrypt Zašifrovat + + + Copy secure filedrop link + Zkopírovat zabezpečený odkaz filedrop + Lock file @@ -6399,11 +6469,6 @@ Server odpověděl chybou: %2 Create a new share link Vytvořit nový odkaz pro sdílení - - - Copy share link location - Zkopírovat umístění odkazu pro sdílení - Copied! @@ -6414,6 +6479,11 @@ Server odpověděl chybou: %2 Share options Předvolby pro sdílení + + + Copy share link location + Zkopírovat umístění odkazu pro sdílení + ShareDetailsPage @@ -6622,6 +6692,24 @@ Server odpověděl chybou: %2 Nabídka skupin uživatelů a místních složek + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6630,6 +6718,14 @@ Server odpověděl chybou: %2 Hledat soubory, zprávy, události… + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_da.ts b/translations/client_da.ts index 5335c85b7397f..c1daef6672469 100644 --- a/translations/client_da.ts +++ b/translations/client_da.ts @@ -166,6 +166,66 @@ Server version + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Tilføj ny konto + + + Unified search results list + Samlet søgeresultatliste + Settings @@ -456,6 +521,11 @@ Current account avatar Aktuel kontoavatar + + + New activities + Nye aktiviteter + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser Åben %1 i browser - - - Unified search results list - Samlet søgeresultatliste - - - - New activities - Nye aktiviteter - OCC::AbstractNetworkJob @@ -2866,37 +2926,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Avanceret - About Om - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice Juridisk notits - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Benyt &monokrome ikoner + + General Settings + Generelle Indstillinger @@ -2904,19 +2948,29 @@ Alternatively, you can restore all deleted files by downloading them from the se &Kør ved opstart af systemet - - Show Server &Notifications - Vis server&notifikationer + + Show Call Notifications + Vis opkaldsnotifikationer + + + + For System Tray + Som Systembakke + + + + Use &Monochrome Icons + Benyt &monokrome ikoner - Notify when synchronised folders grow larger than specified limit + Show Chat Notifications - - Show Call Notifications - Vis opkaldsnotifikationer + + Show Server &Notifications + Vis server&notifikationer @@ -2928,16 +2982,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates Søg &automatisk efter opdateringer - - - Automatically disable synchronisation of folders that overcome limit - - &Channel &Kanal + + + + stable + + + + + + beta + + + + + &Restart && Update + &Genstart && Opdater + + + + &Check for Update now + &Søg efter Opdateringer nu + + + + Advanced + Avanceret + + + + Ask for confirmation before synchronizing new folders larger than + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit + + Ask for confirmation before synchronizing external storages @@ -2969,11 +3066,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive - - - &Check for Update now - &Søg efter Opdateringer nu - Info @@ -2995,9 +3087,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - &Genstart && Opdater + + Show sync folders in &Explorer's Navigation Pane + Vis synk mapper i &Stifinder's Navigations Panel @@ -3019,21 +3111,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Generelle Indstillinger - - - - For System Tray - Som Systembakke - - - - Show sync folders in &Explorer's Navigation Pane - Vis synk mapper i &Stifinder's Navigations Panel - Use &monochrome icons @@ -3059,6 +3136,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Server notifikationer der kræver opmærksomhed. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3069,18 +3151,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. - - - - stable - - - - - - beta - - Change update channel? @@ -3105,6 +3175,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3113,14 +3190,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3133,17 +3213,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5053,6 +5123,11 @@ Server replied with error: %2 Resharing this folder is not allowed + + + Copy internal link + Kopier internt link + Copy secure file drop link @@ -5065,18 +5140,13 @@ Server replied with error: %2 Kopier offentligt link - - Copy secure filedrop link + + Encrypt - - Copy internal link - Kopier internt link - - - - Encrypt + + Copy secure filedrop link @@ -6362,11 +6432,6 @@ Server replied with error: %2 Create a new share link - - - Copy share link location - - Copied! @@ -6377,6 +6442,11 @@ Server replied with error: %2 Share options + + + Copy share link location + + ShareDetailsPage @@ -6585,6 +6655,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6593,6 +6681,14 @@ Server replied with error: %2 + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_de.ts b/translations/client_de.ts index 05f84036a7485..20c3dfccbdead 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -166,6 +166,66 @@ Serverversion + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Neues Konto hinzufügen + + + Unified search results list + Einheitliche Suchergebnisliste + Settings @@ -456,6 +521,11 @@ Current account avatar Avatar des aktuellen Kontos + + + New activities + Neue Aktivitäten + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser %1 im Browser öffnen - - - Unified search results list - Einheitliche Suchergebnisliste - - - - New activities - Neue Aktivitäten - OCC::AbstractNetworkJob @@ -2878,37 +2938,21 @@ Alternativ können Sie auch alle gelöschten Dateien wiederherstellen, indem Sie OCC::GeneralSettings - - - Advanced - Erweitert - About Ü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 - Legal notice Impressum - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - &Monochrome Symbole verwenden + + General Settings + Allgemeine Einstellungen @@ -2916,19 +2960,29 @@ Alternativ können Sie auch alle gelöschten Dateien wiederherstellen, indem Sie Beim &Systemstart starten - - Show Server &Notifications - Server-&Benachrichtigungen anzeigen + + Show Call Notifications + Anrufbenachrichtigungen anzeigen - - Notify when synchronised folders grow larger than specified limit - Benachrichtigen, wenn synchronisierte Ordner größer werden als die angegebene Grenze + + For System Tray + Für das Systembenachrichtungsfeld + + + + Use &Monochrome Icons + &Monochrome Symbole verwenden - Show Call Notifications - Anrufbenachrichtigungen anzeigen + Show Chat Notifications + + + + + Show Server &Notifications + Server-&Benachrichtigungen anzeigen @@ -2940,16 +2994,59 @@ Alternativ können Sie auch alle gelöschten Dateien wiederherstellen, indem Sie &Automatically check for Updates &Automatisch auf Aktualisierungen prüfen - - - Automatically disable synchronisation of folders that overcome limit - Automatisch die Synchronisierung von Ordnern beenden, die das Limit überschreiten - &Channel &Kanal + + + + stable + Stabil + + + + + beta + Beta + + + + &Restart && Update + &Neustarten && aktualisieren + + + + &Check for Update now + &Jetzt auf Aktualisierungen prüfen + + + + Advanced + Erweitert + + + + Ask for confirmation before synchronizing new folders larger than + Um eine Bestätigung bitten, bevor Sie neue Ordner synchronisieren, die größer sind als + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + Benachrichtigen, wenn synchronisierte Ordner größer werden als die angegebene Grenze + + + + Automatically disable synchronisation of folders that overcome limit + Automatisch die Synchronisierung von Ordnern beenden, die das Limit überschreiten + Ask for confirmation before synchronizing external storages @@ -2981,11 +3078,6 @@ Alternativ können Sie auch alle gelöschten Dateien wiederherstellen, indem Sie Create Debug Archive Debug-Archiv erstellen - - - &Check for Update now - &Jetzt auf Aktualisierungen prüfen - Info @@ -3007,9 +3099,9 @@ Alternativ können Sie auch alle gelöschten Dateien wiederherstellen, indem Sie Update-Kanal - - &Restart && Update - &Neustarten && aktualisieren + + Show sync folders in &Explorer's Navigation Pane + Synchronisierungsordner im Navigationsbereich des &Explorers anzeigen @@ -3031,21 +3123,6 @@ Alternativ können Sie auch alle gelöschten Dateien wiederherstellen, indem Sie Legal Notice Impressum - - - General Settings - Allgemeine Einstellungen - - - - For System Tray - Für das Systembenachrichtungsfeld - - - - Show sync folders in &Explorer's Navigation Pane - Synchronisierungsordner im Navigationsbereich des &Explorers anzeigen - Use &monochrome icons @@ -3071,6 +3148,11 @@ Alternativ können Sie auch alle gelöschten Dateien wiederherstellen, indem Sie Server notifications that require attention. Server-Benachrichtigungen, die Aufmerksamkeit erfordern. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3081,18 +3163,6 @@ Alternativ können Sie auch alle gelöschten Dateien wiederherstellen, indem Sie You cannot disable autostart because system-wide autostart is enabled. Sie können den Autostart nicht deaktivieren, da der systemweite Autostart aktiviert ist. - - - - stable - Stabil - - - - - beta - Beta - Change update channel? @@ -3119,6 +3189,13 @@ Beachten Sie bitte, dass hierdurch nur ausgewählt wird, aus welchem Pool Upgrad + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + - Unternehmensversion: Enthält stabile Versionen für Kunden. + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3130,14 +3207,22 @@ Downgrading versions is not possible immediately: changing from beta to stable m Ein Downgrade von Versionen ist nicht sofort möglich: Der Wechsel von Beta auf Stabil bedeutet, dass man auf die neue stabile Version warten muss. - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - Unternehmensversion: Enthält stabile Versionen für Kunden. + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + Der Kanal bestimmt, welche Upgrades zur Installation angeboten werden: +- Stabil: enthält getestete Versionen, die als zuverlässig gelten +- Beta: enthält Versionen mit neuen Funktionen, die möglicherweise nicht gründlich getestet wurden +- Täglich: enthält täglich erstellte Versionen, die nur zu Test- und Entwicklungszwecken erstellt werden +%1 +Ein Downgrade von Versionen ist nicht sofort möglich: Der Wechsel von Beta auf stabil bedeutet, dass auf die neue stabile Version gewartet werden muss. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3152,22 +3237,7 @@ Ein Downgrade von Versionen ist nicht sofort möglich: Der Wechsel von Beta auf Update-Kanal ändern? - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Der Kanal bestimmt, welche Upgrades zur Installation angeboten werden: -- Stabil: enthält getestete Versionen, die als zuverlässig gelten -- Beta: enthält Versionen mit neuen Funktionen, die möglicherweise nicht gründlich getestet wurden -- Täglich: enthält täglich erstellte Versionen, die nur zu Test- und Entwicklungszwecken erstellt werden -%1 -Ein Downgrade von Versionen ist nicht sofort möglich: Der Wechsel von Beta auf stabil bedeutet, dass auf die neue stabile Version gewartet werden muss. - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5089,6 +5159,11 @@ Server antwortete mit Fehler: %2 Resharing this folder is not allowed Weiterteilen dieses Ordners ist nicht erlaubt + + + Copy internal link + Internen Link kopieren + Copy secure file drop link @@ -5100,21 +5175,16 @@ Server antwortete mit Fehler: %2 Copy public link Öffentlichen Link kopieren - - - Copy secure filedrop link - Link zur sicheren Dateiablage kopieren - - - - Copy internal link - Internen Link kopieren - Encrypt Verschlüsseln + + + Copy secure filedrop link + Link zur sicheren Dateiablage kopieren + Lock file @@ -6398,11 +6468,6 @@ Server antwortete mit Fehler: %2 Create a new share link Neuen Freigabe-Link erstellen - - - Copy share link location - Standort des Freigabelinks kopieren - Copied! @@ -6413,6 +6478,11 @@ Server antwortete mit Fehler: %2 Share options Freigabeoptionen + + + Copy share link location + Standort des Freigabelinks kopieren + ShareDetailsPage @@ -6621,6 +6691,24 @@ Server antwortete mit Fehler: %2 Menü für Benutzergruppen und lokale Ordner + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6629,6 +6717,14 @@ Server antwortete mit Fehler: %2 Suche Dateien, Nachrichten und Termine … + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_el.ts b/translations/client_el.ts index 0c1af3f3b67e5..4654a18959ff5 100644 --- a/translations/client_el.ts +++ b/translations/client_el.ts @@ -166,6 +166,66 @@ + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2862,58 +2922,52 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Για προχωρημένους - About Σχετικά - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice Νομική ειδοποίηση - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - ΜΒ - - - - Use &Monochrome Icons - Χρήση &Μονόχρωμων εικονιδίων + + General Settings + Γενικές Ρυθμίσεις &Launch on System Startup &Έναρξη κατά την Εκκίνηση Συστήματος - - - Show Server &Notifications - Εμφάνιση των ειδοποιήσεων διακομιστή - - Notify when synchronised folders grow larger than specified limit + Show Call Notifications + + + For System Tray + Για το + + + + Use &Monochrome Icons + Χρήση &Μονόχρωμων εικονιδίων + - Show Call Notifications + Show Chat Notifications + + + Show Server &Notifications + Εμφάνιση των ειδοποιήσεων διακομιστή + Updates @@ -2924,16 +2978,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Αυτόματος έλεγχος για Ενημερώσεις - - - Automatically disable synchronisation of folders that overcome limit - - &Channel &Κανάλι + + + + stable + σταθερός + + + + + beta + έκδοση beta + + + + &Restart && Update + &Επανεκκίνηση && Ενημέρωση + + + + &Check for Update now + &Ελεγχος για Ενημερώσεις τώρα + + + + Advanced + Για προχωρημένους + + + + 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 @@ -2965,11 +3062,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Δημιουργία αρχείου εντοπισμού σφαλμάτων. - - - &Check for Update now - &Ελεγχος για Ενημερώσεις τώρα - Info @@ -2991,9 +3083,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - &Επανεκκίνηση && Ενημέρωση + + Show sync folders in &Explorer's Navigation Pane + Εμφάνιση φακέλων συγχρονισμού στο &Παράθυρο Περιήγησης του Explorer @@ -3015,21 +3107,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Γενικές Ρυθμίσεις - - - - For System Tray - Για το - - - - Show sync folders in &Explorer's Navigation Pane - Εμφάνιση φακέλων συγχρονισμού στο &Παράθυρο Περιήγησης του Explorer - Use &monochrome icons @@ -3055,6 +3132,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Ειδοποιήσεις από τον διακομιστή που απαιτούν την προσοχή σας. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3065,18 +3147,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Δεν μπορείτε να απενεργοποιήσετε την αυτόματη εκκίνηση επειδή είναι ενεργοποιημένη η αυτόματη εκκίνηση σε όλο το σύστημα. - - - - stable - σταθερός - - - - - beta - έκδοση beta - Change update channel? @@ -3102,6 +3172,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3110,14 +3187,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3130,17 +3210,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5051,6 +5121,11 @@ Server replied with error: %2 Resharing this folder is not allowed Δεν επιτρέπεται η αναδημοσίευση αυτού του φακέλου. + + + Copy internal link + Αντιγραφή εσωτερικού συνδέσμου + Copy secure file drop link @@ -5063,18 +5138,13 @@ Server replied with error: %2 Αντιγραφή δημόσιου συνδέσμου - - Copy secure filedrop link + + Encrypt - - Copy internal link - Αντιγραφή εσωτερικού συνδέσμου - - - - Encrypt + + Copy secure filedrop link @@ -6360,11 +6430,6 @@ Server replied with error: %2 Create a new share link - - - Copy share link location - - Copied! @@ -6375,6 +6440,11 @@ Server replied with error: %2 Share options + + + Copy share link location + + ShareDetailsPage @@ -6583,6 +6653,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6591,6 +6679,14 @@ Server replied with error: %2 + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_en_GB.ts b/translations/client_en_GB.ts index 6a5cc560641e0..41eacda09fa6f 100644 --- a/translations/client_en_GB.ts +++ b/translations/client_en_GB.ts @@ -166,6 +166,66 @@ Server version + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Add new account + + + Unified search results list + Unified search results list + Settings @@ -456,6 +521,11 @@ Current account avatar Current account avatar + + + New activities + New activities + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser Open %1 in browser - - - Unified search results list - Unified search results list - - - - New activities - New activities - OCC::AbstractNetworkJob @@ -2879,37 +2939,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Advanced - About About - - - Ask for confirmation before synchronizing new folders larger than - Ask for confirmation before synchronizing new folders larger than - Legal notice Legal notice - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Use &Monochrome Icons + + General Settings + General Settings @@ -2917,19 +2961,29 @@ Alternatively, you can restore all deleted files by downloading them from the se &Launch on System Startup - - Show Server &Notifications - Show Server &Notifications + + Show Call Notifications + Show Call Notifications - - Notify when synchronised folders grow larger than specified limit - Notify when synchronised folders grow larger than specified limit + + For System Tray + For System Tray + + + + Use &Monochrome Icons + Use &Monochrome Icons - Show Call Notifications - Show Call Notifications + Show Chat Notifications + + + + + Show Server &Notifications + Show Server &Notifications @@ -2941,16 +2995,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Automatically check for Updates - - - Automatically disable synchronisation of folders that overcome limit - Automatically disable synchronisation of folders that overcome limit - &Channel &Channel + + + + stable + stable + + + + + beta + beta + + + + &Restart && Update + &Restart && Update + + + + &Check for Update now + &Check for Update now + + + + Advanced + Advanced + + + + 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" + MB + + + + Notify when synchronised folders grow larger than specified 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 + Ask for confirmation before synchronizing external storages @@ -2982,11 +3079,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Create Debug Archive - - - &Check for Update now - &Check for Update now - Info @@ -3008,9 +3100,9 @@ Alternatively, you can restore all deleted files by downloading them from the se Update channel - - &Restart && Update - &Restart && Update + + Show sync folders in &Explorer's Navigation Pane + Show sync folders in &Explorer's Navigation Pane @@ -3032,21 +3124,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice Legal Notice - - - General Settings - General Settings - - - - For System Tray - For System Tray - - - - Show sync folders in &Explorer's Navigation Pane - Show sync folders in &Explorer's Navigation Pane - Use &monochrome icons @@ -3072,6 +3149,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Server notifications that require attention. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3082,18 +3164,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. You cannot disable autostart because system-wide autostart is enabled. - - - - stable - stable - - - - - beta - beta - Change update channel? @@ -3120,6 +3190,14 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + - enterprise: contains stable versions for customers. + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3131,15 +3209,22 @@ Downgrading versions is not possible immediately: changing from beta to stable m Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - enterprise: contains stable versions for customers. - + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3154,22 +3239,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp Changing update channel? - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5092,6 +5162,11 @@ Server replied with error: %2 Resharing this folder is not allowed Resharing this folder is not allowed + + + Copy internal link + Copy internal link + Copy secure file drop link @@ -5103,21 +5178,16 @@ Server replied with error: %2 Copy public link Copy public link - - - Copy secure filedrop link - Copy secure filedrop link - - - - Copy internal link - Copy internal link - Encrypt Encrypt + + + Copy secure filedrop link + Copy secure filedrop link + Lock file @@ -6401,11 +6471,6 @@ Server replied with error: %2 Create a new share link Create a new share link - - - Copy share link location - Copy share link location - Copied! @@ -6416,6 +6481,11 @@ Server replied with error: %2 Share options Share options + + + Copy share link location + Copy share link location + ShareDetailsPage @@ -6624,6 +6694,24 @@ Server replied with error: %2 User group and local folders menu + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6632,6 +6720,14 @@ Server replied with error: %2 Search files, messages, events … + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_eo.ts b/translations/client_eo.ts index 067cf79114a99..64318abf6b468 100644 --- a/translations/client_eo.ts +++ b/translations/client_eo.ts @@ -166,6 +166,66 @@ + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2855,58 +2915,52 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Detalaj agordoj - About Pri - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice Atentigo pri kopirajto - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - &Uzi unukolorajn piktogramojn + + General Settings + Ĉefaj agordoj &Launch on System Startup &Lanĉi, kiam la seanco ekas - - - Show Server &Notifications - Montri servilajn &sciigojn - - Notify when synchronised folders grow larger than specified limit + Show Call Notifications + + + For System Tray + Por la taskopleto + + + + Use &Monochrome Icons + &Uzi unukolorajn piktogramojn + - Show Call Notifications + Show Chat Notifications + + + Show Server &Notifications + Montri servilajn &sciigojn + Updates @@ -2917,16 +2971,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates - - - Automatically disable synchronisation of folders that overcome limit - - &Channel &Kanalo + + + + stable + stabila + + + + + beta + beta + + + + &Restart && Update + &Restarti kaj ĝisdatigi + + + + &Check for Update now + + + + + Advanced + Detalaj agordoj + + + + Ask for confirmation before synchronizing new folders larger than + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit + + Ask for confirmation before synchronizing external storages @@ -2958,11 +3055,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive - - - &Check for Update now - - Info @@ -2984,9 +3076,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - &Restarti kaj ĝisdatigi + + Show sync folders in &Explorer's Navigation Pane + Montri sinkronigitajn &dosierujojn en la naviga panelo de la dosiera foliumilo @@ -3008,21 +3100,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Ĉefaj agordoj - - - - For System Tray - Por la taskopleto - - - - Show sync folders in &Explorer's Navigation Pane - Montri sinkronigitajn &dosierujojn en la naviga panelo de la dosiera foliumilo - Use &monochrome icons @@ -3048,6 +3125,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Servilaj sciigoj, kiu bezonas atenton. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3058,18 +3140,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. - - - - stable - stabila - - - - - beta - beta - Change update channel? @@ -3094,6 +3164,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3102,14 +3179,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3122,17 +3202,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5042,6 +5112,11 @@ Server replied with error: %2 Resharing this folder is not allowed + + + Copy internal link + Kopii internan ligilon + Copy secure file drop link @@ -5054,18 +5129,13 @@ Server replied with error: %2 Kopii publikan ligilon - - Copy secure filedrop link + + Encrypt - - Copy internal link - Kopii internan ligilon - - - - Encrypt + + Copy secure filedrop link @@ -6350,11 +6420,6 @@ Server replied with error: %2 Create a new share link - - - Copy share link location - - Copied! @@ -6365,6 +6430,11 @@ Server replied with error: %2 Share options + + + Copy share link location + + ShareDetailsPage @@ -6573,6 +6643,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6581,6 +6669,14 @@ Server replied with error: %2 + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_es.ts b/translations/client_es.ts index b7fe3faff1937..908465f3bf54b 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -166,6 +166,66 @@ Versión del servidor + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Añadir nueva cuenta + + + Unified search results list + Lista de resultados de la búsqueda unificada + Settings @@ -456,6 +521,11 @@ Current account avatar Avatar de la cuenta actual + + + New activities + Nuevas actividades + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser Abrir %1 en el navegador - - - Unified search results list - Lista de resultados de la búsqueda unificada - - - - New activities - Nuevas actividades - OCC::AbstractNetworkJob @@ -2881,37 +2941,21 @@ Alternativamente, puedes restaurar todos los archivos borrados descargándolos d 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 + + General Settings + Ajustes generales @@ -2919,19 +2963,29 @@ Alternativamente, puedes restaurar todos los archivos borrados descargándolos d &Ejecutar al iniciar el sistema - - Show Server &Notifications - Mostrar servidor y notificaciones + + Show Call Notifications + Mostrar notificaciones de llamadas - - 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 + + For System Tray + A la bandeja del sistema + + + + Use &Monochrome Icons + Usar iconos &monocromáticos - Show Call Notifications - Mostrar notificaciones de llamadas + Show Chat Notifications + + + + + Show Server &Notifications + Mostrar servidor y notificaciones @@ -2943,16 +2997,59 @@ Alternativamente, puedes restaurar todos los archivos borrados descargándolos d &Automatically check for Updates &Comprobar actualizaciones automáticamente - - - Automatically disable synchronisation of folders that overcome limit - Deshabilitar sincronización de manera automática para las carpetas que sobrepasen el límite - &Channel &Channel + + + + stable + stable + + + + + beta + beta + + + + &Restart && Update + &Reiniciar && Actualizar + + + + &Check for Update now + &Comprobar ahora las actualizaciones + + + + Advanced + Avanzado + + + + Ask for confirmation before synchronizing new folders larger than + Pedir confirmación antes de sincronizar carpetas nuevas mayores a + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + 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 + + + + Automatically disable synchronisation of folders that overcome limit + Deshabilitar sincronización de manera automática para las carpetas que sobrepasen el límite + Ask for confirmation before synchronizing external storages @@ -2984,11 +3081,6 @@ Alternativamente, puedes restaurar todos los archivos borrados descargándolos d Create Debug Archive Crear archivo de depuración - - - &Check for Update now - &Comprobar ahora las actualizaciones - Info @@ -3010,9 +3102,9 @@ Alternativamente, puedes restaurar todos los archivos borrados descargándolos d Canal de actualización - - &Restart && Update - &Reiniciar && Actualizar + + Show sync folders in &Explorer's Navigation Pane + Mostrar carpetas sincronizadas en el panel de navegación del explorador @@ -3034,21 +3126,6 @@ Alternativamente, puedes restaurar todos los archivos borrados descargándolos d Legal Notice Aviso Legal - - - General Settings - Ajustes generales - - - - For System Tray - A la bandeja del sistema - - - - Show sync folders in &Explorer's Navigation Pane - Mostrar carpetas sincronizadas en el panel de navegación del explorador - Use &monochrome icons @@ -3074,6 +3151,11 @@ Alternativamente, puedes restaurar todos los archivos borrados descargándolos d Server notifications that require attention. Notificaciones del servidor que requieren atención. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3084,18 +3166,6 @@ Alternativamente, puedes restaurar todos los archivos borrados descargándolos d 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. - - - - stable - stable - - - - - beta - beta - Change update channel? @@ -3122,6 +3192,14 @@ Tenga en cuenta que esto sólo selecciona de qué grupo se tomarán las actualiz + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + - empresarial: contiene versiones estables para clientes. + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3133,15 +3211,22 @@ Downgrading versions is not possible immediately: changing from beta to stable m Bajar de versión no es inmediatamente posible: cambiar de beta a estable significa esperar a la siguiente ersión estable. - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - empresarial: contiene versiones estables para clientes. - + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + El canal determina qué actualizaciones se ofrecerán para instalar: +- estable: contiene versiones probadas consideradas fiables. +- beta: contiene versiones con nuevas características que pueden no haberse probado exhaustivamente. +- diaria: contiene versiones creadas diariamente solo para pruebas y desarollo. +%1 +Bajar de versión no es inmediatamente posible: cambiar de beta a estable significa esperar a la nueva versión estable. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3156,22 +3241,7 @@ Bajar de versión no es inmediatamente posible: cambiar de estable a empresarial ¿Cambiar canal de actualización? - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - El canal determina qué actualizaciones se ofrecerán para instalar: -- estable: contiene versiones probadas consideradas fiables. -- beta: contiene versiones con nuevas características que pueden no haberse probado exhaustivamente. -- diaria: contiene versiones creadas diariamente solo para pruebas y desarollo. -%1 -Bajar de versión no es inmediatamente posible: cambiar de beta a estable significa esperar a la nueva versión estable. - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5094,6 +5164,11 @@ El servidor respondió con el error: %2 Resharing this folder is not allowed No está permitido compartir de nuevo esta carpeta + + + Copy internal link + Copiar enlace interno + Copy secure file drop link @@ -5105,21 +5180,16 @@ El servidor respondió con el error: %2 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 + + + Copy secure filedrop link + Copiar enlace para entrega de archivos segura + Lock file @@ -6403,11 +6473,6 @@ El servidor respondió con el error: %2 Create a new share link Crear un nuevo enlace de recurso compartido - - - Copy share link location - Copiar dirección del recurso compartido - Copied! @@ -6418,6 +6483,11 @@ El servidor respondió con el error: %2 Share options Opciones del recurso compartido + + + Copy share link location + Copiar dirección del recurso compartido + ShareDetailsPage @@ -6626,6 +6696,24 @@ El servidor respondió con el error: %2 Menú de usuario de carpetas de grupo o locales + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6634,6 +6722,14 @@ El servidor respondió con el error: %2 Buscando archivos, mensajes, eventos … + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_es_CL.ts b/translations/client_es_CL.ts index 8de75b841c978..9796067b73b31 100644 --- a/translations/client_es_CL.ts +++ b/translations/client_es_CL.ts @@ -166,6 +166,66 @@ + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2851,37 +2911,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Avanzado - About Acerca de - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Usar Íconos &Monocromáticos + + General Settings + Configuraciones generales @@ -2889,18 +2933,28 @@ Alternatively, you can restore all deleted files by downloading them from the se &Lanzar al Iniciar el Sistema - - Show Server &Notifications + + Show Call Notifications + + + For System Tray + Para la Bandeja del Sistema + + + + Use &Monochrome Icons + Usar Íconos &Monocromáticos + - Notify when synchronised folders grow larger than specified limit + Show Chat Notifications - - Show Call Notifications + + Show Server &Notifications @@ -2914,13 +2968,56 @@ Alternatively, you can restore all deleted files by downloading them from the se - - Automatically disable synchronisation of folders that overcome limit + + &Channel - - &Channel + + + stable + + + + + + beta + + + + + &Restart && Update + &Reinicia && Actualiza + + + + &Check for Update now + + + + + Advanced + Avanzado + + + + Ask for confirmation before synchronizing new folders larger than + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit @@ -2954,11 +3051,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive - - - &Check for Update now - - Info @@ -2980,9 +3072,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - &Reinicia && Actualiza + + Show sync folders in &Explorer's Navigation Pane + @@ -3004,21 +3096,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Configuraciones generales - - - - For System Tray - Para la Bandeja del Sistema - - - - Show sync folders in &Explorer's Navigation Pane - - Use &monochrome icons @@ -3044,6 +3121,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3054,18 +3136,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. - - - - stable - - - - - - beta - - Change update channel? @@ -3090,6 +3160,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3098,14 +3175,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3118,17 +3198,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5034,6 +5104,11 @@ Server replied with error: %2 Resharing this folder is not allowed + + + Copy internal link + + Copy secure file drop link @@ -5046,18 +5121,13 @@ Server replied with error: %2 - - Copy secure filedrop link - - - - - Copy internal link + + Encrypt - - Encrypt + + Copy secure filedrop link @@ -6343,11 +6413,6 @@ Server replied with error: %2 Create a new share link - - - Copy share link location - - Copied! @@ -6358,6 +6423,11 @@ Server replied with error: %2 Share options + + + Copy share link location + + ShareDetailsPage @@ -6566,6 +6636,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6574,6 +6662,14 @@ Server replied with error: %2 + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_es_CO.ts b/translations/client_es_CO.ts index 7879b07dd1e28..a785cf830fbbc 100644 --- a/translations/client_es_CO.ts +++ b/translations/client_es_CO.ts @@ -166,6 +166,66 @@ + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2851,37 +2911,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Avanzado - About Acerca de - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Usar Íconos &Monocromáticos + + General Settings + Configuraciones generales @@ -2889,18 +2933,28 @@ Alternatively, you can restore all deleted files by downloading them from the se &Lanzar al Iniciar el Sistema - - Show Server &Notifications + + Show Call Notifications + + + For System Tray + Para la Bandeja del Sistema + + + + Use &Monochrome Icons + Usar Íconos &Monocromáticos + - Notify when synchronised folders grow larger than specified limit + Show Chat Notifications - - Show Call Notifications + + Show Server &Notifications @@ -2914,13 +2968,56 @@ Alternatively, you can restore all deleted files by downloading them from the se - - Automatically disable synchronisation of folders that overcome limit + + &Channel - - &Channel + + + stable + + + + + + beta + + + + + &Restart && Update + &Reinicia && Actualiza + + + + &Check for Update now + + + + + Advanced + Avanzado + + + + Ask for confirmation before synchronizing new folders larger than + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit @@ -2954,11 +3051,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive - - - &Check for Update now - - Info @@ -2980,9 +3072,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - &Reinicia && Actualiza + + Show sync folders in &Explorer's Navigation Pane + @@ -3004,21 +3096,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Configuraciones generales - - - - For System Tray - Para la Bandeja del Sistema - - - - Show sync folders in &Explorer's Navigation Pane - - Use &monochrome icons @@ -3044,6 +3121,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3054,18 +3136,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. - - - - stable - - - - - - beta - - Change update channel? @@ -3090,6 +3160,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3098,14 +3175,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3118,17 +3198,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5034,6 +5104,11 @@ Server replied with error: %2 Resharing this folder is not allowed + + + Copy internal link + + Copy secure file drop link @@ -5046,18 +5121,13 @@ Server replied with error: %2 - - Copy secure filedrop link - - - - - Copy internal link + + Encrypt - - Encrypt + + Copy secure filedrop link @@ -6343,11 +6413,6 @@ Server replied with error: %2 Create a new share link - - - Copy share link location - - Copied! @@ -6358,6 +6423,11 @@ Server replied with error: %2 Share options + + + Copy share link location + + ShareDetailsPage @@ -6566,6 +6636,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6574,6 +6662,14 @@ Server replied with error: %2 + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_es_CR.ts b/translations/client_es_CR.ts index c3a8212e2a6d6..e6d4d403fdca6 100644 --- a/translations/client_es_CR.ts +++ b/translations/client_es_CR.ts @@ -166,6 +166,66 @@ + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2851,37 +2911,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Avanzado - About Acerca de - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Usar Íconos &Monocromáticos + + General Settings + Configuraciones generales @@ -2889,18 +2933,28 @@ Alternatively, you can restore all deleted files by downloading them from the se &Lanzar al Iniciar el Sistema - - Show Server &Notifications + + Show Call Notifications + + + For System Tray + Para la Bandeja del Sistema + + + + Use &Monochrome Icons + Usar Íconos &Monocromáticos + - Notify when synchronised folders grow larger than specified limit + Show Chat Notifications - - Show Call Notifications + + Show Server &Notifications @@ -2914,13 +2968,56 @@ Alternatively, you can restore all deleted files by downloading them from the se - - Automatically disable synchronisation of folders that overcome limit + + &Channel - - &Channel + + + stable + + + + + + beta + + + + + &Restart && Update + &Reinicia && Actualiza + + + + &Check for Update now + + + + + Advanced + Avanzado + + + + Ask for confirmation before synchronizing new folders larger than + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit @@ -2954,11 +3051,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive - - - &Check for Update now - - Info @@ -2980,9 +3072,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - &Reinicia && Actualiza + + Show sync folders in &Explorer's Navigation Pane + @@ -3004,21 +3096,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Configuraciones generales - - - - For System Tray - Para la Bandeja del Sistema - - - - Show sync folders in &Explorer's Navigation Pane - - Use &monochrome icons @@ -3044,6 +3121,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3054,18 +3136,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. - - - - stable - - - - - - beta - - Change update channel? @@ -3090,6 +3160,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3098,14 +3175,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3118,17 +3198,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5034,6 +5104,11 @@ Server replied with error: %2 Resharing this folder is not allowed + + + Copy internal link + + Copy secure file drop link @@ -5046,18 +5121,13 @@ Server replied with error: %2 - - Copy secure filedrop link - - - - - Copy internal link + + Encrypt - - Encrypt + + Copy secure filedrop link @@ -6343,11 +6413,6 @@ Server replied with error: %2 Create a new share link - - - Copy share link location - - Copied! @@ -6358,6 +6423,11 @@ Server replied with error: %2 Share options + + + Copy share link location + + ShareDetailsPage @@ -6566,6 +6636,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6574,6 +6662,14 @@ Server replied with error: %2 + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_es_DO.ts b/translations/client_es_DO.ts index 16518c61c524e..dd975392894ea 100644 --- a/translations/client_es_DO.ts +++ b/translations/client_es_DO.ts @@ -166,6 +166,66 @@ + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2851,37 +2911,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Avanzado - About Acerca de - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Usar Íconos &Monocromáticos + + General Settings + Configuraciones generales @@ -2889,18 +2933,28 @@ Alternatively, you can restore all deleted files by downloading them from the se &Lanzar al Iniciar el Sistema - - Show Server &Notifications + + Show Call Notifications + + + For System Tray + Para la Bandeja del Sistema + + + + Use &Monochrome Icons + Usar Íconos &Monocromáticos + - Notify when synchronised folders grow larger than specified limit + Show Chat Notifications - - Show Call Notifications + + Show Server &Notifications @@ -2914,13 +2968,56 @@ Alternatively, you can restore all deleted files by downloading them from the se - - Automatically disable synchronisation of folders that overcome limit + + &Channel - - &Channel + + + stable + + + + + + beta + + + + + &Restart && Update + &Reinicia && Actualiza + + + + &Check for Update now + + + + + Advanced + Avanzado + + + + Ask for confirmation before synchronizing new folders larger than + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit @@ -2954,11 +3051,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive - - - &Check for Update now - - Info @@ -2980,9 +3072,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - &Reinicia && Actualiza + + Show sync folders in &Explorer's Navigation Pane + @@ -3004,21 +3096,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Configuraciones generales - - - - For System Tray - Para la Bandeja del Sistema - - - - Show sync folders in &Explorer's Navigation Pane - - Use &monochrome icons @@ -3044,6 +3121,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3054,18 +3136,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. - - - - stable - - - - - - beta - - Change update channel? @@ -3090,6 +3160,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3098,14 +3175,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3118,17 +3198,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5034,6 +5104,11 @@ Server replied with error: %2 Resharing this folder is not allowed + + + Copy internal link + + Copy secure file drop link @@ -5046,18 +5121,13 @@ Server replied with error: %2 - - Copy secure filedrop link - - - - - Copy internal link + + Encrypt - - Encrypt + + Copy secure filedrop link @@ -6343,11 +6413,6 @@ Server replied with error: %2 Create a new share link - - - Copy share link location - - Copied! @@ -6358,6 +6423,11 @@ Server replied with error: %2 Share options + + + Copy share link location + + ShareDetailsPage @@ -6566,6 +6636,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6574,6 +6662,14 @@ Server replied with error: %2 + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_es_EC.ts b/translations/client_es_EC.ts index 36455c6b74a32..09f39c3b21da5 100644 --- a/translations/client_es_EC.ts +++ b/translations/client_es_EC.ts @@ -166,6 +166,66 @@ Versión del servidor + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2869,37 +2929,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Avanzado - About Acerca de - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice Aviso legal - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Usar Íconos &Monocromáticos + + General Settings + Configuraciones generales @@ -2907,19 +2951,29 @@ Alternatively, you can restore all deleted files by downloading them from the se &Lanzar al Iniciar el Sistema - - Show Server &Notifications - Mostrar notificaciones del servidor + + Show Call Notifications + Mostrar notificaciones de llamadas + + + + For System Tray + Para la Bandeja del Sistema + + + + Use &Monochrome Icons + Usar Íconos &Monocromáticos - Notify when synchronised folders grow larger than specified limit + Show Chat Notifications - - Show Call Notifications - Mostrar notificaciones de llamadas + + Show Server &Notifications + Mostrar notificaciones del servidor @@ -2931,16 +2985,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Verificar automáticamente las actualizaciones - - - Automatically disable synchronisation of folders that overcome limit - - &Channel &Canal + + + + stable + estable + + + + + beta + beta + + + + &Restart && Update + &Reinicia && Actualiza + + + + &Check for Update now + &Verificar actualizaciones ahora + + + + Advanced + Avanzado + + + + Ask for confirmation before synchronizing new folders larger than + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit + + Ask for confirmation before synchronizing external storages @@ -2972,11 +3069,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Crear archivo de depuración - - - &Check for Update now - &Verificar actualizaciones ahora - Info @@ -2998,9 +3090,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - &Reinicia && Actualiza + + Show sync folders in &Explorer's Navigation Pane + Mostrar carpetas de sincronización en el panel de navegación del Explorador @@ -3022,21 +3114,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Configuraciones generales - - - - For System Tray - Para la Bandeja del Sistema - - - - Show sync folders in &Explorer's Navigation Pane - Mostrar carpetas de sincronización en el panel de navegación del Explorador - Use &monochrome icons @@ -3062,6 +3139,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Notificaciones del servidor que requieren atención. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3072,18 +3154,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. No puedes desactivar el inicio automático porque el inicio automático a nivel de sistema está habilitado. - - - - stable - estable - - - - - beta - beta - Change update channel? @@ -3110,6 +3180,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3118,14 +3195,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3138,17 +3218,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5069,6 +5139,11 @@ Server replied with error: %2 Resharing this folder is not allowed No se permite volver a compartir esta carpeta + + + Copy internal link + Copiar enlace interno + Copy secure file drop link @@ -5080,21 +5155,16 @@ Server replied with error: %2 Copy public link Copiar enlace público - - - Copy secure filedrop link - Copiar enlace seguro para envío de archivos - - - - Copy internal link - Copiar enlace interno - Encrypt Cifrar + + + Copy secure filedrop link + Copiar enlace seguro para envío de archivos + Lock file @@ -6378,11 +6448,6 @@ Server replied with error: %2 Create a new share link Crear un nuevo enlace de uso compartido - - - Copy share link location - Copiar ubicación del enlace de uso compartido - Copied! @@ -6393,6 +6458,11 @@ Server replied with error: %2 Share options Opciones de uso compartido + + + Copy share link location + Copiar ubicación del enlace de uso compartido + ShareDetailsPage @@ -6601,6 +6671,24 @@ Server replied with error: %2 Menú de carpetas de grupo y usuario local + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6609,6 +6697,14 @@ Server replied with error: %2 Buscar archivos, mensajes, eventos... + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_es_GT.ts b/translations/client_es_GT.ts index f32767c901b77..5a9ed5546fe6f 100644 --- a/translations/client_es_GT.ts +++ b/translations/client_es_GT.ts @@ -166,6 +166,66 @@ + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2851,37 +2911,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Avanzado - About Acerca de - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Usar Íconos &Monocromáticos + + General Settings + Configuraciones generales @@ -2889,18 +2933,28 @@ Alternatively, you can restore all deleted files by downloading them from the se &Lanzar al Iniciar el Sistema - - Show Server &Notifications + + Show Call Notifications + + + For System Tray + Para la Bandeja del Sistema + + + + Use &Monochrome Icons + Usar Íconos &Monocromáticos + - Notify when synchronised folders grow larger than specified limit + Show Chat Notifications - - Show Call Notifications + + Show Server &Notifications @@ -2914,13 +2968,56 @@ Alternatively, you can restore all deleted files by downloading them from the se - - Automatically disable synchronisation of folders that overcome limit + + &Channel - - &Channel + + + stable + + + + + + beta + + + + + &Restart && Update + &Reinicia && Actualiza + + + + &Check for Update now + + + + + Advanced + Avanzado + + + + Ask for confirmation before synchronizing new folders larger than + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit @@ -2954,11 +3051,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive - - - &Check for Update now - - Info @@ -2980,9 +3072,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - &Reinicia && Actualiza + + Show sync folders in &Explorer's Navigation Pane + @@ -3004,21 +3096,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Configuraciones generales - - - - For System Tray - Para la Bandeja del Sistema - - - - Show sync folders in &Explorer's Navigation Pane - - Use &monochrome icons @@ -3044,6 +3121,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3054,18 +3136,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. - - - - stable - - - - - - beta - - Change update channel? @@ -3090,6 +3160,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3098,14 +3175,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3118,17 +3198,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5034,6 +5104,11 @@ Server replied with error: %2 Resharing this folder is not allowed + + + Copy internal link + + Copy secure file drop link @@ -5046,18 +5121,13 @@ Server replied with error: %2 - - Copy secure filedrop link - - - - - Copy internal link + + Encrypt - - Encrypt + + Copy secure filedrop link @@ -6343,11 +6413,6 @@ Server replied with error: %2 Create a new share link - - - Copy share link location - - Copied! @@ -6358,6 +6423,11 @@ Server replied with error: %2 Share options + + + Copy share link location + + ShareDetailsPage @@ -6566,6 +6636,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6574,6 +6662,14 @@ Server replied with error: %2 + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_es_HN.ts b/translations/client_es_HN.ts index fd6f6d4f31478..f75fc0aa8cc80 100644 --- a/translations/client_es_HN.ts +++ b/translations/client_es_HN.ts @@ -166,6 +166,66 @@ + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2851,37 +2911,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Avanzado - About Acerca de - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Usar Íconos &Monocromáticos + + General Settings + Configuraciones generales @@ -2889,18 +2933,28 @@ Alternatively, you can restore all deleted files by downloading them from the se &Lanzar al Iniciar el Sistema - - Show Server &Notifications + + Show Call Notifications + + + For System Tray + Para la Bandeja del Sistema + + + + Use &Monochrome Icons + Usar Íconos &Monocromáticos + - Notify when synchronised folders grow larger than specified limit + Show Chat Notifications - - Show Call Notifications + + Show Server &Notifications @@ -2914,13 +2968,56 @@ Alternatively, you can restore all deleted files by downloading them from the se - - Automatically disable synchronisation of folders that overcome limit + + &Channel - - &Channel + + + stable + + + + + + beta + + + + + &Restart && Update + &Reinicia && Actualiza + + + + &Check for Update now + + + + + Advanced + Avanzado + + + + Ask for confirmation before synchronizing new folders larger than + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit @@ -2954,11 +3051,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive - - - &Check for Update now - - Info @@ -2980,9 +3072,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - &Reinicia && Actualiza + + Show sync folders in &Explorer's Navigation Pane + @@ -3004,21 +3096,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Configuraciones generales - - - - For System Tray - Para la Bandeja del Sistema - - - - Show sync folders in &Explorer's Navigation Pane - - Use &monochrome icons @@ -3044,6 +3121,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3054,18 +3136,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. - - - - stable - - - - - - beta - - Change update channel? @@ -3090,6 +3160,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3098,14 +3175,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3118,17 +3198,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5034,6 +5104,11 @@ Server replied with error: %2 Resharing this folder is not allowed + + + Copy internal link + + Copy secure file drop link @@ -5046,18 +5121,13 @@ Server replied with error: %2 - - Copy secure filedrop link - - - - - Copy internal link + + Encrypt - - Encrypt + + Copy secure filedrop link @@ -6343,11 +6413,6 @@ Server replied with error: %2 Create a new share link - - - Copy share link location - - Copied! @@ -6358,6 +6423,11 @@ Server replied with error: %2 Share options + + + Copy share link location + + ShareDetailsPage @@ -6566,6 +6636,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6574,6 +6662,14 @@ Server replied with error: %2 + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_es_MX.ts b/translations/client_es_MX.ts index 47aabe3f13900..1a230a1e7d6d8 100644 --- a/translations/client_es_MX.ts +++ b/translations/client_es_MX.ts @@ -166,6 +166,66 @@ Versión del servidor + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2875,37 +2935,21 @@ Alternatively, you can restore all deleted files by downloading them from the se 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 Íconos &Monocromáticos + + General Settings + Configuraciones generales @@ -2913,19 +2957,29 @@ Alternatively, you can restore all deleted files by downloading them from the se &Lanzar al Iniciar el Sistema - - Show Server &Notifications - Mostrar &notificaciones del servidor + + Show Call Notifications + Mostrar notificaciones de llamadas - - 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 + + For System Tray + Para la Bandeja del Sistema + + + + Use &Monochrome Icons + Usar Íconos &Monocromáticos - Show Call Notifications - Mostrar notificaciones de llamadas + Show Chat Notifications + + + + + Show Server &Notifications + Mostrar &notificaciones del servidor @@ -2937,16 +2991,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates Comprobar &actualizaciones automáticamente - - - Automatically disable synchronisation of folders that overcome limit - Deshabilitar sincronización automáticamente para las carpetas que sobrepasen el límite - &Channel &Canal + + + + stable + estable + + + + + beta + beta + + + + &Restart && Update + &Reinicia && Actualiza + + + + &Check for Update now + &Comprobar ahora las actualizaciones + + + + Advanced + Avanzado + + + + Ask for confirmation before synchronizing new folders larger than + Pedir confirmación antes de sincronizar carpetas nuevas mayores a + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + 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 + + + + Automatically disable synchronisation of folders that overcome limit + Deshabilitar sincronización automáticamente para las carpetas que sobrepasen el límite + Ask for confirmation before synchronizing external storages @@ -2978,11 +3075,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Crear archivo de depuración - - - &Check for Update now - &Comprobar ahora las actualizaciones - Info @@ -3004,9 +3096,9 @@ Alternatively, you can restore all deleted files by downloading them from the se Canal de actualizaciones - - &Restart && Update - &Reinicia && Actualiza + + Show sync folders in &Explorer's Navigation Pane + Mostrar carpetas sincronizadas en el panel de navegación del &explorador @@ -3028,21 +3120,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice Aviso legal - - - General Settings - Configuraciones generales - - - - For System Tray - Para la Bandeja del Sistema - - - - Show sync folders in &Explorer's Navigation Pane - Mostrar carpetas sincronizadas en el panel de navegación del &explorador - Use &monochrome icons @@ -3068,6 +3145,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Notificaciones del servidor que requieren atención. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3078,18 +3160,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. No puede desactivar el inicio automático porque el inicio automático a nivel de sistema está habilitado. - - - - stable - estable - - - - - beta - beta - Change update channel? @@ -3114,15 +3184,6 @@ Tenga en cuenta que esto sólo selecciona de qué grupo se tomarán las actualiz enterprise empresarial - - - - beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development - -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - list of available update channels to non enterprise users and downgrading warning - - - enterprise: contains stable versions for customers. @@ -3132,18 +3193,14 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. + + - beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development -Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. - list of available update channels to enterprise users and downgrading warning +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + list of available update channels to non enterprise users and downgrading warning - - - Changing update channel? - ¿Cambiar el canal de actualizaciones? - The channel determines which upgrades will be offered to install: @@ -3159,7 +3216,20 @@ Downgrading versions is not possible immediately: changing from beta to stable m Degradar versiones no es posible inmediatamente: cambiar de beta a estable significa esperar por una nueva versión estable. - + + - enterprise: contains stable versions for customers. + +Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. + list of available update channels to enterprise users and downgrading warning + + + + + Changing update channel? + ¿Cambiar el canal de actualizaciones? + + + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5080,6 +5150,11 @@ El servidor respondió con el error: %2 Resharing this folder is not allowed No se permite volver a compartir esta carpeta + + + Copy internal link + Copiar enlace interno + Copy secure file drop link @@ -5091,21 +5166,16 @@ El servidor respondió con el error: %2 Copy public link Copiar enlace público - - - Copy secure filedrop link - Copiar enlace seguro para entrega de archivos - - - - Copy internal link - Copiar enlace interno - Encrypt Cifrar + + + Copy secure filedrop link + Copiar enlace seguro para entrega de archivos + Lock file @@ -6389,11 +6459,6 @@ El servidor respondió con el error: %2 Create a new share link Crear un nuevo enlace de uso compartido - - - Copy share link location - Copiar dirección del enlace de uso compartido - Copied! @@ -6404,6 +6469,11 @@ El servidor respondió con el error: %2 Share options Opciones de uso compartido + + + Copy share link location + Copiar dirección del enlace de uso compartido + ShareDetailsPage @@ -6612,6 +6682,24 @@ El servidor respondió con el error: %2 Menú de carpetas de grupo de usuarios y local + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6620,6 +6708,14 @@ El servidor respondió con el error: %2 Buscar archivos, mensajes, eventos ... + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_es_SV.ts b/translations/client_es_SV.ts index 6d0e590239225..9c50508ec84a7 100644 --- a/translations/client_es_SV.ts +++ b/translations/client_es_SV.ts @@ -166,6 +166,66 @@ + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2851,37 +2911,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Avanzado - About Acerca de - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Usar Íconos &Monocromáticos + + General Settings + Configuraciones generales @@ -2889,18 +2933,28 @@ Alternatively, you can restore all deleted files by downloading them from the se &Lanzar al Iniciar el Sistema - - Show Server &Notifications + + Show Call Notifications + + + For System Tray + Para la Bandeja del Sistema + + + + Use &Monochrome Icons + Usar Íconos &Monocromáticos + - Notify when synchronised folders grow larger than specified limit + Show Chat Notifications - - Show Call Notifications + + Show Server &Notifications @@ -2914,13 +2968,56 @@ Alternatively, you can restore all deleted files by downloading them from the se - - Automatically disable synchronisation of folders that overcome limit + + &Channel - - &Channel + + + stable + + + + + + beta + + + + + &Restart && Update + &Reinicia && Actualiza + + + + &Check for Update now + + + + + Advanced + Avanzado + + + + Ask for confirmation before synchronizing new folders larger than + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit @@ -2954,11 +3051,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive - - - &Check for Update now - - Info @@ -2980,9 +3072,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - &Reinicia && Actualiza + + Show sync folders in &Explorer's Navigation Pane + @@ -3004,21 +3096,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Configuraciones generales - - - - For System Tray - Para la Bandeja del Sistema - - - - Show sync folders in &Explorer's Navigation Pane - - Use &monochrome icons @@ -3044,6 +3121,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3054,18 +3136,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. - - - - stable - - - - - - beta - - Change update channel? @@ -3090,6 +3160,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3098,14 +3175,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3118,17 +3198,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5034,6 +5104,11 @@ Server replied with error: %2 Resharing this folder is not allowed + + + Copy internal link + + Copy secure file drop link @@ -5046,18 +5121,13 @@ Server replied with error: %2 - - Copy secure filedrop link - - - - - Copy internal link + + Encrypt - - Encrypt + + Copy secure filedrop link @@ -6343,11 +6413,6 @@ Server replied with error: %2 Create a new share link - - - Copy share link location - - Copied! @@ -6358,6 +6423,11 @@ Server replied with error: %2 Share options + + + Copy share link location + + ShareDetailsPage @@ -6566,6 +6636,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6574,6 +6662,14 @@ Server replied with error: %2 + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_eu.ts b/translations/client_eu.ts index 405222d8d3ca6..65f4bf5204156 100644 --- a/translations/client_eu.ts +++ b/translations/client_eu.ts @@ -166,6 +166,66 @@ Zerbitzariko bertsioa + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Gehitu kontu berria + + + Unified search results list + Bilaketa-emaitzen zerrenda bateratua + Settings @@ -456,6 +521,11 @@ Current account avatar Uneko kontuaren avatarra + + + New activities + Jarduera berriak + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser Ireki %1 nabigatzailean - - - Unified search results list - Bilaketa-emaitzen zerrenda bateratua - - - - New activities - Jarduera berriak - OCC::AbstractNetworkJob @@ -2879,37 +2939,21 @@ Bestela, ezabatutako fitxategi guztiak leheneratu ditzakezu zerbitzaritik deskar OCC::GeneralSettings - - - Advanced - Aurreratua - About Honi buruz - - - Ask for confirmation before synchronizing new folders larger than - Eskatu berrespena ondoko tamaina baino handiagoak diren karpeta berriak sinkronizatu aurretik - Legal notice Legezko oharra - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Erabili &kolore bakarreko ikonoak + + General Settings + Ezarpen orokorrak @@ -2917,19 +2961,29 @@ Bestela, ezabatutako fitxategi guztiak leheneratu ditzakezu zerbitzaritik deskar &Abiarazi sistema hasterakoan - - Show Server &Notifications - Erakutsi zerbitzariaren &jakinarazpenak + + Show Call Notifications + Erakutsi dei jakinarazpenak - - Notify when synchronised folders grow larger than specified limit - Jakinarazi sinkronizatutako karpetak zehaztutako muga baino handiagoak direnean + + For System Tray + Sistemaren erretilurako + + + + Use &Monochrome Icons + Erabili &kolore bakarreko ikonoak - Show Call Notifications - Erakutsi dei jakinarazpenak + Show Chat Notifications + + + + + Show Server &Notifications + Erakutsi zerbitzariaren &jakinarazpenak @@ -2941,16 +2995,59 @@ Bestela, ezabatutako fitxategi guztiak leheneratu ditzakezu zerbitzaritik deskar &Automatically check for Updates A&utomatikoki eguneraketak bilatu - - - Automatically disable synchronisation of folders that overcome limit - Desgaitu automatikoki muga gainditzen duten karpeten sinkronizazioa - &Channel &Kanala + + + + stable + egonkorra + + + + + beta + beta + + + + &Restart && Update + Be&rrabiarazi eta Eguneratu + + + + &Check for Update now + &Eguneraketa oraintxe bilatu + + + + Advanced + Aurreratua + + + + Ask for confirmation before synchronizing new folders larger than + Eskatu berrespena ondoko tamaina baino handiagoak diren karpeta berriak sinkronizatu aurretik + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + Jakinarazi sinkronizatutako karpetak zehaztutako muga baino handiagoak direnean + + + + Automatically disable synchronisation of folders that overcome limit + Desgaitu automatikoki muga gainditzen duten karpeten sinkronizazioa + Ask for confirmation before synchronizing external storages @@ -2982,11 +3079,6 @@ Bestela, ezabatutako fitxategi guztiak leheneratu ditzakezu zerbitzaritik deskar Create Debug Archive Sortu arazketa fitxategia - - - &Check for Update now - &Eguneraketa oraintxe bilatu - Info @@ -3008,9 +3100,9 @@ Bestela, ezabatutako fitxategi guztiak leheneratu ditzakezu zerbitzaritik deskar Eguneratze-kanala - - &Restart && Update - Be&rrabiarazi eta Eguneratu + + Show sync folders in &Explorer's Navigation Pane + Erakutsi sinkronizatutako karpetak arakatzailearen &nabigazio panelean @@ -3032,21 +3124,6 @@ Bestela, ezabatutako fitxategi guztiak leheneratu ditzakezu zerbitzaritik deskar Legal Notice Lege oharra - - - General Settings - Ezarpen orokorrak - - - - For System Tray - Sistemaren erretilurako - - - - Show sync folders in &Explorer's Navigation Pane - Erakutsi sinkronizatutako karpetak arakatzailearen &nabigazio panelean - Use &monochrome icons @@ -3072,6 +3149,11 @@ Bestela, ezabatutako fitxategi guztiak leheneratu ditzakezu zerbitzaritik deskar Server notifications that require attention. Arreta eskatzen duten zerbitzariaren jakinarazpenak. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3082,18 +3164,6 @@ Bestela, ezabatutako fitxategi guztiak leheneratu ditzakezu zerbitzaritik deskar You cannot disable autostart because system-wide autostart is enabled. Ezin da abiarazte automatikoa desgaitu sistema osoaren abiarazte automatikoa gaituta dagoelako. - - - - stable - egonkorra - - - - - beta - beta - Change update channel? @@ -3120,6 +3190,14 @@ Kontuan izan honek bertsio berriak nondik hartu bakarrik hautatzen duela, ezin d + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + - enterprise: bezeroentzako bertsio egonkorrak dauzka. + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3131,15 +3209,22 @@ Downgrading versions is not possible immediately: changing from beta to stable m Bertsioak ezin dira berehala aldatu: betatik egonkorra aldatzeak bertsio egonkor berriaren zain egotea suposatzen du. - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - enterprise: bezeroentzako bertsio egonkorrak dauzka. - + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + Kanalak zehazten du zein eguneraketa eskainiko instalatzeko: +- egonkorra: fidagarritzat jotzen diren bertsio probatuak ditu +- beta: beharbada ondo probatu ez diren funtzio berriak dituzten bertsioak ditu +- egunero: egunero probatzeko eta garatzeko soilik sortutako bertsioak ditu +%1 +Bertsioak ezin dira berehala aldatu: betatik egonkorra aldatzeak bertsio egonkor berriaren zain egotea esan nahi du. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3154,22 +3239,7 @@ Bertsioak ezin dira berehala jaitsi: egonkorretik enpresara aldatzeak enpresa be Eguneratze kanala aldatzen? - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Kanalak zehazten du zein eguneraketa eskainiko instalatzeko: -- egonkorra: fidagarritzat jotzen diren bertsio probatuak ditu -- beta: beharbada ondo probatu ez diren funtzio berriak dituzten bertsioak ditu -- egunero: egunero probatzeko eta garatzeko soilik sortutako bertsioak ditu -%1 -Bertsioak ezin dira berehala aldatu: betatik egonkorra aldatzeak bertsio egonkor berriaren zain egotea esan nahi du. - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5091,6 +5161,11 @@ Zerbitzariak errorearekin erantzun du: %2 Resharing this folder is not allowed Karpeta hau berriro partekatzea ez dago onartuta + + + Copy internal link + Kopiatu barne esteka + Copy secure file drop link @@ -5102,21 +5177,16 @@ Zerbitzariak errorearekin erantzun du: %2 Copy public link Kopiatu esteka publikoa - - - Copy secure filedrop link - Kopiatu fitxategiak askatzeko esteka segurua - - - - Copy internal link - Kopiatu barne esteka - Encrypt Zifratu + + + Copy secure filedrop link + Kopiatu fitxategiak askatzeko esteka segurua + Lock file @@ -6400,11 +6470,6 @@ Zerbitzariak errorearekin erantzun du: %2 Create a new share link Sortu partekatzeko esteka berri bat - - - Copy share link location - Kopiatu partekatzeko estekaren kokapena - Copied! @@ -6415,6 +6480,11 @@ Zerbitzariak errorearekin erantzun du: %2 Share options Partekatzeko aukerak + + + Copy share link location + Kopiatu partekatzeko estekaren kokapena + ShareDetailsPage @@ -6623,6 +6693,24 @@ Zerbitzariak errorearekin erantzun du: %2 Erabiltzaileren taldearen eta tokiko karpeten menua + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6631,6 +6719,14 @@ Zerbitzariak errorearekin erantzun du: %2 Bilatu fitxategiak, mezuak, gertaerak ... + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_fa.ts b/translations/client_fa.ts index f32d368210731..292d8236ef10f 100644 --- a/translations/client_fa.ts +++ b/translations/client_fa.ts @@ -166,6 +166,66 @@ Server version + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2871,37 +2931,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - پیشرفته - About درباره - - - Ask for confirmation before synchronizing new folders larger than - Ask for confirmation before synchronizing new folders larger than - Legal notice Legal notice - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - استفاده از آیکون های تک رنگ + + General Settings + تنظیمات عمومی @@ -2909,19 +2953,29 @@ Alternatively, you can restore all deleted files by downloading them from the se راه انداختن در سیستم راه اندازی - - Show Server &Notifications - نمایش سرور و اعلانات + + Show Call Notifications + Show Call Notifications - - Notify when synchronised folders grow larger than specified limit - Notify when synchronised folders grow larger than specified limit + + For System Tray + برای آزمایش سیستم + + + + Use &Monochrome Icons + استفاده از آیکون های تک رنگ - Show Call Notifications - Show Call Notifications + Show Chat Notifications + + + + + Show Server &Notifications + نمایش سرور و اعلانات @@ -2933,16 +2987,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Automatically check for Updates - - - Automatically disable synchronisation of folders that overcome limit - Automatically disable synchronisation of folders that overcome limit - &Channel &Channel + + + + stable + stable + + + + + beta + beta + + + + &Restart && Update + راه اندازی مجدد و به روز رسانی + + + + &Check for Update now + &Check for Update now + + + + Advanced + پیشرفته + + + + 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" + MB + + + + Notify when synchronised folders grow larger than specified 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 + Ask for confirmation before synchronizing external storages @@ -2974,11 +3071,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Create Debug Archive - - - &Check for Update now - &Check for Update now - Info @@ -3000,9 +3092,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - راه اندازی مجدد و به روز رسانی + + Show sync folders in &Explorer's Navigation Pane + Show sync folders in &Explorer's Navigation Pane @@ -3024,21 +3116,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - تنظیمات عمومی - - - - For System Tray - برای آزمایش سیستم - - - - Show sync folders in &Explorer's Navigation Pane - Show sync folders in &Explorer's Navigation Pane - Use &monochrome icons @@ -3064,6 +3141,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. نمایش اعلانات سرور نیازمند تائید می باشد + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3074,18 +3156,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. You cannot disable autostart because system-wide autostart is enabled. - - - - stable - stable - - - - - beta - beta - Change update channel? @@ -3112,6 +3182,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3120,14 +3197,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3140,17 +3220,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5069,6 +5139,11 @@ Server replied with error: %2 Resharing this folder is not allowed بازهم‌رسانی این شاخه مجاز نیست + + + Copy internal link + Copy internal link + Copy secure file drop link @@ -5080,21 +5155,16 @@ Server replied with error: %2 Copy public link Copy public link - - - Copy secure filedrop link - Copy secure filedrop link - - - - Copy internal link - Copy internal link - Encrypt Encrypt + + + Copy secure filedrop link + Copy secure filedrop link + Lock file @@ -6377,11 +6447,6 @@ Server replied with error: %2 Create a new share link Create a new share link - - - Copy share link location - Copy share link location - Copied! @@ -6392,6 +6457,11 @@ Server replied with error: %2 Share options Share options + + + Copy share link location + Copy share link location + ShareDetailsPage @@ -6600,6 +6670,24 @@ Server replied with error: %2 User group and local folders menu + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6608,6 +6696,14 @@ Server replied with error: %2 Search files, messages, events … + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_fi.ts b/translations/client_fi.ts index 8c0cc9e168358..75cfd97d2432c 100644 --- a/translations/client_fi.ts +++ b/translations/client_fi.ts @@ -166,6 +166,66 @@ Palvelimen versio + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2858,58 +2918,52 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Lisäasetukset - About Tietoja - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice Lainopillinen huomautus - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - Mt - - - - Use &Monochrome Icons - Käytä &mustavalkoisia kuvakkeita + + General Settings + Yleisasetukset &Launch on System Startup &Käynnistä järjestelmän käynnistyessä - - - Show Server &Notifications - Näytä &palvelinilmoitukset - - Notify when synchronised folders grow larger than specified limit + Show Call Notifications + + + For System Tray + Ilmoitusalueelle + + + + Use &Monochrome Icons + Käytä &mustavalkoisia kuvakkeita + - Show Call Notifications + Show Chat Notifications + + + Show Server &Notifications + Näytä &palvelinilmoitukset + Updates @@ -2920,16 +2974,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates Tarkista päivitykset &automaattisesti - - - Automatically disable synchronisation of folders that overcome limit - - &Channel &Kanava + + + + stable + vakaa + + + + + beta + beta + + + + &Restart && Update + &Käynnistä uudelleen && päivitä + + + + &Check for Update now + &Tarkista päivitykset nyt + + + + Advanced + Lisäasetukset + + + + Ask for confirmation before synchronizing new folders larger than + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + Mt + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit + + Ask for confirmation before synchronizing external storages @@ -2961,11 +3058,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Koosta vianetsintätiedot - - - &Check for Update now - &Tarkista päivitykset nyt - Info @@ -2987,9 +3079,9 @@ Alternatively, you can restore all deleted files by downloading them from the se Päivityskanava - - &Restart && Update - &Käynnistä uudelleen && päivitä + + Show sync folders in &Explorer's Navigation Pane + @@ -3011,21 +3103,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Yleisasetukset - - - - For System Tray - Ilmoitusalueelle - - - - Show sync folders in &Explorer's Navigation Pane - - Use &monochrome icons @@ -3051,6 +3128,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Palvelinilmoitukset jotka vaativat huomiota. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3061,18 +3143,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. - - - - stable - vakaa - - - - - beta - beta - Change update channel? @@ -3097,6 +3167,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3105,14 +3182,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3125,17 +3205,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5045,6 +5115,11 @@ Server replied with error: %2 Resharing this folder is not allowed Tämän kansion uudelleenjakaminen ei ole sallittu + + + Copy internal link + Kopioi sisäinen linkki + Copy secure file drop link @@ -5056,21 +5131,16 @@ Server replied with error: %2 Copy public link Kopioi julkinen linkki - - - Copy secure filedrop link - - - - - Copy internal link - Kopioi sisäinen linkki - Encrypt Salaa + + + Copy secure filedrop link + + Lock file @@ -6354,11 +6424,6 @@ Server replied with error: %2 Create a new share link Luo uusi jakolinkki - - - Copy share link location - Kopioi jakolinkki - Copied! @@ -6369,6 +6434,11 @@ Server replied with error: %2 Share options Jakamisen valinnat + + + Copy share link location + Kopioi jakolinkki + ShareDetailsPage @@ -6577,6 +6647,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6585,6 +6673,14 @@ Server replied with error: %2 Etsi tiedostoja, viestejä, tapahtumia… + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_fr.ts b/translations/client_fr.ts index e0f73658fa94a..b37073f6427e2 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -166,6 +166,66 @@ Version serveur + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Ajouter un nouveau compte + + + Unified search results list + Liste des résultats de la recherche unifiée + Settings @@ -456,6 +521,11 @@ Current account avatar Avatar du compte courant + + + New activities + Nouvelles activités + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser Ouvrir %1 dans le navigateur - - - Unified search results list - Liste des résultats de la recherche unifiée - - - - New activities - Nouvelles activités - OCC::AbstractNetworkJob @@ -2878,37 +2938,21 @@ Vous pouvez également restaurer tous les fichiers supprimés en les télécharg OCC::GeneralSettings - - - Advanced - Avancés - About À propos - - - Ask for confirmation before synchronizing new folders larger than - Demander confirmation avant de synchroniser les dossiers plus grands que - Legal notice Notice légale - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - Mo - - - - Use &Monochrome Icons - Utiliser les icônes &monochromes + + General Settings + Paramètres généraux @@ -2916,19 +2960,29 @@ Vous pouvez également restaurer tous les fichiers supprimés en les télécharg &Lancer au démarrage du système - - Show Server &Notifications - Afficher les &notifications serveur + + Show Call Notifications + Afficher les notifications d'appel - - Notify when synchronised folders grow larger than specified limit - Notifier lorsque les dossiers synchronisés dépassent la limite spécifiée + + For System Tray + Pour la zone de notification système + + + + Use &Monochrome Icons + Utiliser les icônes &monochromes - Show Call Notifications - Afficher les notifications d'appel + Show Chat Notifications + + + + + Show Server &Notifications + Afficher les &notifications serveur @@ -2940,16 +2994,59 @@ Vous pouvez également restaurer tous les fichiers supprimés en les télécharg &Automatically check for Updates &Vérifier automatiquement les mises à jour - - - Automatically disable synchronisation of folders that overcome limit - Désactiver automatiquement la synchronisation des dossiers qui dépassent la limite fixée - &Channel Canal + + + + stable + stable + + + + + beta + bêta + + + + &Restart && Update + Redémarrer et Mettre à jour + + + + &Check for Update now + &Vérifier la présence de mises à jour maintenant + + + + Advanced + Avancés + + + + Ask for confirmation before synchronizing new folders larger than + Demander confirmation avant de synchroniser les dossiers plus grands que + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + Mo + + + + Notify when synchronised folders grow larger than specified limit + Notifier lorsque les dossiers synchronisés dépassent la limite spécifiée + + + + Automatically disable synchronisation of folders that overcome limit + Désactiver automatiquement la synchronisation des dossiers qui dépassent la limite fixée + Ask for confirmation before synchronizing external storages @@ -2981,11 +3078,6 @@ Vous pouvez également restaurer tous les fichiers supprimés en les télécharg Create Debug Archive Créer une archive de débogage - - - &Check for Update now - &Vérifier la présence de mises à jour maintenant - Info @@ -3007,9 +3099,9 @@ Vous pouvez également restaurer tous les fichiers supprimés en les télécharg Canal de mise à jour - - &Restart && Update - Redémarrer et Mettre à jour + + Show sync folders in &Explorer's Navigation Pane + Afficher les dossiers synchronisés dans le panneau de navigation de l'&Explorateur de fichiers @@ -3031,21 +3123,6 @@ Vous pouvez également restaurer tous les fichiers supprimés en les télécharg Legal Notice Mentions légales - - - General Settings - Paramètres généraux - - - - For System Tray - Pour la zone de notification système - - - - 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 @@ -3071,6 +3148,11 @@ Vous pouvez également restaurer tous les fichiers supprimés en les télécharg Server notifications that require attention. Notifications du serveur requérant votre attention. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3081,18 +3163,6 @@ Vous pouvez également restaurer tous les fichiers supprimés en les télécharg 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é. - - - - stable - stable - - - - - beta - bêta - Change update channel? @@ -3119,6 +3189,14 @@ Notez que cela ne permet seulement que de sélectionner où sont récupérées l + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + - enterprise: contient les version stables pour les clients. + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3130,15 +3208,22 @@ Downgrading versions is not possible immediately: changing from beta to stable m La rétrogradation des versions n'est pas possible immédiatement: passer de la version bêta à la version stable signifie attendre la nouvelle version stable. - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - enterprise: contient les version stables pour les clients. - + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + Le canal détermine quelles mises à jour seront proposées pour l'installation : +- stable: contient les versions testées considérées comme fiables +- beta: contient les versions avec de nouvelles fonctionnalité qui n'ont pas toujours été testées complètement +- daily: contient les versions créées quotidiennement seulement pour les tests et le développement +%1 +Passer à une version antérieure n'est pas possible immédiatement : passer du canal beta au canal stable implique d'attendre la nouvelle version stable. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3153,22 +3238,7 @@ La rétrogradation des versions n'est pas possible immédiatement: passer d Changement du canal de mise à jour ? - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Le canal détermine quelles mises à jour seront proposées pour l'installation : -- stable: contient les versions testées considérées comme fiables -- beta: contient les versions avec de nouvelles fonctionnalité qui n'ont pas toujours été testées complètement -- daily: contient les versions créées quotidiennement seulement pour les tests et le développement -%1 -Passer à une version antérieure n'est pas possible immédiatement : passer du canal beta au canal stable implique d'attendre la nouvelle version stable. - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5090,6 +5160,11 @@ Le serveur a répondu avec l'erreur : %2 Resharing this folder is not allowed Repartager ce dossier est interdit + + + Copy internal link + Copier le lien interne + Copy secure file drop link @@ -5101,21 +5176,16 @@ Le serveur a répondu avec l'erreur : %2 Copy public link Copier le lien public - - - Copy secure filedrop link - Copier le lien de dépôt de fichier sécurisé - - - - Copy internal link - Copier le lien interne - Encrypt Chiffrer + + + Copy secure filedrop link + Copier le lien de dépôt de fichier sécurisé + Lock file @@ -6399,11 +6469,6 @@ Le serveur a répondu avec l'erreur : %2 Create a new share link Créer un nouveau lien de partage - - - Copy share link location - Copier le lien de partage - Copied! @@ -6414,6 +6479,11 @@ Le serveur a répondu avec l'erreur : %2 Share options Options de partage + + + Copy share link location + Copier le lien de partage + ShareDetailsPage @@ -6622,6 +6692,24 @@ Le serveur a répondu avec l'erreur : %2 Menu de groupe d'utilisateurs et dossiers locaux + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6630,6 +6718,14 @@ Le serveur a répondu avec l'erreur : %2 Rechercher des fichiers, des messages, des événements … + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_ga.ts b/translations/client_ga.ts index 2da00dacc7564..437a24b021506 100644 --- a/translations/client_ga.ts +++ b/translations/client_ga.ts @@ -166,6 +166,66 @@ Leagan freastalaí + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Cuir cuntas nua leis + + + Unified search results list + Liosta torthaí cuardaigh aontaithe + Settings @@ -456,6 +521,11 @@ Current account avatar Avatar cuntas reatha + + + New activities + Gníomhaíochtaí nua + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser Oscail %1 sa bhrabhsálaí - - - Unified search results list - Liosta torthaí cuardaigh aontaithe - - - - New activities - Gníomhaíochtaí nua - OCC::AbstractNetworkJob @@ -2879,37 +2939,21 @@ De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n OCC::GeneralSettings - - - Advanced - Casta - About Faoi - - - Ask for confirmation before synchronizing new folders larger than - Iarr deimhniú sula ndéantar fillteáin nua atá níos mó ná a shioncronú - Legal notice Fógra dlíthiúil - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Úsáid &Deilbhíní Monacrómacha + + General Settings + Socruithe Ginearálta @@ -2917,19 +2961,29 @@ De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n &Seol ar Thosú an Chórais - - Show Server &Notifications - Taispeáin Freastalaí & Fógraí + + Show Call Notifications + Taispeáin Fógraí Glaonna - - Notify when synchronised folders grow larger than specified limit - Fógra a thabhairt nuair a fhásann fillteáin sioncronaithe níos mó ná an teorainn shonraithe + + For System Tray + Le haghaidh Tráidire Córais + + + + Use &Monochrome Icons + Úsáid &Deilbhíní Monacrómacha - Show Call Notifications - Taispeáin Fógraí Glaonna + Show Chat Notifications + + + + + Show Server &Notifications + Taispeáin Freastalaí & Fógraí @@ -2941,16 +2995,59 @@ De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n &Automatically check for Updates Seiceáil go huathoibríoch le haghaidh Nuashonruithe - - - Automatically disable synchronisation of folders that overcome limit - Díchumasaigh go huathoibríoch sioncrónú fillteán a sháraíonn teorainn - &Channel &Cainéal + + + + stable + cobhsaí + + + + + beta + béite + + + + &Restart && Update + &Atosaigh && Nuashonraigh + + + + &Check for Update now + Seiceáil le haghaidh Nuashonrú anois + + + + Advanced + Casta + + + + Ask for confirmation before synchronizing new folders larger than + Iarr deimhniú sula ndéantar fillteáin nua atá níos mó ná a shioncronú + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + Fógra a thabhairt nuair a fhásann fillteáin sioncronaithe níos mó ná an teorainn shonraithe + + + + Automatically disable synchronisation of folders that overcome limit + Díchumasaigh go huathoibríoch sioncrónú fillteán a sháraíonn teorainn + Ask for confirmation before synchronizing external storages @@ -2982,11 +3079,6 @@ De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n Create Debug Archive Cruthaigh Cartlann Dífhabhtaithe - - - &Check for Update now - Seiceáil le haghaidh Nuashonrú anois - Info @@ -3008,9 +3100,9 @@ De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n Nuashonraigh cainéal - - &Restart && Update - &Atosaigh && Nuashonraigh + + Show sync folders in &Explorer's Navigation Pane + Taispeáin fillteáin shioncronaithe i bPána Nascleanúna &Explorer @@ -3032,21 +3124,6 @@ De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n Legal Notice Fógra Dlíthiúil - - - General Settings - Socruithe Ginearálta - - - - For System Tray - Le haghaidh Tráidire Córais - - - - Show sync folders in &Explorer's Navigation Pane - Taispeáin fillteáin shioncronaithe i bPána Nascleanúna &Explorer - Use &monochrome icons @@ -3072,6 +3149,11 @@ De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n Server notifications that require attention. Fógraí freastalaí a dteastaíonn aird uathu. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3082,18 +3164,6 @@ De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n You cannot disable autostart because system-wide autostart is enabled. Ní féidir leat uath-thús a dhíchumasú toisc go bhfuil uath-tús ar fud an chórais cumasaithe. - - - - stable - cobhsaí - - - - - beta - béite - Change update channel? @@ -3120,6 +3190,14 @@ Tabhair faoi deara nach roghnaíonn sé seo ach na huasghráduithe linne a bhain + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + - fiontar: tá leaganacha cobhsaí ann do chustaiméirí. + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3131,15 +3209,22 @@ Downgrading versions is not possible immediately: changing from beta to stable m Ní féidir leaganacha a íosghrádú láithreach: ciallaíonn athrú ó beta go cobhsaí fanacht leis an leagan cobhsaí nua. - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - fiontar: tá leaganacha cobhsaí ann do chustaiméirí. - + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + Cinneann an cainéal cé na huasghráduithe a thairgfear le suiteáil: +- cobhsaí: tá leaganacha tástálaithe a mheastar a bheith iontaofa +- béite: tá leaganacha ann le gnéithe nua nach féidir a thástáil go críochnúil +- laethúil: tá leaganacha a cruthaíodh go laethúil amháin le haghaidh tástála agus forbartha +% 1 +Ní féidir leaganacha a íosghrádú láithreach: ciallaíonn athrú ó beta go cobhsaí fanacht leis an leagan cobhsaí nua. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3154,22 +3239,7 @@ Ní féidir leaganacha a íosghrádú láithreach: ciallaíonn athrú ó chobhsa Cainéal nuashonraithe á athrú? - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Cinneann an cainéal cé na huasghráduithe a thairgfear le suiteáil: -- cobhsaí: tá leaganacha tástálaithe a mheastar a bheith iontaofa -- béite: tá leaganacha ann le gnéithe nua nach féidir a thástáil go críochnúil -- laethúil: tá leaganacha a cruthaíodh go laethúil amháin le haghaidh tástála agus forbartha -% 1 -Ní féidir leaganacha a íosghrádú láithreach: ciallaíonn athrú ó beta go cobhsaí fanacht leis an leagan cobhsaí nua. - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5092,6 +5162,11 @@ D'fhreagair an freastalaí le hearráid: % 2 Resharing this folder is not allowed Ní cheadaítear an fillteán seo a athroinnt + + + Copy internal link + Cóipeáil an nasc inmheánach + Copy secure file drop link @@ -5103,21 +5178,16 @@ D'fhreagair an freastalaí le hearráid: % 2 Copy public link Cóipeáil nasc poiblí - - - Copy secure filedrop link - Cóipeáil nasc slán comhad drop - - - - Copy internal link - Cóipeáil an nasc inmheánach - Encrypt Criptigh + + + Copy secure filedrop link + Cóipeáil nasc slán comhad drop + Lock file @@ -6401,11 +6471,6 @@ D'fhreagair an freastalaí le hearráid: % 2 Create a new share link Cruthaigh nasc comhroinnte nua - - - Copy share link location - Cóipeáil suíomh naisc comhroinnte - Copied! @@ -6416,6 +6481,11 @@ D'fhreagair an freastalaí le hearráid: % 2 Share options Comhroinn roghanna + + + Copy share link location + Cóipeáil suíomh naisc comhroinnte + ShareDetailsPage @@ -6624,6 +6694,24 @@ D'fhreagair an freastalaí le hearráid: % 2 Roghchlár grúpa úsáideoirí agus fillteáin áitiúla + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6632,6 +6720,14 @@ D'fhreagair an freastalaí le hearráid: % 2 Cuardaigh comhaid, teachtaireachtaí, imeachtaí… + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_gl.ts b/translations/client_gl.ts index c510e59bf5f7f..8fbe263dcd61f 100644 --- a/translations/client_gl.ts +++ b/translations/client_gl.ts @@ -166,6 +166,66 @@ Versión do servidor + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Engadir unha conta nova + + + Unified search results list + Lista de resultados da busca unificada + Settings @@ -456,6 +521,11 @@ Current account avatar Avatar actual da conta + + + New activities + Novas actividades + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser Abrir %1 nun navegador - - - Unified search results list - Lista de resultados da busca unificada - - - - New activities - Novas actividades - OCC::AbstractNetworkJob @@ -2879,37 +2939,21 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do OCC::GeneralSettings - - - Advanced - Avanzado - About Sobre - - - Ask for confirmation before synchronizing new folders larger than - Preguntar se se queren sincronizar novos cartafoles de máis de - Legal notice Aviso legal - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Usar iconas &monocromáticas + + General Settings + Axustes xerais @@ -2917,19 +2961,29 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do &Executar ao iniciar o sistema - - Show Server &Notifications - Amosar as &notificacións do servidor + + Show Call Notifications + Amosar as notificacións de chamadas - - Notify when synchronised folders grow larger than specified limit - Notificar cando os cartafoles sincronizados superen o límite especificado + + For System Tray + Para a área de notificación + + + + Use &Monochrome Icons + Usar iconas &monocromáticas - Show Call Notifications - Amosar as notificacións de chamadas + Show Chat Notifications + + + + + Show Server &Notifications + Amosar as &notificacións do servidor @@ -2941,16 +2995,59 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do &Automatically check for Updates Comprobar automaticamente as &actualizacións - - - Automatically disable synchronisation of folders that overcome limit - Desactivar automaticamente a sincronización de cartafoles que superan o límite - &Channel &Canle + + + + stable + estábel + + + + + beta + beta + + + + &Restart && Update + &Reiniciar e actualizar + + + + &Check for Update now + &Comprobar agora se hai actualizacións + + + + Advanced + Avanzado + + + + Ask for confirmation before synchronizing new folders larger than + Preguntar se se queren sincronizar novos cartafoles de máis de + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + Notificar cando os cartafoles sincronizados superen o límite especificado + + + + Automatically disable synchronisation of folders that overcome limit + Desactivar automaticamente a sincronización de cartafoles que superan o límite + Ask for confirmation before synchronizing external storages @@ -2982,11 +3079,6 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do Create Debug Archive Crear arquivo de depuración - - - &Check for Update now - &Comprobar agora se hai actualizacións - Info @@ -3008,9 +3100,9 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do Actualizar a canle - - &Restart && Update - &Reiniciar e actualizar + + Show sync folders in &Explorer's Navigation Pane + Amosar os cartafoles sincronizados no &panel de navegación do navegador @@ -3032,21 +3124,6 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do Legal Notice Aviso legal - - - General Settings - Axustes xerais - - - - For System Tray - Para a área de notificación - - - - Show sync folders in &Explorer's Navigation Pane - Amosar os cartafoles sincronizados no &panel de navegación do navegador - Use &monochrome icons @@ -3072,6 +3149,11 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do Server notifications that require attention. Notificacións do servidor que precisan atención. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3082,18 +3164,6 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do You cannot disable autostart because system-wide autostart is enabled. Non pode desactivar o inicio automático porque o inicio automático de todo o sistema está activado. - - - - stable - estábel - - - - - beta - beta - Change update channel? @@ -3120,6 +3190,14 @@ Teña en conta que isto só selecciona de que grupo se toman as anovacións e qu + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + – empresarial: contén versións estábeis para os clientes. + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3131,15 +3209,22 @@ Downgrading versions is not possible immediately: changing from beta to stable m Non é posíbel reverter versións inmediatamente: cambiar de beta a estábel implica agardar pola nova versión estábel. - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - – empresarial: contén versións estábeis para os clientes. - + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + A canle determina que actualizacións se forneceran para instalar: +– estábel: contén versións probadas consideradas fiábeis +– beta: contén versións con novas funcionalidades que poden non ser probadas a fondo +– diario: contén versións creadas diariamente só para probas e desenvolvemento +%1 +Non é posíbel reverter versións inmediatamente: cambiar de beta a estábel significa agardar pola nova versión estábel. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3154,22 +3239,7 @@ Non é posíbel reverter as versións inmediatamente: cambiar de estábel establ Quere cambiar a canle de actualización? - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - A canle determina que actualizacións se forneceran para instalar: -– estábel: contén versións probadas consideradas fiábeis -– beta: contén versións con novas funcionalidades que poden non ser probadas a fondo -– diario: contén versións creadas diariamente só para probas e desenvolvemento -%1 -Non é posíbel reverter versións inmediatamente: cambiar de beta a estábel significa agardar pola nova versión estábel. - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5091,6 +5161,11 @@ O servidor respondeu co erro: %2 Resharing this folder is not allowed Non está permitido volver compartir este cartafol + + + Copy internal link + Copiar a ligazón interna + Copy secure file drop link @@ -5102,21 +5177,16 @@ O servidor respondeu co erro: %2 Copy public link Copiar a ligazón pública - - - Copy secure filedrop link - Copiar a ligazón para entrega segura de ficheiros (filedrop) - - - - Copy internal link - Copiar a ligazón interna - Encrypt Cifrar + + + Copy secure filedrop link + Copiar a ligazón para entrega segura de ficheiros (filedrop) + Lock file @@ -6400,11 +6470,6 @@ O servidor respondeu co erro: %2 Create a new share link Crear unha nova ligazón para compartir - - - Copy share link location - Copiar a localización da ligazón para compartir - Copied! @@ -6415,6 +6480,11 @@ O servidor respondeu co erro: %2 Share options Opcións de compartir + + + Copy share link location + Copiar a localización da ligazón para compartir + ShareDetailsPage @@ -6623,6 +6693,24 @@ O servidor respondeu co erro: %2 Menú de grupos de usuarios e cartafoles locais + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6631,6 +6719,14 @@ O servidor respondeu co erro: %2 Buscar ficheiros, mensaxes, eventos… + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_he.ts b/translations/client_he.ts index 227400bc17bd6..62069a5ffa8e8 100644 --- a/translations/client_he.ts +++ b/translations/client_he.ts @@ -166,6 +166,66 @@ + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2854,58 +2914,52 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - מתקדם - About על אודות - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice הצהרה משפטית - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - מ״ב - - - - Use &Monochrome Icons - להשתמש בסמלים בצבע &אחיד + + General Settings + הגדרות כלליות &Launch on System Startup הפעלה ב&עליית המערכת - - - Show Server &Notifications - הצגת ה&תראות שרת - - Notify when synchronised folders grow larger than specified limit + Show Call Notifications + + + For System Tray + למגש המערכת + + + + Use &Monochrome Icons + להשתמש בסמלים בצבע &אחיד + - Show Call Notifications + Show Chat Notifications + + + Show Server &Notifications + הצגת ה&תראות שרת + Updates @@ -2916,16 +2970,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates לחפש עדכונים &אוטומטית - - - Automatically disable synchronisation of folders that overcome limit - - &Channel &ערוץ + + + + stable + + + + + + beta + + + + + &Restart && Update + ה&פעלה מחדש ועדכון + + + + &Check for Update now + ל&חפש עדכונים כעת + + + + Advanced + מתקדם + + + + 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 @@ -2957,11 +3054,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive - - - &Check for Update now - ל&חפש עדכונים כעת - Info @@ -2983,9 +3075,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - ה&פעלה מחדש ועדכון + + Show sync folders in &Explorer's Navigation Pane + @@ -3007,21 +3099,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - הגדרות כלליות - - - - For System Tray - למגש המערכת - - - - Show sync folders in &Explorer's Navigation Pane - - Use &monochrome icons @@ -3047,6 +3124,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. התראות שרת שדורשות תשומת לב. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3057,18 +3139,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. - - - - stable - - - - - - beta - - Change update channel? @@ -3093,6 +3163,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3101,14 +3178,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3121,17 +3201,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5039,6 +5109,11 @@ Server replied with error: %2 Resharing this folder is not allowed + + + Copy internal link + העתקת קישור פנימי + Copy secure file drop link @@ -5051,18 +5126,13 @@ Server replied with error: %2 העתקת קישור ציבורי - - Copy secure filedrop link + + Encrypt - - Copy internal link - העתקת קישור פנימי - - - - Encrypt + + Copy secure filedrop link @@ -6348,11 +6418,6 @@ Server replied with error: %2 Create a new share link - - - Copy share link location - - Copied! @@ -6363,6 +6428,11 @@ Server replied with error: %2 Share options + + + Copy share link location + + ShareDetailsPage @@ -6571,6 +6641,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6579,6 +6667,14 @@ Server replied with error: %2 חיפוש קבצים, הודעות, אירועים ... + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_hr.ts b/translations/client_hr.ts index 58c84fcb3b4d6..a2c0f16b2f660 100644 --- a/translations/client_hr.ts +++ b/translations/client_hr.ts @@ -166,6 +166,66 @@ + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2868,58 +2928,52 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Napredno - About Informacije - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice Pravna obavijest - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Koristi jednobojne ikone + + General Settings + Opće postavke &Launch on System Startup Pokreni pri pokretanju sustava - - - Show Server &Notifications - Prikaži poslužitelj i obavijesti - - Notify when synchronised folders grow larger than specified limit + Show Call Notifications + + + For System Tray + Za ladicu sustava + + + + Use &Monochrome Icons + Koristi jednobojne ikone + - Show Call Notifications + Show Chat Notifications + + + Show Server &Notifications + Prikaži poslužitelj i obavijesti + Updates @@ -2930,16 +2984,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates i automatski provjeri za ažuriranja - - - Automatically disable synchronisation of folders that overcome limit - - &Channel &Channel + + + + stable + stabilna + + + + + beta + beta + + + + &Restart && Update + Ponovno pokreni i ažuriraj + + + + &Check for Update now + i provjeri za ažuriranja + + + + Advanced + Napredno + + + + Ask for confirmation before synchronizing new folders larger than + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit + + Ask for confirmation before synchronizing external storages @@ -2971,11 +3068,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Stvori arhivu otklanjanja pogrešaka - - - &Check for Update now - i provjeri za ažuriranja - Info @@ -2997,9 +3089,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - Ponovno pokreni i ažuriraj + + Show sync folders in &Explorer's Navigation Pane + Prikaži mape za sinkronizaciju u navigacijskom oknu preglednika datoteka @@ -3021,21 +3113,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Opće postavke - - - - For System Tray - Za ladicu sustava - - - - Show sync folders in &Explorer's Navigation Pane - Prikaži mape za sinkronizaciju u navigacijskom oknu preglednika datoteka - Use &monochrome icons @@ -3061,6 +3138,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Obavijesti poslužitelja koje zahtijevaju pažnju. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3071,18 +3153,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Ne možete onemogućiti automatsko pokretanje jer je omogućeno automatsko pokretanje na razini cijelog sustava. - - - - stable - stabilna - - - - - beta - beta - Change update channel? @@ -3109,6 +3179,13 @@ Imajte na umu da se ovime odabire samo kategorija iz koje dolaze nadogradnje i d + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3117,14 +3194,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3137,17 +3217,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5066,6 +5136,11 @@ Server replied with error: %2 Resharing this folder is not allowed Ponovno dijeljenje ove mape nije dopušteno + + + Copy internal link + Kopiraj internu poveznicu + Copy secure file drop link @@ -5078,18 +5153,13 @@ Server replied with error: %2 Kopiraj javnu poveznicu - - Copy secure filedrop link + + Encrypt - - Copy internal link - Kopiraj internu poveznicu - - - - Encrypt + + Copy secure filedrop link @@ -6375,11 +6445,6 @@ Server replied with error: %2 Create a new share link - - - Copy share link location - - Copied! @@ -6390,6 +6455,11 @@ Server replied with error: %2 Share options + + + Copy share link location + + ShareDetailsPage @@ -6598,6 +6668,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6606,6 +6694,14 @@ Server replied with error: %2 Traži datoteke, poruke, događaje… + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_hu.ts b/translations/client_hu.ts index 0ebae384c4916..9ac4763d9d6d2 100644 --- a/translations/client_hu.ts +++ b/translations/client_hu.ts @@ -166,6 +166,66 @@ Kiszolgálóverzió + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Új fiók hozzáadása + + + Unified search results list + Egyesített keresési találatlista + Settings @@ -456,6 +521,11 @@ Current account avatar Jelenlegi fiókprofilkép + + + New activities + Új tevékenységek + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser A(z) %1 megnyitása böngészőben - - - Unified search results list - Egyesített keresési találatlista - - - - New activities - Új tevékenységek - OCC::AbstractNetworkJob @@ -2870,37 +2930,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Speciális - About Névjegy - - - Ask for confirmation before synchronizing new folders larger than - Megerősítés kérése az ennél nagyobb új mappák szinkronizálása előtt: - Legal notice Jogi nyilatkozat - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - &Monokróm ikonok használata + + General Settings + Általános beállítások @@ -2908,19 +2952,29 @@ Alternatively, you can restore all deleted files by downloading them from the se &Indítás a rendszerrel együtt - - Show Server &Notifications - Kiszolgálóé&rtesítések megjelenítése + + Show Call Notifications + Hívásértesítések megjelenítése - - Notify when synchronised folders grow larger than specified limit - Értesítés, ha a szinkronizált mappák a megadott határértéknél nagyobbra nőnek + + For System Tray + Rendszertálcára + + + + Use &Monochrome Icons + &Monokróm ikonok használata - Show Call Notifications - Hívásértesítések megjelenítése + Show Chat Notifications + + + + + Show Server &Notifications + Kiszolgálóé&rtesítések megjelenítése @@ -2932,16 +2986,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates Frissítések &automatikus keresése - - - Automatically disable synchronisation of folders that overcome limit - - &Channel &Csatorna + + + + stable + stabil + + + + + beta + béta + + + + &Restart && Update + Új&raindítás és frissítés + + + + &Check for Update now + Frissítés &ellenőrzése most + + + + Advanced + Speciális + + + + Ask for confirmation before synchronizing new folders larger than + Megerősítés kérése az ennél nagyobb új mappák szinkronizálása előtt: + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + Értesítés, ha a szinkronizált mappák a megadott határértéknél nagyobbra nőnek + + + + Automatically disable synchronisation of folders that overcome limit + + Ask for confirmation before synchronizing external storages @@ -2973,11 +3070,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Hibakeresési archívum létrehozása - - - &Check for Update now - Frissítés &ellenőrzése most - Info @@ -2999,9 +3091,9 @@ Alternatively, you can restore all deleted files by downloading them from the se Frissítési csatorna - - &Restart && Update - Új&raindítás és frissítés + + Show sync folders in &Explorer's Navigation Pane + Szinkronizálási mappák megjelenítése az &Intéző navigációs ablaktábláján @@ -3023,21 +3115,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice Jogi információk - - - General Settings - Általános beállítások - - - - For System Tray - Rendszertálcára - - - - Show sync folders in &Explorer's Navigation Pane - Szinkronizálási mappák megjelenítése az &Intéző navigációs ablaktábláján - Use &monochrome icons @@ -3063,6 +3140,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Kiszolgálóértesítések, melyek a figyelmét kérik. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3073,18 +3155,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Az automatikus indítást nem tilthatja le, mert az egész rendszerre kiterjedő automatikus indítás engedélyezett. - - - - stable - stabil - - - - - beta - béta - Change update channel? @@ -3111,6 +3181,13 @@ Ne feledje, hogy ez csak azt választja ki, hogy a frissítések milyen készlet + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3119,14 +3196,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3139,17 +3219,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp Módosítja a frissítési csatornát? - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5071,6 +5141,11 @@ A kiszolgáló hibával válaszolt: %2 Resharing this folder is not allowed A mappa továbbosztása nem megengedett + + + Copy internal link + Belső hivatkozás másolása + Copy secure file drop link @@ -5082,21 +5157,16 @@ A kiszolgáló hibával válaszolt: %2 Copy public link Nyilvános hivatkozás másolása - - - Copy secure filedrop link - Biztonságos fájllerakat-hivatkozás másolása - - - - Copy internal link - Belső hivatkozás másolása - Encrypt Titkosítás + + + Copy secure filedrop link + Biztonságos fájllerakat-hivatkozás másolása + Lock file @@ -6380,11 +6450,6 @@ A kiszolgáló hibával válaszolt: %2 Create a new share link Új megosztási hivatkozás létrehozása - - - Copy share link location - Megosztási hivatkozás helyének másolása - Copied! @@ -6395,6 +6460,11 @@ A kiszolgáló hibával válaszolt: %2 Share options Megosztási beállítások + + + Copy share link location + Megosztási hivatkozás helyének másolása + ShareDetailsPage @@ -6603,6 +6673,24 @@ A kiszolgáló hibával válaszolt: %2 Felhasználó csoportmappák és helyi mappák menüje + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6611,6 +6699,14 @@ A kiszolgáló hibával válaszolt: %2 Fájlok, üzenetek, események keresése… + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_is.ts b/translations/client_is.ts index 38dfbd29af936..78b6c5785a5ac 100644 --- a/translations/client_is.ts +++ b/translations/client_is.ts @@ -166,6 +166,66 @@ Útgáfa á þjóni + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2862,58 +2922,52 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Ítarlegt - About Um hugbúnaðinn - - - Ask for confirmation before synchronizing new folders larger than - Biðja um staðfestingu áður en samstilltar eru nýjar möppur stærri en - Legal notice Lagaleg atriði - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Nota einlitar tákn&myndir + + General Settings + Almennar stillingar &Launch on System Startup Ræsa þegar &kveikt á vél - - - Show Server &Notifications - &Birta tilkynningar frá þjóni - - Notify when synchronised folders grow larger than specified limit + Show Call Notifications + + + For System Tray + Fyrir kerfisbakka + + + + Use &Monochrome Icons + Nota einlitar tákn&myndir + - Show Call Notifications + Show Chat Notifications + + + Show Server &Notifications + &Birta tilkynningar frá þjóni + Updates @@ -2924,16 +2978,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates Leit&a sjálfvirkt að uppfærslum - - - Automatically disable synchronisation of folders that overcome limit - - &Channel &Rás + + + + stable + stöðug + + + + + beta + beta-prófunarútgáfa + + + + &Restart && Update + Endu&rræsa && uppfæra... + + + + &Check for Update now + At&huga núna með uppfærslu + + + + Advanced + Ítarlegt + + + + Ask for confirmation before synchronizing new folders larger than + Biðja um staðfestingu áður en samstilltar eru nýjar möppur stærri en + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit + + Ask for confirmation before synchronizing external storages @@ -2965,11 +3062,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Búa til safnskrá til villuleitar - - - &Check for Update now - At&huga núna með uppfærslu - Info @@ -2991,9 +3083,9 @@ Alternatively, you can restore all deleted files by downloading them from the se Uppfærslurás - - &Restart && Update - Endu&rræsa && uppfæra... + + Show sync folders in &Explorer's Navigation Pane + @@ -3015,21 +3107,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice Lagaleg atriði - - - General Settings - Almennar stillingar - - - - For System Tray - Fyrir kerfisbakka - - - - Show sync folders in &Explorer's Navigation Pane - - Use &monochrome icons @@ -3055,6 +3132,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Tilkynningar frá þjóni sem krefjast athugunar. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3065,18 +3147,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. - - - - stable - stöðug - - - - - beta - beta-prófunarútgáfa - Change update channel? @@ -3101,6 +3171,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3109,14 +3186,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3129,17 +3209,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5047,6 +5117,11 @@ Server replied with error: %2 Resharing this folder is not allowed Endurdeiling þessarar möppu er ekki leyfð + + + Copy internal link + Afrita innri tengil + Copy secure file drop link @@ -5058,21 +5133,16 @@ Server replied with error: %2 Copy public link Afrita opinberan tengil - - - Copy secure filedrop link - - - - - Copy internal link - Afrita innri tengil - Encrypt Dulrita + + + Copy secure filedrop link + + Lock file @@ -6357,11 +6427,6 @@ Server replied with error: %2 Create a new share link Búa til nýjan tengil á sameign - - - Copy share link location - Afrita staðsetningu deilingartengils - Copied! @@ -6372,6 +6437,11 @@ Server replied with error: %2 Share options Valkostir sameigna + + + Copy share link location + Afrita staðsetningu deilingartengils + ShareDetailsPage @@ -6580,6 +6650,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6588,6 +6676,14 @@ Server replied with error: %2 Leita í skrám, skilaboðum, atburðum … + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_it.ts b/translations/client_it.ts index 3d345df66fe08..b06838f3b14c7 100644 --- a/translations/client_it.ts +++ b/translations/client_it.ts @@ -166,6 +166,66 @@ Versione del server + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Aggiungi nuovo account + + + Unified search results list + Elenco dei risultati di ricerca unificato + Settings @@ -456,6 +521,11 @@ Current account avatar Avatar account corrente + + + New activities + Nuove attività + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser Apri %1 nel browser - - - Unified search results list - Elenco dei risultati di ricerca unificato - - - - New activities - Nuove attività - OCC::AbstractNetworkJob @@ -2880,37 +2940,21 @@ In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli da OCC::GeneralSettings - - - Advanced - Avanzate - About Informazioni - - - Ask for confirmation before synchronizing new folders larger than - Chiedi conferma prima di sincronizzare cartelle più grandi di - Legal notice Avviso legale - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Usa icone &monocromatiche + + General Settings + Impostazioni generali @@ -2918,19 +2962,29 @@ In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli da Esegui a&ll'avvio del sistema - - Show Server &Notifications - Mostra &notifiche del server + + Show Call Notifications + Mostra notifiche di chiamata - - Notify when synchronised folders grow larger than specified limit - Notifica quando le cartelle sincronizzate crescono e superano il limite specificato + + For System Tray + Per il vassoio di sistema + + + + Use &Monochrome Icons + Usa icone &monocromatiche - Show Call Notifications - Mostra notifiche di chiamata + Show Chat Notifications + + + + + Show Server &Notifications + Mostra &notifiche del server @@ -2942,16 +2996,59 @@ In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli da &Automatically check for Updates Verific&a automaticamente la presenza di aggiornamenti. - - - Automatically disable synchronisation of folders that overcome limit - Disabilita automaticamente la sincronizzazione delle cartelle che superano il limite - &Channel &Canale + + + + stable + stabile + + + + + beta + beta + + + + &Restart && Update + &Riavvia e aggiorna + + + + &Check for Update now + Vuoi &controllare gli aggiornamenti ora? + + + + Advanced + Avanzate + + + + Ask for confirmation before synchronizing new folders larger than + Chiedi conferma prima di sincronizzare cartelle più grandi di + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + Notifica quando le cartelle sincronizzate crescono e superano il limite specificato + + + + Automatically disable synchronisation of folders that overcome limit + Disabilita automaticamente la sincronizzazione delle cartelle che superano il limite + Ask for confirmation before synchronizing external storages @@ -2983,11 +3080,6 @@ In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli da Create Debug Archive Crea archivio di debug - - - &Check for Update now - Vuoi &controllare gli aggiornamenti ora? - Info @@ -3009,9 +3101,9 @@ In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli da Canale di aggiornamento - - &Restart && Update - &Riavvia e aggiorna + + Show sync folders in &Explorer's Navigation Pane + Mostra le cartelle di sincronizzazione nel pannello di navigazione di &Explorer @@ -3033,21 +3125,6 @@ In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli da Legal Notice Note legali - - - General Settings - Impostazioni generali - - - - For System Tray - Per il vassoio di sistema - - - - Show sync folders in &Explorer's Navigation Pane - Mostra le cartelle di sincronizzazione nel pannello di navigazione di &Explorer - Use &monochrome icons @@ -3073,6 +3150,11 @@ In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli da Server notifications that require attention. Notifiche del server che richiedono attenzione. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3083,18 +3165,6 @@ In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli da You cannot disable autostart because system-wide autostart is enabled. Non puoi disabilitare l'avvio automatico poiché è abilitato l'avvio automatico a livello di sistema. - - - - stable - stabile - - - - - beta - beta - Change update channel? @@ -3119,6 +3189,14 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + - enterprise: contiene versioni stabili per i clienti. + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3130,15 +3208,22 @@ Downgrading versions is not possible immediately: changing from beta to stable m Non è possibile effettuare il downgrade delle versioni immediatamente: passare da beta a stabile significa attendere la nuova versione stabile. - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - enterprise: contiene versioni stabili per i clienti. - + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + Il canale determina quali aggiornamenti saranno offerti per l'installazione: +- stabile: contiene versioni testate considerate affidabili +- beta: contiene versioni con nuove funzionalità che potrebbero non essere testate a fondo +- giornaliero: contiene versioni create quotidianamente solo per test e sviluppo +%1 +Il downgrade delle versioni non è possibile immediatamente: passare da beta a stabile significa attendere la nuova versione stabile. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3153,22 +3238,7 @@ Il downgrade delle versioni non è possibile immediatamente: passare da stabile Vuoi cambiare canale di aggiornamento? - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Il canale determina quali aggiornamenti saranno offerti per l'installazione: -- stabile: contiene versioni testate considerate affidabili -- beta: contiene versioni con nuove funzionalità che potrebbero non essere testate a fondo -- giornaliero: contiene versioni create quotidianamente solo per test e sviluppo -%1 -Il downgrade delle versioni non è possibile immediatamente: passare da beta a stabile significa attendere la nuova versione stabile. - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5083,6 +5153,11 @@ Il server ha risposto con errore: %2 Resharing this folder is not allowed La ri-condivisione di questa cartella non è consentita + + + Copy internal link + Copia collegamento interno + Copy secure file drop link @@ -5094,21 +5169,16 @@ Il server ha risposto con errore: %2 Copy public link Copia collegamento pubblico - - - Copy secure filedrop link - Copia collegamento per il file drop sicuro - - - - Copy internal link - Copia collegamento interno - Encrypt Cifra + + + Copy secure filedrop link + Copia collegamento per il file drop sicuro + Lock file @@ -6392,11 +6462,6 @@ Il server ha risposto con errore: %2 Create a new share link Crea un nuovo collegamento di condivisione - - - Copy share link location - Copia collegamento di condivisione - Copied! @@ -6407,6 +6472,11 @@ Il server ha risposto con errore: %2 Share options Opzioni di condivisione + + + Copy share link location + Copia collegamento di condivisione + ShareDetailsPage @@ -6615,6 +6685,24 @@ Il server ha risposto con errore: %2 Menu gruppo utenti e cartelle locali + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6623,6 +6711,14 @@ Il server ha risposto con errore: %2 Cerca file, messaggi, eventi … + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_ja.ts b/translations/client_ja.ts index 1249e999aceee..91c5c89eb8476 100644 --- a/translations/client_ja.ts +++ b/translations/client_ja.ts @@ -166,6 +166,66 @@ サーバーのバージョン + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account 新しいアカウントを追加 + + + Unified search results list + 統合検索結果 + Settings @@ -456,6 +521,11 @@ Current account avatar 現在のアバター + + + New activities + 新しいアクティビティ + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser %1をブラウザーで開く - - - Unified search results list - 統合検索結果 - - - - New activities - 新しいアクティビティ - OCC::AbstractNetworkJob @@ -2880,37 +2940,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - 詳細設定 - About Nextcloud について - - - Ask for confirmation before synchronizing new folders larger than - 指定された容量を以上の新しいフォルダを同期する前に確認する。 - Legal notice 法律上の告知 - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - モノクロアイコンを使用(&M) + + General Settings + 一般設定 @@ -2918,19 +2962,29 @@ Alternatively, you can restore all deleted files by downloading them from the se システム開始時に起動(&L) - - Show Server &Notifications - サーバー通知を表示(&N) + + Show Call Notifications + トークの通知を表示 - - Notify when synchronised folders grow larger than specified limit - 同期されたフォルダのサイズが指定した上限を超えた場合に通知する + + For System Tray + システムトレイ + + + + Use &Monochrome Icons + モノクロアイコンを使用(&M) - Show Call Notifications - トークの通知を表示 + Show Chat Notifications + + + + + Show Server &Notifications + サーバー通知を表示(&N) @@ -2942,16 +2996,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates 自動的にアップデートを確認(&A) - - - Automatically disable synchronisation of folders that overcome limit - 制限を超えたフォルダの同期を自動的に無効にする - &Channel チャネル(&C) + + + + stable + 安定板 + + + + + beta + ベータ版 + + + + &Restart && Update + 再起動してアップデート(&R) + + + + &Check for Update now + 今すぐアップデートを確認(&C) + + + + Advanced + 詳細設定 + + + + Ask for confirmation before synchronizing new folders larger than + 指定された容量を以上の新しいフォルダを同期する前に確認する。 + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + 同期されたフォルダのサイズが指定した上限を超えた場合に通知する + + + + Automatically disable synchronisation of folders that overcome limit + 制限を超えたフォルダの同期を自動的に無効にする + Ask for confirmation before synchronizing external storages @@ -2983,11 +3080,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive デバッグアーカイブを作成 - - - &Check for Update now - 今すぐアップデートを確認(&C) - Info @@ -3009,9 +3101,9 @@ Alternatively, you can restore all deleted files by downloading them from the se アップデートチャネル - - &Restart && Update - 再起動してアップデート(&R) + + Show sync folders in &Explorer's Navigation Pane + エクスプローラのナビゲーションペインに同期フォルダーを表示 @@ -3033,21 +3125,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice 法的通知 - - - General Settings - 一般設定 - - - - For System Tray - システムトレイ - - - - Show sync folders in &Explorer's Navigation Pane - エクスプローラのナビゲーションペインに同期フォルダーを表示 - Use &monochrome icons @@ -3073,6 +3150,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. 注意が必要なサーバー通知を表示する + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3083,18 +3165,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. システム全体の自動起動が有効になっているため、自動起動を無効にすることはできません。 - - - - stable - 安定板 - - - - - beta - ベータ版 - Change update channel? @@ -3121,6 +3191,14 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + - enterprise: お客様向けの安定バージョンが含まれています。 + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3132,15 +3210,22 @@ Downgrading versions is not possible immediately: changing from beta to stable m バージョンのダウングレードはすぐにはできません。ベータ版から安定版への変更は、新しい安定版を待つことを意味します。 - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - enterprise: お客様向けの安定バージョンが含まれています。 - + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + チャネルは、どのアップグレードがインストールされるかを決定します: +- stable: テスト済みの信頼できるバージョン。 +- beta: 十分なテストが行われていない可能性のある新機能を含むバージョンが含まれます。 +- daily: テストと開発のためだけに毎日作成されるバージョンが含まれます。 +%1 +バージョンのダウングレードはすぐにはできません。ベータ版から安定版への変更は、新しい安定版を待つことを意味します。 - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3155,22 +3240,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp アップデートチャネルを変更しますか? - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - チャネルは、どのアップグレードがインストールされるかを決定します: -- stable: テスト済みの信頼できるバージョン。 -- beta: 十分なテストが行われていない可能性のある新機能を含むバージョンが含まれます。 -- daily: テストと開発のためだけに毎日作成されるバージョンが含まれます。 -%1 -バージョンのダウングレードはすぐにはできません。ベータ版から安定版への変更は、新しい安定版を待つことを意味します。 - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5091,6 +5161,11 @@ Server replied with error: %2 Resharing this folder is not allowed このフォルダーの再共有は許可されていません + + + Copy internal link + 内部リンクをコピー + Copy secure file drop link @@ -5102,21 +5177,16 @@ Server replied with error: %2 Copy public link 公開リンクのコピー - - - Copy secure filedrop link - セキュアファイルドロップリンク - - - - Copy internal link - 内部リンクをコピー - Encrypt 暗号化 + + + Copy secure filedrop link + セキュアファイルドロップリンク + Lock file @@ -6400,11 +6470,6 @@ Server replied with error: %2 Create a new share link 新しい共有リンクを作成する - - - Copy share link location - 共有リンクの場所をコピー - Copied! @@ -6415,6 +6480,11 @@ Server replied with error: %2 Share options 共有オプション + + + Copy share link location + 共有リンクの場所をコピー + ShareDetailsPage @@ -6623,6 +6693,24 @@ Server replied with error: %2 ユーザグループとローカルフォルダメニュー + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6631,6 +6719,14 @@ Server replied with error: %2 ファイルやメッセージ、イベントを検索 + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_ko.ts b/translations/client_ko.ts index 84e73dcad831a..ef8c181d6e16c 100644 --- a/translations/client_ko.ts +++ b/translations/client_ko.ts @@ -166,6 +166,66 @@ 서버 버전 + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account 새 계정 추가 + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2875,37 +2935,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - 고급 - About 정보 - - - Ask for confirmation before synchronizing new folders larger than - 다음보다 큰 폴더를 동기화할 때 확인을 요청 - Legal notice 법적 고지 - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - 흑백 아이콘 사용 + + General Settings + 일반 설정 @@ -2913,19 +2957,29 @@ Alternatively, you can restore all deleted files by downloading them from the se 시스템 시작 시 실행 - - Show Server &Notifications - 서버 알림 표시 + + Show Call Notifications + 통화 알림 표시 - - Notify when synchronised folders grow larger than specified limit - 동기화된 폴더가 지정된 크기보다 더 커질 때 알림 + + For System Tray + 시스템 트레이 + + + + Use &Monochrome Icons + 흑백 아이콘 사용 - Show Call Notifications - 통화 알림 표시 + Show Chat Notifications + + + + + Show Server &Notifications + 서버 알림 표시 @@ -2937,16 +2991,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &자동으로 업데이트 확인 - - - Automatically disable synchronisation of folders that overcome limit - 크기 제한을 넘는 폴더의 동기화를 자동으로 중단 - &Channel &채널 + + + + stable + 안정판 + + + + + beta + 베타 + + + + &Restart && Update + 업데이트 재시작 + + + + &Check for Update now + &지금 업데이트 확인 + + + + Advanced + 고급 + + + + Ask for confirmation before synchronizing new folders larger than + 다음보다 큰 폴더를 동기화할 때 확인을 요청 + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + 동기화된 폴더가 지정된 크기보다 더 커질 때 알림 + + + + Automatically disable synchronisation of folders that overcome limit + 크기 제한을 넘는 폴더의 동기화를 자동으로 중단 + Ask for confirmation before synchronizing external storages @@ -2978,11 +3075,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive 디버그 아카이브 만들기 - - - &Check for Update now - &지금 업데이트 확인 - Info @@ -3004,9 +3096,9 @@ Alternatively, you can restore all deleted files by downloading them from the se 업데이트 채널 - - &Restart && Update - 업데이트 재시작 + + Show sync folders in &Explorer's Navigation Pane + 탐색기의 탐색 창에 동기화 폴더 표시 @@ -3028,21 +3120,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice 법적 고지 - - - General Settings - 일반 설정 - - - - For System Tray - 시스템 트레이 - - - - Show sync folders in &Explorer's Navigation Pane - 탐색기의 탐색 창에 동기화 폴더 표시 - Use &monochrome icons @@ -3068,6 +3145,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. 주의가 필요한 서버 알림 + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3078,18 +3160,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. 시스템 단위 자동 시작이 활성화되어 있으므로 자동 시작을 비활성화할 수 없습니다. - - - - stable - 안정판 - - - - - beta - 베타 - Change update channel? @@ -3116,6 +3186,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3124,14 +3201,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3144,17 +3224,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5076,6 +5146,11 @@ Server replied with error: %2 Resharing this folder is not allowed 이 폴더를 다시 공유할 수 없습니다. + + + Copy internal link + 내부 링크 복사 + Copy secure file drop link @@ -5087,21 +5162,16 @@ Server replied with error: %2 Copy public link 공개 링크 복사 - - - Copy secure filedrop link - 안전한 파일드롭 링크 복사 - - - - Copy internal link - 내부 링크 복사 - Encrypt 암호화 + + + Copy secure filedrop link + 안전한 파일드롭 링크 복사 + Lock file @@ -6385,11 +6455,6 @@ Server replied with error: %2 Create a new share link 새 공유 링크 만들기 - - - Copy share link location - 공유 링크 위치 복사 - Copied! @@ -6400,6 +6465,11 @@ Server replied with error: %2 Share options 공유 옵션 + + + Copy share link location + 공유 링크 위치 복사 + ShareDetailsPage @@ -6608,6 +6678,24 @@ Server replied with error: %2 사용자 그룹 및 로컬 폴더 메뉴 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6616,6 +6704,14 @@ Server replied with error: %2 파일, 메시지, 이벤트 검색… + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_lt_LT.ts b/translations/client_lt_LT.ts index 17816b7502dab..9fcbc19ee98e8 100644 --- a/translations/client_lt_LT.ts +++ b/translations/client_lt_LT.ts @@ -166,6 +166,66 @@ Serverio versija + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Pridėti naują paskyrą + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + Naujos veiklos + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser Atverti %1 naršyklėje - - - Unified search results list - - - - - New activities - Naujos veiklos - OCC::AbstractNetworkJob @@ -2856,58 +2916,52 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Papildoma - About Apie - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice Teisinis pranešimas - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Naudoti &vienspalves piktogramas + + General Settings + Bendri nustatymai &Launch on System Startup &Paleisti įjungiant kompiuterį - - - Show Server &Notifications - Rodyti serverio pra&nešimus - - Notify when synchronised folders grow larger than specified limit + Show Call Notifications + + + For System Tray + Sistemos dėklui + + + + Use &Monochrome Icons + Naudoti &vienspalves piktogramas + - Show Call Notifications + Show Chat Notifications + + + Show Server &Notifications + Rodyti serverio pra&nešimus + Updates @@ -2918,16 +2972,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Automatiškai tikrinti, ar nėra atnaujinimų - - - Automatically disable synchronisation of folders that overcome limit - - &Channel &Kanalas + + + + stable + stabilus + + + + + beta + beta + + + + &Restart && Update + &Paleisti iš naujo ir atnaujinti + + + + &Check for Update now + &Tikrinti dabar, ar nėra atnaujinimų + + + + Advanced + Papildoma + + + + Ask for confirmation before synchronizing new folders larger than + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit + + Ask for confirmation before synchronizing external storages @@ -2959,11 +3056,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Sukurti derinimo archyvą - - - &Check for Update now - &Tikrinti dabar, ar nėra atnaujinimų - Info @@ -2985,9 +3077,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - &Paleisti iš naujo ir atnaujinti + + Show sync folders in &Explorer's Navigation Pane + Rodyti sinchronizavimo aplankus failų naršyklės naršymo srityje @@ -3009,21 +3101,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Bendri nustatymai - - - - For System Tray - Sistemos dėklui - - - - Show sync folders in &Explorer's Navigation Pane - Rodyti sinchronizavimo aplankus failų naršyklės naršymo srityje - Use &monochrome icons @@ -3049,6 +3126,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Serverio perspėjimai, reikalaujantys imtis veiksmų. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3059,18 +3141,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. - - - - stable - stabilus - - - - - beta - beta - Change update channel? @@ -3095,6 +3165,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3103,14 +3180,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3123,17 +3203,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5043,6 +5113,11 @@ Server replied with error: %2 Resharing this folder is not allowed + + + Copy internal link + Kopijuoti vidinę nuorodą + Copy secure file drop link @@ -5054,21 +5129,16 @@ Server replied with error: %2 Copy public link Kopijuoti viešąją nuorodą - - - Copy secure filedrop link - - - - - Copy internal link - Kopijuoti vidinę nuorodą - Encrypt Šifruoti + + + Copy secure filedrop link + + Lock file @@ -6352,11 +6422,6 @@ Server replied with error: %2 Create a new share link - - - Copy share link location - - Copied! @@ -6367,6 +6432,11 @@ Server replied with error: %2 Share options Bendrinimo parinktys + + + Copy share link location + + ShareDetailsPage @@ -6575,6 +6645,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6583,6 +6671,14 @@ Server replied with error: %2 + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_lv.ts b/translations/client_lv.ts index c4a1a7edaa93e..c4015799f04db 100644 --- a/translations/client_lv.ts +++ b/translations/client_lv.ts @@ -166,6 +166,66 @@ Servera versija + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -1032,7 +1092,7 @@ Vienīgā priekšrocība, izslēdzot virtuālo datņu atbalstu, ir tas, ka atkal Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - Pieeja aizliedza serveris. Lai pārbaudītu, vai jums ir pareiza pieeja, <a href="%1">noklikšķiniet šeit</a>, lai piekļūtu pakalpojumam ar savu pārlūkprogrammu. + Serveris aizliedza piekļuvi. Lai pārbaudītu, vai ir atbilstoša piekļuve, <a href="%1">jāklikšķina šeit</a>, lai piekļūtu pakalpojumam ar pārlūku. @@ -2865,56 +2925,50 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Papildus - About Par - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB + + General Settings + Vispārīgie iestatījumi - - Use &Monochrome Icons + + &Launch on System Startup - - &Launch on System Startup + + Show Call Notifications - - Show Server &Notifications + + For System Tray + Sistēmas ikonjoslai + + + + Use &Monochrome Icons - Notify when synchronised folders grow larger than specified limit + Show Chat Notifications - - Show Call Notifications + + Show Server &Notifications @@ -2928,13 +2982,56 @@ Alternatively, you can restore all deleted files by downloading them from the se - - Automatically disable synchronisation of folders that overcome limit + + &Channel - - &Channel + + + stable + stabilā + + + + + beta + beta + + + + &Restart && Update + &Restartēt && Atjaunināt + + + + &Check for Update now + &Pārbaudīt atjauninājumu tagad + + + + Advanced + Papildus + + + + Ask for confirmation before synchronizing new folders larger than + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit @@ -2968,11 +3065,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Izveidot atkļūdošanas arhīvu - - - &Check for Update now - &Pārbaudīt atjauninājumu tagad - Info @@ -2994,9 +3086,9 @@ Alternatively, you can restore all deleted files by downloading them from the se Atjaunināšanas kanāls - - &Restart && Update - &Restartēt && Atjaunināt + + Show sync folders in &Explorer's Navigation Pane + Rādīt sinhronizācijas mapes &Pārlūka navigācijas panelī @@ -3018,21 +3110,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice Juridiskais paziņojums - - - General Settings - Vispārīgie iestatījumi - - - - For System Tray - Sistēmas ikonjoslai - - - - Show sync folders in &Explorer's Navigation Pane - Rādīt sinhronizācijas mapes &Pārlūka navigācijas panelī - Use &monochrome icons @@ -3058,6 +3135,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Serveru paziņojumi, kas prasa uzmanību. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3068,18 +3150,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Jūs nevarat atspējot automātisko startu, jo sistēmas līmeņa automātiskais starts ir iespējots. - - - - stable - stabilā - - - - - beta - beta - Change update channel? @@ -3106,6 +3176,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3114,14 +3191,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3134,17 +3214,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5054,6 +5124,11 @@ Server replied with error: %2 Resharing this folder is not allowed + + + Copy internal link + + Copy secure file drop link @@ -5066,18 +5141,13 @@ Server replied with error: %2 - - Copy secure filedrop link - - - - - Copy internal link + + Encrypt - - Encrypt + + Copy secure filedrop link @@ -6361,11 +6431,6 @@ Server replied with error: %2 Create a new share link Izveidojiet jaunu kopīgošanas saiti - - - Copy share link location - Kopēt koplietošanas saiti - Copied! @@ -6376,6 +6441,11 @@ Server replied with error: %2 Share options koplietošanas iestatījumi + + + Copy share link location + Kopēt koplietošanas saiti + ShareDetailsPage @@ -6584,6 +6654,24 @@ Server replied with error: %2 Lietotāja grupas un lokālo mapju izvēlne + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6592,6 +6680,14 @@ Server replied with error: %2 Meklēt datnes, ziņojumus, notikumus ... + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_mk.ts b/translations/client_mk.ts index 69e92c8cd6c8d..bb73f6a5e7c76 100644 --- a/translations/client_mk.ts +++ b/translations/client_mk.ts @@ -166,6 +166,66 @@ Верзија на серверот + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2853,37 +2913,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Напредно - About За - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice Правно известување - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Користи &монохроматски икони + + General Settings + Општи параметри @@ -2891,20 +2935,30 @@ Alternatively, you can restore all deleted files by downloading them from the se &Стартувај при стартување на системот - - Show Server &Notifications - Прикажи &известувања од серверот. + + Show Call Notifications + - - Notify when synchronised folders grow larger than specified limit + + For System Tray + + + Use &Monochrome Icons + Користи &монохроматски икони + - Show Call Notifications + Show Chat Notifications + + + Show Server &Notifications + Прикажи &известувања од серверот. + Updates @@ -2915,16 +2969,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Автоматски проверувај за ажурирања - - - Automatically disable synchronisation of folders that overcome limit - - &Channel &Канал + + + + stable + стабилна + + + + + beta + бета + + + + &Restart && Update + &Рестартирај && Ажурирај + + + + &Check for Update now + &Провери за ажурирање сега + + + + Advanced + Напредно + + + + Ask for confirmation before synchronizing new folders larger than + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit + + Ask for confirmation before synchronizing external storages @@ -2956,11 +3053,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Креирај Debug архива - - - &Check for Update now - &Провери за ажурирање сега - Info @@ -2982,9 +3074,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - &Рестартирај && Ажурирај + + Show sync folders in &Explorer's Navigation Pane + Покажи ги папките што се синхронизираат во навигационата лента на &прелистувачот @@ -3006,21 +3098,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Општи параметри - - - - For System Tray - - - - - Show sync folders in &Explorer's Navigation Pane - Покажи ги папките што се синхронизираат во навигационата лента на &прелистувачот - Use &monochrome icons @@ -3046,6 +3123,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Известувања од серверот за кој е потребно внимание. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3056,18 +3138,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. - - - - stable - стабилна - - - - - beta - бета - Change update channel? @@ -3093,6 +3163,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3101,14 +3178,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3121,17 +3201,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5041,6 +5111,11 @@ Server replied with error: %2 Resharing this folder is not allowed Повторно споделување на оваа папка не е дозволено + + + Copy internal link + Копирај внатрешен линк + Copy secure file drop link @@ -5053,18 +5128,13 @@ Server replied with error: %2 Копирај јавен линк - - Copy secure filedrop link + + Encrypt - - Copy internal link - Копирај внатрешен линк - - - - Encrypt + + Copy secure filedrop link @@ -6350,11 +6420,6 @@ Server replied with error: %2 Create a new share link Креирајте нов линк за споделување - - - Copy share link location - - Copied! @@ -6365,6 +6430,11 @@ Server replied with error: %2 Share options Опции за споделување + + + Copy share link location + + ShareDetailsPage @@ -6573,6 +6643,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6581,6 +6669,14 @@ Server replied with error: %2 + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_nb_NO.ts b/translations/client_nb_NO.ts index da9d933ad849e..158454d555c20 100644 --- a/translations/client_nb_NO.ts +++ b/translations/client_nb_NO.ts @@ -166,6 +166,66 @@ Serverversjon + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2874,37 +2934,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Avansert - About Om - - - Ask for confirmation before synchronizing new folders larger than - Be om bekreftelse før du synkroniserer nye mapper større enn - Legal notice Juridisk varsel - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Bruk svart/&hvite ikoner + + General Settings + Vanlige innstillinger @@ -2912,19 +2956,29 @@ Alternatively, you can restore all deleted files by downloading them from the se &Start når maskinen starter - - Show Server &Notifications - Vis server og &varsler + + Show Call Notifications + Vis anropsvarsler - - Notify when synchronised folders grow larger than specified limit - Varsle når synkroniserte mapper vokser seg større enn spesifisert grense + + For System Tray + For systemkurven + + + + Use &Monochrome Icons + Bruk svart/&hvite ikoner - Show Call Notifications - Vis anropsvarsler + Show Chat Notifications + + + + + Show Server &Notifications + Vis server og &varsler @@ -2936,16 +2990,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Se etter oppdateringer automatisk - - - Automatically disable synchronisation of folders that overcome limit - Deaktiver automatisk synkronisering av mapper som overvinner grensen - &Channel &Kanal + + + + stable + stabil + + + + + beta + beta + + + + &Restart && Update + &Omstart && Oppdater + + + + &Check for Update now + &Se etter oppdatering nå + + + + Advanced + Avansert + + + + Ask for confirmation before synchronizing new folders larger than + Be om bekreftelse før du synkroniserer nye mapper større enn + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + Varsle når synkroniserte mapper vokser seg større enn spesifisert grense + + + + Automatically disable synchronisation of folders that overcome limit + Deaktiver automatisk synkronisering av mapper som overvinner grensen + Ask for confirmation before synchronizing external storages @@ -2977,11 +3074,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Opprett feilsøkingsarkiv - - - &Check for Update now - &Se etter oppdatering nå - Info @@ -3003,9 +3095,9 @@ Alternatively, you can restore all deleted files by downloading them from the se Oppdateringskanal - - &Restart && Update - &Omstart && Oppdater + + Show sync folders in &Explorer's Navigation Pane + Vis synkroniseringsmapper i &Utforskers navigasjonspanel @@ -3027,21 +3119,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice Juridiske merknader - - - General Settings - Vanlige innstillinger - - - - For System Tray - For systemkurven - - - - Show sync folders in &Explorer's Navigation Pane - Vis synkroniseringsmapper i &Utforskers navigasjonspanel - Use &monochrome icons @@ -3067,6 +3144,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Servervarsler som krever oppmerksomhet. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3077,18 +3159,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Du kan ikke deaktivere autostart fordi systemomfattende autostart er aktivert. - - - - stable - stabil - - - - - beta - beta - Change update channel? @@ -3113,15 +3183,6 @@ Merk at dette kun velger hvilke oppgraderinger av bassenget er hentet fra, og at enterprise foretagende - - - - beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development - -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - list of available update channels to non enterprise users and downgrading warning - - - enterprise: contains stable versions for customers. @@ -3131,18 +3192,14 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. + + - beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development -Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. - list of available update channels to enterprise users and downgrading warning +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + list of available update channels to non enterprise users and downgrading warning - - - Changing update channel? - Bytte oppdateringskanal? - The channel determines which upgrades will be offered to install: @@ -3159,7 +3216,20 @@ Downgrading versions is not possible immediately: changing from beta to stable m Nedgradering av versjoner er ikke mulig umiddelbart: endring fra beta til stabil betyr å vente på den nye stabile versjonen. - + + - enterprise: contains stable versions for customers. + +Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. + list of available update channels to enterprise users and downgrading warning + + + + + Changing update channel? + Bytte oppdateringskanal? + + + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5080,6 +5150,11 @@ Server svarte med feil: %2 Resharing this folder is not allowed Videredeling av denne mappen er ikke tillatt + + + Copy internal link + Kopier intern lenke + Copy secure file drop link @@ -5091,21 +5166,16 @@ Server svarte med feil: %2 Copy public link Kopier offentlig lenke - - - Copy secure filedrop link - Kopier sikker filedrop-lenke - - - - Copy internal link - Kopier intern lenke - Encrypt Krypter + + + Copy secure filedrop link + Kopier sikker filedrop-lenke + Lock file @@ -6389,11 +6459,6 @@ Server svarte med feil: %2 Create a new share link Opprett en ny delingslenke - - - Copy share link location - Kopier plassering for delkobling - Copied! @@ -6404,6 +6469,11 @@ Server svarte med feil: %2 Share options Delingsalternativer + + + Copy share link location + Kopier plassering for delkobling + ShareDetailsPage @@ -6612,6 +6682,24 @@ Server svarte med feil: %2 Meny for brukergruppe og lokale mapper + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6620,6 +6708,14 @@ Server svarte med feil: %2 Søk etter filer, meldinger, hendelser … + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_nl.ts b/translations/client_nl.ts index c344b02a32711..7a498aaac2092 100644 --- a/translations/client_nl.ts +++ b/translations/client_nl.ts @@ -166,6 +166,66 @@ Server versie + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2871,37 +2931,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Geavanceerd - About Over - - - Ask for confirmation before synchronizing new folders larger than - Vraag bevestiging voordat mappen worden gesynchroniseerd groter dan - Legal notice Juridische bepalingen - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Gebruik &monochrome pictogrammen + + General Settings + Algemene instellingen @@ -2909,19 +2953,29 @@ Alternatively, you can restore all deleted files by downloading them from the se &Starten bij systeemstart - - Show Server &Notifications - Tonen server&meldingen + + Show Call Notifications + Toon oproepmeldingen - - Notify when synchronised folders grow larger than specified limit - Melding als gesynchroniseerde mappen groter worden dan de opgegeven limiet + + For System Tray + Voor systeemvak + + + + Use &Monochrome Icons + Gebruik &monochrome pictogrammen - Show Call Notifications - Toon oproepmeldingen + Show Chat Notifications + + + + + Show Server &Notifications + Tonen server&meldingen @@ -2933,16 +2987,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Controleer automatisch op updates - - - Automatically disable synchronisation of folders that overcome limit - Synchronisatie automatisch uitschakelen van mappen die de limiet overschrijden - &Channel &Kanaal + + + + stable + stabiel + + + + + beta + beta + + + + &Restart && Update + &Herstarten && Bijwerken + + + + &Check for Update now + &Controleer nu op update + + + + Advanced + Geavanceerd + + + + Ask for confirmation before synchronizing new folders larger than + Vraag bevestiging voordat mappen worden gesynchroniseerd groter dan + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + Melding als gesynchroniseerde mappen groter worden dan de opgegeven limiet + + + + Automatically disable synchronisation of folders that overcome limit + Synchronisatie automatisch uitschakelen van mappen die de limiet overschrijden + Ask for confirmation before synchronizing external storages @@ -2974,11 +3071,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Debugarchief maken - - - &Check for Update now - &Controleer nu op update - Info @@ -3000,9 +3092,9 @@ Alternatively, you can restore all deleted files by downloading them from the se Bijwerkkanaal - - &Restart && Update - &Herstarten && Bijwerken + + Show sync folders in &Explorer's Navigation Pane + Toon sync-mappen in het &Verkenner navigatievenster @@ -3024,21 +3116,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice Juridische bepalingen - - - General Settings - Algemene instellingen - - - - For System Tray - Voor systeemvak - - - - Show sync folders in &Explorer's Navigation Pane - Toon sync-mappen in het &Verkenner navigatievenster - Use &monochrome icons @@ -3064,6 +3141,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Servermeldingen die aandacht nodig hebben. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3074,18 +3156,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Je kunt autostart niet uitschakelen omdat systeem-brede autostart is ingeschakeld. - - - - stable - stabiel - - - - - beta - beta - Change update channel? @@ -3110,15 +3180,6 @@ Merk op dat dit alleen selecteert van welke pool upgrades worden overgenomen en enterprise zakelijk - - - - beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development - -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - list of available update channels to non enterprise users and downgrading warning - - - enterprise: contains stable versions for customers. @@ -3128,18 +3189,14 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. + + - beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development -Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. - list of available update channels to enterprise users and downgrading warning +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + list of available update channels to non enterprise users and downgrading warning - - - Changing update channel? - Wijzigen bijwerkkanaal? - The channel determines which upgrades will be offered to install: @@ -3156,7 +3213,20 @@ Downgrading versions is not possible immediately: changing from beta to stable m Teruggaan naar een eerdere versie is net meteen mogelijk: aanpassen van bèta naar stable betekent wachten op de volgende stabiele versie. - + + - enterprise: contains stable versions for customers. + +Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. + list of available update channels to enterprise users and downgrading warning + + + + + Changing update channel? + Wijzigen bijwerkkanaal? + + + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5077,6 +5147,11 @@ Server antwoordde met fout: %2 Resharing this folder is not allowed Verder delen van deze map is niet toegestaan + + + Copy internal link + Kopieer interne link + Copy secure file drop link @@ -5088,21 +5163,16 @@ Server antwoordde met fout: %2 Copy public link Kopieer openbare link - - - Copy secure filedrop link - Kopieer beveiligde bestands-drop link - - - - Copy internal link - Kopieer interne link - Encrypt Versleutel + + + Copy secure filedrop link + Kopieer beveiligde bestands-drop link + Lock file @@ -6386,11 +6456,6 @@ Server antwoordde met fout: %2 Create a new share link Creëer een nieuwe deellink - - - Copy share link location - Kopieer deellinklocatie - Copied! @@ -6401,6 +6466,11 @@ Server antwoordde met fout: %2 Share options Deelopties + + + Copy share link location + Kopieer deellinklocatie + ShareDetailsPage @@ -6609,6 +6679,24 @@ Server antwoordde met fout: %2 Menu gebruikersgroep en lokale mappen + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6617,6 +6705,14 @@ Server antwoordde met fout: %2 Zoek in bestanden, berichten, afspraak ... + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_oc.ts b/translations/client_oc.ts index 224304d5f3df0..df3eea548ea8f 100644 --- a/translations/client_oc.ts +++ b/translations/client_oc.ts @@ -166,6 +166,66 @@ Version del servidor + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2849,37 +2909,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Avançat - About A prepaus - - - Ask for confirmation before synchronizing new folders larger than - Demandar una confirmacion abans de sincronizar los dossièrs novèls mai gròsses que - Legal notice Avís legal - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - Mo - - - - Use &Monochrome Icons - Utilizar las icònas &monocròmas + + General Settings + Paramètres generals @@ -2887,19 +2931,29 @@ Alternatively, you can restore all deleted files by downloading them from the se &Lançar a l’aviada del sistèma - - Show Server &Notifications - Mostrar las notificacions del servidor + + Show Call Notifications + Mostrar las notificacions de sonadas - - Notify when synchronised folders grow larger than specified limit - Afichar una notificacion quand de dossièrs venon mai gròsses que lo limit especificat + + For System Tray + + + + + Use &Monochrome Icons + Utilizar las icònas &monocròmas - Show Call Notifications - Mostrar las notificacions de sonadas + Show Chat Notifications + + + + + Show Server &Notifications + Mostrar las notificacions del servidor @@ -2911,16 +2965,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates Verificar &automaticament las mesas a jorn - - - Automatically disable synchronisation of folders that overcome limit - Desactivar automaticament la sincronizacion dels dossièrs que subrepassan lo limit - &Channel &Canal + + + + stable + estable + + + + + beta + beta + + + + &Restart && Update + &Reaviar e metre a jorn + + + + &Check for Update now + &Verificar las mesas a jorn ara + + + + Advanced + Avançat + + + + Ask for confirmation before synchronizing new folders larger than + Demandar una confirmacion abans de sincronizar los dossièrs novèls mai gròsses que + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + Mo + + + + Notify when synchronised folders grow larger than specified limit + Afichar una notificacion quand de dossièrs venon mai gròsses que lo limit especificat + + + + Automatically disable synchronisation of folders that overcome limit + Desactivar automaticament la sincronizacion dels dossièrs que subrepassan lo limit + Ask for confirmation before synchronizing external storages @@ -2952,11 +3049,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Crear un archiu de debugatge - - - &Check for Update now - &Verificar las mesas a jorn ara - Info @@ -2978,9 +3070,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - &Reaviar e metre a jorn + + Show sync folders in &Explorer's Navigation Pane + @@ -3002,21 +3094,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Paramètres generals - - - - For System Tray - - - - - Show sync folders in &Explorer's Navigation Pane - - Use &monochrome icons @@ -3042,6 +3119,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Las notificacions del servidor que demanda vòstra atencion. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3052,18 +3134,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. - - - - stable - estable - - - - - beta - beta - Change update channel? @@ -3088,6 +3158,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3096,14 +3173,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3116,17 +3196,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5032,6 +5102,11 @@ Server replied with error: %2 Resharing this folder is not allowed + + + Copy internal link + Copiar lo ligam intèrn + Copy secure file drop link @@ -5044,18 +5119,13 @@ Server replied with error: %2 Copiar lo ligam public - - Copy secure filedrop link + + Encrypt - - Copy internal link - Copiar lo ligam intèrn - - - - Encrypt + + Copy secure filedrop link @@ -6341,11 +6411,6 @@ Server replied with error: %2 Create a new share link Crear un ligam de partiment novèl - - - Copy share link location - - Copied! @@ -6356,6 +6421,11 @@ Server replied with error: %2 Share options + + + Copy share link location + + ShareDetailsPage @@ -6564,6 +6634,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6572,6 +6660,14 @@ Server replied with error: %2 Cercatz de fichièrs, messatges, eveniment... + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_pl.ts b/translations/client_pl.ts index 9f0d46e6f45a8..86e90b45c3ba3 100644 --- a/translations/client_pl.ts +++ b/translations/client_pl.ts @@ -166,6 +166,66 @@ Wersja z serwera + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Dodaj nowe konto + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2875,37 +2935,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Zaawansowane - About O aplikacji - - - Ask for confirmation before synchronizing new folders larger than - Zapytaj o potwierdzenie przed synchronizacją nowych katalogów większych niż - Legal notice Nota prawna - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Użyj ikon &monochromatycznych + + General Settings + Ustawienia ogólne @@ -2913,19 +2957,29 @@ Alternatively, you can restore all deleted files by downloading them from the se &Uruchamiaj przy starcie systemu - - Show Server &Notifications - Pokaż &powiadomienia serwera + + Show Call Notifications + Pokaż powiadomienia połączeń - - Notify when synchronised folders grow larger than specified limit - Powiadamiaj, gdy zsynchronizowane katalogi osiągną rozmiar większy niż określony limit + + For System Tray + W zasobniku systemowym + + + + Use &Monochrome Icons + Użyj ikon &monochromatycznych - Show Call Notifications - Pokaż powiadomienia połączeń + Show Chat Notifications + + + + + Show Server &Notifications + Pokaż &powiadomienia serwera @@ -2937,16 +2991,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Automatyczne sprawdzanie aktualizacji - - - Automatically disable synchronisation of folders that overcome limit - Automatycznie wyłączaj synchronizację katalogów, które przekraczają limit - &Channel &Kanał + + + + stable + stabilny + + + + + beta + beta + + + + &Restart && Update + &Uruchom ponownie i aktualizuj + + + + &Check for Update now + &Sprawdź aktualizację + + + + Advanced + Zaawansowane + + + + Ask for confirmation before synchronizing new folders larger than + Zapytaj o potwierdzenie przed synchronizacją nowych katalogów większych niż + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + Powiadamiaj, gdy zsynchronizowane katalogi osiągną rozmiar większy niż określony limit + + + + Automatically disable synchronisation of folders that overcome limit + Automatycznie wyłączaj synchronizację katalogów, które przekraczają limit + Ask for confirmation before synchronizing external storages @@ -2978,11 +3075,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Utwórz archiwum debugowania - - - &Check for Update now - &Sprawdź aktualizację - Info @@ -3004,9 +3096,9 @@ Alternatively, you can restore all deleted files by downloading them from the se Kanał aktualizacji - - &Restart && Update - &Uruchom ponownie i aktualizuj + + Show sync folders in &Explorer's Navigation Pane + Pokaż katalog synchronizacji w oknie &Exploratora @@ -3028,21 +3120,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice Nota prawna - - - General Settings - Ustawienia ogólne - - - - For System Tray - W zasobniku systemowym - - - - Show sync folders in &Explorer's Navigation Pane - Pokaż katalog synchronizacji w oknie &Exploratora - Use &monochrome icons @@ -3068,6 +3145,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Powiadomienia serwera, które wymagają uwagi. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3078,18 +3160,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Nie można wyłączyć autostartu, ponieważ autostart całego systemu jest włączony. - - - - stable - stabilny - - - - - beta - beta - Change update channel? @@ -3116,6 +3186,13 @@ Zwróć uwagę, że wybiera to tylko, z której puli aktualizacje są pobierane + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3124,14 +3201,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3144,17 +3224,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5075,6 +5145,11 @@ Serwer odpowiedział błędem: %2 Resharing this folder is not allowed Udostępnianie dalej tego katalogu jest niedozwolone + + + Copy internal link + Kopiuj link wewnętrzny + Copy secure file drop link @@ -5086,21 +5161,16 @@ Serwer odpowiedział błędem: %2 Copy public link Kopiuj link publiczny - - - Copy secure filedrop link - Kopiuj bezpieczny link do upuszczenia pliku - - - - Copy internal link - Kopiuj link wewnętrzny - Encrypt Zaszyfruj + + + Copy secure filedrop link + Kopiuj bezpieczny link do upuszczenia pliku + Lock file @@ -6384,11 +6454,6 @@ Serwer odpowiedział błędem: %2 Create a new share link Utwórz nowy link udostępnienia - - - Copy share link location - Skopiuj lokalizację linku udostępniania - Copied! @@ -6399,6 +6464,11 @@ Serwer odpowiedział błędem: %2 Share options Opcje udostępniania + + + Copy share link location + Skopiuj lokalizację linku udostępniania + ShareDetailsPage @@ -6607,6 +6677,24 @@ Serwer odpowiedział błędem: %2 Menu grupy użytkowników i katalogów lokalnych + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6615,6 +6703,14 @@ Serwer odpowiedział błędem: %2 Szukaj plików, wiadomości, wydarzeń… + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_pt.ts b/translations/client_pt.ts index 0c4c0e1c578f4..9f2acd1562cf0 100644 --- a/translations/client_pt.ts +++ b/translations/client_pt.ts @@ -166,6 +166,66 @@ Versão do servidor + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2852,58 +2912,52 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Avançada - About Sobre - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice Notícia de legalidade - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Utilizar Ícones &Monocromáticos + + General Settings + Configuração Geral &Launch on System Startup &Iniciar no Arranque do Sistema - - - Show Server &Notifications - Mostrar Servidor &Notificações - - Notify when synchronised folders grow larger than specified limit + Show Call Notifications + + + For System Tray + Para a Bandeja do Sistema + + + + Use &Monochrome Icons + Utilizar Ícones &Monocromáticos + - Show Call Notifications + Show Chat Notifications + + + Show Server &Notifications + Mostrar Servidor &Notificações + Updates @@ -2915,13 +2969,56 @@ Alternatively, you can restore all deleted files by downloading them from the se - - Automatically disable synchronisation of folders that overcome limit + + &Channel - - &Channel + + + stable + + + + + + beta + + + + + &Restart && Update + &Reiniciar e Atualizar + + + + &Check for Update now + + + + + Advanced + Avançada + + + + Ask for confirmation before synchronizing new folders larger than + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit @@ -2955,11 +3052,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive - - - &Check for Update now - - Info @@ -2981,9 +3073,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - &Reiniciar e Atualizar + + Show sync folders in &Explorer's Navigation Pane + Mostrar pastas de sincronização em &Página de Navegação do Explorador @@ -3005,21 +3097,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Configuração Geral - - - - For System Tray - Para a Bandeja do Sistema - - - - Show sync folders in &Explorer's Navigation Pane - Mostrar pastas de sincronização em &Página de Navegação do Explorador - Use &monochrome icons @@ -3045,6 +3122,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Notificações do Servidor que requerem atenção. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3055,18 +3137,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. - - - - stable - - - - - - beta - - Change update channel? @@ -3091,6 +3161,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3099,14 +3176,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3119,17 +3199,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5037,6 +5107,11 @@ Server replied with error: %2 Resharing this folder is not allowed + + + Copy internal link + Copiar ligação interna + Copy secure file drop link @@ -5049,18 +5124,13 @@ Server replied with error: %2 Copiar link publico - - Copy secure filedrop link + + Encrypt - - Copy internal link - Copiar ligação interna - - - - Encrypt + + Copy secure filedrop link @@ -6346,11 +6416,6 @@ Server replied with error: %2 Create a new share link - - - Copy share link location - - Copied! @@ -6361,6 +6426,11 @@ Server replied with error: %2 Share options + + + Copy share link location + + ShareDetailsPage @@ -6569,6 +6639,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6577,6 +6665,14 @@ Server replied with error: %2 + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_pt_BR.ts b/translations/client_pt_BR.ts index 28b799de52b29..3597efee34849 100644 --- a/translations/client_pt_BR.ts +++ b/translations/client_pt_BR.ts @@ -166,6 +166,66 @@ Versão do servidor + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Incluir nova conta + + + Unified search results list + Lista unificada de resultados de pesquisa + Settings @@ -456,6 +521,11 @@ Current account avatar Avatar da conta atual + + + New activities + Novas atividades + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser Abrir %1 no navegador - - - Unified search results list - Lista unificada de resultados de pesquisa - - - - New activities - Novas atividades - OCC::AbstractNetworkJob @@ -2873,37 +2933,21 @@ Como alternativa, você pode restaurar todos os arquivos excluídos baixando-os OCC::GeneralSettings - - - Advanced - Avançado - About Sobre - - - Ask for confirmation before synchronizing new folders larger than - Peça confirmação antes de sincronizar novas pastas maiores que - Legal notice Nota legal - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Usar ícones &monocromáticos + + General Settings + Configuração Geral @@ -2911,19 +2955,29 @@ Como alternativa, você pode restaurar todos os arquivos excluídos baixando-os &Executar ao iniciar o sistema - - Show Server &Notifications - Exibir &notificações do servidor + + Show Call Notifications + Mostrar Notificações de Chamada - - Notify when synchronised folders grow larger than specified limit - Notificar quando as pastas sincronizadas ultrapassarem o limite especificado + + For System Tray + Para Bandeja do Sistema + + + + Use &Monochrome Icons + Usar ícones &monocromáticos - Show Call Notifications - Mostrar Notificações de Chamada + Show Chat Notifications + + + + + Show Server &Notifications + Exibir &notificações do servidor @@ -2935,16 +2989,59 @@ Como alternativa, você pode restaurar todos os arquivos excluídos baixando-os &Automatically check for Updates Checar &Atualizações automaticamente - - - Automatically disable synchronisation of folders that overcome limit - Desative automaticamente a sincronização de pastas que superam o limite - &Channel &Canal + + + + stable + estável + + + + + beta + beta + + + + &Restart && Update + &Reiniciar && Atualizar + + + + &Check for Update now + &Checar por Atualização agora + + + + Advanced + Avançado + + + + Ask for confirmation before synchronizing new folders larger than + Peça confirmação antes de sincronizar novas pastas maiores que + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + Notificar quando as pastas sincronizadas ultrapassarem o limite especificado + + + + Automatically disable synchronisation of folders that overcome limit + Desative automaticamente a sincronização de pastas que superam o limite + Ask for confirmation before synchronizing external storages @@ -2976,11 +3073,6 @@ Como alternativa, você pode restaurar todos os arquivos excluídos baixando-os Create Debug Archive Criar arquivamento de depuração - - - &Check for Update now - &Checar por Atualização agora - Info @@ -3002,9 +3094,9 @@ Como alternativa, você pode restaurar todos os arquivos excluídos baixando-os Atualizar canal - - &Restart && Update - &Reiniciar && Atualizar + + Show sync folders in &Explorer's Navigation Pane + Exibir pastas de sincronização no Painel de Navegação do &Explorer @@ -3026,21 +3118,6 @@ Como alternativa, você pode restaurar todos os arquivos excluídos baixando-os Legal Notice Notícia Legal - - - General Settings - Configuração Geral - - - - For System Tray - Para Bandeja do Sistema - - - - Show sync folders in &Explorer's Navigation Pane - Exibir pastas de sincronização no Painel de Navegação do &Explorer - Use &monochrome icons @@ -3066,6 +3143,11 @@ Como alternativa, você pode restaurar todos os arquivos excluídos baixando-os Server notifications that require attention. Notificações do servidor que exigem atenção. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3076,18 +3158,6 @@ Como alternativa, você pode restaurar todos os arquivos excluídos baixando-os You cannot disable autostart because system-wide autostart is enabled. Você não pode desativar a inicialização automática porque a inicialização automática em todo o sistema está ativada. - - - - stable - estável - - - - - beta - beta - Change update channel? @@ -3114,6 +3184,14 @@ Observe que isso seleciona apenas quais upgrades de pool são retirados, e que n + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + - Enterprise: Contém versões estáveis para clientes. + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3125,15 +3203,22 @@ Downgrading versions is not possible immediately: changing from beta to stable m As versões de downgrade não são possíveis imediatamente: mudar de beta para estável significa aguardar a nova versão estável. - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - Enterprise: Contém versões estáveis para clientes. - + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3148,22 +3233,7 @@ As versões de downgrade não são possíveis imediatamente: mudar de estável p Mudando o canal de atualização? - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5086,6 +5156,11 @@ Servidor respondeu com erro: %2 Resharing this folder is not allowed Compartilhar de novo esta pasta não é permitido + + + Copy internal link + Copiar link interno + Copy secure file drop link @@ -5097,21 +5172,16 @@ Servidor respondeu com erro: %2 Copy public link Copiar link público - - - Copy secure filedrop link - Copy secure filedrop link - - - - Copy internal link - Copiar link interno - Encrypt Criptografar + + + Copy secure filedrop link + Copy secure filedrop link + Lock file @@ -6395,11 +6465,6 @@ Servidor respondeu com erro: %2 Create a new share link Criar um novo link de compartilhamento - - - Copy share link location - Copiar localização do link de compartilhamento - Copied! @@ -6410,6 +6475,11 @@ Servidor respondeu com erro: %2 Share options Opções de compartilhamento + + + Copy share link location + Copiar localização do link de compartilhamento + ShareDetailsPage @@ -6618,6 +6688,24 @@ Servidor respondeu com erro: %2 Grupo de usuários e menu de pastas locais + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6626,6 +6714,14 @@ Servidor respondeu com erro: %2 Pesquise arquivos, mensagens, eventos ... + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_ro.ts b/translations/client_ro.ts index e502a200182ad..94d07d55bc2ae 100644 --- a/translations/client_ro.ts +++ b/translations/client_ro.ts @@ -166,6 +166,66 @@ + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2866,37 +2926,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Avansat - About Despre - - - Ask for confirmation before synchronizing new folders larger than - Cereți o confirmare înainte de a sincroniza foldere noi mai mari de - Legal notice Aviz juridic - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Folosește pictograme &Monochrome + + General Settings + Setări Generale @@ -2904,19 +2948,29 @@ Alternatively, you can restore all deleted files by downloading them from the se &Lansează la pornire - - Show Server &Notifications - Arată notificările serverului + + Show Call Notifications + Afișează notificările de apeluri - - Notify when synchronised folders grow larger than specified limit - Notificați când folderele sincronizate cresc mai mult decât limita specificată. + + For System Tray + Pentru System Tray + + + + Use &Monochrome Icons + Folosește pictograme &Monochrome - Show Call Notifications - Afișează notificările de apeluri + Show Chat Notifications + + + + + Show Server &Notifications + Arată notificările serverului @@ -2928,16 +2982,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Verificarea automată a actualizărilor - - - Automatically disable synchronisation of folders that overcome limit - Dezactivați automat sincronizarea folderelor care depășesc limita. - &Channel &Canal + + + + stable + stabil + + + + + beta + beta + + + + &Restart && Update + &Restart && Actualizare + + + + &Check for Update now + &Verifică pentru actualizare acum + + + + Advanced + Avansat + + + + Ask for confirmation before synchronizing new folders larger than + Cereți o confirmare înainte de a sincroniza foldere noi mai mari de + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + Notificați când folderele sincronizate cresc mai mult decât limita specificată. + + + + Automatically disable synchronisation of folders that overcome limit + Dezactivați automat sincronizarea folderelor care depășesc limita. + Ask for confirmation before synchronizing external storages @@ -2969,11 +3066,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive - - - &Check for Update now - &Verifică pentru actualizare acum - Info @@ -2995,9 +3087,9 @@ Alternatively, you can restore all deleted files by downloading them from the se Canal pentru actualizări - - &Restart && Update - &Restart && Actualizare + + Show sync folders in &Explorer's Navigation Pane + Afișați folderele de sincronizare în panoul de navigare al &Explorer-ului. @@ -3019,21 +3111,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice Aviz juridic - - - General Settings - Setări Generale - - - - For System Tray - Pentru System Tray - - - - Show sync folders in &Explorer's Navigation Pane - Afișați folderele de sincronizare în panoul de navigare al &Explorer-ului. - Use &monochrome icons @@ -3059,6 +3136,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Notificări ale serverului care necesită atenție. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3069,18 +3151,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Nu puteți dezactiva pornirea automată deoarece pornirea automată la nivel de sistem este activată. - - - - stable - stabil - - - - - beta - beta - Change update channel? @@ -3105,6 +3175,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3113,14 +3190,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3133,17 +3213,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5049,6 +5119,11 @@ Server replied with error: %2 Resharing this folder is not allowed + + + Copy internal link + Copiază linkul intern + Copy secure file drop link @@ -5061,18 +5136,13 @@ Server replied with error: %2 Copiză link public - - Copy secure filedrop link + + Encrypt - - Copy internal link - Copiază linkul intern - - - - Encrypt + + Copy secure filedrop link @@ -6356,11 +6426,6 @@ Server replied with error: %2 Create a new share link - - - Copy share link location - - Copied! @@ -6371,6 +6436,11 @@ Server replied with error: %2 Share options + + + Copy share link location + + ShareDetailsPage @@ -6579,6 +6649,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6587,6 +6675,14 @@ Server replied with error: %2 + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_ru.ts b/translations/client_ru.ts index cfa964e760ee6..6ad3cc0615619 100644 --- a/translations/client_ru.ts +++ b/translations/client_ru.ts @@ -166,6 +166,66 @@ Версия сервера + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Создать учётную запись + + + Unified search results list + Единый список результатов поиска + Settings @@ -456,6 +521,11 @@ Current account avatar Текущее изображение учётной записи + + + New activities + Новые события + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser Открыть «%1» в браузере - - - Unified search results list - Единый список результатов поиска - - - - New activities - Новые события - OCC::AbstractNetworkJob @@ -2874,37 +2934,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Дополнительно - About О программе - - - Ask for confirmation before synchronizing new folders larger than - Запрашивать подтверждение синхронизации папок размером более - Legal notice Официальное уведомление - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - МБ - - - - Use &Monochrome Icons - Использовать чё&рно-белые значки + + General Settings + Основные настройки @@ -2912,19 +2956,29 @@ Alternatively, you can restore all deleted files by downloading them from the se &Запускать при входе в систему - - Show Server &Notifications - Показывать &уведомления, полученные с сервера + + Show Call Notifications + Показывать уведомления о вызовах - - Notify when synchronised folders grow larger than specified limit - Уведомлять о превышении заданного максимального размера папок + + For System Tray + Чёрно-белые значки с системном лотке + + + + Use &Monochrome Icons + Использовать чё&рно-белые значки - Show Call Notifications - Показывать уведомления о вызовах + Show Chat Notifications + + + + + Show Server &Notifications + Показывать &уведомления, полученные с сервера @@ -2936,16 +2990,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates Проверять наличие о&бновлений - - - Automatically disable synchronisation of folders that overcome limit - Автоматически отключать синхронизацию папок, размер которых превысил заданный лимит - &Channel &Канал + + + + stable + стабильный + + + + + beta + бета + + + + &Restart && Update + &Перезапуск и обновление + + + + &Check for Update now + &Проверить наличие обновлений + + + + Advanced + Дополнительно + + + + 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 @@ -2977,11 +3074,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Создать архив с отладочными данными - - - &Check for Update now - &Проверить наличие обновлений - Info @@ -3003,9 +3095,9 @@ Alternatively, you can restore all deleted files by downloading them from the se Канал обновлений - - &Restart && Update - &Перезапуск и обновление + + Show sync folders in &Explorer's Navigation Pane + Показывать синхронизируемые папки в панели навигации &Проводника @@ -3027,21 +3119,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice Официальное уведомление - - - General Settings - Основные настройки - - - - For System Tray - Чёрно-белые значки с системном лотке - - - - Show sync folders in &Explorer's Navigation Pane - Показывать синхронизируемые папки в панели навигации &Проводника - Use &monochrome icons @@ -3067,6 +3144,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Требующие внимания уведомления, полученные с сервера. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3077,18 +3159,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Автоматический запуск не может быть отключен, т.к. он настроен на уровне системы. - - - - stable - стабильный - - - - - beta - бета - Change update channel? @@ -3113,15 +3183,6 @@ Note that this selects only what pool upgrades are taken from, and that there ar enterprise предприятие - - - - beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development - -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - list of available update channels to non enterprise users and downgrading warning - - - enterprise: contains stable versions for customers. @@ -3131,18 +3192,14 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. + + - beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development -Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. - list of available update channels to enterprise users and downgrading warning +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + list of available update channels to non enterprise users and downgrading warning - - - Changing update channel? - Сменить канал обновлений? - The channel determines which upgrades will be offered to install: @@ -3159,7 +3216,20 @@ Downgrading versions is not possible immediately: changing from beta to stable m Понижение версии невозможно немедленно: переход с beta на stable означает ожидание новой стабильной версии. - + + - enterprise: contains stable versions for customers. + +Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. + list of available update channels to enterprise users and downgrading warning + + + + + Changing update channel? + Сменить канал обновлений? + + + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5079,6 +5149,11 @@ Server replied with error: %2 Resharing this folder is not allowed Повторная публикация этой папки не разрешена + + + Copy internal link + Скопировать внутреннюю ссылку + Copy secure file drop link @@ -5090,21 +5165,16 @@ Server replied with error: %2 Copy public link Скопировать общедоступную ссылку - - - Copy secure filedrop link - Скопировать защищенную ссылку для удаления файла - - - - Copy internal link - Скопировать внутреннюю ссылку - Encrypt Зашифровать + + + Copy secure filedrop link + Скопировать защищенную ссылку для удаления файла + Lock file @@ -6388,11 +6458,6 @@ Server replied with error: %2 Create a new share link Создать новую общую ссылку - - - Copy share link location - Скопировать адрес общей ссылки - Copied! @@ -6403,6 +6468,11 @@ Server replied with error: %2 Share options Настройки доступа + + + Copy share link location + Скопировать адрес общей ссылки + ShareDetailsPage @@ -6611,6 +6681,24 @@ Server replied with error: %2 Меню пользователя групповых и локальных папок + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6619,6 +6707,14 @@ Server replied with error: %2 Поиск файлов, сообщений, событий… + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_sc.ts b/translations/client_sc.ts index 63a55d12dfaa5..55d0295302e09 100644 --- a/translations/client_sc.ts +++ b/translations/client_sc.ts @@ -166,6 +166,66 @@ + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Agiunghe unu contu nou + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + Atividades noas + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - Atividades noas - OCC::AbstractNetworkJob @@ -2869,58 +2929,52 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Avantzadu - About In contu de - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice Nota legale - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Imprea Iconas &monocromàticas + + General Settings + Cunfiguratzione generale &Launch on System Startup es&cuta a s'aviu de su sistema - - - Show Server &Notifications - Mustra serbidore &notìficas - - Notify when synchronised folders grow larger than specified limit + Show Call Notifications + + + For System Tray + Pro sa safata de sistema + + + + Use &Monochrome Icons + Imprea Iconas &monocromàticas + - Show Call Notifications + Show Chat Notifications + + + Show Server &Notifications + Mustra serbidore &notìficas + Updates @@ -2931,16 +2985,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates controll&a in automàticu si ddoe at agiornamentos - - - Automatically disable synchronisation of folders that overcome limit - - &Channel &Canale + + + + stable + stàbile + + + + + beta + beta + + + + &Restart && Update + &Torra a aviare && agiorna + + + + &Check for Update now + &Controlla si immoe ddoe at agiornamentos + + + + Advanced + Avantzadu + + + + Ask for confirmation before synchronizing new folders larger than + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit + + Ask for confirmation before synchronizing external storages @@ -2972,11 +3069,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Crea archìviu de debug - - - &Check for Update now - &Controlla si immoe ddoe at agiornamentos - Info @@ -2998,9 +3090,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - &Torra a aviare && agiorna + + Show sync folders in &Explorer's Navigation Pane + Mustra is cartellas de sincronizatzione in su pannellu de navigatzione de &Explorer @@ -3022,21 +3114,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - Cunfiguratzione generale - - - - For System Tray - Pro sa safata de sistema - - - - Show sync folders in &Explorer's Navigation Pane - Mustra is cartellas de sincronizatzione in su pannellu de navigatzione de &Explorer - Use &monochrome icons @@ -3062,6 +3139,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Serbidore de notìficas chi tocat a ddis dare contu. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3072,18 +3154,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Non faghet a disativare s'aviamentu automàticu ca est ativu s'aviamentu automàticu a livellu de sistema. - - - - stable - stàbile - - - - - beta - beta - Change update channel? @@ -3110,6 +3180,13 @@ Annota chi custu seletzionat isceti dae cale grùstiu prelevare is agiornamentos + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3118,14 +3195,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3138,17 +3218,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5066,6 +5136,11 @@ Server replied with error: %2 Resharing this folder is not allowed Non faghet a torrare a cumpartzire custa cartella + + + Copy internal link + Còpia ligòngiu internu + Copy secure file drop link @@ -5078,18 +5153,13 @@ Server replied with error: %2 Còpia ligòngiu pùblicu - - Copy secure filedrop link + + Encrypt - - Copy internal link - Còpia ligòngiu internu - - - - Encrypt + + Copy secure filedrop link @@ -6375,11 +6445,6 @@ Server replied with error: %2 Create a new share link Crea unu ligòngiu de cumpartzidura nou - - - Copy share link location - - Copied! @@ -6390,6 +6455,11 @@ Server replied with error: %2 Share options + + + Copy share link location + + ShareDetailsPage @@ -6598,6 +6668,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6606,6 +6694,14 @@ Server replied with error: %2 + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_sk.ts b/translations/client_sk.ts index dd828eff7a238..93232c0001d36 100644 --- a/translations/client_sk.ts +++ b/translations/client_sk.ts @@ -166,6 +166,66 @@ Verzia servera + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Pridať nový účet + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2875,37 +2935,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Rozšírené - About O aplikácii - - - Ask for confirmation before synchronizing new folders larger than - Požiadať o potvrdenie pred synchronizáciou nových priečinkov väčších než - Legal notice Právne upozornenie - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Použiť &monochromatické ikony + + General Settings + Všeobecné nastavenia @@ -2913,19 +2957,29 @@ Alternatively, you can restore all deleted files by downloading them from the se Spustiť pri štarte systému - - Show Server &Notifications - Zobraziť &hlásenia zo servera + + Show Call Notifications + Zobraziť upozornenia na hovory - - Notify when synchronised folders grow larger than specified limit - Upozorniť, keď synchronizované priečinky presiahnu stanovený limit + + For System Tray + Pre oznamovaciu oblasť systémového panela + + + + Use &Monochrome Icons + Použiť &monochromatické ikony - Show Call Notifications - Zobraziť upozornenia na hovory + Show Chat Notifications + + + + + Show Server &Notifications + Zobraziť &hlásenia zo servera @@ -2937,16 +2991,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Automaticky kontrolovať aktualizácie - - - Automatically disable synchronisation of folders that overcome limit - Automaticky zakázať synchronizáciu priečinkov, ktoré limit presiahnu - &Channel &Kanál + + + + stable + stabilné + + + + + beta + beta + + + + &Restart && Update + &Restart && aktualizácia + + + + &Check for Update now + &Skontrolovať dostupnosť aktualizácie + + + + Advanced + Rozšírené + + + + Ask for confirmation before synchronizing new folders larger than + Požiadať o potvrdenie pred synchronizáciou nových priečinkov väčších než + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + Upozorniť, keď synchronizované priečinky presiahnu stanovený limit + + + + Automatically disable synchronisation of folders that overcome limit + Automaticky zakázať synchronizáciu priečinkov, ktoré limit presiahnu + Ask for confirmation before synchronizing external storages @@ -2978,11 +3075,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Vytvoriť archív pre ladenie programu - - - &Check for Update now - &Skontrolovať dostupnosť aktualizácie - Info @@ -3004,9 +3096,9 @@ Alternatively, you can restore all deleted files by downloading them from the se Aktualizovať kanál - - &Restart && Update - &Restart && aktualizácia + + Show sync folders in &Explorer's Navigation Pane + Zobraziť synchronizované priečinky v paneli navigáci&e Prieskumníka @@ -3028,21 +3120,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice Právne upozornenie - - - General Settings - Všeobecné nastavenia - - - - For System Tray - Pre oznamovaciu oblasť systémového panela - - - - Show sync folders in &Explorer's Navigation Pane - Zobraziť synchronizované priečinky v paneli navigáci&e Prieskumníka - Use &monochrome icons @@ -3068,6 +3145,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Zobrazovať hlásenie, ktoré vyžadujú pozornosť. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3078,18 +3160,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Nemôžete vypnúť autoštart pretože autoštart je zapnutý na systémov úrovni. - - - - stable - stabilné - - - - - beta - beta - Change update channel? @@ -3116,6 +3186,13 @@ Upozorňujeme, že sa tým vyberie iba to, odkiaľ sa aktualizácie budú sťaho + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3124,14 +3201,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3144,17 +3224,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5075,6 +5145,11 @@ Server odpovedal chybou: %2 Resharing this folder is not allowed Opätovné zdieľanie tohto priečinka je zakázané + + + Copy internal link + Kopírovať interný odkaz + Copy secure file drop link @@ -5086,21 +5161,16 @@ Server odpovedal chybou: %2 Copy public link Kopírovať verejný odkaz - - - Copy secure filedrop link - Kopírovať bezpečný odkaz pre file-drop - - - - Copy internal link - Kopírovať interný odkaz - Encrypt Zašifrovať + + + Copy secure filedrop link + Kopírovať bezpečný odkaz pre file-drop + Lock file @@ -6384,11 +6454,6 @@ Server odpovedal chybou: %2 Create a new share link Vytvoriť nový odkaz pre zdieľanie - - - Copy share link location - Kopírovať odkaz na zdieľanie - Copied! @@ -6399,6 +6464,11 @@ Server odpovedal chybou: %2 Share options Možnosti zdieľania + + + Copy share link location + Kopírovať odkaz na zdieľanie + ShareDetailsPage @@ -6607,6 +6677,24 @@ Server odpovedal chybou: %2 Užívateľská skupina a menu miestnych adresárov + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6615,6 +6703,14 @@ Server odpovedal chybou: %2 Vyhľadať súbory, správy, udalosti ... + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_sl.ts b/translations/client_sl.ts index 0a283c880e809..f9eefcb506d38 100644 --- a/translations/client_sl.ts +++ b/translations/client_sl.ts @@ -166,6 +166,66 @@ Različica strežnika + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Dodaj nov račun + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar Trenutna podoba računa + + + New activities + Nove dejavnosti + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - Nove dejavnosti - OCC::AbstractNetworkJob @@ -2868,37 +2928,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Napredne možnosti - About O programu ... - - - Ask for confirmation before synchronizing new folders larger than - Vprašaj za potrditev pred usklajevanjem novih map večjih od - Legal notice Pravno obvestilo - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Uporabi &črno-bele ikone + + General Settings + Splošne nastavitve @@ -2906,19 +2950,29 @@ Alternatively, you can restore all deleted files by downloading them from the se Zaženi ob &zagonu sistema - - Show Server &Notifications - Pokaži &obvestila strežnika + + Show Call Notifications + Prikaži obvestila klicev + + + + For System Tray + V sistemsko vrstico + + + + Use &Monochrome Icons + Uporabi &črno-bele ikone - Notify when synchronised folders grow larger than specified limit + Show Chat Notifications - - Show Call Notifications - Prikaži obvestila klicev + + Show Server &Notifications + Pokaži &obvestila strežnika @@ -2930,16 +2984,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Samodejno preveri za posodobitve - - - Automatically disable synchronisation of folders that overcome limit - - &Channel &Kanal + + + + stable + stabilni + + + + + beta + preizkusni + + + + &Restart && Update + &Ponovno zaženi in posodobi + + + + &Check for Update now + &Preveri za posodobitve + + + + Advanced + Napredne možnosti + + + + Ask for confirmation before synchronizing new folders larger than + Vprašaj za potrditev pred usklajevanjem novih map večjih od + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + + + + + Automatically disable synchronisation of folders that overcome limit + + Ask for confirmation before synchronizing external storages @@ -2971,11 +3068,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Ustvari arhiv razhroščevanja - - - &Check for Update now - &Preveri za posodobitve - Info @@ -2997,9 +3089,9 @@ Alternatively, you can restore all deleted files by downloading them from the se Kanal za posodobitve - - &Restart && Update - &Ponovno zaženi in posodobi + + Show sync folders in &Explorer's Navigation Pane + Pokaži mape usklajevanja v bočnem oknu programa &Explorer @@ -3021,21 +3113,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice Pravno obvestilo - - - General Settings - Splošne nastavitve - - - - For System Tray - V sistemsko vrstico - - - - Show sync folders in &Explorer's Navigation Pane - Pokaži mape usklajevanja v bočnem oknu programa &Explorer - Use &monochrome icons @@ -3061,6 +3138,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Prejeto je obvestilo strežnika, ki zahteva pozornost. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3071,18 +3153,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Samodejnega zagona ni mogoče izklopiti, ker je ta omogočen sistemsko. - - - - stable - stabilni - - - - - beta - preizkusni - Change update channel? @@ -3109,6 +3179,13 @@ Zavedati se je treba, da izbor določa le različice programske opreme za nadgra + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3117,14 +3194,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3137,17 +3217,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp Ali želite zamenjati kanal za posodobitve? - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5066,6 +5136,11 @@ Server replied with error: %2 Resharing this folder is not allowed Nadaljnje omogočanje souporabe mape ni dovoljeno + + + Copy internal link + Kopiraj krajevno povezavo + Copy secure file drop link @@ -5077,21 +5152,16 @@ Server replied with error: %2 Copy public link Kopiraj javno povezavo - - - Copy secure filedrop link - - - - - Copy internal link - Kopiraj krajevno povezavo - Encrypt Šifriraj + + + Copy secure filedrop link + + Lock file @@ -6375,11 +6445,6 @@ Server replied with error: %2 Create a new share link Ustvari novo povezavo za souporabo - - - Copy share link location - - Copied! @@ -6390,6 +6455,11 @@ Server replied with error: %2 Share options Možnosti souporabe + + + Copy share link location + + ShareDetailsPage @@ -6598,6 +6668,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6606,6 +6694,14 @@ Server replied with error: %2 Iskanje datotek, sporočil, dogodkov ... + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_sr.ts b/translations/client_sr.ts index c8dd02c5e9fb6..2f6d8efd9a985 100644 --- a/translations/client_sr.ts +++ b/translations/client_sr.ts @@ -166,6 +166,66 @@ Верзија сервера + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Додај нови налог + + + Unified search results list + Листа резултата обједињене претраге + Settings @@ -456,6 +521,11 @@ Current account avatar Тренутни аватар налога + + + New activities + Нове активности + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser Отвори %1 у прегледачу - - - Unified search results list - Листа резултата обједињене претраге - - - - New activities - Нове активности - OCC::AbstractNetworkJob @@ -2879,37 +2939,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Напредно - About О програму - - - Ask for confirmation before synchronizing new folders larger than - Питај за потврду пре синхронизације нових фолдера већих од - Legal notice Правно обавештење - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Користи &једнобојне иконе + + General Settings + Опште поставке @@ -2917,19 +2961,29 @@ Alternatively, you can restore all deleted files by downloading them from the se Покрени при покретању &система - - Show Server &Notifications - Прикажи &обавештења са сервера + + Show Call Notifications + Прикажи обавештења о позиву - - Notify when synchronised folders grow larger than specified limit - Обавести када величина синхронизованих фолдера пређе задату границу + + For System Tray + За системску палету + + + + Use &Monochrome Icons + Користи &једнобојне иконе - Show Call Notifications - Прикажи обавештења о позиву + Show Chat Notifications + + + + + Show Server &Notifications + Прикажи &обавештења са сервера @@ -2941,16 +2995,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Аутоматски проверавај за ажурирања - - - Automatically disable synchronisation of folders that overcome limit - Аутоматски искључи синхронизацију фолдера чија величина пређе границу - &Channel &Канал + + + + stable + стабилан + + + + + beta + бета + + + + &Restart && Update + &Поново покрени и ажурирај + + + + &Check for Update now + &Провери ажурирања сад + + + + Advanced + Напредно + + + + Ask for confirmation before synchronizing new folders larger than + Питај за потврду пре синхронизације нових фолдера већих од + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + Обавести када величина синхронизованих фолдера пређе задату границу + + + + Automatically disable synchronisation of folders that overcome limit + Аутоматски искључи синхронизацију фолдера чија величина пређе границу + Ask for confirmation before synchronizing external storages @@ -2982,11 +3079,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Креирај дибаг архиву - - - &Check for Update now - &Провери ажурирања сад - Info @@ -3008,9 +3100,9 @@ Alternatively, you can restore all deleted files by downloading them from the se Канал ажурирања - - &Restart && Update - &Поново покрени и ажурирај + + Show sync folders in &Explorer's Navigation Pane + Прикажи синхронизоване фасцикле у &Експлореровом навигационом панелу @@ -3032,21 +3124,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice Правно обавештење - - - General Settings - Опште поставке - - - - For System Tray - За системску палету - - - - Show sync folders in &Explorer's Navigation Pane - Прикажи синхронизоване фасцикле у &Експлореровом навигационом панелу - Use &monochrome icons @@ -3072,6 +3149,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Обавештења са сервера која захтевају пажњу. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3082,18 +3164,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Не можете да искључите аутостарт јер је укључен аутостарт на нивоу система. - - - - stable - стабилан - - - - - beta - бета - Change update channel? @@ -3120,6 +3190,14 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + - предузетничка: садржи стабилне верзије за муштерије. + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3131,15 +3209,22 @@ Downgrading versions is not possible immediately: changing from beta to stable m Враћање на старију верзију није могуће тренутно: промена са бета канала на стабилни значи да ће се чекати на нову стабилну верзију. - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - предузетничка: садржи стабилне верзије за муштерије. - + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + Канал одређује која ажурирања ће се понудити за инсталирање: +- стабилни: садржи тестиране верзије које се сматрају за поуздане +- бета: садржи верзије са новим функцијама које можда нису темељно тестиране +- дневни: садржи верзије које се креирају свакодневно и служе само за тестирање и развој +%1 +Враћање на старију верзију није могуће тренутно: промена са бета канала на стабилни значи да ће се чекати на нову стабилну верзију. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3154,22 +3239,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp Мењате ли канал ажурирања? - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Канал одређује која ажурирања ће се понудити за инсталирање: -- стабилни: садржи тестиране верзије које се сматрају за поуздане -- бета: садржи верзије са новим функцијама које можда нису темељно тестиране -- дневни: садржи верзије које се креирају свакодневно и служе само за тестирање и развој -%1 -Враћање на старију верзију није могуће тренутно: промена са бета канала на стабилни значи да ће се чекати на нову стабилну верзију. - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5092,6 +5162,11 @@ Server replied with error: %2 Resharing this folder is not allowed Поновно дељење овог фолдера није дозвољено + + + Copy internal link + Копирај интерну везу + Copy secure file drop link @@ -5103,21 +5178,16 @@ Server replied with error: %2 Copy public link Копирај јавну везу - - - Copy secure filedrop link - Копирај линк сигурног места за упуштање фајлова - - - - Copy internal link - Копирај интерну везу - Encrypt Шифруј + + + Copy secure filedrop link + Копирај линк сигурног места за упуштање фајлова + Lock file @@ -6401,11 +6471,6 @@ Server replied with error: %2 Create a new share link Направи нови линк дељења - - - Copy share link location - Копирај локацију линка дељења - Copied! @@ -6416,6 +6481,11 @@ Server replied with error: %2 Share options Опције дељења + + + Copy share link location + Копирај локацију линка дељења + ShareDetailsPage @@ -6624,6 +6694,24 @@ Server replied with error: %2 Мени коринисникових групних и локалних фолдера + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6632,6 +6720,14 @@ Server replied with error: %2 Претрага фајлова, порука, догађаја ... + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_sv.ts b/translations/client_sv.ts index c27c88a10d1a3..7ee52f53e9c71 100644 --- a/translations/client_sv.ts +++ b/translations/client_sv.ts @@ -166,6 +166,66 @@ Serverversion + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Lägg till nytt konto + + + Unified search results list + Sammanlagda sökresultat + Settings @@ -456,6 +521,11 @@ Current account avatar Avatar för aktuellt konto + + + New activities + Nya aktiviteter + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser Öppna %1 i webbläsare - - - Unified search results list - Sammanlagda sökresultat - - - - New activities - Nya aktiviteter - OCC::AbstractNetworkJob @@ -2879,37 +2939,21 @@ Alternativt kan du återställa alla raderade filer genom att ladda ner dem frå OCC::GeneralSettings - - - Advanced - Avancerat - About Om - - - Ask for confirmation before synchronizing new folders larger than - Fråga innan du synkroniserar nya mappar större än - Legal notice Rättsligt meddelande - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Använd &monokroma ikoner + + General Settings + Generella inställningar @@ -2917,19 +2961,29 @@ Alternativt kan du återställa alla raderade filer genom att ladda ner dem frå &Starta vid uppstart - - Show Server &Notifications - Visa server&aviseringar + + Show Call Notifications + Visa samtalsmeddelanden - - Notify when synchronised folders grow larger than specified limit - Meddela när synkroniserade mappar växer sig större än den angivna gränsen + + For System Tray + För aktivitetsfältet + + + + Use &Monochrome Icons + Använd &monokroma ikoner - Show Call Notifications - Visa samtalsmeddelanden + Show Chat Notifications + + + + + Show Server &Notifications + Visa server&aviseringar @@ -2941,16 +2995,59 @@ Alternativt kan du återställa alla raderade filer genom att ladda ner dem frå &Automatically check for Updates &Automatisk kontroll av uppdateringar - - - Automatically disable synchronisation of folders that overcome limit - Inaktivera automatiskt synkronisering av mappar som överskrider gränsen - &Channel &Kanal + + + + stable + stabil + + + + + beta + beta + + + + &Restart && Update + &Starta om && Uppdatera + + + + &Check for Update now + &Sök efter uppdateringar nu + + + + Advanced + Avancerat + + + + Ask for confirmation before synchronizing new folders larger than + Fråga innan du synkroniserar nya mappar större än + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + Meddela när synkroniserade mappar växer sig större än den angivna gränsen + + + + Automatically disable synchronisation of folders that overcome limit + Inaktivera automatiskt synkronisering av mappar som överskrider gränsen + Ask for confirmation before synchronizing external storages @@ -2982,11 +3079,6 @@ Alternativt kan du återställa alla raderade filer genom att ladda ner dem frå Create Debug Archive Skapa felsökningsarkiv - - - &Check for Update now - &Sök efter uppdateringar nu - Info @@ -3008,9 +3100,9 @@ Alternativt kan du återställa alla raderade filer genom att ladda ner dem frå Uppdateringskanal - - &Restart && Update - &Starta om && Uppdatera + + Show sync folders in &Explorer's Navigation Pane + Visa synkroniseringsmappar i &utforskarens navigeringsfönster @@ -3032,21 +3124,6 @@ Alternativt kan du återställa alla raderade filer genom att ladda ner dem frå Legal Notice Rättsligt meddelande - - - General Settings - Generella inställningar - - - - For System Tray - För aktivitetsfältet - - - - Show sync folders in &Explorer's Navigation Pane - Visa synkroniseringsmappar i &utforskarens navigeringsfönster - Use &monochrome icons @@ -3072,6 +3149,11 @@ Alternativt kan du återställa alla raderade filer genom att ladda ner dem frå Server notifications that require attention. Serveraviseringar som kräver uppmärksamhet. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3082,18 +3164,6 @@ Alternativt kan du återställa alla raderade filer genom att ladda ner dem frå You cannot disable autostart because system-wide autostart is enabled. Du kan inte deaktivera autostart eftersom autostart är aktiverat på systemnivå. - - - - stable - stabil - - - - - beta - beta - Change update channel? @@ -3120,6 +3190,14 @@ Observera att detta endast väljer vilken pool uppgraderingar tas från, och att + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + - enterprise: innehåller stabila versioner för kunder. + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3131,15 +3209,22 @@ Downgrading versions is not possible immediately: changing from beta to stable m Nedgradering av versioner är inte möjligt omedelbart: att byta från beta till stabil innebär att vänta på den nya stabila versionen. - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - enterprise: innehåller stabila versioner för kunder. - + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + Kanalen avgör vilka uppgraderingar som kommer att erbjudas att installera: +- stable: innehåller testade versioner som anses tillförlitliga +- beta: innehåller versioner med nya funktioner som kanske inte testas noggrant +- daily: innehåller versioner som skapas dagligen endast för testning och utveckling +%1 +Nedgradering av versioner är inte möjlig omedelbart: att byta från beta till stabil innebär att man väntar på den nya stabila versionen. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3154,22 +3239,7 @@ Det är inte möjligt att nedgradera versioner omedelbart: att byta från stabil Ändra uppdateringskanal? - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Kanalen avgör vilka uppgraderingar som kommer att erbjudas att installera: -- stable: innehåller testade versioner som anses tillförlitliga -- beta: innehåller versioner med nya funktioner som kanske inte testas noggrant -- daily: innehåller versioner som skapas dagligen endast för testning och utveckling -%1 -Nedgradering av versioner är inte möjlig omedelbart: att byta från beta till stabil innebär att man väntar på den nya stabila versionen. - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5092,6 +5162,11 @@ Servern svarade med fel: %2 Resharing this folder is not allowed Vidaredelning av denna mapp är inte tillåtet + + + Copy internal link + Kopiera intern länk + Copy secure file drop link @@ -5103,21 +5178,16 @@ Servern svarade med fel: %2 Copy public link Kopiera publik länk - - - Copy secure filedrop link - Kopiera säker gömd fillista-länk - - - - Copy internal link - Kopiera intern länk - Encrypt Kryptera + + + Copy secure filedrop link + Kopiera säker gömd fillista-länk + Lock file @@ -6401,11 +6471,6 @@ Servern svarade med fel: %2 Create a new share link Skapa en ny delad länk - - - Copy share link location - Kopiera delningslänkens plats - Copied! @@ -6416,6 +6481,11 @@ Servern svarade med fel: %2 Share options Delningsalternativ + + + Copy share link location + Kopiera delningslänkens plats + ShareDetailsPage @@ -6624,6 +6694,24 @@ Servern svarade med fel: %2 Användargrupp och meny för lokala mappar + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6632,6 +6720,14 @@ Servern svarade med fel: %2 Sök efter filer, meddelanden, händelser... + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_th.ts b/translations/client_th.ts index 45690e785b8de..ebc5439659f0b 100644 --- a/translations/client_th.ts +++ b/translations/client_th.ts @@ -166,6 +166,66 @@ รุ่นเซิร์ฟเวอร์ + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account + + + Unified search results list + + Settings @@ -456,6 +521,11 @@ Current account avatar + + + New activities + + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser - - - Unified search results list - - - - - New activities - - OCC::AbstractNetworkJob @@ -2857,37 +2917,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - ขั้นสูง - About เกี่ยวกับ - - - Ask for confirmation before synchronizing new folders larger than - - Legal notice - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - เมกะไบต์ - - - - Use &Monochrome Icons - ใช้&ไอคอนขาวดำ + + General Settings + การตั้งค่าทั่วไป @@ -2895,18 +2939,28 @@ Alternatively, you can restore all deleted files by downloading them from the se &เปิดใช้งานเมื่อเริ่มต้นระบบ - - Show Server &Notifications + + Show Call Notifications + + + For System Tray + สำหรับถาดของระบบ + + + + Use &Monochrome Icons + ใช้&ไอคอนขาวดำ + - Notify when synchronised folders grow larger than specified limit + Show Chat Notifications - - Show Call Notifications + + Show Server &Notifications @@ -2920,13 +2974,56 @@ Alternatively, you can restore all deleted files by downloading them from the se - - Automatically disable synchronisation of folders that overcome limit + + &Channel - - &Channel + + + stable + + + + + + beta + + + + + &Restart && Update + &เริ่มต้นใหม่และอัปเดต + + + + &Check for Update now + &ตรวจสอบการอัปเดตตอนนี้ + + + + Advanced + ขั้นสูง + + + + 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 @@ -2960,11 +3057,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive - - - &Check for Update now - &ตรวจสอบการอัปเดตตอนนี้ - Info @@ -2986,9 +3078,9 @@ Alternatively, you can restore all deleted files by downloading them from the se - - &Restart && Update - &เริ่มต้นใหม่และอัปเดต + + Show sync folders in &Explorer's Navigation Pane + @@ -3010,21 +3102,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice - - - General Settings - การตั้งค่าทั่วไป - - - - For System Tray - สำหรับถาดของระบบ - - - - Show sync folders in &Explorer's Navigation Pane - - Use &monochrome icons @@ -3050,6 +3127,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3060,18 +3142,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. - - - - stable - - - - - - beta - - Change update channel? @@ -3096,6 +3166,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3104,14 +3181,17 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3124,17 +3204,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5042,6 +5112,11 @@ Server replied with error: %2 Resharing this folder is not allowed + + + Copy internal link + + Copy secure file drop link @@ -5054,18 +5129,13 @@ Server replied with error: %2 - - Copy secure filedrop link - - - - - Copy internal link + + Encrypt - - Encrypt + + Copy secure filedrop link @@ -6350,11 +6420,6 @@ Server replied with error: %2 Create a new share link - - - Copy share link location - - Copied! @@ -6365,6 +6430,11 @@ Server replied with error: %2 Share options + + + Copy share link location + + ShareDetailsPage @@ -6573,6 +6643,24 @@ Server replied with error: %2 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6581,6 +6669,14 @@ Server replied with error: %2 + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_tr.ts b/translations/client_tr.ts index f40e4a32133d8..beceeb40e292b 100644 --- a/translations/client_tr.ts +++ b/translations/client_tr.ts @@ -166,6 +166,66 @@ Sunucu sürümü + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Yeni hesap ekle + + + Unified search results list + Birleşik arama sonuçları listesi + Settings @@ -456,6 +521,11 @@ Current account avatar Geçerli hesap avatarı + + + New activities + Yeni işlemler + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser %1 ögesini tarayıcıda aç - - - Unified search results list - Birleşik arama sonuçları listesi - - - - New activities - Yeni işlemler - OCC::AbstractNetworkJob @@ -2878,37 +2938,21 @@ Bir yanlışlık varsa, silinen tüm dosyaları sunucudan indirerek geri yükley OCC::GeneralSettings - - - Advanced - Gelişmiş - About Hakkında - - - Ask for confirmation before synchronizing new folders larger than - Şu boyuttan büyük yeni klasörlerin eşitlenmesi için onay istensin - Legal notice Yasal bildirim - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Tek &renkli simgeler kullanılsın + + General Settings + Genel ayarlar @@ -2916,19 +2960,29 @@ Bir yanlışlık varsa, silinen tüm dosyaları sunucudan indirerek geri yükley &Sistem başlangıcında çalıştırılsın - - Show Server &Notifications - Su&nucu bildirimleri görüntülensin + + Show Call Notifications + Çağrı bildirimleri görüntülensin - - Notify when synchronised folders grow larger than specified limit - Klasörler eşitlenirken belirtilen sınır aşılırsa bildirilsin + + For System Tray + Sistem çekmecesi için + + + + Use &Monochrome Icons + Tek &renkli simgeler kullanılsın - Show Call Notifications - Çağrı bildirimleri görüntülensin + Show Chat Notifications + + + + + Show Server &Notifications + Su&nucu bildirimleri görüntülensin @@ -2940,16 +2994,59 @@ Bir yanlışlık varsa, silinen tüm dosyaları sunucudan indirerek geri yükley &Automatically check for Updates &Güncellemeler otomatik olarak denetlensin - - - Automatically disable synchronisation of folders that overcome limit - Sınırı aşan klasörlerin eşitlenmesi otomatik olarak durdurulsun - &Channel &Kanal + + + + stable + Kararlı + + + + + beta + Beta + + + + &Restart && Update + &Yeniden başlat ve güncelle + + + + &Check for Update now + &Güncellemeri denetle + + + + Advanced + Gelişmiş + + + + Ask for confirmation before synchronizing new folders larger than + Şu boyuttan büyük yeni klasörlerin eşitlenmesi için onay istensin + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + Klasörler eşitlenirken belirtilen sınır aşılırsa bildirilsin + + + + Automatically disable synchronisation of folders that overcome limit + Sınırı aşan klasörlerin eşitlenmesi otomatik olarak durdurulsun + Ask for confirmation before synchronizing external storages @@ -2981,11 +3078,6 @@ Bir yanlışlık varsa, silinen tüm dosyaları sunucudan indirerek geri yükley Create Debug Archive Hata ayıklama arşivi oluştur - - - &Check for Update now - &Güncellemeri denetle - Info @@ -3007,9 +3099,9 @@ Bir yanlışlık varsa, silinen tüm dosyaları sunucudan indirerek geri yükley Güncelleme kanalı - - &Restart && Update - &Yeniden başlat ve güncelle + + Show sync folders in &Explorer's Navigation Pane + &Eşitleme klasörleri gezgin panosunda görüntülensin @@ -3031,21 +3123,6 @@ Bir yanlışlık varsa, silinen tüm dosyaları sunucudan indirerek geri yükley Legal Notice Yasal bildirim - - - General Settings - Genel ayarlar - - - - For System Tray - Sistem çekmecesi için - - - - Show sync folders in &Explorer's Navigation Pane - &Eşitleme klasörleri gezgin panosunda görüntülensin - Use &monochrome icons @@ -3071,6 +3148,11 @@ Bir yanlışlık varsa, silinen tüm dosyaları sunucudan indirerek geri yükley Server notifications that require attention. İlgilenmeniz gereken sunucu bildirimleri. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3081,18 +3163,6 @@ Bir yanlışlık varsa, silinen tüm dosyaları sunucudan indirerek geri yükley You cannot disable autostart because system-wide autostart is enabled. Otomatik başlatma sistem genelinde kullanıma alınmış olduğundan, otomatik başlatma kullanımdan kaldırılamaz. - - - - stable - Kararlı - - - - - beta - Beta - Change update channel? @@ -3119,6 +3189,14 @@ Bu seçenek yalnızca güncellemelerin hangi havuzdan alınacağını belirler. + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + - Kurumsal: Müşteriler için kararlı sürümleri içerir. + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3130,15 +3208,22 @@ Downgrading versions is not possible immediately: changing from beta to stable m Sürümler hemen düşürülemez: Beta sürümünden Kararlı sürüme geçmek için yeni bir kararlı sürümün yayınlanması beklenmelidir. - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - Kurumsal: Müşteriler için kararlı sürümleri içerir. - + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + Kanal, hangi güncellemelerin kurulacağını belirler: +- Kararlı: Güvenilir kabul edilen denenmiş sürümler +- Beta: Kapsamlı denenmemiş ancak yeni özellikler bulunan sürümler +- Günlük: Yalnızca deneme ve geliştirme için günlük olarak oluşturulan sürümler +%1 +Sürümler hemen düşürülemez: Beta sürümünden Kararlı sürüme geçmek için yeni bir kararlı sürümün yayınlanması beklenmelidir. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3153,22 +3238,7 @@ Sürümler hemen düşürülemez: Kararlı sürümünden Enterprise sürüme ge Güncelleme kanalı değiştirilsin mi? - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Kanal, hangi güncellemelerin kurulacağını belirler: -- Kararlı: Güvenilir kabul edilen denenmiş sürümler -- Beta: Kapsamlı denenmemiş ancak yeni özellikler bulunan sürümler -- Günlük: Yalnızca deneme ve geliştirme için günlük olarak oluşturulan sürümler -%1 -Sürümler hemen düşürülemez: Beta sürümünden Kararlı sürüme geçmek için yeni bir kararlı sürümün yayınlanması beklenmelidir. - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5091,6 +5161,11 @@ Sunucunun verdiği hata yanıtı: %2 Resharing this folder is not allowed Bu klasör yeniden paylaşılamaz + + + Copy internal link + İç bağlantıyı kopyala + Copy secure file drop link @@ -5102,21 +5177,16 @@ Sunucunun verdiği hata yanıtı: %2 Copy public link Herkese açık bağlantıyı kopyala - - - Copy secure filedrop link - Güvenli dosya bırakma bağlantısını kopyala - - - - Copy internal link - İç bağlantıyı kopyala - Encrypt Şifrele + + + Copy secure filedrop link + Güvenli dosya bırakma bağlantısını kopyala + Lock file @@ -6400,11 +6470,6 @@ Sunucunun verdiği hata yanıtı: %2 Create a new share link Yeni bir paylaşım bağlantısı ekle - - - Copy share link location - Paylaşım bağlantısı konumunu kopyala - Copied! @@ -6415,6 +6480,11 @@ Sunucunun verdiği hata yanıtı: %2 Share options Paylaşım seçenekleri + + + Copy share link location + Paylaşım bağlantısı konumunu kopyala + ShareDetailsPage @@ -6623,6 +6693,24 @@ Sunucunun verdiği hata yanıtı: %2 Kullanıcı grup ve yerel klasörler menüsü + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6631,6 +6719,14 @@ Sunucunun verdiği hata yanıtı: %2 Dosya, ileti, etkinlik arayın … + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_ug.ts b/translations/client_ug.ts index b05fd02d8df27..79e575fe23947 100644 --- a/translations/client_ug.ts +++ b/translations/client_ug.ts @@ -166,6 +166,66 @@ مۇلازىمېتىر نەشرى + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account يېڭى ھېسابات قوشۇڭ + + + Unified search results list + بىرلىككە كەلگەن ئىزدەش نەتىجىسى تىزىملىكى + Settings @@ -456,6 +521,11 @@ Current account avatar نۆۋەتتىكى ھېسابات باش سۈرىتى + + + New activities + يېڭى پائالىيەتلەر + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser تور كۆرگۈچتە% 1 نى ئېچىڭ - - - Unified search results list - بىرلىككە كەلگەن ئىزدەش نەتىجىسى تىزىملىكى - - - - New activities - يېڭى پائالىيەتلەر - OCC::AbstractNetworkJob @@ -2879,37 +2939,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Advanced - About ھەققىدە - - - Ask for confirmation before synchronizing new folders larger than - ئۇنىڭدىن چوڭراق يېڭى ھۆججەت قىسقۇچلارنى ماسقەدەملەشتىن بۇرۇن جەزملەشتۈرۈڭ - Legal notice قانۇن ئۇقتۇرۇشى - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - & Monochrome سىنبەلگىسىنى ئىشلىتىڭ + + General Settings + ئادەتتىكى تەڭشەكلەر @@ -2917,19 +2961,29 @@ Alternatively, you can restore all deleted files by downloading them from the se & سىستېما قوزغىتىشنى قوزغىتىش - - Show Server &Notifications - مۇلازىمېتىر ۋە ئۇقتۇرۇشلارنى كۆرسىتىش + + Show Call Notifications + چاقىرىش ئۇقتۇرۇشىنى كۆرسىتىش - - Notify when synchronised folders grow larger than specified limit - ماس قەدەملىك ھۆججەت قىسقۇچنىڭ بەلگىلەنگەن چەكتىن چوڭ بولغاندا قاچان ئۇقتۇرۇڭ + + For System Tray + سىستېما تەخسىسى ئۈچۈن + + + + Use &Monochrome Icons + & Monochrome سىنبەلگىسىنى ئىشلىتىڭ - Show Call Notifications - چاقىرىش ئۇقتۇرۇشىنى كۆرسىتىش + Show Chat Notifications + + + + + Show Server &Notifications + مۇلازىمېتىر ۋە ئۇقتۇرۇشلارنى كۆرسىتىش @@ -2941,16 +2995,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates & يېڭىلانمىلارنى ئاپتوماتىك تەكشۈرۈڭ - - - Automatically disable synchronisation of folders that overcome limit - چەكتىن ئېشىپ كەتكەن ھۆججەت قىسقۇچلارنىڭ ماسقەدەملىنىشىنى ئاپتوماتىك چەكلەيدۇ - &Channel & Channel + + + + stable + مۇقىم + + + + + beta + beta + + + + &Restart && Update + & قايتا قوزغىتىش && يېڭىلاش + + + + &Check for Update now + & يېڭىلاشنى تەكشۈرۈڭ + + + + Advanced + Advanced + + + + Ask for confirmation before synchronizing new folders larger than + ئۇنىڭدىن چوڭراق يېڭى ھۆججەت قىسقۇچلارنى ماسقەدەملەشتىن بۇرۇن جەزملەشتۈرۈڭ + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + ماس قەدەملىك ھۆججەت قىسقۇچنىڭ بەلگىلەنگەن چەكتىن چوڭ بولغاندا قاچان ئۇقتۇرۇڭ + + + + Automatically disable synchronisation of folders that overcome limit + چەكتىن ئېشىپ كەتكەن ھۆججەت قىسقۇچلارنىڭ ماسقەدەملىنىشىنى ئاپتوماتىك چەكلەيدۇ + Ask for confirmation before synchronizing external storages @@ -2982,11 +3079,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive خاتالىق ئارخىپى قۇرۇش - - - &Check for Update now - & يېڭىلاشنى تەكشۈرۈڭ - Info @@ -3008,9 +3100,9 @@ Alternatively, you can restore all deleted files by downloading them from the se قانالنى يېڭىلاش - - &Restart && Update - & قايتا قوزغىتىش && يېڭىلاش + + Show sync folders in &Explorer's Navigation Pane + & Explorer نىڭ يولباشچى تاختىسىدا ماسقەدەم ھۆججەت قىسقۇچنى كۆرسىتىڭ @@ -3032,21 +3124,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice قانۇن ئۇقتۇرۇشى - - - General Settings - ئادەتتىكى تەڭشەكلەر - - - - For System Tray - سىستېما تەخسىسى ئۈچۈن - - - - Show sync folders in &Explorer's Navigation Pane - & Explorer نىڭ يولباشچى تاختىسىدا ماسقەدەم ھۆججەت قىسقۇچنى كۆرسىتىڭ - Use &monochrome icons @@ -3072,6 +3149,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. دىققەت قىلىشنى تەلەپ قىلىدىغان مۇلازىمېتىر ئۇقتۇرۇشى. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3082,18 +3164,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. ئاپتوماتىك قوزغىتىشنى چەكلىيەلمەيسىز ، چۈنكى سىستېما بويىچە ئاپتوماتىك قوزغىتىش ئىقتىدارى قوزغىتىلغان. - - - - stable - مۇقىم - - - - - beta - beta - Change update channel? @@ -3120,6 +3190,14 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + - كارخانا: خېرىدارلارنىڭ مۇقىم نەشرىنى ئۆز ئىچىگە ئالىدۇ. + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3131,15 +3209,22 @@ Downgrading versions is not possible immediately: changing from beta to stable m دەرىجىسىنى تۆۋەنلىتىش دەرھال مۇمكىن ئەمەس: سىناقتىن مۇقىم ھالەتكە ئۆزگەرتىش يېڭى مۇقىم نەشرىنى ساقلاشنى كۆرسىتىدۇ. - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - كارخانا: خېرىدارلارنىڭ مۇقىم نەشرىنى ئۆز ئىچىگە ئالىدۇ. - + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + بۇ قانال قايسى يېڭىلاشلارنىڭ ئورنىتىلىدىغانلىقىنى بەلگىلەيدۇ: +- مۇقىم: ئىشەنچلىك دەپ قارالغان سىناق نۇسخىسىنى ئۆز ئىچىگە ئالىدۇ +- beta: تولۇق سىناق قىلىنماسلىقى مۇمكىن بولغان يېڭى ئىقتىدارلىرى بار نۇسخىسى بار +- كۈندىلىك: پەقەت سىناق ۋە ئېچىش ئۈچۈنلا ياسالغان نۇسخىسىنى ئۆز ئىچىگە ئالىدۇ +% 1 +دەرىجىسىنى تۆۋەنلىتىش دەرھال مۇمكىن ئەمەس: سىناقتىن مۇقىم ھالەتكە ئۆزگەرتىش يېڭى مۇقىم نەشرىنى ساقلاشنى كۆرسىتىدۇ. - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3154,22 +3239,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp يېڭىلاش قانىلىنى ئۆزگەرتەمسىز؟ - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - بۇ قانال قايسى يېڭىلاشلارنىڭ ئورنىتىلىدىغانلىقىنى بەلگىلەيدۇ: -- مۇقىم: ئىشەنچلىك دەپ قارالغان سىناق نۇسخىسىنى ئۆز ئىچىگە ئالىدۇ -- beta: تولۇق سىناق قىلىنماسلىقى مۇمكىن بولغان يېڭى ئىقتىدارلىرى بار نۇسخىسى بار -- كۈندىلىك: پەقەت سىناق ۋە ئېچىش ئۈچۈنلا ياسالغان نۇسخىسىنى ئۆز ئىچىگە ئالىدۇ -% 1 -دەرىجىسىنى تۆۋەنلىتىش دەرھال مۇمكىن ئەمەس: سىناقتىن مۇقىم ھالەتكە ئۆزگەرتىش يېڭى مۇقىم نەشرىنى ساقلاشنى كۆرسىتىدۇ. - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5092,6 +5162,11 @@ Server replied with error: %2 Resharing this folder is not allowed بۇ ھۆججەت قىسقۇچنى قايتا ئىشلىتىشكە بولمايدۇ + + + Copy internal link + ئىچكى ئۇلىنىشنى كۆچۈرۈڭ + Copy secure file drop link @@ -5103,21 +5178,16 @@ Server replied with error: %2 Copy public link ئاممىۋى ئۇلىنىشنى كۆچۈرۈڭ - - - Copy secure filedrop link - بىخەتەر ئارخىپ ئۇلىنىشىنى كۆچۈرۈڭ - - - - Copy internal link - ئىچكى ئۇلىنىشنى كۆچۈرۈڭ - Encrypt شىفىرلاش + + + Copy secure filedrop link + بىخەتەر ئارخىپ ئۇلىنىشىنى كۆچۈرۈڭ + Lock file @@ -6401,11 +6471,6 @@ Server replied with error: %2 Create a new share link يېڭى ئورتاقلىشىش ئۇلىنىشى قۇر - - - Copy share link location - ھەمبەھىر ئۇلىنىش ئورنىنى كۆچۈرۈڭ - Copied! @@ -6416,6 +6481,11 @@ Server replied with error: %2 Share options ئورتاقلىشىش تاللانمىلىرى + + + Copy share link location + ھەمبەھىر ئۇلىنىش ئورنىنى كۆچۈرۈڭ + ShareDetailsPage @@ -6624,6 +6694,24 @@ Server replied with error: %2 ئىشلەتكۈچى گۇرۇپپىسى ۋە يەرلىك ھۆججەت قىسقۇچ تىزىملىكى + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6632,6 +6720,14 @@ Server replied with error: %2 ھۆججەت ، ئۇچۇر ، ۋەقەلەرنى ئىزدە… + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_uk.ts b/translations/client_uk.ts index 48191874442f0..3e18f0ca0cf0d 100644 --- a/translations/client_uk.ts +++ b/translations/client_uk.ts @@ -166,6 +166,66 @@ Віддалена версія + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account Додати новий обліковий запис + + + Unified search results list + Результати пошуку + Settings @@ -456,6 +521,11 @@ Current account avatar Пікторграма для цього користувача + + + New activities + Нові події + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser Відкрити %1 в бравзері - - - Unified search results list - Результати пошуку - - - - New activities - Нові події - OCC::AbstractNetworkJob @@ -2879,37 +2939,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - Додатково - About Опис - - - Ask for confirmation before synchronizing new folders larger than - Питати підтвердження перед синхронізацією каталогу, розмір якого перевищує - Legal notice Правові застереження - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Використовувати &чорно-білі значки + + General Settings + Загальні @@ -2917,19 +2961,29 @@ Alternatively, you can restore all deleted files by downloading them from the se &Запускати при старті Системи - - Show Server &Notifications - Показувати &Сповіщення сервера + + Show Call Notifications + Показати сповіщення викликів - - Notify when synchronised folders grow larger than specified limit - Сповіщати, коли каталоги, що синхронізуються, збільшуються у розмірі понад встановлене обмеженння + + For System Tray + Для системного трею + + + + Use &Monochrome Icons + Використовувати &чорно-білі значки - Show Call Notifications - Показати сповіщення викликів + Show Chat Notifications + + + + + Show Server &Notifications + Показувати &Сповіщення сервера @@ -2941,16 +2995,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Автоматично перевіряти оновлення - - - Automatically disable synchronisation of folders that overcome limit - Автоматично вимикати синхронізацію каталогів, розмір яких перевищує обмеження - &Channel &Канал + + + + stable + Стабільний + + + + + beta + Бета-версія + + + + &Restart && Update + &Перезавантажити та оновити + + + + &Check for Update now + &Перевірити оновлення + + + + Advanced + Додатково + + + + Ask for confirmation before synchronizing new folders larger than + Питати підтвердження перед синхронізацією каталогу, розмір якого перевищує + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + Сповіщати, коли каталоги, що синхронізуються, збільшуються у розмірі понад встановлене обмеженння + + + + Automatically disable synchronisation of folders that overcome limit + Автоматично вимикати синхронізацію каталогів, розмір яких перевищує обмеження + Ask for confirmation before synchronizing external storages @@ -2982,11 +3079,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive Створити архів зневадження - - - &Check for Update now - &Перевірити оновлення - Info @@ -3008,9 +3100,9 @@ Alternatively, you can restore all deleted files by downloading them from the se Оновити канал - - &Restart && Update - &Перезавантажити та оновити + + Show sync folders in &Explorer's Navigation Pane + Показувати каталоги для синхронізації у панелі &Файлового провідника @@ -3032,21 +3124,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice Правові застереження - - - General Settings - Загальні - - - - For System Tray - Для системного трею - - - - Show sync folders in &Explorer's Navigation Pane - Показувати каталоги для синхронізації у панелі &Файлового провідника - Use &monochrome icons @@ -3072,6 +3149,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. Сповіщення сервера, на які треба звернути увагу. + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3082,18 +3164,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Неможливо вимкнути автостарт, оскільки увімкнено автоматичний запуск на рівні системи. - - - - stable - Стабільний - - - - - beta - Бета-версія - Change update channel? @@ -3118,17 +3188,6 @@ Note that this selects only what pool upgrades are taken from, and that there ar enterprise для бізнесу - - - - beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development - -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - list of available update channels to non enterprise users and downgrading warning - - бета: містить версії з новим функціональом, проте можуть бути не протестовані ретельно -- щоденні: містить версії, створені кожного дня, призначено для тестування та розробки -Пониження версії не відбувається одразу: повернення з каналу "бета" до "стабільного" означає, що ви матимете зачекати на нову стабільну версію. - - enterprise: contains stable versions for customers. @@ -3138,18 +3197,15 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - - enterprise: contains stable versions for customers. + + - beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development -Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. - list of available update channels to enterprise users and downgrading warning - - для бізнесу: містит стабільні версії для користувачів компаній та організацій. -Пониження версії не відбувається одразу: повернення з каналу "бета" до "для бізнесу" означає, що ви матимете зачекати на нову версію для бізнесу. - - - - Changing update channel? - Змінити канал оновлення? +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + list of available update channels to non enterprise users and downgrading warning + - бета: містить версії з новим функціональом, проте можуть бути не протестовані ретельно +- щоденні: містить версії, створені кожного дня, призначено для тестування та розробки +Пониження версії не відбувається одразу: повернення з каналу "бета" до "стабільного" означає, що ви матимете зачекати на нову стабільну версію. @@ -3167,7 +3223,21 @@ Downgrading versions is not possible immediately: changing from beta to stable m Пониження версії не відбувається одразу: зміна з каналу "бета" на "стабільни! можлива тільки з наступного випуску стабільної версії. - + + - enterprise: contains stable versions for customers. + +Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. + list of available update channels to enterprise users and downgrading warning + - для бізнесу: містит стабільні версії для користувачів компаній та організацій. +Пониження версії не відбувається одразу: повернення з каналу "бета" до "для бізнесу" означає, що ви матимете зачекати на нову версію для бізнесу. + + + + Changing update channel? + Змінити канал оновлення? + + + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5090,6 +5160,11 @@ Server replied with error: %2 Resharing this folder is not allowed Надання цього каталогу у спільний доступ іншим не дозволено + + + Copy internal link + Копіювати посилання + Copy secure file drop link @@ -5101,21 +5176,16 @@ Server replied with error: %2 Copy public link Копіювати публічне посилання - - - Copy secure filedrop link - Копіювати посилання для безпечного копіювання файлів - - - - Copy internal link - Копіювати посилання - Encrypt Зашифрувати + + + Copy secure filedrop link + Копіювати посилання для безпечного копіювання файлів + Lock file @@ -6399,11 +6469,6 @@ Server replied with error: %2 Create a new share link Створити нове посилання на спільний доступ - - - Copy share link location - Копіювати посилання спільного доступу - Copied! @@ -6414,6 +6479,11 @@ Server replied with error: %2 Share options Параметри спільного доступу + + + Copy share link location + Копіювати посилання спільного доступу + ShareDetailsPage @@ -6622,6 +6692,24 @@ Server replied with error: %2 Меню груп користувачів та локальних каталогів + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6630,6 +6718,14 @@ Server replied with error: %2 Шукати файли, повідомлення, події... + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_zh_CN.ts b/translations/client_zh_CN.ts index 952a6cea91627..ef46971ce2ec6 100644 --- a/translations/client_zh_CN.ts +++ b/translations/client_zh_CN.ts @@ -166,6 +166,66 @@ 服务器版本 + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account 添加新账号 + + + Unified search results list + 统一搜索结果列表 + Settings @@ -456,6 +521,11 @@ Current account avatar 当前账号头像 + + + New activities + 新动态 + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser 在浏览器中打开 %1 - - - Unified search results list - 统一搜索结果列表 - - - - New activities - 新动态 - OCC::AbstractNetworkJob @@ -2873,37 +2933,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - 高级 - About 关于 - - - Ask for confirmation before synchronizing new folders larger than - 请询问确认同步,若同步新文件夹大于 - Legal notice 法律提示 - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - 使用单色图标(&M) + + General Settings + 常规设置 @@ -2911,19 +2955,29 @@ Alternatively, you can restore all deleted files by downloading them from the se 在系统启动时启动(&L) - - Show Server &Notifications - 显示服务器通知(&N) + + Show Call Notifications + 显示通话通知 - - Notify when synchronised folders grow larger than specified limit - 当同步文件夹的大小超过指定限制时发出通知 + + For System Tray + 系统托盘 + + + + Use &Monochrome Icons + 使用单色图标(&M) - Show Call Notifications - 显示通话通知 + Show Chat Notifications + + + + + Show Server &Notifications + 显示服务器通知(&N) @@ -2935,16 +2989,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates 自动检查更新 (&A) - - - Automatically disable synchronisation of folders that overcome limit - 自动禁用超出限制的文件夹同步 - &Channel &通道 + + + + stable + 稳定版 + + + + + beta + 测试版 + + + + &Restart && Update + 重启并更新(&R) + + + + &Check for Update now + 立即检查更新 (&C) + + + + Advanced + 高级 + + + + Ask for confirmation before synchronizing new folders larger than + 请询问确认同步,若同步新文件夹大于 + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + 当同步文件夹的大小超过指定限制时发出通知 + + + + Automatically disable synchronisation of folders that overcome limit + 自动禁用超出限制的文件夹同步 + Ask for confirmation before synchronizing external storages @@ -2976,11 +3073,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive 创建调试存档 - - - &Check for Update now - 立即检查更新 (&C) - Info @@ -3002,9 +3094,9 @@ Alternatively, you can restore all deleted files by downloading them from the se 更新频道 - - &Restart && Update - 重启并更新(&R) + + Show sync folders in &Explorer's Navigation Pane + 在文件管理器的导航显示同步文件夹(&E) @@ -3026,21 +3118,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice 法律声明 - - - General Settings - 常规设置 - - - - For System Tray - 系统托盘 - - - - Show sync folders in &Explorer's Navigation Pane - 在文件管理器的导航显示同步文件夹(&E) - Use &monochrome icons @@ -3066,6 +3143,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. 需要注意的服务器通知。 + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3076,18 +3158,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. 你不能禁用自启动,因为系统级的自启动处于启用状态。 - - - - stable - 稳定版 - - - - - beta - 测试版 - Change update channel? @@ -3112,15 +3182,6 @@ Note that this selects only what pool upgrades are taken from, and that there ar enterprise 企业 - - - - beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development - -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - list of available update channels to non enterprise users and downgrading warning - - - enterprise: contains stable versions for customers. @@ -3129,18 +3190,14 @@ Downgrading versions is not possible immediately: changing from beta to stable m - 企业版:包含供客户使用的稳定版本。 - - - enterprise: contains stable versions for customers. + + - beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development -Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. - list of available update channels to enterprise users and downgrading warning +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + list of available update channels to non enterprise users and downgrading warning - - - Changing update channel? - 更改更新频道? - The channel determines which upgrades will be offered to install: @@ -3156,7 +3213,20 @@ Downgrading versions is not possible immediately: changing from beta to stable m 不能立即降级版本:从测试版切换到稳定版意味着要等待新的稳定版。 - + + - enterprise: contains stable versions for customers. + +Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. + list of available update channels to enterprise users and downgrading warning + + + + + Changing update channel? + 更改更新频道? + + + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5069,6 +5139,11 @@ Server replied with error: %2 Resharing this folder is not allowed 不允许重新分享这个文件夹 + + + Copy internal link + 复制内部链接 + Copy secure file drop link @@ -5080,21 +5155,16 @@ Server replied with error: %2 Copy public link 复制公开链接 - - - Copy secure filedrop link - 复制安全文件拖放链接 - - - - Copy internal link - 复制内部链接 - Encrypt 加密 + + + Copy secure filedrop link + 复制安全文件拖放链接 + Lock file @@ -6378,11 +6448,6 @@ Server replied with error: %2 Create a new share link 创建新的分享链接 - - - Copy share link location - 复制分享链接 - Copied! @@ -6393,6 +6458,11 @@ Server replied with error: %2 Share options 分享选项 + + + Copy share link location + 复制分享链接 + ShareDetailsPage @@ -6601,6 +6671,24 @@ Server replied with error: %2 用户群组和本地文件夹菜单 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6609,6 +6697,14 @@ Server replied with error: %2 搜索文件、消息、事件... + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_zh_HK.ts b/translations/client_zh_HK.ts index 2cacf00892be1..9d155436e593d 100644 --- a/translations/client_zh_HK.ts +++ b/translations/client_zh_HK.ts @@ -166,6 +166,66 @@ 伺服器版本 + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account 添加新帳戶 + + + Unified search results list + 統一搜尋結果清單 + Settings @@ -456,6 +521,11 @@ Current account avatar 目前帳戶虛擬化身 + + + New activities + 新活動紀錄 + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser 在瀏覽器中開啟 %1 - - - Unified search results list - 統一搜尋結果清單 - - - - New activities - 新活動紀錄 - OCC::AbstractNetworkJob @@ -2880,37 +2940,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - 進階 - About 關於 - - - Ask for confirmation before synchronizing new folders larger than - 先詢問,當要同步的新資料夾大小超過 - Legal notice 法律提示 - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - 使用&單色圖示 + + General Settings + 一般設定 @@ -2918,19 +2962,29 @@ Alternatively, you can restore all deleted files by downloading them from the se &系統啟動時啟動 - - Show Server &Notifications - 顯示系統訊息 + + Show Call Notifications + 顯示通話通告 - - Notify when synchronised folders grow larger than specified limit - 當同步資料夾的大小超過指定限制時發出通知 + + For System Tray + 顯示在工作列 + + + + Use &Monochrome Icons + 使用&單色圖示 - Show Call Notifications - 顯示通話通告 + Show Chat Notifications + + + + + Show Server &Notifications + 顯示系統訊息 @@ -2942,16 +2996,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates 自動檢查更新 - - - Automatically disable synchronisation of folders that overcome limit - 自動禁用超出限制的資料夾同步 - &Channel 頻道(&C) + + + + stable + 穩定版 + + + + + beta + 測試版 + + + + &Restart && Update + 重新啟動並更新(&R) + + + + &Check for Update now + 立即檢查更新 + + + + Advanced + 進階 + + + + Ask for confirmation before synchronizing new folders larger than + 先詢問,當要同步的新資料夾大小超過 + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + 當同步資料夾的大小超過指定限制時發出通知 + + + + Automatically disable synchronisation of folders that overcome limit + 自動禁用超出限制的資料夾同步 + Ask for confirmation before synchronizing external storages @@ -2983,11 +3080,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive 建立除錯壓縮檔 - - - &Check for Update now - 立即檢查更新 - Info @@ -3009,9 +3101,9 @@ Alternatively, you can restore all deleted files by downloading them from the se 更新頻道 - - &Restart && Update - 重新啟動並更新(&R) + + Show sync folders in &Explorer's Navigation Pane + 在檔案管理員中顯示資料夾 @@ -3033,21 +3125,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice 法律聲明 - - - General Settings - 一般設定 - - - - For System Tray - 顯示在工作列 - - - - Show sync folders in &Explorer's Navigation Pane - 在檔案管理員中顯示資料夾 - Use &monochrome icons @@ -3073,6 +3150,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. 伺服器公告,請注意 + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3083,18 +3165,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. 您不可以停用自動啟動,因為已啟用系統廣域自動啟動。 - - - - stable - 穩定版 - - - - - beta - 測試版 - Change update channel? @@ -3121,6 +3191,13 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + - 企業版:包含客戶穩定版本。 + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3132,14 +3209,22 @@ Downgrading versions is not possible immediately: changing from beta to stable m 無法立即降級版本:從測試版變更為穩定版必須等待新的穩定版本才能更新。 - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - 企業版:包含客戶穩定版本。 + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + 更新頻道決定將提供哪些升級進行安裝: +- 穩定版(stable):包含經過測試且被認為可靠的版本 +- 測試版(beta):包含可能尚未全面測試的新功能版本 +- 每日版(daily):包含每日創建的僅供測試和開發的版本 +%1 +版本降級無法立即進行:從測試版更改為穩定版意味著需要等待新的穩定版本。 - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3154,22 +3239,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp 變更更新頻道? - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - 更新頻道決定將提供哪些升級進行安裝: -- 穩定版(stable):包含經過測試且被認為可靠的版本 -- 測試版(beta):包含可能尚未全面測試的新功能版本 -- 每日版(daily):包含每日創建的僅供測試和開發的版本 -%1 -版本降級無法立即進行:從測試版更改為穩定版意味著需要等待新的穩定版本。 - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5092,6 +5162,11 @@ Server replied with error: %2 Resharing this folder is not allowed 不允許重新分享此資料夾 + + + Copy internal link + 複製內部連結 + Copy secure file drop link @@ -5103,21 +5178,16 @@ Server replied with error: %2 Copy public link 複製公共連結 - - - Copy secure filedrop link - 複製安全檔案投放連結 - - - - Copy internal link - 複製內部連結 - Encrypt 加密 + + + Copy secure filedrop link + 複製安全檔案投放連結 + Lock file @@ -6401,11 +6471,6 @@ Server replied with error: %2 Create a new share link 創建新分享連結 - - - Copy share link location - 複製分享連結位置 - Copied! @@ -6416,6 +6481,11 @@ Server replied with error: %2 Share options 分享選項 + + + Copy share link location + 複製分享連結位置 + ShareDetailsPage @@ -6624,6 +6694,24 @@ Server replied with error: %2 用戶群組及近端資料夾選項單 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6632,6 +6720,14 @@ Server replied with error: %2 搜索檔案、訊息、活動 ... + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger diff --git a/translations/client_zh_TW.ts b/translations/client_zh_TW.ts index ce8d01bd96978..5d9720801d217 100644 --- a/translations/client_zh_TW.ts +++ b/translations/client_zh_TW.ts @@ -166,6 +166,66 @@ 伺服器版本 + + CurrentAccountHeaderButton + + + Current account + + + + + + Resume sync for all + + + + + + Pause sync for all + + + + + Add account + + + + + Add new account + + + + + Settings + + + + + Exit + + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + + + EditFileLocallyLoadingDialog @@ -441,6 +501,11 @@ Add new account 新增新帳號 + + + Unified search results list + 統一搜尋結果清單 + Settings @@ -456,6 +521,11 @@ Current account avatar 目前帳號大頭照 + + + New activities + 新活動 + Current account status is online @@ -486,16 +556,6 @@ Open %1 in browser 在瀏覽器中開啟 %1 - - - Unified search results list - 統一搜尋結果清單 - - - - New activities - 新活動 - OCC::AbstractNetworkJob @@ -2879,37 +2939,21 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings - - - Advanced - 進階 - About 關於 - - - Ask for confirmation before synchronizing new folders larger than - 每當要同步的新資料夾超過大小限制時先詢問確認 - Legal notice 法律聲明 - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - 使用單色圖示(&M) + + General Settings + 一般設定 @@ -2917,19 +2961,29 @@ Alternatively, you can restore all deleted files by downloading them from the se 系統初始啟動時啟動(&L) - - Show Server &Notifications - 顯示伺服器通知(&N) + + Show Call Notifications + 顯示來電通知 - - Notify when synchronised folders grow larger than specified limit - 每當同步資料夾的大小超過指定限制時發出通知 + + For System Tray + 系統匣適用 + + + + Use &Monochrome Icons + 使用單色圖示(&M) - Show Call Notifications - 顯示來電通知 + Show Chat Notifications + + + + + Show Server &Notifications + 顯示伺服器通知(&N) @@ -2941,16 +2995,59 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates 自動檢查更新(&A) - - - Automatically disable synchronisation of folders that overcome limit - 自動停用超出限制的資料夾同步 - &Channel 頻道(&C) + + + + stable + 穩定版 + + + + + beta + 測試版 + + + + &Restart && Update + 重新啟動並更新(&R) + + + + &Check for Update now + 立即檢查更新(&C) + + + + Advanced + 進階 + + + + Ask for confirmation before synchronizing new folders larger than + 每當要同步的新資料夾超過大小限制時先詢問確認 + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MB + + + + Notify when synchronised folders grow larger than specified limit + 每當同步資料夾的大小超過指定限制時發出通知 + + + + Automatically disable synchronisation of folders that overcome limit + 自動停用超出限制的資料夾同步 + Ask for confirmation before synchronizing external storages @@ -2982,11 +3079,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive 建立除錯封存檔 - - - &Check for Update now - 立即檢查更新(&C) - Info @@ -3008,9 +3100,9 @@ Alternatively, you can restore all deleted files by downloading them from the se 更新頻道 - - &Restart && Update - 重新啟動並更新(&R) + + Show sync folders in &Explorer's Navigation Pane + 在檔案管理程式的導覽面板中顯示同步資料夾(&E) @@ -3032,21 +3124,6 @@ Alternatively, you can restore all deleted files by downloading them from the se Legal Notice 法律聲明 - - - General Settings - 一般設定 - - - - For System Tray - 系統匣適用 - - - - Show sync folders in &Explorer's Navigation Pane - 在檔案管理程式的導覽面板中顯示同步資料夾(&E) - Use &monochrome icons @@ -3072,6 +3149,11 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifications that require attention. 需要注意的伺服器通知。 + + + Show chat notification dialogs. + + Show call notification dialogs. @@ -3082,18 +3164,6 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. 您無法停用自動啟動,因為已啟用系統層級的自動啟動。 - - - - stable - 穩定版 - - - - - beta - 測試版 - Change update channel? @@ -3120,6 +3190,14 @@ Note that this selects only what pool upgrades are taken from, and that there ar + - enterprise: contains stable versions for customers. + + description of enterprise update channel for enterprise customers + - 企業版:包含供顧客使用的穩定版本。 + + + + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3131,15 +3209,22 @@ Downgrading versions is not possible immediately: changing from beta to stable m 無法立即降級版本:從測試版變更為穩定版必須等待新的穩定版本才能更新。 - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - 企業版:包含供顧客使用的穩定版本。 - + + The channel determines which upgrades will be offered to install: +- stable: contains tested versions considered reliable +- beta: contains versions with new features that may not be tested thoroughly +- daily: contains versions created daily only for testing and development +%1 +Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. + 頻道是用來決定哪些升級可供安裝: +- 穩定:包含被認為可靠的經測試版本 +- 測試:包含可能未經徹底測試的的新功能版本 +- 每日:包含每日建立的版本,僅用於測試與開發 +%1 +無法立即降級版本:從測試版變更為穩定版必須等待新的穩定版本才能更新。 - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3154,22 +3239,7 @@ Downgrading versions is not possible immediately: changing from stable to enterp 變更更新頻道? - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - 頻道是用來決定哪些升級可供安裝: -- 穩定:包含被認為可靠的經測試版本 -- 測試:包含可能未經徹底測試的的新功能版本 -- 每日:包含每日建立的版本,僅用於測試與開發 -%1 -無法立即降級版本:從測試版變更為穩定版必須等待新的穩定版本才能更新。 - - - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -5092,6 +5162,11 @@ Server replied with error: %2 Resharing this folder is not allowed 此資料夾不允許轉發分享 + + + Copy internal link + 複製內部連結 + Copy secure file drop link @@ -5103,21 +5178,16 @@ Server replied with error: %2 Copy public link 複製公開連結 - - - Copy secure filedrop link - 複製安全檔案投放連結 - - - - Copy internal link - 複製內部連結 - Encrypt 加密 + + + Copy secure filedrop link + 複製安全檔案投放連結 + Lock file @@ -6401,11 +6471,6 @@ Server replied with error: %2 Create a new share link 建立新分享連結 - - - Copy share link location - 複製分享連結位置 - Copied! @@ -6416,6 +6481,11 @@ Server replied with error: %2 Share options 分享選項 + + + Copy share link location + 複製分享連結位置 + ShareDetailsPage @@ -6624,6 +6694,24 @@ Server replied with error: %2 使用者群組與本機資料夾選單 + + TrayWindowHeader + + + Open local or group folders + + + + + More apps + + + + + Open %1 in browser + + + UnifiedSearchInputContainer @@ -6632,6 +6720,14 @@ Server replied with error: %2 搜尋檔案、訊息、行程… + + UnifiedSearchPlaceholderView + + + Start typing to search + + + UnifiedSearchResultFetchMoreTrigger From ca970b796458d99e12096c49ce40283ad0e77b46 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Fri, 22 Nov 2024 01:45:37 +0800 Subject: [PATCH 156/244] Fix broken general setting UI file Looks like it was originally caused at some point by a bad rebase conflict resolution Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/generalsettings.ui | 165 +------------------------------------ 1 file changed, 2 insertions(+), 163 deletions(-) diff --git a/src/gui/generalsettings.ui b/src/gui/generalsettings.ui index 4a27fe0c838b2..5f7b571894c1a 100644 --- a/src/gui/generalsettings.ui +++ b/src/gui/generalsettings.ui @@ -13,53 +13,7 @@ Form - - - - - About - - - - - - - 0 - 0 - - - - About - - - - - - - - - Legal notice - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - + @@ -106,122 +60,7 @@ - - - - - Updates - - - - - - - - &Automatically check for Updates - - - true - - - - - - - - - - - - 0 - 0 - - - - &Channel - - - updateChannel - - - - - - - - 0 - 0 - - - - - stable - - - - - beta - - - - - - - - - - - true - - - true - - - - - - - - 0 - 0 - - - - &Restart && Update - - - - - - - - - - 0 - 0 - - - - &Check for Update now - - - - - - - - - - Qt::Vertical - - - - 20 - 0 - - - - + From 01f36c399f8cd5a4412f6b97ea9b86a0af86a0c5 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Fri, 22 Nov 2024 01:45:50 +0800 Subject: [PATCH 157/244] Rename horizontalLayout with duplicate name Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/generalsettings.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/generalsettings.ui b/src/gui/generalsettings.ui index 5f7b571894c1a..f444a4cdca2a9 100644 --- a/src/gui/generalsettings.ui +++ b/src/gui/generalsettings.ui @@ -187,7 +187,7 @@ - + From 5b134b40c6e8db378becd897c99d394333252bf4 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Sun, 20 Oct 2024 17:28:13 +0800 Subject: [PATCH 158/244] Add displayFileOwner property to ShareModel Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/sharemodel.cpp | 5 +++++ src/gui/filedetails/sharemodel.h | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/src/gui/filedetails/sharemodel.cpp b/src/gui/filedetails/sharemodel.cpp index 2a314c3faec65..2354d704b4cba 100644 --- a/src/gui/filedetails/sharemodel.cpp +++ b/src/gui/filedetails/sharemodel.cpp @@ -1379,6 +1379,11 @@ bool ShareModel::isShareDisabledEncryptedFolder() const return _isShareDisabledEncryptedFolder; } +bool ShareModel::displayFileOwner() const +{ + return _displayFileOwner; +} + QVariantList ShareModel::sharees() const { QVariantList returnSharees; diff --git a/src/gui/filedetails/sharemodel.h b/src/gui/filedetails/sharemodel.h index 09d136f1ea0f9..bdb453acbb387 100644 --- a/src/gui/filedetails/sharemodel.h +++ b/src/gui/filedetails/sharemodel.h @@ -38,6 +38,7 @@ class ShareModel : public QAbstractListModel Q_PROPERTY(bool hasInitialShareFetchCompleted READ hasInitialShareFetchCompleted NOTIFY hasInitialShareFetchCompletedChanged) Q_PROPERTY(bool serverAllowsResharing READ serverAllowsResharing NOTIFY serverAllowsResharingChanged) Q_PROPERTY(QVariantList sharees READ sharees NOTIFY shareesChanged) + Q_PROPERTY(bool displayFileOwner READ displayFileOwner NOTIFY displayFileOwnerChanged) public: enum Roles { @@ -126,6 +127,7 @@ class ShareModel : public QAbstractListModel [[nodiscard]] QVariantList sharees() const; + [[nodiscard]] bool displayFileOwner() const; [[nodiscard]] Q_INVOKABLE static QString generatePassword(); signals: @@ -143,6 +145,7 @@ class ShareModel : public QAbstractListModel void shareesChanged(); void internalLinkReady(); void serverAllowsResharingChanged(); + void displayFileOwnerChanged(); void serverError(const int code, const QString &message) const; void passwordSetError(const QString &shareId, const int code, const QString &message); @@ -246,6 +249,7 @@ private slots: SyncJournalFileLockInfo _filelockState; QString _privateLinkUrl; QByteArray _fileRemoteId; + bool _displayFileOwner = false; QSharedPointer _manager; From 727368ef4963cec7daff97fb53be3b07270bf560 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Sun, 20 Oct 2024 17:29:15 +0800 Subject: [PATCH 159/244] Add fileOwnerDisplayName property to ShareModel Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/sharemodel.cpp | 5 +++++ src/gui/filedetails/sharemodel.h | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/src/gui/filedetails/sharemodel.cpp b/src/gui/filedetails/sharemodel.cpp index 2354d704b4cba..76c2feda16253 100644 --- a/src/gui/filedetails/sharemodel.cpp +++ b/src/gui/filedetails/sharemodel.cpp @@ -1384,6 +1384,11 @@ bool ShareModel::displayFileOwner() const return _displayFileOwner; } +QString ShareModel::fileOwnerDisplayName() const +{ + return _fileOwnerDisplayName; +} + QVariantList ShareModel::sharees() const { QVariantList returnSharees; diff --git a/src/gui/filedetails/sharemodel.h b/src/gui/filedetails/sharemodel.h index bdb453acbb387..0bc4647d3094c 100644 --- a/src/gui/filedetails/sharemodel.h +++ b/src/gui/filedetails/sharemodel.h @@ -39,6 +39,7 @@ class ShareModel : public QAbstractListModel Q_PROPERTY(bool serverAllowsResharing READ serverAllowsResharing NOTIFY serverAllowsResharingChanged) Q_PROPERTY(QVariantList sharees READ sharees NOTIFY shareesChanged) Q_PROPERTY(bool displayFileOwner READ displayFileOwner NOTIFY displayFileOwnerChanged) + Q_PROPERTY(QString fileOwnerDisplayName READ fileOwnerDisplayName NOTIFY fileOwnerDisplayNameChanged) public: enum Roles { @@ -128,6 +129,7 @@ class ShareModel : public QAbstractListModel [[nodiscard]] QVariantList sharees() const; [[nodiscard]] bool displayFileOwner() const; + [[nodiscard]] QString fileOwnerDisplayName() const; [[nodiscard]] Q_INVOKABLE static QString generatePassword(); signals: @@ -146,6 +148,7 @@ class ShareModel : public QAbstractListModel void internalLinkReady(); void serverAllowsResharingChanged(); void displayFileOwnerChanged(); + void fileOwnerDisplayNameChanged(); void serverError(const int code, const QString &message) const; void passwordSetError(const QString &shareId, const int code, const QString &message); @@ -250,6 +253,7 @@ private slots: QString _privateLinkUrl; QByteArray _fileRemoteId; bool _displayFileOwner = false; + QString _fileOwnerDisplayName; QSharedPointer _manager; From a7e60b9f454dffa68a1a6c0192237bbf731344b4 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Sun, 20 Oct 2024 17:30:30 +0800 Subject: [PATCH 160/244] Set if the file owner should be displayed and the file owner display name on propfind in sharemodel Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/sharemodel.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/gui/filedetails/sharemodel.cpp b/src/gui/filedetails/sharemodel.cpp index 76c2feda16253..6eca764612c52 100644 --- a/src/gui/filedetails/sharemodel.cpp +++ b/src/gui/filedetails/sharemodel.cpp @@ -220,11 +220,19 @@ void ShareModel::resetData() _fetchOngoing = false; _hasInitialShareFetchCompleted = false; _sharees.clear(); + _displayFileOwner = false; + _fileOwnerDisplayName.clear(); + _sharedWithMeExpires = false; + _sharedWithMeRemainingTimeString.clear(); Q_EMIT sharePermissionsChanged(); Q_EMIT fetchOngoingChanged(); Q_EMIT hasInitialShareFetchCompletedChanged(); Q_EMIT shareesChanged(); + Q_EMIT displayFileOwnerChanged(); + Q_EMIT fileOwnerDisplayNameChanged(); + Q_EMIT sharedWithMeExpiresChanged(); + Q_EMIT sharedWithMeRemainingTimeStringChanged(); endResetModel(); } @@ -319,7 +327,9 @@ void ShareModel::updateData() auto job = new PropfindJob(_accountState->account(), _sharePath); job->setProperties(QList() << "http://open-collaboration-services.org/ns:share-permissions" << "http://owncloud.org/ns:fileid" // numeric file id for fallback private link generation - << "http://owncloud.org/ns:privatelink"); + << "http://owncloud.org/ns:privatelink" + << "http://owncloud.org/ns:owner-id" + << "http://owncloud.org/ns:owner-display-name"); job->setTimeout(10 * 1000); connect(job, &PropfindJob::result, this, &ShareModel::slotPropfindReceived); connect(job, &PropfindJob::finishedWithError, this, [&](const QNetworkReply *reply) { @@ -455,6 +465,11 @@ void ShareModel::slotPropfindReceived(const QVariantMap &result) const auto privateLinkUrl = result["privatelink"].toString(); _fileRemoteId = result["fileid"].toByteArray(); + + _displayFileOwner = result["owner-id"].toString() != _accountState->account()->davUser(); + Q_EMIT displayFileOwnerChanged(); + _fileOwnerDisplayName = result["owner-display-name"].toString(); + Q_EMIT fileOwnerDisplayNameChanged(); if (!privateLinkUrl.isEmpty()) { qCInfo(lcShareModel) << "Received private link url for" << _sharePath << privateLinkUrl; From c70b859cce178c134e7d9ccac18cf0b5206ba1a5 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Sun, 20 Oct 2024 17:33:14 +0800 Subject: [PATCH 161/244] Add sharedWithMe-related properties to sharemodel Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/sharemodel.cpp | 10 ++++++++++ src/gui/filedetails/sharemodel.h | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/src/gui/filedetails/sharemodel.cpp b/src/gui/filedetails/sharemodel.cpp index 6eca764612c52..c8257e8df71e5 100644 --- a/src/gui/filedetails/sharemodel.cpp +++ b/src/gui/filedetails/sharemodel.cpp @@ -1404,6 +1404,16 @@ QString ShareModel::fileOwnerDisplayName() const return _fileOwnerDisplayName; } +QString ShareModel::sharedWithMeRemainingTimeString() const +{ + return _sharedWithMeRemainingTimeString; +} + +bool ShareModel::sharedWithMeExpires() const +{ + return _sharedWithMeExpires; +} + QVariantList ShareModel::sharees() const { QVariantList returnSharees; diff --git a/src/gui/filedetails/sharemodel.h b/src/gui/filedetails/sharemodel.h index 0bc4647d3094c..3608f0e978193 100644 --- a/src/gui/filedetails/sharemodel.h +++ b/src/gui/filedetails/sharemodel.h @@ -40,6 +40,8 @@ class ShareModel : public QAbstractListModel Q_PROPERTY(QVariantList sharees READ sharees NOTIFY shareesChanged) Q_PROPERTY(bool displayFileOwner READ displayFileOwner NOTIFY displayFileOwnerChanged) Q_PROPERTY(QString fileOwnerDisplayName READ fileOwnerDisplayName NOTIFY fileOwnerDisplayNameChanged) + Q_PROPERTY(bool sharedWithMeExpires READ sharedWithMeExpires NOTIFY sharedWithMeExpiresChanged) + Q_PROPERTY(QString sharedWithMeRemainingTimeString READ sharedWithMeRemainingTimeString NOTIFY sharedWithMeRemainingTimeStringChanged) public: enum Roles { @@ -130,6 +132,9 @@ class ShareModel : public QAbstractListModel [[nodiscard]] bool displayFileOwner() const; [[nodiscard]] QString fileOwnerDisplayName() const; + [[nodiscard]] bool sharedWithMeExpires() const; + [[nodiscard]] QString sharedWithMeRemainingTimeString() const; + [[nodiscard]] Q_INVOKABLE static QString generatePassword(); signals: @@ -149,6 +154,8 @@ class ShareModel : public QAbstractListModel void serverAllowsResharingChanged(); void displayFileOwnerChanged(); void fileOwnerDisplayNameChanged(); + void sharedWithMeExpiresChanged(); + void sharedWithMeRemainingTimeStringChanged(); void serverError(const int code, const QString &message) const; void passwordSetError(const QString &shareId, const int code, const QString &message); @@ -254,6 +261,8 @@ private slots: QByteArray _fileRemoteId; bool _displayFileOwner = false; QString _fileOwnerDisplayName; + bool _sharedWithMeExpires = false; + QString _sharedWithMeRemainingTimeString; QSharedPointer _manager; From eebec8985723de19d2cb57d7877694a6a19247f8 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Sun, 20 Oct 2024 17:35:42 +0800 Subject: [PATCH 162/244] Also fetch shared with me share on target path Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/ocssharejob.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/ocssharejob.cpp b/src/gui/ocssharejob.cpp index 2eee30c1ab093..8fe1615ff7908 100644 --- a/src/gui/ocssharejob.cpp +++ b/src/gui/ocssharejob.cpp @@ -34,6 +34,7 @@ void OcsShareJob::getShares(const QString &path, const QMap &p addParam(QString::fromLatin1("path"), path); addParam(QString::fromLatin1("reshares"), QString("true")); + addParam("shared_with_me", "true"); for (auto it = std::cbegin(params); it != std::cend(params); ++it) { addParam(it.key(), it.value()); From 0baec4293acd742c3dea2cbb37e60f682213f0e5 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Sun, 20 Oct 2024 17:36:20 +0800 Subject: [PATCH 163/244] When handling fetched shares, record shared-with-me related information in sharemodel properties Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/sharemodel.cpp | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/gui/filedetails/sharemodel.cpp b/src/gui/filedetails/sharemodel.cpp index c8257e8df71e5..3a26159632388 100644 --- a/src/gui/filedetails/sharemodel.cpp +++ b/src/gui/filedetails/sharemodel.cpp @@ -492,10 +492,25 @@ void ShareModel::slotSharesFetched(const QList &shares) qCInfo(lcSharing) << "Fetched" << shares.count() << "shares"; for (const auto &share : shares) { - if (share.isNull() || - share->account().isNull() || - share->getUidOwner() != share->account()->davUser()) { - + if (share.isNull()) { + continue; + } else if (const auto selfUserId = _accountState->account()->davUser(); share->getUidOwner() != selfUserId) { + if (share->getShareType() == Share::TypeUser && + share->getShareWith() && + share->getShareWith()->shareWith() == selfUserId) + { + const auto userShare = share.objectCast(); + const auto expireDate = userShare->getExpireDate(); + const auto daysToExpire = QDate::currentDate().daysTo(expireDate); + _sharedWithMeExpires = expireDate.isValid(); + Q_EMIT sharedWithMeExpiresChanged(); + _sharedWithMeRemainingTimeString = daysToExpire > 1 + ? tr("%1 days").arg(daysToExpire) + : daysToExpire > 0 + ? tr("1 day") + : tr("Today"); + Q_EMIT sharedWithMeRemainingTimeStringChanged(); + } continue; } From eaeeba18232a70f4769c6ee149e4cb043ebda3f2 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Sun, 20 Oct 2024 17:36:52 +0800 Subject: [PATCH 164/244] Display file owner information (if not self) in share view Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/ShareView.qml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/gui/filedetails/ShareView.qml b/src/gui/filedetails/ShareView.qml index e7e6046b7f38e..33bc0040e0a08 100644 --- a/src/gui/filedetails/ShareView.qml +++ b/src/gui/filedetails/ShareView.qml @@ -139,6 +139,19 @@ ColumnLayout { } } + Column { + Layout.fillWidth: true + Layout.leftMargin: root.horizontalPadding + Layout.rightMargin: root.horizontalPadding + + EnforcedPlainTextLabel { + visible: shareModel.displayFileOwner + text: qsTr("Shared with you by %1").arg(shareModel.fileOwnerDisplayName) + } + + visible: shareModel.displayFileOwner + } + ShareeSearchField { id: shareeSearchField Layout.fillWidth: true From dea49aaa17a49cad6d9e154aa4d68dd36b53ff2a Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Sun, 20 Oct 2024 17:37:09 +0800 Subject: [PATCH 165/244] Display shared with me file's share expiry in share view if relevant Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/ShareView.qml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gui/filedetails/ShareView.qml b/src/gui/filedetails/ShareView.qml index 33bc0040e0a08..11e7b2a259c4d 100644 --- a/src/gui/filedetails/ShareView.qml +++ b/src/gui/filedetails/ShareView.qml @@ -148,6 +148,10 @@ ColumnLayout { visible: shareModel.displayFileOwner text: qsTr("Shared with you by %1").arg(shareModel.fileOwnerDisplayName) } + EnforcedPlainTextLabel { + visible: shareModel.sharedWithMeExpires + text: qsTr("Expires in %1").arg(shareModel.sharedWithMeRemainingTimeString) + } visible: shareModel.displayFileOwner } From 12e4c7035b16c2548feae1842c186a4ff11fa5d2 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Sun, 20 Oct 2024 17:48:32 +0800 Subject: [PATCH 166/244] Display share owner rather than file owner (this is more relevant to user) Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/ShareView.qml | 6 +++--- src/gui/filedetails/sharemodel.cpp | 28 ++++++++++++++-------------- src/gui/filedetails/sharemodel.h | 16 ++++++++-------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/gui/filedetails/ShareView.qml b/src/gui/filedetails/ShareView.qml index 11e7b2a259c4d..13a3d30492554 100644 --- a/src/gui/filedetails/ShareView.qml +++ b/src/gui/filedetails/ShareView.qml @@ -145,15 +145,15 @@ ColumnLayout { Layout.rightMargin: root.horizontalPadding EnforcedPlainTextLabel { - visible: shareModel.displayFileOwner - text: qsTr("Shared with you by %1").arg(shareModel.fileOwnerDisplayName) + visible: shareModel.displayShareOwner + text: qsTr("Shared with you by %1").arg(shareModel.shareOwnerDisplayName) } EnforcedPlainTextLabel { visible: shareModel.sharedWithMeExpires text: qsTr("Expires in %1").arg(shareModel.sharedWithMeRemainingTimeString) } - visible: shareModel.displayFileOwner + visible: shareModel.displayShareOwner } ShareeSearchField { diff --git a/src/gui/filedetails/sharemodel.cpp b/src/gui/filedetails/sharemodel.cpp index 3a26159632388..64c2d7aea8264 100644 --- a/src/gui/filedetails/sharemodel.cpp +++ b/src/gui/filedetails/sharemodel.cpp @@ -220,8 +220,8 @@ void ShareModel::resetData() _fetchOngoing = false; _hasInitialShareFetchCompleted = false; _sharees.clear(); - _displayFileOwner = false; - _fileOwnerDisplayName.clear(); + _displayShareOwner = false; + _shareOwnerDisplayName.clear(); _sharedWithMeExpires = false; _sharedWithMeRemainingTimeString.clear(); @@ -229,8 +229,8 @@ void ShareModel::resetData() Q_EMIT fetchOngoingChanged(); Q_EMIT hasInitialShareFetchCompletedChanged(); Q_EMIT shareesChanged(); - Q_EMIT displayFileOwnerChanged(); - Q_EMIT fileOwnerDisplayNameChanged(); + Q_EMIT displayShareOwnerChanged(); + Q_EMIT shareOwnerDisplayNameChanged(); Q_EMIT sharedWithMeExpiresChanged(); Q_EMIT sharedWithMeRemainingTimeStringChanged(); @@ -465,12 +465,7 @@ void ShareModel::slotPropfindReceived(const QVariantMap &result) const auto privateLinkUrl = result["privatelink"].toString(); _fileRemoteId = result["fileid"].toByteArray(); - - _displayFileOwner = result["owner-id"].toString() != _accountState->account()->davUser(); - Q_EMIT displayFileOwnerChanged(); - _fileOwnerDisplayName = result["owner-display-name"].toString(); - Q_EMIT fileOwnerDisplayNameChanged(); - + if (!privateLinkUrl.isEmpty()) { qCInfo(lcShareModel) << "Received private link url for" << _sharePath << privateLinkUrl; _privateLinkUrl = privateLinkUrl; @@ -495,6 +490,11 @@ void ShareModel::slotSharesFetched(const QList &shares) if (share.isNull()) { continue; } else if (const auto selfUserId = _accountState->account()->davUser(); share->getUidOwner() != selfUserId) { + _displayShareOwner = true; + Q_EMIT displayShareOwnerChanged(); + _shareOwnerDisplayName = share->getOwnerDisplayName(); + Q_EMIT shareOwnerDisplayNameChanged(); + if (share->getShareType() == Share::TypeUser && share->getShareWith() && share->getShareWith()->shareWith() == selfUserId) @@ -1409,14 +1409,14 @@ bool ShareModel::isShareDisabledEncryptedFolder() const return _isShareDisabledEncryptedFolder; } -bool ShareModel::displayFileOwner() const +bool ShareModel::displayShareOwner() const { - return _displayFileOwner; + return _displayShareOwner; } -QString ShareModel::fileOwnerDisplayName() const +QString ShareModel::shareOwnerDisplayName() const { - return _fileOwnerDisplayName; + return _shareOwnerDisplayName; } QString ShareModel::sharedWithMeRemainingTimeString() const diff --git a/src/gui/filedetails/sharemodel.h b/src/gui/filedetails/sharemodel.h index 3608f0e978193..2a419a7f342d3 100644 --- a/src/gui/filedetails/sharemodel.h +++ b/src/gui/filedetails/sharemodel.h @@ -38,8 +38,8 @@ class ShareModel : public QAbstractListModel Q_PROPERTY(bool hasInitialShareFetchCompleted READ hasInitialShareFetchCompleted NOTIFY hasInitialShareFetchCompletedChanged) Q_PROPERTY(bool serverAllowsResharing READ serverAllowsResharing NOTIFY serverAllowsResharingChanged) Q_PROPERTY(QVariantList sharees READ sharees NOTIFY shareesChanged) - Q_PROPERTY(bool displayFileOwner READ displayFileOwner NOTIFY displayFileOwnerChanged) - Q_PROPERTY(QString fileOwnerDisplayName READ fileOwnerDisplayName NOTIFY fileOwnerDisplayNameChanged) + Q_PROPERTY(bool displayShareOwner READ displayShareOwner NOTIFY displayShareOwnerChanged) + Q_PROPERTY(QString shareOwnerDisplayName READ shareOwnerDisplayName NOTIFY shareOwnerDisplayNameChanged) Q_PROPERTY(bool sharedWithMeExpires READ sharedWithMeExpires NOTIFY sharedWithMeExpiresChanged) Q_PROPERTY(QString sharedWithMeRemainingTimeString READ sharedWithMeRemainingTimeString NOTIFY sharedWithMeRemainingTimeStringChanged) @@ -130,8 +130,8 @@ class ShareModel : public QAbstractListModel [[nodiscard]] QVariantList sharees() const; - [[nodiscard]] bool displayFileOwner() const; - [[nodiscard]] QString fileOwnerDisplayName() const; + [[nodiscard]] bool displayShareOwner() const; + [[nodiscard]] QString shareOwnerDisplayName() const; [[nodiscard]] bool sharedWithMeExpires() const; [[nodiscard]] QString sharedWithMeRemainingTimeString() const; @@ -152,8 +152,8 @@ class ShareModel : public QAbstractListModel void shareesChanged(); void internalLinkReady(); void serverAllowsResharingChanged(); - void displayFileOwnerChanged(); - void fileOwnerDisplayNameChanged(); + void displayShareOwnerChanged(); + void shareOwnerDisplayNameChanged(); void sharedWithMeExpiresChanged(); void sharedWithMeRemainingTimeStringChanged(); @@ -259,8 +259,8 @@ private slots: SyncJournalFileLockInfo _filelockState; QString _privateLinkUrl; QByteArray _fileRemoteId; - bool _displayFileOwner = false; - QString _fileOwnerDisplayName; + bool _displayShareOwner = false; + QString _shareOwnerDisplayName; bool _sharedWithMeExpires = false; QString _sharedWithMeRemainingTimeString; From 8091d5720290d5995e6eba62268722a3cae73a24 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Sun, 20 Oct 2024 17:48:47 +0800 Subject: [PATCH 167/244] Bolden string showing who owns the share that was shared with me Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/ShareView.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/filedetails/ShareView.qml b/src/gui/filedetails/ShareView.qml index 13a3d30492554..550bcc67a0cb1 100644 --- a/src/gui/filedetails/ShareView.qml +++ b/src/gui/filedetails/ShareView.qml @@ -147,6 +147,7 @@ ColumnLayout { EnforcedPlainTextLabel { visible: shareModel.displayShareOwner text: qsTr("Shared with you by %1").arg(shareModel.shareOwnerDisplayName) + font.bold: true } EnforcedPlainTextLabel { visible: shareModel.sharedWithMeExpires From 399976c899a3ee5ae44100568b6feccce28651bc Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 21 Oct 2024 01:46:27 +0800 Subject: [PATCH 168/244] Convert ImageProvider in an async image provider using an internal image response Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/usermodel.cpp | 65 +++++++++++++++++++++++++------------- src/gui/tray/usermodel.h | 8 +++-- 2 files changed, 48 insertions(+), 25 deletions(-) diff --git a/src/gui/tray/usermodel.cpp b/src/gui/tray/usermodel.cpp index c39b1406e57c3..c094b5090a989 100644 --- a/src/gui/tray/usermodel.cpp +++ b/src/gui/tray/usermodel.cpp @@ -1618,35 +1618,53 @@ int UserModel::findUserIdForAccount(AccountState *account) const } /*-------------------------------------------------------------------------------------*/ -ImageProvider::ImageProvider() - : QQuickImageProvider(QQuickImageProvider::Image) -{ -} +class ImageResponse : public QQuickImageResponse +{ +public: + ImageResponse(const QString &id, const QSize &requestedSize, QThreadPool *pool) + { + Q_UNUSED(pool) + + const auto makeIcon = [](const QString &path) { + QImage image(128, 128, QImage::Format_ARGB32); + image.fill(Qt::GlobalColor::transparent); + QPainter painter(&image); + QSvgRenderer renderer(path); + renderer.render(&painter); + return image; + }; + + if (id == QLatin1String("fallbackWhite")) { + handleDone(makeIcon(QStringLiteral(":/client/theme/white/user.svg"))); + return; + } else if (id == QLatin1String("fallbackBlack")) { + handleDone(makeIcon(QStringLiteral(":/client/theme/black/user.svg"))); + return; + } -QImage ImageProvider::requestImage(const QString &id, QSize *size, const QSize &requestedSize) -{ - Q_UNUSED(size) - Q_UNUSED(requestedSize) - const auto makeIcon = [](const QString &path) { - QImage image(128, 128, QImage::Format_ARGB32); - image.fill(Qt::GlobalColor::transparent); - QPainter painter(&image); - QSvgRenderer renderer(path); - renderer.render(&painter); - return image; - }; + handleDone(UserModel::instance()->avatarById(id.toInt())); + } - if (id == QLatin1String("fallbackWhite")) { - return makeIcon(QStringLiteral(":/client/theme/white/user.svg")); + void handleDone(const QImage &image) + { + _image = image; + emit finished(); } - if (id == QLatin1String("fallbackBlack")) { - return makeIcon(QStringLiteral(":/client/theme/black/user.svg")); + QQuickTextureFactory *textureFactory() const override + { + return QQuickTextureFactory::textureFactoryForImage(_image); } - const int uid = id.toInt(); - return UserModel::instance()->avatarById(uid); +private: + QImage _image; +}; + +QQuickImageResponse *ImageProvider::requestImageResponse(const QString &id, const QSize &requestedSize) +{ + const auto response = new class ImageResponse(id, requestedSize, &pool); + return response; } /*-------------------------------------------------------------------------------------*/ @@ -1725,3 +1743,6 @@ QHash UserAppsModel::roleNames() const return roles; } } + +#include "usermodel.moc" + diff --git a/src/gui/tray/usermodel.h b/src/gui/tray/usermodel.h index 466cd6ab81976..73227168062f2 100644 --- a/src/gui/tray/usermodel.h +++ b/src/gui/tray/usermodel.h @@ -276,11 +276,13 @@ public slots: void buildUserList(); }; -class ImageProvider : public QQuickImageProvider +class ImageProvider : public QQuickAsyncImageProvider { + Q_OBJECT + public: - ImageProvider(); - QImage requestImage(const QString &id, QSize *size, const QSize &requestedSize) override; + ImageProvider() = default; + QQuickImageResponse *requestImageResponse(const QString &id, const QSize &requestedSize) override; }; class UserAppsModel : public QAbstractListModel From 4d6f2d5201237a6c82cc636069c8be0fff6e6098 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 21 Oct 2024 01:46:56 +0800 Subject: [PATCH 169/244] Add ability to fetch remote server avatars in usermodel avatar ImageResponse Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/usermodel.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/gui/tray/usermodel.cpp b/src/gui/tray/usermodel.cpp index c094b5090a989..5c493f8138c4e 100644 --- a/src/gui/tray/usermodel.cpp +++ b/src/gui/tray/usermodel.cpp @@ -1642,6 +1642,25 @@ class ImageResponse : public QQuickImageResponse return; } + if (id.startsWith("user-id=")) { + // Format is "image://avatars/user-id=avatar-requested-user/local-user-id:0" + const auto userIdsString = id.split('='); + const auto userIds = userIdsString.last().split("/local-account:"); + const auto avatarUserId = userIds.first(); + const auto accountString = userIds.last(); + const auto accountState = AccountManager::instance()->account(accountString); + Q_ASSERT(accountState); + if (!accountState) { + qCWarning(lcActivity) << "Account not found:" << accountString; + return; + } + const auto avatarJob = new AvatarJob(accountState->account(), avatarUserId, requestedSize.width()); + connect(avatarJob, &AvatarJob::avatarPixmap, this, [&](const QImage &avatarImg) { + handleDone(AvatarJob::makeCircularAvatar(avatarImg)); + }); + avatarJob->start(); + return; + } handleDone(UserModel::instance()->avatarById(id.toInt())); } From bd4339d01e7daf9c47f39d5e60b0a2d4b5731214 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 21 Oct 2024 01:48:17 +0800 Subject: [PATCH 170/244] Add shareOwnerAvatar property to ShareModel Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/sharemodel.cpp | 7 +++++++ src/gui/filedetails/sharemodel.h | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/src/gui/filedetails/sharemodel.cpp b/src/gui/filedetails/sharemodel.cpp index 64c2d7aea8264..27e5df9c94a61 100644 --- a/src/gui/filedetails/sharemodel.cpp +++ b/src/gui/filedetails/sharemodel.cpp @@ -222,6 +222,7 @@ void ShareModel::resetData() _sharees.clear(); _displayShareOwner = false; _shareOwnerDisplayName.clear(); + _shareOwnerAvatar.clear(); _sharedWithMeExpires = false; _sharedWithMeRemainingTimeString.clear(); @@ -231,6 +232,7 @@ void ShareModel::resetData() Q_EMIT shareesChanged(); Q_EMIT displayShareOwnerChanged(); Q_EMIT shareOwnerDisplayNameChanged(); + Q_EMIT shareOwnerAvatarChanged(); Q_EMIT sharedWithMeExpiresChanged(); Q_EMIT sharedWithMeRemainingTimeStringChanged(); @@ -1419,6 +1421,11 @@ QString ShareModel::shareOwnerDisplayName() const return _shareOwnerDisplayName; } +QString ShareModel::shareOwnerAvatar() const +{ + return _shareOwnerAvatar; +} + QString ShareModel::sharedWithMeRemainingTimeString() const { return _sharedWithMeRemainingTimeString; diff --git a/src/gui/filedetails/sharemodel.h b/src/gui/filedetails/sharemodel.h index 2a419a7f342d3..5357a9366d6f3 100644 --- a/src/gui/filedetails/sharemodel.h +++ b/src/gui/filedetails/sharemodel.h @@ -40,6 +40,7 @@ class ShareModel : public QAbstractListModel Q_PROPERTY(QVariantList sharees READ sharees NOTIFY shareesChanged) Q_PROPERTY(bool displayShareOwner READ displayShareOwner NOTIFY displayShareOwnerChanged) Q_PROPERTY(QString shareOwnerDisplayName READ shareOwnerDisplayName NOTIFY shareOwnerDisplayNameChanged) + Q_PROPERTY(QString shareOwnerAvatar READ shareOwnerAvatar NOTIFY shareOwnerAvatarChanged) Q_PROPERTY(bool sharedWithMeExpires READ sharedWithMeExpires NOTIFY sharedWithMeExpiresChanged) Q_PROPERTY(QString sharedWithMeRemainingTimeString READ sharedWithMeRemainingTimeString NOTIFY sharedWithMeRemainingTimeStringChanged) @@ -132,6 +133,7 @@ class ShareModel : public QAbstractListModel [[nodiscard]] bool displayShareOwner() const; [[nodiscard]] QString shareOwnerDisplayName() const; + [[nodiscard]] QString shareOwnerAvatar() const; [[nodiscard]] bool sharedWithMeExpires() const; [[nodiscard]] QString sharedWithMeRemainingTimeString() const; @@ -154,6 +156,7 @@ class ShareModel : public QAbstractListModel void serverAllowsResharingChanged(); void displayShareOwnerChanged(); void shareOwnerDisplayNameChanged(); + void shareOwnerAvatarChanged(); void sharedWithMeExpiresChanged(); void sharedWithMeRemainingTimeStringChanged(); @@ -261,6 +264,7 @@ private slots: QByteArray _fileRemoteId; bool _displayShareOwner = false; QString _shareOwnerDisplayName; + QString _shareOwnerAvatar; bool _sharedWithMeExpires = false; QString _sharedWithMeRemainingTimeString; From 7bff2aeec6af659466ca7a7b5fbbb3c37c849e7f Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 21 Oct 2024 01:48:44 +0800 Subject: [PATCH 171/244] Build shareOwnerAvatar image provider string when handling sharedWithMe share in ShareModel Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/sharemodel.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/gui/filedetails/sharemodel.cpp b/src/gui/filedetails/sharemodel.cpp index 27e5df9c94a61..d0eb7fb58765f 100644 --- a/src/gui/filedetails/sharemodel.cpp +++ b/src/gui/filedetails/sharemodel.cpp @@ -491,11 +491,16 @@ void ShareModel::slotSharesFetched(const QList &shares) for (const auto &share : shares) { if (share.isNull()) { continue; - } else if (const auto selfUserId = _accountState->account()->davUser(); share->getUidOwner() != selfUserId) { + } else if (const auto selfUserId = share->account()->davUser(); share->getUidOwner() != selfUserId) { _displayShareOwner = true; Q_EMIT displayShareOwnerChanged(); _shareOwnerDisplayName = share->getOwnerDisplayName(); Q_EMIT shareOwnerDisplayNameChanged(); + _shareOwnerAvatar = "image://avatars/user-id=" + + share->getUidOwner() + + "/local-account:" + + share->account()->displayName(); + Q_EMIT shareOwnerAvatarChanged(); if (share->getShareType() == Share::TypeUser && share->getShareWith() && @@ -513,10 +518,9 @@ void ShareModel::slotSharesFetched(const QList &shares) : tr("Today"); Q_EMIT sharedWithMeRemainingTimeStringChanged(); } - continue; + } else { + slotAddShare(share); } - - slotAddShare(share); } // Perform forward pass on shares and check for duplicate display names; store these indeces so From 5ccf14acfdc7a9be5e07b6ddd76eab200209ec33 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 21 Oct 2024 01:49:09 +0800 Subject: [PATCH 172/244] Display image for sharedWithMe share owner in share view Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/filedetails/ShareView.qml | 26 ++++++++++++++++++-------- src/gui/tray/usermodel.cpp | 4 +--- src/gui/tray/usermodel.h | 3 +++ 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/gui/filedetails/ShareView.qml b/src/gui/filedetails/ShareView.qml index 550bcc67a0cb1..51bbb891a8897 100644 --- a/src/gui/filedetails/ShareView.qml +++ b/src/gui/filedetails/ShareView.qml @@ -139,19 +139,29 @@ ColumnLayout { } } - Column { + RowLayout { Layout.fillWidth: true Layout.leftMargin: root.horizontalPadding Layout.rightMargin: root.horizontalPadding - EnforcedPlainTextLabel { - visible: shareModel.displayShareOwner - text: qsTr("Shared with you by %1").arg(shareModel.shareOwnerDisplayName) - font.bold: true + Image { + Layout.preferredWidth: 32 + Layout.preferredHeight: 32 + source: shareModel.shareOwnerAvatar } - EnforcedPlainTextLabel { - visible: shareModel.sharedWithMeExpires - text: qsTr("Expires in %1").arg(shareModel.sharedWithMeRemainingTimeString) + + ColumnLayout { + EnforcedPlainTextLabel { + Layout.fillWidth: true + visible: shareModel.displayShareOwner + text: qsTr("Shared with you by %1").arg(shareModel.shareOwnerDisplayName) + font.bold: true + } + EnforcedPlainTextLabel { + Layout.fillWidth: true + visible: shareModel.sharedWithMeExpires + text: qsTr("Expires in %1").arg(shareModel.sharedWithMeRemainingTimeString) + } } visible: shareModel.displayShareOwner diff --git a/src/gui/tray/usermodel.cpp b/src/gui/tray/usermodel.cpp index 5c493f8138c4e..34be0660e42e3 100644 --- a/src/gui/tray/usermodel.cpp +++ b/src/gui/tray/usermodel.cpp @@ -1682,7 +1682,7 @@ class ImageResponse : public QQuickImageResponse QQuickImageResponse *ImageProvider::requestImageResponse(const QString &id, const QSize &requestedSize) { - const auto response = new class ImageResponse(id, requestedSize, &pool); + const auto response = new class ImageResponse(id, requestedSize, &_pool); return response; } @@ -1763,5 +1763,3 @@ QHash UserAppsModel::roleNames() const } } -#include "usermodel.moc" - diff --git a/src/gui/tray/usermodel.h b/src/gui/tray/usermodel.h index 73227168062f2..3f2170ab0748e 100644 --- a/src/gui/tray/usermodel.h +++ b/src/gui/tray/usermodel.h @@ -283,6 +283,9 @@ class ImageProvider : public QQuickAsyncImageProvider public: ImageProvider() = default; QQuickImageResponse *requestImageResponse(const QString &id, const QSize &requestedSize) override; + +private: + QThreadPool _pool; }; class UserAppsModel : public QAbstractListModel From c46c790eff979bb56c0448913b4e5c9df00cebe2 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 21 Oct 2024 11:10:58 +0800 Subject: [PATCH 173/244] Ensure requestedSize for avatars is valid Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/usermodel.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gui/tray/usermodel.cpp b/src/gui/tray/usermodel.cpp index 34be0660e42e3..2679bb3eafcd0 100644 --- a/src/gui/tray/usermodel.cpp +++ b/src/gui/tray/usermodel.cpp @@ -1654,7 +1654,8 @@ class ImageResponse : public QQuickImageResponse qCWarning(lcActivity) << "Account not found:" << accountString; return; } - const auto avatarJob = new AvatarJob(accountState->account(), avatarUserId, requestedSize.width()); + const auto avatarSize = requestedSize.width() > 0 ? requestedSize.width() : 64; + const auto avatarJob = new AvatarJob(accountState->account(), avatarUserId, avatarSize); connect(avatarJob, &AvatarJob::avatarPixmap, this, [&](const QImage &avatarImg) { handleDone(AvatarJob::makeCircularAvatar(avatarImg)); }); From b30b7cac1934f72c9091b0b4b4c30ce4a632390b Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 21 Oct 2024 11:11:10 +0800 Subject: [PATCH 174/244] Ensure account pointer is valid when fetching avatars Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/usermodel.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gui/tray/usermodel.cpp b/src/gui/tray/usermodel.cpp index 2679bb3eafcd0..20fbcd2eef627 100644 --- a/src/gui/tray/usermodel.cpp +++ b/src/gui/tray/usermodel.cpp @@ -1650,8 +1650,9 @@ class ImageResponse : public QQuickImageResponse const auto accountString = userIds.last(); const auto accountState = AccountManager::instance()->account(accountString); Q_ASSERT(accountState); - if (!accountState) { - qCWarning(lcActivity) << "Account not found:" << accountString; + Q_ASSERT(accountState->account()); + if (!accountState || !accountState->account()) { + qCWarning(lcActivity) << "Invalid account:" << accountString; return; } const auto avatarSize = requestedSize.width() > 0 ? requestedSize.width() : 64; From bff3f58ac74886eabfaa6be56dedea90a9d49fb0 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 20 Nov 2024 13:23:36 +0800 Subject: [PATCH 175/244] Clean up whitespace in ShareModel::slotPropfindReceived Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- 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 d0eb7fb58765f..a199231998ad7 100644 --- a/src/gui/filedetails/sharemodel.cpp +++ b/src/gui/filedetails/sharemodel.cpp @@ -467,7 +467,7 @@ void ShareModel::slotPropfindReceived(const QVariantMap &result) const auto privateLinkUrl = result["privatelink"].toString(); _fileRemoteId = result["fileid"].toByteArray(); - + if (!privateLinkUrl.isEmpty()) { qCInfo(lcShareModel) << "Received private link url for" << _sharePath << privateLinkUrl; _privateLinkUrl = privateLinkUrl; From ec1b9bd9a32cfdb6843d58152ccc8117d1b336e7 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 20 Nov 2024 13:23:54 +0800 Subject: [PATCH 176/244] Match definition of shared_with_me with other properties in OcsShareJob getShares Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/ocssharejob.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/ocssharejob.cpp b/src/gui/ocssharejob.cpp index 8fe1615ff7908..1bc81dfd8d732 100644 --- a/src/gui/ocssharejob.cpp +++ b/src/gui/ocssharejob.cpp @@ -34,7 +34,7 @@ void OcsShareJob::getShares(const QString &path, const QMap &p addParam(QString::fromLatin1("path"), path); addParam(QString::fromLatin1("reshares"), QString("true")); - addParam("shared_with_me", "true"); + addParam(QString::fromLatin1("shared_with_me"), QString("true")); for (auto it = std::cbegin(params); it != std::cend(params); ++it) { addParam(it.key(), it.value()); From 42d44771aa37de929459e6666a1373b8c662a0a2 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 20 Nov 2024 14:09:40 +0800 Subject: [PATCH 177/244] Ensure avatarJob is run on the respective account's QNAM thread Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/usermodel.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/gui/tray/usermodel.cpp b/src/gui/tray/usermodel.cpp index 20fbcd2eef627..30b3d699f81ee 100644 --- a/src/gui/tray/usermodel.cpp +++ b/src/gui/tray/usermodel.cpp @@ -1655,12 +1655,20 @@ class ImageResponse : public QQuickImageResponse qCWarning(lcActivity) << "Invalid account:" << accountString; return; } - const auto avatarSize = requestedSize.width() > 0 ? requestedSize.width() : 64; - const auto avatarJob = new AvatarJob(accountState->account(), avatarUserId, avatarSize); - connect(avatarJob, &AvatarJob::avatarPixmap, this, [&](const QImage &avatarImg) { - handleDone(AvatarJob::makeCircularAvatar(avatarImg)); + + const auto account = accountState->account(); + const auto qnam = account->networkAccessManager(); + + QMetaObject::invokeMethod(qnam, [this, requestedSize, avatarUserId, account]() { + const auto avatarSize = requestedSize.width() > 0 ? requestedSize.width() : 64; + const auto avatarJob = new AvatarJob(account, avatarUserId, avatarSize); + connect(avatarJob, &AvatarJob::avatarPixmap, this, [&](const QImage &avatarImg) { + QMetaObject::invokeMethod(this, [this, avatarImg] { + handleDone(AvatarJob::makeCircularAvatar(avatarImg)); + }); + }); + avatarJob->start(); }); - avatarJob->start(); return; } From ae289fe54d5f0a6f4f3055ba02efa2e97b47e103 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Wed, 30 Oct 2024 16:37:42 +0100 Subject: [PATCH 178/244] do not move to trash online only files/folders: going to fail ensure that even if move to trash is enabled, we do not erroneously try to move online only files or folders to trash bin Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/libsync/propagatorjobs.cpp | 3 ++- src/libsync/vfs/cfapi/vfs_cfapi.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libsync/propagatorjobs.cpp b/src/libsync/propagatorjobs.cpp index bcdf5a4697e69..8b397f033e525 100644 --- a/src/libsync/propagatorjobs.cpp +++ b/src/libsync/propagatorjobs.cpp @@ -117,7 +117,8 @@ void PropagateLocalRemove::start() } QString removeError; - if (_moveToTrash) { + const auto availability = propagator()->syncOptions()._vfs->availability(_item->_file, Vfs::AvailabilityRecursivity::RecursiveAvailability); + if (_moveToTrash && (!availability || (*availability != VfsItemAvailability::AllDehydrated && *availability != VfsItemAvailability::OnlineOnly && *availability != VfsItemAvailability::Mixed))) { if ((QDir(filename).exists() || FileSystem::fileExists(filename)) && !FileSystem::moveToTrash(filename, &removeError)) { done(SyncFileItem::NormalError, removeError, ErrorCategory::GenericError); diff --git a/src/libsync/vfs/cfapi/vfs_cfapi.cpp b/src/libsync/vfs/cfapi/vfs_cfapi.cpp index 414caed1bf08c..7ae45a6d286a5 100644 --- a/src/libsync/vfs/cfapi/vfs_cfapi.cpp +++ b/src/libsync/vfs/cfapi/vfs_cfapi.cpp @@ -511,7 +511,7 @@ int VfsCfApi::finalizeHydrationJob(const QString &requestId) VfsCfApi::HydratationAndPinStates VfsCfApi::computeRecursiveHydrationAndPinStates(const QString &folderPath, const Optional &basePinState) { Q_ASSERT(!folderPath.endsWith('/')); - const auto fullPath = params().filesystemPath + folderPath; + const auto fullPath = QString{params().filesystemPath + folderPath}; QFileInfo info(params().filesystemPath + folderPath); if (!FileSystem::fileExists(fullPath)) { From dee8e9d9f661d6e6b67b5c07f423a1a5d7e90b1a Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Wed, 30 Oct 2024 18:48:53 +0100 Subject: [PATCH 179/244] fix computation of availability for empty folders Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/libsync/vfs/cfapi/vfs_cfapi.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/libsync/vfs/cfapi/vfs_cfapi.cpp b/src/libsync/vfs/cfapi/vfs_cfapi.cpp index 7ae45a6d286a5..64779407f2a9f 100644 --- a/src/libsync/vfs/cfapi/vfs_cfapi.cpp +++ b/src/libsync/vfs/cfapi/vfs_cfapi.cpp @@ -372,6 +372,14 @@ Vfs::AvailabilityResult VfsCfApi::availability(const QString &folderPath, const return VfsItemAvailability::AlwaysLocal; else return VfsItemAvailability::AllHydrated; + } else { + if (pin && *pin == PinState::OnlineOnly) { + return VfsItemAvailability::OnlineOnly; + } else if (pin && *pin == PinState::AlwaysLocal) { + return VfsItemAvailability::AlwaysLocal; + } else { + return VfsItemAvailability::AllDehydrated; + } } return AvailabilityError::NoSuchItem; } From 7bc53b535bd0b9a1626bc4de4d7603cdada23d4b Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Tue, 5 Nov 2024 16:29:53 +0100 Subject: [PATCH 180/244] use proper item type when converting existing windows shortcuts we need to make shortcut files be proper virtual placeholder files let the sync engine use the proper item type for that Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/libsync/discovery.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp index 7300a4c5f9a1e..3fe2fb2d82e49 100644 --- a/src/libsync/discovery.cpp +++ b/src/libsync/discovery.cpp @@ -1193,11 +1193,7 @@ void ProcessDirectoryJob::processFileAnalyzeLocalInfo( item->_direction = SyncFileItem::Down; item->_instruction = CSYNC_INSTRUCTION_SYNC; const auto pinState = _discoveryData->_syncOptions._vfs->pinState(path._local); - if (FileSystem::isLnkFile(path._local) && !_discoveryData->_syncOptions._vfs->pinState(path._local).isValid()) { - item->_type = ItemTypeVirtualFileDownload; - } else { - item->_type = ItemTypeVirtualFileDehydration; - } + item->_type = ItemTypeVirtualFileDehydration; } else if (!serverModified && (dbEntry._inode != localEntry.inode || (localEntry.isMetadataMissing && item->_type == ItemTypeFile && !FileSystem::isLnkFile(item->_file)) From 8d8ddce981f54ae1adbdbddc1676931bc84badaf Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Tue, 5 Nov 2024 17:32:53 +0100 Subject: [PATCH 181/244] fix migration of existing windows shortcut files to placeholder we cannot do a single call to convert the plain old file to be a dehydrated virtual file placeholder split the conversion into a separate initial API call fix transition from releases < 3.14 to current releases that have first class support for windows shortcuts (so called link files) Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/libsync/propagatedownload.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/libsync/propagatedownload.cpp b/src/libsync/propagatedownload.cpp index 9fcc3988fb78e..b6474ea54df9e 100644 --- a/src/libsync/propagatedownload.cpp +++ b/src/libsync/propagatedownload.cpp @@ -498,6 +498,13 @@ void PropagateDownloadFile::startAfterIsEncryptedIsChecked() } qCDebug(lcPropagateDownload) << "dehydrating file" << _item->_file; + if (FileSystem::isLnkFile(fsPath)) { + const auto convertResult = vfs->convertToPlaceholder(fsPath, *_item); + if (!convertResult) { + qCCritical(lcPropagateDownload()) << "error when converting a shortcut file to placeholder" << convertResult.error(); + } + } + auto r = vfs->dehydratePlaceholder(*_item); if (!r) { done(SyncFileItem::NormalError, r.error(), ErrorCategory::GenericError); From 0633754867111e45a4ad62c0450a595b51dd882d Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Tue, 5 Nov 2024 17:38:04 +0100 Subject: [PATCH 182/244] provide proper log when we block a self hydration request should make the existing log more useful when tracking the self requested implicit hydration bugs Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/libsync/vfs/cfapi/cfapiwrapper.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/libsync/vfs/cfapi/cfapiwrapper.cpp b/src/libsync/vfs/cfapi/cfapiwrapper.cpp index a483d2c066383..abe72f1916060 100644 --- a/src/libsync/vfs/cfapi/cfapiwrapper.cpp +++ b/src/libsync/vfs/cfapi/cfapiwrapper.cpp @@ -157,17 +157,17 @@ void CALLBACK cfApiFetchDataCallback(const CF_CALLBACK_INFO *callbackInfo, const callbackInfo->FileSize.QuadPart); }; - if (QCoreApplication::applicationPid() == callbackInfo->ProcessInfo->ProcessId) { - qCCritical(lcCfApiWrapper) << "implicit hydration triggered by the client itself. Will lead to a deadlock. Cancel"; - sendTransferError(); - return; - } - auto vfs = reinterpret_cast(callbackInfo->CallbackContext); Q_ASSERT(vfs->metaObject()->className() == QByteArrayLiteral("OCC::VfsCfApi")); const auto path = QString(QString::fromWCharArray(callbackInfo->VolumeDosName) + QString::fromWCharArray(callbackInfo->NormalizedPath)); const auto requestId = QString::number(callbackInfo->TransferKey.QuadPart, 16); + if (QCoreApplication::applicationPid() == callbackInfo->ProcessInfo->ProcessId) { + qCCritical(lcCfApiWrapper) << "implicit hydration triggered by the client itself. Will lead to a deadlock. Cancel" << path << requestId; + sendTransferError(); + return; + } + qCDebug(lcCfApiWrapper) << "Request hydration for" << path << requestId; const auto invokeResult = QMetaObject::invokeMethod(vfs, [=] { vfs->requestHydration(requestId, path); }, Qt::QueuedConnection); From 74f639b0b305d7b86c48ac677a68887b843aae67 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Tue, 5 Nov 2024 17:39:28 +0100 Subject: [PATCH 183/244] prevent implicit hydration when setting file permissions on shortcuts we were using specialized API to set the file permissions on the windows shortcut and later falling back to the generic code path due to the mising return Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/common/filesystembase.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common/filesystembase.cpp b/src/common/filesystembase.cpp index 765b081bffb07..8371cc336097d 100644 --- a/src/common/filesystembase.cpp +++ b/src/common/filesystembase.cpp @@ -131,6 +131,7 @@ void FileSystem::setFileReadOnly(const QString &filename, bool readonly) { qCWarning(lcFileSystem()) << filename << (readonly ? "readonly" : "read write") << e.what(); } + return; } #endif QFile file(filename); From 8e64be9067ebec9b7798a2fb6807e3ba8d523f87 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Tue, 5 Nov 2024 17:43:10 +0100 Subject: [PATCH 184/244] never use QFileInfo on possibly pure virtual placeholder file will prevent some type of activity being added to the list from triggering implicit hydration during synchronization most probably breaks existing open actions on those activities Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/gui/tray/activitylistmodel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/tray/activitylistmodel.cpp b/src/gui/tray/activitylistmodel.cpp index f2fc26ba1e18a..47cc441f6c14f 100644 --- a/src/gui/tray/activitylistmodel.cpp +++ b/src/gui/tray/activitylistmodel.cpp @@ -275,9 +275,9 @@ QVariant ActivityListModel::data(const QModelIndex &index, int role) const case DisplayPathRole: return getDisplayPath(); case PathRole: - return QFileInfo(getFilePath()).path(); + return getFilePath(); case OpenablePathRole: - return a._isMultiObjectActivity ? QFileInfo(getFilePath()).canonicalPath() : QFileInfo(getFilePath()).canonicalFilePath(); + return getFilePath(); case DisplayLocationRole: return displayLocation(); case ActionsLinksRole: { From 8fd9fff81307e9a7a4bad1533f2320cfc6468c4e Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Tue, 5 Nov 2024 17:45:20 +0100 Subject: [PATCH 185/244] improve logs for CfAPI handle requests in erroneous cases Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/libsync/vfs/cfapi/cfapiwrapper.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libsync/vfs/cfapi/cfapiwrapper.cpp b/src/libsync/vfs/cfapi/cfapiwrapper.cpp index abe72f1916060..ed214b88f9d78 100644 --- a/src/libsync/vfs/cfapi/cfapiwrapper.cpp +++ b/src/libsync/vfs/cfapi/cfapiwrapper.cpp @@ -781,10 +781,12 @@ bool OCC::CfApiWrapper::isSparseFile(const QString &path) OCC::CfApiWrapper::FileHandle OCC::CfApiWrapper::handleForPath(const QString &path) { if (path.isEmpty()) { + qCWarning(lcCfApiWrapper) << "empty path"; return {}; } if (!FileSystem::fileExists(path)) { + qCWarning(lcCfApiWrapper) << "file does not exist"; return {}; } @@ -807,6 +809,7 @@ OCC::CfApiWrapper::FileHandle OCC::CfApiWrapper::handleForPath(const QString &pa } } + qCWarning(lcCfApiWrapper) << "no handle was created"; return {}; } From e774d0ea970108394f5c888ec10b89dc3e600e30 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Thu, 7 Nov 2024 16:47:45 +0100 Subject: [PATCH 186/244] remote permissions of a view-only folder: no new file or folder change the way we evaluate a folder permissions to be read-only when no new file or new folders can be created if those permissions are lacking, client will make the local folder read-only if those permissions are granted, client will make local folder read-write Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/libsync/propagatorjobs.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/libsync/propagatorjobs.cpp b/src/libsync/propagatorjobs.cpp index 8b397f033e525..b57a4ede46612 100644 --- a/src/libsync/propagatorjobs.cpp +++ b/src/libsync/propagatorjobs.cpp @@ -229,8 +229,6 @@ void PropagateLocalMkdir::startLocalMkdir() #if !defined(Q_OS_MACOS) || __MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_15 if (!_item->_remotePerm.isNull() && !_item->_remotePerm.hasPermission(RemotePermissions::CanAddFile) && - !_item->_remotePerm.hasPermission(RemotePermissions::CanRename) && - !_item->_remotePerm.hasPermission(RemotePermissions::CanMove) && !_item->_remotePerm.hasPermission(RemotePermissions::CanAddSubDirectories)) { try { FileSystem::setFolderPermissions(newDirStr, FileSystem::FolderPermissions::ReadOnly); From 0fbef8ba089575f0b0dbe0054d771cd5c063164c Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Tue, 5 Nov 2024 23:09:00 +0100 Subject: [PATCH 187/244] ensure lnk shortcut files are converted to virtual files Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/libsync/discovery.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp index 3fe2fb2d82e49..f4a98b518217c 100644 --- a/src/libsync/discovery.cpp +++ b/src/libsync/discovery.cpp @@ -1731,6 +1731,15 @@ void ProcessDirectoryJob::processFileFinalize( item->_instruction = CSyncEnums::CSYNC_INSTRUCTION_UPDATE_VFS_METADATA; } + if (_discoveryData->_syncOptions._vfs && + (item->_type == CSyncEnums::ItemTypeFile || item->_type == CSyncEnums::ItemTypeDirectory) && + item->_instruction == CSyncEnums::CSYNC_INSTRUCTION_NONE && + FileSystem::isLnkFile((_discoveryData->_localDir + path._local))) { + item->_instruction = CSyncEnums::CSYNC_INSTRUCTION_SYNC; + item->_direction = SyncFileItem::Down; + item->_type = CSyncEnums::ItemTypeVirtualFileDehydration; + } + if (path._original != path._target && (item->_instruction == CSYNC_INSTRUCTION_UPDATE_VFS_METADATA || item->_instruction == CSYNC_INSTRUCTION_UPDATE_METADATA || item->_instruction == CSYNC_INSTRUCTION_NONE)) { ASSERT(_dirItem && _dirItem->_instruction == CSYNC_INSTRUCTION_RENAME); // This is because otherwise subitems are not updated! (ideally renaming a directory could From 61811bea58d49e6ab50635b858710715ac10e03b Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 29 Oct 2024 12:02:28 +0800 Subject: [PATCH 188/244] Directly bundle macOS vfs logs within standard debug archive Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/generalsettings.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/gui/generalsettings.cpp b/src/gui/generalsettings.cpp index 8653f433f6c6f..e2822024ff874 100644 --- a/src/gui/generalsettings.cpp +++ b/src/gui/generalsettings.cpp @@ -13,6 +13,7 @@ */ #include "generalsettings.h" +#include "macOS/fileprovider.h" #include "ui_generalsettings.h" #include "theme.h" @@ -31,6 +32,10 @@ #endif #endif +#ifdef BUILD_FILE_PROVIDER_MODULE +#include "macOS/fileprovidersettingscontroller.h" +#endif + #include "ignorelisteditor.h" #include "common/utility.h" #include "logger.h" @@ -113,6 +118,23 @@ QVector createDebugArchiveFileList() std::copy(std::cbegin(newEntries), std::cend(newEntries), std::back_inserter(list)); }); +#ifdef BUILD_FILE_PROVIDER_MODULE + + const auto fileProvider = OCC::Mac::FileProvider::instance(); + if (fileProvider && fileProvider->fileProviderAvailable()) { + const auto tempDir = QTemporaryDir(); + const auto xpc = fileProvider->xpc(); + const auto vfsAccounts = OCC::Mac::FileProviderSettingsController::instance()->vfsEnabledAccounts(); + for (const auto &accountUserIdAtHost : vfsAccounts) { + const auto vfsLogFilename = QStringLiteral("macOS_vfs_%1.log").arg(accountUserIdAtHost); + const auto vfsLogPath = tempDir.filePath(vfsLogFilename); + xpc->createDebugArchiveForExtension(accountUserIdAtHost, vfsLogPath); + list.append(fileInfoToZipEntry(QFileInfo(vfsLogPath))); + } + } + +#endif + return list; } From 0efecdf04d92406c23313a9b603e3c86adffcc68 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 29 Oct 2024 12:02:50 +0800 Subject: [PATCH 189/244] Remove create debug archive button from individual vfs account settings Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/macOS/ui/FileProviderSettings.qml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/gui/macOS/ui/FileProviderSettings.qml b/src/gui/macOS/ui/FileProviderSettings.qml index 8b11c0322021d..35b51f43246b4 100644 --- a/src/gui/macOS/ui/FileProviderSettings.qml +++ b/src/gui/macOS/ui/FileProviderSettings.qml @@ -153,11 +153,6 @@ Page { text: qsTr("Signal file provider domain") onClicked: root.controller.signalFileProviderDomain(root.accountUserIdAtHost) } - - Button { - text: qsTr("Create debug archive") - onClicked: root.controller.createDebugArchive(root.accountUserIdAtHost) - } } } } From 6683bfb447f41f3abd851de257d63f17729aa23f Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 5 Nov 2024 17:40:47 +0900 Subject: [PATCH 190/244] Ensure we are not halting the entire application when trying to generate the debug archive for macOS vfs Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/macOS/fileproviderxpc.h | 2 +- src/gui/macOS/fileproviderxpc_mac.mm | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/gui/macOS/fileproviderxpc.h b/src/gui/macOS/fileproviderxpc.h index 39bc86397ac6d..6dfbb065098d4 100644 --- a/src/gui/macOS/fileproviderxpc.h +++ b/src/gui/macOS/fileproviderxpc.h @@ -45,7 +45,7 @@ public slots: void configureExtensions(); void authenticateExtension(const QString &extensionAccountId) const; void unauthenticateExtension(const QString &extensionAccountId) const; - void createDebugArchiveForExtension(const QString &extensionAccountId, const QString &filename) const; + void createDebugArchiveForExtension(const QString &extensionAccountId, const QString &filename); void setFastEnumerationEnabledForExtension(const QString &extensionAccountId, bool enabled) const; diff --git a/src/gui/macOS/fileproviderxpc_mac.mm b/src/gui/macOS/fileproviderxpc_mac.mm index cc4b14a2aff08..60fe7c2a54f2a 100644 --- a/src/gui/macOS/fileproviderxpc_mac.mm +++ b/src/gui/macOS/fileproviderxpc_mac.mm @@ -111,9 +111,13 @@ break; } } -void FileProviderXPC::createDebugArchiveForExtension(const QString &extensionAccountId, const QString &filename) const +void FileProviderXPC::createDebugArchiveForExtension(const QString &extensionAccountId, const QString &filename) { qCInfo(lcFileProviderXPC) << "Creating debug archive for extension" << extensionAccountId << "at" << filename; + if (!fileProviderExtReachable(extensionAccountId)) { + qCWarning(lcFileProviderXPC) << "Extension is not reachable. Cannot create debug archive"; + return; + } // You need to fetch the contents from the extension and then create the archive from the client side. // The extension is not allowed to ask for permission to write into the file system as it is not a user facing process. const auto clientCommService = (NSObject *)_clientCommServices.value(extensionAccountId); From 5a336e4ef08f055c1a8f9b39637472a45fb2e85d Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 7 Nov 2024 02:07:28 +0900 Subject: [PATCH 191/244] Move debug archive for vfs creation out of log entry creation Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/generalsettings.cpp | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/gui/generalsettings.cpp b/src/gui/generalsettings.cpp index e2822024ff874..f589fb3c59eaf 100644 --- a/src/gui/generalsettings.cpp +++ b/src/gui/generalsettings.cpp @@ -118,23 +118,6 @@ QVector createDebugArchiveFileList() std::copy(std::cbegin(newEntries), std::cend(newEntries), std::back_inserter(list)); }); -#ifdef BUILD_FILE_PROVIDER_MODULE - - const auto fileProvider = OCC::Mac::FileProvider::instance(); - if (fileProvider && fileProvider->fileProviderAvailable()) { - const auto tempDir = QTemporaryDir(); - const auto xpc = fileProvider->xpc(); - const auto vfsAccounts = OCC::Mac::FileProviderSettingsController::instance()->vfsEnabledAccounts(); - for (const auto &accountUserIdAtHost : vfsAccounts) { - const auto vfsLogFilename = QStringLiteral("macOS_vfs_%1.log").arg(accountUserIdAtHost); - const auto vfsLogPath = tempDir.filePath(vfsLogFilename); - xpc->createDebugArchiveForExtension(accountUserIdAtHost, vfsLogPath); - list.append(fileInfoToZipEntry(QFileInfo(vfsLogPath))); - } - } - -#endif - return list; } @@ -160,6 +143,21 @@ bool createDebugArchive(const QString &filename) zip.addLocalFile(entry.localFilename, entry.zipFilename); } +#ifdef BUILD_FILE_PROVIDER_MODULE + const auto fileProvider = OCC::Mac::FileProvider::instance(); + if (fileProvider && fileProvider->fileProviderAvailable()) { + const auto tempDir = QTemporaryDir(); + const auto xpc = fileProvider->xpc(); + const auto vfsAccounts = OCC::Mac::FileProviderSettingsController::instance()->vfsEnabledAccounts(); + for (const auto &accountUserIdAtHost : vfsAccounts) { + const auto vfsLogFilename = QStringLiteral("macOS_vfs_%1.log").arg(accountUserIdAtHost); + const auto vfsLogPath = tempDir.filePath(vfsLogFilename); + xpc->createDebugArchiveForExtension(accountUserIdAtHost, vfsLogPath); + zip.addLocalFile(vfsLogPath, vfsLogFilename); + } + } +#endif + const auto clientParameters = QCoreApplication::arguments().join(' ').toUtf8(); zip.prepareWriting("__nextcloud_client_parameters.txt", {}, {}, clientParameters.size()); zip.writeData(clientParameters, clientParameters.size()); From ee82b08200e4f84a99b0e2338996e377d4261c06 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 7 Nov 2024 02:07:56 +0900 Subject: [PATCH 192/244] Just use davUser as account identifier for macOS log filename Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/generalsettings.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/gui/generalsettings.cpp b/src/gui/generalsettings.cpp index f589fb3c59eaf..a1149190a8aee 100644 --- a/src/gui/generalsettings.cpp +++ b/src/gui/generalsettings.cpp @@ -150,7 +150,13 @@ bool createDebugArchive(const QString &filename) const auto xpc = fileProvider->xpc(); const auto vfsAccounts = OCC::Mac::FileProviderSettingsController::instance()->vfsEnabledAccounts(); for (const auto &accountUserIdAtHost : vfsAccounts) { - const auto vfsLogFilename = QStringLiteral("macOS_vfs_%1.log").arg(accountUserIdAtHost); + const auto accountState = OCC::AccountManager::instance()->accountFromUserId(accountUserIdAtHost); + if (!accountState) { + qWarning() << "Could not find account for" << accountUserIdAtHost; + continue; + } + const auto account = accountState->account(); + const auto vfsLogFilename = QStringLiteral("macOS_vfs_%1.log").arg(account->davUser()); const auto vfsLogPath = tempDir.filePath(vfsLogFilename); xpc->createDebugArchiveForExtension(accountUserIdAtHost, vfsLogPath); zip.addLocalFile(vfsLogPath, vfsLogFilename); From de512cfe89d07a9f1359a08d66ebcc08b860113a Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 20 Nov 2024 10:27:37 +0800 Subject: [PATCH 193/244] Move file provider header include into file provider ifdef Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/generalsettings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/generalsettings.cpp b/src/gui/generalsettings.cpp index a1149190a8aee..562e41642ccfe 100644 --- a/src/gui/generalsettings.cpp +++ b/src/gui/generalsettings.cpp @@ -13,7 +13,6 @@ */ #include "generalsettings.h" -#include "macOS/fileprovider.h" #include "ui_generalsettings.h" #include "theme.h" @@ -33,6 +32,7 @@ #endif #ifdef BUILD_FILE_PROVIDER_MODULE +#include "macOS/fileprovider.h" #include "macOS/fileprovidersettingscontroller.h" #endif From 27db5fcbfcbc2bf99c70d592cf763dfc210b1413 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Tue, 29 Oct 2024 18:00:52 +0100 Subject: [PATCH 194/244] Use slotComputeOverallSyncStatus as a slot. - Use qAsConst. Signed-off-by: Camila Ayres Signed-off-by: Rainer Walke --- src/gui/owncloudgui.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/owncloudgui.cpp b/src/gui/owncloudgui.cpp index 52536d77add50..e4f07f2434604 100644 --- a/src/gui/owncloudgui.cpp +++ b/src/gui/owncloudgui.cpp @@ -118,6 +118,8 @@ ownCloudGui::ownCloudGui(Application *parent) FolderMan *folderMan = FolderMan::instance(); connect(folderMan, &FolderMan::folderSyncStateChange, this, &ownCloudGui::slotSyncStateChange); + connect(folderMan, &FolderMan::folderSyncStateChange, this, &ownCloudGui::slotComputeOverallSyncStatus); + #ifdef BUILD_FILE_PROVIDER_MODULE connect(Mac::FileProvider::instance()->socketServer(), &Mac::FileProviderSocketServer::syncStateChanged, this, &ownCloudGui::slotComputeOverallSyncStatus); @@ -240,8 +242,6 @@ void ownCloudGui::slotTrayClicked(QSystemTrayIcon::ActivationReason reason) void ownCloudGui::slotSyncStateChange(Folder *folder) { - slotComputeOverallSyncStatus(); - if (!folder) { return; // Valid, just a general GUI redraw was needed. } @@ -371,7 +371,7 @@ void ownCloudGui::slotComputeOverallSyncStatus() #else QStringList messages; messages.append(tr("Disconnected from accounts:")); - for (const auto &accountState : problemAccounts) { + for (const auto &accountState : qAsConst(problemAccounts)) { QString message = tr("Account %1: %2").arg(accountState->account()->displayName(), accountState->stateString(accountState->state())); if (!accountState->connectionErrors().empty()) { message += QLatin1String("\n"); From c6483024b09be9ff18446fd415532f5e353b9230 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Tue, 29 Oct 2024 18:36:40 +0100 Subject: [PATCH 195/244] Fix warning "Calling C++ methods with 'this' objects different from the one they were retrieved from is broken" https://doc.qt.io/qt-6/qtqml-documents-structure.html#nativemethodbehavior Signed-off-by: Camila Ayres Signed-off-by: Rainer Walke --- src/gui/tray/TrayFoldersMenuButton.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/tray/TrayFoldersMenuButton.qml b/src/gui/tray/TrayFoldersMenuButton.qml index 85fa37d098ede..6da6f9ca914cb 100644 --- a/src/gui/tray/TrayFoldersMenuButton.qml +++ b/src/gui/tray/TrayFoldersMenuButton.qml @@ -11,6 +11,7 @@ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. */ +pragma NativeMethodBehavior: AcceptThisObject import QtQuick import QtQuick.Controls import QtQuick.Layouts From c318764ec2d21aabb47b327367b174da9d700213 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Tue, 29 Oct 2024 18:45:03 +0100 Subject: [PATCH 196/244] Modernize Account::displayName(). Signed-off-by: Camila Ayres Signed-off-by: Rainer Walke --- src/libsync/account.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp index 84c68b010db84..4d64876d541c9 100644 --- a/src/libsync/account.cpp +++ b/src/libsync/account.cpp @@ -156,13 +156,13 @@ void Account::setAvatar(const QImage &img) QString Account::displayName() const { - QString dn = QString("%1@%2").arg(credentials()->user(), _url.host()); - int port = url().port(); + auto displayName = QString("%1@%2").arg(credentials() ? credentials()->user() : "", _url.host()); + const auto port = url().port(); if (port > 0 && port != 80 && port != 443) { - dn.append(QLatin1Char(':')); - dn.append(QString::number(port)); + displayName.append(QLatin1Char(':')); + displayName.append(QString::number(port)); } - return dn; + return displayName; } QString Account::userIdAtHostWithPort() const From 623b34d9adb5819868d04e03d34365ad63659b32 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Tue, 29 Oct 2024 20:12:20 +0100 Subject: [PATCH 197/244] Use slots as slots. Signed-off-by: Camila Ayres Signed-off-by: Rainer Walke --- src/gui/application.cpp | 11 +++-------- src/gui/application.h | 1 - src/gui/owncloudgui.cpp | 10 ---------- src/gui/owncloudgui.h | 2 -- src/gui/settingsdialog.cpp | 2 +- 5 files changed, 4 insertions(+), 22 deletions(-) diff --git a/src/gui/application.cpp b/src/gui/application.cpp index fb34647618350..ebcaa25fc0aa8 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -365,7 +365,7 @@ Application::Application(int &argc, char **argv) } _theme->setSystrayUseMonoIcons(ConfigFile().monoIcons()); - connect(_theme, &Theme::systrayUseMonoIconsChanged, this, &Application::slotUseMonoIconsChanged); + connect(_theme, &Theme::systrayUseMonoIconsChanged, _gui, &ownCloudGui::slotComputeOverallSyncStatus); connect(this, &Application::systemPaletteChanged, _theme, &Theme::systemPaletteHasChanged); @@ -589,7 +589,7 @@ void Application::slotAccountStateRemoved(AccountState *accountState) { if (_gui) { disconnect(accountState, &AccountState::stateChanged, - _gui.data(), &ownCloudGui::slotAccountStateChanged); + _gui.data(), &ownCloudGui::slotComputeOverallSyncStatus); disconnect(accountState->account().data(), &Account::serverVersionChanged, _gui.data(), &ownCloudGui::slotTrayMessageIfServerUnsupported); } @@ -611,7 +611,7 @@ void Application::slotAccountStateRemoved(AccountState *accountState) void Application::slotAccountStateAdded(AccountState *accountState) { connect(accountState, &AccountState::stateChanged, - _gui.data(), &ownCloudGui::slotAccountStateChanged); + _gui.data(), &ownCloudGui::slotComputeOverallSyncStatus); connect(accountState->account().data(), &Account::serverVersionChanged, _gui.data(), &ownCloudGui::slotTrayMessageIfServerUnsupported); connect(accountState, &AccountState::termsOfServiceChanged, @@ -716,11 +716,6 @@ void Application::setupLogging() qCInfo(lcApplication) << "Arguments:" << qApp->arguments(); } -void Application::slotUseMonoIconsChanged(bool) -{ - _gui->slotComputeOverallSyncStatus(); -} - void Application::slotParseMessage(const QString &msg, QObject *) { if (msg.startsWith(QLatin1String("MSG_PARSEOPTIONS:"))) { diff --git a/src/gui/application.h b/src/gui/application.h index f2c41fe453768..c3936da43a45e 100644 --- a/src/gui/application.h +++ b/src/gui/application.h @@ -101,7 +101,6 @@ public slots: protected slots: void slotParseMessage(const QString &, QObject *); void slotCheckConnection(); - void slotUseMonoIconsChanged(bool); void slotCleanup(); void slotAccountStateAdded(OCC::AccountState *accountState); void slotAccountStateRemoved(OCC::AccountState *accountState); diff --git a/src/gui/owncloudgui.cpp b/src/gui/owncloudgui.cpp index e4f07f2434604..dccdcc3a8c7f9 100644 --- a/src/gui/owncloudgui.cpp +++ b/src/gui/owncloudgui.cpp @@ -258,21 +258,11 @@ void ownCloudGui::slotSyncStateChange(Folder *folder) } } -void ownCloudGui::slotFoldersChanged() -{ - slotComputeOverallSyncStatus(); -} - void ownCloudGui::slotOpenPath(const QString &path) { showInFileManager(path); } -void ownCloudGui::slotAccountStateChanged() -{ - slotComputeOverallSyncStatus(); -} - void ownCloudGui::slotTrayMessageIfServerUnsupported(Account *account) { if (account->serverVersionUnsupported()) { diff --git a/src/gui/owncloudgui.h b/src/gui/owncloudgui.h index 2370d9d3f5614..446b58a9c19be 100644 --- a/src/gui/owncloudgui.h +++ b/src/gui/owncloudgui.h @@ -79,7 +79,6 @@ public slots: void slotFolderOpenAction(const QString &alias); void slotUpdateProgress(const QString &folder, const OCC::ProgressInfo &progress); void slotShowGuiMessage(const QString &title, const QString &message); - void slotFoldersChanged(); void slotShowSettings(); void slotShowSyncProtocol(); void slotShutdown(); @@ -92,7 +91,6 @@ public slots: void slotSettingsDialogActivated(); void slotHelp(); void slotOpenPath(const QString &path); - void slotAccountStateChanged(); void slotTrayMessageIfServerUnsupported(OCC::Account *account); void slotNeedToAcceptTermsOfService(OCC::AccountPtr account, OCC::AccountState::State state); diff --git a/src/gui/settingsdialog.cpp b/src/gui/settingsdialog.cpp index fc09c0cdce04d..7b4d778946f22 100644 --- a/src/gui/settingsdialog.cpp +++ b/src/gui/settingsdialog.cpp @@ -261,7 +261,7 @@ void SettingsDialog::accountAdded(AccountState *s) _actionForAccount.insert(s->account().data(), accountAction); accountAction->trigger(); - connect(accountSettings, &AccountSettings::folderChanged, _gui, &ownCloudGui::slotFoldersChanged); + connect(accountSettings, &AccountSettings::folderChanged, _gui, &ownCloudGui::slotComputeOverallSyncStatus); connect(accountSettings, &AccountSettings::openFolderAlias, _gui, &ownCloudGui::slotFolderOpenAction); connect(accountSettings, &AccountSettings::showIssuesList, this, &SettingsDialog::showIssuesList); From 86051bbef23dbe7ee7419fa312a6ebdd347eef0d Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Tue, 29 Oct 2024 21:51:46 +0100 Subject: [PATCH 198/244] Diferentiate between display name and dav display name. Signed-off-by: Camila Ayres Signed-off-by: Rainer Walke --- src/gui/accountmanager.cpp | 5 +++-- src/libsync/account.cpp | 18 ++++++++++++++---- src/libsync/account.h | 2 ++ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/gui/accountmanager.cpp b/src/gui/accountmanager.cpp index 0c86f16a05fc3..67927066af2c7 100644 --- a/src/gui/accountmanager.cpp +++ b/src/gui/accountmanager.cpp @@ -334,7 +334,7 @@ void AccountManager::saveAccountHelper(Account *acc, QSettings &settings, bool s settings.setValue(QLatin1String(versionC), maxAccountVersion); settings.setValue(QLatin1String(urlC), acc->_url.toString()); settings.setValue(QLatin1String(davUserC), acc->_davUser); - settings.setValue(QLatin1String(displayNameC), acc->_displayName); + settings.setValue(QLatin1String(displayNameC), acc->davDisplayName()); settings.setValue(QLatin1String(serverVersionC), acc->_serverVersion); settings.setValue(QLatin1String(serverColorC), acc->_serverColor); settings.setValue(QLatin1String(serverTextColorC), acc->_serverTextColor); @@ -498,7 +498,7 @@ AccountPtr AccountManager::loadAccountHelper(QSettings &settings) acc->_davUser = settings.value(QLatin1String(davUserC)).toString(); acc->_settingsMap.insert(QLatin1String(userC), settings.value(userC)); - acc->_displayName = settings.value(QLatin1String(displayNameC), "").toString(); + acc->setDavDisplayName(settings.value(QLatin1String(displayNameC), "").toString()); const QString authTypePrefix = authType + "_"; const auto settingsChildKeys = settings.childKeys(); for (const auto &key : settingsChildKeys) { @@ -509,6 +509,7 @@ AccountPtr AccountManager::loadAccountHelper(QSettings &settings) } acc->setCredentials(CredentialsFactory::create(authType)); + acc->setDisplayName(acc->credentials()->user()); acc->setNetworkProxySetting(settings.value(networkProxySettingC).value()); acc->setProxyType(settings.value(networkProxyTypeC).value()); diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp index 4d64876d541c9..855eab03ee356 100644 --- a/src/libsync/account.cpp +++ b/src/libsync/account.cpp @@ -156,13 +156,23 @@ void Account::setAvatar(const QImage &img) QString Account::displayName() const { - auto displayName = QString("%1@%2").arg(credentials() ? credentials()->user() : "", _url.host()); + return _displayName; +} + +void Account::setDisplayName(const QString &username) +{ + auto displayName = QString("%1@%2").arg(username, _url.host()); const auto port = url().port(); if (port > 0 && port != 80 && port != 443) { displayName.append(QLatin1Char(':')); displayName.append(QString::number(port)); } - return displayName; + + if (displayName == _displayName) { + return; + } + + _displayName = displayName; } QString Account::userIdAtHostWithPort() const @@ -178,12 +188,12 @@ QString Account::userIdAtHostWithPort() const QString Account::davDisplayName() const { - return _displayName; + return _davDisplayName; } void Account::setDavDisplayName(const QString &newDisplayName) { - _displayName = newDisplayName; + _davDisplayName = newDisplayName; emit accountChangedDisplayName(); emit prettyNameChanged(); } diff --git a/src/libsync/account.h b/src/libsync/account.h index 6333164add153..b280a767b5e83 100644 --- a/src/libsync/account.h +++ b/src/libsync/account.h @@ -146,6 +146,7 @@ class OWNCLOUDSYNC_EXPORT Account : public QObject /// The name of the account as shown in the toolbar [[nodiscard]] QString displayName() const; + void setDisplayName(const QString &username); /// User id in a form 'user@example.de, optionally port is added (if it is not 80 or 443) [[nodiscard]] QString userIdAtHostWithPort() const; @@ -493,6 +494,7 @@ private slots: QWeakPointer _sharedThis; QString _id; QString _davUser; + QString _davDisplayName; QString _displayName; QTimer _pushNotificationsReconnectTimer; #ifndef TOKEN_AUTH_ONLY From f8a800b0c2ccecfca5d5e38faa536bf6cfa486ca Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Thu, 31 Oct 2024 16:28:32 +0100 Subject: [PATCH 199/244] Rename vars: _am => _networkAccessManager, a => newAccountData. Signed-off-by: Camila Ayres Signed-off-by: Rainer Walke --- src/gui/accountmanager.cpp | 14 ++--- src/gui/accountmanager.h | 4 +- src/libsync/account.cpp | 107 +++++++++++++++++++------------------ src/libsync/account.h | 2 +- 4 files changed, 65 insertions(+), 62 deletions(-) diff --git a/src/gui/accountmanager.cpp b/src/gui/accountmanager.cpp index 67927066af2c7..d0361497961a7 100644 --- a/src/gui/accountmanager.cpp +++ b/src/gui/accountmanager.cpp @@ -123,7 +123,7 @@ AccountManager::AccountsRestoreResult AccountManager::restore(const bool alsoRes if (const auto acc = loadAccountHelper(*settings)) { acc->_id = accountId; const auto accState = new AccountState(acc); - const auto jar = qobject_cast(acc->_am->cookieJar()); + const auto jar = qobject_cast(acc->_networkAccessManager->cookieJar()); Q_ASSERT(jar); if (jar) { jar->restore(acc->cookieJarPath()); @@ -305,12 +305,12 @@ void AccountManager::save(bool saveCredentials) qCInfo(lcAccountManager) << "Saved all account settings, status:" << settings->status(); } -void AccountManager::saveAccount(Account *a) +void AccountManager::saveAccount(Account *newAccountData) { - qCDebug(lcAccountManager) << "Saving account" << a->url().toString(); + qCDebug(lcAccountManager) << "Saving account" << newAccountData->url().toString(); const auto settings = ConfigFile::settingsWithGroup(QLatin1String(accountsC)); - settings->beginGroup(a->id()); - saveAccountHelper(a, *settings, false); // don't save credentials they might not have been loaded yet + settings->beginGroup(newAccountData->id()); + saveAccountHelper(newAccountData, *settings, false); // don't save credentials they might not have been loaded yet settings->endGroup(); settings->sync(); @@ -424,8 +424,8 @@ void AccountManager::saveAccountHelper(Account *acc, QSettings &settings, bool s settings.endGroup(); // Save cookies. - if (acc->_am) { - auto *jar = qobject_cast(acc->_am->cookieJar()); + if (acc->_networkAccessManager) { + auto *jar = qobject_cast(acc->_networkAccessManager->cookieJar()); if (jar) { qCInfo(lcAccountManager) << "Saving cookies." << acc->cookieJarPath(); if (!jar->save(acc->cookieJarPath())) diff --git a/src/gui/accountmanager.h b/src/gui/accountmanager.h index 85a244ced4fb5..ceb357f09a96a 100644 --- a/src/gui/accountmanager.h +++ b/src/gui/accountmanager.h @@ -91,8 +91,8 @@ class AccountManager : public QObject static void backwardMigrationSettingsKeys(QStringList *deleteKeys, QStringList *ignoreKeys); public slots: - /// Saves account data, not including the credentials - void saveAccount(OCC::Account *a); + /// Saves account data when adding user, when updating e.g. dav user, not including the credentials + void saveAccount(OCC::Account *newAccountData); /// Saves account state data, not including the account void saveAccountState(OCC::AccountState *a); diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp index 855eab03ee356..03d2d2f937c10 100644 --- a/src/libsync/account.cpp +++ b/src/libsync/account.cpp @@ -135,9 +135,12 @@ QString Account::davUser() const void Account::setDavUser(const QString &newDavUser) { - if (_davUser == newDavUser) + if (_davUser == newDavUser) { return; + } + _davUser = newDavUser; + emit wantsAccountSaved(this); emit prettyNameChanged(); } @@ -253,14 +256,14 @@ void Account::setCredentials(AbstractCredentials *cred) QNetworkCookieJar *jar = nullptr; QNetworkProxy proxy; - if (_am) { - jar = _am->cookieJar(); + if (_networkAccessManager) { + jar = _networkAccessManager->cookieJar(); jar->setParent(nullptr); // Remember proxy (issue #2108) - proxy = _am->proxy(); + proxy = _networkAccessManager->proxy(); - _am = QSharedPointer(); + _networkAccessManager = QSharedPointer(); } // The order for these two is important! Reading the credential's @@ -271,17 +274,17 @@ void Account::setCredentials(AbstractCredentials *cred) // Note: This way the QNAM can outlive the Account and Credentials. // This is necessary to avoid issues with the QNAM being deleted while // processing slotHandleSslErrors(). - _am = QSharedPointer(_credentials->createQNAM(), &QObject::deleteLater); + _networkAccessManager = QSharedPointer(_credentials->createQNAM(), &QObject::deleteLater); if (jar) { - _am->setCookieJar(jar); + _networkAccessManager->setCookieJar(jar); } if (proxy.type() != QNetworkProxy::DefaultProxy) { - _am->setProxy(proxy); + _networkAccessManager->setProxy(proxy); } - connect(_am.data(), &QNetworkAccessManager::sslErrors, + connect(_networkAccessManager.data(), &QNetworkAccessManager::sslErrors, this, &Account::slotHandleSslErrors); - connect(_am.data(), &QNetworkAccessManager::proxyAuthenticationRequired, + connect(_networkAccessManager.data(), &QNetworkAccessManager::proxyAuthenticationRequired, this, &Account::proxyAuthenticationRequired); connect(_credentials.data(), &AbstractCredentials::fetched, this, &Account::slotCredentialsFetched); @@ -368,7 +371,7 @@ QUrl Account::deprecatedPrivateLinkUrl(const QByteArray &numericFileId) const */ void Account::clearCookieJar() { - const auto jar = qobject_cast(_am->cookieJar()); + const auto jar = qobject_cast(_networkAccessManager->cookieJar()); ASSERT(jar); jar->setAllCookies(QList()); } @@ -378,7 +381,7 @@ void Account::clearCookieJar() of not losing its ownership. */ void Account::lendCookieJarTo(QNetworkAccessManager *guest) { - auto jar = _am->cookieJar(); + auto jar = _networkAccessManager->cookieJar(); auto oldParent = jar->parent(); guest->setCookieJar(jar); // takes ownership of our precious cookie jar jar->setParent(oldParent); // takes it back @@ -391,35 +394,35 @@ QString Account::cookieJarPath() void Account::resetNetworkAccessManager() { - if (!_credentials || !_am) { + if (!_credentials || !_networkAccessManager) { return; } qCDebug(lcAccount) << "Resetting QNAM"; - QNetworkCookieJar *jar = _am->cookieJar(); - QNetworkProxy proxy = _am->proxy(); + QNetworkCookieJar *jar = _networkAccessManager->cookieJar(); + QNetworkProxy proxy = _networkAccessManager->proxy(); // Use a QSharedPointer to allow locking the life of the QNAM on the stack. // Make it call deleteLater to make sure that we can return to any QNAM stack frames safely. - _am = QSharedPointer(_credentials->createQNAM(), &QObject::deleteLater); + _networkAccessManager = QSharedPointer(_credentials->createQNAM(), &QObject::deleteLater); - _am->setCookieJar(jar); // takes ownership of the old cookie jar - _am->setProxy(proxy); // Remember proxy (issue #2108) + _networkAccessManager->setCookieJar(jar); // takes ownership of the old cookie jar + _networkAccessManager->setProxy(proxy); // Remember proxy (issue #2108) - connect(_am.data(), &QNetworkAccessManager::sslErrors, + connect(_networkAccessManager.data(), &QNetworkAccessManager::sslErrors, this, &Account::slotHandleSslErrors); - connect(_am.data(), &QNetworkAccessManager::proxyAuthenticationRequired, + connect(_networkAccessManager.data(), &QNetworkAccessManager::proxyAuthenticationRequired, this, &Account::proxyAuthenticationRequired); } QNetworkAccessManager *Account::networkAccessManager() { - return _am.data(); + return _networkAccessManager.data(); } QSharedPointer Account::sharedNetworkAccessManager() { - return _am; + return _networkAccessManager; } QNetworkReply *Account::sendRawRequest(const QByteArray &verb, const QUrl &url, QNetworkRequest req, QIODevice *data) @@ -427,17 +430,17 @@ QNetworkReply *Account::sendRawRequest(const QByteArray &verb, const QUrl &url, req.setUrl(url); req.setSslConfiguration(this->getOrCreateSslConfig()); if (verb == "HEAD" && !data) { - return _am->head(req); + return _networkAccessManager->head(req); } else if (verb == "GET" && !data) { - return _am->get(req); + return _networkAccessManager->get(req); } else if (verb == "POST") { - return _am->post(req, data); + return _networkAccessManager->post(req, data); } else if (verb == "PUT") { - return _am->put(req, data); + return _networkAccessManager->put(req, data); } else if (verb == "DELETE" && !data) { - return _am->deleteResource(req); + return _networkAccessManager->deleteResource(req); } - return _am->sendCustomRequest(req, verb, data); + return _networkAccessManager->sendCustomRequest(req, verb, data); } QNetworkReply *Account::sendRawRequest(const QByteArray &verb, const QUrl &url, QNetworkRequest req, const QByteArray &data) @@ -445,17 +448,17 @@ QNetworkReply *Account::sendRawRequest(const QByteArray &verb, const QUrl &url, req.setUrl(url); req.setSslConfiguration(this->getOrCreateSslConfig()); if (verb == "HEAD" && data.isEmpty()) { - return _am->head(req); + return _networkAccessManager->head(req); } else if (verb == "GET" && data.isEmpty()) { - return _am->get(req); + return _networkAccessManager->get(req); } else if (verb == "POST") { - return _am->post(req, data); + return _networkAccessManager->post(req, data); } else if (verb == "PUT") { - return _am->put(req, data); + return _networkAccessManager->put(req, data); } else if (verb == "DELETE" && data.isEmpty()) { - return _am->deleteResource(req); + return _networkAccessManager->deleteResource(req); } - return _am->sendCustomRequest(req, verb, data); + return _networkAccessManager->sendCustomRequest(req, verb, data); } QNetworkReply *Account::sendRawRequest(const QByteArray &verb, const QUrl &url, QNetworkRequest req, QHttpMultiPart *data) @@ -463,11 +466,11 @@ QNetworkReply *Account::sendRawRequest(const QByteArray &verb, const QUrl &url, req.setUrl(url); req.setSslConfiguration(this->getOrCreateSslConfig()); if (verb == "PUT") { - return _am->put(req, data); + return _networkAccessManager->put(req, data); } else if (verb == "POST") { - return _am->post(req, data); + return _networkAccessManager->post(req, data); } - return _am->sendCustomRequest(req, verb, data); + return _networkAccessManager->sendCustomRequest(req, verb, data); } SimpleNetworkJob *Account::sendRequest(const QByteArray &verb, const QUrl &url, QNetworkRequest req, QIODevice *data) @@ -595,7 +598,7 @@ void Account::slotHandleSslErrors(QNetworkReply *reply, QList errors) // the deleteLater() of the QNAM before we have the chance of unwinding our stack. // Keep a ref here on our stackframe to make sure that it doesn't get deleted before // handleErrors returns. - QSharedPointer qnamLock = _am; + QSharedPointer qnamLock = _networkAccessManager; QPointer guard = reply; if (_sslErrorHandler->handleErrors(errors, reply->sslConfiguration(), &approvedCerts, sharedFromThis())) { @@ -671,7 +674,7 @@ void Account::handleInvalidCredentials() void Account::clearQNAMCache() { - _am->clearAccessCache(); + _networkAccessManager->clearAccessCache(); } const Capabilities &Account::capabilities() const @@ -1130,16 +1133,16 @@ void Account::setNetworkProxySetting(const AccountNetworkProxySetting setting) _networkProxySetting = setting; if (setting == AccountNetworkProxySetting::AccountSpecificProxy) { - auto proxy = _am->proxy(); + auto proxy = _networkAccessManager->proxy(); proxy.setType(proxyType()); proxy.setHostName(proxyHostName()); proxy.setPort(proxyPort()); proxy.setUser(proxyUser()); proxy.setPassword(proxyPassword()); - _am->setProxy(proxy); + _networkAccessManager->setProxy(proxy); } else { const auto proxy = QNetworkProxy::applicationProxy(); - _am->setProxy(proxy); + _networkAccessManager->setProxy(proxy); setProxyType(proxy.type()); setProxyHostName(proxy.hostName()); setProxyPort(proxy.port()); @@ -1163,9 +1166,9 @@ void Account::setProxyType(QNetworkProxy::ProxyType proxyType) _proxyType = proxyType; if (networkProxySetting() == AccountNetworkProxySetting::AccountSpecificProxy) { - auto proxy = _am->proxy(); + auto proxy = _networkAccessManager->proxy(); proxy.setType(proxyType); - _am->setProxy(proxy); + _networkAccessManager->setProxy(proxy); } emit proxyTypeChanged(); @@ -1185,9 +1188,9 @@ void Account::setProxyHostName(const QString &hostName) _proxyHostName = hostName; if (networkProxySetting() == AccountNetworkProxySetting::AccountSpecificProxy) { - auto proxy = _am->proxy(); + auto proxy = _networkAccessManager->proxy(); proxy.setHostName(hostName); - _am->setProxy(proxy); + _networkAccessManager->setProxy(proxy); } emit proxyHostNameChanged(); @@ -1207,9 +1210,9 @@ void Account::setProxyPort(const int port) _proxyPort = port; if (networkProxySetting() == AccountNetworkProxySetting::AccountSpecificProxy) { - auto proxy = _am->proxy(); + auto proxy = _networkAccessManager->proxy(); proxy.setPort(port); - _am->setProxy(proxy); + _networkAccessManager->setProxy(proxy); } emit proxyPortChanged(); @@ -1244,9 +1247,9 @@ void Account::setProxyUser(const QString &user) _proxyUser = user; if (networkProxySetting() == AccountNetworkProxySetting::AccountSpecificProxy) { - auto proxy = _am->proxy(); + auto proxy = _networkAccessManager->proxy(); proxy.setUser(user); - _am->setProxy(proxy); + _networkAccessManager->setProxy(proxy); } emit proxyUserChanged(); @@ -1266,9 +1269,9 @@ void Account::setProxyPassword(const QString &password) _proxyPassword = password; if (networkProxySetting() == AccountNetworkProxySetting::AccountSpecificProxy) { - auto proxy = _am->proxy(); + auto proxy = _networkAccessManager->proxy(); proxy.setPassword(password); - _am->setProxy(proxy); + _networkAccessManager->setProxy(proxy); } emit proxyPasswordChanged(); diff --git a/src/libsync/account.h b/src/libsync/account.h index b280a767b5e83..a991daed9cd47 100644 --- a/src/libsync/account.h +++ b/src/libsync/account.h @@ -519,7 +519,7 @@ private slots: QColor _serverTextColor = QColorConstants::White; bool _skipE2eeMetadataChecksumValidation = false; QScopedPointer _sslErrorHandler; - QSharedPointer _am; + QSharedPointer _networkAccessManager; QScopedPointer _credentials; bool _http2Supported = false; From d42812c56926845e0f65e1a224e813a707d36b4c Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Thu, 31 Oct 2024 18:18:25 +0100 Subject: [PATCH 200/244] Use saveAccount for adding single account. Signed-off-by: Camila Ayres Signed-off-by: Rainer Walke --- src/gui/owncloudsetupwizard.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp index 5a9c3e5f662de..5a2a58df8528a 100644 --- a/src/gui/owncloudsetupwizard.cpp +++ b/src/gui/owncloudsetupwizard.cpp @@ -728,7 +728,7 @@ AccountState *OwncloudSetupWizard::applyAccountChanges() auto manager = AccountManager::instance(); auto newState = manager->addAccount(newAccount); - manager->save(); + manager->saveAccount(newAccount.data()); return newState; } From cf3b133c04dcbdbd7cce7a5673c7c3b398a36a4a Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Mon, 4 Nov 2024 19:08:03 +0100 Subject: [PATCH 201/244] Add {} to single line if. Signed-off-by: Camila Ayres Signed-off-by: Rainer Walke --- src/gui/accountstate.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gui/accountstate.cpp b/src/gui/accountstate.cpp index e2fb2779413bd..d167f76f87ec3 100644 --- a/src/gui/accountstate.cpp +++ b/src/gui/accountstate.cpp @@ -202,8 +202,10 @@ void AccountState::signOutByUi() void AccountState::freshConnectionAttempt() { - if (isConnected()) + if (isConnected()) { setState(Disconnected); + } + checkConnectivity(); } From 1e4325b3e9728116b9ed946616079b789ac092f3 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Mon, 4 Nov 2024 19:17:15 +0100 Subject: [PATCH 202/244] acc => account. Signed-off-by: Camila Ayres Signed-off-by: Rainer Walke --- src/gui/accountmanager.cpp | 76 +++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/src/gui/accountmanager.cpp b/src/gui/accountmanager.cpp index d0361497961a7..0cdcace834d60 100644 --- a/src/gui/accountmanager.cpp +++ b/src/gui/accountmanager.cpp @@ -328,36 +328,36 @@ void AccountManager::saveAccountState(AccountState *a) qCDebug(lcAccountManager) << "Saved account state settings, status:" << settings->status(); } -void AccountManager::saveAccountHelper(Account *acc, QSettings &settings, bool saveCredentials) +void AccountManager::saveAccountHelper(Account *account, QSettings &settings, bool saveCredentials) { qCDebug(lcAccountManager) << "Saving settings to" << settings.fileName(); settings.setValue(QLatin1String(versionC), maxAccountVersion); - settings.setValue(QLatin1String(urlC), acc->_url.toString()); - settings.setValue(QLatin1String(davUserC), acc->_davUser); - settings.setValue(QLatin1String(displayNameC), acc->davDisplayName()); - settings.setValue(QLatin1String(serverVersionC), acc->_serverVersion); - settings.setValue(QLatin1String(serverColorC), acc->_serverColor); - settings.setValue(QLatin1String(serverTextColorC), acc->_serverTextColor); - settings.setValue(QLatin1String(serverHasValidSubscriptionC), acc->serverHasValidSubscription()); - - if (!acc->_skipE2eeMetadataChecksumValidation) { + settings.setValue(QLatin1String(urlC), account->_url.toString()); + settings.setValue(QLatin1String(davUserC), account->_davUser); + settings.setValue(QLatin1String(displayNameC), account->davDisplayName()); + settings.setValue(QLatin1String(serverVersionC), account->_serverVersion); + settings.setValue(QLatin1String(serverColorC), account->_serverColor); + settings.setValue(QLatin1String(serverTextColorC), account->_serverTextColor); + settings.setValue(QLatin1String(serverHasValidSubscriptionC), account->serverHasValidSubscription()); + + if (!account->_skipE2eeMetadataChecksumValidation) { settings.remove(QLatin1String(skipE2eeMetadataChecksumValidationC)); } else { - settings.setValue(QLatin1String(skipE2eeMetadataChecksumValidationC), acc->_skipE2eeMetadataChecksumValidation); + settings.setValue(QLatin1String(skipE2eeMetadataChecksumValidationC), account->_skipE2eeMetadataChecksumValidation); } - settings.setValue(networkProxySettingC, static_cast>(acc->networkProxySetting())); - settings.setValue(networkProxyTypeC, acc->proxyType()); - settings.setValue(networkProxyHostNameC, acc->proxyHostName()); - settings.setValue(networkProxyPortC, acc->proxyPort()); - settings.setValue(networkProxyNeedsAuthC, acc->proxyNeedsAuth()); - settings.setValue(networkProxyUserC, acc->proxyUser()); - settings.setValue(networkUploadLimitSettingC, static_cast>(acc->uploadLimitSetting())); - settings.setValue(networkDownloadLimitSettingC, static_cast>(acc->downloadLimitSetting())); - settings.setValue(networkUploadLimitC, acc->uploadLimit()); - settings.setValue(networkDownloadLimitC, acc->downloadLimit()); - - const auto proxyPasswordKey = QString(acc->userIdAtHostWithPort() + networkProxyPasswordKeychainKeySuffixC); - if (const auto proxyPassword = acc->proxyPassword(); proxyPassword.isEmpty()) { + settings.setValue(networkProxySettingC, static_cast>(account->networkProxySetting())); + settings.setValue(networkProxyTypeC, account->proxyType()); + settings.setValue(networkProxyHostNameC, account->proxyHostName()); + settings.setValue(networkProxyPortC, account->proxyPort()); + settings.setValue(networkProxyNeedsAuthC, account->proxyNeedsAuth()); + settings.setValue(networkProxyUserC, account->proxyUser()); + settings.setValue(networkUploadLimitSettingC, static_cast>(account->uploadLimitSetting())); + settings.setValue(networkDownloadLimitSettingC, static_cast>(account->downloadLimitSetting())); + settings.setValue(networkUploadLimitC, account->uploadLimit()); + settings.setValue(networkDownloadLimitC, account->downloadLimit()); + + const auto proxyPasswordKey = QString(account->userIdAtHostWithPort() + networkProxyPasswordKeychainKeySuffixC); + if (const auto proxyPassword = account->proxyPassword(); proxyPassword.isEmpty()) { const auto job = new QKeychain::DeletePasswordJob(Theme::instance()->appName(), this); job->setKey(proxyPasswordKey); connect(job, &QKeychain::Job::finished, this, [](const QKeychain::Job *const incomingJob) { @@ -384,27 +384,27 @@ void AccountManager::saveAccountHelper(Account *acc, QSettings &settings, bool s job->start(); } - if (acc->_credentials) { + if (account->_credentials) { if (saveCredentials) { // Only persist the credentials if the parameter is set, on migration from 1.8.x // we want to save the accounts but not overwrite the credentials // (This is easier than asynchronously fetching the credentials from keychain and then // re-persisting them) - acc->_credentials->persist(); + account->_credentials->persist(); } - const auto settingsMapKeys = acc->_settingsMap.keys(); + const auto settingsMapKeys = account->_settingsMap.keys(); for (const auto &key : settingsMapKeys) { - if (!acc->_settingsMap.value(key).isValid()) { + if (!account->_settingsMap.value(key).isValid()) { continue; } - settings.setValue(key, acc->_settingsMap.value(key)); + settings.setValue(key, account->_settingsMap.value(key)); } - settings.setValue(QLatin1String(authTypeC), acc->_credentials->authType()); + settings.setValue(QLatin1String(authTypeC), account->_credentials->authType()); // HACK: Save http_user also as user - const auto settingsMap = acc->_settingsMap; + const auto settingsMap = account->_settingsMap; if (settingsMap.contains(httpUserC) && settingsMap.value(httpUserC).isValid()) { settings.setValue(userC, settingsMap.value(httpUserC)); } @@ -412,9 +412,9 @@ void AccountManager::saveAccountHelper(Account *acc, QSettings &settings, bool s // Save accepted certificates. settings.beginGroup(QLatin1String(generalC)); - qCInfo(lcAccountManager) << "Saving " << acc->approvedCerts().count() << " unknown certs."; + qCInfo(lcAccountManager) << "Saving " << account->approvedCerts().count() << " unknown certs."; QByteArray certs; - const auto approvedCerts = acc->approvedCerts(); + const auto approvedCerts = account->approvedCerts(); for (const auto &cert : approvedCerts) { certs += cert.toPem() + '\n'; } @@ -424,13 +424,13 @@ void AccountManager::saveAccountHelper(Account *acc, QSettings &settings, bool s settings.endGroup(); // Save cookies. - if (acc->_networkAccessManager) { - auto *jar = qobject_cast(acc->_networkAccessManager->cookieJar()); + if (account->_networkAccessManager) { + const auto jar = qobject_cast(account->_networkAccessManager->cookieJar()); if (jar) { - qCInfo(lcAccountManager) << "Saving cookies." << acc->cookieJarPath(); - if (!jar->save(acc->cookieJarPath())) + qCInfo(lcAccountManager) << "Saving cookies." << account->cookieJarPath(); + if (!jar->save(account->cookieJarPath())) { - qCWarning(lcAccountManager) << "Failed to save cookies to" << acc->cookieJarPath(); + qCWarning(lcAccountManager) << "Failed to save cookies to" << account->cookieJarPath(); } } } From 798c767c4340ea73a791d9c6a442855eabec938f Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Mon, 4 Nov 2024 20:15:43 +0100 Subject: [PATCH 203/244] wiz => owncloudSetupWizard. Signed-off-by: Camila Ayres Signed-off-by: Rainer Walke --- src/gui/owncloudsetupwizard.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp index 5a2a58df8528a..49ba9d45159f6 100644 --- a/src/gui/owncloudsetupwizard.cpp +++ b/src/gui/owncloudsetupwizard.cpp @@ -66,7 +66,7 @@ OwncloudSetupWizard::~OwncloudSetupWizard() _ocWizard->deleteLater(); } -static QPointer wiz = nullptr; +static QPointer owncloudSetupWizard = nullptr; void OwncloudSetupWizard::runWizard(QObject *obj, const char *amember, QWidget *parent) { @@ -78,25 +78,26 @@ void OwncloudSetupWizard::runWizard(QObject *obj, const char *amember, QWidget * Theme::instance()->setStartLoginFlowAutomatically(true); } - if (!wiz.isNull()) { + if (!owncloudSetupWizard.isNull()) { bringWizardToFrontIfVisible(); return; } - wiz = new OwncloudSetupWizard(parent); - connect(wiz, SIGNAL(ownCloudWizardDone(int)), obj, amember); - connect(wiz->_ocWizard, &OwncloudWizard::wizardClosed, obj, [] { wiz.clear(); }); + owncloudSetupWizard = new OwncloudSetupWizard(parent); + connect(owncloudSetupWizard, SIGNAL(ownCloudWizardDone(int)), obj, amember); + connect(owncloudSetupWizard->_ocWizard, &OwncloudWizard::wizardClosed, obj, [] { owncloudSetupWizard.clear(); }); + FolderMan::instance()->setSyncEnabled(false); - wiz->startWizard(); + owncloudSetupWizard->startWizard(); } bool OwncloudSetupWizard::bringWizardToFrontIfVisible() { - if (wiz.isNull()) { + if (owncloudSetupWizard.isNull()) { return false; } - ownCloudGui::raiseDialog(wiz->_ocWizard); + ownCloudGui::raiseDialog(owncloudSetupWizard->_ocWizard); return true; } From 1a8246ba0c2c0e5b92273b4f7c52a000ee92ef58 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Mon, 4 Nov 2024 21:11:40 +0100 Subject: [PATCH 204/244] Call for done() when skipping folder configuration. Signed-off-by: Camila Ayres Signed-off-by: Rainer Walke --- src/gui/owncloudsetupwizard.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp index 49ba9d45159f6..9928dac02b329 100644 --- a/src/gui/owncloudsetupwizard.cpp +++ b/src/gui/owncloudsetupwizard.cpp @@ -702,7 +702,7 @@ void OwncloudSetupWizard::slotAssistantFinished(int result) } // notify others. - _ocWizard->done(QWizard::Accepted); + _ocWizard->done(result); emit ownCloudWizardDone(result); } @@ -712,7 +712,10 @@ void OwncloudSetupWizard::slotSkipFolderConfiguration() disconnect(_ocWizard, &OwncloudWizard::basicSetupFinished, this, &OwncloudSetupWizard::slotAssistantFinished); - _ocWizard->close(); + + _ocWizard->done(QDialog::Rejected); + + // Accept to check connectivity, only skip folder setup emit ownCloudWizardDone(QDialog::Accepted); } From 99a6c24184ce9b95278d0703e31b22e119fb2dea Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Wed, 6 Nov 2024 17:13:28 +0100 Subject: [PATCH 205/244] Remove check before setting display name. Signed-off-by: Camila Ayres Signed-off-by: Rainer Walke --- src/libsync/account.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp index 03d2d2f937c10..3ecfd84e1eb95 100644 --- a/src/libsync/account.cpp +++ b/src/libsync/account.cpp @@ -171,10 +171,6 @@ void Account::setDisplayName(const QString &username) displayName.append(QString::number(port)); } - if (displayName == _displayName) { - return; - } - _displayName = displayName; } From d1cd1c81dd939fe5a14d693e05f3d98958e5a533 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Thu, 14 Nov 2024 19:11:54 +0100 Subject: [PATCH 206/244] Fix tests: make sure displayName is not empty. Signed-off-by: Camila Ayres Signed-off-by: Rainer Walke --- src/gui/accountmanager.cpp | 1 - src/libsync/account.cpp | 12 ++++++------ src/libsync/account.h | 1 - 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/gui/accountmanager.cpp b/src/gui/accountmanager.cpp index 0cdcace834d60..f27d2742703a7 100644 --- a/src/gui/accountmanager.cpp +++ b/src/gui/accountmanager.cpp @@ -509,7 +509,6 @@ AccountPtr AccountManager::loadAccountHelper(QSettings &settings) } acc->setCredentials(CredentialsFactory::create(authType)); - acc->setDisplayName(acc->credentials()->user()); acc->setNetworkProxySetting(settings.value(networkProxySettingC).value()); acc->setProxyType(settings.value(networkProxyTypeC).value()); diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp index 3ecfd84e1eb95..0b20a3551bdc9 100644 --- a/src/libsync/account.cpp +++ b/src/libsync/account.cpp @@ -159,19 +159,19 @@ void Account::setAvatar(const QImage &img) QString Account::displayName() const { - return _displayName; -} + auto credentialsUser = _davUser; + if (_credentials && !_credentials->user().isEmpty()) { + credentialsUser = _credentials->user(); + } -void Account::setDisplayName(const QString &username) -{ - auto displayName = QString("%1@%2").arg(username, _url.host()); + auto displayName = QString("%1@%2").arg(credentialsUser, _url.host()); const auto port = url().port(); if (port > 0 && port != 80 && port != 443) { displayName.append(QLatin1Char(':')); displayName.append(QString::number(port)); } - _displayName = displayName; + return displayName; } QString Account::userIdAtHostWithPort() const diff --git a/src/libsync/account.h b/src/libsync/account.h index a991daed9cd47..4979931bd870d 100644 --- a/src/libsync/account.h +++ b/src/libsync/account.h @@ -146,7 +146,6 @@ class OWNCLOUDSYNC_EXPORT Account : public QObject /// The name of the account as shown in the toolbar [[nodiscard]] QString displayName() const; - void setDisplayName(const QString &username); /// User id in a form 'user@example.de, optionally port is added (if it is not 80 or 443) [[nodiscard]] QString userIdAtHostWithPort() const; From 3a35889419bf0a8bd20bfb6408474a31ad134b46 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Thu, 14 Nov 2024 19:39:56 +0100 Subject: [PATCH 207/244] Correct Q_PROPERTY for _davDisplayName. Signed-off-by: Camila Ayres Signed-off-by: Rainer Walke --- src/libsync/account.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libsync/account.h b/src/libsync/account.h index 4979931bd870d..28165f05320fd 100644 --- a/src/libsync/account.h +++ b/src/libsync/account.h @@ -86,7 +86,7 @@ class OWNCLOUDSYNC_EXPORT Account : public QObject Q_OBJECT Q_PROPERTY(QString id MEMBER _id) Q_PROPERTY(QString davUser MEMBER _davUser) - Q_PROPERTY(QString displayName MEMBER _displayName) + Q_PROPERTY(QString davDisplayName MEMBER _davDisplayName) Q_PROPERTY(QString prettyName READ prettyName NOTIFY prettyNameChanged) Q_PROPERTY(QUrl url MEMBER _url) Q_PROPERTY(bool e2eEncryptionKeysGenerationAllowed MEMBER _e2eEncryptionKeysGenerationAllowed) From 0df4b56783be6764752612c38b2045a94715bbf7 Mon Sep 17 00:00:00 2001 From: cmuck Date: Mon, 4 Nov 2024 13:50:06 +0100 Subject: [PATCH 208/244] Fix login regression on linux Signed-off-by: cmuck Signed-off-by: Rainer Walke --- admin/linux/build-appimage.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/admin/linux/build-appimage.sh b/admin/linux/build-appimage.sh index 94ca4c5ad63ee..2923a2c227e0f 100755 --- a/admin/linux/build-appimage.sh +++ b/admin/linux/build-appimage.sh @@ -90,6 +90,14 @@ export QML_SOURCES_PATHS=${DESKTOP_CLIENT_ROOT}/src/gui ./linuxdeploy-squashfs-root/AppRun --desktop-file=${DESKTOP_FILE} --icon-file=usr/share/icons/hicolor/512x512/apps/Nextcloud.png --executable=usr/bin/${EXECUTABLE_NAME} --appdir=AppDir --output appimage +# Workaround issue #103 and #7231 +rm -rf ./squashfs-root +APPIMAGE=$(ls *.AppImage) +"./${APPIMAGE}" --appimage-extract +rm "./${APPIMAGE}" +rm ./squashfs-root/usr/lib/libglib-2.0.so.0 +PATH=./linuxdeployqt-squashfs-root/usr/bin:$PATH appimagetool -n ./squashfs-root "$APPIMAGE" + #move AppImage if [ ! -z "$DRONE_COMMIT" ] then From 5984225b967eaab40540e574604a356dfb868232 Mon Sep 17 00:00:00 2001 From: cmuck Date: Thu, 21 Nov 2024 14:50:22 +0100 Subject: [PATCH 209/244] Fix login regression on linux Signed-off-by: cmuck Signed-off-by: Rainer Walke --- admin/linux/build-appimage.sh | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/admin/linux/build-appimage.sh b/admin/linux/build-appimage.sh index 2923a2c227e0f..5fbd6c3d0c381 100755 --- a/admin/linux/build-appimage.sh +++ b/admin/linux/build-appimage.sh @@ -91,12 +91,19 @@ export QML_SOURCES_PATHS=${DESKTOP_CLIENT_ROOT}/src/gui ./linuxdeploy-squashfs-root/AppRun --desktop-file=${DESKTOP_FILE} --icon-file=usr/share/icons/hicolor/512x512/apps/Nextcloud.png --executable=usr/bin/${EXECUTABLE_NAME} --appdir=AppDir --output appimage # Workaround issue #103 and #7231 +export APPIMAGETOOL=appimagetool-x86_64.AppImage +wget -O ${APPIMAGETOOL} --ca-directory=/etc/ssl/certs -c https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage +chmod a+x ${APPIMAGETOOL} +rm -rf ./squashfs-root +./${APPIMAGETOOL} --appimage-extract +rm ./${APPIMAGETOOL} +cp -r ./squashfs-root ./appimagetool-squashfs-root rm -rf ./squashfs-root APPIMAGE=$(ls *.AppImage) -"./${APPIMAGE}" --appimage-extract -rm "./${APPIMAGE}" +./"${APPIMAGE}" --appimage-extract +rm ./"${APPIMAGE}" rm ./squashfs-root/usr/lib/libglib-2.0.so.0 -PATH=./linuxdeployqt-squashfs-root/usr/bin:$PATH appimagetool -n ./squashfs-root "$APPIMAGE" +LD_LIBRARY_PATH="$PWD/appimagetool-squashfs-root/usr/lib":$LD_LIBRARY_PATH PATH="$PWD/appimagetool-squashfs-root/usr/bin":$PATH appimagetool -n ./squashfs-root "${APPIMAGE}" #move AppImage if [ ! -z "$DRONE_COMMIT" ] From f474ae4e4f99e36c5460826ccc46f1be3f770d64 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Wed, 16 Oct 2024 09:01:12 +0200 Subject: [PATCH 210/244] revert changes to the stale virtual files clean up function Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/libsync/discovery.cpp | 82 +++++---------------------------------- 1 file changed, 10 insertions(+), 72 deletions(-) diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp index f4a98b518217c..e842f82540808 100644 --- a/src/libsync/discovery.cpp +++ b/src/libsync/discovery.cpp @@ -1319,80 +1319,18 @@ void ProcessDirectoryJob::processFileAnalyzeLocalInfo( } auto postProcessLocalNew = [item, localEntry, path, this]() { - // TODO: We may want to execute the same logic for non-VFS mode, as, moving/renaming the same folder by 2 or more clients at the same time is not possible in Web UI. - // Keeping it like this (for VFS files and folders only) just to fix a user issue. - - if (!(_discoveryData && _discoveryData->_syncOptions._vfs && _discoveryData->_syncOptions._vfs->mode() != Vfs::Off)) { - // for VFS files and folders only - return; - } - - if (!localEntry.isVirtualFile && !localEntry.isDirectory) { - return; - } - - if (localEntry.isDirectory && _discoveryData->_syncOptions._vfs->mode() != Vfs::WindowsCfApi) { - // for VFS folders on Windows only - return; - } - - Q_ASSERT(item->_instruction == CSYNC_INSTRUCTION_NEW); - if (item->_instruction != CSYNC_INSTRUCTION_NEW) { - qCWarning(lcDisco) << "Trying to wipe a virtual item" << path._local << " with item->_instruction" << item->_instruction; - return; - } - - // must be a dehydrated placeholder - const bool isFilePlaceHolder = !localEntry.isDirectory && _discoveryData->_syncOptions._vfs->isDehydratedPlaceholder(_discoveryData->_localDir + path._local); - - // either correct availability, or a result with error if the folder is new or otherwise has no availability set yet - const auto folderPlaceHolderAvailability = localEntry.isDirectory ? _discoveryData->_syncOptions._vfs->availability(path._local, Vfs::AvailabilityRecursivity::RecursiveAvailability) : Vfs::AvailabilityResult(Vfs::AvailabilityError::NoSuchItem); - - const auto folderPinState = localEntry.isDirectory ? _discoveryData->_syncOptions._vfs->pinState(path._local) : Optional(PinState::Unspecified); - - if (!isFilePlaceHolder && !folderPlaceHolderAvailability.isValid() && !folderPinState.isValid()) { - // not a file placeholder and not a synced folder placeholder (new local folder) - return; - } - - const auto isFolderPinStateOnlineOnly = (folderPinState.isValid() && *folderPinState == PinState::OnlineOnly); - - const auto isfolderPlaceHolderAvailabilityOnlineOnly = (folderPlaceHolderAvailability.isValid() && *folderPlaceHolderAvailability == VfsItemAvailability::OnlineOnly); - - // a folder is considered online-only if: no files are hydrated, or, if it's an empty folder - const auto isOnlineOnlyFolder = isfolderPlaceHolderAvailabilityOnlineOnly || (!folderPlaceHolderAvailability && isFolderPinStateOnlineOnly); - - if (!isFilePlaceHolder && !isOnlineOnlyFolder) { - if (localEntry.isDirectory && folderPlaceHolderAvailability.isValid() && !isOnlineOnlyFolder) { - // a VFS folder but is not online-only (has some files hydrated) - qCInfo(lcDisco) << "Virtual directory without db entry for" << path._local << "but it contains hydrated file(s), so let's keep it and reupload."; - return; - } - qCWarning(lcDisco) << "Virtual file without db entry for" << path._local - << "but looks odd, keeping"; - item->_instruction = CSYNC_INSTRUCTION_IGNORE; - - return; - } - - if (isOnlineOnlyFolder) { - // if we're wiping a folder, we will only get this function called once and will wipe a folder along with it's files and also display one error in GUI - qCInfo(lcDisco) << "Wiping virtual folder without db entry for" << path._local; - if (isfolderPlaceHolderAvailabilityOnlineOnly && folderPlaceHolderAvailability.isValid()) { - qCInfo(lcDisco) << "*folderPlaceHolderAvailability:" << *folderPlaceHolderAvailability; - } - if (isFolderPinStateOnlineOnly && folderPinState.isValid()) { - qCInfo(lcDisco) << "*folderPinState:" << *folderPinState; + if (localEntry.isVirtualFile) { + const bool isPlaceHolder = _discoveryData->_syncOptions._vfs->isDehydratedPlaceholder(_discoveryData->_localDir + path._local); + if (isPlaceHolder) { + qCWarning(lcDisco) << "Wiping virtual file without db entry for" << path._local; + item->_instruction = CSYNC_INSTRUCTION_REMOVE; + item->_direction = SyncFileItem::Down; + } else { + qCWarning(lcDisco) << "Virtual file without db entry for" << path._local + << "but looks odd, keeping"; + item->_instruction = CSYNC_INSTRUCTION_IGNORE; } - emit _discoveryData->addErrorToGui(SyncFileItem::SoftError, tr("Conflict when uploading a folder. It's going to get cleared!"), path._local, ErrorCategory::GenericError); - } else { - qCInfo(lcDisco) << "Wiping virtual file without db entry for" << path._local; - emit _discoveryData->addErrorToGui(SyncFileItem::SoftError, tr("Conflict when uploading a file. It's going to get removed!"), path._local, ErrorCategory::GenericError); } - item->_instruction = CSYNC_INSTRUCTION_REMOVE; - item->_direction = SyncFileItem::Down; - // this flag needs to be unset, otherwise a folder would get marked as new in the processSubJobs - _childModified = false; }; // Check if it is a move From 6d4b027c61ed1685513a446a47e0af2d070b9a37 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Wed, 16 Oct 2024 09:01:56 +0200 Subject: [PATCH 211/244] prevent out of bounds access in automated tests Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- test/syncenginetestutils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/syncenginetestutils.cpp b/test/syncenginetestutils.cpp index 7671518be24d6..39edfc6537abd 100644 --- a/test/syncenginetestutils.cpp +++ b/test/syncenginetestutils.cpp @@ -501,7 +501,7 @@ FileInfo *FakePutReply::perform(FileInfo &remoteRootFileInfo, const QNetworkRequ fileInfo->contentChar = putPayload.at(0); } else { // Assume that the file is filled with the same character - fileInfo = remoteRootFileInfo.create(fileName, putPayload.size(), putPayload.at(0)); + fileInfo = remoteRootFileInfo.create(fileName, putPayload.size(), putPayload.isEmpty() ? ' ' : putPayload.at(0)); } fileInfo->lastModified = OCC::Utility::qDateTimeFromTime_t(request.rawHeader("X-OC-Mtime").toLongLong()); remoteRootFileInfo.find(fileName, /*invalidateEtags=*/true); From 9d22b089e73aeac930d9bea987bacc323c1ca0ff Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 4 Nov 2024 16:17:20 +0900 Subject: [PATCH 212/244] Remove unneeded workaround for dash separated language strings Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/application.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/gui/application.cpp b/src/gui/application.cpp index ebcaa25fc0aa8..3510bbb8601fc 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -967,10 +967,8 @@ QString substLang(const QString &lang) void Application::setupTranslations() { - QStringList uiLanguages; - uiLanguages = QLocale::system().uiLanguages(); - - QString enforcedLocale = Theme::instance()->enforcedLocale(); + auto uiLanguages = QLocale::system().uiLanguages(QLocale::TagSeparator::Underscore); + const auto enforcedLocale = Theme::instance()->enforcedLocale(); if (!enforcedLocale.isEmpty()) { uiLanguages.prepend(enforcedLocale); } @@ -979,8 +977,7 @@ void Application::setupTranslations() auto *qtTranslator = new QTranslator(this); auto *qtkeychainTranslator = new QTranslator(this); - for (QString lang : qAsConst(uiLanguages)) { - lang.replace(QLatin1Char('-'), QLatin1Char('_')); // work around QTBUG-25973 + for (auto &lang : qAsConst(uiLanguages)) { lang = substLang(lang); const auto trPath = applicationTrPath(); const auto trFolder = QDir{trPath}; From 3fa19810208cc94e1a1be9b047d4116b6405b234 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 4 Nov 2024 16:40:25 +0900 Subject: [PATCH 213/244] Only grab system language from QLocale::system Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/application.cpp | 93 +++++++++++++++++++---------------------- 1 file changed, 43 insertions(+), 50 deletions(-) diff --git a/src/gui/application.cpp b/src/gui/application.cpp index 3510bbb8601fc..48454bf0d8116 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -967,67 +967,60 @@ QString substLang(const QString &lang) void Application::setupTranslations() { - auto uiLanguages = QLocale::system().uiLanguages(QLocale::TagSeparator::Underscore); const auto enforcedLocale = Theme::instance()->enforcedLocale(); - if (!enforcedLocale.isEmpty()) { - uiLanguages.prepend(enforcedLocale); - } + const auto lang = substLang(!enforcedLocale.isEmpty() ? enforcedLocale : QLocale::system().name()); auto *translator = new QTranslator(this); auto *qtTranslator = new QTranslator(this); auto *qtkeychainTranslator = new QTranslator(this); - for (auto &lang : qAsConst(uiLanguages)) { - lang = substLang(lang); - const auto trPath = applicationTrPath(); - const auto trFolder = QDir{trPath}; - if (!trFolder.exists()) { - qCWarning(lcApplication()) << trPath << "folder containing translations is missing. Impossible to load translations"; - break; - } - const QString trFile = QLatin1String("client_") + lang; - qCDebug(lcApplication()) << "trying to load" << lang << "in" << trFile << "from" << trPath; - if (translator->load(trFile, trPath) || lang.startsWith(QLatin1String("en"))) { - // Permissive approach: Qt and keychain translations - // may be missing, but Qt translations must be there in order - // for us to accept the language. Otherwise, we try with the next. - // "en" is an exception as it is the default language and may not - // have a translation file provided. - qCInfo(lcApplication) << "Using" << lang << "translation"; - setProperty("ui_lang", lang); - const QString qtTrPath = QLibraryInfo::location(QLibraryInfo::TranslationsPath); - const QString qtTrFile = QLatin1String("qt_") + lang; - const QString qtBaseTrFile = QLatin1String("qtbase_") + lang; - if (!qtTranslator->load(qtTrFile, qtTrPath)) { - if (!qtTranslator->load(qtTrFile, trPath)) { - if (!qtTranslator->load(qtBaseTrFile, qtTrPath)) { - if (!qtTranslator->load(qtBaseTrFile, trPath)) { - qCDebug(lcApplication()) << "impossible to load Qt translation catalog" << qtBaseTrFile; - } + const auto trPath = applicationTrPath(); + const auto trFolder = QDir{trPath}; + if (!trFolder.exists()) { + qCWarning(lcApplication()) << trPath << "folder containing translations is missing. Impossible to load translations"; + return; + } + const QString trFile = QLatin1String("client_") + lang; + qCDebug(lcApplication()) << "trying to load" << lang << "in" << trFile << "from" << trPath; + if (translator->load(trFile, trPath) || lang.startsWith(QLatin1String("en"))) { + // Permissive approach: Qt and keychain translations + // may be missing, but Qt translations must be there in order + // for us to accept the language. Otherwise, we try with the next. + // "en" is an exception as it is the default language and may not + // have a translation file provided. + qCInfo(lcApplication) << "Using" << lang << "translation"; + setProperty("ui_lang", lang); + const QString qtTrPath = QLibraryInfo::location(QLibraryInfo::TranslationsPath); + const QString qtTrFile = QLatin1String("qt_") + lang; + const QString qtBaseTrFile = QLatin1String("qtbase_") + lang; + if (!qtTranslator->load(qtTrFile, qtTrPath)) { + if (!qtTranslator->load(qtTrFile, trPath)) { + if (!qtTranslator->load(qtBaseTrFile, qtTrPath)) { + if (!qtTranslator->load(qtBaseTrFile, trPath)) { + qCDebug(lcApplication()) << "impossible to load Qt translation catalog" << qtBaseTrFile; } } } - const QString qtkeychainTrFile = QLatin1String("qtkeychain_") + lang; - if (!qtkeychainTranslator->load(qtkeychainTrFile, qtTrPath)) { - if (!qtkeychainTranslator->load(qtkeychainTrFile, trPath)) { - qCDebug(lcApplication()) << "impossible to load QtKeychain translation catalog" << qtkeychainTrFile; - } - } - if (!translator->isEmpty()) - installTranslator(translator); - if (!qtTranslator->isEmpty()) - installTranslator(qtTranslator); - if (!qtkeychainTranslator->isEmpty()) - installTranslator(qtkeychainTranslator); - break; - } else { - qCWarning(lcApplication()) << "translation catalog failed to load"; - const auto folderContent = trFolder.entryList(); - qCDebug(lcApplication()) << "folder content" << folderContent.join(QStringLiteral(", ")); } - if (property("ui_lang").isNull()) { - setProperty("ui_lang", "C"); + const QString qtkeychainTrFile = QLatin1String("qtkeychain_") + lang; + if (!qtkeychainTranslator->load(qtkeychainTrFile, qtTrPath)) { + if (!qtkeychainTranslator->load(qtkeychainTrFile, trPath)) { + qCDebug(lcApplication()) << "impossible to load QtKeychain translation catalog" << qtkeychainTrFile; + } } + if (!translator->isEmpty()) + installTranslator(translator); + if (!qtTranslator->isEmpty()) + installTranslator(qtTranslator); + if (!qtkeychainTranslator->isEmpty()) + installTranslator(qtkeychainTranslator); + } else { + qCWarning(lcApplication()) << "translation catalog failed to load"; + const auto folderContent = trFolder.entryList(); + qCDebug(lcApplication()) << "folder content" << folderContent.join(QStringLiteral(", ")); + } + if (property("ui_lang").isNull()) { + setProperty("ui_lang", "C"); } } From e333b46a35c3d88fe30d372d70f7bbf45b94e05c Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Sun, 17 Nov 2024 23:10:49 +0800 Subject: [PATCH 214/244] Use first uiLanguage as lang Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/application.cpp b/src/gui/application.cpp index 48454bf0d8116..6c51d485c767c 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -968,7 +968,7 @@ QString substLang(const QString &lang) void Application::setupTranslations() { const auto enforcedLocale = Theme::instance()->enforcedLocale(); - const auto lang = substLang(!enforcedLocale.isEmpty() ? enforcedLocale : QLocale::system().name()); + const auto lang = substLang(!enforcedLocale.isEmpty() ? enforcedLocale : QLocale::system().uiLanguages(QLocale::TagSeparator::Underscore).first()); auto *translator = new QTranslator(this); auto *qtTranslator = new QTranslator(this); From 3cd16f7adba7214641c821d9f3d854b5c4506afb Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Thu, 21 Nov 2024 14:24:24 +0100 Subject: [PATCH 215/244] add include QLocale to fix compilation issue Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/gui/application.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/application.cpp b/src/gui/application.cpp index 6c51d485c767c..9569c8bc1257c 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -59,6 +59,7 @@ #include #endif +#include #include #include #include From de67f8d46f12feea6438185b852de0500148ef6a Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Fri, 22 Nov 2024 10:04:52 +0100 Subject: [PATCH 216/244] use CI images including Qt6.7 that is now required Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- .drone.yml | 22 +++++++++---------- .github/workflows/clang-tidy-review.yml | 4 ++-- .github/workflows/linux-appimage.yml | 4 ++-- .../workflows/linux-clang-compile-tests.yml | 4 ++-- .github/workflows/linux-gcc-compile-tests.yml | 4 ++-- .github/workflows/sonarcloud.yml | 4 ++-- 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/.drone.yml b/.drone.yml index 9b4e85a25663e..8e8b3c55a5e0a 100644 --- a/.drone.yml +++ b/.drone.yml @@ -4,16 +4,16 @@ name: drone desktop client steps: - name: cmake - image: ghcr.io/nextcloud/continuous-integration-client-qt6:client-6.6.3-2 + image: ghcr.io/nextcloud/continuous-integration-client-qt6:client-6.7.3-1 volumes: - name: build path: /drone/build commands: - cd /drone/build - - cmake /drone/src -G Ninja -DCMAKE_PREFIX_PATH=/opt/qt6.6.3 -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11 -DCMAKE_BUILD_TYPE=Debug -DQT_MAJOR_VERSION=6 -DQUICK_COMPILER=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DCMAKE_CXX_FLAGS=-Werror -DOPENSSL_ROOT_DIR=/usr/local/lib64 -DADD_E2E_TESTS=ON + - cmake /drone/src -G Ninja -DCMAKE_PREFIX_PATH=/opt/qt6.7.3 -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11 -DCMAKE_BUILD_TYPE=Debug -DQT_MAJOR_VERSION=6 -DQUICK_COMPILER=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DCMAKE_CXX_FLAGS=-Werror -DOPENSSL_ROOT_DIR=/usr/local/lib64 -DADD_E2E_TESTS=ON - name: compile - image: ghcr.io/nextcloud/continuous-integration-client-qt6:client-6.6.3-2 + image: ghcr.io/nextcloud/continuous-integration-client-qt6:client-6.7.3-1 volumes: - name: build path: /drone/build @@ -22,7 +22,7 @@ steps: - ninja - name: test - image: ghcr.io/nextcloud/continuous-integration-client-qt6:client-6.6.3-2 + image: ghcr.io/nextcloud/continuous-integration-client-qt6:client-6.7.3-1 volumes: - name: build path: /drone/build @@ -79,15 +79,15 @@ name: qt-5.15-clang steps: - name: cmake - image: ghcr.io/nextcloud/continuous-integration-client-qt6:client-6.6.3-2 + image: ghcr.io/nextcloud/continuous-integration-client-qt6:client-6.7.3-1 volumes: - name: build path: /drone/build commands: - cd /drone/build - - cmake /drone/src -G Ninja -DCMAKE_PREFIX_PATH=/opt/qt6.6.3 -DCMAKE_C_COMPILER=clang-14 -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_BUILD_TYPE=Debug -DQT_MAJOR_VERSION=6 -DQUICK_COMPILER=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DCMAKE_CXX_FLAGS=-Werror -DOPENSSL_ROOT_DIR=/usr/local/lib64 -DADD_E2E_TESTS=ON + - cmake /drone/src -G Ninja -DCMAKE_PREFIX_PATH=/opt/qt6.7.3 -DCMAKE_C_COMPILER=clang-14 -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_BUILD_TYPE=Debug -DQT_MAJOR_VERSION=6 -DQUICK_COMPILER=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DCMAKE_CXX_FLAGS=-Werror -DOPENSSL_ROOT_DIR=/usr/local/lib64 -DADD_E2E_TESTS=ON - name: compile - image: ghcr.io/nextcloud/continuous-integration-client-qt6:client-6.6.3-2 + image: ghcr.io/nextcloud/continuous-integration-client-qt6:client-6.7.3-1 volumes: - name: build path: /drone/build @@ -95,7 +95,7 @@ steps: - cd /drone/build - ninja - name: test - image: ghcr.io/nextcloud/continuous-integration-client-qt6:client-6.6.3-2 + image: ghcr.io/nextcloud/continuous-integration-client-qt6:client-6.7.3-1 volumes: - name: build path: /drone/build @@ -152,14 +152,14 @@ name: AppImage steps: - name: build - image: ghcr.io/nextcloud/continuous-integration-client-appimage-qt6:client-appimage-6.6.3-2 + image: ghcr.io/nextcloud/continuous-integration-client-appimage-qt6:client-appimage-6.7.3-1 environment: CI_UPLOAD_GIT_TOKEN: from_secret: CI_UPLOAD_GIT_TOKEN CI_UPLOAD_GIT_USERNAME: from_secret: CI_UPLOAD_GIT_USERNAME commands: - - BUILDNR=$DRONE_BUILD_NUMBER VERSION_SUFFIX=$DRONE_PULL_REQUEST BUILD_UPDATER=ON DESKTOP_CLIENT_ROOT=$DRONE_WORKSPACE EXECUTABLE_NAME=nextcloud QT_BASE_DIR=/opt/qt6.6.3 OPENSSL_ROOT_DIR=/usr/local/lib64 /bin/bash -c "./admin/linux/build-appimage.sh" + - BUILDNR=$DRONE_BUILD_NUMBER VERSION_SUFFIX=$DRONE_PULL_REQUEST BUILD_UPDATER=ON DESKTOP_CLIENT_ROOT=$DRONE_WORKSPACE EXECUTABLE_NAME=nextcloud QT_BASE_DIR=/opt/qt6.7.3 OPENSSL_ROOT_DIR=/usr/local/lib64 /bin/bash -c "./admin/linux/build-appimage.sh" - BUILDNR=$DRONE_BUILD_NUMBER VERSION_SUFFIX=$DRONE_PULL_REQUEST DESKTOP_CLIENT_ROOT=$DRONE_WORKSPACE /bin/bash -c "./admin/linux/upload-appimage.sh" || echo "Upload failed, however this is an optional step." trigger: branch: @@ -206,6 +206,6 @@ trigger: - push --- kind: signature -hmac: fbdc01c6461fcc32d9ebff4be97340cbb6da5566643b60289504ed86b2a67583 +hmac: 1fbd0241ba0d4ea2702804324f4932b3f29d3d937ef75906a529cd00c4252a57 ... diff --git a/.github/workflows/clang-tidy-review.yml b/.github/workflows/clang-tidy-review.yml index 963e5e17efdcc..e818aed830c15 100644 --- a/.github/workflows/clang-tidy-review.yml +++ b/.github/workflows/clang-tidy-review.yml @@ -7,14 +7,14 @@ on: jobs: clang-tidy: runs-on: ubuntu-latest - container: ghcr.io/nextcloud/continuous-integration-client-qt6:client-6.6.3-2 + container: ghcr.io/nextcloud/continuous-integration-client-qt6:client-6.7.3-1 steps: - uses: actions/checkout@v4 with: fetch-depth: 2 - name: Prepare compile_commands.json run: | - cmake -G Ninja -B build -DCMAKE_PREFIX_PATH=/opt/qt6.6.3 -DQT_MAJOR_VERSION=6 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DOPENSSL_ROOT_DIR=/usr/local/lib64 + cmake -G Ninja -B build -DCMAKE_PREFIX_PATH=/opt/qt6.7.3 -DQT_MAJOR_VERSION=6 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DOPENSSL_ROOT_DIR=/usr/local/lib64 cd build && ninja - name: Create results directory run: | diff --git a/.github/workflows/linux-appimage.yml b/.github/workflows/linux-appimage.yml index 7e908ee73619f..2c4bcd0b8d248 100644 --- a/.github/workflows/linux-appimage.yml +++ b/.github/workflows/linux-appimage.yml @@ -6,12 +6,12 @@ jobs: build: name: Linux Appimage Package runs-on: ubuntu-latest - container: ghcr.io/nextcloud/continuous-integration-client-appimage-qt6:client-appimage-6.6.3-2 + container: ghcr.io/nextcloud/continuous-integration-client-appimage-qt6:client-appimage-6.7.3-1 steps: - uses: actions/checkout@v4 with: fetch-depth: 1 - name: Configure, compile and package run: | - BUILDNR=${GITHUB_RUN_ID} VERSION_SUFFIX=${GITHUB_HEAD_REF} BUILD_UPDATER=ON DESKTOP_CLIENT_ROOT=`pwd` EXECUTABLE_NAME=nextcloud QT_BASE_DIR=/opt/qt6.6.3 OPENSSL_ROOT_DIR=/usr/local/lib64 /bin/bash -c "./admin/linux/build-appimage.sh" + BUILDNR=${GITHUB_RUN_ID} VERSION_SUFFIX=${GITHUB_HEAD_REF} BUILD_UPDATER=ON DESKTOP_CLIENT_ROOT=`pwd` EXECUTABLE_NAME=nextcloud QT_BASE_DIR=/opt/qt6.7.3 OPENSSL_ROOT_DIR=/usr/local/lib64 /bin/bash -c "./admin/linux/build-appimage.sh" BUILDNR=${GITHUB_RUN_ID} VERSION_SUFFIX=${GITHUB_HEAD_REF} DESKTOP_CLIENT_ROOT=`pwd` /bin/bash -c "./admin/linux/upload-appimage.sh" || echo "Upload failed, however this is an optional step." diff --git a/.github/workflows/linux-clang-compile-tests.yml b/.github/workflows/linux-clang-compile-tests.yml index 6610e68450ddc..ce0a62b76792e 100644 --- a/.github/workflows/linux-clang-compile-tests.yml +++ b/.github/workflows/linux-clang-compile-tests.yml @@ -6,7 +6,7 @@ jobs: build: name: Linux Clang compilation and tests runs-on: ubuntu-latest - container: ghcr.io/nextcloud/continuous-integration-client-qt6:client-6.6.3-2 + container: ghcr.io/nextcloud/continuous-integration-client-qt6:client-6.7.3-1 steps: - uses: actions/checkout@v4 with: @@ -15,7 +15,7 @@ jobs: run: | mkdir build cd build - cmake .. -G Ninja -DCMAKE_PREFIX_PATH=/opt/qt6.6.3 -DCMAKE_C_COMPILER=clang-14 -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_BUILD_TYPE=Debug -DQT_MAJOR_VERSION=6 -DQUICK_COMPILER=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DCMAKE_CXX_FLAGS=-Werror -DOPENSSL_ROOT_DIR=/usr/local/lib64 + cmake .. -G Ninja -DCMAKE_PREFIX_PATH=/opt/qt6.7.3 -DCMAKE_C_COMPILER=clang-14 -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_BUILD_TYPE=Debug -DQT_MAJOR_VERSION=6 -DQUICK_COMPILER=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DCMAKE_CXX_FLAGS=-Werror -DOPENSSL_ROOT_DIR=/usr/local/lib64 ninja - name: Run tests run: | diff --git a/.github/workflows/linux-gcc-compile-tests.yml b/.github/workflows/linux-gcc-compile-tests.yml index 795a85b36dbd8..8a4a0b6178924 100644 --- a/.github/workflows/linux-gcc-compile-tests.yml +++ b/.github/workflows/linux-gcc-compile-tests.yml @@ -6,7 +6,7 @@ jobs: build: name: Linux GCC compilation and tests runs-on: ubuntu-latest - container: ghcr.io/nextcloud/continuous-integration-client-qt6:client-6.6.3-2 + container: ghcr.io/nextcloud/continuous-integration-client-qt6:client-6.7.3-1 steps: - uses: actions/checkout@v4 with: @@ -15,7 +15,7 @@ jobs: run: | mkdir build cd build - cmake .. -G Ninja -DCMAKE_PREFIX_PATH=/opt/qt6.6.3 -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11 -DCMAKE_BUILD_TYPE=Debug -DQT_MAJOR_VERSION=6 -DQUICK_COMPILER=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DCMAKE_CXX_FLAGS=-Werror -DOPENSSL_ROOT_DIR=/usr/local/lib64 + cmake .. -G Ninja -DCMAKE_PREFIX_PATH=/opt/qt6.7.3 -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11 -DCMAKE_BUILD_TYPE=Debug -DQT_MAJOR_VERSION=6 -DQUICK_COMPILER=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DCMAKE_CXX_FLAGS=-Werror -DOPENSSL_ROOT_DIR=/usr/local/lib64 ninja - name: Run tests run: | diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml index e2d7e7feb5a9b..814dd4aefa3fa 100644 --- a/.github/workflows/sonarcloud.yml +++ b/.github/workflows/sonarcloud.yml @@ -6,7 +6,7 @@ jobs: build: name: SonarCloud analysis runs-on: ubuntu-latest - container: ghcr.io/nextcloud/continuous-integration-client-qt6:client-6.6.3-2 + container: ghcr.io/nextcloud/continuous-integration-client-qt6:client-6.7.3-1 env: SONAR_SERVER_URL: "https://sonarcloud.io" BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed @@ -25,7 +25,7 @@ jobs: run: | mkdir build cd build - cmake .. -G Ninja -DCMAKE_PREFIX_PATH=/opt/qt6.6.3 -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11 -DCMAKE_BUILD_TYPE=Debug -DQUICK_COMPILER=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DQT_MAJOR_VERSION=6 -DCMAKE_CXX_FLAGS=-Werror -DOPENSSL_ROOT_DIR=/usr/local/lib64 -DBUILD_COVERAGE=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON + cmake .. -G Ninja -DCMAKE_PREFIX_PATH=/opt/qt6.7.3 -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11 -DCMAKE_BUILD_TYPE=Debug -DQUICK_COMPILER=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DQT_MAJOR_VERSION=6 -DCMAKE_CXX_FLAGS=-Werror -DOPENSSL_ROOT_DIR=/usr/local/lib64 -DBUILD_COVERAGE=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} ninja - name: Run tests run: | From 396c1fea081627681652d26ffcc8ca3aa062135d Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Fri, 22 Nov 2024 10:05:32 +0100 Subject: [PATCH 217/244] we require Qt 6.7 release to build we use new API from Qt6.7 Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0bc6c48e3473c..351b3eaa00c41 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,7 +24,7 @@ set(BIN_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") include(${CMAKE_SOURCE_DIR}/NEXTCLOUD.cmake) set(QT_VERSION_MAJOR "6") -set(REQUIRED_QT_VERSION "6.0.0") +set(REQUIRED_QT_VERSION "6.7.0") # CfAPI Shell Extensions set( CFAPI_SHELL_EXTENSIONS_LIB_NAME CfApiShellExtensions ) From 34ff94e71bbe62b8a1a75784cfc8d106836615ba Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Fri, 22 Nov 2024 12:05:06 +0100 Subject: [PATCH 218/244] master branch will be 3.16.0 future release Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- VERSION.cmake | 2 +- doc/conf.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/VERSION.cmake b/VERSION.cmake index 543376ef2ccbf..741bafcb42502 100644 --- a/VERSION.cmake +++ b/VERSION.cmake @@ -1,5 +1,5 @@ set( MIRALL_VERSION_MAJOR 3 ) -set( MIRALL_VERSION_MINOR 14 ) +set( MIRALL_VERSION_MINOR 15 ) set( MIRALL_VERSION_PATCH 50 ) set( MIRALL_VERSION_YEAR 2024 ) set( MIRALL_SOVERSION 0 ) diff --git a/doc/conf.py b/doc/conf.py index 7f1fa284d6bd7..5eea787eb52cc 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -48,9 +48,9 @@ # built documents. # # The short X.Y version. -version = '3.13' +version = '3.16' # The full version, including alpha/beta/rc tags. -release = '3.14.50' +release = '3.15.50' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 86dd953008c01fbbf3aa11768402f3d8b900e520 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Fri, 22 Nov 2024 13:37:36 +0000 Subject: [PATCH 219/244] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: Rainer Walke --- translations/client_ar.ts | 509 +++++++++++++------------------- translations/client_bg.ts | 503 +++++++++++++------------------- translations/client_br.ts | 499 +++++++++++++------------------- translations/client_ca.ts | 501 +++++++++++++------------------- translations/client_cs.ts | 509 +++++++++++++------------------- translations/client_da.ts | 501 +++++++++++++------------------- translations/client_de.ts | 546 +++++++++++++++-------------------- translations/client_el.ts | 501 +++++++++++++------------------- translations/client_en_GB.ts | 509 +++++++++++++------------------- translations/client_eo.ts | 501 +++++++++++++------------------- translations/client_es.ts | 509 +++++++++++++------------------- translations/client_es_CL.ts | 497 +++++++++++++------------------ translations/client_es_CO.ts | 497 +++++++++++++------------------ translations/client_es_CR.ts | 497 +++++++++++++------------------ translations/client_es_DO.ts | 497 +++++++++++++------------------ translations/client_es_EC.ts | 503 +++++++++++++------------------- translations/client_es_GT.ts | 497 +++++++++++++------------------ translations/client_es_HN.ts | 497 +++++++++++++------------------ translations/client_es_MX.ts | 508 +++++++++++++------------------- translations/client_es_SV.ts | 497 +++++++++++++------------------ translations/client_eu.ts | 509 +++++++++++++------------------- translations/client_fa.ts | 503 +++++++++++++------------------- translations/client_fi.ts | 501 +++++++++++++------------------- translations/client_fr.ts | 509 +++++++++++++------------------- translations/client_ga.ts | 509 +++++++++++++------------------- translations/client_gl.ts | 509 +++++++++++++------------------- translations/client_he.ts | 499 +++++++++++++------------------- translations/client_hr.ts | 501 +++++++++++++------------------- translations/client_hu.ts | 503 +++++++++++++------------------- translations/client_is.ts | 503 +++++++++++++------------------- translations/client_it.ts | 509 +++++++++++++------------------- translations/client_ja.ts | 509 +++++++++++++------------------- translations/client_ko.ts | 503 +++++++++++++------------------- translations/client_lt_LT.ts | 503 +++++++++++++------------------- translations/client_lv.ts | 501 +++++++++++++------------------- translations/client_mk.ts | 501 +++++++++++++------------------- translations/client_nb_NO.ts | 509 +++++++++++++------------------- translations/client_nl.ts | 509 +++++++++++++------------------- translations/client_oc.ts | 499 +++++++++++++------------------- translations/client_pl.ts | 503 +++++++++++++------------------- translations/client_pt.ts | 501 +++++++++++++------------------- translations/client_pt_BR.ts | 509 +++++++++++++------------------- translations/client_ro.ts | 501 +++++++++++++------------------- translations/client_ru.ts | 509 +++++++++++++------------------- translations/client_sc.ts | 501 +++++++++++++------------------- translations/client_sk.ts | 503 +++++++++++++------------------- translations/client_sl.ts | 503 +++++++++++++------------------- translations/client_sr.ts | 509 +++++++++++++------------------- translations/client_sv.ts | 509 +++++++++++++------------------- translations/client_th.ts | 497 +++++++++++++------------------ translations/client_tr.ts | 509 +++++++++++++------------------- translations/client_ug.ts | 509 +++++++++++++------------------- translations/client_uk.ts | 509 +++++++++++++------------------- translations/client_zh_CN.ts | 507 +++++++++++++------------------- translations/client_zh_HK.ts | 508 +++++++++++++------------------- translations/client_zh_TW.ts | 509 +++++++++++++------------------- 56 files changed, 11570 insertions(+), 16693 deletions(-) diff --git a/translations/client_ar.ts b/translations/client_ar.ts index 41dd7bb11e844..8a99802faa04d 100644 --- a/translations/client_ar.ts +++ b/translations/client_ar.ts @@ -342,11 +342,6 @@ Signal file provider domain نطاق مُزوّد ملف الإشارة - - - Create debug archive - إنشاء أرشيف للتنقيح - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog شاشة الحوار الرئيسية في تطبيق نكست كلاود لسطح المكتب - - Current account - الحساب الحالي - - - - - Resume sync for all - استئناف المزامنة للكل - - - - - Pause sync for all - تجميد المزامنة للكل - - - - Add account - إضافة حساب - - - - Add new account - إضافة حساب جديد - - - + Unified search results list قائمة نتائج البحث الموحد - - Settings - الإعدادات - - - - Exit - خروج - - - - Current account avatar - صورة الملف الشخصي الرمزية للحساب الحالي - - - + New activities أنشطة جديدة - - - Current account status is online - الحالة الحالية للحساب: مُتّصِل - - - - Current account status is do not disturb - الحالة الحالية للحساب: يُرجى عدم الإزعاج - - - - Account switcher and settings menu - قائمة مُبدِّل الحسابات و الإعدادات - - - - Open local or group folders - فتح المجلدات المحلية أو مجلدات المجموعة - - - - More apps - تطبيقات أخرى - - - - Open %1 in browser - فتح %1 في المُتصفِّح - OCC::AbstractNetworkJob @@ -1259,34 +1182,34 @@ This action will abort any currently running synchronization. استمرار - + %1 accounts number of accounts imported %1 حساب - + 1 account حساب واحد 1 - + %1 folders number of folders imported %1 مجلد - + 1 folder مجلد واحد 1 - + Legacy import استيراد القديمة - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1752,13 +1675,13 @@ This action will abort any currently running synchronization. خطأ في الخادم: رد PROPFIND ليس على نسق XML! - - + + Encrypted metadata setup error! خطأ في إعدادات البيانات الوصفية المشفرة! - + Encrypted metadata setup error: initial signature from server is empty. خطأ في إعداد البيانات الوصفية المشفرة: التوقيع الأوّلي من الخادم فارغ. @@ -2258,17 +2181,12 @@ This can be an issue with your OpenSSL libraries. رجاءً، إذهب إلى الإعدادات لاختياره إذا كنت ترغب في تنزيله. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 تجاوز المجلد الحجم الأقصى المحدد و هو %1 ميغا بايت: %2. %3 - - - Keep syncing - إستمِر في المزامنة - All files in the sync folder "%1" folder were deleted on the server. @@ -2279,6 +2197,11 @@ If you decide to delete the files, they will be unavailable to you, unless you a إذا قررت استعادة الملفات ، فستتم إعادة مزامنتها مع الخادوم إذا كان لديك صلاحية القيام بذلك. إذا قررت حذف الملفات، فلن تكون متاحة لك إلا إذا كنت المالك. + + + Keep syncing + إستمِر في المزامنة + 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. @@ -2287,16 +2210,16 @@ If this was an accident and you decide to keep your files, they will be re-synce تم حذف كافة الملفات الموجودة في مجلد المزامنة المحلي "٪ 1". ستتم مزامنة عمليات الحذف هذه مع خادومك، هذا يجعل هذه الملفات غير متاحة ما لم تتم استعادتها. هل تريد بالتأكيد مزامنة هذه الإجراءات مع الخادم؟ إذا كان هذا حادثًا وقررت الاحتفاظ بملفاتك، فستتم إعادة مزامنتها من الخادم. - - - Stop syncing - أوقِف المزامنة - Remove All Files? حذف كل الملفات؟ + + + Stop syncing + أوقِف المزامنة + Remove all files @@ -2308,12 +2231,12 @@ If this was an accident and you decide to keep your files, they will be re-synce إحتفظ بالملفات - + The folder %1 has surpassed the set folder size limit of %2MB. تجاوز المجلد %1 الحجم الأقصى المحدد و هو %2 ميغا بايت. - + Would you like to stop syncing this folder? هل ترغب في التوقف عن مزامنة هذا المجلد؟ @@ -2339,41 +2262,41 @@ This means that the synchronization client might not upload local changes immedi ٪ 1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" تعذّر تنزيل الملف الظاهري الذي رمزه: "%1", الحالة: "%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. لقد تم حذف عدد كبير من الملفات الموجودة على الخادوم. يرجى التأكيد إذا كنت ترغب في متابعة عمليات الحذف هذه. بدلاً من ذلك، يمكنك استعادة جميع الملفات المحذوفة عن طريق التحميل من المجلد '%1' إلى الخادوم. - + 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. لقد تم حذف عدد كبير من الملفات في المجلد المحلي '%1'. يرجى التأكيد إذا كنت ترغب في متابعة عمليات الحذف هذه.بدلاً من ذلك، يمكنك استعادة جميع الملفات المحذوفة عن طريق تنزيلها من الخادوم. - + Remove all files? حذف كل الملفات؟ - + Proceed with Deletion إستمر في الحذف ... - + Restore Files to Server قم باستعادة الملفات إلى الخادم - + Restore Files from Server قم باستعادة الملفات من الخادم @@ -2925,22 +2848,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + الإعدادات العامة + About حول - - - Legal notice - ملاحظة قانونية - - - - General Settings - الإعدادات العامة - &Launch on System Startup @@ -2956,13 +2874,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray لشريط النظام system tray + + + Legal notice + ملاحظة قانونية + Use &Monochrome Icons إستخدام &أيقونات_أحادية_اللون - + Show Chat Notifications @@ -2971,6 +2894,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications أعرض إشعارات الخادم + + + Advanced + متقدمة + + + + Ask for confirmation before synchronizing new folders larger than + أطلب الموافقة قبل المُضِي في مزامنة مجلدات جديدة حجمها أكبر من + Updates @@ -2981,43 +2914,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &تلقائيّاً إبحث عن التحديثات - - - &Channel - &قناة - - - - - stable - مُستقِرٌ - - - - - beta - بيتا - - - - &Restart && Update - &أعد_التشغيل_و_حدّث - - - - &Check for Update now - &إبحث عن التحديثات الآن - - - - Advanced - متقدمة - - - - Ask for confirmation before synchronizing new folders larger than - أطلب الموافقة قبل المُضِي في مزامنة مجلدات جديدة حجمها أكبر من - MB @@ -3025,12 +2921,17 @@ Alternatively, you can restore all deleted files by downloading them from the se ميغا بايت - + + &Channel + &قناة + + + Notify when synchronised folders grow larger than specified limit أشعرني عندما يتجاوز حجم المجلدات المُزَامَنَة الحد الأقصى المحدد - + Automatically disable synchronisation of folders that overcome limit قم بإيقاف المزامنة بصورة آلية إذا ما تجاوز حجم المجلدات المُزَامَنَة الحد الأقصى المحدد @@ -3040,12 +2941,17 @@ Alternatively, you can restore all deleted files by downloading them from the se اطلب التأكيد قبل مزامنة وحدات التخزين الخارجية - + Move removed files to trash نقل الملفات المحذوفة إلى سلة المهملات - + + &Check for Update now + &إبحث عن التحديثات الآن + + + Show sync folders in &Explorer's navigation pane أظهِر مجلدات المزامنة في جزء التنقل من المُستعرِض @@ -3054,6 +2960,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter عرض تقرير &التعرقلات + + + Ask for confirmation before synchronizing folders larger than + أطلب التأكيد قبل مزامنة المجلدات الأكبر من + Edit &Ignored Files @@ -3066,77 +2977,57 @@ Alternatively, you can restore all deleted files by downloading them from the se إنشيء أرشيفاً بالتنقيحات Debug Archive - + Info معلومات - - Ask for confirmation before synchronizing folders larger than - أطلب التأكيد قبل مزامنة المجلدات الأكبر من - - - + Desktop client x.x.x عميل سطح المكتب؛ الإصدار x.x.x - + + Show sync folders in &Explorer's Navigation Pane + إظهار مجلدات المزامنة في جزء التنقل من &المتصفح + + + Update channel قناة التحديث - - Show sync folders in &Explorer's Navigation Pane - إظهار مجلدات المزامنة في جزء التنقل من &المتصفح + + &Restart && Update + &أعد_التشغيل_و_حدّث - + &Automatically check for updates ابحث عن التحديثات بشكل تلقائي - + Check Now إفحَصِ الآن - + Usage Documentation توثيق الاستعمالات - + Legal Notice ملاحظة قانونية - - - Use &monochrome icons - إستعمال أيقونات أحادية اللون - - - - &Launch on system startup - الإطلاق عند بداية تشغيل النظام - - - - Show server &notifications - إظهار إشعارات الخادم - - - - Show call notifications - إظهار كل الإشعارات - Server notifications that require attention. إشعارات الخادم ذات الأهمية - + Show chat notification dialogs. @@ -3150,6 +3041,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. لا يمكنك تعطيل التشغيل التلقائي لأنه تم تمكين التشغيل التلقائي على مستوى النظام. + + + + stable + مُستقِرٌ + + + + + beta + بيتا + Change update channel? @@ -3163,25 +3066,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar تُحدّد قناة التحديث أي تحديثات للعميل سيتم اقتراح تثبيتها. تحتوي القناة "المستقرة" فقط على الترقيات الموثوقة. في حين أن الإصدارات الموجودة في القناة "التجريبية" قد تحتوي على تحسيناتٍ و تصليحاتٍ أحدث؛ ولكن لم يتم اختبارها بدقة بعد. لا حظ أنه لا يمكن عادةً العودة من القناة التجريبية إلى القناة الثابتة على الفور إلا بانتظار إصدار ثابت أحدث من الإصدار التجريبي المثبت حاليًا. - + daily يومي - + enterprise مؤسَّسِي - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - مُؤسَّسي: يحتوي على إصدارات مستقرة للعملاء. - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3193,22 +3088,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m لا يمكن تخفيض مستوى الإصدارات على الفور: التغيير من الإصدار التجريبي إلى الإصدار المستقر يعني انتظار الإصدار المستقر الجديد. - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - تحدد القناة الترقيات التي سيتم عرضها للتثبيت: -- مستقر: يحتوي على إصدارات مجربة تعتبر موثوقة -- تجريبي: يحتوي على إصدارات ذات ميزات جديدة ربما لم يتم اختبارها بدقة -- يومي: يحتوي على إصدارات يتم إنشاؤها يوميًا للاختبار والتطوير فقط -%1 -لا يمكن خفض مستوى الإصدارات على الفور: فالتغيير من الإصدار التجريبي إلى الإصدار المستقر يعني انتظار الإصدار المستقر الجديد. - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3218,12 +3098,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp لا يمكن تخفيض الإصدارات على الفور: التغيير من الإصدار المستقر إلى الإصدار المؤسسي يعني انتظار الإصدار المؤسسي الجديد. - + Changing update channel? تغيير قناة التحديث؟ - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4386,7 +4266,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss تعذّرت المزامنة لأن وقت آخر تعديل للملف غير صالح - + Could not upload file, because it is open in "%1". يتعذّر فتح الملف لأنه مفتوح سلفاً في "%1". @@ -4459,8 +4339,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss خطأ في تحديث البيانات الوصفية metadata بسبب أن "آخر وقت تعديل للملف" غير صالح - - + + The folder %1 cannot be made read-only: %2 المجلد %1؛ لا يمكن جعله للقراءة فقط: %2 @@ -4582,7 +4462,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss تعذّر إنشاء المجلد %1 - + The folder %1 cannot be made read-only: %2 المجلد %1؛ لا يمكن جعله للقراءة فقط: %2 @@ -4613,7 +4493,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! المجلد %1 لا يمكن إعادة تسميته بسبب تعارض الاسم الجديد مع اسم مجلد أو ملف محلي آخر! @@ -4989,6 +4869,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5015,7 +4910,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss إفلات آمن للملف - + Could not find local folder for %1 تعذّر إيجاد المجلد المحلي لـ %1 @@ -5152,16 +5047,16 @@ Server replied with error: %2 Copy public link نسخ الرابط العمومي - - - Encrypt - تشفير - Copy secure filedrop link نسخ الرابط الآمن لإفلات الملف secure filedrop link + + + Encrypt + تشفير + Lock file @@ -5183,16 +5078,16 @@ Server replied with error: %2 remaining time before lock expires ينتهي صلاحيته في %1 دقائقينتهي صلاحيته في %1 دقائقينتهي صلاحيته في %1 دقائقينتهي صلاحيته في %1 دقائقينتهي صلاحيته في %1 دقائقتنتهي صلاحيته في %1 دقائق - - - Edit - تحرير - Open in browser فتح في المتصفّح + + + Edit + تحرير + Resolve conflict … @@ -5648,7 +5543,7 @@ Server replied with error: %2 <p>%1 عميل سطح المكتب Desktop Client</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 عميل سطح المكتب</p><p>الإصدار %1. لمزيد المعلومات إضغَط <a href='%2'>هنا.</p> @@ -5659,7 +5554,7 @@ Server replied with error: %2 <p><small>إستعمال الملحق البرمجي plugin للملفات الظاهرية: %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> @@ -6053,12 +5948,12 @@ Server replied with error: %2 الخادوم على الحساب %1 يقوم بتشغيل إصدار غير معتمد %2. إستعمال هذا العميل مع إصدارات خادوم غير مدعومة لم يتم اختبارها يحتمل أن يُشكّل خطراً أمنيّاً. المضي قدما على مسؤوليتك الخاصة. - + Terms of service شروط الخدمة - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. يحتاج حسابك %1 أن يقبل شروط الخدمة على خادومك. سوف يتم توجيهك إلى %2 للإقرار بأنك قد قرأتها و وافقت عليها. @@ -6134,23 +6029,23 @@ Server replied with error: %2 لم يتم تكوين مجلدات مزامنة - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) %1: %2 - + macOS VFS for %1: Sync is running. macOS VFS لـ %1: المزامنة جارية... - + macOS VFS for %1: Last sync was successful. macOS VFS لـ %1: آخر مزامنة تمّت بنجاحٍِ. - + macOS VFS for %1: A problem was encountered. macOS VFSلـ %1: وَاجَهَ مشكلةً. @@ -6314,12 +6209,12 @@ Server replied with error: %2 مجلد جديد - + Failed to create debug archive تعذّر إنشاء أرشيف لتنقيح الأخطاء - + Could not create debug archive in selected location! تعذّر إنشاء أرشيف لتنقيح الأخطاء في الموضع المحدد! @@ -6500,7 +6395,7 @@ Server replied with error: %2 إفلات ملف (للرفع فقط) - + Allow resharing السماح بإعادة المشاركة @@ -6557,6 +6452,16 @@ Server replied with error: %2 Share password كلمة مرور المشاركة + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6620,54 +6525,6 @@ Server replied with error: %2 أرسل ردّاً على رسالة الدردشة - - TrayFoldersMenuButton - - - Open local or group folders - فتح المجلدات المحلية أو مجلدات المجموعة - - - - Open local folder - فتح المجلد المحلي - - - - Connected - مُتّصِلٌ - - - - Disconnected - غيرَ مُتّصِلٍ - - - - Group folder button - زر مجلد المجموعة - - - - Open local folder "%1" - فتح المجلد المحلي "%1" - - - - Open group folder "%1" - فتح مجلد المجموعة "%1" - - - - Open %1 in file explorer - فتح %1 في مستكشف الملفات - - - - User group and local folders menu - قائمة مجموعة المستخدمين و المجلدات المحلية - - TrayWindowHeader @@ -6952,7 +6809,7 @@ Server replied with 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>تمّ بناؤها من نسخة "قيت هب" <a href="%1">%2</a> في %3, %4 باستعمال "كيو تي" %5, %6</small></p> @@ -7357,6 +7214,54 @@ Server replied with error: %2 إنسخ الرابط + + TrayFoldersMenuButton + + + Open local or group folders + فتح المجلدات المحلية أو مجلدات المجموعة + + + + Open local folder + فتح المجلد المحلي + + + + Connected + مُتّصِلٌ + + + + Disconnected + غيرَ مُتّصِلٍ + + + + Group folder button + زر مجلد المجموعة + + + + Open local folder "%1" + فتح المجلد المحلي "%1" + + + + Open group folder "%1" + فتح مجلد المجموعة "%1" + + + + Open %1 in file explorer + فتح %1 في مستكشف الملفات + + + + User group and local folders menu + قائمة مجموعة المستخدمين و المجلدات المحلية + + Window diff --git a/translations/client_bg.ts b/translations/client_bg.ts index 4d67e0d7d1b23..5b7b6e5cd4b57 100644 --- a/translations/client_bg.ts +++ b/translations/client_bg.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1260,34 +1183,34 @@ This action will abort any currently running synchronization. Продължи - + %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. @@ -1752,13 +1675,13 @@ This action will abort any currently running synchronization. Грешка на сървъра: PROPFIND отговорът не е форматиран в XML! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2259,16 +2182,11 @@ This can be an issue with your OpenSSL libraries. Моля, отидете в настройки, ако желаете да го свалите. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2280,6 +2198,11 @@ If you decide to delete the files, they will be unavailable to you, unless you a Ако решите да възстановите файловете, те ще бъдат повторно синхронизирани със сървъра, ако имате права за това. Ако решите да изтриете файловете, те ще бъдат недостъпни за вас, освен ако не сте собственикът. + + + Keep syncing + + 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. @@ -2289,16 +2212,16 @@ If this was an accident and you decide to keep your files, they will be re-synce Сигурни ли сте, че искате да синхронизирате тези действия със сървъра? Ако това е инцидент и решите да запазите файловете си, те ще бъдат синхронизирани отново от сървъра. - - - Stop syncing - - Remove All Files? Да се премахнат ли всички файлове? + + + Stop syncing + + Remove all files @@ -2310,12 +2233,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Запазване на файловете - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2343,41 +2266,41 @@ This means that the synchronization client might not upload local changes immedi % 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 @@ -2929,22 +2852,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Общи настройки + About Относно - - - Legal notice - Правна информация - - - - General Settings - Общи настройки - &Launch on System Startup @@ -2960,13 +2878,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray За системния трей + + + Legal notice + Правна информация + Use &Monochrome Icons Едноцветни икони - + Show Chat Notifications @@ -2975,6 +2898,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Показвай известия от сървъра + + + Advanced + Допълнителни + + + + Ask for confirmation before synchronizing new folders larger than + + Updates @@ -2985,43 +2918,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates & Автоматична проверка за Актуализации - - - &Channel - &Канал - - - - - stable - стабилен - - - - - beta - бета - - - - &Restart && Update - & Рестартиране && Актуализиране - - - - &Check for Update now - &Проверете за Актуализация сега - - - - Advanced - Допълнителни - - - - Ask for confirmation before synchronizing new folders larger than - - MB @@ -3029,12 +2925,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Канал + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3044,12 +2945,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Искане на потвърждение, преди да синхронизирате външни хранилища - + Move removed files to trash - + + &Check for Update now + &Проверете за Актуализация сега + + + Show sync folders in &Explorer's navigation pane @@ -3058,6 +2964,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter &Показване на докладчик за срив + + + Ask for confirmation before synchronizing folders larger than + Изсквай потвърждение за синхронизиране на папки по-големи от + Edit &Ignored Files @@ -3070,68 +2981,48 @@ Alternatively, you can restore all deleted files by downloading them from the se Създаване на Архив за Отстраняване на грешки - + Info - - Ask for confirmation before synchronizing folders larger than - Изсквай потвърждение за синхронизиране на папки по-големи от - - - + Desktop client x.x.x - - - Update channel - - Show sync folders in &Explorer's Navigation Pane Показване на папки за синхронизиране в екрана за навигация на &Explorer - - &Automatically check for updates - - - - - Check Now - - - - - Usage Documentation + + Update channel - - Legal Notice - + + &Restart && Update + & Рестартиране && Актуализиране - - Use &monochrome icons + + &Automatically check for updates - - &Launch on system startup + + Check Now - - Show server &notifications + + Usage Documentation - - Show call notifications + + Legal Notice @@ -3140,7 +3031,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Известия от сървъра, които изискват внимание. - + Show chat notification dialogs. @@ -3154,6 +3045,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Не можете да деактивирате автоматичното стартиране, защото е активирано автоматично стартиране в цялата система. + + + + stable + стабилен + + + + + beta + бета + Change update channel? @@ -3169,24 +3072,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Обърнете внимание, че се избира само това от какво са взети надстройките на пула и че няма понижавания: Така че връщането от бета канала към стабилния канал обикновено не може да се направи веднага и означава изчакване на стабилна версия, която е по-нова от текущо инсталираната бета версия. - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3195,17 +3091,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3213,12 +3099,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4387,7 +4273,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Не може да се синхронизира поради невалиден час на модификация - + Could not upload file, because it is open in "%1". @@ -4460,8 +4346,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss Грешка при актуализиране на метаданните поради невалиден час на модификация - - + + The folder %1 cannot be made read-only: %2 @@ -4583,7 +4469,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Не можа да се създаде папка %1 - + The folder %1 cannot be made read-only: %2 @@ -4614,7 +4500,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4990,6 +4876,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5016,7 +4917,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Защитено пускане на файлове - + Could not find local folder for %1 @@ -5155,16 +5056,16 @@ Server replied with error: %2 Copy public link Копиране на публична връзка - - - Encrypt - Криптиране - Copy secure filedrop link Копиране на връзка за защитено пускане на файлове + + + Encrypt + Криптиране + Lock file @@ -5186,16 +5087,16 @@ Server replied with error: %2 remaining time before lock expires Изтича след %1 минута/иИзтича след %1 минута/и - - - Edit - Редакция - Open in browser Отвори в браузъра + + + Edit + Редакция + Resolve conflict … @@ -5651,7 +5552,7 @@ Server replied with error: %2 <p>%1 Клиент за настолен компютър</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) @@ -5662,7 +5563,7 @@ Server replied with error: %2 <p><small>Използване на добавка за виртуални файлове: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6056,12 +5957,12 @@ Server replied with error: %2 Сървърът на профил% 1 изпълнява стара и неподдържана версия% 2. Използването на този клиент с неподдържани версии на сървъра е непроверено и потенциално опасно. Продължете на свой риск. - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6137,23 +6038,23 @@ Server replied with error: %2 Няма настроени папки за синхронизиране - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6317,12 +6218,12 @@ Server replied with error: %2 Нова папка - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6503,7 +6404,7 @@ Server replied with error: %2 Изпускане на файл (само за качване) - + Allow resharing @@ -6560,6 +6461,16 @@ Server replied with error: %2 Share password Парола за споделяне + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6623,54 +6534,6 @@ Server replied with error: %2 Изпращане на отговор на съобщение в чата - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6955,7 +6818,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7360,6 +7223,54 @@ Server replied with error: %2 Копиране на връзката + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_br.ts b/translations/client_br.ts index 7c655257d3aa7..56769456b7674 100644 --- a/translations/client_br.ts +++ b/translations/client_br.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1255,34 +1178,34 @@ This action will abort any currently running synchronization. - + %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. @@ -1745,13 +1668,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2251,16 +2174,11 @@ This can be an issue with your OpenSSL libraries. Ket d'an arventenno evit choaz m'ho peus c'hoant da pellkargañ anezhañ. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2269,6 +2187,11 @@ If you decide to restore the files, they will be re-synced with the server if yo If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + + Keep syncing + + 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. @@ -2277,13 +2200,13 @@ If this was an accident and you decide to keep your files, they will be re-synce - - Stop syncing + + Remove All Files? - - Remove All Files? + + Stop syncing @@ -2297,12 +2220,12 @@ If this was an accident and you decide to keep your files, they will be re-synce - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2330,41 +2253,41 @@ Talvout a ra ar c'hliant kemprenn a c'hell n'omp pas pellkas ar c %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 @@ -2916,22 +2839,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Arventennoù hollek + About Diwar-benn - - - Legal notice - Meneg lezenn - - - - General Settings - Arventennoù hollek - &Launch on System Startup @@ -2947,13 +2865,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Evit an Tray sistem + + + Legal notice + Meneg lezenn + Use &Monochrome Icons Skeudennigoù Implij &Monochrome - + Show Chat Notifications @@ -2962,6 +2885,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Diskouez &Notifications ar servijour + + + Advanced + Araokadennet + + + + Ask for confirmation before synchronizing new folders larger than + + Updates @@ -2972,43 +2905,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates Gwiriañ en un doare &otomatek an Adnevesadennoù - - - &Channel - - - - - - stable - - - - - - beta - - - - - &Restart && Update - &Adloc'hañ && Adnevesadennoù - - - - &Check for Update now - &Gwiriañ evit Adnevesadennoù bremañ - - - - Advanced - Araokadennet - - - - Ask for confirmation before synchronizing new folders larger than - - MB @@ -3016,12 +2912,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3031,12 +2932,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Goulenn an asant a-raok kemprenna lec'hioù renkañ diavaez - + Move removed files to trash - + + &Check for Update now + &Gwiriañ evit Adnevesadennoù bremañ + + + Show sync folders in &Explorer's navigation pane @@ -3045,6 +2951,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter S&how crash reporter + + + Ask for confirmation before synchronizing folders larger than + Goulenn asant a raok kemprennañ teuliadoù brasoc'h eget + Edit &Ignored Files @@ -3057,68 +2968,48 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Info - - Ask for confirmation before synchronizing folders larger than - Goulenn asant a raok kemprennañ teuliadoù brasoc'h eget - - - + Desktop client x.x.x - - - Update channel - - Show sync folders in &Explorer's Navigation Pane Diskouez an teuliadoù kemprennet e &Explorer's Navigation Pane - - &Automatically check for updates - - - - - Check Now - - - - - Usage Documentation + + Update channel - - Legal Notice - + + &Restart && Update + &Adloc'hañ && Adnevesadennoù - - Use &monochrome icons + + &Automatically check for updates - - &Launch on system startup + + Check Now - - Show server &notifications + + Usage Documentation - - Show call notifications + + Legal Notice @@ -3127,7 +3018,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Kemenadennoù servijour ho deus ezhomm ho hevez. - + Show chat notification dialogs. @@ -3141,6 +3032,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. + + + + stable + + + + + + beta + + Change update channel? @@ -3154,24 +3057,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3180,17 +3076,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3198,12 +3084,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4363,7 +4249,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4436,8 +4322,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4559,7 +4445,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + The folder %1 cannot be made read-only: %2 @@ -4590,7 +4476,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4966,6 +4852,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -4992,7 +4893,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5130,13 +5031,13 @@ Server replied with error: %2 Eilañ al liamm publik - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5160,16 +5061,16 @@ Server replied with error: %2 remaining time before lock expires - - - Edit - Cheñch - Open in browser Digeriñ er furcher + + + Edit + Cheñch + Resolve conflict … @@ -5625,7 +5526,7 @@ Server replied with error: %2 <p>%1 Kliant Burev</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) @@ -5636,7 +5537,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6030,12 +5931,12 @@ Server replied with error: %2 - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6111,23 +6012,23 @@ Server replied with error: %2 Teuliad kemprenn ebet - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6291,12 +6192,12 @@ Server replied with error: %2 - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6477,7 +6378,7 @@ Server replied with error: %2 - + Allow resharing @@ -6534,6 +6435,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6597,54 +6508,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6929,7 +6792,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7334,6 +7197,54 @@ Server replied with error: %2 Kopiañ al liamm + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_ca.ts b/translations/client_ca.ts index 7fe7eefaccc58..6a663c70c516a 100644 --- a/translations/client_ca.ts +++ b/translations/client_ca.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1260,34 +1183,34 @@ Aquesta acció anul·larà qualsevol sincronització en execució. Continua - + %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. @@ -1752,13 +1675,13 @@ Aquesta acció anul·larà qualsevol sincronització en execució. Error del servidor: la resposta PROPFIND no té el format XML. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2258,16 +2181,11 @@ This can be an issue with your OpenSSL libraries. Aneu als paràmetres per a seleccionar si voleu baixar-la. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2276,6 +2194,11 @@ If you decide to restore the files, they will be re-synced with the server if yo If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + + Keep syncing + + 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. @@ -2283,16 +2206,16 @@ 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. - - - Stop syncing - - Remove All Files? Voleu suprimir tots els fitxers? + + + Stop syncing + + Remove all files @@ -2304,12 +2227,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Mantén els fitxers - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2333,41 +2256,41 @@ This means that the synchronization client might not upload local changes immedi No s'ha pogut fer un seguiment fiable dels canvis en les carpetes sincronitzades. Això significa que és possible que el client de sincronització no pugui carregar els canvis locals immediatament i, en canvi, només cercarà els canvis locals i els pujarà ocasionalment (per defecte, cada dues hores). %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 @@ -2919,22 +2842,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Paràmetres generals + About Quant a - - - Legal notice - Avís legal - - - - General Settings - Paràmetres generals - &Launch on System Startup @@ -2950,13 +2868,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Per la safata del sistema + + + Legal notice + Avís legal + Use &Monochrome Icons Utilitza les icones &monocromàtiques - + Show Chat Notifications @@ -2965,6 +2888,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Mostra les &notificacions del servidor + + + Advanced + Avançat + + + + Ask for confirmation before synchronizing new folders larger than + + Updates @@ -2975,43 +2908,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates Comprova &automàticament les actualitzacions - - - &Channel - &Canal - - - - - stable - estable - - - - - beta - beta - - - - &Restart && Update - &Reinicia i actualitza - - - - &Check for Update now - &Comprova ara si hi ha actualitzacions - - - - Advanced - Avançat - - - - Ask for confirmation before synchronizing new folders larger than - - MB @@ -3019,12 +2915,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Canal + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3034,12 +2935,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Demana la confirmació abans de sincronitzar fonts d'emmagatzematge extern - + Move removed files to trash - + + &Check for Update now + &Comprova ara si hi ha actualitzacions + + + Show sync folders in &Explorer's navigation pane @@ -3048,6 +2954,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter Mostra l'informador de &fallades + + + Ask for confirmation before synchronizing folders larger than + Demana la confirmació abans de sincronitzar carpetes amb una mida superior a + Edit &Ignored Files @@ -3060,68 +2971,48 @@ Alternatively, you can restore all deleted files by downloading them from the se Crea un arxiu de depuració - + Info - - Ask for confirmation before synchronizing folders larger than - Demana la confirmació abans de sincronitzar carpetes amb una mida superior a - - - + Desktop client x.x.x - - - Update channel - - Show sync folders in &Explorer's Navigation Pane Mostra les carpetes de sincronització a la subfinestra de navegació de l'&Explorer - - &Automatically check for updates - - - - - Check Now - - - - - Usage Documentation + + Update channel - - Legal Notice - + + &Restart && Update + &Reinicia i actualitza - - Use &monochrome icons + + &Automatically check for updates - - &Launch on system startup + + Check Now - - Show server &notifications + + Usage Documentation - - Show call notifications + + Legal Notice @@ -3130,7 +3021,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Notificacions del servidor que requereixen atenció. - + Show chat notification dialogs. @@ -3144,6 +3035,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. No podeu inhabilitar l'inici automàtic perquè l'inici automàtic per a tot el sistema està habilitat. + + + + stable + estable + + + + + beta + beta + Change update channel? @@ -3157,24 +3060,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3183,17 +3079,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3201,12 +3087,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4364,7 +4250,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4437,8 +4323,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4560,7 +4446,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + The folder %1 cannot be made read-only: %2 @@ -4591,7 +4477,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4967,6 +4853,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -4993,7 +4894,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5131,13 +5032,13 @@ Server replied with error: %2 Copia l'enllaç públic - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5161,16 +5062,16 @@ Server replied with error: %2 remaining time before lock expires - - - Edit - Edita - Open in browser Obre en el navegador + + + Edit + Edita + Resolve conflict … @@ -5626,7 +5527,7 @@ Server replied with error: %2 <p>Client d'escriptori del %1</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) @@ -5637,7 +5538,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6031,12 +5932,12 @@ Server replied with error: %2 El servidor del compte %1 utilitza la versió %2, que ha quedat obsoleta. No s'ha provat l'ús d'aquest client amb versions del servidor obsoletes i és potencialment perillós. Continueu sota la vostra responsabilitat. - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6112,23 +6013,23 @@ Server replied with error: %2 No s'ha configurat cap carpeta de sincronització - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6292,12 +6193,12 @@ Server replied with error: %2 - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6478,7 +6379,7 @@ Server replied with error: %2 - + Allow resharing @@ -6535,6 +6436,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6598,54 +6509,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6930,7 +6793,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7335,6 +7198,54 @@ Server replied with error: %2 Copia l'enllaç + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_cs.ts b/translations/client_cs.ts index e11345bf3fbf0..e3170153e87e0 100644 --- a/translations/client_cs.ts +++ b/translations/client_cs.ts @@ -342,11 +342,6 @@ Signal file provider domain Signalizovat doménu poskytovatele souborů - - - Create debug archive - Vytvořit archiv s informacemi pro ladění - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog Hlavní dialog Nextcloud desktop - - Current account - Stávající účet - - - - - Resume sync for all - Pokračovat v synchronizaci u všeho - - - - - Pause sync for all - Pozastavit synchronizaci u všeho - - - - Add account - Přidat účet - - - - Add new account - Přidat nový účet - - - + Unified search results list Seznam výsledků sjednoceného vyhledávání - - Settings - Nastavení - - - - Exit - Konec - - - - Current account avatar - Stávající zástupný obrázek uživatele - - - + New activities Nové aktivity - - - Current account status is online - Stávající stav účtu je online - - - - Current account status is do not disturb - Stávající stav účtu je nerušit - - - - Account switcher and settings menu - Přepínání účtů a nabídka nastavení - - - - Open local or group folders - Otevřít místní nebo skupinové složky - - - - More apps - Další aplikace - - - - Open %1 in browser - Otevřít %1 v prohlížeči - OCC::AbstractNetworkJob @@ -1263,34 +1186,34 @@ Současně tato akce zruší jakoukoli právě probíhající synchronizaci.Pokračovat - + %1 accounts number of accounts imported %1 účtů - + 1 account 1 účet - + %1 folders number of folders imported %1 složek - + 1 folder 1 složka - + Legacy import Import ze starého - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1756,13 +1679,13 @@ Současně tato akce zruší jakoukoli právě probíhající synchronizaci.Chyba serveru: odpověď PROPFIND není ve formátu XML! - - + + Encrypted metadata setup error! Chyba nastavení šifrovaných metadat! - + Encrypted metadata setup error: initial signature from server is empty. Chyba nastavení šifrovaných metadat: počáteční signatura ze serveru je prázdná. @@ -2262,17 +2185,12 @@ Toto může být způsobeno problémem s OpenSSL knihovnami. Pokud to chcete stáhnout, jděte do nastavení a vyberte to. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 Složka překročila nastavený limit velikosti %1MB: %2. %3 - - - Keep syncing - Synchronizovat - All files in the sync folder "%1" folder were deleted on the server. @@ -2284,6 +2202,11 @@ Tyto soubory budou smazány i ve vaší místní synchronizované složce a nebu Pokud se rozhodnete soubory ponechat, budou opět synchronizovány se serverem, pokud k tomu máte práva. Pokud se rozhodnete soubory smazat, budou vám nedostupné, pokud nejste jejich vlastníkem. + + + Keep syncing + Synchronizovat + 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. @@ -2293,16 +2216,16 @@ If this was an accident and you decide to keep your files, they will be re-synce Opravdu chcete tyto změny provést i na serveru? Pokud to byla pouze chyba a chcete si tyto soubory ponechat, budou ze serveru znovu synchronizovány. - - - Stop syncing - Zastavit synchronizaci - Remove All Files? Odebrat veškeré soubory? + + + Stop syncing + Zastavit synchronizaci + Remove all files @@ -2314,12 +2237,12 @@ Pokud to byla pouze chyba a chcete si tyto soubory ponechat, budou ze serveru zn Ponechat soubory - + The folder %1 has surpassed the set folder size limit of %2MB. Složka %1 překročila nastavený limit velikosti %2MB. - + Would you like to stop syncing this folder? Chcete ji přestat synchronizovat? @@ -2347,12 +2270,12 @@ To znamená, že se může stávat, že synchronizační klient nebude místní %1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" Stažení virtuálního souboru se nezdařilo s kódem „%1“, stav „%2“ a chybové hlášení „%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. @@ -2361,7 +2284,7 @@ Potvrďte, že chcete v těchto mazáních pokračovat. Případně je možné veškeré smazané soubory obnovit jejich nahráním ze složky „%1“ na 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. @@ -2370,22 +2293,22 @@ Potvrďte, že chcete v těchto mazáních pokračovat. Případně je možné veškeré smazané soubory obnovit jejich stažením si ze serveru. - + Remove all files? Odebrat veškeré soubory? - + Proceed with Deletion Pokračovat v mazání - + Restore Files to Server Obnovit soubory na server - + Restore Files from Server Obnovit soubory ze serveru @@ -2937,22 +2860,17 @@ Případně je možné veškeré smazané soubory obnovit jejich stažením si z OCC::GeneralSettings + + + General Settings + Obecná nastavení + About O aplikaci - - - Legal notice - Právní upozornění - - - - General Settings - Obecná nastavení - &Launch on System Startup @@ -2968,13 +2886,18 @@ Případně je možné veškeré smazané soubory obnovit jejich stažením si z For System Tray Pro oznamovací oblast systémového panelu + + + Legal notice + Právní upozornění + Use &Monochrome Icons Používat čer&nobílé ikony - + Show Chat Notifications @@ -2983,6 +2906,16 @@ Případně je možné veškeré smazané soubory obnovit jejich stažením si z Show Server &Notifications Zobrazit &upozornění ze serveru + + + Advanced + Pokročilé + + + + Ask for confirmation before synchronizing new folders larger than + Zeptat se před synchronizací nových složek větších než + Updates @@ -2993,43 +2926,6 @@ Případně je možné veškeré smazané soubory obnovit jejich stažením si z &Automatically check for Updates &Automaticky zjišťovat dostupnost aktualizací - - - &Channel - &Kanál - - - - - stable - stabilní - - - - - beta - vývojové - - - - &Restart && Update - &Restartovat a aktualizovat - - - - &Check for Update now - &Zjistit dostupnost aktualizací nyní - - - - Advanced - Pokročilé - - - - Ask for confirmation before synchronizing new folders larger than - Zeptat se před synchronizací nových složek větších než - MB @@ -3037,12 +2933,17 @@ Případně je možné veškeré smazané soubory obnovit jejich stažením si z MB - + + &Channel + &Kanál + + + Notify when synchronised folders grow larger than specified limit Upozornit pokud se synchronizované složky stanou většími než nastavený limit - + Automatically disable synchronisation of folders that overcome limit Automaticky vypnout synchronizaci složek, které přesáhnou limit @@ -3052,12 +2953,17 @@ Případně je možné veškeré smazané soubory obnovit jejich stažením si z Zeptat se před synchronizací externích úložišť - + Move removed files to trash Přesouvat odebrané soubory do koše - + + &Check for Update now + &Zjistit dostupnost aktualizací nyní + + + Show sync folders in &Explorer's navigation pane Zobrazit synchronizované složky v podokně navigac&e Průzkumníka @@ -3066,6 +2972,11 @@ Případně je možné veškeré smazané soubory obnovit jejich stažením si z S&how crash reporter Zobrazit &hlášení o pádech + + + Ask for confirmation before synchronizing folders larger than + Zeptat se před synchronizací složek větších než + Edit &Ignored Files @@ -3078,77 +2989,57 @@ Případně je možné veškeré smazané soubory obnovit jejich stažením si z Vytvořit archiv s informacemi pro ladění - + Info Informace - - Ask for confirmation before synchronizing folders larger than - Zeptat se před synchronizací složek větších než - - - + Desktop client x.x.x Klient pro počítač x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Zobrazit synchronizované složky v podokně navigac&e Průzkumníka + + + Update channel Kanál aktualizací - - Show sync folders in &Explorer's Navigation Pane - Zobrazit synchronizované složky v podokně navigac&e Průzkumníka + + &Restart && Update + &Restartovat a aktualizovat - + &Automatically check for updates &Automaticky zjišťovat dostupnost aktualizací - + Check Now Zkontrolovat nyní - + Usage Documentation Dokumentace k používání - + Legal Notice Právní upozornění - - - Use &monochrome icons - Používat čer&nobílé ikony - - - - &Launch on system startup - &Spuštět při startu systému - - - - Show server &notifications - Zobrazovat &upozornění ze serveru - - - - Show call notifications - Zobrazovat upozornění na hovory - Server notifications that require attention. Upozornění ze serveru, která vyžadují pozornost. - + Show chat notification dialogs. @@ -3162,6 +3053,18 @@ Případně je možné veškeré smazané soubory obnovit jejich stažením si z You cannot disable autostart because system-wide autostart is enabled. Automatické spouštění nemůžete vypnout, protože je celosystémově zapnuté pro všechny uživatele. + + + + stable + stabilní + + + + + beta + vývojové + Change update channel? @@ -3177,25 +3080,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Poznamenejme, že je možné přejít na novější verzi, ale není možné se vrátit ke starší. To znamená, že návrat z beta kanálu ke stabilnímu obvykle potrvá, protože se čeká, až bude nabídnuta stabilní verze klienta novější, než nainstalovaná vývojová verze. - + daily denní - + enterprise podnikové - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - podnikové: obsahuje stabilní verze pro zákazníky. - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3207,22 +3102,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m Přechod na konzervativnější verze není možný: změna z beta na stable znamená vyčkat na novou stabilní verzi. - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Kanál určuje které aktualizace budou nabízeny k instalaci: -- stabilní: obsahuje vyzkoušené verze, považované za spolehlivé -- beta: obsahuje verze s novými funkcemi, u kterých se může stát, že ještě nebudou důkladně vyzkoušené -- denní: obsahuje verze vytvářené každý den, určené pouze pro zkoušení a vývoj -%s1 -Okamžitý přechod na konzervativnější verze není možný: změna z beta na stable znamená vyčkat na novou stabilní verzi. - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3232,12 +3112,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp Přechod na konzervativnější verze není možný: změna ze stable na enterprise znamená vyčkat na novou enterprise verzi. - + Changing update channel? Změnit kanál aktualizací? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4408,7 +4288,7 @@ Toto je nový, experimentální režim. Pokud se jej rozhodnete používat, pros Není možné provést synchronizaci z důvodu neplatného času změny - + Could not upload file, because it is open in "%1". Nepodařilo se nahrát soubor, protože je otevřený v „%1“. @@ -4481,8 +4361,8 @@ Toto je nový, experimentální režim. Pokud se jej rozhodnete používat, pros Chyba při aktualizaci metadat z důvodu neplatného času změny - - + + The folder %1 cannot be made read-only: %2 Složka %1 nemůže být učiněna pouze pro čtení: %2 @@ -4604,7 +4484,7 @@ Toto je nový, experimentální režim. Pokud se jej rozhodnete používat, pros Nepodařilo se vytvořit složku %1 - + The folder %1 cannot be made read-only: %2 Složka %1 nemůže být učiněna pouze pro čtení: %2 @@ -4635,7 +4515,7 @@ Toto je nový, experimentální režim. Pokud se jej rozhodnete používat, pros OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! Složku %1 není možné přejmenovat kvůli kolizi stejných názvů lišících se jen velikostí písmen se souborem či složkou na stroji! @@ -5011,6 +4891,21 @@ Toto je nový, experimentální režim. Pokud se jej rozhodnete používat, pros OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5037,7 +4932,7 @@ Toto je nový, experimentální režim. Pokud se jej rozhodnete používat, pros Bezpečný příjem souboru - + Could not find local folder for %1 Nepodařilo se najít místní složku pro %1 @@ -5176,16 +5071,16 @@ Server odpověděl chybou: %2 Copy public link Zkopírovat veřejný odkaz - - - Encrypt - Zašifrovat - Copy secure filedrop link Zkopírovat zabezpečený odkaz filedrop + + + Encrypt + Zašifrovat + Lock file @@ -5207,16 +5102,16 @@ Server odpověděl chybou: %2 remaining time before lock expires Platnost skončí za %1 minutuPlatnost skončí za %1 minutyPlatnost skončí za %1 minutPlatnost skončí za %1 minuty - - - Edit - Upravit - Open in browser Otevřít v prohlížeči + + + Edit + Upravit + Resolve conflict … @@ -5672,7 +5567,7 @@ Server odpověděl chybou: %2 <p>%1 klient pro počítač</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>Klient %1 pro počítač</p><p>verze %1. Další informace získáte kliknutím <a href='%2'>sem</a>.</p> @@ -5683,7 +5578,7 @@ Server odpověděl chybou: %2 <p><small>Používá zásuvný modul pro virtuální soubory: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 klient pro počítač</p> @@ -6077,12 +5972,12 @@ Server odpověděl chybou: %2 Server na účtu %1 používá nepodporovanou verzi %2. Používání tohoto klienta s nepodporovanými verzemi serveru není otestováno a může být nebezpečné. Pokračujte jen na vlastní nebezpečí. - + Terms of service Všeobecné podmínky - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. Váš %1 účet vyžaduje abyste přijali všeobecné podmínky služeb serveru, který využíváte. Budete přesměrování na %2, kde můžete potvrdit, že jste si je přečetli a souhlasíte s nimi. @@ -6158,23 +6053,23 @@ Server odpověděl chybou: %2 Nejsou nastavené žádné složky pro synchronizaci - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) %1: %2 - + macOS VFS for %1: Sync is running. macOS VFS pro %1: Probíhá synchronizace - + macOS VFS for %1: Last sync was successful. macOS VFS pro %1: Nejnovější synchronizace byla úspěšná. - + macOS VFS for %1: A problem was encountered. macOS VFS pro %1: Narazilo se na problém. @@ -6338,12 +6233,12 @@ Server odpověděl chybou: %2 Nová složka - + Failed to create debug archive Nepodařilo se vytvořit archiv s ladícími údaji - + Could not create debug archive in selected location! Ve zvoleném umístění se nepodařilo vytvořit archiv s ladícími informacemi! @@ -6524,7 +6419,7 @@ Server odpověděl chybou: %2 Předání souboru (pouze nahrání) - + Allow resharing Povolit sdílet dál dalším @@ -6581,6 +6476,16 @@ Server odpověděl chybou: %2 Share password Heslo ke sdílení + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6644,54 +6549,6 @@ Server odpověděl chybou: %2 Odeslat odpověď na zprávu v chatu - - TrayFoldersMenuButton - - - Open local or group folders - Otevřít místní nebo skupinové složky - - - - Open local folder - Otevřít místní složku - - - - Connected - Připojeno - - - - Disconnected - Odpojeno - - - - Group folder button - Tlačítko skupinové složky - - - - Open local folder "%1" - Otevřít místní složku „%1“ - - - - Open group folder "%1" - Otevřít skupinovou složku „%1“ - - - - Open %1 in file explorer - Otevřít %1 ve správci souborů - - - - User group and local folders menu - Nabídka skupin uživatelů a místních složek - - TrayWindowHeader @@ -6976,7 +6833,7 @@ Server odpověděl chybou: %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>Sestaveno z Git revize <a href="%1">%2</a> na %3, %4 s použitím Qt %5, %6</small></p> @@ -7381,6 +7238,54 @@ Server odpověděl chybou: %2 Zkopírovat odkaz + + TrayFoldersMenuButton + + + Open local or group folders + Otevřít místní nebo skupinové složky + + + + Open local folder + Otevřít místní složku + + + + Connected + Připojeno + + + + Disconnected + Odpojeno + + + + Group folder button + Tlačítko skupinové složky + + + + Open local folder "%1" + Otevřít místní složku „%1“ + + + + Open group folder "%1" + Otevřít skupinovou složku „%1“ + + + + Open %1 in file explorer + Otevřít %1 ve správci souborů + + + + User group and local folders menu + Nabídka skupin uživatelů a místních složek + + Window diff --git a/translations/client_da.ts b/translations/client_da.ts index c1daef6672469..4975dd1f73026 100644 --- a/translations/client_da.ts +++ b/translations/client_da.ts @@ -342,11 +342,6 @@ Signal file provider domain Signal fil udbyder domæne - - - Create debug archive - Opret fejlsøgningsarkiv - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog Nextcloud-skrivebordets hoveddialog - - Current account - Nuværende konto - - - - - Resume sync for all - Genoptag synkronisering for alle - - - - - Pause sync for all - Pause synkronisering for alle - - - - Add account - Tilføj konto - - - - Add new account - Tilføj ny konto - - - + Unified search results list Samlet søgeresultatliste - - Settings - Indstillinger - - - - Exit - Exit - - - - Current account avatar - Aktuel kontoavatar - - - + New activities Nye aktiviteter - - - Current account status is online - Den aktuelle kontostatus er online - - - - Current account status is do not disturb - Den aktuelle kontostatus er "Forstyr ikke" - - - - Account switcher and settings menu - Kontoskifter og indstillingsmenu - - - - Open local or group folders - Åbn lokale eller gruppemapper - - - - More apps - Flere apps - - - - Open %1 in browser - Åben %1 i browser - OCC::AbstractNetworkJob @@ -1263,34 +1186,34 @@ Denne handling vil annullere alle i øjeblikket kørende synkroniseringer.Fortsæt - + %1 accounts number of accounts imported %1 konti - + 1 account 1 konto - + %1 folders number of folders imported %1 mapper - + 1 folder 1 mappe - + Legacy import Bagudkompatibel import - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1754,13 +1677,13 @@ Denne handling vil annullere alle i øjeblikket kørende synkroniseringer. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2261,16 +2184,11 @@ Dette kan være et problem med dine OpenSSL biblioteker. Gå venligst til indstillinger for at vælge om du vil hente den. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2279,6 +2197,11 @@ If you decide to restore the files, they will be re-synced with the server if yo If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + + Keep syncing + + 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. @@ -2286,16 +2209,16 @@ 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. - - - Stop syncing - - Remove All Files? Fjern alle filer? + + + Stop syncing + + Remove all files @@ -2307,12 +2230,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Behold filer - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2340,41 +2263,41 @@ Dette betyder at synkroniseringsklienten muligvis ikke sender lokale ændringer %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? Slet alle filer? - + Proceed with Deletion - + Restore Files to Server - + Restore Files from Server @@ -2926,22 +2849,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Generelle Indstillinger + About Om - - - Legal notice - Juridisk notits - - - - General Settings - Generelle Indstillinger - &Launch on System Startup @@ -2957,13 +2875,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Som Systembakke + + + Legal notice + Juridisk notits + Use &Monochrome Icons Benyt &monokrome ikoner - + Show Chat Notifications @@ -2972,6 +2895,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Vis server&notifikationer + + + Advanced + Avanceret + + + + Ask for confirmation before synchronizing new folders larger than + + Updates @@ -2982,43 +2915,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates Søg &automatisk efter opdateringer - - - &Channel - &Kanal - - - - - stable - - - - - - beta - - - - - &Restart && Update - &Genstart && Opdater - - - - &Check for Update now - &Søg efter Opdateringer nu - - - - Advanced - Avanceret - - - - Ask for confirmation before synchronizing new folders larger than - - MB @@ -3026,12 +2922,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Kanal + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3041,12 +2942,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Spørg om bekræftelse inden synkronisering af eksterne lagre - + Move removed files to trash - + + &Check for Update now + &Søg efter Opdateringer nu + + + Show sync folders in &Explorer's navigation pane @@ -3055,6 +2961,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter V&is nedbruds rapportering + + + Ask for confirmation before synchronizing folders larger than + Spørg om bekræftelse inden synkronisering af mapper større end + Edit &Ignored Files @@ -3067,68 +2978,48 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Info - - Ask for confirmation before synchronizing folders larger than - Spørg om bekræftelse inden synkronisering af mapper større end - - - + Desktop client x.x.x - - - Update channel - - Show sync folders in &Explorer's Navigation Pane Vis synk mapper i &Stifinder's Navigations Panel - - &Automatically check for updates - - - - - Check Now - - - - - Usage Documentation + + Update channel - - Legal Notice - + + &Restart && Update + &Genstart && Opdater - - Use &monochrome icons + + &Automatically check for updates - - &Launch on system startup + + Check Now - - Show server &notifications + + Usage Documentation - - Show call notifications + + Legal Notice @@ -3137,7 +3028,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Server notifikationer der kræver opmærksomhed. - + Show chat notification dialogs. @@ -3151,6 +3042,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. + + + + stable + + + + + + beta + + Change update channel? @@ -3164,24 +3067,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3190,17 +3086,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3208,12 +3094,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4373,7 +4259,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4446,8 +4332,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4569,7 +4455,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + The folder %1 cannot be made read-only: %2 @@ -4600,7 +4486,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4976,6 +4862,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5002,7 +4903,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5140,13 +5041,13 @@ Server replied with error: %2 Kopier offentligt link - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5170,16 +5071,16 @@ Server replied with error: %2 remaining time before lock expires - - - Edit - Rediger - Open in browser Åbn i browser + + + Edit + Rediger + Resolve conflict … @@ -5635,7 +5536,7 @@ Server replied with error: %2 <p>%1-skrivebordsklient</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) @@ -5646,7 +5547,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6040,12 +5941,12 @@ Server replied with error: %2 Serveren for konto %1 kører den ikke-supporterede version %2. Brug af denne klient med en serverversion, der ikke har support er ikke testet og kan muligvis føre til alvorlige problemer. Fortsæt på egen risiko. - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6121,23 +6022,23 @@ Server replied with error: %2 Ingen synk.-mapper konfigureret - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6301,12 +6202,12 @@ Server replied with error: %2 Ny mappe - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6487,7 +6388,7 @@ Server replied with error: %2 - + Allow resharing @@ -6544,6 +6445,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6607,54 +6518,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6939,7 +6802,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7344,6 +7207,54 @@ Server replied with error: %2 Kopiér link + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_de.ts b/translations/client_de.ts index 20c3dfccbdead..39f438e05ef80 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -171,59 +171,59 @@ 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ü @@ -342,11 +342,6 @@ Signal file provider domain Domain des Signaldateianbieters - - - Create debug archive - Debug-Archiv erstellen - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + 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 - - - + Unified search results list Einheitliche Suchergebnisliste - - Settings - Einstellungen - - - - Exit - Beenden - - - - Current account avatar - Avatar des aktuellen Kontos - - - + New activities Neue Aktivitäten - - - 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 - - - - More apps - Weitere Apps - - - - Open %1 in browser - %1 im Browser öffnen - OCC::AbstractNetworkJob @@ -1263,34 +1186,34 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. 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. @@ -1756,13 +1679,13 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. 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. Fehler bei der Einrichtung der verschlüsselten Metadaten: Die ursprüngliche Signatur vom Server ist leer. @@ -2263,17 +2186,12 @@ Dies kann ein Problem mit Ihren OpenSSL-Bibliotheken sein. 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 - All files in the sync folder "%1" folder were deleted on the server. @@ -2285,6 +2203,11 @@ Diese Löschungen werden mit Ihrem lokalen Sync-Ordner synchronisiert, wodurch d 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. + + + Keep syncing + Weiterhin synchronisieren + 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. @@ -2294,16 +2217,16 @@ If this was an accident and you decide to keep your files, they will be re-synce 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. - - - Stop syncing - Synchronisation stoppen - Remove All Files? Alle Dateien entfernen? + + + Stop syncing + Synchronisation stoppen + Remove all files @@ -2315,12 +2238,12 @@ Falls dies ein Missgeschick war und Sie sich zum Behalten der Dateien entscheide Dateien behalten - + 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? @@ -2348,12 +2271,12 @@ 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. @@ -2362,7 +2285,7 @@ Bitte bestätigen Sie, ob Sie mit diesen Löschungen fortfahren möchten. Alternativ können Sie alle gelöschten Dateien wiederherstellen, indem Sie den 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. @@ -2371,22 +2294,22 @@ Bitte bestätigen Sie, ob Sie mit diesen Löschungen fortfahren möchten. Alternativ können Sie auch alle gelöschten Dateien wiederherstellen, indem Sie sie vom Server herunterladen. - + Remove all files? Alle Dateien entfernen? - + Proceed with Deletion Mit der Löschung fortfahren - + Restore Files to Server Dateien auf dem Server wiederherstellen - + Restore Files from Server Dateien vom Server wiederherstellen @@ -2938,22 +2861,17 @@ Alternativ können Sie auch alle gelöschten Dateien wiederherstellen, indem Sie OCC::GeneralSettings + + + General Settings + Allgemeine Einstellungen + About Über - - - Legal notice - Impressum - - - - General Settings - Allgemeine Einstellungen - &Launch on System Startup @@ -2969,21 +2887,36 @@ Alternativ können Sie auch alle gelöschten Dateien wiederherstellen, indem Sie For System Tray Für das Systembenachrichtungsfeld + + + Legal notice + Impressum + Use &Monochrome Icons &Monochrome Symbole verwenden - + Show Chat Notifications - + Chatbenachrichtigungen anzeigen Show Server &Notifications Server-&Benachrichtigungen anzeigen + + + Advanced + Erweitert + + + + Ask for confirmation before synchronizing new folders larger than + Um eine Bestätigung bitten, bevor Sie neue Ordner synchronisieren, die größer sind als + Updates @@ -2994,43 +2927,6 @@ Alternativ können Sie auch alle gelöschten Dateien wiederherstellen, indem Sie &Automatically check for Updates &Automatisch auf Aktualisierungen prüfen - - - &Channel - &Kanal - - - - - stable - Stabil - - - - - beta - Beta - - - - &Restart && Update - &Neustarten && aktualisieren - - - - &Check for Update now - &Jetzt auf Aktualisierungen prüfen - - - - Advanced - Erweitert - - - - Ask for confirmation before synchronizing new folders larger than - Um eine Bestätigung bitten, bevor Sie neue Ordner synchronisieren, die größer sind als - MB @@ -3038,12 +2934,17 @@ Alternativ können Sie auch alle gelöschten Dateien wiederherstellen, indem Sie MB - + + &Channel + &Kanal + + + Notify when synchronised folders grow larger than specified limit Benachrichtigen, wenn synchronisierte Ordner größer werden als die angegebene Grenze - + Automatically disable synchronisation of folders that overcome limit Automatisch die Synchronisierung von Ordnern beenden, die das Limit überschreiten @@ -3053,12 +2954,17 @@ Alternativ können Sie auch alle gelöschten Dateien wiederherstellen, indem Sie Bestätigung erfragen, bevor externe Speicher synchronisiert werden - + Move removed files to trash Gelöschte Dateien in den Papierkorb verschieben - + + &Check for Update now + &Jetzt auf Aktualisierungen prüfen + + + Show sync folders in &Explorer's navigation pane Synchronisierungsordner im Navigationsbereich des &Explorers anzeigen @@ -3067,6 +2973,11 @@ Alternativ können Sie auch alle gelöschten Dateien wiederherstellen, indem Sie S&how crash reporter &Crash-Reporter anzeigen + + + Ask for confirmation before synchronizing folders larger than + Bestätigung erfragen, bevor Ordner synchronisiert werden, die größer sind als + Edit &Ignored Files @@ -3079,79 +2990,59 @@ Alternativ können Sie auch alle gelöschten Dateien wiederherstellen, indem Sie Debug-Archiv erstellen - + Info Info - - Ask for confirmation before synchronizing folders larger than - Bestätigung erfragen, bevor Ordner synchronisiert werden, die größer sind als - - - + Desktop client x.x.x Desktop-Client x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Synchronisierungsordner im Navigationsbereich des &Explorers anzeigen + + + Update channel Update-Kanal - - Show sync folders in &Explorer's Navigation Pane - Synchronisierungsordner im Navigationsbereich des &Explorers anzeigen + + &Restart && Update + &Neustarten && aktualisieren - + &Automatically check for updates &Automatisch auf Aktualisierungen prüfen - + Check Now Jetzt prüfen - + Usage Documentation Nutzungsdokumentation - + Legal Notice Impressum - - - 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 chat notification dialogs. - + Dialog zu Chatbenachrichtigungen anzeigen @@ -3163,6 +3054,18 @@ Alternativ können Sie auch alle gelöschten Dateien wiederherstellen, indem Sie You cannot disable autostart because system-wide autostart is enabled. Sie können den Autostart nicht deaktivieren, da der systemweite Autostart aktiviert ist. + + + + stable + Stabil + + + + + beta + Beta + Change update channel? @@ -3178,24 +3081,17 @@ 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. - + daily Täglich - + enterprise Unternehmensversion - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - Unternehmensversion: Enthält stabile Versionen für Kunden. - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3207,22 +3103,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m Ein Downgrade von Versionen ist nicht sofort möglich: Der Wechsel von Beta auf Stabil bedeutet, dass man auf die neue stabile Version warten muss. - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Der Kanal bestimmt, welche Upgrades zur Installation angeboten werden: -- Stabil: enthält getestete Versionen, die als zuverlässig gelten -- Beta: enthält Versionen mit neuen Funktionen, die möglicherweise nicht gründlich getestet wurden -- Täglich: enthält täglich erstellte Versionen, die nur zu Test- und Entwicklungszwecken erstellt werden -%1 -Ein Downgrade von Versionen ist nicht sofort möglich: Der Wechsel von Beta auf stabil bedeutet, dass auf die neue stabile Version gewartet werden muss. - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3232,12 +3113,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp Ein Downgrade von Versionen ist nicht sofort möglich: Der Wechsel von Beta auf Stabil bedeutet, dass man auf die neue stabile Version warten muss. - + Changing update channel? Update-Kanal ändern? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4407,7 +4288,7 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver 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. @@ -4480,8 +4361,8 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver 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 @@ -4603,7 +4484,7 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver Ordner %1 konnte nicht erstellt werden - + The folder %1 cannot be made read-only: %2 Der Ordner %1 kann nicht schreibgeschützt werden: %2 @@ -4634,7 +4515,7 @@ 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! Ordner %1 kann aufgrund einer lokalen Datei- oder Ordnernamenskollision nicht umbenannt werden! @@ -5010,6 +4891,21 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5036,7 +4932,7 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver Sichere Dateiablage - + Could not find local folder for %1 Lokaler Ordner für %1 nicht gefunden @@ -5175,16 +5071,16 @@ Server antwortete mit Fehler: %2 Copy public link Öffentlichen Link kopieren - - - Encrypt - Verschlüsseln - Copy secure filedrop link Link zur sicheren Dateiablage kopieren + + + Encrypt + Verschlüsseln + Lock file @@ -5206,16 +5102,16 @@ Server antwortete mit Fehler: %2 remaining time before lock expires Läuft ab in %1 MinuteLäuft ab in %1 Minuten - - - Edit - Bearbeiten - Open in browser Im Browser öffnen + + + Edit + Bearbeiten + Resolve conflict … @@ -5671,7 +5567,7 @@ Server antwortete mit Fehler: %2 <p>%1 Desktop-Client</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> @@ -5682,7 +5578,7 @@ Server antwortete mit Fehler: %2 <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> @@ -6076,12 +5972,12 @@ Server antwortete mit Fehler: %2 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. - + Terms of service Nutzungsbedingungen - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. Für Ihr Konto %1 müssen Sie die Nutzungsbedingungen Ihres Servers akzeptieren. Sie werden weitergeleitet an %2, um zu bestätigen, dass Sie die Nutzungsbedingungen gelesen haben und damit einverstanden sind. @@ -6157,23 +6053,23 @@ Server antwortete mit Fehler: %2 Keine Ordner zur Synchronisierung konfiguriert - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) %1: %2 - + macOS VFS for %1: Sync is running. macOS VFS für %1: Synchronisierung läuft. - + macOS VFS for %1: Last sync was successful. macOS VFS für %1: Letzte Synchronisierung war erfolgreich. - + macOS VFS for %1: A problem was encountered. macOS VFS für %1: Es ist ein Problem aufgetreten. @@ -6337,12 +6233,12 @@ Server antwortete mit Fehler: %2 Neuer Ordner - + Failed to create debug archive Fehler beim Erstellen des Debug-Archivs - + Could not create debug archive in selected location! Es konnte kein Debug-Archiv am ausgewählten Ort erstellt werden! @@ -6523,7 +6419,7 @@ Server antwortete mit Fehler: %2 Dateien ablegen (nur Hochladen) - + Allow resharing Weiterteilen erlauben @@ -6580,6 +6476,16 @@ Server antwortete mit Fehler: %2 Share password Freigabe-Passwort + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6643,70 +6549,22 @@ Server antwortete mit Fehler: %2 Antwort auf Chat-Nachricht senden - - TrayFoldersMenuButton - - - 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 - - - - 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 - - TrayWindowHeader Open local or group folders - + Lokalen oder Gruppenordner öffnen More apps - + Weitere Apps Open %1 in browser - + %1 im Browser öffnen @@ -6722,7 +6580,7 @@ Server antwortete mit Fehler: %2 Start typing to search - + Beginnen Sie mit der Eingabe, um zu suchen @@ -6775,7 +6633,7 @@ Server antwortete mit Fehler: %2 Current account status is online - Aktueller Kontostatus ist online + Aktueller Kontostatus ist "Online" @@ -6975,7 +6833,7 @@ Server antwortete mit Fehler: %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>Erstellt aus der Git-Revision <a href="%1">%2</a> auf %3, %4 unter Verwendung von Qt %5, %6</small></p> @@ -7380,6 +7238,54 @@ Server antwortete mit Fehler: %2 Link kopieren + + TrayFoldersMenuButton + + + 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 + + + + 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 + + Window @@ -7432,7 +7338,7 @@ Server antwortete mit Fehler: %2 Current account status is online - Aktueller Kontostatus ist online + Aktueller Kontostatus ist "Online" diff --git a/translations/client_el.ts b/translations/client_el.ts index 4654a18959ff5..3f7f7610a09e4 100644 --- a/translations/client_el.ts +++ b/translations/client_el.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1255,34 +1178,34 @@ This action will abort any currently running synchronization. Συνέχεια - + %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. @@ -1747,13 +1670,13 @@ This action will abort any currently running synchronization. Σφάλμα διακομιστή: Η απάντηση PROPFIND δεν έχει μορφοποίηση XML! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2254,16 +2177,11 @@ This can be an issue with your OpenSSL libraries. Μεταβείτε στις ρυθμίσεις για να το επιλέξετε εάν επιθυμείτε να το κατεβάσετε. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2275,6 +2193,11 @@ If you decide to delete the files, they will be unavailable to you, unless you a Εάν αποφασίσετε να επαναφέρετε αυτά τα αρχεία, θα συγχρονιστούν εκ νέου, εφόσον έχετε το δικαίωμα. Εφόσον επιλέξετε να διαγράψετε τα αρχεία, δε θα είναι διαθέσιμα σε εσάς, εκτός εάν είστε ο κάτοχος. + + + Keep syncing + + 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. @@ -2284,16 +2207,16 @@ If this was an accident and you decide to keep your files, they will be re-synce Είστε βέβαιοι ότι θέλετε να συγχρονίσετε αυτές τις ενέργειες με τον διακομιστή; Εάν έγινε λάθος και αποφασίσετε να διατηρήσετε τα αρχεία σας, θα συγχρονιστούν ξανά από το διακομιστή. - - - Stop syncing - - Remove All Files? Κατάργηση όλων των αρχείων; + + + Stop syncing + + Remove all files @@ -2305,12 +2228,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Κράτησε τα αρχεία - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2336,41 +2259,41 @@ This means that the synchronization client might not upload local changes immedi Αυτό σημαίνει ότι η εφαρμογή δεν θα ανεβάσει τις τοπικές αλλαγές άμεσα, θα ελέγξει μόνο τις τοπικές αλλαγές και θα τις ανεβάσει περιοδικά (κάθε δύο ώρες από προεπιλογή). - + 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 @@ -2922,22 +2845,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Γενικές Ρυθμίσεις + About Σχετικά - - - Legal notice - Νομική ειδοποίηση - - - - General Settings - Γενικές Ρυθμίσεις - &Launch on System Startup @@ -2953,13 +2871,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Για το + + + Legal notice + Νομική ειδοποίηση + Use &Monochrome Icons Χρήση &Μονόχρωμων εικονιδίων - + Show Chat Notifications @@ -2968,6 +2891,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Εμφάνιση των ειδοποιήσεων διακομιστή + + + Advanced + Για προχωρημένους + + + + Ask for confirmation before synchronizing new folders larger than + + Updates @@ -2978,43 +2911,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Αυτόματος έλεγχος για Ενημερώσεις - - - &Channel - &Κανάλι - - - - - stable - σταθερός - - - - - beta - έκδοση beta - - - - &Restart && Update - &Επανεκκίνηση && Ενημέρωση - - - - &Check for Update now - &Ελεγχος για Ενημερώσεις τώρα - - - - Advanced - Για προχωρημένους - - - - Ask for confirmation before synchronizing new folders larger than - - MB @@ -3022,12 +2918,17 @@ Alternatively, you can restore all deleted files by downloading them from the se ΜΒ - + + &Channel + &Κανάλι + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3037,12 +2938,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Ζητήστε επιβεβαίωση πριν τον συγχρονισμό εξωτερικών αποθηκευτικών χώρων - + Move removed files to trash - + + &Check for Update now + &Ελεγχος για Ενημερώσεις τώρα + + + Show sync folders in &Explorer's navigation pane @@ -3051,6 +2957,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter S&πως κατάρρευση αναφοράς + + + Ask for confirmation before synchronizing folders larger than + Ζητήστε επιβεβαίωση πριν τον συγχρονισμό φακέλων μεγαλύτερων από + Edit &Ignored Files @@ -3063,68 +2974,48 @@ Alternatively, you can restore all deleted files by downloading them from the se Δημιουργία αρχείου εντοπισμού σφαλμάτων. - + Info - - Ask for confirmation before synchronizing folders larger than - Ζητήστε επιβεβαίωση πριν τον συγχρονισμό φακέλων μεγαλύτερων από - - - + Desktop client x.x.x - - - Update channel - - Show sync folders in &Explorer's Navigation Pane Εμφάνιση φακέλων συγχρονισμού στο &Παράθυρο Περιήγησης του Explorer - - &Automatically check for updates - - - - - Check Now - - - - - Usage Documentation + + Update channel - - Legal Notice - + + &Restart && Update + &Επανεκκίνηση && Ενημέρωση - - Use &monochrome icons + + &Automatically check for updates - - &Launch on system startup + + Check Now - - Show server &notifications + + Usage Documentation - - Show call notifications + + Legal Notice @@ -3133,7 +3024,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Ειδοποιήσεις από τον διακομιστή που απαιτούν την προσοχή σας. - + Show chat notification dialogs. @@ -3147,6 +3038,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Δεν μπορείτε να απενεργοποιήσετε την αυτόματη εκκίνηση επειδή είναι ενεργοποιημένη η αυτόματη εκκίνηση σε όλο το σύστημα. + + + + stable + σταθερός + + + + + beta + έκδοση beta + Change update channel? @@ -3161,24 +3064,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Λάβετε υπόψη ότι αυτό επιλέγει μόνο από τη δεξαμενήαπό την οποία προέρχονται οι αναβαθμίσεις της ομάδας και ότι δεν υπάρχουν υποβαθμίσεις: Επομένως, η επιστροφή από το κανάλι beta στο σταθερό κανάλι συνήθως δεν μπορεί να γίνει αμέσως και σημαίνει αναμονή για μια σταθερή έκδοση που είναι νεότερη από την τρέχουσα εγκατεστημένη έκδοση beta. - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3187,17 +3083,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3205,12 +3091,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4371,7 +4257,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4444,8 +4330,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4567,7 +4453,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Αδυναμία δημιουργίας φακέλου: %1 - + The folder %1 cannot be made read-only: %2 @@ -4598,7 +4484,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4974,6 +4860,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5000,7 +4901,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5138,13 +5039,13 @@ Server replied with error: %2 Αντιγραφή δημόσιου συνδέσμου - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5168,16 +5069,16 @@ Server replied with error: %2 remaining time before lock expires - - - Edit - Επεξεργασία - Open in browser Άνοιγμα στον περιηγητή + + + Edit + Επεξεργασία + Resolve conflict … @@ -5633,7 +5534,7 @@ Server replied with error: %2 <p>Εφαρμογή Υπολογιστή %1 </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) @@ -5644,7 +5545,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6038,12 +5939,12 @@ Server replied with error: %2 Ο διακομιστής στο λογαριασμό %1 εκτελεί μια μη υποστηριζόμενη έκδοση % 2. Η χρήση αυτού του προγράμματος-πελάτη με μη υποστηριζόμενες εκδόσεις διακομιστή δεν έχει δοκιμαστεί και είναι δυνητικά επικίνδυνη. Προχωρήστε με δική σας ευθύνη. - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6119,23 +6020,23 @@ Server replied with error: %2 Δεν ρυθμίστηκαν φάκελοι συγχρονισμού - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6299,12 +6200,12 @@ Server replied with error: %2 Νέος φάκελος - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6485,7 +6386,7 @@ Server replied with error: %2 - + Allow resharing @@ -6542,6 +6443,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6605,54 +6516,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6937,7 +6800,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7342,6 +7205,54 @@ Server replied with error: %2 Αντιγραφή συνδέσμου + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_en_GB.ts b/translations/client_en_GB.ts index 41eacda09fa6f..042bcc52397cd 100644 --- a/translations/client_en_GB.ts +++ b/translations/client_en_GB.ts @@ -342,11 +342,6 @@ Signal file provider domain Signal file provider domain - - - Create debug archive - Create debug archive - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog Nextcloud desktop main dialogue - - Current account - Current account - - - - - Resume sync for all - Resume sync for all - - - - - Pause sync for all - Pause sync for all - - - - Add account - Add account - - - - Add new account - Add new account - - - + Unified search results list Unified search results list - - Settings - Settings - - - - Exit - Exit - - - - Current account avatar - Current account avatar - - - + New activities New activities - - - Current account status is online - Current account status is online - - - - Current account status is do not disturb - Current account status is do not disturb - - - - Account switcher and settings menu - Account switcher and settings menu - - - - Open local or group folders - Open local or group folders - - - - More apps - More apps - - - - Open %1 in browser - Open %1 in browser - OCC::AbstractNetworkJob @@ -1264,34 +1187,34 @@ This action will abort any currently running synchronization. Continue - + %1 accounts number of accounts imported %1 accounts - + 1 account 1 account - + %1 folders number of folders imported %1 folders - + 1 folder 1 folder - + Legacy import Legacy import - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1757,13 +1680,13 @@ This action will abort any currently running synchronization. Server error: PROPFIND reply is not XML formatted! - - + + Encrypted metadata setup error! Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. Encrypted metadata setup error: initial signature from server is empty. @@ -2264,17 +2187,12 @@ This can be an issue with your OpenSSL libraries. 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 A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - Keep syncing - All files in the sync folder "%1" folder were deleted on the server. @@ -2286,6 +2204,11 @@ These deletes will be synchronized to your local sync folder, making such files 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. + + + Keep syncing + Keep syncing + 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. @@ -2295,16 +2218,16 @@ If this was an accident and you decide to keep your files, they will be re-synce 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. - - - Stop syncing - Stop syncing - Remove All Files? Remove All Files? + + + Stop syncing + Stop syncing + Remove all files @@ -2316,12 +2239,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Keep files - + The folder %1 has surpassed the set folder size limit of %2MB. The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? Would you like to stop syncing this folder? @@ -2349,12 +2272,12 @@ This means that the synchronization client might not upload local changes immedi %1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" 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. @@ -2363,7 +2286,7 @@ 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. @@ -2372,22 +2295,22 @@ 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? Remove all files? - + Proceed with Deletion Proceed with Deletion - + Restore Files to Server Restore Files to Server - + Restore Files from Server Restore Files from Server @@ -2939,22 +2862,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + General Settings + About About - - - Legal notice - Legal notice - - - - General Settings - General Settings - &Launch on System Startup @@ -2970,13 +2888,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray For System Tray + + + Legal notice + Legal notice + Use &Monochrome Icons Use &Monochrome Icons - + Show Chat Notifications @@ -2985,6 +2908,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Show Server &Notifications + + + Advanced + Advanced + + + + Ask for confirmation before synchronizing new folders larger than + Ask for confirmation before synchronizing new folders larger than + Updates @@ -2995,43 +2928,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Automatically check for Updates - - - &Channel - &Channel - - - - - stable - stable - - - - - beta - beta - - - - &Restart && Update - &Restart && Update - - - - &Check for Update now - &Check for Update now - - - - Advanced - Advanced - - - - Ask for confirmation before synchronizing new folders larger than - Ask for confirmation before synchronizing new folders larger than - MB @@ -3039,12 +2935,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Channel + + + Notify when synchronised folders grow larger than specified 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 @@ -3054,12 +2955,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Ask for confirmation before synchronising external storages - + Move removed files to trash Move removed files to trash - + + &Check for Update now + &Check for Update now + + + Show sync folders in &Explorer's navigation pane Show sync folders in &Explorer's navigation pane @@ -3068,6 +2974,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter S&how crash reporter + + + Ask for confirmation before synchronizing folders larger than + Ask for confirmation before synchronising folders larger than + Edit &Ignored Files @@ -3080,77 +2991,57 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive - + Info Info - - Ask for confirmation before synchronizing folders larger than - Ask for confirmation before synchronising folders larger than - - - + Desktop client x.x.x Desktop client x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Show sync folders in &Explorer's Navigation Pane + + + Update channel Update channel - - Show sync folders in &Explorer's Navigation Pane - Show sync folders in &Explorer's Navigation Pane + + &Restart && Update + &Restart && Update - + &Automatically check for updates &Automatically check for updates - + Check Now Check Now - + Usage Documentation Usage Documentation - + Legal Notice Legal Notice - - - Use &monochrome icons - Use &monochrome icons - - - - &Launch on system startup - &Launch on system startup - - - - Show server &notifications - Show server &notifications - - - - Show call notifications - Show call notifications - Server notifications that require attention. Server notifications that require attention. - + Show chat notification dialogs. @@ -3164,6 +3055,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. You cannot disable autostart because system-wide autostart is enabled. + + + + stable + stable + + + + + beta + beta + Change update channel? @@ -3179,25 +3082,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar 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. - + daily daily - + enterprise enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - enterprise: contains stable versions for customers. - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3209,22 +3104,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3234,12 +3114,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. - + Changing update channel? Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4410,7 +4290,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Cannot sync due to invalid modification time - + Could not upload file, because it is open in "%1". Could not upload file, because it is open in "%1". @@ -4483,8 +4363,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss Error updating metadata due to invalid modification time - - + + The folder %1 cannot be made read-only: %2 The folder %1 cannot be made read-only: %2 @@ -4606,7 +4486,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Could not create folder %1 - + The folder %1 cannot be made read-only: %2 The folder %1 cannot be made read-only: %2 @@ -4637,7 +4517,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + 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! @@ -5013,6 +4893,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5039,7 +4934,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Secure file drop - + Could not find local folder for %1 Could not find local folder for %1 @@ -5178,16 +5073,16 @@ Server replied with error: %2 Copy public link Copy public link - - - Encrypt - Encrypt - Copy secure filedrop link Copy secure filedrop link + + + Encrypt + Encrypt + Lock file @@ -5209,16 +5104,16 @@ Server replied with error: %2 remaining time before lock expires Expires in %1 minutesExpires in %1 minutes - - - Edit - Edit - Open in browser Open in browser + + + Edit + Edit + Resolve conflict … @@ -5674,7 +5569,7 @@ Server replied with error: %2 <p>%1 Desktop Client</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. For more information please click <a href='%2'>here</a>.</p> @@ -5685,7 +5580,7 @@ Server replied with error: %2 <p><small>Using virtual files plugin: %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> @@ -6079,12 +5974,12 @@ Server replied with error: %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. - + Terms of service Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6160,23 +6055,23 @@ Server replied with error: %2 No sync folders configured - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) %1: %2 - + macOS VFS for %1: Sync is running. macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. macOS VFS for %1: A problem was encountered. @@ -6340,12 +6235,12 @@ Server replied with error: %2 New folder - + Failed to create debug archive Failed to create debug archive - + Could not create debug archive in selected location! Could not create debug archive in selected location! @@ -6526,7 +6421,7 @@ Server replied with error: %2 File drop (upload only) - + Allow resharing Allow resharing @@ -6583,6 +6478,16 @@ Server replied with error: %2 Share password Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6646,54 +6551,6 @@ Server replied with error: %2 Send reply to chat message - - TrayFoldersMenuButton - - - Open local or group folders - Open local or group folders - - - - Open local folder - Open local folder - - - - Connected - Connected - - - - Disconnected - Disconnected - - - - Group folder button - Group folder button - - - - Open local folder "%1" - Open local folder "%1" - - - - Open group folder "%1" - Open group folder "%1" - - - - Open %1 in file explorer - Open %1 in file explorer - - - - User group and local folders menu - User group and local folders menu - - TrayWindowHeader @@ -6978,7 +6835,7 @@ Server replied with 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>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7383,6 +7240,54 @@ Server replied with error: %2 Copy link + + TrayFoldersMenuButton + + + Open local or group folders + Open local or group folders + + + + Open local folder + Open local folder + + + + Connected + Connected + + + + Disconnected + Disconnected + + + + Group folder button + Group folder button + + + + Open local folder "%1" + Open local folder "%1" + + + + Open group folder "%1" + Open group folder "%1" + + + + Open %1 in file explorer + Open %1 in file explorer + + + + User group and local folders menu + User group and local folders menu + + Window diff --git a/translations/client_eo.ts b/translations/client_eo.ts index 64318abf6b468..24f37eddeaafb 100644 --- a/translations/client_eo.ts +++ b/translations/client_eo.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1254,34 +1177,34 @@ This action will abort any currently running synchronization. Daŭrigi - + %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. @@ -1744,13 +1667,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2250,16 +2173,11 @@ This can be an issue with your OpenSSL libraries. Bv. iri al la agordoj por elekti, ĉu vi volas elŝuti ĝin. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2268,6 +2186,11 @@ If you decide to restore the files, they will be re-synced with the server if yo If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + + Keep syncing + + 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. @@ -2275,16 +2198,16 @@ 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. - - - Stop syncing - - Remove All Files? Ĉu forigi ĉiujn dosierojn? + + + Stop syncing + + Remove all files @@ -2296,12 +2219,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Teni dosierojn - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2329,41 +2252,41 @@ Tio signifas, ke la sinkroniga kliento eble ne alŝutas tuj lokajn ŝanĝojn kaj %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 @@ -2915,22 +2838,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Ĉefaj agordoj + About Pri - - - Legal notice - Atentigo pri kopirajto - - - - General Settings - Ĉefaj agordoj - &Launch on System Startup @@ -2946,13 +2864,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Por la taskopleto + + + Legal notice + Atentigo pri kopirajto + Use &Monochrome Icons &Uzi unukolorajn piktogramojn - + Show Chat Notifications @@ -2962,50 +2885,23 @@ Alternatively, you can restore all deleted files by downloading them from the se Montri servilajn &sciigojn - - Updates - Ĝisdatigoj - - - - &Automatically check for Updates - - - - - &Channel - &Kanalo - - - - - stable - stabila - - - - - beta - beta - - - - &Restart && Update - &Restarti kaj ĝisdatigi + + Advanced + Detalaj agordoj - - &Check for Update now + + Ask for confirmation before synchronizing new folders larger than - - Advanced - Detalaj agordoj + + Updates + Ĝisdatigoj - - Ask for confirmation before synchronizing new folders larger than + + &Automatically check for Updates @@ -3015,12 +2911,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Kanalo + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3030,12 +2931,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Demandi antaŭ ol sinkronigi dosierujon el ekstera konservejo - + Move removed files to trash - + + &Check for Update now + + + + Show sync folders in &Explorer's navigation pane @@ -3044,6 +2950,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter Montri &kraŝraportilon + + + Ask for confirmation before synchronizing folders larger than + Demandi antaŭ ol sinkronigi dosierujon pli grandajn ol + Edit &Ignored Files @@ -3056,68 +2967,48 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Info - - Ask for confirmation before synchronizing folders larger than - Demandi antaŭ ol sinkronigi dosierujon pli grandajn ol - - - + Desktop client x.x.x - - - Update channel - - Show sync folders in &Explorer's Navigation Pane Montri sinkronigitajn &dosierujojn en la naviga panelo de la dosiera foliumilo - - &Automatically check for updates - - - - - Check Now - - - - - Usage Documentation + + Update channel - - Legal Notice - + + &Restart && Update + &Restarti kaj ĝisdatigi - - Use &monochrome icons + + &Automatically check for updates - - &Launch on system startup + + Check Now - - Show server &notifications + + Usage Documentation - - Show call notifications + + Legal Notice @@ -3126,7 +3017,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Servilaj sciigoj, kiu bezonas atenton. - + Show chat notification dialogs. @@ -3140,6 +3031,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. + + + + stable + stabila + + + + + beta + beta + Change update channel? @@ -3153,24 +3056,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3179,17 +3075,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3197,12 +3083,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4362,7 +4248,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4435,8 +4321,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4558,7 +4444,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + The folder %1 cannot be made read-only: %2 @@ -4589,7 +4475,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4965,6 +4851,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -4991,7 +4892,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5129,13 +5030,13 @@ Server replied with error: %2 Kopii publikan ligilon - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5159,16 +5060,16 @@ Server replied with error: %2 remaining time before lock expires - - - Edit - Redakti - Open in browser Malfermi per retumilo + + + Edit + Redakti + Resolve conflict … @@ -5623,7 +5524,7 @@ Server replied with error: %2 <p>Labortabla Kliento %1</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) @@ -5634,7 +5535,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6028,12 +5929,12 @@ Server replied with error: %2 - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6109,23 +6010,23 @@ Server replied with error: %2 Neniu sinkroniga dosiero agordita - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6289,12 +6190,12 @@ Server replied with error: %2 Nova dosierujo - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6475,7 +6376,7 @@ Server replied with error: %2 - + Allow resharing @@ -6532,6 +6433,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6595,54 +6506,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6927,7 +6790,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7332,6 +7195,54 @@ Server replied with error: %2 Kopii ligilon + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_es.ts b/translations/client_es.ts index 908465f3bf54b..546f53ad615e3 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -342,11 +342,6 @@ Signal file provider domain Dominio del proveedor de archivos de firmas - - - Create debug archive - Crear archivo de depuración - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog Diálogo principal de Nextcloud para escritorio - - Current account - Cuenta actual - - - - - Resume sync for all - Reanudar sincronización de todas - - - - - Pause sync for all - Pausar sincronización de todas - - - - Add account - Añadir cuenta - - - - Add new account - Añadir nueva cuenta - - - + Unified search results list Lista de resultados de la búsqueda unificada - - Settings - Configuración - - - - Exit - Salir - - - - Current account avatar - Avatar de la cuenta actual - - - + New activities Nuevas actividades - - - Current account status is online - El estado actual de la cuenta es En línea - - - - Current account status is do not disturb - El estado actual de la cuenta 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 - - - - More apps - Más apps - - - - Open %1 in browser - Abrir %1 en el navegador - OCC::AbstractNetworkJob @@ -1265,34 +1188,34 @@ Además, esta acción interrumpirá cualquier sincronización en curso.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. @@ -1758,13 +1681,13 @@ Además, esta acción interrumpirá cualquier sincronización en curso.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. Error de configuración de los metadatos cifrados: la signatura inical del servidor está vacía. @@ -2265,17 +2188,12 @@ Esto podría ser un problema con tu librería OpenSSL 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 - All files in the sync folder "%1" folder were deleted on the server. @@ -2287,6 +2205,11 @@ Esta eliminación se sincronizará con tu carpeta local, haciendo que esos archi 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. + + + Keep syncing + Continuar sincronización + 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. @@ -2297,16 +2220,16 @@ Esta eliminación será sincronizada con tu servidor, haciendo que esos archivos ¿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. - - - Stop syncing - Detener sincronización - Remove All Files? ¿Eliminar todos los archivos? + + + Stop syncing + Detener sincronización + Remove all files @@ -2318,12 +2241,12 @@ Si esto ha sido un accidente, y decides mantener tus archivos, serán re-sincron Mantener archivos - + 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? @@ -2351,12 +2274,12 @@ 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" - + 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. @@ -2365,7 +2288,7 @@ Por favor, confirma si quieres proceder con estos borrados. Alternativamente, puedes restaurar todos los archivos borrados subiéndoles 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. @@ -2374,22 +2297,22 @@ Por favor, confirma si quieres continuar con estos borrados. Alternativamente, puedes restaurar todos los archivos borrados descargándolos del servidor. - + Remove all files? ¿Eliminar todos los archivos? - + Proceed with Deletion Continuar con el borrado - + Restore Files to Server Restaurar los archivos al servidor - + Restore Files from Server Restaurar los archivos desde el servidor @@ -2941,22 +2864,17 @@ Alternativamente, puedes restaurar todos los archivos borrados descargándolos d OCC::GeneralSettings + + + General Settings + Ajustes generales + About Acerca de - - - Legal notice - Aviso legal - - - - General Settings - Ajustes generales - &Launch on System Startup @@ -2972,13 +2890,18 @@ Alternativamente, puedes restaurar todos los archivos borrados descargándolos d For System Tray A la bandeja del sistema + + + Legal notice + Aviso legal + Use &Monochrome Icons Usar iconos &monocromáticos - + Show Chat Notifications @@ -2987,6 +2910,16 @@ Alternativamente, puedes restaurar todos los archivos borrados descargándolos d Show Server &Notifications Mostrar servidor y notificaciones + + + Advanced + Avanzado + + + + Ask for confirmation before synchronizing new folders larger than + Pedir confirmación antes de sincronizar carpetas nuevas mayores a + Updates @@ -2997,43 +2930,6 @@ Alternativamente, puedes restaurar todos los archivos borrados descargándolos d &Automatically check for Updates &Comprobar actualizaciones automáticamente - - - &Channel - &Channel - - - - - stable - stable - - - - - beta - beta - - - - &Restart && Update - &Reiniciar && Actualizar - - - - &Check for Update now - &Comprobar ahora las actualizaciones - - - - Advanced - Avanzado - - - - Ask for confirmation before synchronizing new folders larger than - Pedir confirmación antes de sincronizar carpetas nuevas mayores a - MB @@ -3041,12 +2937,17 @@ Alternativamente, puedes restaurar todos los archivos borrados descargándolos d MB - + + &Channel + &Channel + + + 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 - + Automatically disable synchronisation of folders that overcome limit Deshabilitar sincronización de manera automática para las carpetas que sobrepasen el límite @@ -3056,12 +2957,17 @@ Alternativamente, puedes restaurar todos los archivos borrados descargándolos d Preguntar si se desea sincronizar carpetas de almacenamiento externo - + Move removed files to trash Mover archivos eliminados a la papelera - + + &Check for Update now + &Comprobar ahora las actualizaciones + + + Show sync folders in &Explorer's navigation pane Mostrar carpetas sincronizadas en el panel de navegación del &Explorador @@ -3070,6 +2976,11 @@ Alternativamente, puedes restaurar todos los archivos borrados descargándolos d S&how crash reporter M&ostrar el informe de fallos + + + Ask for confirmation before synchronizing folders larger than + Preguntar si se desea sincronizar carpetas mayores de + Edit &Ignored Files @@ -3082,77 +2993,57 @@ Alternativamente, puedes restaurar todos los archivos borrados descargándolos d Crear archivo de depuración - + Info Información - - Ask for confirmation before synchronizing folders larger than - Preguntar si se desea sincronizar carpetas mayores de - - - + Desktop client x.x.x Cliente de escritorio x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Mostrar carpetas sincronizadas en el panel de navegación del explorador + + + Update channel Canal de actualización - - Show sync folders in &Explorer's Navigation Pane - Mostrar carpetas sincronizadas en el panel de navegación del explorador + + &Restart && Update + &Reiniciar && Actualizar - + &Automatically check for updates Comprobar &actualizaciones automáticamente - + Check Now Comprobar ahora - + Usage Documentation Documentación de uso - + Legal Notice Aviso Legal - - - 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 chat notification dialogs. @@ -3166,6 +3057,18 @@ Alternativamente, puedes restaurar todos los archivos borrados descargándolos d 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. + + + + stable + stable + + + + + beta + beta + Change update channel? @@ -3181,25 +3084,17 @@ 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. - + daily diariamente - + enterprise empresarial - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - empresarial: contiene versiones estables para clientes. - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3211,22 +3106,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m Bajar de versión no es inmediatamente posible: cambiar de beta a estable significa esperar a la siguiente ersión estable. - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - El canal determina qué actualizaciones se ofrecerán para instalar: -- estable: contiene versiones probadas consideradas fiables. -- beta: contiene versiones con nuevas características que pueden no haberse probado exhaustivamente. -- diaria: contiene versiones creadas diariamente solo para pruebas y desarollo. -%1 -Bajar de versión no es inmediatamente posible: cambiar de beta a estable significa esperar a la nueva versión estable. - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3236,12 +3116,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp Bajar de versión no es inmediatamente posible: cambiar de estable a empresarial significa esperar a la nueva versión empresarial. - + Changing update channel? ¿Cambiar canal de actualización? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4412,7 +4292,7 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c 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". @@ -4485,8 +4365,8 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c 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 @@ -4608,7 +4488,7 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c 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 @@ -4639,7 +4519,7 @@ 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! ¡La carpeta %1 no puede ser renombrada ya que un archivo o carpeta local causa un conflicto de nombre! @@ -5015,6 +4895,21 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5041,7 +4936,7 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c Entrega de archivos segura - + Could not find local folder for %1 No se ha podido encontrar una carpeta local para %1 @@ -5180,16 +5075,16 @@ El servidor respondió con el error: %2 Copy public link Copiar enlace público - - - Encrypt - Cifrar - Copy secure filedrop link Copiar enlace para entrega de archivos segura + + + Encrypt + Cifrar + Lock file @@ -5211,16 +5106,16 @@ El servidor respondió con el error: %2 remaining time before lock expires Expira en %1 minutoExpira en %1 minutosExpira en %1 minutos - - - Edit - Editar - Open in browser Abrir en navegador + + + Edit + Editar + Resolve conflict … @@ -5676,7 +5571,7 @@ El servidor respondió con el error: %2 <p>%1 - Cliente de escritorio</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> @@ -5687,7 +5582,7 @@ El servidor respondió con el error: %2 <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> @@ -6081,12 +5976,12 @@ El servidor respondió con el error: %2 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. - + Terms of service Términos del servicio - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. Tu cuenta %1 requiere que aceptes los términos del servicio del servidor. Vas a ser redirigido a %2 para señalar que los has leído y estás de acuerdo. @@ -6162,23 +6057,23 @@ El servidor respondió con el error: %2 No hay carpetas sincronizado configuradas - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) %1:%2 - + macOS VFS for %1: Sync is running. macOS VFS para %1: Sincronización en progreso. - + macOS VFS for %1: Last sync was successful. macOS VFS para %1: la última sincronización fue correcta. - + macOS VFS for %1: A problem was encountered. macOS VFS para %1: Se ha encontrado un error. @@ -6342,12 +6237,12 @@ El servidor respondió con el error: %2 Nueva carpeta - + Failed to create debug archive Fallo al crear archivo de depuración - + Could not create debug archive in selected location! ¡No se pudo crear el archivo de depuración en la ubicación seleccionada! @@ -6528,7 +6423,7 @@ El servidor respondió con el error: %2 Soltar archivo (solo carga) - + Allow resharing Permitir que los otros compartan @@ -6585,6 +6480,16 @@ El servidor respondió con el error: %2 Share password Contraseña de la compartición + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6648,54 +6553,6 @@ El servidor respondió con el error: %2 Enviar respuesta al mensaje de chat - - TrayFoldersMenuButton - - - 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 - - TrayWindowHeader @@ -6980,7 +6837,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> @@ -7385,6 +7242,54 @@ El servidor respondió con el error: %2 Copiar enlace + + TrayFoldersMenuButton + + + 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 + + Window diff --git a/translations/client_es_CL.ts b/translations/client_es_CL.ts index 9796067b73b31..f58e53840301d 100644 --- a/translations/client_es_CL.ts +++ b/translations/client_es_CL.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1254,34 +1177,34 @@ This action will abort any currently running synchronization. - + %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. @@ -1744,13 +1667,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2250,16 +2173,11 @@ This can be an issue with your OpenSSL libraries. Por favor ve a las configuraciones para seleccionarlo si deseas descargarlo. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2268,6 +2186,11 @@ If you decide to restore the files, they will be re-synced with the server if yo If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + + Keep syncing + + 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. @@ -2275,16 +2198,16 @@ 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. - - - Stop syncing - - Remove All Files? ¿Eliminar Todos los Archivos? + + + Stop syncing + + Remove all files @@ -2296,12 +2219,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Mantener archivos - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2325,41 +2248,41 @@ This means that the synchronization client might not upload local changes immedi - + 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 @@ -2911,22 +2834,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Configuraciones generales + About Acerca de - - - Legal notice - - - - - General Settings - Configuraciones generales - &Launch on System Startup @@ -2942,13 +2860,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Para la Bandeja del Sistema + + + Legal notice + + Use &Monochrome Icons Usar Íconos &Monocromáticos - + Show Chat Notifications @@ -2958,50 +2881,23 @@ Alternatively, you can restore all deleted files by downloading them from the se - - Updates - Actualizaciones - - - - &Automatically check for Updates - - - - - &Channel - - - - - - stable - - - - - - beta - - - - - &Restart && Update - &Reinicia && Actualiza + + Advanced + Avanzado - - &Check for Update now + + Ask for confirmation before synchronizing new folders larger than - - Advanced - Avanzado + + Updates + Actualizaciones - - Ask for confirmation before synchronizing new folders larger than + + &Automatically check for Updates @@ -3011,12 +2907,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3026,12 +2927,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Perdir confirmaci´pón antes de sincronizar almacenamientos externos - + Move removed files to trash - + + &Check for Update now + + + + Show sync folders in &Explorer's navigation pane @@ -3040,6 +2946,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter M&ostrar el reporteador de fallas + + + Ask for confirmation before synchronizing folders larger than + Pedir confirmación antes de sincronizar carpetas mayores a + Edit &Ignored Files @@ -3052,68 +2963,48 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Info - - Ask for confirmation before synchronizing folders larger than - Pedir confirmación antes de sincronizar carpetas mayores a + + Desktop client x.x.x + - - Desktop client x.x.x + + Show sync folders in &Explorer's Navigation Pane - + Update channel - - Show sync folders in &Explorer's Navigation Pane - + + &Restart && Update + &Reinicia && Actualiza - + &Automatically check for updates - + Check Now - + Usage Documentation - - - Legal Notice - - - Use &monochrome icons - - - - - &Launch on system startup - - - - - Show server &notifications - - - - - Show call notifications + Legal Notice @@ -3122,7 +3013,7 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Show chat notification dialogs. @@ -3136,6 +3027,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. + + + + stable + + + + + + beta + + Change update channel? @@ -3149,24 +3052,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3175,17 +3071,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3193,12 +3079,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4354,7 +4240,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4427,8 +4313,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4550,7 +4436,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + The folder %1 cannot be made read-only: %2 @@ -4581,7 +4467,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4957,6 +4843,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -4983,7 +4884,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5121,13 +5022,13 @@ Server replied with error: %2 - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5152,13 +5053,13 @@ Server replied with error: %2 - - Edit + + Open in browser - - Open in browser + + Edit @@ -5616,7 +5517,7 @@ Server replied with error: %2 - + <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) @@ -5627,7 +5528,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6021,12 +5922,12 @@ Server replied with error: %2 - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6102,23 +6003,23 @@ Server replied with error: %2 No se han configurado carpetas de sincronización - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6282,12 +6183,12 @@ Server replied with error: %2 - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6468,7 +6369,7 @@ Server replied with error: %2 - + Allow resharing @@ -6525,6 +6426,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6588,54 +6499,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6920,7 +6783,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7325,6 +7188,54 @@ Server replied with error: %2 + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_es_CO.ts b/translations/client_es_CO.ts index a785cf830fbbc..ab8c7ddde6e67 100644 --- a/translations/client_es_CO.ts +++ b/translations/client_es_CO.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1254,34 +1177,34 @@ This action will abort any currently running synchronization. - + %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. @@ -1744,13 +1667,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2250,16 +2173,11 @@ This can be an issue with your OpenSSL libraries. Por favor ve a las configuraciones para seleccionarlo si deseas descargarlo. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2268,6 +2186,11 @@ If you decide to restore the files, they will be re-synced with the server if yo If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + + Keep syncing + + 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. @@ -2275,16 +2198,16 @@ 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. - - - Stop syncing - - Remove All Files? ¿Eliminar Todos los Archivos? + + + Stop syncing + + Remove all files @@ -2296,12 +2219,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Mantener archivos - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2325,41 +2248,41 @@ This means that the synchronization client might not upload local changes immedi - + 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 @@ -2911,22 +2834,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Configuraciones generales + About Acerca de - - - Legal notice - - - - - General Settings - Configuraciones generales - &Launch on System Startup @@ -2942,13 +2860,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Para la Bandeja del Sistema + + + Legal notice + + Use &Monochrome Icons Usar Íconos &Monocromáticos - + Show Chat Notifications @@ -2958,50 +2881,23 @@ Alternatively, you can restore all deleted files by downloading them from the se - - Updates - Actualizaciones - - - - &Automatically check for Updates - - - - - &Channel - - - - - - stable - - - - - - beta - - - - - &Restart && Update - &Reinicia && Actualiza + + Advanced + Avanzado - - &Check for Update now + + Ask for confirmation before synchronizing new folders larger than - - Advanced - Avanzado + + Updates + Actualizaciones - - Ask for confirmation before synchronizing new folders larger than + + &Automatically check for Updates @@ -3011,12 +2907,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3026,12 +2927,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Perdir confirmaci´pón antes de sincronizar almacenamientos externos - + Move removed files to trash - + + &Check for Update now + + + + Show sync folders in &Explorer's navigation pane @@ -3040,6 +2946,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter M&ostrar el reporteador de fallas + + + Ask for confirmation before synchronizing folders larger than + Pedir confirmación antes de sincronizar carpetas mayores a + Edit &Ignored Files @@ -3052,68 +2963,48 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Info - - Ask for confirmation before synchronizing folders larger than - Pedir confirmación antes de sincronizar carpetas mayores a + + Desktop client x.x.x + - - Desktop client x.x.x + + Show sync folders in &Explorer's Navigation Pane - + Update channel - - Show sync folders in &Explorer's Navigation Pane - + + &Restart && Update + &Reinicia && Actualiza - + &Automatically check for updates - + Check Now - + Usage Documentation - - - Legal Notice - - - Use &monochrome icons - - - - - &Launch on system startup - - - - - Show server &notifications - - - - - Show call notifications + Legal Notice @@ -3122,7 +3013,7 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Show chat notification dialogs. @@ -3136,6 +3027,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. + + + + stable + + + + + + beta + + Change update channel? @@ -3149,24 +3052,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3175,17 +3071,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3193,12 +3079,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4354,7 +4240,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4427,8 +4313,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4550,7 +4436,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + The folder %1 cannot be made read-only: %2 @@ -4581,7 +4467,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4957,6 +4843,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -4983,7 +4884,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5121,13 +5022,13 @@ Server replied with error: %2 - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5152,13 +5053,13 @@ Server replied with error: %2 - - Edit + + Open in browser - - Open in browser + + Edit @@ -5616,7 +5517,7 @@ Server replied with error: %2 - + <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) @@ -5627,7 +5528,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6021,12 +5922,12 @@ Server replied with error: %2 - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6102,23 +6003,23 @@ Server replied with error: %2 No se han configurado carpetas de sincronización - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6282,12 +6183,12 @@ Server replied with error: %2 - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6468,7 +6369,7 @@ Server replied with error: %2 - + Allow resharing @@ -6525,6 +6426,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6588,54 +6499,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6920,7 +6783,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7325,6 +7188,54 @@ Server replied with error: %2 + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_es_CR.ts b/translations/client_es_CR.ts index e6d4d403fdca6..612376eac5974 100644 --- a/translations/client_es_CR.ts +++ b/translations/client_es_CR.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1254,34 +1177,34 @@ This action will abort any currently running synchronization. - + %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. @@ -1744,13 +1667,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2250,16 +2173,11 @@ This can be an issue with your OpenSSL libraries. Por favor ve a las configuraciones para seleccionarlo si deseas descargarlo. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2268,6 +2186,11 @@ If you decide to restore the files, they will be re-synced with the server if yo If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + + Keep syncing + + 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. @@ -2275,16 +2198,16 @@ 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. - - - Stop syncing - - Remove All Files? ¿Eliminar Todos los Archivos? + + + Stop syncing + + Remove all files @@ -2296,12 +2219,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Mantener archivos - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2325,41 +2248,41 @@ This means that the synchronization client might not upload local changes immedi - + 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 @@ -2911,22 +2834,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Configuraciones generales + About Acerca de - - - Legal notice - - - - - General Settings - Configuraciones generales - &Launch on System Startup @@ -2942,13 +2860,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Para la Bandeja del Sistema + + + Legal notice + + Use &Monochrome Icons Usar Íconos &Monocromáticos - + Show Chat Notifications @@ -2958,50 +2881,23 @@ Alternatively, you can restore all deleted files by downloading them from the se - - Updates - Actualizaciones - - - - &Automatically check for Updates - - - - - &Channel - - - - - - stable - - - - - - beta - - - - - &Restart && Update - &Reinicia && Actualiza + + Advanced + Avanzado - - &Check for Update now + + Ask for confirmation before synchronizing new folders larger than - - Advanced - Avanzado + + Updates + Actualizaciones - - Ask for confirmation before synchronizing new folders larger than + + &Automatically check for Updates @@ -3011,12 +2907,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3026,12 +2927,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Perdir confirmaci´pón antes de sincronizar almacenamientos externos - + Move removed files to trash - + + &Check for Update now + + + + Show sync folders in &Explorer's navigation pane @@ -3040,6 +2946,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter M&ostrar el reporteador de fallas + + + Ask for confirmation before synchronizing folders larger than + Pedir confirmación antes de sincronizar carpetas mayores a + Edit &Ignored Files @@ -3052,68 +2963,48 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Info - - Ask for confirmation before synchronizing folders larger than - Pedir confirmación antes de sincronizar carpetas mayores a + + Desktop client x.x.x + - - Desktop client x.x.x + + Show sync folders in &Explorer's Navigation Pane - + Update channel - - Show sync folders in &Explorer's Navigation Pane - + + &Restart && Update + &Reinicia && Actualiza - + &Automatically check for updates - + Check Now - + Usage Documentation - - - Legal Notice - - - Use &monochrome icons - - - - - &Launch on system startup - - - - - Show server &notifications - - - - - Show call notifications + Legal Notice @@ -3122,7 +3013,7 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Show chat notification dialogs. @@ -3136,6 +3027,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. + + + + stable + + + + + + beta + + Change update channel? @@ -3149,24 +3052,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3175,17 +3071,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3193,12 +3079,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4354,7 +4240,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4427,8 +4313,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4550,7 +4436,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + The folder %1 cannot be made read-only: %2 @@ -4581,7 +4467,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4957,6 +4843,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -4983,7 +4884,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5121,13 +5022,13 @@ Server replied with error: %2 - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5152,13 +5053,13 @@ Server replied with error: %2 - - Edit + + Open in browser - - Open in browser + + Edit @@ -5616,7 +5517,7 @@ Server replied with error: %2 - + <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) @@ -5627,7 +5528,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6021,12 +5922,12 @@ Server replied with error: %2 - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6102,23 +6003,23 @@ Server replied with error: %2 No se han configurado carpetas de sincronización - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6282,12 +6183,12 @@ Server replied with error: %2 - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6468,7 +6369,7 @@ Server replied with error: %2 - + Allow resharing @@ -6525,6 +6426,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6588,54 +6499,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6920,7 +6783,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7325,6 +7188,54 @@ Server replied with error: %2 + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_es_DO.ts b/translations/client_es_DO.ts index dd975392894ea..169dfa80713d6 100644 --- a/translations/client_es_DO.ts +++ b/translations/client_es_DO.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1254,34 +1177,34 @@ This action will abort any currently running synchronization. - + %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. @@ -1744,13 +1667,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2250,16 +2173,11 @@ This can be an issue with your OpenSSL libraries. Por favor ve a las configuraciones para seleccionarlo si deseas descargarlo. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2268,6 +2186,11 @@ If you decide to restore the files, they will be re-synced with the server if yo If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + + Keep syncing + + 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. @@ -2275,16 +2198,16 @@ 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. - - - Stop syncing - - Remove All Files? ¿Eliminar Todos los Archivos? + + + Stop syncing + + Remove all files @@ -2296,12 +2219,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Mantener archivos - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2325,41 +2248,41 @@ This means that the synchronization client might not upload local changes immedi - + 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 @@ -2911,22 +2834,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Configuraciones generales + About Acerca de - - - Legal notice - - - - - General Settings - Configuraciones generales - &Launch on System Startup @@ -2942,13 +2860,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Para la Bandeja del Sistema + + + Legal notice + + Use &Monochrome Icons Usar Íconos &Monocromáticos - + Show Chat Notifications @@ -2958,50 +2881,23 @@ Alternatively, you can restore all deleted files by downloading them from the se - - Updates - Actualizaciones - - - - &Automatically check for Updates - - - - - &Channel - - - - - - stable - - - - - - beta - - - - - &Restart && Update - &Reinicia && Actualiza + + Advanced + Avanzado - - &Check for Update now + + Ask for confirmation before synchronizing new folders larger than - - Advanced - Avanzado + + Updates + Actualizaciones - - Ask for confirmation before synchronizing new folders larger than + + &Automatically check for Updates @@ -3011,12 +2907,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3026,12 +2927,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Perdir confirmaci´pón antes de sincronizar almacenamientos externos - + Move removed files to trash - + + &Check for Update now + + + + Show sync folders in &Explorer's navigation pane @@ -3040,6 +2946,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter M&ostrar el reporteador de fallas + + + Ask for confirmation before synchronizing folders larger than + Pedir confirmación antes de sincronizar carpetas mayores a + Edit &Ignored Files @@ -3052,68 +2963,48 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Info - - Ask for confirmation before synchronizing folders larger than - Pedir confirmación antes de sincronizar carpetas mayores a + + Desktop client x.x.x + - - Desktop client x.x.x + + Show sync folders in &Explorer's Navigation Pane - + Update channel - - Show sync folders in &Explorer's Navigation Pane - + + &Restart && Update + &Reinicia && Actualiza - + &Automatically check for updates - + Check Now - + Usage Documentation - - - Legal Notice - - - Use &monochrome icons - - - - - &Launch on system startup - - - - - Show server &notifications - - - - - Show call notifications + Legal Notice @@ -3122,7 +3013,7 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Show chat notification dialogs. @@ -3136,6 +3027,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. + + + + stable + + + + + + beta + + Change update channel? @@ -3149,24 +3052,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3175,17 +3071,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3193,12 +3079,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4354,7 +4240,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4427,8 +4313,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4550,7 +4436,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + The folder %1 cannot be made read-only: %2 @@ -4581,7 +4467,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4957,6 +4843,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -4983,7 +4884,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5121,13 +5022,13 @@ Server replied with error: %2 - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5152,13 +5053,13 @@ Server replied with error: %2 - - Edit + + Open in browser - - Open in browser + + Edit @@ -5616,7 +5517,7 @@ Server replied with error: %2 - + <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) @@ -5627,7 +5528,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6021,12 +5922,12 @@ Server replied with error: %2 - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6102,23 +6003,23 @@ Server replied with error: %2 No se han configurado carpetas de sincronización - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6282,12 +6183,12 @@ Server replied with error: %2 - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6468,7 +6369,7 @@ Server replied with error: %2 - + Allow resharing @@ -6525,6 +6426,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6588,54 +6499,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6920,7 +6783,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7325,6 +7188,54 @@ Server replied with error: %2 + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_es_EC.ts b/translations/client_es_EC.ts index 09f39c3b21da5..4b9013844b38c 100644 --- a/translations/client_es_EC.ts +++ b/translations/client_es_EC.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1261,34 +1184,34 @@ This action will abort any currently running synchronization. Continuar - + %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. @@ -1752,13 +1675,13 @@ This action will abort any currently running synchronization. Error del servidor: ¡La respuesta de PROPFIND no tiene formato XML! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2259,16 +2182,11 @@ This can be an issue with your OpenSSL libraries. Por favor ve a las configuraciones para seleccionarlo si deseas descargarlo. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2280,6 +2198,11 @@ If you decide to delete the files, they will be unavailable to you, unless you a Si decides restaurar los archivos, se volverán a sincronizar con el servidor si tienes los derechos para hacerlo. Si decides eliminar los archivos, no estarán disponibles para ti, a menos que seas el propietario. + + + Keep syncing + + 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. @@ -2289,16 +2212,16 @@ If this was an accident and you decide to keep your files, they will be re-synce ¿Estás seguro de que deseas sincronizar estas acciones con el servidor? Si esto fue un accidente y decides conservar tus archivos, se volverán a sincronizar desde el servidor. - - - Stop syncing - - Remove All Files? ¿Eliminar Todos los Archivos? + + + Stop syncing + + Remove all files @@ -2310,12 +2233,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Mantener archivos - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2343,41 +2266,41 @@ This means that the synchronization client might not upload local changes immedi %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 @@ -2929,22 +2852,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Configuraciones generales + About Acerca de - - - Legal notice - Aviso legal - - - - General Settings - Configuraciones generales - &Launch on System Startup @@ -2960,13 +2878,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Para la Bandeja del Sistema + + + Legal notice + Aviso legal + Use &Monochrome Icons Usar Íconos &Monocromáticos - + Show Chat Notifications @@ -2975,6 +2898,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Mostrar notificaciones del servidor + + + Advanced + Avanzado + + + + Ask for confirmation before synchronizing new folders larger than + + Updates @@ -2985,43 +2918,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Verificar automáticamente las actualizaciones - - - &Channel - &Canal - - - - - stable - estable - - - - - beta - beta - - - - &Restart && Update - &Reinicia && Actualiza - - - - &Check for Update now - &Verificar actualizaciones ahora - - - - Advanced - Avanzado - - - - Ask for confirmation before synchronizing new folders larger than - - MB @@ -3029,12 +2925,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Canal + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3044,12 +2945,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Perdir confirmaci´pón antes de sincronizar almacenamientos externos - + Move removed files to trash - + + &Check for Update now + &Verificar actualizaciones ahora + + + Show sync folders in &Explorer's navigation pane @@ -3058,6 +2964,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter M&ostrar el reporteador de fallas + + + Ask for confirmation before synchronizing folders larger than + Pedir confirmación antes de sincronizar carpetas mayores a + Edit &Ignored Files @@ -3070,68 +2981,48 @@ Alternatively, you can restore all deleted files by downloading them from the se Crear archivo de depuración - + Info - - Ask for confirmation before synchronizing folders larger than - Pedir confirmación antes de sincronizar carpetas mayores a - - - + Desktop client x.x.x - - - Update channel - - Show sync folders in &Explorer's Navigation Pane Mostrar carpetas de sincronización en el panel de navegación del Explorador - - &Automatically check for updates - - - - - Check Now - - - - - Usage Documentation + + Update channel - - Legal Notice - + + &Restart && Update + &Reinicia && Actualiza - - Use &monochrome icons + + &Automatically check for updates - - &Launch on system startup + + Check Now - - Show server &notifications + + Usage Documentation - - Show call notifications + + Legal Notice @@ -3140,7 +3031,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Notificaciones del servidor que requieren atención. - + Show chat notification dialogs. @@ -3154,6 +3045,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. No puedes desactivar el inicio automático porque el inicio automático a nivel de sistema está habilitado. + + + + stable + estable + + + + + beta + beta + Change update channel? @@ -3169,24 +3072,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Ten en cuenta que esto selecciona solo las actualizaciones que se tomarán del conjunto y que no hay versiones anteriores: Por lo tanto, volver del canal beta al canal estable generalmente no se puede hacer de inmediato y significa esperar una versión estable que sea más nueva que la versión beta instalada actualmente. - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3195,17 +3091,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3213,12 +3099,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4387,7 +4273,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss No se puede sincronizar debido a una hora de modificación no válida - + Could not upload file, because it is open in "%1". @@ -4460,8 +4346,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss Error al actualizar los metadatos debido a una hora de modificación no válida - - + + The folder %1 cannot be made read-only: %2 @@ -4583,7 +4469,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss No se pudo crear la carpeta %1 - + The folder %1 cannot be made read-only: %2 @@ -4614,7 +4500,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4990,6 +4876,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5016,7 +4917,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Envío seguro de archivos - + Could not find local folder for %1 @@ -5155,16 +5056,16 @@ Server replied with error: %2 Copy public link Copiar enlace público - - - Encrypt - Cifrar - Copy secure filedrop link Copiar enlace seguro para envío de archivos + + + Encrypt + Cifrar + Lock file @@ -5186,16 +5087,16 @@ Server replied with error: %2 remaining time before lock expires Expira en %1 minutosExpira en %1 minutosExpira en %1 minutos - - - Edit - Editar - Open in browser Abrir en el navegador + + + Edit + Editar + Resolve conflict … @@ -5651,7 +5552,7 @@ Server replied with error: %2 <p>%1 Cliente de Escritorio</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) @@ -5662,7 +5563,7 @@ Server replied with error: %2 <p><small>Usando el complemento de archivos virtuales: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6056,12 +5957,12 @@ Server replied with error: %2 El servidor en la cuenta %1 ejecuta una versión no compatible %2. Usar este cliente con versiones de servidor no compatibles no ha sido probado y puede ser peligroso. Procede bajo tu propio riesgo. - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6137,23 +6038,23 @@ Server replied with error: %2 No se han configurado carpetas de sincronización - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6317,12 +6218,12 @@ Server replied with error: %2 Nueva carpeta - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6503,7 +6404,7 @@ Server replied with error: %2 Soltar archivo (solo carga) - + Allow resharing @@ -6560,6 +6461,16 @@ Server replied with error: %2 Share password Contraseña de uso compartido + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6623,54 +6534,6 @@ Server replied with error: %2 Enviar respuesta al mensaje de chat - - TrayFoldersMenuButton - - - Open local or group folders - Abrir carpetas locales o 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 carpetas de grupo y usuario local - - TrayWindowHeader @@ -6955,7 +6818,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7360,6 +7223,54 @@ Server replied with error: %2 Copiar enlace + + TrayFoldersMenuButton + + + Open local or group folders + Abrir carpetas locales o 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 carpetas de grupo y usuario local + + Window diff --git a/translations/client_es_GT.ts b/translations/client_es_GT.ts index 5a9ed5546fe6f..e4a164f304326 100644 --- a/translations/client_es_GT.ts +++ b/translations/client_es_GT.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1254,34 +1177,34 @@ This action will abort any currently running synchronization. - + %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. @@ -1744,13 +1667,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2250,16 +2173,11 @@ This can be an issue with your OpenSSL libraries. Por favor ve a las configuraciones para seleccionarlo si deseas descargarlo. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2268,6 +2186,11 @@ If you decide to restore the files, they will be re-synced with the server if yo If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + + Keep syncing + + 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. @@ -2275,16 +2198,16 @@ 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. - - - Stop syncing - - Remove All Files? ¿Eliminar Todos los Archivos? + + + Stop syncing + + Remove all files @@ -2296,12 +2219,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Mantener archivos - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2325,41 +2248,41 @@ This means that the synchronization client might not upload local changes immedi - + 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 @@ -2911,22 +2834,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Configuraciones generales + About Acerca de - - - Legal notice - - - - - General Settings - Configuraciones generales - &Launch on System Startup @@ -2942,13 +2860,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Para la Bandeja del Sistema + + + Legal notice + + Use &Monochrome Icons Usar Íconos &Monocromáticos - + Show Chat Notifications @@ -2958,50 +2881,23 @@ Alternatively, you can restore all deleted files by downloading them from the se - - Updates - Actualizaciones - - - - &Automatically check for Updates - - - - - &Channel - - - - - - stable - - - - - - beta - - - - - &Restart && Update - &Reinicia && Actualiza + + Advanced + Avanzado - - &Check for Update now + + Ask for confirmation before synchronizing new folders larger than - - Advanced - Avanzado + + Updates + Actualizaciones - - Ask for confirmation before synchronizing new folders larger than + + &Automatically check for Updates @@ -3011,12 +2907,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3026,12 +2927,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Perdir confirmaci´pón antes de sincronizar almacenamientos externos - + Move removed files to trash - + + &Check for Update now + + + + Show sync folders in &Explorer's navigation pane @@ -3040,6 +2946,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter M&ostrar el reporteador de fallas + + + Ask for confirmation before synchronizing folders larger than + Pedir confirmación antes de sincronizar carpetas mayores a + Edit &Ignored Files @@ -3052,68 +2963,48 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Info - - Ask for confirmation before synchronizing folders larger than - Pedir confirmación antes de sincronizar carpetas mayores a + + Desktop client x.x.x + - - Desktop client x.x.x + + Show sync folders in &Explorer's Navigation Pane - + Update channel - - Show sync folders in &Explorer's Navigation Pane - + + &Restart && Update + &Reinicia && Actualiza - + &Automatically check for updates - + Check Now - + Usage Documentation - - - Legal Notice - - - Use &monochrome icons - - - - - &Launch on system startup - - - - - Show server &notifications - - - - - Show call notifications + Legal Notice @@ -3122,7 +3013,7 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Show chat notification dialogs. @@ -3136,6 +3027,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. + + + + stable + + + + + + beta + + Change update channel? @@ -3149,24 +3052,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3175,17 +3071,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3193,12 +3079,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4354,7 +4240,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4427,8 +4313,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4550,7 +4436,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + The folder %1 cannot be made read-only: %2 @@ -4581,7 +4467,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4957,6 +4843,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -4983,7 +4884,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5121,13 +5022,13 @@ Server replied with error: %2 - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5152,13 +5053,13 @@ Server replied with error: %2 - - Edit + + Open in browser - - Open in browser + + Edit @@ -5616,7 +5517,7 @@ Server replied with error: %2 - + <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) @@ -5627,7 +5528,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6021,12 +5922,12 @@ Server replied with error: %2 - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6102,23 +6003,23 @@ Server replied with error: %2 No se han configurado carpetas de sincronización - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6282,12 +6183,12 @@ Server replied with error: %2 - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6468,7 +6369,7 @@ Server replied with error: %2 - + Allow resharing @@ -6525,6 +6426,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6588,54 +6499,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6920,7 +6783,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7325,6 +7188,54 @@ Server replied with error: %2 + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_es_HN.ts b/translations/client_es_HN.ts index f75fc0aa8cc80..e1ebf9b3b0a7d 100644 --- a/translations/client_es_HN.ts +++ b/translations/client_es_HN.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1254,34 +1177,34 @@ This action will abort any currently running synchronization. - + %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. @@ -1744,13 +1667,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2250,16 +2173,11 @@ This can be an issue with your OpenSSL libraries. Por favor ve a las configuraciones para seleccionarlo si deseas descargarlo. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2268,6 +2186,11 @@ If you decide to restore the files, they will be re-synced with the server if yo If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + + Keep syncing + + 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. @@ -2275,16 +2198,16 @@ 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. - - - Stop syncing - - Remove All Files? ¿Eliminar Todos los Archivos? + + + Stop syncing + + Remove all files @@ -2296,12 +2219,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Mantener archivos - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2325,41 +2248,41 @@ This means that the synchronization client might not upload local changes immedi - + 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 @@ -2911,22 +2834,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Configuraciones generales + About Acerca de - - - Legal notice - - - - - General Settings - Configuraciones generales - &Launch on System Startup @@ -2942,13 +2860,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Para la Bandeja del Sistema + + + Legal notice + + Use &Monochrome Icons Usar Íconos &Monocromáticos - + Show Chat Notifications @@ -2958,50 +2881,23 @@ Alternatively, you can restore all deleted files by downloading them from the se - - Updates - Actualizaciones - - - - &Automatically check for Updates - - - - - &Channel - - - - - - stable - - - - - - beta - - - - - &Restart && Update - &Reinicia && Actualiza + + Advanced + Avanzado - - &Check for Update now + + Ask for confirmation before synchronizing new folders larger than - - Advanced - Avanzado + + Updates + Actualizaciones - - Ask for confirmation before synchronizing new folders larger than + + &Automatically check for Updates @@ -3011,12 +2907,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3026,12 +2927,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Perdir confirmaci´pón antes de sincronizar almacenamientos externos - + Move removed files to trash - + + &Check for Update now + + + + Show sync folders in &Explorer's navigation pane @@ -3040,6 +2946,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter M&ostrar el reporteador de fallas + + + Ask for confirmation before synchronizing folders larger than + Pedir confirmación antes de sincronizar carpetas mayores a + Edit &Ignored Files @@ -3052,68 +2963,48 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Info - - Ask for confirmation before synchronizing folders larger than - Pedir confirmación antes de sincronizar carpetas mayores a + + Desktop client x.x.x + - - Desktop client x.x.x + + Show sync folders in &Explorer's Navigation Pane - + Update channel - - Show sync folders in &Explorer's Navigation Pane - + + &Restart && Update + &Reinicia && Actualiza - + &Automatically check for updates - + Check Now - + Usage Documentation - - - Legal Notice - - - Use &monochrome icons - - - - - &Launch on system startup - - - - - Show server &notifications - - - - - Show call notifications + Legal Notice @@ -3122,7 +3013,7 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Show chat notification dialogs. @@ -3136,6 +3027,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. + + + + stable + + + + + + beta + + Change update channel? @@ -3149,24 +3052,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3175,17 +3071,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3193,12 +3079,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4354,7 +4240,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4427,8 +4313,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4550,7 +4436,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + The folder %1 cannot be made read-only: %2 @@ -4581,7 +4467,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4957,6 +4843,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -4983,7 +4884,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5121,13 +5022,13 @@ Server replied with error: %2 - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5152,13 +5053,13 @@ Server replied with error: %2 - - Edit + + Open in browser - - Open in browser + + Edit @@ -5616,7 +5517,7 @@ Server replied with error: %2 - + <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) @@ -5627,7 +5528,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6021,12 +5922,12 @@ Server replied with error: %2 - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6102,23 +6003,23 @@ Server replied with error: %2 No se han configurado carpetas de sincronización - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6282,12 +6183,12 @@ Server replied with error: %2 - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6468,7 +6369,7 @@ Server replied with error: %2 - + Allow resharing @@ -6525,6 +6426,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6588,54 +6499,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6920,7 +6783,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7325,6 +7188,54 @@ Server replied with error: %2 + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_es_MX.ts b/translations/client_es_MX.ts index 1a230a1e7d6d8..c61bee1b91f02 100644 --- a/translations/client_es_MX.ts +++ b/translations/client_es_MX.ts @@ -342,11 +342,6 @@ Signal file provider domain Dominio del proveedor del archivo de señalización - - - Create debug archive - Crear archivo de depuración - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1264,34 +1187,34 @@ This action will abort any currently running synchronization. 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 antigua - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1757,13 +1680,13 @@ This action will abort any currently running synchronization. Error del servidor: ¡La respuesta 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. @@ -2264,17 +2187,12 @@ Esto podría ser un problema con su librería OpenSSL. Por favor ve a las configuraciones para seleccionarlo si deseas descargarlo. - + 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 - All files in the sync folder "%1" folder were deleted on the server. @@ -2286,6 +2204,11 @@ Estas eliminaciones se sincronizarán con la carpeta de sincronización local, l Si decide restaurar los archivos, se volverán a sincronizar con el servidor si tiene los derechos para hacerlo. Si decide eliminar los archivos, no estarán disponibles para ud., a menos que sea el propietario. + + + Keep syncing + Continuar sincronización + 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. @@ -2295,16 +2218,16 @@ If this was an accident and you decide to keep your files, they will be re-synce ¿Está seguro que desea sincronizar estas acciones con el servidor? Si esto ha sido un accidente y decide mantener sus archivos, serán resincronizados desde el servidor. - - - Stop syncing - Detener sincronización - Remove All Files? ¿Eliminar Todos los Archivos? + + + Stop syncing + Detener sincronización + Remove all files @@ -2316,12 +2239,12 @@ Si esto ha sido un accidente y decide mantener sus archivos, serán resincroniza Mantener archivos - + 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? @@ -2349,41 +2272,41 @@ Esto significa que el cliente de sincronización podría no cargar los cambios l %1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" La descarga del archivo virtual falló con el código "%1" , estado "%2" y mensaje de error "%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? ¿Eliminar todos los archivos? - + Proceed with Deletion - + Restore Files to Server - + Restore Files from Server @@ -2935,22 +2858,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Configuraciones generales + About Acerca de - - - Legal notice - Aviso legal - - - - General Settings - Configuraciones generales - &Launch on System Startup @@ -2966,13 +2884,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Para la Bandeja del Sistema + + + Legal notice + Aviso legal + Use &Monochrome Icons Usar Íconos &Monocromáticos - + Show Chat Notifications @@ -2981,6 +2904,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Mostrar &notificaciones del servidor + + + Advanced + Avanzado + + + + Ask for confirmation before synchronizing new folders larger than + Pedir confirmación antes de sincronizar carpetas nuevas mayores a + Updates @@ -2991,43 +2924,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates Comprobar &actualizaciones automáticamente - - - &Channel - &Canal - - - - - stable - estable - - - - - beta - beta - - - - &Restart && Update - &Reinicia && Actualiza - - - - &Check for Update now - &Comprobar ahora las actualizaciones - - - - Advanced - Avanzado - - - - Ask for confirmation before synchronizing new folders larger than - Pedir confirmación antes de sincronizar carpetas nuevas mayores a - MB @@ -3035,12 +2931,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Canal + + + 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 - + Automatically disable synchronisation of folders that overcome limit Deshabilitar sincronización automáticamente para las carpetas que sobrepasen el límite @@ -3050,12 +2951,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Perdir confirmaci´pón antes de sincronizar almacenamientos externos - + Move removed files to trash Mover archivos eliminados a la papelera - + + &Check for Update now + &Comprobar ahora las actualizaciones + + + Show sync folders in &Explorer's navigation pane Mostrar las carpetas sincronizadas en el panel de navegación del &explorador @@ -3064,6 +2970,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter M&ostrar el reporteador de fallas + + + Ask for confirmation before synchronizing folders larger than + Pedir confirmación antes de sincronizar carpetas mayores a + Edit &Ignored Files @@ -3076,77 +2987,57 @@ Alternatively, you can restore all deleted files by downloading them from the se Crear archivo de depuración - + Info Información - - Ask for confirmation before synchronizing folders larger than - Pedir confirmación antes de sincronizar carpetas mayores a - - - + Desktop client x.x.x Cliente de escritorio x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Mostrar carpetas sincronizadas en el panel de navegación del &explorador + + + Update channel Canal de actualizaciones - - Show sync folders in &Explorer's Navigation Pane - Mostrar carpetas sincronizadas en el panel de navegación del &explorador + + &Restart && Update + &Reinicia && Actualiza - + &Automatically check for updates Comprobar &actualizaciones automáticamente - + Check Now Comprobar ahora - + Usage Documentation Documentación de uso - + Legal Notice Aviso legal - - - Use &monochrome icons - Usar íconos &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 chat notification dialogs. @@ -3160,6 +3051,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. No puede desactivar el inicio automático porque el inicio automático a nivel de sistema está habilitado. + + + + stable + estable + + + + + beta + beta + Change update channel? @@ -3175,25 +3078,17 @@ 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 forma de regresar a una versión anterior: Por lo tanto, volver del canal beta al canal estable generalmente no se puede hacer de inmediato, y significa esperar por una versión estable que sea más reciente que la versión beta instalada actualmente. - + daily diariamente - + enterprise empresarial - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - empresarial: contiene versiones estables para clientes. - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3202,21 +3097,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - El canal determina cuáles actualizaciones se ofrecen para instalar: -- estable: contiene versiones probadas consideradas confiables -- beta: contiene versiones con nuevas características que pueden no estar probadas minuciosamente -- diariamente: contiene versiones creadas diariamente sólo para pruebas y desarrollo %1 -Degradar versiones no es posible inmediatamente: cambiar de beta a estable significa esperar por una nueva versión estable. - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3224,12 +3105,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? ¿Cambiar el canal de actualizaciones? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4398,7 +4279,7 @@ Este es un modo nuevo y experimental. Si decide usarlo, por favor informe cualqu No se puede sincronizar debido a una hora de modificación inválida - + Could not upload file, because it is open in "%1". No se puede cargar el archivo, porque está abierto en "%1". @@ -4471,8 +4352,8 @@ Este es un modo nuevo y experimental. Si decide usarlo, por favor informe cualqu Error al actualizar los metadatos debido a una hora de modificación inválida - - + + The folder %1 cannot be made read-only: %2 La carpeta %1 no se puede hacer de sólo lectura: %2 @@ -4594,7 +4475,7 @@ Este es un modo nuevo y experimental. Si decide usarlo, por favor informe cualqu 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 @@ -4625,7 +4506,7 @@ Este es un modo nuevo y experimental. Si decide usarlo, por favor informe cualqu OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! ¡No se puede renombrar la carpeta %1 debido a un conflicto de nombre con un archivo o carpeta local! @@ -5001,6 +4882,21 @@ Este es un modo nuevo y experimental. Si decide usarlo, por favor informe cualqu OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5027,7 +4923,7 @@ Este es un modo nuevo y experimental. Si decide usarlo, por favor informe cualqu Entrega de archivos segura - + Could not find local folder for %1 No se pudo encontrar una carpeta local para %1 @@ -5166,16 +5062,16 @@ El servidor respondió con el error: %2 Copy public link Copiar enlace público - - - Encrypt - Cifrar - Copy secure filedrop link Copiar enlace seguro para entrega de archivos + + + Encrypt + Cifrar + Lock file @@ -5197,16 +5093,16 @@ El servidor respondió con el error: %2 remaining time before lock expires Expira en %1 minutosExpira en %1 minutosExpira en %1 minutos - - - Edit - Editar - Open in browser Abrir en el navegador + + + Edit + Editar + Resolve conflict … @@ -5662,7 +5558,7 @@ El servidor respondió con el error: %2 <p>%1 - Cliente de escritorio</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, haga clic <a href='%2'>aquí</a>.</p> @@ -5673,7 +5569,7 @@ El servidor respondió con el error: %2 <p><small>Usando el complemento para 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> @@ -6067,12 +5963,12 @@ El servidor respondió con el error: %2 El servidor de la cuenta %1 ejecuta una versión no soportada %2. Usar este cliente con versiones del servidor no soportadas no ha sido probado y puede ser peligroso. Proceda bajo su propio riesgo. - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6148,23 +6044,23 @@ El servidor respondió con el error: %2 No se han configurado carpetas de sincronización - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. macOS VFS para %1: Sincronización en progreso. - + macOS VFS for %1: Last sync was successful. macOS VFS para %1: La última sincronización fue exitosa. - + macOS VFS for %1: A problem was encountered. macOS VFS para %1: Ocurrió un problema. @@ -6328,12 +6224,12 @@ El servidor respondió con el error: %2 Nueva carpeta - + Failed to create debug archive No se pudo crear el archivo de depuración - + Could not create debug archive in selected location! ¡No se pudo crear el archivo de depuración en la ubicación seleccionada! @@ -6514,7 +6410,7 @@ El servidor respondió con el error: %2 Soltar archivo (sólo carga) - + Allow resharing Permitir volver a compartir @@ -6571,6 +6467,16 @@ El servidor respondió con el error: %2 Share password Contraseña del recurso compartido + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6634,54 +6540,6 @@ El servidor respondió con el error: %2 Enviar respuesta al mensaje de chat - - TrayFoldersMenuButton - - - Open local or group folders - Abrir carpetas locales o 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 carpetas de grupo de usuarios y local - - TrayWindowHeader @@ -6966,7 +6824,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>Construido de la revisión Git <a href="%1">%2</a> en %3, %4 usando Qt %5, %6</small></p> @@ -7371,6 +7229,54 @@ El servidor respondió con el error: %2 Copiar enlace + + TrayFoldersMenuButton + + + Open local or group folders + Abrir carpetas locales o 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 carpetas de grupo de usuarios y local + + Window diff --git a/translations/client_es_SV.ts b/translations/client_es_SV.ts index 9c50508ec84a7..c7703993179e4 100644 --- a/translations/client_es_SV.ts +++ b/translations/client_es_SV.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1254,34 +1177,34 @@ This action will abort any currently running synchronization. - + %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. @@ -1744,13 +1667,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2250,16 +2173,11 @@ This can be an issue with your OpenSSL libraries. Por favor ve a las configuraciones para seleccionarlo si deseas descargarlo. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2268,6 +2186,11 @@ If you decide to restore the files, they will be re-synced with the server if yo If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + + Keep syncing + + 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. @@ -2275,16 +2198,16 @@ 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. - - - Stop syncing - - Remove All Files? ¿Eliminar Todos los Archivos? + + + Stop syncing + + Remove all files @@ -2296,12 +2219,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Mantener archivos - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2325,41 +2248,41 @@ This means that the synchronization client might not upload local changes immedi - + 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 @@ -2911,22 +2834,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Configuraciones generales + About Acerca de - - - Legal notice - - - - - General Settings - Configuraciones generales - &Launch on System Startup @@ -2942,13 +2860,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Para la Bandeja del Sistema + + + Legal notice + + Use &Monochrome Icons Usar Íconos &Monocromáticos - + Show Chat Notifications @@ -2958,50 +2881,23 @@ Alternatively, you can restore all deleted files by downloading them from the se - - Updates - Actualizaciones - - - - &Automatically check for Updates - - - - - &Channel - - - - - - stable - - - - - - beta - - - - - &Restart && Update - &Reinicia && Actualiza + + Advanced + Avanzado - - &Check for Update now + + Ask for confirmation before synchronizing new folders larger than - - Advanced - Avanzado + + Updates + Actualizaciones - - Ask for confirmation before synchronizing new folders larger than + + &Automatically check for Updates @@ -3011,12 +2907,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3026,12 +2927,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Perdir confirmaci´pón antes de sincronizar almacenamientos externos - + Move removed files to trash - + + &Check for Update now + + + + Show sync folders in &Explorer's navigation pane @@ -3040,6 +2946,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter M&ostrar el reporteador de fallas + + + Ask for confirmation before synchronizing folders larger than + Pedir confirmación antes de sincronizar carpetas mayores a + Edit &Ignored Files @@ -3052,68 +2963,48 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Info - - Ask for confirmation before synchronizing folders larger than - Pedir confirmación antes de sincronizar carpetas mayores a + + Desktop client x.x.x + - - Desktop client x.x.x + + Show sync folders in &Explorer's Navigation Pane - + Update channel - - Show sync folders in &Explorer's Navigation Pane - + + &Restart && Update + &Reinicia && Actualiza - + &Automatically check for updates - + Check Now - + Usage Documentation - - - Legal Notice - - - Use &monochrome icons - - - - - &Launch on system startup - - - - - Show server &notifications - - - - - Show call notifications + Legal Notice @@ -3122,7 +3013,7 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Show chat notification dialogs. @@ -3136,6 +3027,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. + + + + stable + + + + + + beta + + Change update channel? @@ -3149,24 +3052,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3175,17 +3071,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3193,12 +3079,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4354,7 +4240,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4427,8 +4313,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4550,7 +4436,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + The folder %1 cannot be made read-only: %2 @@ -4581,7 +4467,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4957,6 +4843,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -4983,7 +4884,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5121,13 +5022,13 @@ Server replied with error: %2 - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5152,13 +5053,13 @@ Server replied with error: %2 - - Edit + + Open in browser - - Open in browser + + Edit @@ -5616,7 +5517,7 @@ Server replied with error: %2 - + <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) @@ -5627,7 +5528,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6021,12 +5922,12 @@ Server replied with error: %2 - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6102,23 +6003,23 @@ Server replied with error: %2 No se han configurado carpetas de sincronización - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6282,12 +6183,12 @@ Server replied with error: %2 - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6468,7 +6369,7 @@ Server replied with error: %2 - + Allow resharing @@ -6525,6 +6426,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6588,54 +6499,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6920,7 +6783,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7325,6 +7188,54 @@ Server replied with error: %2 + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_eu.ts b/translations/client_eu.ts index 65f4bf5204156..d3dedd5ddc938 100644 --- a/translations/client_eu.ts +++ b/translations/client_eu.ts @@ -342,11 +342,6 @@ Signal file provider domain Signal fitxategi hornitzailearen domeinua - - - Create debug archive - Sortu arazketa fitxategia - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog Mahaigaineko Nextcloud-en elkarrizketa nagusia - - Current account - Uneko kontua - - - - - Resume sync for all - Berrekin sinkronizazioa guztientzat - - - - - Pause sync for all - Pausatu sinkronizazioa guztientzat - - - - Add account - Gehitu kontua - - - - Add new account - Gehitu kontu berria - - - + Unified search results list Bilaketa-emaitzen zerrenda bateratua - - Settings - Ezarpenak - - - - Exit - Irten - - - - Current account avatar - Uneko kontuaren avatarra - - - + New activities Jarduera berriak - - - Current account status is online - Uneko kontuaren egoera: sarean dago - - - - Current account status is do not disturb - Uneko kontuaren egoera: ez molestatu - - - - Account switcher and settings menu - Kontu aldatzailea eta ezarpenen menua - - - - Open local or group folders - Ireki tokiko edo taldeko karpetak - - - - More apps - Aplikazio gehiago - - - - Open %1 in browser - Ireki %1 nabigatzailean - OCC::AbstractNetworkJob @@ -1264,34 +1187,34 @@ Ekintza honek unean uneko sinkronizazioa bertan behera utziko du. Jarraitu - + %1 accounts number of accounts imported %1 kontu - + 1 account Kontu 1 - + %1 folders number of folders imported %1 karpeta - + 1 folder Karpeta 1 - + Legacy import Zaharkitutako inportazioa - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1757,13 +1680,13 @@ Ekintza honek unean uneko sinkronizazioa bertan behera utziko du. Zerbitzariko errorea: PROPFINDaren erantzunak ez du XML formaturik! - - + + Encrypted metadata setup error! Zifratutako metadatuen konfigurazio errorea! - + Encrypted metadata setup error: initial signature from server is empty. Enkriptatutako metadatuen konfigurazio-errorea: zerbitzariaren hasierako sinadura hutsik dago. @@ -2264,17 +2187,12 @@ Baliteke OpenSSL liburutegiekin arazoa egotea. Jo ezarpenetara aukeratzeko deskargatu nahi ote duzun. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 Karpeta batek ezarritako %1MB-ko karpeta-tamainaren muga gainditu du: %2. %3 - - - Keep syncing - Jarraitu sinkronizatzen - All files in the sync folder "%1" folder were deleted on the server. @@ -2286,6 +2204,11 @@ Ezabatze hauek zure sinkronizazio karpeta lokalarekin sinkronizatuko dira, eta f Fitxategiak leheneratzea erabakitzen baduzu, berriro sinkronizatuko dira zerbitzariarekin, horretarako eskubidea baduzu. Fitxategiak ezabatzea erabakitzen baduzu, ezingo dituzu erabilgarri izan, jabea ez bazara behintzat. + + + Keep syncing + Jarraitu sinkronizatzen + 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. @@ -2295,16 +2218,16 @@ If this was an accident and you decide to keep your files, they will be re-synce Ziur zaude ekintza horiek zerbitzariarekin sinkronizatu nahi dituzula? Istripua izan bada eta zure fitxategiak mantentzea erabakitzen baduzu, zerbitzaritik berriro sinkronizatuko dira. - - - Stop syncing - Utzi sinkronizatzen - Remove All Files? Ezabatu fitxategi guztiak? + + + Stop syncing + Utzi sinkronizatzen + Remove all files @@ -2316,12 +2239,12 @@ Istripua izan bada eta zure fitxategiak mantentzea erabakitzen baduzu, zerbitzar Mantendu fitxategiak - + The folder %1 has surpassed the set folder size limit of %2MB. % 1 karpetak ezarritako % 2MB karpeta-tamainaren muga gainditu du. - + Would you like to stop syncing this folder? Karpeta hau sinkronizatzeari utzi nahi al diozu? @@ -2349,12 +2272,12 @@ Honek esan nahi du sinkronizazio bezeroak agian ez duela berehalakoan igoko toki %1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" Fitxategi birtuala deskargatzeak huts egin du "%1" kodea, "%2" egoera eta "%3" errore mezuarekin - + 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. @@ -2363,7 +2286,7 @@ Mesedez, berretsi ezabaketa hauekin jarraitu nahi duzun. Bestela, ezabatutako fitxategi guztiak leheneratu ditzakezu '%1' karpetatik zerbitzarira kargatuz. - + 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. @@ -2372,22 +2295,22 @@ Mesedez, berretsi ezabaketa hauekin jarraitu nahi duzun. Bestela, ezabatutako fitxategi guztiak leheneratu ditzakezu zerbitzaritik deskargatuta. - + Remove all files? Fitxategi guztiak ezabatu? - + Proceed with Deletion Ekin ezabaketari - + Restore Files to Server Leheneratu fitxategiak zerbitzarian - + Restore Files from Server Leheneratu fitxategiak zerbitzaritik @@ -2939,22 +2862,17 @@ Bestela, ezabatutako fitxategi guztiak leheneratu ditzakezu zerbitzaritik deskar OCC::GeneralSettings + + + General Settings + Ezarpen orokorrak + About Honi buruz - - - Legal notice - Legezko oharra - - - - General Settings - Ezarpen orokorrak - &Launch on System Startup @@ -2970,13 +2888,18 @@ Bestela, ezabatutako fitxategi guztiak leheneratu ditzakezu zerbitzaritik deskar For System Tray Sistemaren erretilurako + + + Legal notice + Legezko oharra + Use &Monochrome Icons Erabili &kolore bakarreko ikonoak - + Show Chat Notifications @@ -2985,6 +2908,16 @@ Bestela, ezabatutako fitxategi guztiak leheneratu ditzakezu zerbitzaritik deskar Show Server &Notifications Erakutsi zerbitzariaren &jakinarazpenak + + + Advanced + Aurreratua + + + + Ask for confirmation before synchronizing new folders larger than + Eskatu berrespena ondoko tamaina baino handiagoak diren karpeta berriak sinkronizatu aurretik + Updates @@ -2995,43 +2928,6 @@ Bestela, ezabatutako fitxategi guztiak leheneratu ditzakezu zerbitzaritik deskar &Automatically check for Updates A&utomatikoki eguneraketak bilatu - - - &Channel - &Kanala - - - - - stable - egonkorra - - - - - beta - beta - - - - &Restart && Update - Be&rrabiarazi eta Eguneratu - - - - &Check for Update now - &Eguneraketa oraintxe bilatu - - - - Advanced - Aurreratua - - - - Ask for confirmation before synchronizing new folders larger than - Eskatu berrespena ondoko tamaina baino handiagoak diren karpeta berriak sinkronizatu aurretik - MB @@ -3039,12 +2935,17 @@ Bestela, ezabatutako fitxategi guztiak leheneratu ditzakezu zerbitzaritik deskar MB - + + &Channel + &Kanala + + + Notify when synchronised folders grow larger than specified limit Jakinarazi sinkronizatutako karpetak zehaztutako muga baino handiagoak direnean - + Automatically disable synchronisation of folders that overcome limit Desgaitu automatikoki muga gainditzen duten karpeten sinkronizazioa @@ -3054,12 +2955,17 @@ Bestela, ezabatutako fitxategi guztiak leheneratu ditzakezu zerbitzaritik deskar Eskatu baimena kanpoko biltegiak sinkronizatu baino lehen - + Move removed files to trash Eraman kendutako fitxategiak zaborrontzira - + + &Check for Update now + &Eguneraketa oraintxe bilatu + + + Show sync folders in &Explorer's navigation pane Erakutsi sinkronizatutako karpetak arakatzailearen &nabigazio panelean @@ -3068,6 +2974,11 @@ Bestela, ezabatutako fitxategi guztiak leheneratu ditzakezu zerbitzaritik deskar S&how crash reporter Erakutsi &kraskaduraren txostena + + + Ask for confirmation before synchronizing folders larger than + Eskatu baimena tamaina hau baino handiagoak diren karpetak sinkronizatu baino lehen + Edit &Ignored Files @@ -3080,77 +2991,57 @@ Bestela, ezabatutako fitxategi guztiak leheneratu ditzakezu zerbitzaritik deskar Sortu arazketa fitxategia - + Info Informazioa - - Ask for confirmation before synchronizing folders larger than - Eskatu baimena tamaina hau baino handiagoak diren karpetak sinkronizatu baino lehen - - - + Desktop client x.x.x Mahaigaineko x.x.x bezeroa - + + Show sync folders in &Explorer's Navigation Pane + Erakutsi sinkronizatutako karpetak arakatzailearen &nabigazio panelean + + + Update channel Eguneratze-kanala - - Show sync folders in &Explorer's Navigation Pane - Erakutsi sinkronizatutako karpetak arakatzailearen &nabigazio panelean + + &Restart && Update + Be&rrabiarazi eta Eguneratu - + &Automatically check for updates &Automatikoki eguneraketak bilatu - + Check Now Begiratu orain - + Usage Documentation Erabilera dokumentazioa - + Legal Notice Lege oharra - - - Use &monochrome icons - Erabili ikono &monokromoak - - - - &Launch on system startup - &Abiarazi sistema pizterakoan - - - - Show server &notifications - Erakutsi zerbitzariko &jakinarazpenak - - - - Show call notifications - Erakutsi jakinarazpen guztiak - Server notifications that require attention. Arreta eskatzen duten zerbitzariaren jakinarazpenak. - + Show chat notification dialogs. @@ -3164,6 +3055,18 @@ Bestela, ezabatutako fitxategi guztiak leheneratu ditzakezu zerbitzaritik deskar You cannot disable autostart because system-wide autostart is enabled. Ezin da abiarazte automatikoa desgaitu sistema osoaren abiarazte automatikoa gaituta dagoelako. + + + + stable + egonkorra + + + + + beta + beta + Change update channel? @@ -3179,25 +3082,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Kontuan izan honek bertsio berriak nondik hartu bakarrik hautatzen duela, ezin dela bertsio zaharretara itzuli: beraz, beta kanaletik batzuetan ezin da automatikoki kanal egonkorrera itzuli, jarrita dagoena baino berriagoa den bertsio egonkor bati itxaron behar zaio. - + daily egunero - + enterprise enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - enterprise: bezeroentzako bertsio egonkorrak dauzka. - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3209,22 +3104,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m Bertsioak ezin dira berehala aldatu: betatik egonkorra aldatzeak bertsio egonkor berriaren zain egotea suposatzen du. - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Kanalak zehazten du zein eguneraketa eskainiko instalatzeko: -- egonkorra: fidagarritzat jotzen diren bertsio probatuak ditu -- beta: beharbada ondo probatu ez diren funtzio berriak dituzten bertsioak ditu -- egunero: egunero probatzeko eta garatzeko soilik sortutako bertsioak ditu -%1 -Bertsioak ezin dira berehala aldatu: betatik egonkorra aldatzeak bertsio egonkor berriaren zain egotea esan nahi du. - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3234,12 +3114,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp Bertsioak ezin dira berehala jaitsi: egonkorretik enpresara aldatzeak enpresa bertsio berriaren zain egotea dakar. - + Changing update channel? Eguneratze kanala aldatzen? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4409,7 +4289,7 @@ Modu hau berria eta experimentala da. Erabiltzea erabakitzen baduzu, agertzen di Ezin da sinkronizatu aldaketa-ordu baliogabea delako - + Could not upload file, because it is open in "%1". Ezin izan da fitxategia kargatu, "%1"(e)n irekita dagoelako. @@ -4482,8 +4362,8 @@ Modu hau berria eta experimentala da. Erabiltzea erabakitzen baduzu, agertzen di Errorea metadatuak eguneratzen aldaketa-data baliogabeagatik - - + + The folder %1 cannot be made read-only: %2 %1 karpeta ezin da irakurtzeko soilik bihurtu: %2 @@ -4605,7 +4485,7 @@ Modu hau berria eta experimentala da. Erabiltzea erabakitzen baduzu, agertzen di Ezin da %1 karpeta sortu - + The folder %1 cannot be made read-only: %2 %1 karpeta ezin da irakurtzeko soilik bihurtu: %2 @@ -4636,7 +4516,7 @@ Modu hau berria eta experimentala da. Erabiltzea erabakitzen baduzu, agertzen di OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! Ezin da % 1 karpeta berrizendatu fitxategi lokalaren edo karpetaren izen-talka dela eta! @@ -5012,6 +4892,21 @@ Modu hau berria eta experimentala da. Erabiltzea erabakitzen baduzu, agertzen di OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5038,7 +4933,7 @@ Modu hau berria eta experimentala da. Erabiltzea erabakitzen baduzu, agertzen di Fitxategi-jartze segurua - + Could not find local folder for %1 Ezin da %1 karpeta lokala aurkitu @@ -5177,16 +5072,16 @@ Zerbitzariak errorearekin erantzun du: %2 Copy public link Kopiatu esteka publikoa - - - Encrypt - Zifratu - Copy secure filedrop link Kopiatu fitxategiak askatzeko esteka segurua + + + Encrypt + Zifratu + Lock file @@ -5208,16 +5103,16 @@ Zerbitzariak errorearekin erantzun du: %2 remaining time before lock expires Minutu %1ean iraungiko da%1 minututan iraungiko da - - - Edit - Editatu - Open in browser Ireki nabigatzailean + + + Edit + Editatu + Resolve conflict … @@ -5673,7 +5568,7 @@ Zerbitzariak errorearekin erantzun du: %2 <p>Mahaigaineko %1 bezeroa</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 Mahaigaineko bezeroa</p><p>%1 bertsioa. Infomazio gehiago jasotzeko egin klik <a href='%2'>hemen</a>.</p> @@ -5684,7 +5579,7 @@ Zerbitzariak errorearekin erantzun du: %2 <p><small>Fitxategi birtualen plugina erabiltzen: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 mahaigaineko bezeroa %2</p> @@ -6078,12 +5973,12 @@ Zerbitzariak errorearekin erantzun du: %2 %1 kontuko zerbitzariak onartzen ez den %2 bertsioa darabil. Onartzen ez diren zerbitzari bertsioekin bezero hau erabiltzea probatu gabe dago eta potentzialki arriskutsua da. Zure ardurapean jarraitu. - + Terms of service Zerbitzuaren baldintzak - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. Zure %1 kontuak zure zerbitzariaren zerbitzuaren baldintzak onartzea eskatzen du. %2-ra birbideratuko zaituzte irakurri duzula eta horrekin ados zaudela aitortzeko. @@ -6159,23 +6054,23 @@ Zerbitzariak errorearekin erantzun du: %2 Ez dira ezarri sinkronizatzeko karpetak - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) %1: %2 - + macOS VFS for %1: Sync is running. %1-rako macOS VFS: Sinkronizazioa abian da. - + macOS VFS for %1: Last sync was successful. macOS VFS % 1erako: Azken sinkronizazioa behar bezala burutu da. - + macOS VFS for %1: A problem was encountered. macOS VFS % 1erako: arazo bat aurkitu da. @@ -6339,12 +6234,12 @@ Zerbitzariak errorearekin erantzun du: %2 Karpeta berria - + Failed to create debug archive Ezin izan da arazketa-artxiboa sortu - + Could not create debug archive in selected location! Ezin izan da arazketa-artxiboa sortu hautatutako kokapenean! @@ -6525,7 +6420,7 @@ Zerbitzariak errorearekin erantzun du: %2 Fitxategia jaregitea (igotzeko soilik) - + Allow resharing Baimendu birpartekatzea @@ -6582,6 +6477,16 @@ Zerbitzariak errorearekin erantzun du: %2 Share password Partekatu pasahitza + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6645,54 +6550,6 @@ Zerbitzariak errorearekin erantzun du: %2 Bidali erantzuna txat-mezuari - - TrayFoldersMenuButton - - - Open local or group folders - Ireki tokiko edo taldeko karpetak - - - - Open local folder - Ireki karpeta lokala - - - - Connected - Konektatuta - - - - Disconnected - Deskonektatuta - - - - Group folder button - Taldearen karpetaren botoia - - - - Open local folder "%1" - Ireki "% 1" karpeta lokala - - - - Open group folder "%1" - Ireki taldearen karpeta "% 1" - - - - Open %1 in file explorer - Ireki %1 fitxategi arakatzailean - - - - User group and local folders menu - Erabiltzaileren taldearen eta tokiko karpeten menua - - TrayWindowHeader @@ -6977,7 +6834,7 @@ Zerbitzariak errorearekin erantzun du: %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><a href="%1">%2</a> Git berrikuspenetik eraikia %3, %4 gainean Qt %5, %6 erabiliz</small></p> @@ -7382,6 +7239,54 @@ Zerbitzariak errorearekin erantzun du: %2 Kopiatu esteka + + TrayFoldersMenuButton + + + Open local or group folders + Ireki tokiko edo taldeko karpetak + + + + Open local folder + Ireki karpeta lokala + + + + Connected + Konektatuta + + + + Disconnected + Deskonektatuta + + + + Group folder button + Taldearen karpetaren botoia + + + + Open local folder "%1" + Ireki "% 1" karpeta lokala + + + + Open group folder "%1" + Ireki taldearen karpeta "% 1" + + + + Open %1 in file explorer + Ireki %1 fitxategi arakatzailean + + + + User group and local folders menu + Erabiltzaileren taldearen eta tokiko karpeten menua + + Window diff --git a/translations/client_fa.ts b/translations/client_fa.ts index 292d8236ef10f..6df693d7ae183 100644 --- a/translations/client_fa.ts +++ b/translations/client_fa.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1261,34 +1184,34 @@ This action will abort any currently running synchronization. Continue - + %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. @@ -1753,13 +1676,13 @@ This action will abort any currently running synchronization. Server error: PROPFIND reply is not XML formatted! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2260,17 +2183,12 @@ This can be an issue with your OpenSSL libraries. اگر می خواهید این را دانلود کنید لطفا به تنظیمات بروید تا آن را انتخاب کنید. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - Keep syncing - All files in the sync folder "%1" folder were deleted on the server. @@ -2282,6 +2200,11 @@ These deletes will be synchronized to your local sync folder, making such files 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. + + + Keep syncing + Keep syncing + 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. @@ -2291,16 +2214,16 @@ If this was an accident and you decide to keep your files, they will be re-synce 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. - - - Stop syncing - Stop syncing - Remove All Files? حذف تمام فایل ها؟ + + + Stop syncing + Stop syncing + Remove all files @@ -2312,12 +2235,12 @@ If this was an accident and you decide to keep your files, they will be re-synce نگه داشتن فایل ها - + The folder %1 has surpassed the set folder size limit of %2MB. The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? Would you like to stop syncing this folder? @@ -2345,41 +2268,41 @@ This means that the synchronization client might not upload local changes immedi %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 @@ -2931,22 +2854,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + تنظیمات عمومی + About درباره - - - Legal notice - Legal notice - - - - General Settings - تنظیمات عمومی - &Launch on System Startup @@ -2962,13 +2880,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray برای آزمایش سیستم + + + Legal notice + Legal notice + Use &Monochrome Icons استفاده از آیکون های تک رنگ - + Show Chat Notifications @@ -2977,6 +2900,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications نمایش سرور و اعلانات + + + Advanced + پیشرفته + + + + Ask for confirmation before synchronizing new folders larger than + Ask for confirmation before synchronizing new folders larger than + Updates @@ -2987,43 +2920,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Automatically check for Updates - - - &Channel - &Channel - - - - - stable - stable - - - - - beta - beta - - - - &Restart && Update - راه اندازی مجدد و به روز رسانی - - - - &Check for Update now - &Check for Update now - - - - Advanced - پیشرفته - - - - Ask for confirmation before synchronizing new folders larger than - Ask for confirmation before synchronizing new folders larger than - MB @@ -3031,12 +2927,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Channel + + + Notify when synchronised folders grow larger than specified 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 @@ -3046,12 +2947,17 @@ Alternatively, you can restore all deleted files by downloading them from the se درخواست تایید قبل از همگام سازی مخازن خارجی - + Move removed files to trash Move removed files to trash - + + &Check for Update now + &Check for Update now + + + Show sync folders in &Explorer's navigation pane @@ -3060,6 +2966,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter نمایش گزارشگر برخورد + + + Ask for confirmation before synchronizing folders larger than + درخواست تایید قبل از همگام سازی پوشه های بزرگتر + Edit &Ignored Files @@ -3072,68 +2983,48 @@ Alternatively, you can restore all deleted files by downloading them from the se Create Debug Archive - + Info - - Ask for confirmation before synchronizing folders larger than - درخواست تایید قبل از همگام سازی پوشه های بزرگتر - - - + Desktop client x.x.x - - - Update channel - - Show sync folders in &Explorer's Navigation Pane Show sync folders in &Explorer's Navigation Pane - - &Automatically check for updates - - - - - Check Now - - - - - Usage Documentation + + Update channel - - Legal Notice - + + &Restart && Update + راه اندازی مجدد و به روز رسانی - - Use &monochrome icons + + &Automatically check for updates - - &Launch on system startup + + Check Now - - Show server &notifications + + Usage Documentation - - Show call notifications + + Legal Notice @@ -3142,7 +3033,7 @@ Alternatively, you can restore all deleted files by downloading them from the se نمایش اعلانات سرور نیازمند تائید می باشد - + Show chat notification dialogs. @@ -3156,6 +3047,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. You cannot disable autostart because system-wide autostart is enabled. + + + + stable + stable + + + + + beta + beta + Change update channel? @@ -3171,24 +3074,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar 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. - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3197,17 +3093,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3215,12 +3101,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4387,7 +4273,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Cannot sync due to invalid modification time - + Could not upload file, because it is open in "%1". @@ -4460,8 +4346,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss Error updating metadata due to invalid modification time - - + + The folder %1 cannot be made read-only: %2 @@ -4583,7 +4469,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Could not create folder %1 - + The folder %1 cannot be made read-only: %2 @@ -4614,7 +4500,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4990,6 +4876,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5016,7 +4917,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Secure file drop - + Could not find local folder for %1 @@ -5155,16 +5056,16 @@ Server replied with error: %2 Copy public link Copy public link - - - Encrypt - Encrypt - Copy secure filedrop link Copy secure filedrop link + + + Encrypt + Encrypt + Lock file @@ -5186,16 +5087,16 @@ Server replied with error: %2 remaining time before lock expires Expires in %1 minutesExpires in %1 minutes - - - Edit - Edit - Open in browser بازکردن در مرورگر + + + Edit + Edit + Resolve conflict … @@ -5650,7 +5551,7 @@ Server replied with error: %2 <p>%1 Desktop Client</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) @@ -5661,7 +5562,7 @@ Server replied with error: %2 <p><small>Using virtual files plugin: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6055,12 +5956,12 @@ Server replied with error: %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. - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6136,23 +6037,23 @@ Server replied with error: %2 هیچ پوشه‌ همگام سازی پیکربندی شده - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6316,12 +6217,12 @@ Server replied with error: %2 New folder - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6502,7 +6403,7 @@ Server replied with error: %2 File drop (upload only) - + Allow resharing Allow resharing @@ -6559,6 +6460,16 @@ Server replied with error: %2 Share password گذرواژهٔ هم‌رسانی + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6622,54 +6533,6 @@ Server replied with error: %2 Send reply to chat message - - TrayFoldersMenuButton - - - Open local or group folders - Open local or group folders - - - - Open local folder - Open local folder - - - - Connected - Connected - - - - Disconnected - Disconnected - - - - Group folder button - Group folder button - - - - Open local folder "%1" - Open local folder "%1" - - - - Open group folder "%1" - Open group folder "%1" - - - - Open %1 in file explorer - Open %1 in file explorer - - - - User group and local folders menu - User group and local folders menu - - TrayWindowHeader @@ -6954,7 +6817,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7359,6 +7222,54 @@ Server replied with error: %2 Copy link + + TrayFoldersMenuButton + + + Open local or group folders + Open local or group folders + + + + Open local folder + Open local folder + + + + Connected + Connected + + + + Disconnected + Disconnected + + + + Group folder button + Group folder button + + + + Open local folder "%1" + Open local folder "%1" + + + + Open group folder "%1" + Open group folder "%1" + + + + Open %1 in file explorer + Open %1 in file explorer + + + + User group and local folders menu + User group and local folders menu + + Window diff --git a/translations/client_fi.ts b/translations/client_fi.ts index 75cfd97d2432c..a955bbd88a2e9 100644 --- a/translations/client_fi.ts +++ b/translations/client_fi.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1258,34 +1181,34 @@ Tämä toiminto peruu kaikki tämänhetkiset synkronoinnit. Jatka - + %1 accounts number of accounts imported %1 tiliä - + 1 account 1 tili - + %1 folders number of folders imported %1 kansiota - + 1 folder 1 kansio - + Legacy import - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1750,13 +1673,13 @@ Tämä toiminto peruu kaikki tämänhetkiset synkronoinnit. Palvelinvirhe: PROPFIND-vastaus ei ole XML-formaatissa! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2257,16 +2180,11 @@ OpenSSL-kirjastosi kanssa saattaa olla ongelma. Jos haluat ladata sen, valitse kansio asetuksista. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2275,6 +2193,11 @@ If you decide to restore the files, they will be re-synced with the server if yo If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + + Keep syncing + + 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. @@ -2282,16 +2205,16 @@ 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. - - - Stop syncing - - Remove All Files? Poistetaanko kaikki tiedostot? + + + Stop syncing + + Remove all files @@ -2303,12 +2226,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Pidä tiedostot - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2332,41 +2255,41 @@ This means that the synchronization client might not upload local changes immedi - + 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 @@ -2918,22 +2841,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Yleisasetukset + About Tietoja - - - Legal notice - Lainopillinen huomautus - - - - General Settings - Yleisasetukset - &Launch on System Startup @@ -2949,13 +2867,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Ilmoitusalueelle + + + Legal notice + Lainopillinen huomautus + Use &Monochrome Icons Käytä &mustavalkoisia kuvakkeita - + Show Chat Notifications @@ -2964,6 +2887,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Näytä &palvelinilmoitukset + + + Advanced + Lisäasetukset + + + + Ask for confirmation before synchronizing new folders larger than + + Updates @@ -2974,43 +2907,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates Tarkista päivitykset &automaattisesti - - - &Channel - &Kanava - - - - - stable - vakaa - - - - - beta - beta - - - - &Restart && Update - &Käynnistä uudelleen && päivitä - - - - &Check for Update now - &Tarkista päivitykset nyt - - - - Advanced - Lisäasetukset - - - - Ask for confirmation before synchronizing new folders larger than - - MB @@ -3018,12 +2914,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Mt - + + &Channel + &Kanava + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3033,12 +2934,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Kysy vahvistus ennen kuin erilliset tallennustilat synkronoidaan - + Move removed files to trash - + + &Check for Update now + &Tarkista päivitykset nyt + + + Show sync folders in &Explorer's navigation pane @@ -3047,6 +2953,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter N&äytä kaatumisraportoija + + + Ask for confirmation before synchronizing folders larger than + Kysy vahvistus ennen kuin synkronoidaan kansiot suurempia kuin + Edit &Ignored Files @@ -3059,68 +2970,48 @@ Alternatively, you can restore all deleted files by downloading them from the se Koosta vianetsintätiedot - + Info - - Ask for confirmation before synchronizing folders larger than - Kysy vahvistus ennen kuin synkronoidaan kansiot suurempia kuin + + Desktop client x.x.x + - - Desktop client x.x.x + + Show sync folders in &Explorer's Navigation Pane - + Update channel Päivityskanava - - Show sync folders in &Explorer's Navigation Pane - + + &Restart && Update + &Käynnistä uudelleen && päivitä - + &Automatically check for updates Tarkista päivitykset &automaattisesti - + Check Now Tarkista nyt - + Usage Documentation - - - Legal Notice - - - Use &monochrome icons - Käytä &mustavalkoisia kuvakkeita - - - - &Launch on system startup - &Käynnistä järjestelmän käynnistyessä - - - - Show server &notifications - - - - - Show call notifications + Legal Notice @@ -3129,7 +3020,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Palvelinilmoitukset jotka vaativat huomiota. - + Show chat notification dialogs. @@ -3143,6 +3034,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. + + + + stable + vakaa + + + + + beta + beta + Change update channel? @@ -3156,24 +3059,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3182,17 +3078,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3200,12 +3086,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4365,7 +4251,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Ei voida synkronoida virheellisen muokkausajan vuoksi - + Could not upload file, because it is open in "%1". @@ -4438,8 +4324,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4561,7 +4447,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Ei voitu luoda kansiota %1 - + The folder %1 cannot be made read-only: %2 @@ -4592,7 +4478,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4968,6 +4854,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -4994,7 +4895,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5131,16 +5032,16 @@ Server replied with error: %2 Copy public link Kopioi julkinen linkki - - - Encrypt - Salaa - Copy secure filedrop link + + + Encrypt + Salaa + Lock file @@ -5162,16 +5063,16 @@ Server replied with error: %2 remaining time before lock expires Vanhenee %1 minuutin kuluttuaVanhenee %1 minuutin kuluttua - - - Edit - Muokkaa - Open in browser Avaa selaimessa + + + Edit + Muokkaa + Resolve conflict … @@ -5627,7 +5528,7 @@ Server replied with error: %2 <p>%1-työpöytäsovellus</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) @@ -5638,7 +5539,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6032,12 +5933,12 @@ Server replied with error: %2 - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6113,23 +6014,23 @@ Server replied with error: %2 Synkronointikansioita ei ole määritelty - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6293,12 +6194,12 @@ Server replied with error: %2 Uusi kansio - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6479,7 +6380,7 @@ Server replied with error: %2 - + Allow resharing @@ -6536,6 +6437,16 @@ Server replied with error: %2 Share password Jaon salasana + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6599,54 +6510,6 @@ Server replied with error: %2 Lähetä vastaus keskusteluviestiin - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - Avaa paikallinen kansio - - - - Connected - Yhdistetty - - - - Disconnected - Yhteys katkaistu - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6931,7 +6794,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7336,6 +7199,54 @@ Server replied with error: %2 Kopioi linkki + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + Avaa paikallinen kansio + + + + Connected + Yhdistetty + + + + Disconnected + Yhteys katkaistu + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_fr.ts b/translations/client_fr.ts index b37073f6427e2..a5d950c05d06e 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -342,11 +342,6 @@ Signal file provider domain Fichier de signal domaine du fournisseur - - - Create debug archive - Créer une archive de débogage - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog Boîte de dialogue principale du bureau Nextcloud - - Current account - Compte courant - - - - - Resume sync for all - Reprendre la synchro pour tous - - - - - Pause sync for all - Suspendre toutes les synchros - - - - Add account - Ajouter un compte - - - - Add new account - Ajouter un nouveau compte - - - + Unified search results list Liste des résultats de la recherche unifiée - - Settings - Paramètres - - - - Exit - Quitter - - - - Current account avatar - Avatar du compte courant - - - + New activities Nouvelles activités - - - Current account status is online - Le statut du compte courant est en ligne - - - - Current account status is do not disturb - Le statut du compte courant 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 - - - - More apps - Plus d'applis - - - - Open %1 in browser - Ouvrir %1 dans le navigateur - OCC::AbstractNetworkJob @@ -1262,34 +1185,34 @@ Vous prenez vos propres risques. Continuer - + %1 accounts number of accounts imported %1 comptes - + 1 account 1 compte - + %1 folders number of folders imported %1 dossiers - + 1 folder 1 dossier - + Legacy import Importation héritée - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1755,13 +1678,13 @@ Vous prenez vos propres risques. Erreur du serveur : La réponse PROPFIND n'est pas au format XML ! - - + + Encrypted metadata setup error! Erreur lors de la configuration des métadonnées chiffrées ! - + Encrypted metadata setup error: initial signature from server is empty. Erreur de configuration des métadonnées chiffrées: la signature initiale du serveur est vide. @@ -2263,17 +2186,12 @@ Cela peut être un problème avec vos bibliothèques OpenSSL. 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. %3 Un dossier a dépassé la taille limite fixée de %1MB: %2. %3 - - - Keep syncing - Continuer la synchronisation - All files in the sync folder "%1" folder were deleted on the server. @@ -2285,6 +2203,11 @@ Ces suppressions seront synchronisées avec votre dossier local, ce qui rendra l 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. + + + Keep syncing + Continuer la synchronisation + 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. @@ -2294,16 +2217,16 @@ If this was an accident and you decide to keep your files, they will be re-synce Ê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 ? + + + Stop syncing + Arrêter la synchronisation + Remove all files @@ -2315,12 +2238,12 @@ S'il s'agissait d'un accident et que vous choisissiez de conserve 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. - + Would you like to stop syncing this folder? Voulez vous arrêter la synchronisation de ce dossier ? @@ -2348,12 +2271,12 @@ Cela signifie que le client de synchronisation ne va pas téléverser immédiate %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 » - + 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. @@ -2362,7 +2285,7 @@ Veuillez confirmer si vous souhaitez procéder à ces suppressions. Vous pouvez également restaurer tous les fichiers supprimés en les téléversant 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. @@ -2371,22 +2294,22 @@ 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. - + Remove all files? Supprimer tous les fichiers ? - + Proceed with Deletion Procéder à la suppression - + Restore Files to Server Restaurer les fichiers sur le serveur - + Restore Files from Server Restaurer des fichiers à partir du serveur @@ -2938,22 +2861,17 @@ Vous pouvez également restaurer tous les fichiers supprimés en les télécharg OCC::GeneralSettings + + + General Settings + Paramètres généraux + About À propos - - - Legal notice - Notice légale - - - - General Settings - Paramètres généraux - &Launch on System Startup @@ -2969,13 +2887,18 @@ Vous pouvez également restaurer tous les fichiers supprimés en les télécharg For System Tray Pour la zone de notification système + + + Legal notice + Notice légale + Use &Monochrome Icons Utiliser les icônes &monochromes - + Show Chat Notifications @@ -2984,6 +2907,16 @@ Vous pouvez également restaurer tous les fichiers supprimés en les télécharg Show Server &Notifications Afficher les &notifications serveur + + + Advanced + Avancés + + + + Ask for confirmation before synchronizing new folders larger than + Demander confirmation avant de synchroniser les dossiers plus grands que + Updates @@ -2994,43 +2927,6 @@ Vous pouvez également restaurer tous les fichiers supprimés en les télécharg &Automatically check for Updates &Vérifier automatiquement les mises à jour - - - &Channel - Canal - - - - - stable - stable - - - - - beta - bêta - - - - &Restart && Update - Redémarrer et Mettre à jour - - - - &Check for Update now - &Vérifier la présence de mises à jour maintenant - - - - Advanced - Avancés - - - - Ask for confirmation before synchronizing new folders larger than - Demander confirmation avant de synchroniser les dossiers plus grands que - MB @@ -3038,12 +2934,17 @@ Vous pouvez également restaurer tous les fichiers supprimés en les télécharg Mo - + + &Channel + Canal + + + Notify when synchronised folders grow larger than specified limit Notifier lorsque les dossiers synchronisés dépassent la limite spécifiée - + Automatically disable synchronisation of folders that overcome limit Désactiver automatiquement la synchronisation des dossiers qui dépassent la limite fixée @@ -3053,12 +2954,17 @@ Vous pouvez également restaurer tous les fichiers supprimés en les télécharg Demander confirmation avant de synchroniser des stockages externes - + Move removed files to trash Déplacer les fichiers supprimés vers la corbeille - + + &Check for Update now + &Vérifier la présence de mises à jour maintenant + + + Show sync folders in &Explorer's navigation pane Afficher les dossiers synchronisés dans le panneau de navigation de l'&Explorateur de fichiers @@ -3067,6 +2973,11 @@ Vous pouvez également restaurer tous les fichiers supprimés en les télécharg S&how crash reporter Affic&her le rapport d'incident + + + Ask for confirmation before synchronizing folders larger than + Demander confirmation avant de synchroniser les dossiers de taille supérieure à + Edit &Ignored Files @@ -3079,77 +2990,57 @@ Vous pouvez également restaurer tous les fichiers supprimés en les télécharg Créer une archive de débogage - + Info Informations - - 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 - + + Show sync folders in &Explorer's Navigation Pane + Afficher les dossiers synchronisés dans le panneau de navigation de l'&Explorateur de fichiers + + + Update channel Canal de mise à jour - - Show sync folders in &Explorer's Navigation Pane - Afficher les dossiers synchronisés dans le panneau de navigation de l'&Explorateur de fichiers + + &Restart && Update + Redémarrer et Mettre à jour - + &Automatically check for updates &Vérifier automatiquement les mises à jour - + Check Now Vérifier maintenant - + Usage Documentation Documentation d'utilisation - + Legal Notice Mentions légales - - - Use &monochrome icons - Utiliser les icônes &monochromes - - - - &Launch on system startup - &Lancer au démarrage du système - - - - Show server &notifications - Afficher les &notifications serveur - - - - Show call notifications - Afficher les notifications d'appel - Server notifications that require attention. Notifications du serveur requérant votre attention. - + Show chat notification dialogs. @@ -3163,6 +3054,18 @@ Vous pouvez également restaurer tous les fichiers supprimés en les télécharg 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é. + + + + stable + stable + + + + + beta + bêta + Change update channel? @@ -3178,25 +3081,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar 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. - + daily quotidien - + enterprise enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - enterprise: contient les version stables pour les clients. - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3208,22 +3103,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m La rétrogradation des versions n'est pas possible immédiatement: passer de la version bêta à la version stable signifie attendre la nouvelle version stable. - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Le canal détermine quelles mises à jour seront proposées pour l'installation : -- stable: contient les versions testées considérées comme fiables -- beta: contient les versions avec de nouvelles fonctionnalité qui n'ont pas toujours été testées complètement -- daily: contient les versions créées quotidiennement seulement pour les tests et le développement -%1 -Passer à une version antérieure n'est pas possible immédiatement : passer du canal beta au canal stable implique d'attendre la nouvelle version stable. - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3233,12 +3113,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp La rétrogradation des versions n'est pas possible immédiatement: passer de stable à entreprise signifie attendre la nouvelle version d'entreprise. - + Changing update channel? Changement du canal de mise à jour ? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4408,7 +4288,7 @@ Il s'agit d'un nouveau mode expérimental. Si vous décidez de l' 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 ». @@ -4481,8 +4361,8 @@ Il s'agit d'un nouveau mode expérimental. Si vous décidez de l' 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 pas être mis en lecture seule : %2 @@ -4604,7 +4484,7 @@ Il s'agit d'un nouveau mode expérimental. Si vous décidez de l' 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 @@ -4635,7 +4515,7 @@ Il s'agit d'un nouveau mode expérimental. Si vous décidez de l' OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! Le dossier %1 n’a pu être renommé à cause d’un conflit local de nom de fichier ou de dossier ! @@ -5011,6 +4891,21 @@ Il s'agit d'un nouveau mode expérimental. Si vous décidez de l' OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5037,7 +4932,7 @@ Il s'agit d'un nouveau mode expérimental. Si vous décidez de l' Dépôt de fichier sécurisé - + Could not find local folder for %1 Impossible de trouver le dossier local pour %1 @@ -5176,16 +5071,16 @@ Le serveur a répondu avec l'erreur : %2 Copy public link Copier le lien public - - - Encrypt - Chiffrer - Copy secure filedrop link Copier le lien de dépôt de fichier sécurisé + + + Encrypt + Chiffrer + Lock file @@ -5207,16 +5102,16 @@ Le serveur a répondu avec l'erreur : %2 remaining time before lock expires Expire dans %1 minuteExpire dans %1 minutesExpire dans %1 minutes - - - Edit - Éditer - Open in browser Ouvrir dans le navigateur + + + Edit + Éditer + Resolve conflict … @@ -5672,7 +5567,7 @@ Le serveur a répondu avec l'erreur : %2 <p>Client de bureau %1</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> @@ -5683,7 +5578,7 @@ Le serveur a répondu avec l'erreur : %2 <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> @@ -6077,12 +5972,12 @@ Le serveur a répondu avec l'erreur : %2 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. - + Terms of service Conditions d'utilisation - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. Votre compte %1 vous demande d'accepter les conditions générales d'utilisation de votre serveur. Vous serez redirigé vers %2 pour confirmer que vous l'avez lu et que vous l'acceptez. @@ -6158,23 +6053,23 @@ Le serveur a répondu avec l'erreur : %2 Aucun dossier de synchronisation configuré - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) %1: %2 - + macOS VFS for %1: Sync is running. macOS VFS pour %1: Synchronisation en cours. - + macOS VFS for %1: Last sync was successful. macOS VFS pour %1: La dernière synchronisation a réussi. - + macOS VFS for %1: A problem was encountered. macOS VFS pour %1: Une erreur est survenue. @@ -6338,12 +6233,12 @@ Le serveur a répondu avec l'erreur : %2 Nouveau dossier - + Failed to create debug archive Échec lors de la création de l'archive de déboguage - + Could not create debug archive in selected location! Impossible de créer l'archive de débogage à l'emplacement indiqué ! @@ -6524,7 +6419,7 @@ Le serveur a répondu avec l'erreur : %2 Dépôt de fichiers (téléversement seulement) - + Allow resharing Permettre le repartage @@ -6581,6 +6476,16 @@ Le serveur a répondu avec l'erreur : %2 Share password Mot de passe du partage + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6644,54 +6549,6 @@ Le serveur a répondu avec l'erreur : %2 Envoyer la réponse dans la discussion - - TrayFoldersMenuButton - - - Open local or group folders - Ouvrir des dossiers locaux ou de groupe - - - - Open local folder - Ouvrir le dossier local - - - - Connected - Connecté - - - - Disconnected - Déconnecté - - - - Group folder button - Bouton du dossier de groupes - - - - Open local folder "%1" - Ouvrir le dossier local « %1 » - - - - Open group folder "%1" - Ouvrir le dossier de groupes "%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 - - TrayWindowHeader @@ -6976,7 +6833,7 @@ Le serveur a répondu avec l'erreur : %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>Généré à partir de la révision Git <a href="%1">%2</a> du %3, %4 en utilisant Qt %5, %6</small></p> @@ -7381,6 +7238,54 @@ Le serveur a répondu avec l'erreur : %2 Copier le lien + + TrayFoldersMenuButton + + + Open local or group folders + Ouvrir des dossiers locaux ou de groupe + + + + Open local folder + Ouvrir le dossier local + + + + Connected + Connecté + + + + Disconnected + Déconnecté + + + + Group folder button + Bouton du dossier de groupes + + + + Open local folder "%1" + Ouvrir le dossier local « %1 » + + + + Open group folder "%1" + Ouvrir le dossier de groupes "%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 + + Window diff --git a/translations/client_ga.ts b/translations/client_ga.ts index 437a24b021506..ce7572160fe35 100644 --- a/translations/client_ga.ts +++ b/translations/client_ga.ts @@ -342,11 +342,6 @@ Signal file provider domain Fearann ​​​​sholáthraí comhaid comharthaíochta - - - Create debug archive - Cruthaigh cartlann dífhabhtaithe - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog Príomhdhialóg deisce Nextcloud - - Current account - Cuntas reatha - - - - - Resume sync for all - Lean an sioncronú do chách - - - - - Pause sync for all - Cuir an sioncronú ar sos do chách - - - - Add account - Cuir cuntas leis - - - - Add new account - Cuir cuntas nua leis - - - + Unified search results list Liosta torthaí cuardaigh aontaithe - - Settings - Socruithe - - - - Exit - Scoir - - - - Current account avatar - Avatar cuntas reatha - - - + New activities Gníomhaíochtaí nua - - - Current account status is online - Tá stádas cuntais reatha ar líne - - - - Current account status is do not disturb - Níl aon chur isteach ar stádas an chuntais reatha - - - - Account switcher and settings menu - Malartóir cuntais agus roghchlár socruithe - - - - Open local or group folders - Oscail fillteáin áitiúla nó grúpa - - - - More apps - Tuilleadh aipeanna - - - - Open %1 in browser - Oscail %1 sa bhrabhsálaí - OCC::AbstractNetworkJob @@ -1264,34 +1187,34 @@ Cuirfidh an gníomh seo deireadh le haon sioncrónú atá ar siúl faoi láthair Lean ar aghaidh - + %1 accounts number of accounts imported % 1 cuntas - + 1 account 1 chuntas - + %1 folders number of folders imported % 1 fillteán - + 1 folder 1 fillteán - + Legacy import Iompórtáil oidhreachta - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1757,13 +1680,13 @@ Cuirfidh an gníomh seo deireadh le haon sioncrónú atá ar siúl faoi láthair Earráid fhreastalaí: Níl an freagra PROPFIND formáidithe XML! - - + + Encrypted metadata setup error! Earráid socraithe meiteashonraí criptithe! - + Encrypted metadata setup error: initial signature from server is empty. Earráid socraithe meiteashonraí criptithe: tá síniú tosaigh an fhreastalaí folamh. @@ -2264,17 +2187,12 @@ Féadfaidh sé seo a bheith ina fhadhb le do leabharlanna OpenSSL. Téigh isteach sna socruithe chun é a roghnú más mian leat é a íoslódáil le do thoil. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 Sháraigh fillteán an teorainn mhéid fillteáin de % 1MB: % 2. % 3 - - - Keep syncing - Coinnigh sioncronú - All files in the sync folder "%1" folder were deleted on the server. @@ -2286,6 +2204,11 @@ Déanfar na scriosanna seo a shioncronú le d'fhillteán sioncronaithe áit Má shocraíonn tú na comhaid a chur ar ais, déanfar iad a athshioncronú leis an bhfreastalaí má tá cearta agat é sin a dhéanamh. Má shocraíonn tú na comhaid a scriosadh, ní bheidh siad ar fáil duit, ach amháin más tusa an t-úinéir. + + + Keep syncing + Coinnigh sioncronú + 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. @@ -2295,16 +2218,16 @@ If this was an accident and you decide to keep your files, they will be re-synce An bhfuil tú cinnte gur mhaith leat na gníomhartha sin a shioncronú leis an bhfreastalaí? Más timpiste a bhí ann agus má shocraíonn tú do chuid comhad a choinneáil, déanfar iad a athshioncronú ón bhfreastalaí. - - - Stop syncing - Stop sioncronú - Remove All Files? Bain Gach Comhad? + + + Stop syncing + Stop sioncronú + Remove all files @@ -2316,12 +2239,12 @@ Más timpiste a bhí ann agus má shocraíonn tú do chuid comhad a choinneáil, Coinnigh comhaid - + The folder %1 has surpassed the set folder size limit of %2MB. Sháraigh fillteán % 1 an teorainn méide fillteáin de % 2MB. - + Would you like to stop syncing this folder? Ar mhaith leat stop a chur le sioncronú an fhillteáin seo? @@ -2349,12 +2272,12 @@ Ciallaíonn sé seo go bhféadfadh sé nach ndéanfaidh an cliant sioncrónaithe % 1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" Theip ar íosluchtú an chomhaid fhíorúil le cód "% 1", stádas "% 2" agus teachtaireacht earráide "% 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. @@ -2363,7 +2286,7 @@ Deimhnigh le do thoil ar mhaith leat leanúint ar aghaidh leis na scriosanna seo Nó, is féidir leat gach comhad scriosta a chur ar ais trí uaslódáil ó fhillteán '%1' go dtí an freastalaí. - + 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. @@ -2372,22 +2295,22 @@ Deimhnigh le do thoil ar mhaith leat leanúint ar aghaidh leis na scriosanna seo De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n-íoslódáil ón bhfreastalaí. - + Remove all files? Bain gach comhad? - + Proceed with Deletion Lean ar aghaidh leis an Scriosadh - + Restore Files to Server Athchóirigh Comhaid go Freastalaí - + Restore Files from Server Athchóirigh Comhaid ón bhfreastalaí @@ -2939,22 +2862,17 @@ De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n OCC::GeneralSettings + + + General Settings + Socruithe Ginearálta + About Faoi - - - Legal notice - Fógra dlíthiúil - - - - General Settings - Socruithe Ginearálta - &Launch on System Startup @@ -2970,13 +2888,18 @@ De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n For System Tray Le haghaidh Tráidire Córais + + + Legal notice + Fógra dlíthiúil + Use &Monochrome Icons Úsáid &Deilbhíní Monacrómacha - + Show Chat Notifications @@ -2985,6 +2908,16 @@ De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n Show Server &Notifications Taispeáin Freastalaí & Fógraí + + + Advanced + Casta + + + + Ask for confirmation before synchronizing new folders larger than + Iarr deimhniú sula ndéantar fillteáin nua atá níos mó ná a shioncronú + Updates @@ -2995,43 +2928,6 @@ De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n &Automatically check for Updates Seiceáil go huathoibríoch le haghaidh Nuashonruithe - - - &Channel - &Cainéal - - - - - stable - cobhsaí - - - - - beta - béite - - - - &Restart && Update - &Atosaigh && Nuashonraigh - - - - &Check for Update now - Seiceáil le haghaidh Nuashonrú anois - - - - Advanced - Casta - - - - Ask for confirmation before synchronizing new folders larger than - Iarr deimhniú sula ndéantar fillteáin nua atá níos mó ná a shioncronú - MB @@ -3039,12 +2935,17 @@ De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n MB - + + &Channel + &Cainéal + + + Notify when synchronised folders grow larger than specified limit Fógra a thabhairt nuair a fhásann fillteáin sioncronaithe níos mó ná an teorainn shonraithe - + Automatically disable synchronisation of folders that overcome limit Díchumasaigh go huathoibríoch sioncrónú fillteán a sháraíonn teorainn @@ -3054,12 +2955,17 @@ De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n Iarr deimhniú sula ndéantar stórais sheachtracha a shioncronú - + Move removed files to trash Bog comhaid bainte go dtí an bruscar - + + &Check for Update now + Seiceáil le haghaidh Nuashonrú anois + + + Show sync folders in &Explorer's navigation pane Taispeáin fillteáin shioncronaithe i bpána nascleanúna &Explorer @@ -3068,6 +2974,11 @@ De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n S&how crash reporter S&how tuairisceoir tuairteála + + + Ask for confirmation before synchronizing folders larger than + Iarr deimhniú sula ndéantar fillteáin níos mó ná a shioncronú + Edit &Ignored Files @@ -3080,77 +2991,57 @@ De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n Cruthaigh Cartlann Dífhabhtaithe - + Info Eolas - - Ask for confirmation before synchronizing folders larger than - Iarr deimhniú sula ndéantar fillteáin níos mó ná a shioncronú - - - + Desktop client x.x.x Cliant deisce x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Taispeáin fillteáin shioncronaithe i bPána Nascleanúna &Explorer + + + Update channel Nuashonraigh cainéal - - Show sync folders in &Explorer's Navigation Pane - Taispeáin fillteáin shioncronaithe i bPána Nascleanúna &Explorer + + &Restart && Update + &Atosaigh && Nuashonraigh - + &Automatically check for updates Seiceáil go huathoibríoch le haghaidh nuashonruithe - + Check Now Seiceáil Anois - + Usage Documentation Doiciméadú Úsáide - + Legal Notice Fógra Dlíthiúil - - - Use &monochrome icons - Úsáid &deilbhíní monacrómacha - - - - &Launch on system startup - &Seol ar am tosaithe an chórais - - - - Show server &notifications - Taispeáin freastalaí &fógraí - - - - Show call notifications - Taispeáin fógraí glaonna - Server notifications that require attention. Fógraí freastalaí a dteastaíonn aird uathu. - + Show chat notification dialogs. @@ -3164,6 +3055,18 @@ De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n You cannot disable autostart because system-wide autostart is enabled. Ní féidir leat uath-thús a dhíchumasú toisc go bhfuil uath-tús ar fud an chórais cumasaithe. + + + + stable + cobhsaí + + + + + beta + béite + Change update channel? @@ -3179,25 +3082,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Tabhair faoi deara nach roghnaíonn sé seo ach na huasghráduithe linne a bhaintear as, agus nach bhfuil aon íosghrádú ann: Mar sin ní féidir dul ar ais ón gcainéal béite go dtí an cainéal cobhsaí láithreach agus ciallaíonn sé seo fanacht ar leagan cobhsaí atá níos nuaí ná an béite atá suiteáilte faoi láthair leagan. - + daily laethúil - + enterprise fiontar - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - fiontar: tá leaganacha cobhsaí ann do chustaiméirí. - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3209,22 +3104,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m Ní féidir leaganacha a íosghrádú láithreach: ciallaíonn athrú ó beta go cobhsaí fanacht leis an leagan cobhsaí nua. - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Cinneann an cainéal cé na huasghráduithe a thairgfear le suiteáil: -- cobhsaí: tá leaganacha tástálaithe a mheastar a bheith iontaofa -- béite: tá leaganacha ann le gnéithe nua nach féidir a thástáil go críochnúil -- laethúil: tá leaganacha a cruthaíodh go laethúil amháin le haghaidh tástála agus forbartha -% 1 -Ní féidir leaganacha a íosghrádú láithreach: ciallaíonn athrú ó beta go cobhsaí fanacht leis an leagan cobhsaí nua. - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3234,12 +3114,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp Ní féidir leaganacha a íosghrádú láithreach: ciallaíonn athrú ó chobhsaí go fiontar fanacht leis an leagan fiontair nua. - + Changing update channel? Cainéal nuashonraithe á athrú? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4410,7 +4290,7 @@ Is modh turgnamhach nua é seo. Má shocraíonn tú é a úsáid, cuir in iúl l Ní féidir sioncronú a dhéanamh mar gheall ar am modhnuithe neamhbhailí - + Could not upload file, because it is open in "%1". Níorbh fhéidir an comhad a uaslódáil toisc go bhfuil sé oscailte i "% 1". @@ -4483,8 +4363,8 @@ Is modh turgnamhach nua é seo. Má shocraíonn tú é a úsáid, cuir in iúl l Earráid agus meiteashonraí á nuashonrú mar gheall ar am modhnuithe neamhbhailí - - + + The folder %1 cannot be made read-only: %2 Ní féidir fillteán % 1 a dhéanamh inléite amháin: % 2 @@ -4606,7 +4486,7 @@ Is modh turgnamhach nua é seo. Má shocraíonn tú é a úsáid, cuir in iúl l Níorbh fhéidir fillteán % 1 a chruthú - + The folder %1 cannot be made read-only: %2 Ní féidir fillteán % 1 a dhéanamh inléite amháin: % 2 @@ -4637,7 +4517,7 @@ Is modh turgnamhach nua é seo. Má shocraíonn tú é a úsáid, cuir in iúl l OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! Ní féidir fillteán % 1 a athainmniú mar gheall ar choimhlint ainm comhaid logánta nó fillteáin! @@ -5013,6 +4893,21 @@ Is modh turgnamhach nua é seo. Má shocraíonn tú é a úsáid, cuir in iúl l OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5039,7 +4934,7 @@ Is modh turgnamhach nua é seo. Má shocraíonn tú é a úsáid, cuir in iúl l Titim comhad slán - + Could not find local folder for %1 Níorbh fhéidir fillteán logánta le haghaidh % 1 a aimsiú @@ -5178,16 +5073,16 @@ D'fhreagair an freastalaí le hearráid: % 2 Copy public link Cóipeáil nasc poiblí - - - Encrypt - Criptigh - Copy secure filedrop link Cóipeáil nasc slán comhad drop + + + Encrypt + Criptigh + Lock file @@ -5209,16 +5104,16 @@ D'fhreagair an freastalaí le hearráid: % 2 remaining time before lock expires Rachaidh sé in éag i gceann % 1 nóiméadRachaidh sé in éag i gceann % 1 nóiméadRachaidh sé in éag i gceann % 1 nóiméadRachaidh sé in éag i gceann % 1 nóiméadRachaidh sé in éag i gceann % 1 nóiméad - - - Edit - Cuir in eagar - Open in browser Oscail sa bhrabhsálaí + + + Edit + Cuir in eagar + Resolve conflict … @@ -5674,7 +5569,7 @@ D'fhreagair an freastalaí le hearráid: % 2 <p>%1 Cliant Deisce</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 Cliant Deisce</p><p>Leagan %1. Chun tuilleadh eolais a fháil cliceáil le do thoil ar <a href='%2'>anseo</a>.</p> @@ -5685,7 +5580,7 @@ D'fhreagair an freastalaí le hearráid: % 2 <p><small>Ag úsáid an breiseáin comhaid fhíorúil: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 cliant deisce %2</p> @@ -6079,12 +5974,12 @@ D'fhreagair an freastalaí le hearráid: % 2 Ritheann an freastalaí ar chuntas % 1 leagan % 2 nach dtacaítear leis. Tá úsáid an chliaint seo le leaganacha freastalaí nach dtacaítear leo gan tástáil agus d'fhéadfadh sé a bheith contúirteach. Lean ar aghaidh ar do phriacal féin. - + Terms of service Téarmaí seirbhíse - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. Éilíonn do chuntas %1 go nglacann tú le téarmaí seirbhíse do fhreastalaí. Déanfar tú a atreorú chuig %2 chun a admháil gur léigh tú é agus go n-aontaíonn tú leis. @@ -6160,23 +6055,23 @@ D'fhreagair an freastalaí le hearráid: % 2 Níl aon fhillteán sioncronaithe cumraithe - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) %1: %2 - + macOS VFS for %1: Sync is running. macOS VFS le haghaidh % 1: Tá Sync ag rith. - + macOS VFS for %1: Last sync was successful. macOS VFS le haghaidh % 1: D'éirigh leis an sioncronú deireanach. - + macOS VFS for %1: A problem was encountered. macOS VFS le haghaidh % 1: Thángthas ar fhadhb. @@ -6340,12 +6235,12 @@ D'fhreagair an freastalaí le hearráid: % 2 Fillteán nua - + Failed to create debug archive Theip ar chruthú cartlann dífhabhtaithe - + Could not create debug archive in selected location! Níorbh fhéidir cartlann dífhabhtaithe a chruthú sa suíomh roghnaithe! @@ -6526,7 +6421,7 @@ D'fhreagair an freastalaí le hearráid: % 2 Scaoileadh comhaid (uaslódáil amháin) - + Allow resharing Ceadaigh athroinnt @@ -6583,6 +6478,16 @@ D'fhreagair an freastalaí le hearráid: % 2 Share password Roinn pasfhocal + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6646,54 +6551,6 @@ D'fhreagair an freastalaí le hearráid: % 2 Seol freagra ar theachtaireacht chomhrá - - TrayFoldersMenuButton - - - Open local or group folders - Oscail fillteáin áitiúla nó grúpa - - - - Open local folder - Oscail fillteán áitiúil - - - - Connected - Ceangailte - - - - Disconnected - Dícheangailte - - - - Group folder button - Cnaipe fillteán grúpa - - - - Open local folder "%1" - Oscail fillteán logánta"% 1" - - - - Open group folder "%1" - Oscail fillteán grúpa"% 1" - - - - Open %1 in file explorer - Oscail % 1 i taiscéalaí comhad - - - - User group and local folders menu - Roghchlár grúpa úsáideoirí agus fillteáin áitiúla - - TrayWindowHeader @@ -6978,7 +6835,7 @@ D'fhreagair an freastalaí le hearráid: % 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>Tógtha ó athbhreithniú Git <a href="%1">%2</a> ar %3, %4 ag úsáid %5, %6</small></p> @@ -7383,6 +7240,54 @@ D'fhreagair an freastalaí le hearráid: % 2 Cóipeáil an nasc + + TrayFoldersMenuButton + + + Open local or group folders + Oscail fillteáin áitiúla nó grúpa + + + + Open local folder + Oscail fillteán áitiúil + + + + Connected + Ceangailte + + + + Disconnected + Dícheangailte + + + + Group folder button + Cnaipe fillteán grúpa + + + + Open local folder "%1" + Oscail fillteán logánta"% 1" + + + + Open group folder "%1" + Oscail fillteán grúpa"% 1" + + + + Open %1 in file explorer + Oscail % 1 i taiscéalaí comhad + + + + User group and local folders menu + Roghchlár grúpa úsáideoirí agus fillteáin áitiúla + + Window diff --git a/translations/client_gl.ts b/translations/client_gl.ts index 8fbe263dcd61f..ff34dd8dc87da 100644 --- a/translations/client_gl.ts +++ b/translations/client_gl.ts @@ -342,11 +342,6 @@ Signal file provider domain Dominio do provedor de ficheiros de sinal - - - Create debug archive - Crear arquivo de depuración - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog Diálogo principal do escritorio Nextcloud - - Current account - Conta actual - - - - - Resume sync for all - Continuar coa sincronización para todos - - - - - Pause sync for all - Por en pausa a sincronización para todos - - - - Add account - Engadir unha conta - - - - Add new account - Engadir unha conta nova - - - + Unified search results list Lista de resultados da busca unificada - - Settings - Axustes - - - - Exit - Saír - - - - Current account avatar - Avatar actual da conta - - - + New activities Novas actividades - - - Current account status is online - O estado da conta actual é conectado - - - - Current account status is do not disturb - O estado actual da conta é non molestar - - - - Account switcher and settings menu - Conmutador de contas e menú de axustes - - - - Open local or group folders - Abrir cartafoles locais ou de grupo - - - - More apps - Máis aplicacións - - - - Open %1 in browser - Abrir %1 nun navegador - OCC::AbstractNetworkJob @@ -1264,34 +1187,34 @@ Esta acción interromperá calquera sincronización que estea a executarse actua Continuar - + %1 accounts number of accounts imported %1 contas - + 1 account 1 conta - + %1 folders number of folders imported %1 cartafoles - + 1 folder 1 cartafol - + Legacy import Importar estilo antigo - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1757,13 +1680,13 @@ Esta acción interromperá calquera sincronización que estea a executarse actua Erro do servidor: a resposta PROPFIND non está formatada en XML. - - + + Encrypted metadata setup error! Produciuse un erro na configuración dos metadatos cifrados! - + Encrypted metadata setup error: initial signature from server is empty. Produciuse un erro de configuración dos metadatos cifrados: a sinatura inicial do servidor está baleira. @@ -2264,17 +2187,12 @@ Isto pode ser un problema coas súas bibliotecas OpenSSL. Vaia a axustes para seleccionalo se quere descargar isto. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 Un cartafol superou o límite de tamaño de cartafol establecido de %1MB: %2. %3 - - - Keep syncing - Manter sincronizado - All files in the sync folder "%1" folder were deleted on the server. @@ -2286,6 +2204,11 @@ Estas eliminacións sincronizarse co seu cartafol local sincronizado, facendo q Se decide restaurar os ficheiros, volveranse sincronizar co servidor se ten permisos para facelo. Se decide eliminar os ficheiros, non poderá dispor deles a non ser que sexa o propietario. + + + Keep syncing + Manter sincronizado + 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. @@ -2295,16 +2218,16 @@ If this was an accident and you decide to keep your files, they will be re-synce Confirma que quere sincronizar esas accións co servidor? Se isto foi un accidente e decide manter os seus ficheiros, volveranse sincronizar desde o servidor. - - - Stop syncing - Deixar de sincronizar - Remove All Files? Quere retirar todos os ficheiros? + + + Stop syncing + Deixar de sincronizar + Remove all files @@ -2316,12 +2239,12 @@ Se isto foi un accidente e decide manter os seus ficheiros, volveranse sincroniz Conservar os ficheiros - + The folder %1 has surpassed the set folder size limit of %2MB. O cartafol %1 superou o límite de tamaño de cartafol estabelecido de %2MB. - + Would you like to stop syncing this folder? Quere deixar de sincronizar este cartafol? @@ -2349,12 +2272,12 @@ Isto significa que o cliente de sincronización podería non enviar os cambios i %1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" Produciuse un fallo na descarga do ficheiro virtual co código «%1», o estado «%2» e a mensaxe de erro «%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. @@ -2363,7 +2286,7 @@ Confirme que quere proceder a estas eliminacións. Como alternativa, pode restaurar todos os ficheiros eliminados enviándoos desde o cartafol «%1» ao 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. @@ -2372,22 +2295,22 @@ Confirme que quere proceder a estas eliminacións. Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do servidor. - + Remove all files? Quere retirar todos os ficheiros? - + Proceed with Deletion Proceder á eliminación - + Restore Files to Server Restaurar os ficheiros no servidor - + Restore Files from Server Restaurar os ficheiros do servidor @@ -2939,22 +2862,17 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do OCC::GeneralSettings + + + General Settings + Axustes xerais + About Sobre - - - Legal notice - Aviso legal - - - - General Settings - Axustes xerais - &Launch on System Startup @@ -2970,13 +2888,18 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do For System Tray Para a área de notificación + + + Legal notice + Aviso legal + Use &Monochrome Icons Usar iconas &monocromáticas - + Show Chat Notifications @@ -2985,6 +2908,16 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do Show Server &Notifications Amosar as &notificacións do servidor + + + Advanced + Avanzado + + + + Ask for confirmation before synchronizing new folders larger than + Preguntar se se queren sincronizar novos cartafoles de máis de + Updates @@ -2995,43 +2928,6 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do &Automatically check for Updates Comprobar automaticamente as &actualizacións - - - &Channel - &Canle - - - - - stable - estábel - - - - - beta - beta - - - - &Restart && Update - &Reiniciar e actualizar - - - - &Check for Update now - &Comprobar agora se hai actualizacións - - - - Advanced - Avanzado - - - - Ask for confirmation before synchronizing new folders larger than - Preguntar se se queren sincronizar novos cartafoles de máis de - MB @@ -3039,12 +2935,17 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do MB - + + &Channel + &Canle + + + Notify when synchronised folders grow larger than specified limit Notificar cando os cartafoles sincronizados superen o límite especificado - + Automatically disable synchronisation of folders that overcome limit Desactivar automaticamente a sincronización de cartafoles que superan o límite @@ -3054,12 +2955,17 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do Preguntar se se queren sincronizar os cartafoles de almacenamento externo - + Move removed files to trash Mover os ficheiros retirados ao lixo - + + &Check for Update now + &Comprobar agora se hai actualizacións + + + Show sync folders in &Explorer's navigation pane Amosar os cartafoles sincronizados no &panel de navegación do navegador @@ -3068,6 +2974,11 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do S&how crash reporter Amosar o informe de &fallos + + + Ask for confirmation before synchronizing folders larger than + Preguntar se se queren sincronizar cartafoles de máis de + Edit &Ignored Files @@ -3080,77 +2991,57 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do Crear arquivo de depuración - + Info Información - - Ask for confirmation before synchronizing folders larger than - Preguntar se se queren sincronizar cartafoles de máis de - - - + Desktop client x.x.x Cliente de escritorio x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Amosar os cartafoles sincronizados no &panel de navegación do navegador + + + Update channel Actualizar a canle - - Show sync folders in &Explorer's Navigation Pane - Amosar os cartafoles sincronizados no &panel de navegación do navegador + + &Restart && Update + &Reiniciar e actualizar - + &Automatically check for updates Comprobar &automaticamente as actualizacións - + Check Now Comproba agora - + Usage Documentation Documentación de uso - + Legal Notice Aviso legal - - - Use &monochrome icons - Usar iconas &monocromáticas - - - - &Launch on system startup - &Executar ao iniciar o sistema - - - - Show server &notifications - Amosar as &notificacións do servidor - - - - Show call notifications - Amosar as notificacións de chamadas - Server notifications that require attention. Notificacións do servidor que precisan atención. - + Show chat notification dialogs. @@ -3164,6 +3055,18 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do You cannot disable autostart because system-wide autostart is enabled. Non pode desactivar o inicio automático porque o inicio automático de todo o sistema está activado. + + + + stable + estábel + + + + + beta + beta + Change update channel? @@ -3179,25 +3082,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Teña en conta que isto só selecciona de que grupo se toman as anovacións e que non hai reversións: por tanto, reverter da canle beta á canle estábel normalmente non se pode facer inmediatamente e significa agardar por unha versión estábel que sexa máis recente que a versión beta instalada actualmente. - + daily diario - + enterprise empresarial - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - – empresarial: contén versións estábeis para os clientes. - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3209,22 +3104,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m Non é posíbel reverter versións inmediatamente: cambiar de beta a estábel implica agardar pola nova versión estábel. - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - A canle determina que actualizacións se forneceran para instalar: -– estábel: contén versións probadas consideradas fiábeis -– beta: contén versións con novas funcionalidades que poden non ser probadas a fondo -– diario: contén versións creadas diariamente só para probas e desenvolvemento -%1 -Non é posíbel reverter versións inmediatamente: cambiar de beta a estábel significa agardar pola nova versión estábel. - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3234,12 +3114,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp Non é posíbel reverter as versións inmediatamente: cambiar de estábel estable a empresarial implica agardar pola nova versión empresarial. - + Changing update channel? Quere cambiar a canle de actualización? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4409,7 +4289,7 @@ Este é un novo modo experimental. Se decide usalo, agradecémoslle que informe Non é posíbel sincronizar por mor dunha hora de modificación incorrecta - + Could not upload file, because it is open in "%1". Non foi posíbel enviar o ficheiro porque está aberto en «%1». @@ -4482,8 +4362,8 @@ Este é un novo modo experimental. Se decide usalo, agradecémoslle que informe Produciuse un erro ao actualizar os metadatos por mor dunha hora de modificación incorrecta - - + + The folder %1 cannot be made read-only: %2 Non é posíbel facer que o cartafol %1 sexa de só lectura: %2 @@ -4605,7 +4485,7 @@ Este é un novo modo experimental. Se decide usalo, agradecémoslle que informe Non foi posíbel crear o cartafol %1 - + The folder %1 cannot be made read-only: %2 Non é posíbel facer que o cartafol %1 sexa de só lectura: %2 @@ -4636,7 +4516,7 @@ Este é un novo modo experimental. Se decide usalo, agradecémoslle que informe OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! Non é posíbel cambiarlle o nome ao cartafol %1 por mor dunha colisión co nome dun ficheiro ou cartafol local! @@ -5012,6 +4892,21 @@ Este é un novo modo experimental. Se decide usalo, agradecémoslle que informe OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5038,7 +4933,7 @@ Este é un novo modo experimental. Se decide usalo, agradecémoslle que informe Entrega segura de ficheiros - + Could not find local folder for %1 Non foi posíbel atopar o cartafol local para %1 @@ -5177,16 +5072,16 @@ O servidor respondeu co erro: %2 Copy public link Copiar a ligazón pública - - - Encrypt - Cifrar - Copy secure filedrop link Copiar a ligazón para entrega segura de ficheiros (filedrop) + + + Encrypt + Cifrar + Lock file @@ -5208,16 +5103,16 @@ O servidor respondeu co erro: %2 remaining time before lock expires Caduca en %1 minutosCaduca en %1 minutos - - - Edit - Editar - Open in browser Abrir no navegador + + + Edit + Editar + Resolve conflict … @@ -5673,7 +5568,7 @@ O servidor respondeu co erro: %2 <p>Cliente de escritorio de %1</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>Cliente de escritorio de %1</p><p>Versión %1. Para obter máis información prema <a href='%2'>aquí</a>.</p> @@ -5684,7 +5579,7 @@ O servidor respondeu co erro: %2 <p><small>Usando o complemento de ficheiros virtuais: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>Cliente de escritorio de %1, %2</p> @@ -6078,12 +5973,12 @@ O servidor respondeu co erro: %2 O servidor na conta %1 executa unha versión non admitida (%2). O uso deste cliente con versións de servidor non admitidas non está probado e é potencialmente perigoso. Proceda baixo a súa propia responsabilidade. - + Terms of service Condicións de servizo - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. A súa conta %1 require que acepte as condicións de servizo do seu servidor. Vai ser redirixido a %2 para que confirme que as leu e que está conforme con elas. @@ -6159,23 +6054,23 @@ O servidor respondeu co erro: %2 Non hai cartafoles de sincronización configurados - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) %1: %2 - + macOS VFS for %1: Sync is running. macOS VFS para %1: a sincronización está a executarse. - + macOS VFS for %1: Last sync was successful. macOS VFS para %1: a última sincronización fíxose correctamente. - + macOS VFS for %1: A problem was encountered. macOS VFS para %1: atopouse un problema. @@ -6339,12 +6234,12 @@ O servidor respondeu co erro: %2 Novo cartafol - + Failed to create debug archive Produciuse un fallo ao crear o arquivo de depuración - + Could not create debug archive in selected location! Non foi posíbel crear o arquivo de depuración na localización seleccionada. @@ -6525,7 +6420,7 @@ O servidor respondeu co erro: %2 Soltar ficheiro (só envíos) - + Allow resharing Permitir volver compartir @@ -6582,6 +6477,16 @@ O servidor respondeu co erro: %2 Share password Compartir contrasinal + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6645,54 +6550,6 @@ O servidor respondeu co erro: %2 Enviar resposta á mensaxe de parola - - TrayFoldersMenuButton - - - Open local or group folders - Abrir cartafoles locais ou de grupo - - - - Open local folder - Abrir o cartafol local - - - - Connected - Conectado - - - - Disconnected - Desconectado - - - - Group folder button - Botón do cartafol do grupo - - - - Open local folder "%1" - Abrir o cartafol local «%1» - - - - Open group folder "%1" - Abrir o cartafol do grupo «%1» - - - - Open %1 in file explorer - Abrir % 1 no xestor de ficheiros - - - - User group and local folders menu - Menú de grupos de usuarios e cartafoles locais - - TrayWindowHeader @@ -6977,7 +6834,7 @@ O servidor respondeu co erro: %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>Construido desde a revisión Git <a href="%1">%2</a> en %3, %4 usando Qt %5, %6</small></p> @@ -7382,6 +7239,54 @@ O servidor respondeu co erro: %2 Copiar a ligazón + + TrayFoldersMenuButton + + + Open local or group folders + Abrir cartafoles locais ou de grupo + + + + Open local folder + Abrir o cartafol local + + + + Connected + Conectado + + + + Disconnected + Desconectado + + + + Group folder button + Botón do cartafol do grupo + + + + Open local folder "%1" + Abrir o cartafol local «%1» + + + + Open group folder "%1" + Abrir o cartafol do grupo «%1» + + + + Open %1 in file explorer + Abrir % 1 no xestor de ficheiros + + + + User group and local folders menu + Menú de grupos de usuarios e cartafoles locais + + Window diff --git a/translations/client_he.ts b/translations/client_he.ts index 62069a5ffa8e8..4c1a8819b08e4 100644 --- a/translations/client_he.ts +++ b/translations/client_he.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1255,34 +1178,34 @@ This action will abort any currently running synchronization. המשך - + %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. @@ -1747,13 +1670,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2253,16 +2176,11 @@ This can be an issue with your OpenSSL libraries. נא לגשת להגדרות כדי לבחור אם ברצונך להוריד אותה. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2271,6 +2189,11 @@ If you decide to restore the files, they will be re-synced with the server if yo If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + + Keep syncing + + 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. @@ -2278,16 +2201,16 @@ 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. - - - Stop syncing - - Remove All Files? להסיר את כל הקבצים? + + + Stop syncing + + Remove all files @@ -2299,12 +2222,12 @@ If this was an accident and you decide to keep your files, they will be re-synce לשמור על הקבצים - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2328,41 +2251,41 @@ This means that the synchronization client might not upload local changes immedi - + 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 @@ -2914,22 +2837,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + הגדרות כלליות + About על אודות - - - Legal notice - הצהרה משפטית - - - - General Settings - הגדרות כלליות - &Launch on System Startup @@ -2945,13 +2863,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray למגש המערכת + + + Legal notice + הצהרה משפטית + Use &Monochrome Icons להשתמש בסמלים בצבע &אחיד - + Show Chat Notifications @@ -2960,6 +2883,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications הצגת ה&תראות שרת + + + Advanced + מתקדם + + + + Ask for confirmation before synchronizing new folders larger than + + Updates @@ -2970,43 +2903,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates לחפש עדכונים &אוטומטית - - - &Channel - &ערוץ - - - - - stable - - - - - - beta - - - - - &Restart && Update - ה&פעלה מחדש ועדכון - - - - &Check for Update now - ל&חפש עדכונים כעת - - - - Advanced - מתקדם - - - - Ask for confirmation before synchronizing new folders larger than - - MB @@ -3014,12 +2910,17 @@ Alternatively, you can restore all deleted files by downloading them from the se מ״ב - + + &Channel + &ערוץ + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3029,12 +2930,17 @@ Alternatively, you can restore all deleted files by downloading them from the se לבקש אישור בטרם סנכרון לאמצעי אחסון חיצוניים - + Move removed files to trash - + + &Check for Update now + ל&חפש עדכונים כעת + + + Show sync folders in &Explorer's navigation pane @@ -3043,6 +2949,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter ה&צגת מדווח קריסות + + + Ask for confirmation before synchronizing folders larger than + לבקש אישור בטרם סנכרון תיקיות שגודלן מעבר ל־ + Edit &Ignored Files @@ -3055,68 +2966,48 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Info - - Ask for confirmation before synchronizing folders larger than - לבקש אישור בטרם סנכרון תיקיות שגודלן מעבר ל־ + + Desktop client x.x.x + - - Desktop client x.x.x + + Show sync folders in &Explorer's Navigation Pane - + Update channel - - Show sync folders in &Explorer's Navigation Pane - + + &Restart && Update + ה&פעלה מחדש ועדכון - + &Automatically check for updates - + Check Now - + Usage Documentation - - - Legal Notice - - - Use &monochrome icons - - - - - &Launch on system startup - - - - - Show server &notifications - - - - - Show call notifications + Legal Notice @@ -3125,7 +3016,7 @@ Alternatively, you can restore all deleted files by downloading them from the se התראות שרת שדורשות תשומת לב. - + Show chat notification dialogs. @@ -3139,6 +3030,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. + + + + stable + + + + + + beta + + Change update channel? @@ -3152,24 +3055,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3178,17 +3074,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3196,12 +3082,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4359,7 +4245,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4432,8 +4318,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4555,7 +4441,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + The folder %1 cannot be made read-only: %2 @@ -4586,7 +4472,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4962,6 +4848,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -4988,7 +4889,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5126,13 +5027,13 @@ Server replied with error: %2 העתקת קישור ציבורי - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5156,16 +5057,16 @@ Server replied with error: %2 remaining time before lock expires - - - Edit - עריכה - Open in browser פתיחה בדפדפן + + + Edit + עריכה + Resolve conflict … @@ -5621,7 +5522,7 @@ Server replied with error: %2 <p>%1 לקוח לשולחן העבודה</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) @@ -5632,7 +5533,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6026,12 +5927,12 @@ Server replied with error: %2 - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6107,23 +6008,23 @@ Server replied with error: %2 לא הוגדרו תיקיות סנכרון - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6287,12 +6188,12 @@ Server replied with error: %2 - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6473,7 +6374,7 @@ Server replied with error: %2 - + Allow resharing @@ -6530,6 +6431,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6593,54 +6504,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6925,7 +6788,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7330,6 +7193,54 @@ Server replied with error: %2 העתקת קישור + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_hr.ts b/translations/client_hr.ts index a2c0f16b2f660..bdfdd4879a00d 100644 --- a/translations/client_hr.ts +++ b/translations/client_hr.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1259,34 +1182,34 @@ Ova će radnja prekinuti bilo koju trenutačnu sinkronizaciju. Nastavi - + %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. @@ -1751,13 +1674,13 @@ Ova će radnja prekinuti bilo koju trenutačnu sinkronizaciju. Pogreška poslužitelja: PROPFIND odgovor nije formatiran u XML-u! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2258,16 +2181,11 @@ Možda se radi o pogrešci u radu OpenSSL biblioteka. Idite u postavke kako biste je odabrali ako je želite preuzeti. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2279,6 +2197,11 @@ Ta će se brisanja sinkronizirati s lokalnom mapom za sinkronizaciju, što znač Ako odlučite vratiti datoteke, ponovno će se sinkronizirati s poslužiteljem ako imate potrebne ovlasti. Ako odlučite izbrisati datoteke, one će vam biti nedostupne ako niste njihov vlasnik. + + + Keep syncing + + 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. @@ -2288,16 +2211,16 @@ If this was an accident and you decide to keep your files, they will be re-synce Jeste li sigurni da želite sinkronizirati te radnje s poslužiteljem? Ako ste slučajno odabrali ovu radnju i želite zadržati svoje datoteke, ponovno će se sinkronizirati s poslužitelja. - - - Stop syncing - - Remove All Files? Ukloniti sve datoteke? + + + Stop syncing + + Remove all files @@ -2309,12 +2232,12 @@ Ako ste slučajno odabrali ovu radnju i želite zadržati svoje datoteke, ponovn Zadrži datoteke - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2342,41 +2265,41 @@ To znači da klijent za sinkronizaciju možda neće odmah otpremiti lokalne prom %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 @@ -2928,22 +2851,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Opće postavke + About Informacije - - - Legal notice - Pravna obavijest - - - - General Settings - Opće postavke - &Launch on System Startup @@ -2959,13 +2877,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Za ladicu sustava + + + Legal notice + Pravna obavijest + Use &Monochrome Icons Koristi jednobojne ikone - + Show Chat Notifications @@ -2974,6 +2897,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Prikaži poslužitelj i obavijesti + + + Advanced + Napredno + + + + Ask for confirmation before synchronizing new folders larger than + + Updates @@ -2984,43 +2917,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates i automatski provjeri za ažuriranja - - - &Channel - &Channel - - - - - stable - stabilna - - - - - beta - beta - - - - &Restart && Update - Ponovno pokreni i ažuriraj - - - - &Check for Update now - i provjeri za ažuriranja - - - - Advanced - Napredno - - - - Ask for confirmation before synchronizing new folders larger than - - MB @@ -3028,12 +2924,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Channel + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3043,12 +2944,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Zatraži potvrdu prije sinkronizacije vanjskih prostora za pohranu - + Move removed files to trash - + + &Check for Update now + i provjeri za ažuriranja + + + Show sync folders in &Explorer's navigation pane @@ -3057,6 +2963,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter Prikaži alat za izvješćivanje o padu sustava + + + Ask for confirmation before synchronizing folders larger than + Zatraži potvrdu prije sinkronizacije mapa većih od + Edit &Ignored Files @@ -3069,68 +2980,48 @@ Alternatively, you can restore all deleted files by downloading them from the se Stvori arhivu otklanjanja pogrešaka - + Info - - Ask for confirmation before synchronizing folders larger than - Zatraži potvrdu prije sinkronizacije mapa većih od - - - + Desktop client x.x.x - - - Update channel - - Show sync folders in &Explorer's Navigation Pane Prikaži mape za sinkronizaciju u navigacijskom oknu preglednika datoteka - - &Automatically check for updates - - - - - Check Now - - - - - Usage Documentation + + Update channel - - Legal Notice - + + &Restart && Update + Ponovno pokreni i ažuriraj - - Use &monochrome icons + + &Automatically check for updates - - &Launch on system startup + + Check Now - - Show server &notifications + + Usage Documentation - - Show call notifications + + Legal Notice @@ -3139,7 +3030,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Obavijesti poslužitelja koje zahtijevaju pažnju. - + Show chat notification dialogs. @@ -3153,6 +3044,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Ne možete onemogućiti automatsko pokretanje jer je omogućeno automatsko pokretanje na razini cijelog sustava. + + + + stable + stabilna + + + + + beta + beta + Change update channel? @@ -3168,24 +3071,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Imajte na umu da se ovime odabire samo kategorija iz koje dolaze nadogradnje i da nema vraćanja na stare inačice: stoga se povratak s beta kanala na stabilni kanal obično ne može odmah izvršiti, već je potrebno pričekati stabilnu inačicu koja je novija od trenutačno instalirane beta inačice. - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3194,17 +3090,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3212,12 +3098,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4386,7 +4272,7 @@ Ovo je novi, eksperimentalni način rada. Ako se odlučite aktivirati ga, prijav - + Could not upload file, because it is open in "%1". @@ -4459,8 +4345,8 @@ Ovo je novi, eksperimentalni način rada. Ako se odlučite aktivirati ga, prijav - - + + The folder %1 cannot be made read-only: %2 @@ -4582,7 +4468,7 @@ Ovo je novi, eksperimentalni način rada. Ako se odlučite aktivirati ga, prijav Nije moguće stvoriti mapu %1 - + The folder %1 cannot be made read-only: %2 @@ -4613,7 +4499,7 @@ Ovo je novi, eksperimentalni način rada. Ako se odlučite aktivirati ga, prijav OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4989,6 +4875,21 @@ Ovo je novi, eksperimentalni način rada. Ako se odlučite aktivirati ga, prijav OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5015,7 +4916,7 @@ Ovo je novi, eksperimentalni način rada. Ako se odlučite aktivirati ga, prijav - + Could not find local folder for %1 @@ -5153,13 +5054,13 @@ Server replied with error: %2 Kopiraj javnu poveznicu - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5183,16 +5084,16 @@ Server replied with error: %2 remaining time before lock expires - - - Edit - Uredi - Open in browser Otvori u pregledniku + + + Edit + Uredi + Resolve conflict … @@ -5648,7 +5549,7 @@ Server replied with error: %2 <p>%1 Klijent za osobna računala</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) @@ -5659,7 +5560,7 @@ Server replied with error: %2 <p><small>Upotreba dodatka za virtualne datoteke: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6053,12 +5954,12 @@ Server replied with error: %2 Poslužitelj na računu %1 koristi se nepodržanom inačicom %2. Upotreba ovog klijenta s nepodržanim inačicama poslužitelja nije testirana i potencijalno je opasna. Nastavite na vlastitu odgovornost. - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6134,23 +6035,23 @@ Server replied with error: %2 Nije konfigurirana nijedna mapa za sinkronizaciju - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6314,12 +6215,12 @@ Server replied with error: %2 Nova mapa - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6500,7 +6401,7 @@ Server replied with error: %2 - + Allow resharing @@ -6557,6 +6458,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6620,54 +6531,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6952,7 +6815,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7357,6 +7220,54 @@ Server replied with error: %2 Kopiraj poveznicu + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_hu.ts b/translations/client_hu.ts index 9ac4763d9d6d2..08f4952501a9d 100644 --- a/translations/client_hu.ts +++ b/translations/client_hu.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - Hibakeresési archívum létrehozása - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog A Nextcloud asztali alkalmazás főablaka - - Current account - Jelenlegi fiók - - - - - Resume sync for all - Szinkronizálás folytatása mindenhova - - - - - Pause sync for all - Mindenhova szinkronizálás szüneteltetése - - - - Add account - Fiók hozzáadása - - - - Add new account - Új fiók hozzáadása - - - + Unified search results list Egyesített keresési találatlista - - Settings - Beállítások - - - - Exit - Kilépés - - - - Current account avatar - Jelenlegi fiókprofilkép - - - + New activities Új tevékenységek - - - Current account status is online - Jelenlegi fiókállapot: online - - - - Current account status is do not disturb - Jelenlegi fiókállapot: ne zavarjanak - - - - Account switcher and settings menu - Fiókváltó és beállítások menü - - - - Open local or group folders - Helyi vagy csoportmappák megnyitása - - - - More apps - További alkalmazások - - - - Open %1 in browser - A(z) %1 megnyitása böngészőben - OCC::AbstractNetworkJob @@ -1261,34 +1184,34 @@ Ez a művelet megszakítja a jelenleg futó szinkronizálást. Folytatás - + %1 accounts number of accounts imported %1 fiók - + 1 account 1 fiók - + %1 folders number of folders imported %1 mappa - + 1 folder 1 mappa - + Legacy import Importálás örökölt kliensből - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1753,13 +1676,13 @@ Ez a művelet megszakítja a jelenleg futó szinkronizálást. Kiszolgálóhiba: A PROPFIND válasz nem XML formátumú! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2260,16 +2183,11 @@ Ezt a problémát valószínűleg az OpenSSL programkönyvtárakban kell keresni A beállításoknál válassza ki, ha le szeretné tölteni. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - Tovább szinkronizálás - All files in the sync folder "%1" folder were deleted on the server. @@ -2281,6 +2199,11 @@ Ez töröl mindent a helyi szinkronizálási mappában, így nem lesznek elérhe Ha úgy dönt, hogy visszaállítja a fájlokat, akkor újra fel lesznek töltve a kiszolgálóra, ha van ehhez joga. Ha úgy dönt, hogy törli ezeket a fájlokat, akkor többé nem fogja azokat elérni, hacsak nem Ön a tulajdonos. + + + Keep syncing + Tovább szinkronizálás + 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. @@ -2290,16 +2213,16 @@ If this was an accident and you decide to keep your files, they will be re-synce Biztos, hogy szinkronizálni akarja ezeket a változásokat a kiszolgálóval? Ha ez véletlen volt, és úgy dönt, hogy megtartja ezeket a fájlokat, akkor újra letöltésre kerülnek a kiszolgálóról. - - - Stop syncing - Szinkronizálás megszakítása - Remove All Files? Eltávolítja az összes fájlt? + + + Stop syncing + Szinkronizálás megszakítása + Remove all files @@ -2311,12 +2234,12 @@ Ha ez véletlen volt, és úgy dönt, hogy megtartja ezeket a fájlokat, akkor Fájlok megtartása - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? Leállítja a mappa szinkronizációját? @@ -2344,41 +2267,41 @@ Ez azt jelenti, hogy a szinkronizációs kliens lehet, hogy nem fogja azonnal fe %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? Eltávolítja az összes fájlt? - + Proceed with Deletion - + Restore Files to Server - + Restore Files from Server @@ -2930,22 +2853,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Általános beállítások + About Névjegy - - - Legal notice - Jogi nyilatkozat - - - - General Settings - Általános beállítások - &Launch on System Startup @@ -2961,13 +2879,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Rendszertálcára + + + Legal notice + Jogi nyilatkozat + Use &Monochrome Icons &Monokróm ikonok használata - + Show Chat Notifications @@ -2976,6 +2899,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Kiszolgálóé&rtesítések megjelenítése + + + Advanced + Speciális + + + + Ask for confirmation before synchronizing new folders larger than + Megerősítés kérése az ennél nagyobb új mappák szinkronizálása előtt: + Updates @@ -2986,43 +2919,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates Frissítések &automatikus keresése - - - &Channel - &Csatorna - - - - - stable - stabil - - - - - beta - béta - - - - &Restart && Update - Új&raindítás és frissítés - - - - &Check for Update now - Frissítés &ellenőrzése most - - - - Advanced - Speciális - - - - Ask for confirmation before synchronizing new folders larger than - Megerősítés kérése az ennél nagyobb új mappák szinkronizálása előtt: - MB @@ -3030,12 +2926,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Csatorna + + + Notify when synchronised folders grow larger than specified limit Értesítés, ha a szinkronizált mappák a megadott határértéknél nagyobbra nőnek - + Automatically disable synchronisation of folders that overcome limit @@ -3045,12 +2946,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Megerősítés kérése a külső tárolók szinkronizálása előtt - + Move removed files to trash Az eltávolított fájlok kukába helyezése - + + &Check for Update now + Frissítés &ellenőrzése most + + + Show sync folders in &Explorer's navigation pane Szinkronizálási mappák megjelenítése az &Intéző navigációs ablaktábláján @@ -3059,6 +2965,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter &Hibabejelentő megjelenítése + + + Ask for confirmation before synchronizing folders larger than + Megerősítés kérése az ennél nagyobb mappák szinkronizálása előtt: + Edit &Ignored Files @@ -3071,77 +2982,57 @@ Alternatively, you can restore all deleted files by downloading them from the se Hibakeresési archívum létrehozása - + Info Információ - - Ask for confirmation before synchronizing folders larger than - Megerősítés kérése az ennél nagyobb mappák szinkronizálása előtt: - - - + Desktop client x.x.x Asztali kliens x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Szinkronizálási mappák megjelenítése az &Intéző navigációs ablaktábláján + + + Update channel Frissítési csatorna - - Show sync folders in &Explorer's Navigation Pane - Szinkronizálási mappák megjelenítése az &Intéző navigációs ablaktábláján + + &Restart && Update + Új&raindítás és frissítés - + &Automatically check for updates Frissítések &automatikus keresése - + Check Now Ellenőrzése most - + Usage Documentation Felhasználási dokumentáció - + Legal Notice Jogi információk - - - Use &monochrome icons - &Monokróm ikonok használata - - - - &Launch on system startup - &Indítás a rendszerrel együtt - - - - Show server &notifications - Kiszolgálóé&rtesítések megjelenítése - - - - Show call notifications - Hívásértesítések megjelenítése - Server notifications that require attention. Kiszolgálóértesítések, melyek a figyelmét kérik. - + Show chat notification dialogs. @@ -3155,6 +3046,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Az automatikus indítást nem tilthatja le, mert az egész rendszerre kiterjedő automatikus indítás engedélyezett. + + + + stable + stabil + + + + + beta + béta + Change update channel? @@ -3170,24 +3073,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Ne feledje, hogy ez csak azt választja ki, hogy a frissítések milyen készletből származnak, és hogy régebbi verzióra nem lehet visszaállni: tehát a béta csatornáról a stabil csatornára való visszatérés általában nem azonnali, vagyis várni kell egy stabil verzióra, amely újabb, mint a jelenleg telepített béta változat. - + daily napi - + enterprise vállalati - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3196,17 +3092,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3214,12 +3100,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? Módosítja a frissítési csatornát? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4389,7 +4275,7 @@ Ez egy új, kísérleti mód. Ha úgy dönt, hogy használja, akkor jelezze nek Az érvénytelen módosítási idő miatt nem lehet szinkronizálni - + Could not upload file, because it is open in "%1". @@ -4462,8 +4348,8 @@ Ez egy új, kísérleti mód. Ha úgy dönt, hogy használja, akkor jelezze nek Az érvénytelen módosítási idő miatt hiba történt a metaadatok frissítése során - - + + The folder %1 cannot be made read-only: %2 @@ -4585,7 +4471,7 @@ Ez egy új, kísérleti mód. Ha úgy dönt, hogy használja, akkor jelezze nek A(z) %1 mappa nem hozható létre - + The folder %1 cannot be made read-only: %2 @@ -4616,7 +4502,7 @@ Ez egy új, kísérleti mód. Ha úgy dönt, hogy használja, akkor jelezze nek OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4992,6 +4878,21 @@ Ez egy új, kísérleti mód. Ha úgy dönt, hogy használja, akkor jelezze nek OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5018,7 +4919,7 @@ Ez egy új, kísérleti mód. Ha úgy dönt, hogy használja, akkor jelezze nek Biztonságos fájllerakat - + Could not find local folder for %1 @@ -5157,16 +5058,16 @@ A kiszolgáló hibával válaszolt: %2 Copy public link Nyilvános hivatkozás másolása - - - Encrypt - Titkosítás - Copy secure filedrop link Biztonságos fájllerakat-hivatkozás másolása + + + Encrypt + Titkosítás + Lock file @@ -5188,16 +5089,16 @@ A kiszolgáló hibával válaszolt: %2 remaining time before lock expires %1 perc múlva lejár%1 perc múlva lejár - - - Edit - Szerkesztés - Open in browser Megnyitás böngészőben + + + Edit + Szerkesztés + Resolve conflict … @@ -5653,7 +5554,7 @@ A kiszolgáló hibával válaszolt: %2 <p>%1 asztali kliens</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) @@ -5664,7 +5565,7 @@ A kiszolgáló hibával válaszolt: %2 <p><small>Virtuális fájlok bővítmény használata: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6058,12 +5959,12 @@ A kiszolgáló hibával válaszolt: %2 A(z) %1 fiók kiszolgálója nem támogatott verziót (%2) futtat. Ennek a kliensnek a nem támogatott kiszolgálóverziókkal történő használata nem tesztelt és potenciálisan veszélyes. Folytatás kizárólag saját felelősségére. - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6139,23 +6040,23 @@ A kiszolgáló hibával válaszolt: %2 Nincs szinkronizációs könyvtár beállítva - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6319,12 +6220,12 @@ A kiszolgáló hibával válaszolt: %2 Új mappa - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6505,7 +6406,7 @@ A kiszolgáló hibával válaszolt: %2 Fájlelhelyezés (csak feltöltés) - + Allow resharing Újra-megosztás engedélyezése @@ -6562,6 +6463,16 @@ A kiszolgáló hibával válaszolt: %2 Share password Megosztás jelszava + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6625,54 +6536,6 @@ A kiszolgáló hibával válaszolt: %2 Válasz küldése a csevegőüzenetre - - TrayFoldersMenuButton - - - Open local or group folders - Helyi vagy csoportmappák megnyitása - - - - Open local folder - Helyi mappa megnyitása - - - - Connected - Kapcsolódva - - - - Disconnected - Kapcsolat bontva - - - - Group folder button - Csoportmappa gombja - - - - Open local folder "%1" - A(z) „%1” helyi mappa megnyitása - - - - Open group folder "%1" - A(z) „%1” csoportmappa megnyitása - - - - Open %1 in file explorer - A(z) %1 megnyitása a fájlböngészőben - - - - User group and local folders menu - Felhasználó csoportmappák és helyi mappák menüje - - TrayWindowHeader @@ -6957,7 +6820,7 @@ A kiszolgáló hibával válaszolt: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7362,6 +7225,54 @@ A kiszolgáló hibával válaszolt: %2 Hivatkozás másolása + + TrayFoldersMenuButton + + + Open local or group folders + Helyi vagy csoportmappák megnyitása + + + + Open local folder + Helyi mappa megnyitása + + + + Connected + Kapcsolódva + + + + Disconnected + Kapcsolat bontva + + + + Group folder button + Csoportmappa gombja + + + + Open local folder "%1" + A(z) „%1” helyi mappa megnyitása + + + + Open group folder "%1" + A(z) „%1” csoportmappa megnyitása + + + + Open %1 in file explorer + A(z) %1 megnyitása a fájlböngészőben + + + + User group and local folders menu + Felhasználó csoportmappák és helyi mappák menüje + + Window diff --git a/translations/client_is.ts b/translations/client_is.ts index 78b6c5785a5ac..c55beae5fc469 100644 --- a/translations/client_is.ts +++ b/translations/client_is.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1261,34 +1184,34 @@ gagnageymslur: Halda áfram - + %1 accounts number of accounts imported %1 notandaaðgangar - + 1 account 1 notandaaðgangur - + %1 folders number of folders imported %1 möppur - + 1 folder 1 mappa - + Legacy import Eldri gerð innflutnings - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1754,13 +1677,13 @@ gagnageymslur: - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2261,16 +2184,11 @@ upp. Skoðaðu atvikaskrána fyrir nánari upplýsingar.Farðu í stillingarnar til að velja hana ef þú vilt sækja hana. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - Halda samstillingu áfram - All files in the sync folder "%1" folder were deleted on the server. @@ -2279,6 +2197,11 @@ If you decide to restore the files, they will be re-synced with the server if yo If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + + Keep syncing + Halda samstillingu áfram + 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. @@ -2286,16 +2209,16 @@ 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. - - - Stop syncing - Stöðva samstillingu - Remove All Files? Fjarlægja allar skrár? + + + Stop syncing + Stöðva samstillingu + Remove all files @@ -2307,12 +2230,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Halda skrám - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2336,41 +2259,41 @@ This means that the synchronization client might not upload local changes immedi - + 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 @@ -2922,22 +2845,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Almennar stillingar + About Um hugbúnaðinn - - - Legal notice - Lagaleg atriði - - - - General Settings - Almennar stillingar - &Launch on System Startup @@ -2953,13 +2871,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Fyrir kerfisbakka + + + Legal notice + Lagaleg atriði + Use &Monochrome Icons Nota einlitar tákn&myndir - + Show Chat Notifications @@ -2968,6 +2891,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications &Birta tilkynningar frá þjóni + + + Advanced + Ítarlegt + + + + Ask for confirmation before synchronizing new folders larger than + Biðja um staðfestingu áður en samstilltar eru nýjar möppur stærri en + Updates @@ -2978,43 +2911,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates Leit&a sjálfvirkt að uppfærslum - - - &Channel - &Rás - - - - - stable - stöðug - - - - - beta - beta-prófunarútgáfa - - - - &Restart && Update - Endu&rræsa && uppfæra... - - - - &Check for Update now - At&huga núna með uppfærslu - - - - Advanced - Ítarlegt - - - - Ask for confirmation before synchronizing new folders larger than - Biðja um staðfestingu áður en samstilltar eru nýjar möppur stærri en - MB @@ -3022,12 +2918,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Rás + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3037,12 +2938,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Biðja um staðfestingu áður en samstilltar eru ytri gagnageymslur - + Move removed files to trash Setja fjarlægðar skrár í ruslið - + + &Check for Update now + At&huga núna með uppfærslu + + + Show sync folders in &Explorer's navigation pane @@ -3051,6 +2957,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter Birta &hrunskýrslugerðartól + + + Ask for confirmation before synchronizing folders larger than + Biðja um staðfestingu áður en samstilltar eru möppur stærri en + Edit &Ignored Files @@ -3063,77 +2974,57 @@ Alternatively, you can restore all deleted files by downloading them from the se Búa til safnskrá til villuleitar - + Info Upplýsingar - - Ask for confirmation before synchronizing folders larger than - Biðja um staðfestingu áður en samstilltar eru möppur stærri en - - - + Desktop client x.x.x Vinnutölvuforrit x.x.x - + + Show sync folders in &Explorer's Navigation Pane + + + + Update channel Uppfærslurás - - Show sync folders in &Explorer's Navigation Pane - + + &Restart && Update + Endu&rræsa && uppfæra... - + &Automatically check for updates Leit&a sjálfvirkt að uppfærslum - + Check Now Athuga núna - + Usage Documentation Leiðbeiningar um notkun - + Legal Notice Lagaleg atriði - - - Use &monochrome icons - Nota einlitar tákn&myndir - - - - &Launch on system startup - Ræsa þegar &kveikt á vél - - - - Show server &notifications - &Birta tilkynningar frá þjóni - - - - Show call notifications - - Server notifications that require attention. Tilkynningar frá þjóni sem krefjast athugunar. - + Show chat notification dialogs. @@ -3147,6 +3038,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. + + + + stable + stöðug + + + + + beta + beta-prófunarútgáfa + Change update channel? @@ -3160,24 +3063,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3186,17 +3082,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3204,12 +3090,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4367,7 +4253,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4440,8 +4326,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss Villa við að uppfæra lýsigögn: vegna ógilds breytingatíma - - + + The folder %1 cannot be made read-only: %2 @@ -4563,7 +4449,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Get ekki búið til möppuna %1 - + The folder %1 cannot be made read-only: %2 @@ -4594,7 +4480,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4970,6 +4856,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -4996,7 +4897,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5133,16 +5034,16 @@ Server replied with error: %2 Copy public link Afrita opinberan tengil - - - Encrypt - Dulrita - Copy secure filedrop link + + + Encrypt + Dulrita + Lock file @@ -5164,16 +5065,16 @@ Server replied with error: %2 remaining time before lock expires Rennur út eftir %1 mínútuRennur út eftir %1 mínútur - - - Edit - Breyta - Open in browser Opna í vafra + + + Edit + Breyta + Resolve conflict … @@ -5629,7 +5530,7 @@ Server replied with error: %2 <p>%1 vinnutölvuforrit</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 vinnutölvuforrit (Desktop Client)</p><p>Útgáfa %1. Til að sjá nánari upplýsingar skaltu <a href='%2'>smella hér</a>.</p> @@ -5640,7 +5541,7 @@ Server replied with error: %2 <p><small>Notar viðbót fyrir sýndarskrár: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 vinnutölvuforrit %2</p> @@ -6035,12 +5936,12 @@ Server replied with error: %2 - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6116,23 +6017,23 @@ Server replied with error: %2 Engar samstillingarmöppur stilltar - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6296,12 +6197,12 @@ Server replied with error: %2 Ný mappa - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6482,7 +6383,7 @@ Server replied with error: %2 Slepping skráa (einungis innsending) - + Allow resharing Leyfa endurdeilingu @@ -6539,6 +6440,16 @@ Server replied with error: %2 Share password Lykilorð sameignar + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6602,54 +6513,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - Opna staðværa möppu - - - - Connected - Tengt - - - - Disconnected - Aftengt - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - Opna %1 í skráastjóra - - - - User group and local folders menu - - - TrayWindowHeader @@ -6934,7 +6797,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7342,6 +7205,54 @@ sjálfgefið? Afrita tengil + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + Opna staðværa möppu + + + + Connected + Tengt + + + + Disconnected + Aftengt + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + Opna %1 í skráastjóra + + + + User group and local folders menu + + + Window diff --git a/translations/client_it.ts b/translations/client_it.ts index b06838f3b14c7..12b55e4551286 100644 --- a/translations/client_it.ts +++ b/translations/client_it.ts @@ -342,11 +342,6 @@ Signal file provider domain Forza aggiornamento contenuti - - - Create debug archive - Crea archivio con i log per il debug - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog Finestra di dialogo principale del desktop Nextcloud - - Current account - Account corrente - - - - - Resume sync for all - Riprendi la sincronizzazione per tutti - - - - - Pause sync for all - Sospendi la sincronizzazione per tutti - - - - Add account - Aggiungi account - - - - Add new account - Aggiungi nuovo account - - - + Unified search results list Elenco dei risultati di ricerca unificato - - Settings - Impostazioni - - - - Exit - Esci - - - - Current account avatar - Avatar account corrente - - - + New activities Nuove attività - - - Current account status is online - Lo stato attuale dell'account è online - - - - Current account status is do not disturb - Lo stato attuale dell'account è "non disturbare" - - - - Account switcher and settings menu - Menu di cambio account e impostazioni - - - - Open local or group folders - Apri cartelle locali o di gruppo - - - - More apps - Altre app - - - - Open %1 in browser - Apri %1 nel browser - OCC::AbstractNetworkJob @@ -1264,34 +1187,34 @@ Questa azione interromperà qualsiasi sincronizzazione attualmente in esecuzione Continua - + %1 accounts number of accounts imported %1 account - + 1 account 1 account - + %1 folders number of folders imported %1 cartelle - + 1 folder 1 cartella - + Legacy import Importazione obsoleta - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1757,13 +1680,13 @@ Questa azione interromperà qualsiasi sincronizzazione attualmente in esecuzione Errore del server: la risposta PROPFIND non è in formato XML! - - + + Encrypted metadata setup error! Eerrore nell'impostazione dei metadati di crittografia! - + Encrypted metadata setup error: initial signature from server is empty. Errore di configurazione dei metadati crittografati: la firma iniziale del server è vuota. @@ -2265,17 +2188,12 @@ Questo può essere un problema delle le tue librerie OpenSSL. Vai nelle impostazioni e selezionala se vuoi scaricarla. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 Una cartella ha superato il limite di dimensione impostato per la cartella di %1MB: %2. %3 - - - Keep syncing - Continua a sincronizzare - All files in the sync folder "%1" folder were deleted on the server. @@ -2287,6 +2205,11 @@ Queste eliminazioni saranno sincronizzate con la tua cartella locale, rendendo t Se decidi di ripristinare i file, essi saranno sincronizzati nuovamente con il server, se hai i diritti per farlo. Se decidi di eliminare i file, non saranno più disponibili, a meno che tu sia il proprietario. + + + Keep syncing + Continua a sincronizzare + 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. @@ -2296,16 +2219,16 @@ If this was an accident and you decide to keep your files, they will be re-synce Sei sicuro di voler sincronizzare queste azioni con il server? Se è stato un errore e decidi di tenere i file, saranno sincronizzati nuovamente dal server. - - - Stop syncing - Ferma la sincronizzazione - Remove All Files? Vuoi rimuovere tutti i file? + + + Stop syncing + Ferma la sincronizzazione + Remove all files @@ -2317,12 +2240,12 @@ Se è stato un errore e decidi di tenere i file, saranno sincronizzati nuovament Mantieni i file - + The folder %1 has surpassed the set folder size limit of %2MB. La cartella %1 ha superato il limite di dimensione impostato di %2MB. - + Would you like to stop syncing this folder? Vuoi interrompere la sincronizzazione di questa cartella? @@ -2350,12 +2273,12 @@ Questo significa che il client di sincronizzazione potrebbe non caricare le modi %1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" Download del file virtuale fallito con codice "%1", stato "%2" e messaggio di errore "%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. @@ -2364,7 +2287,7 @@ Conferma se vuoi procedere con queste eliminazioni. In alternativa, puoi ripristinare tutti i file eliminati caricandoli dalla cartella '%1' sul 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. @@ -2373,22 +2296,22 @@ Si prega di confermare se si desidera procedere con queste eliminazioni. In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli dal server. - + Remove all files? Rimuovere tutti i file? - + Proceed with Deletion Procedi con la cancellazione - + Restore Files to Server Ripristina i file sul server - + Restore Files from Server Ripristina i file dal server @@ -2940,22 +2863,17 @@ In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli da OCC::GeneralSettings + + + General Settings + Impostazioni generali + About Informazioni - - - Legal notice - Avviso legale - - - - General Settings - Impostazioni generali - &Launch on System Startup @@ -2971,13 +2889,18 @@ In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli da For System Tray Per il vassoio di sistema + + + Legal notice + Avviso legale + Use &Monochrome Icons Usa icone &monocromatiche - + Show Chat Notifications @@ -2986,6 +2909,16 @@ In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli da Show Server &Notifications Mostra &notifiche del server + + + Advanced + Avanzate + + + + Ask for confirmation before synchronizing new folders larger than + Chiedi conferma prima di sincronizzare cartelle più grandi di + Updates @@ -2996,43 +2929,6 @@ In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli da &Automatically check for Updates Verific&a automaticamente la presenza di aggiornamenti. - - - &Channel - &Canale - - - - - stable - stabile - - - - - beta - beta - - - - &Restart && Update - &Riavvia e aggiorna - - - - &Check for Update now - Vuoi &controllare gli aggiornamenti ora? - - - - Advanced - Avanzate - - - - Ask for confirmation before synchronizing new folders larger than - Chiedi conferma prima di sincronizzare cartelle più grandi di - MB @@ -3040,12 +2936,17 @@ In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli da MB - + + &Channel + &Canale + + + Notify when synchronised folders grow larger than specified limit Notifica quando le cartelle sincronizzate crescono e superano il limite specificato - + Automatically disable synchronisation of folders that overcome limit Disabilita automaticamente la sincronizzazione delle cartelle che superano il limite @@ -3055,12 +2956,17 @@ In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli da Chiedi conferma prima di sincronizzare storage esterni - + Move removed files to trash Sposta nel cestino i file eliminati - + + &Check for Update now + Vuoi &controllare gli aggiornamenti ora? + + + Show sync folders in &Explorer's navigation pane Mostra le cartelle di sincronizzazione nel pannello di navigazione di &Explorer @@ -3069,6 +2975,11 @@ In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli da S&how crash reporter Mostra il rapporto di c&hiusura inattesa + + + Ask for confirmation before synchronizing folders larger than + Chiedi conferma prima di scaricare cartelle più grandi di + Edit &Ignored Files @@ -3081,77 +2992,57 @@ In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli da Crea archivio di debug - + Info Informazioni - - Ask for confirmation before synchronizing folders larger than - Chiedi conferma prima di scaricare cartelle più grandi di - - - + Desktop client x.x.x Client desktop x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Mostra le cartelle di sincronizzazione nel pannello di navigazione di &Explorer + + + Update channel Canale di aggiornamento - - Show sync folders in &Explorer's Navigation Pane - Mostra le cartelle di sincronizzazione nel pannello di navigazione di &Explorer + + &Restart && Update + &Riavvia e aggiorna - + &Automatically check for updates Verific&a automaticamente la presenza di aggiornamenti. - + Check Now Controlla ora - + Usage Documentation Manuale d'uso - + Legal Notice Note legali - - - Use &monochrome icons - Usa icone &monocromatiche - - - - &Launch on system startup - &Esegui all'avvio del sistema - - - - Show server &notifications - Mostra &notifiche del server - - - - Show call notifications - Mostra notifiche di chiamata - Server notifications that require attention. Notifiche del server che richiedono attenzione. - + Show chat notification dialogs. @@ -3165,6 +3056,18 @@ In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli da You cannot disable autostart because system-wide autostart is enabled. Non puoi disabilitare l'avvio automatico poiché è abilitato l'avvio automatico a livello di sistema. + + + + stable + stabile + + + + + beta + beta + Change update channel? @@ -3178,25 +3081,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Il canale di aggiornamento determina quali aggiornamenti del client saranno offerti per l'installazione. Il canale "stabile" contiene solo aggiornamenti considerati affidabili, mentre le versioni nel canale "beta" possono contenere nuove funzionalità e correzioni di bug, ma non sono state ancora provate a fondo. Nota che questo seleziona solo da quale pool vengono prelevati gli aggiornamenti e che non ci sono downgrade: per cui tornare dal canale beta al canale stabile di solito non può essere fatto immediatamente e significa aspettare una versione stabile che sia più recente della versione beta attualmente installata. - + daily giornaliero - + enterprise enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - enterprise: contiene versioni stabili per i clienti. - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3208,22 +3103,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m Non è possibile effettuare il downgrade delle versioni immediatamente: passare da beta a stabile significa attendere la nuova versione stabile. - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Il canale determina quali aggiornamenti saranno offerti per l'installazione: -- stabile: contiene versioni testate considerate affidabili -- beta: contiene versioni con nuove funzionalità che potrebbero non essere testate a fondo -- giornaliero: contiene versioni create quotidianamente solo per test e sviluppo -%1 -Il downgrade delle versioni non è possibile immediatamente: passare da beta a stabile significa attendere la nuova versione stabile. - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3233,12 +3113,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp Il downgrade delle versioni non è possibile immediatamente: passare da stabile a enterprise significa attendere la nuova versione enterprise. - + Changing update channel? Vuoi cambiare canale di aggiornamento? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4401,7 +4281,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Impossibile sincronizzare a causa di un orario di modifica non valido - + Could not upload file, because it is open in "%1". Impossibile caricare il file, perché è aperto in "%1". @@ -4474,8 +4354,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss Errore di aggiornamento dei metadati a causa dell'orario di modifica non valido - - + + The folder %1 cannot be made read-only: %2 La cartella %1 non può essere resa in sola lettura: %2 @@ -4597,7 +4477,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Impossibile creare la cartella %1 - + The folder %1 cannot be made read-only: %2 La cartella %1 non può essere resa in sola lettura: %2 @@ -4628,7 +4508,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! La cartella %1 non può essere rinominata perché il suo nome conflitta con quello di un altro file o cartella! @@ -5004,6 +4884,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5030,7 +4925,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss File drop sicuro - + Could not find local folder for %1 Impossibile trovare la cartella locale per %1 @@ -5169,16 +5064,16 @@ Il server ha risposto con errore: %2 Copy public link Copia collegamento pubblico - - - Encrypt - Cifra - Copy secure filedrop link Copia collegamento per il file drop sicuro + + + Encrypt + Cifra + Lock file @@ -5200,16 +5095,16 @@ Il server ha risposto con errore: %2 remaining time before lock expires Scade fra %1 minutiScade fra %1 minutiScade fra %1 minuti - - - Edit - Modifica - Open in browser Apri nel browser + + + Edit + Modifica + Resolve conflict … @@ -5665,7 +5560,7 @@ Il server ha risposto con errore: %2 <p>Client desktop di %1</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 Client Desktop</p><p>Versione %1. Per maggiori informazioni clicca <a href='%2'>qui</a>.</p> @@ -5676,7 +5571,7 @@ Il server ha risposto con errore: %2 <p><small>Usato il plugin dei file virtuali: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 Client desktop %2</p> @@ -6070,12 +5965,12 @@ Il server ha risposto con errore: %2 Il server sull'account %1 esegue una versione non supportata %2. L'utilizzo di questo client con versioni del server non supportate non è stato verificato e è potenzialmente pericoloso. Procedi a tuo rischio. - + Terms of service Termini di servizio - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. Il tuo account %1 richiede di accettare i termini di servizio del tuo server. Verrai reindirizzato a %2 per confermare di averlo letto e di accettarlo. @@ -6151,23 +6046,23 @@ Il server ha risposto con errore: %2 Nessuna cartella configurata per la sincronizzazione - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) %1: %2 - + macOS VFS for %1: Sync is running. macOS VFS per %1: La sincronizzazione è in esecuzione. - + macOS VFS for %1: Last sync was successful. macOS VFS per %1: L'ultima sincronizzazione è riuscita. - + macOS VFS for %1: A problem was encountered. macOS VFS per %1: Si è verificato un problema. @@ -6331,12 +6226,12 @@ Il server ha risposto con errore: %2 Nuova cartella - + Failed to create debug archive Impossibile creare archivio con i log per il debug - + Could not create debug archive in selected location! Impossibile creare archivio con i log per il debug nel percorso selezionato! @@ -6517,7 +6412,7 @@ Il server ha risposto con errore: %2 File drop (solo invio) - + Allow resharing Consenti la ri-condivisione @@ -6574,6 +6469,16 @@ Il server ha risposto con errore: %2 Share password Condividi la password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6637,54 +6542,6 @@ Il server ha risposto con errore: %2 Invia risposta al messaggio di chat - - TrayFoldersMenuButton - - - Open local or group folders - Aprire cartelle locali o di gruppo - - - - Open local folder - Apri cartella locale - - - - Connected - Collegato - - - - Disconnected - Disconnesso - - - - Group folder button - Pulsante cartella di gruppo - - - - Open local folder "%1" - Apri cartella locale "%1" - - - - Open group folder "%1" - Apri cartella di gruppo "%1" - - - - Open %1 in file explorer - Apri %1 in esplora file - - - - User group and local folders menu - Menu gruppo utenti e cartelle locali - - TrayWindowHeader @@ -6969,7 +6826,7 @@ Il server ha risposto con errore: %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>Realizzato dalla revisione Git <a href="%1">%2</a> su %3, %4 usando Qt %5, %6</small></p> @@ -7374,6 +7231,54 @@ Il server ha risposto con errore: %2 Copia collegamento + + TrayFoldersMenuButton + + + Open local or group folders + Aprire cartelle locali o di gruppo + + + + Open local folder + Apri cartella locale + + + + Connected + Collegato + + + + Disconnected + Disconnesso + + + + Group folder button + Pulsante cartella di gruppo + + + + Open local folder "%1" + Apri cartella locale "%1" + + + + Open group folder "%1" + Apri cartella di gruppo "%1" + + + + Open %1 in file explorer + Apri %1 in esplora file + + + + User group and local folders menu + Menu gruppo utenti e cartelle locali + + Window diff --git a/translations/client_ja.ts b/translations/client_ja.ts index 91c5c89eb8476..de189f154daec 100644 --- a/translations/client_ja.ts +++ b/translations/client_ja.ts @@ -342,11 +342,6 @@ Signal file provider domain シグナルファイルプロバイダドメイン - - - Create debug archive - デバッグアーカイブを作成 - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog Nextcloudデスクトップのメインダイアログ - - Current account - 現在のアカウント - - - - - Resume sync for all - すべての同期を再開 - - - - - Pause sync for all - 全ての同期を一時停止 - - - - Add account - アカウントを追加 - - - - Add new account - 新しいアカウントを追加 - - - + Unified search results list 統合検索結果 - - Settings - 設定 - - - - Exit - 終了 - - - - Current account avatar - 現在のアバター - - - + New activities 新しいアクティビティ - - - Current account status is online - 現在のステータスはオンラインです - - - - Current account status is do not disturb - 現在のステータスは取り込み中です - - - - Account switcher and settings menu - アカウントスイッチャーと設定メニュー - - - - Open local or group folders - ローカルまたはグループフォルダを開く - - - - More apps - その他のアプリ - - - - Open %1 in browser - %1をブラウザーで開く - OCC::AbstractNetworkJob @@ -1264,34 +1187,34 @@ This action will abort any currently running synchronization. 続ける - + %1 accounts number of accounts imported %1 アカウント - + 1 account 1 アカウント - + %1 folders number of folders imported %1 フォルダ - + 1 folder 1 フォルダ - + Legacy import レガシーインポート(過去設定の取り込み) - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1757,13 +1680,13 @@ This action will abort any currently running synchronization. サーバーエラーが発生しました。PROPFIND応答がXML形式ではありません! - - + + Encrypted metadata setup error! 暗号化されたメタデータのセットアップエラー! - + Encrypted metadata setup error: initial signature from server is empty. 暗号化メタデータのセットアップエラー:サーバーからの初期署名が空です。 @@ -2264,17 +2187,12 @@ This can be an issue with your OpenSSL libraries. このフォルダーをダウンロードするには設定画面で選択してください。 - + A folder has surpassed the set folder size limit of %1MB: %2. %3 フォルダに設定されたフォルダサイズ制限値 %1MB を超えました: %2. %3 - - - Keep syncing - 同期を維持する - All files in the sync folder "%1" folder were deleted on the server. @@ -2286,6 +2204,11 @@ If you decide to delete the files, they will be unavailable to you, unless you a ファイルを復元したい場合、権限があればサーバーと再同期されます。 ファイルを削除することにした場合、所有者でない限り、ファイルは利用できなくなります。 + + + Keep syncing + 同期を維持する + 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. @@ -2295,16 +2218,16 @@ If this was an accident and you decide to keep your files, they will be re-synce このアクションをサーバーと同期してもよろしいですか? これが操作ミスであり、ファイルを維持することにした場合、ファイルはサーバーから再同期されます。 - - - Stop syncing - 同期を停止する - Remove All Files? すべてのファイルを削除しますか? + + + Stop syncing + 同期を停止する + Remove all files @@ -2316,12 +2239,12 @@ If this was an accident and you decide to keep your files, they will be re-synce ファイルを保持 - + The folder %1 has surpassed the set folder size limit of %2MB. フォルダ %1 が設定されたフォルダサイズの制限値 %2MB を超えました。 - + Would you like to stop syncing this folder? このフォルダの同期を停止しますか? @@ -2349,12 +2272,12 @@ This means that the synchronization client might not upload local changes immedi %1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" 仮想のファイルのダウンロードは、コード "%1"、ステータス "%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. @@ -2363,7 +2286,7 @@ Alternatively, you can restore all deleted files by uploading from '%1&apos または、'%1' フォルダからサーバにアップロードすることで、削除されたファイルをすべて復元できます。 - + 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. @@ -2372,22 +2295,22 @@ Alternatively, you can restore all deleted files by downloading them from the se または、削除されたファイルをサーバーからダウンロードして復元することもできます。 - + Remove all files? 全てのファイルを削除しますか? - + Proceed with Deletion 削除を進める - + Restore Files to Server ファイルをサーバーに復元する - + Restore Files from Server サーバーからファイルを復元する @@ -2940,22 +2863,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + 一般設定 + About Nextcloud について - - - Legal notice - 法律上の告知 - - - - General Settings - 一般設定 - &Launch on System Startup @@ -2971,13 +2889,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray システムトレイ + + + Legal notice + 法律上の告知 + Use &Monochrome Icons モノクロアイコンを使用(&M) - + Show Chat Notifications @@ -2986,6 +2909,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications サーバー通知を表示(&N) + + + Advanced + 詳細設定 + + + + Ask for confirmation before synchronizing new folders larger than + 指定された容量を以上の新しいフォルダを同期する前に確認する。 + Updates @@ -2996,43 +2929,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates 自動的にアップデートを確認(&A) - - - &Channel - チャネル(&C) - - - - - stable - 安定板 - - - - - beta - ベータ版 - - - - &Restart && Update - 再起動してアップデート(&R) - - - - &Check for Update now - 今すぐアップデートを確認(&C) - - - - Advanced - 詳細設定 - - - - Ask for confirmation before synchronizing new folders larger than - 指定された容量を以上の新しいフォルダを同期する前に確認する。 - MB @@ -3040,12 +2936,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + チャネル(&C) + + + Notify when synchronised folders grow larger than specified limit 同期されたフォルダのサイズが指定した上限を超えた場合に通知する - + Automatically disable synchronisation of folders that overcome limit 制限を超えたフォルダの同期を自動的に無効にする @@ -3055,12 +2956,17 @@ Alternatively, you can restore all deleted files by downloading them from the se 外部ストレージと同期する前に確認 - + Move removed files to trash 削除したファイルをゴミ箱に移動する - + + &Check for Update now + 今すぐアップデートを確認(&C) + + + Show sync folders in &Explorer's navigation pane エクスプローラのナビゲーションペインに同期フォルダを表示する @@ -3069,6 +2975,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter クラッシュ報告を表示(&H) + + + Ask for confirmation before synchronizing folders larger than + 指定された容量以上のフォルダーは同期前に確認 + Edit &Ignored Files @@ -3081,77 +2992,57 @@ Alternatively, you can restore all deleted files by downloading them from the se デバッグアーカイブを作成 - + Info 情報 - - Ask for confirmation before synchronizing folders larger than - 指定された容量以上のフォルダーは同期前に確認 - - - + Desktop client x.x.x デスクトップクライアント x.x.x - + + Show sync folders in &Explorer's Navigation Pane + エクスプローラのナビゲーションペインに同期フォルダーを表示 + + + Update channel アップデートチャネル - - Show sync folders in &Explorer's Navigation Pane - エクスプローラのナビゲーションペインに同期フォルダーを表示 + + &Restart && Update + 再起動してアップデート(&R) - + &Automatically check for updates 自動的にアップデートをチェック(&A) - + Check Now 今すぐチェック - + Usage Documentation 利用ドキュメント - + Legal Notice 法的通知 - - - Use &monochrome icons - モノクロアイコンを使用(&M) - - - - &Launch on system startup - システム開始時に起動(&L) - - - - Show server &notifications - サーバー通知を表示(&N) - - - - Show call notifications - トークの通知を表示 - Server notifications that require attention. 注意が必要なサーバー通知を表示する - + Show chat notification dialogs. @@ -3165,6 +3056,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. システム全体の自動起動が有効になっているため、自動起動を無効にすることはできません。 + + + + stable + 安定板 + + + + + beta + ベータ版 + Change update channel? @@ -3180,25 +3083,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar これはアップデートをどちらのチャネルからダウンロードするのかを決めるだけで、パッケージをダウングレードすることはできないことに注意してください。その為、ベータ版から安定版へ変更しても、通常はすぐに古いパッケージに戻されるわけではありません。現在インストールされているベータ版よりも新しい安定版が出るまで待つ必要があります。 - + daily 毎日 - + enterprise enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - enterprise: お客様向けの安定バージョンが含まれています。 - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3210,22 +3105,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m バージョンのダウングレードはすぐにはできません。ベータ版から安定版への変更は、新しい安定版を待つことを意味します。 - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - チャネルは、どのアップグレードがインストールされるかを決定します: -- stable: テスト済みの信頼できるバージョン。 -- beta: 十分なテストが行われていない可能性のある新機能を含むバージョンが含まれます。 -- daily: テストと開発のためだけに毎日作成されるバージョンが含まれます。 -%1 -バージョンのダウングレードはすぐにはできません。ベータ版から安定版への変更は、新しい安定版を待つことを意味します。 - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3235,12 +3115,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp 安定版からエンタープライズ版への変更は、新しいエンタープライズ版を待つことを意味します。 - + Changing update channel? アップデートチャネルを変更しますか? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4409,7 +4289,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss 修正日時が無効なため同期できません - + Could not upload file, because it is open in "%1". "%1" で開いているので、ファイルをアップロードできませんでした。 @@ -4482,8 +4362,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss 修正日時が無効なためメタデータの更新時にエラーが発生 - - + + The folder %1 cannot be made read-only: %2 フォルダ %1 を読み取り専用にできません: %2 @@ -4605,7 +4485,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss フォルダー %1 を作成できません - + The folder %1 cannot be made read-only: %2 フォルダ %1 を読み取り専用にできません: %2 @@ -4636,7 +4516,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! ローカルファイルまたはフォルダー名が重複しているため、フォルダー%1の名前を変更できません! @@ -5012,6 +4892,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5038,7 +4933,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss セキュアなファイルドロップ - + Could not find local folder for %1 %1 のローカルフォルダが見つかりませんでした @@ -5177,16 +5072,16 @@ Server replied with error: %2 Copy public link 公開リンクのコピー - - - Encrypt - 暗号化 - Copy secure filedrop link セキュアファイルドロップリンク + + + Encrypt + 暗号化 + Lock file @@ -5208,16 +5103,16 @@ Server replied with error: %2 remaining time before lock expires %1 分で期限切れ - - - Edit - 編集 - Open in browser ブラウザーで開く + + + Edit + 編集 + Resolve conflict … @@ -5673,7 +5568,7 @@ Server replied with error: %2 <p>%1 デスクトップクライアント</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 デスクトップクライアント</p><p>バージョン %1. 詳細については <a href='%2'>ここ</a>をクリックしてください。</p> @@ -5684,7 +5579,7 @@ Server replied with error: %2 <p><small>仮想ファイルシステムプラグインを利用:%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> @@ -6078,12 +5973,12 @@ Server replied with error: %2 アカウント %1 のサーバーは、サポートされていない古いバージョン %2 で実行しています。サポートされていないサーバーバージョンでこのクライアントを使用することはテストされておらず、潜在的な危険をはらんでいます。ご利用は自己責任でお願いいたします。 - + Terms of service サービス利用規約 - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. アカウント %1 では、サーバの利用規約に同意する必要があります。%2にリダイレクトされ、利用規約を読み、同意したことを確認します。 @@ -6159,23 +6054,23 @@ Server replied with error: %2 同期フォルダーが設定されていません - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) %1: %2 - + macOS VFS for %1: Sync is running. macOS VFS for %1: 同期が実行されています。 - + macOS VFS for %1: Last sync was successful. macOS VFS for %1: 最後の同期に成功しました。 - + macOS VFS for %1: A problem was encountered. macOS VFS for %1: 問題が発生しました。 @@ -6339,12 +6234,12 @@ Server replied with error: %2 新しいフォルダー - + Failed to create debug archive デバッグアーカイブの作成に失敗しました - + Could not create debug archive in selected location! 選択された場所にデバッグアーカイブを作成できませんでした! @@ -6525,7 +6420,7 @@ Server replied with error: %2 ファイルドロップ(アップロードのみ) - + Allow resharing 再共有を許可する @@ -6582,6 +6477,16 @@ Server replied with error: %2 Share password パスワードを共有 + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6645,54 +6550,6 @@ Server replied with error: %2 チャットメッセージに返信 - - TrayFoldersMenuButton - - - Open local or group folders - ローカルまたはグループフォルダを開く - - - - Open local folder - ローカルフォルダを開く - - - - Connected - 接続しました - - - - Disconnected - 切断しました - - - - Group folder button - グループフォルダボタン - - - - Open local folder "%1" - ローカルフォルダ "%1" を開く - - - - Open group folder "%1" - グループフォルダ "%1" を開く - - - - Open %1 in file explorer - ファイルエクスプローラーで %1 を開く - - - - User group and local folders menu - ユーザグループとローカルフォルダメニュー - - TrayWindowHeader @@ -6977,7 +6834,7 @@ Server replied with 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>Git リビジョン <a href="%1">%2</a> から %3, %4 で Qt %5, %6 を使用してビルドされました</small></p> @@ -7382,6 +7239,54 @@ Server replied with error: %2 リンクをコピー + + TrayFoldersMenuButton + + + Open local or group folders + ローカルまたはグループフォルダを開く + + + + Open local folder + ローカルフォルダを開く + + + + Connected + 接続しました + + + + Disconnected + 切断しました + + + + Group folder button + グループフォルダボタン + + + + Open local folder "%1" + ローカルフォルダ "%1" を開く + + + + Open group folder "%1" + グループフォルダ "%1" を開く + + + + Open %1 in file explorer + ファイルエクスプローラーで %1 を開く + + + + User group and local folders menu + ユーザグループとローカルフォルダメニュー + + Window diff --git a/translations/client_ko.ts b/translations/client_ko.ts index ef8c181d6e16c..4fcc17f65fe55 100644 --- a/translations/client_ko.ts +++ b/translations/client_ko.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - 디버그 아카이브 만들기 - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - 현재 계정 - - - - - Resume sync for all - 전체 동기화 재개 - - - - - Pause sync for all - 전체 동기화 일시 중지 - - - - Add account - 계정 추가 - - - - Add new account - 새 계정 추가 - - - + Unified search results list - - Settings - 설정 - - - - Exit - 종료 - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1263,34 +1186,34 @@ This action will abort any currently running synchronization. 계속 - + %1 accounts number of accounts imported %1개 계정 - + 1 account 1개 계정 - + %1 folders number of folders imported %1개 폴더 - + 1 folder 1개 폴더 - + Legacy import 레거시 불러오기 - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1756,13 +1679,13 @@ This action will abort any currently running synchronization. 서버 오류: PROPFIND 응답이 XML 형식이 아닙니다! - - + + Encrypted metadata setup error! 암호화된 메타데이터 구성 오류! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2263,17 +2186,12 @@ OpenSSL 라이브러리 이슈일 수 있습니다. 다운로드하려면 설정으로 이동하여 선택하십시오. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 폴더가 설정된 크기 제한인 %1MB를 초과했습니다: %2. %3 - - - Keep syncing - 계속 동기화 - All files in the sync folder "%1" folder were deleted on the server. @@ -2285,6 +2203,11 @@ If you decide to delete the files, they will be unavailable to you, unless you a 파일을 복원하기로 결정한 경우, 파일을 복원할 수 있는 권한이 있으면 파일이 서버와 다시 동기화됩니다. 파일을 삭제하기로 결정한 경우 소유자가 아닌 한 해당 파일을 사용할 수 없습니다. + + + Keep syncing + 계속 동기화 + 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. @@ -2294,16 +2217,16 @@ If this was an accident and you decide to keep your files, they will be re-synce 이 동작을 서버와 동기화하시겠습니까? 이 동작이 우연이고 파일을 유지하고자 할 경우, 서버로부터 재동기화 될 것입니다. - - - Stop syncing - 동기화 중지 - Remove All Files? 모두 삭제합니까? + + + Stop syncing + 동기화 중지 + Remove all files @@ -2315,12 +2238,12 @@ If this was an accident and you decide to keep your files, they will be re-synce 파일 유지 - + The folder %1 has surpassed the set folder size limit of %2MB. %1 폴더가 설정된 크기 제한인 %2MB를 초과했습니다. - + Would you like to stop syncing this folder? 이 폴더의 동기화를 중단하겠습니까? @@ -2348,41 +2271,41 @@ This means that the synchronization client might not upload local changes immedi %1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" 가상 파일 다운로드에 실패했으며, 코드는 "%1", 상태는 "%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 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 @@ -2935,22 +2858,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + 일반 설정 + About 정보 - - - Legal notice - 법적 고지 - - - - General Settings - 일반 설정 - &Launch on System Startup @@ -2966,13 +2884,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray 시스템 트레이 + + + Legal notice + 법적 고지 + Use &Monochrome Icons 흑백 아이콘 사용 - + Show Chat Notifications @@ -2981,6 +2904,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications 서버 알림 표시 + + + Advanced + 고급 + + + + Ask for confirmation before synchronizing new folders larger than + 다음보다 큰 폴더를 동기화할 때 확인을 요청 + Updates @@ -2991,43 +2924,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &자동으로 업데이트 확인 - - - &Channel - &채널 - - - - - stable - 안정판 - - - - - beta - 베타 - - - - &Restart && Update - 업데이트 재시작 - - - - &Check for Update now - &지금 업데이트 확인 - - - - Advanced - 고급 - - - - Ask for confirmation before synchronizing new folders larger than - 다음보다 큰 폴더를 동기화할 때 확인을 요청 - MB @@ -3035,12 +2931,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &채널 + + + Notify when synchronised folders grow larger than specified limit 동기화된 폴더가 지정된 크기보다 더 커질 때 알림 - + Automatically disable synchronisation of folders that overcome limit 크기 제한을 넘는 폴더의 동기화를 자동으로 중단 @@ -3050,12 +2951,17 @@ Alternatively, you can restore all deleted files by downloading them from the se 외부 저장소를 동기화하기 전에 확인하십시오. - + Move removed files to trash 제거된 파일을 휴지통으로 이동 - + + &Check for Update now + &지금 업데이트 확인 + + + Show sync folders in &Explorer's navigation pane &탐색기의 탐색 패널에서 동기화 폴더 표시 @@ -3064,6 +2970,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter 충돌 알림 표시 + + + Ask for confirmation before synchronizing folders larger than + 다음 보다 큰 폴더를 동기화하기 전에 확인하십시오. + Edit &Ignored Files @@ -3076,77 +2987,57 @@ Alternatively, you can restore all deleted files by downloading them from the se 디버그 아카이브 만들기 - + Info 정보 - - Ask for confirmation before synchronizing folders larger than - 다음 보다 큰 폴더를 동기화하기 전에 확인하십시오. - - - + Desktop client x.x.x 데스크톱 클라이언트 x.x.x - + + Show sync folders in &Explorer's Navigation Pane + 탐색기의 탐색 창에 동기화 폴더 표시 + + + Update channel 업데이트 채널 - - Show sync folders in &Explorer's Navigation Pane - 탐색기의 탐색 창에 동기화 폴더 표시 + + &Restart && Update + 업데이트 재시작 - + &Automatically check for updates 업데이트를 &자동으로 확인 - + Check Now 지금 확인하기 - + Usage Documentation 도움말 - + Legal Notice 법적 고지 - - - Use &monochrome icons - &흑백 아이콘 사용 - - - - &Launch on system startup - &시스템 시동 후 앱 자동으로 시작 - - - - Show server &notifications - 서버 &알림 표시 - - - - Show call notifications - 통화 알림 표시 - Server notifications that require attention. 주의가 필요한 서버 알림 - + Show chat notification dialogs. @@ -3160,6 +3051,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. 시스템 단위 자동 시작이 활성화되어 있으므로 자동 시작을 비활성화할 수 없습니다. + + + + stable + 안정판 + + + + + beta + 베타 + Change update channel? @@ -3175,24 +3078,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar 채널 선택은 무엇으로 업그레이드를 할 지 결정하며 다운그레이드는 없습니다. 따라서, 베타 체널에서 안정화 채널로 변경할 경우 대개 버전을 즉시 변경할 수 없으며 현재 설치된 베타 버전보다 더 최신인 안정화 버전이 출시될 때까지 기다려야 합니다. - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3201,17 +3097,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3219,12 +3105,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4394,7 +4280,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss 유효하지 않은 수정 시간으로 인해 동기화할 수 없습니다. - + Could not upload file, because it is open in "%1". 파일이 "%1"에서 열려있기 때문에 업로드할 수 없습니다. @@ -4467,8 +4353,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss 유효하지 않은 수정 시간으로 인한 메타데이터 업데이트 오류 - - + + The folder %1 cannot be made read-only: %2 @@ -4590,7 +4476,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss 폴더 %1을 만들 수 없음 - + The folder %1 cannot be made read-only: %2 @@ -4621,7 +4507,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4997,6 +4883,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5023,7 +4924,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss 안전한 파일 드롭 - + Could not find local folder for %1 %1의 로컬 폴더를 찾을 수 없습니다. @@ -5162,16 +5063,16 @@ Server replied with error: %2 Copy public link 공개 링크 복사 - - - Encrypt - 암호화 - Copy secure filedrop link 안전한 파일드롭 링크 복사 + + + Encrypt + 암호화 + Lock file @@ -5193,16 +5094,16 @@ Server replied with error: %2 remaining time before lock expires %1분 내에 만료됨 - - - Edit - 편집 - Open in browser 브라우저에서 열기 + + + Edit + 편집 + Resolve conflict … @@ -5658,7 +5559,7 @@ Server replied with error: %2 <p>%1 데스크톱 클라이언트</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) @@ -5669,7 +5570,7 @@ Server replied with error: %2 <small><p>가상 파일 플러그인 사용: %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> @@ -6063,12 +5964,12 @@ Server replied with error: %2 계정 %1의 서버가 지원되지 않는 이전 버전 %2을 실행합니다. 지원되지 않는 서버 버전으로 이 클라이언트를 사용하는 것은 테스트되지 않았으며 잠재적으로 위험합니다. 자신의 책임하에 진행하십시오. - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6144,23 +6045,23 @@ Server replied with error: %2 설정된 동기화 폴더가 없음 - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6324,12 +6225,12 @@ Server replied with error: %2 새 폴더 - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6510,7 +6411,7 @@ Server replied with error: %2 파일 업로드 전용 - + Allow resharing 재공유 허용 @@ -6567,6 +6468,16 @@ Server replied with error: %2 Share password 공유에 대한 암호 + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6630,54 +6541,6 @@ Server replied with error: %2 채팅 메시지에 답장 보내기 - - TrayFoldersMenuButton - - - Open local or group folders - 로컬 및 그룹 폴더 열기 - - - - Open local folder - 로컬 폴더 열기 - - - - Connected - 연결됨 - - - - Disconnected - 연결되지 않음 - - - - Group folder button - 그룹 폴더 버튼 - - - - Open local folder "%1" - 로컬 폴더 "%1" 열기 - - - - Open group folder "%1" - 그룹 폴더 "%1" 열기 - - - - Open %1 in file explorer - 탐색기에서 "%1" 열기 - - - - User group and local folders menu - 사용자 그룹 및 로컬 폴더 메뉴 - - TrayWindowHeader @@ -6962,7 +6825,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7368,6 +7231,54 @@ Server replied with error: %2 링크 복사 + + TrayFoldersMenuButton + + + Open local or group folders + 로컬 및 그룹 폴더 열기 + + + + Open local folder + 로컬 폴더 열기 + + + + Connected + 연결됨 + + + + Disconnected + 연결되지 않음 + + + + Group folder button + 그룹 폴더 버튼 + + + + Open local folder "%1" + 로컬 폴더 "%1" 열기 + + + + Open group folder "%1" + 그룹 폴더 "%1" 열기 + + + + Open %1 in file explorer + 탐색기에서 "%1" 열기 + + + + User group and local folders menu + 사용자 그룹 및 로컬 폴더 메뉴 + + Window diff --git a/translations/client_lt_LT.ts b/translations/client_lt_LT.ts index 9fcbc19ee98e8..d8383196e6fc3 100644 --- a/translations/client_lt_LT.ts +++ b/translations/client_lt_LT.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - Dabartinė paskyra - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - Pridėti paskyrą - - - - Add new account - Pridėti naują paskyrą - - - + Unified search results list - - Settings - Nustatymai - - - - Exit - Išeiti - - - - Current account avatar - - - - + New activities Naujos veiklos - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - Daugiau programėlių - - - - Open %1 in browser - Atverti %1 naršyklėje - OCC::AbstractNetworkJob @@ -1255,34 +1178,34 @@ This action will abort any currently running synchronization. Tęsti - + %1 accounts number of accounts imported - + 1 account 1 paskyra - + %1 folders number of folders imported - + 1 folder 1 aplankas - + Legacy import - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1747,13 +1670,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! Šifruotų metaduomenų sąrankos klaida! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2252,16 +2175,11 @@ This can be an issue with your OpenSSL libraries. Jei norite parsisiųsti, eikite į nustatymus. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2270,6 +2188,11 @@ If you decide to restore the files, they will be re-synced with the server if yo If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + + Keep syncing + + 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. @@ -2277,16 +2200,16 @@ 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. - - - Stop syncing - - Remove All Files? Šalinti visus failus? + + + Stop syncing + + Remove all files @@ -2298,12 +2221,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Palikti failus - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2329,41 +2252,41 @@ This means that the synchronization client might not upload local changes immedi Tai reiškia, kad sinchronizacijos klientas gali iš karto neįkelti lokalių pakeitimų, o tik juos nuskaityti. Įkėlimas bus atliekamas tam tikrais laiko tarpais (pagal numatytuosius nustatymus kas dvi valandas). - + 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? Pašalinti visus failus? - + Proceed with Deletion - + Restore Files to Server - + Restore Files from Server @@ -2916,22 +2839,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Bendri nustatymai + About Apie - - - Legal notice - Teisinis pranešimas - - - - General Settings - Bendri nustatymai - &Launch on System Startup @@ -2947,13 +2865,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Sistemos dėklui + + + Legal notice + Teisinis pranešimas + Use &Monochrome Icons Naudoti &vienspalves piktogramas - + Show Chat Notifications @@ -2962,6 +2885,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Rodyti serverio pra&nešimus + + + Advanced + Papildoma + + + + Ask for confirmation before synchronizing new folders larger than + + Updates @@ -2972,43 +2905,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Automatiškai tikrinti, ar nėra atnaujinimų - - - &Channel - &Kanalas - - - - - stable - stabilus - - - - - beta - beta - - - - &Restart && Update - &Paleisti iš naujo ir atnaujinti - - - - &Check for Update now - &Tikrinti dabar, ar nėra atnaujinimų - - - - Advanced - Papildoma - - - - Ask for confirmation before synchronizing new folders larger than - - MB @@ -3016,12 +2912,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Kanalas + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3031,12 +2932,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Patvirtinti, jei sinchronizuojami nuotoliniai aplankai - + Move removed files to trash - + + &Check for Update now + &Tikrinti dabar, ar nėra atnaujinimų + + + Show sync folders in &Explorer's navigation pane @@ -3045,6 +2951,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter Ro&dyti strigčių pranešyklę + + + Ask for confirmation before synchronizing folders larger than + Patvirtinti, jei sinchronizuojami aplankai yra didesni nei + Edit &Ignored Files @@ -3057,68 +2968,48 @@ Alternatively, you can restore all deleted files by downloading them from the se Sukurti derinimo archyvą - + Info Informacija - - Ask for confirmation before synchronizing folders larger than - Patvirtinti, jei sinchronizuojami aplankai yra didesni nei - - - + Desktop client x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Rodyti sinchronizavimo aplankus failų naršyklės naršymo srityje + + + Update channel - - Show sync folders in &Explorer's Navigation Pane - Rodyti sinchronizavimo aplankus failų naršyklės naršymo srityje + + &Restart && Update + &Paleisti iš naujo ir atnaujinti - + &Automatically check for updates - + Check Now Tikrinti dabar - + Usage Documentation - - - Legal Notice - - - Use &monochrome icons - Naudoti &vienspalves piktogramas - - - - &Launch on system startup - &Paleisti įjungiant kompiuterį - - - - Show server &notifications - Rodyti serverio pra&nešimus - - - - Show call notifications + Legal Notice @@ -3127,7 +3018,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Serverio perspėjimai, reikalaujantys imtis veiksmų. - + Show chat notification dialogs. @@ -3141,6 +3032,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. + + + + stable + stabilus + + + + + beta + beta + Change update channel? @@ -3154,24 +3057,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar - + daily kasdien - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3180,17 +3076,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3198,12 +3084,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4363,7 +4249,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4436,8 +4322,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4559,7 +4445,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Nepavyko sukurti aplanko %1 - + The folder %1 cannot be made read-only: %2 @@ -4590,7 +4476,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4966,6 +4852,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -4992,7 +4893,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5129,16 +5030,16 @@ Server replied with error: %2 Copy public link Kopijuoti viešąją nuorodą - - - Encrypt - Šifruoti - Copy secure filedrop link + + + Encrypt + Šifruoti + Lock file @@ -5160,16 +5061,16 @@ Server replied with error: %2 remaining time before lock expires Baigia galioti po %1 minutėsBaigia galioti po %1 minučiųBaigia galioti po %1 minučiųBaigia galioti po %1 minutės - - - Edit - Taisyti - Open in browser Atverti naršyklėje + + + Edit + Taisyti + Resolve conflict … @@ -5625,7 +5526,7 @@ Server replied with error: %2 <p>%1 darbalaukio kliento programa</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) @@ -5636,7 +5537,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6030,12 +5931,12 @@ Server replied with error: %2 - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6111,23 +6012,23 @@ Server replied with error: %2 Sinchronizuojamų aplankų nėra - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6291,12 +6192,12 @@ Server replied with error: %2 Naujas aplankas - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6477,7 +6378,7 @@ Server replied with error: %2 - + Allow resharing @@ -6534,6 +6435,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6597,54 +6508,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - Atverti vietinį aplanką - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6929,7 +6792,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7334,6 +7197,54 @@ Server replied with error: %2 Kopijuoti nuorodą + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + Atverti vietinį aplanką + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_lv.ts b/translations/client_lv.ts index c4015799f04db..c01269db26069 100644 --- a/translations/client_lv.ts +++ b/translations/client_lv.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1264,34 +1187,34 @@ Vienīgā priekšrocība, izslēdzot virtuālo datņu atbalstu, ir tas, ka atkal Turpināt - + %1 accounts number of accounts imported %1 konti - + 1 account 1 konts - + %1 folders number of folders imported %1 mapes - + 1 folder 1 mape - + Legacy import Mantojuma imports - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1757,13 +1680,13 @@ Vienīgā priekšrocība, izslēdzot virtuālo datņu atbalstu, ir tas, ka atkal Servera kļūda: PROPFIND atbilde nav XML formātā! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2264,16 +2187,11 @@ Varētu būt problēma ar jūsu OpenSSL bibliotēkām. Lūdzu ieej iestatījumos un izvēlies to, ja tu to gribi lejupielādēt. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - Turpināt sinhronizāciju - All files in the sync folder "%1" folder were deleted on the server. @@ -2282,6 +2200,11 @@ If you decide to restore the files, they will be re-synced with the server if yo If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + + Keep syncing + Turpināt sinhronizāciju + 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. @@ -2289,16 +2212,16 @@ 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. - - - Stop syncing - Pārtraukt sinhronizāciju - Remove All Files? Noņemt visas datnes? + + + Stop syncing + Pārtraukt sinhronizāciju + Remove all files @@ -2310,12 +2233,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Saglabāt datnes - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2339,41 +2262,41 @@ This means that the synchronization client might not upload local changes immedi - + 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 @@ -2925,22 +2848,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Vispārīgie iestatījumi + About Par - - - Legal notice - - - - - General Settings - Vispārīgie iestatījumi - &Launch on System Startup @@ -2956,13 +2874,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Sistēmas ikonjoslai + + + Legal notice + + Use &Monochrome Icons - + Show Chat Notifications @@ -2972,50 +2895,23 @@ Alternatively, you can restore all deleted files by downloading them from the se - - Updates - Atjauninājumi - - - - &Automatically check for Updates - + + Advanced + Papildus - - &Channel + + Ask for confirmation before synchronizing new folders larger than - - - stable - stabilā - - - - - beta - beta - - - - &Restart && Update - &Restartēt && Atjaunināt - - - - &Check for Update now - &Pārbaudīt atjauninājumu tagad - - - - Advanced - Papildus + + Updates + Atjauninājumi - - Ask for confirmation before synchronizing new folders larger than + + &Automatically check for Updates @@ -3025,12 +2921,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3040,12 +2941,17 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Move removed files to trash - + + &Check for Update now + &Pārbaudīt atjauninājumu tagad + + + Show sync folders in &Explorer's navigation pane @@ -3054,6 +2960,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter P&arādīt avārijas ziņojumu + + + Ask for confirmation before synchronizing folders larger than + Prasīt apstiprinājumu pirms mapju sinhronizēšanas, kas ir lielākas par + Edit &Ignored Files @@ -3066,77 +2977,57 @@ Alternatively, you can restore all deleted files by downloading them from the se Izveidot atkļūdošanas arhīvu - + Info Info - - Ask for confirmation before synchronizing folders larger than - Prasīt apstiprinājumu pirms mapju sinhronizēšanas, kas ir lielākas par - - - + Desktop client x.x.x Darbvirsmas klients x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Rādīt sinhronizācijas mapes &Pārlūka navigācijas panelī + + + Update channel Atjaunināšanas kanāls - - Show sync folders in &Explorer's Navigation Pane - Rādīt sinhronizācijas mapes &Pārlūka navigācijas panelī + + &Restart && Update + &Restartēt && Atjaunināt - + &Automatically check for updates &Automātiski pārbaudīt atjauninājumus - + Check Now Pārbaudīt tagad - + Usage Documentation Lietošanas dokumentācija - + Legal Notice Juridiskais paziņojums - - - Use &monochrome icons - Izmantot &monohromās ikonas - - - - &Launch on system startup - &Palaist sistēmas startēšanas laikā - - - - Show server &notifications - Rādīt servera &paziņojumus - - - - Show call notifications - Rādīt zvanu paziņojumus - Server notifications that require attention. Serveru paziņojumi, kas prasa uzmanību. - + Show chat notification dialogs. @@ -3150,6 +3041,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Jūs nevarat atspējot automātisko startu, jo sistēmas līmeņa automātiskais starts ir iespējots. + + + + stable + stabilā + + + + + beta + beta + Change update channel? @@ -3165,24 +3068,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Ņemiet vērā, ka tas nosaka tikai no kura kopuma atjauninājumi tiek ņemti, un nav iespējams veikt versijas pazemināšanu: Tāpēc atgriešanās no beta kanāla uz stabilo kanālu parasti nevar tikt veikta nekavējoties un nozīmē gaidīt stabilo versiju, kas ir jaunāka par pašreiz instalēto beta versiju. - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3191,17 +3087,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3209,12 +3095,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4374,7 +4260,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4447,8 +4333,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4570,7 +4456,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + The folder %1 cannot be made read-only: %2 @@ -4601,7 +4487,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4977,6 +4863,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5003,7 +4904,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5141,13 +5042,13 @@ Server replied with error: %2 - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5171,16 +5072,16 @@ Server replied with error: %2 remaining time before lock expires - - - Edit - Labot - Open in browser + + + Edit + Labot + Resolve conflict … @@ -5634,7 +5535,7 @@ Server replied with error: %2 - + <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) @@ -5645,7 +5546,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6039,12 +5940,12 @@ Server replied with error: %2 - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6120,23 +6021,23 @@ Server replied with error: %2 Nav konfigurētas sinhronizācijas mapes - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6300,12 +6201,12 @@ Server replied with error: %2 Jauna mape - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6486,7 +6387,7 @@ Server replied with error: %2 - + Allow resharing Atļaut atkārtotu koplietošanu @@ -6543,6 +6444,16 @@ Server replied with error: %2 Share password Koplietot paroli + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6606,54 +6517,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - Atvērt lokālās vai grupas mapes - - - - Open local folder - Atvērt lokālo mapi - - - - Connected - Savienots - - - - Disconnected - Atvienots - - - - Group folder button - Mapju grupēšanas poga - - - - Open local folder "%1" - Atvērt lokālo mapi "%1" - - - - Open group folder "%1" - Atvērt grupas mapi "%1" - - - - Open %1 in file explorer - Atvērt %1 datņu pārlūkā - - - - User group and local folders menu - Lietotāja grupas un lokālo mapju izvēlne - - TrayWindowHeader @@ -6938,7 +6801,7 @@ Server replied with 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>Izveidots no Git revīzijas <a href="%1">%2</a> %3, %4, izmantojot Qt %5, %6</small></p> @@ -7343,6 +7206,54 @@ Server replied with error: %2 Kopēt saiti + + TrayFoldersMenuButton + + + Open local or group folders + Atvērt lokālās vai grupas mapes + + + + Open local folder + Atvērt lokālo mapi + + + + Connected + Savienots + + + + Disconnected + Atvienots + + + + Group folder button + Mapju grupēšanas poga + + + + Open local folder "%1" + Atvērt lokālo mapi "%1" + + + + Open group folder "%1" + Atvērt grupas mapi "%1" + + + + Open %1 in file explorer + Atvērt %1 datņu pārlūkā + + + + User group and local folders menu + Lietotāja grupas un lokālo mapju izvēlne + + Window diff --git a/translations/client_mk.ts b/translations/client_mk.ts index bb73f6a5e7c76..68d3cd1dfe977 100644 --- a/translations/client_mk.ts +++ b/translations/client_mk.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1254,34 +1177,34 @@ This action will abort any currently running synchronization. Продолжи - + %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. @@ -1746,13 +1669,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2252,16 +2175,11 @@ This can be an issue with your OpenSSL libraries. Одете во параметрите и изберете ја ако сакате да ја преземете. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2270,6 +2188,11 @@ If you decide to restore the files, they will be re-synced with the server if yo If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + + Keep syncing + + 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. @@ -2277,16 +2200,16 @@ 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. - - - Stop syncing - - Remove All Files? Дали сакате да ги избришете сите датотеки? + + + Stop syncing + + Remove all files @@ -2298,12 +2221,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Задржи ги датотеките - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2327,41 +2250,41 @@ This means that the synchronization client might not upload local changes immedi - + 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 @@ -2913,22 +2836,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Општи параметри + About За - - - Legal notice - Правно известување - - - - General Settings - Општи параметри - &Launch on System Startup @@ -2944,13 +2862,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray + + + Legal notice + Правно известување + Use &Monochrome Icons Користи &монохроматски икони - + Show Chat Notifications @@ -2959,6 +2882,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Прикажи &известувања од серверот. + + + Advanced + Напредно + + + + Ask for confirmation before synchronizing new folders larger than + + Updates @@ -2969,43 +2902,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Автоматски проверувај за ажурирања - - - &Channel - &Канал - - - - - stable - стабилна - - - - - beta - бета - - - - &Restart && Update - &Рестартирај && Ажурирај - - - - &Check for Update now - &Провери за ажурирање сега - - - - Advanced - Напредно - - - - Ask for confirmation before synchronizing new folders larger than - - MB @@ -3013,12 +2909,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Канал + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3028,12 +2929,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Побарај потврда за синхроницација на надворешни складишта - + Move removed files to trash - + + &Check for Update now + &Провери за ажурирање сега + + + Show sync folders in &Explorer's navigation pane @@ -3042,6 +2948,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter + + + Ask for confirmation before synchronizing folders larger than + Побарај потврда за синхронизација на папки поголеми од + Edit &Ignored Files @@ -3054,68 +2965,48 @@ Alternatively, you can restore all deleted files by downloading them from the se Креирај Debug архива - + Info - - Ask for confirmation before synchronizing folders larger than - Побарај потврда за синхронизација на папки поголеми од - - - + Desktop client x.x.x - - - Update channel - - Show sync folders in &Explorer's Navigation Pane Покажи ги папките што се синхронизираат во навигационата лента на &прелистувачот - - &Automatically check for updates - - - - - Check Now - - - - - Usage Documentation + + Update channel - - Legal Notice - + + &Restart && Update + &Рестартирај && Ажурирај - - Use &monochrome icons + + &Automatically check for updates - - &Launch on system startup + + Check Now - - Show server &notifications + + Usage Documentation - - Show call notifications + + Legal Notice @@ -3124,7 +3015,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Известувања од серверот за кој е потребно внимание. - + Show chat notification dialogs. @@ -3138,6 +3029,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. + + + + stable + стабилна + + + + + beta + бета + Change update channel? @@ -3152,24 +3055,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Имајте во предвид дека ова само избира врзии што ќе се преземат од базенот и дека нема враќање назад: Значи, враќањето од бета-каналот до стабилниот канал обично не може да се направи веднаш и треба да се чека стабилна верзија која е понова од тековно инсталираната бета-верзија. - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3178,17 +3074,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3196,12 +3082,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4361,7 +4247,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4434,8 +4320,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4557,7 +4443,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + The folder %1 cannot be made read-only: %2 @@ -4588,7 +4474,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4964,6 +4850,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -4990,7 +4891,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5128,13 +5029,13 @@ Server replied with error: %2 Копирај јавен линк - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5158,16 +5059,16 @@ Server replied with error: %2 remaining time before lock expires - - - Edit - Уреди - Open in browser Отвори во прелистувач + + + Edit + Уреди + Resolve conflict … @@ -5623,7 +5524,7 @@ Server replied with error: %2 <p>%1 Клиент за компјутер</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) @@ -5634,7 +5535,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6028,12 +5929,12 @@ Server replied with error: %2 Серверот каде што се наоѓа %1 е премногу застарен и не ја поддржува верзијата %2. Користењето клиент со неподдржана верзија на сервер не е тестирано и потенцијално опасно. Продолжете на ваша одговорност. - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6109,23 +6010,23 @@ Server replied with error: %2 Нема папки за синхронизација. - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6289,12 +6190,12 @@ Server replied with error: %2 Нова папка - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6475,7 +6376,7 @@ Server replied with error: %2 Испуши датотека (само за прикачување) - + Allow resharing @@ -6532,6 +6433,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6595,54 +6506,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - Поврзан - - - - Disconnected - Исклучен - - - - Group folder button - - - - - Open local folder "%1" - Отвори ја локалната папка "%1" - - - - Open group folder "%1" - Отвори ја групната папка "%1" - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6927,7 +6790,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7332,6 +7195,54 @@ Server replied with error: %2 Копирај линк + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + Поврзан + + + + Disconnected + Исклучен + + + + Group folder button + + + + + Open local folder "%1" + Отвори ја локалната папка "%1" + + + + Open group folder "%1" + Отвори ја групната папка "%1" + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_nb_NO.ts b/translations/client_nb_NO.ts index 158454d555c20..a47875c6add79 100644 --- a/translations/client_nb_NO.ts +++ b/translations/client_nb_NO.ts @@ -342,11 +342,6 @@ Signal file provider domain Domene for signalfilleverandør - - - Create debug archive - Opprett feilsøkingsarkiv - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1264,34 +1187,34 @@ Denne handlingen vil avbryte enhver synkronisering som kjører. Fortsett - + %1 accounts number of accounts imported %1 kontoer - + 1 account 1 konto - + %1 folders number of folders imported %1 mapper - + 1 folder 1 mappe - + Legacy import Eldre import - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1757,13 +1680,13 @@ Denne handlingen vil avbryte enhver synkronisering som kjører. Serverfeil: PROPFIND-svaret er ikke XML-formatert! - - + + Encrypted metadata setup error! Feil ved oppsett av kryptert metadata! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2263,17 +2186,12 @@ Dette kan være et problem med OpenSSL-bibliotekene dine. Gå til Innstillinger og velg den hvis du ønsker å laste den ned. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 En mappe har overskredet den angitte mappestørrelsesgrensen på %1MB: %2. %3 - - - Keep syncing - Fortsett å synkronisere - All files in the sync folder "%1" folder were deleted on the server. @@ -2285,6 +2203,11 @@ Disse slettingene vil bli synkronisert til din lokale synkroniseringsmappe, noe Hvis du bestemmer deg for å gjenopprette filene, vil de synkroniseres på nytt med serveren hvis du har rettigheter til det. Hvis du bestemmer deg for å slette filene, vil de være utilgjengelige for deg, med mindre du er eieren. + + + Keep syncing + Fortsett å synkronisere + 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. @@ -2294,16 +2217,16 @@ If this was an accident and you decide to keep your files, they will be re-synce Er du sikker på at du vil synkronisere disse handlingene med serveren? Hvis dette var et uhell og du bestemmer deg for å beholde filene dine, vil de synkroniseres på nytt fra serveren. - - - Stop syncing - Stopp synkroniseringen - Remove All Files? Vil du fjerne alle filer? + + + Stop syncing + Stopp synkroniseringen + Remove all files @@ -2315,12 +2238,12 @@ Hvis dette var et uhell og du bestemmer deg for å beholde filene dine, vil de s Behold filer - + The folder %1 has surpassed the set folder size limit of %2MB. Mappen %1 har overskredet den angitte mappestørrelsesgrensen på %2MB. - + Would you like to stop syncing this folder? Vil du slutte å synkronisere denne mappen? @@ -2348,41 +2271,41 @@ Dette betyr at synkroniseringsklienten kanskje ikke laster opp lokale endringer %1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" Virtuell nedlasting av filen feilet med kode "%1", status "%2" og feilmelding "%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? Fjerne alle filer? - + Proceed with Deletion - + Restore Files to Server - + Restore Files from Server @@ -2934,22 +2857,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Vanlige innstillinger + About Om - - - Legal notice - Juridisk varsel - - - - General Settings - Vanlige innstillinger - &Launch on System Startup @@ -2965,13 +2883,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray For systemkurven + + + Legal notice + Juridisk varsel + Use &Monochrome Icons Bruk svart/&hvite ikoner - + Show Chat Notifications @@ -2980,6 +2903,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Vis server og &varsler + + + Advanced + Avansert + + + + Ask for confirmation before synchronizing new folders larger than + Be om bekreftelse før du synkroniserer nye mapper større enn + Updates @@ -2990,43 +2923,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Se etter oppdateringer automatisk - - - &Channel - &Kanal - - - - - stable - stabil - - - - - beta - beta - - - - &Restart && Update - &Omstart && Oppdater - - - - &Check for Update now - &Se etter oppdatering nå - - - - Advanced - Avansert - - - - Ask for confirmation before synchronizing new folders larger than - Be om bekreftelse før du synkroniserer nye mapper større enn - MB @@ -3034,12 +2930,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Kanal + + + Notify when synchronised folders grow larger than specified limit Varsle når synkroniserte mapper vokser seg større enn spesifisert grense - + Automatically disable synchronisation of folders that overcome limit Deaktiver automatisk synkronisering av mapper som overvinner grensen @@ -3049,12 +2950,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Be om bekreftelse før synkronisering av eksterne lagre - + Move removed files to trash Flytt fjernede filer til papirkurven - + + &Check for Update now + &Se etter oppdatering nå + + + Show sync folders in &Explorer's navigation pane Vis synkroniseringsmapper i &Utforskerens navigasjonsrute @@ -3063,6 +2969,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter Vis &krasj-rapportering + + + Ask for confirmation before synchronizing folders larger than + Be om bekreftelse før synkronisering av mapper større enn + Edit &Ignored Files @@ -3075,77 +2986,57 @@ Alternatively, you can restore all deleted files by downloading them from the se Opprett feilsøkingsarkiv - + Info Info - - Ask for confirmation before synchronizing folders larger than - Be om bekreftelse før synkronisering av mapper større enn - - - + Desktop client x.x.x Skrivebordsklient x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Vis synkroniseringsmapper i &Utforskers navigasjonspanel + + + Update channel Oppdateringskanal - - Show sync folders in &Explorer's Navigation Pane - Vis synkroniseringsmapper i &Utforskers navigasjonspanel + + &Restart && Update + &Omstart && Oppdater - + &Automatically check for updates &se etter oppdateringer automatisk - + Check Now Sjekk nå - + Usage Documentation Bruksdokumentasjon - + Legal Notice Juridiske merknader - - - Use &monochrome icons - Bruk &monokrome ikoner - - - - &Launch on system startup - &Start ved oppstart av systemet - - - - Show server &notifications - Vis server &varslinger - - - - Show call notifications - Vis anropsvarsler - Server notifications that require attention. Servervarsler som krever oppmerksomhet. - + Show chat notification dialogs. @@ -3159,6 +3050,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Du kan ikke deaktivere autostart fordi systemomfattende autostart er aktivert. + + + + stable + stabil + + + + + beta + beta + Change update channel? @@ -3174,25 +3077,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Merk at dette kun velger hvilke oppgraderinger av bassenget er hentet fra, og at det ikke er noen nedgraderinger: Så å gå tilbake fra betakanalen til den stabile kanalen kan vanligvis ikke gjøres umiddelbart og betyr at man venter på en stabil versjon som er nyere enn den installerte betaen. versjon. - + daily daglig - + enterprise foretagende - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - foretagende: inneholder stabile versjoner for kunder. - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3201,22 +3096,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Kanalen bestemmer hvilke oppgraderinger som skal tilbys å installere: -- stabil: inneholder testede versjoner som anses som pålitelige -- beta: inneholder versjoner med nye funksjoner som kanskje ikke testes grundig -- daglig: inneholder versjoner som kun opprettes daglig for testing og utvikling -%1 -Nedgradering av versjoner er ikke mulig umiddelbart: endring fra beta til stabil betyr å vente på den nye stabile versjonen. - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3224,12 +3104,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? Bytte oppdateringskanal? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4398,7 +4278,7 @@ Dette er en ny, eksperimentell modus. Hvis du bestemmer deg for å bruke den, ve Kan ikke synkronisere på grunn av ugyldig endringstid - + Could not upload file, because it is open in "%1". Kunne ikke laste opp filen, fordi den er åpen i "%1". @@ -4471,8 +4351,8 @@ Dette er en ny, eksperimentell modus. Hvis du bestemmer deg for å bruke den, ve Feil under oppdatering av metadata på grunn av ugyldig endringstid - - + + The folder %1 cannot be made read-only: %2 Mappen %1 kan ikke gjøres skrivebeskyttet: %2 @@ -4594,7 +4474,7 @@ Dette er en ny, eksperimentell modus. Hvis du bestemmer deg for å bruke den, ve Kunne ikke opprette mappen %1 - + The folder %1 cannot be made read-only: %2 Mappen %1 kan ikke gjøres skrivebeskyttet: %2 @@ -4625,7 +4505,7 @@ Dette er en ny, eksperimentell modus. Hvis du bestemmer deg for å bruke den, ve OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! Mappe %1 kan ikke omdøpes på grunn av et lokalt fil- eller mappenavn-sammenstøt! @@ -5001,6 +4881,21 @@ Dette er en ny, eksperimentell modus. Hvis du bestemmer deg for å bruke den, ve OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5027,7 +4922,7 @@ Dette er en ny, eksperimentell modus. Hvis du bestemmer deg for å bruke den, ve Sikker filslipp - + Could not find local folder for %1 Kunne ikke finne lokal mappe for %1 @@ -5166,16 +5061,16 @@ Server svarte med feil: %2 Copy public link Kopier offentlig lenke - - - Encrypt - Krypter - Copy secure filedrop link Kopier sikker filedrop-lenke + + + Encrypt + Krypter + Lock file @@ -5197,16 +5092,16 @@ Server svarte med feil: %2 remaining time before lock expires Utløper om %1 minutterUtløper om %1 minutter - - - Edit - Rediger - Open in browser Åpne i nettleser + + + Edit + Rediger + Resolve conflict … @@ -5662,7 +5557,7 @@ Server svarte med feil: %2 <p>%1 skrivebordsklient</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>%1Skrivebordsklient</p><p>Versjon %1. For mer informasjon, vennligst klikk <a href='%2'>her</a>.</p> @@ -5673,7 +5568,7 @@ Server svarte med feil: %2 <p><small>Bruker plugin for virtuelle filer: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 skrivebordsklient %2</p> @@ -6067,12 +5962,12 @@ Server svarte med feil: %2 Serveren på kontoen %1 kjører en versjon %2 som ikke støttes. Å bruke denne klienten med ikke-støttede serverversjoner er uprøvd og potensielt farlig. Fortsett på egen risiko. - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6148,23 +6043,23 @@ Server svarte med feil: %2 Ingen synkroniseringsmapper er konfigurert - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. macOS VFS for %1: Synkronisering kjører. - + macOS VFS for %1: Last sync was successful. macOS VFS for %1: Siste synkronisering var vellykket. - + macOS VFS for %1: A problem was encountered. macOS VFS for %1: Et problem oppstod. @@ -6328,12 +6223,12 @@ Server svarte med feil: %2 Ny mappe - + Failed to create debug archive Kan ikke opprette feilsøkingsarkiv - + Could not create debug archive in selected location! Kan ikke opprette feilsøkingsarkiv på valgt plassering! @@ -6514,7 +6409,7 @@ Server svarte med feil: %2 Filslipp (kun opplasting) - + Allow resharing Tillat videredeling @@ -6571,6 +6466,16 @@ Server svarte med feil: %2 Share password Del passord + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6634,54 +6539,6 @@ Server svarte med feil: %2 Send svar på chatmelding - - TrayFoldersMenuButton - - - Open local or group folders - Åpne lokale mapper eller gruppemapper - - - - Open local folder - Åpne lokal mappe - - - - Connected - Tilkoblet - - - - Disconnected - Koblet fra - - - - Group folder button - Gruppemappeknapp - - - - Open local folder "%1" - Åpne den lokale mappen «% 1» - - - - Open group folder "%1" - Åpne gruppemappen «% 1» - - - - Open %1 in file explorer - Åpne %1 i filutforsker - - - - User group and local folders menu - Meny for brukergruppe og lokale mapper - - TrayWindowHeader @@ -6966,7 +6823,7 @@ Server svarte med feil: %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>Bygget fra Git-revisjon <a href="%1">%2</a> den %3, %4 med Qt %5, %6</small></p> @@ -7371,6 +7228,54 @@ Server svarte med feil: %2 Kopier lenke + + TrayFoldersMenuButton + + + Open local or group folders + Åpne lokale mapper eller gruppemapper + + + + Open local folder + Åpne lokal mappe + + + + Connected + Tilkoblet + + + + Disconnected + Koblet fra + + + + Group folder button + Gruppemappeknapp + + + + Open local folder "%1" + Åpne den lokale mappen «% 1» + + + + Open group folder "%1" + Åpne gruppemappen «% 1» + + + + Open %1 in file explorer + Åpne %1 i filutforsker + + + + User group and local folders menu + Meny for brukergruppe og lokale mapper + + Window diff --git a/translations/client_nl.ts b/translations/client_nl.ts index 7a498aaac2092..137aea7454d02 100644 --- a/translations/client_nl.ts +++ b/translations/client_nl.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - Debugarchief maken - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1260,34 +1183,34 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken.Doorgaan - + %1 accounts number of accounts imported %1 accounts - + 1 account 1 account - + %1 folders number of folders imported %1 mappen - + 1 folder 1 map - + Legacy import Legacy import - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1753,13 +1676,13 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken.Serverfout: PROPFIND-antwoord heeft geen XML-opmaak! - - + + Encrypted metadata setup error! Fout bij instellen versleutelde metadata! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2260,17 +2183,12 @@ Dit kan een probleem zijn met je OpenSSL-bibliotheken. 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 Een map is groter geworden dan de ingestelde limiet van %1MB: %2. %3 - - - Keep syncing - Doorgaan met synchronisatie - All files in the sync folder "%1" folder were deleted on the server. @@ -2282,6 +2200,11 @@ Deze verwijderingen worden gesynchroniseerd naar je lokale syncmap, waardoor dez 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. + + + Keep syncing + Doorgaan met synchronisatie + 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. @@ -2290,16 +2213,16 @@ If this was an accident and you decide to keep your files, they will be re-synce 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. - - - Stop syncing - Stop synchronisatie - Remove All Files? Alle bestanden verwijderen? + + + Stop syncing + Stop synchronisatie + Remove all files @@ -2311,12 +2234,12 @@ Als dit een ongelukje was en je de bestanden wilt behouden, worden ze opnieuw ge Bestanden bewaren - + The folder %1 has surpassed the set folder size limit of %2MB. De map %1 is groter geworden dan de ingestelde limiet van %2MB - + Would you like to stop syncing this folder? Wil je stoppen met het synchroniseren van deze map? @@ -2344,41 +2267,41 @@ 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? Alle bestanden verwijderen? - + Proceed with Deletion - + Restore Files to Server - + Restore Files from Server @@ -2931,22 +2854,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Algemene instellingen + About Over - - - Legal notice - Juridische bepalingen - - - - General Settings - Algemene instellingen - &Launch on System Startup @@ -2962,13 +2880,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Voor systeemvak + + + Legal notice + Juridische bepalingen + Use &Monochrome Icons Gebruik &monochrome pictogrammen - + Show Chat Notifications @@ -2977,6 +2900,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Tonen server&meldingen + + + Advanced + Geavanceerd + + + + Ask for confirmation before synchronizing new folders larger than + Vraag bevestiging voordat mappen worden gesynchroniseerd groter dan + Updates @@ -2987,43 +2920,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Controleer automatisch op updates - - - &Channel - &Kanaal - - - - - stable - stabiel - - - - - beta - beta - - - - &Restart && Update - &Herstarten && Bijwerken - - - - &Check for Update now - &Controleer nu op update - - - - Advanced - Geavanceerd - - - - Ask for confirmation before synchronizing new folders larger than - Vraag bevestiging voordat mappen worden gesynchroniseerd groter dan - MB @@ -3031,12 +2927,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Kanaal + + + Notify when synchronised folders grow larger than specified limit Melding als gesynchroniseerde mappen groter worden dan de opgegeven limiet - + Automatically disable synchronisation of folders that overcome limit Synchronisatie automatisch uitschakelen van mappen die de limiet overschrijden @@ -3046,12 +2947,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Vraag bevestiging voor synchronisatie van mappen op externe opslag - + Move removed files to trash Verplaats verwijderde bestanden naar de prullenbak - + + &Check for Update now + &Controleer nu op update + + + Show sync folders in &Explorer's navigation pane Toon synchronisatiemappen in &Verkennen navigatievenster @@ -3060,6 +2966,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter T&onen crash reporter + + + Ask for confirmation before synchronizing folders larger than + Vraag bevestiging voordat mappen worden gedownload groter dan + Edit &Ignored Files @@ -3072,77 +2983,57 @@ Alternatively, you can restore all deleted files by downloading them from the se Debugarchief maken - + Info Info - - Ask for confirmation before synchronizing folders larger than - Vraag bevestiging voordat mappen worden gedownload groter dan - - - + Desktop client x.x.x Desktop cliënt x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Toon sync-mappen in het &Verkenner navigatievenster + + + Update channel Bijwerkkanaal - - Show sync folders in &Explorer's Navigation Pane - Toon sync-mappen in het &Verkenner navigatievenster + + &Restart && Update + &Herstarten && Bijwerken - + &Automatically check for updates &Controleer automatisch op updates - + Check Now Controleer nu - + Usage Documentation Gebruiksdocumentatie - + Legal Notice Juridische bepalingen - - - Use &monochrome icons - Gebruik &monochrome pictogrammen - - - - &Launch on system startup - &Starten bij systeemstart - - - - Show server &notifications - Toon server&meldingen - - - - Show call notifications - Toon oproepmeldingen - Server notifications that require attention. Servermeldingen die aandacht nodig hebben. - + Show chat notification dialogs. @@ -3156,6 +3047,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Je kunt autostart niet uitschakelen omdat systeem-brede autostart is ingeschakeld. + + + + stable + stabiel + + + + + beta + beta + Change update channel? @@ -3171,25 +3074,17 @@ 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. - + daily dagelijks - + enterprise zakelijk - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - zakelijk: omvat stabiele versie voor klanten. - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3198,22 +3093,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Het kanaal bepaalt welke opwaarderingen aangeboden worden voor installatie: -- stable: omvat geteste versie die betrouwbaar worden geacht -- bèta: omvat versies met nieuwe functies die nog niet grondig getest kunnen zijn -- daily: omvat versies die dagelijks gemaakt worden, alleen voor testen en ontwikkeling -%1 -Teruggaan naar een eerdere versie is net meteen mogelijk: aanpassen van bèta naar stable betekent wachten op de volgende stabiele versie. - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3221,12 +3101,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? Wijzigen bijwerkkanaal? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4395,7 +4275,7 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen Kan niet synchroniseren door ongeldig wijzigingstijdstip - + Could not upload file, because it is open in "%1". Kan bestand niet uploaden, omdat het geopend is in "%1". @@ -4468,8 +4348,8 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen Fout bij bijwerken metadata door ongeldige laatste wijziging datum - - + + The folder %1 cannot be made read-only: %2 Map %1 kon niet alleen-lezen gemaakt worden: %2 @@ -4591,7 +4471,7 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen Kon map %1 niet maken - + The folder %1 cannot be made read-only: %2 Map %1 kon niet alleen-lezen gemaakt worden: %2 @@ -4622,7 +4502,7 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! Map %1 kan niet worden hernoemd wegens een lokaal map- of bestandsnaam conflict! @@ -4998,6 +4878,21 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5024,7 +4919,7 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen Beveiligde bestands-drop - + Could not find local folder for %1 Kan lokale map niet vinden voor %1 @@ -5163,16 +5058,16 @@ Server antwoordde met fout: %2 Copy public link Kopieer openbare link - - - Encrypt - Versleutel - Copy secure filedrop link Kopieer beveiligde bestands-drop link + + + Encrypt + Versleutel + Lock file @@ -5194,16 +5089,16 @@ Server antwoordde met fout: %2 remaining time before lock expires Vervalt over %n maandenVervalt over %1 minuut/minuten - - - Edit - Bewerken - Open in browser Openen in browser + + + Edit + Bewerken + Resolve conflict … @@ -5659,7 +5554,7 @@ Server antwoordde met fout: %2 <p>%1 Desktop Client</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. Voor meer informatie klik <a href='%2'>hier</a>.</p> @@ -5670,7 +5565,7 @@ Server antwoordde met fout: %2 <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>%1 desktop cliënt %2</p> @@ -6064,12 +5959,12 @@ Server antwoordde met fout: %2 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. - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6145,23 +6040,23 @@ Server antwoordde met fout: %2 Geen syncmappen geconfigureerd - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6325,12 +6220,12 @@ Server antwoordde met fout: %2 Nieuwe map - + Failed to create debug archive Kon debugarchief niet maken - + Could not create debug archive in selected location! Kon debugarchief niet maken op de geselecteerde locatie! @@ -6511,7 +6406,7 @@ Server antwoordde met fout: %2 Bestands-drop (alleen uploaden) - + Allow resharing Verder delen toestaan @@ -6568,6 +6463,16 @@ Server antwoordde met fout: %2 Share password Wachtwoord + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6631,54 +6536,6 @@ Server antwoordde met fout: %2 Stuur antwoord op chatbericht - - TrayFoldersMenuButton - - - Open local or group folders - Open lokale of groepsmappen - - - - Open local folder - Open lokale map - - - - Connected - Verbonden - - - - Disconnected - Niet verbonden - - - - Group folder button - Knop groepsmap - - - - Open local folder "%1" - Open lokale map "%1" - - - - Open group folder "%1" - Open groepsmap "%1" - - - - Open %1 in file explorer - Open %1 in bestandsverkenner - - - - User group and local folders menu - Menu gebruikersgroep en lokale mappen - - TrayWindowHeader @@ -6963,7 +6820,7 @@ Server antwoordde met fout: %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>Gebouwd vanaf Git revisie <a href="%1">%2</a> op %3, %4 gebruik makend van Qt %5, %6</small></p> @@ -7368,6 +7225,54 @@ Server antwoordde met fout: %2 Link kopiëren + + TrayFoldersMenuButton + + + Open local or group folders + Open lokale of groepsmappen + + + + Open local folder + Open lokale map + + + + Connected + Verbonden + + + + Disconnected + Niet verbonden + + + + Group folder button + Knop groepsmap + + + + Open local folder "%1" + Open lokale map "%1" + + + + Open group folder "%1" + Open groepsmap "%1" + + + + Open %1 in file explorer + Open %1 in bestandsverkenner + + + + User group and local folders menu + Menu gebruikersgroep en lokale mappen + + Window diff --git a/translations/client_oc.ts b/translations/client_oc.ts index df3eea548ea8f..67d657d274047 100644 --- a/translations/client_oc.ts +++ b/translations/client_oc.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1254,34 +1177,34 @@ This action will abort any currently running synchronization. Contunhar - + %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. @@ -1744,13 +1667,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2248,16 +2171,11 @@ This can be an issue with your OpenSSL libraries. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2266,6 +2184,11 @@ If you decide to restore the files, they will be re-synced with the server if yo If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + + Keep syncing + + 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. @@ -2273,16 +2196,16 @@ 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. - - - Stop syncing - - Remove All Files? Suprimit totes los fichièrs ? + + + Stop syncing + + Remove all files @@ -2294,12 +2217,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Gardar los fichièrs - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2323,41 +2246,41 @@ This means that the synchronization client might not upload local changes immedi - + 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 @@ -2909,22 +2832,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Paramètres generals + About A prepaus - - - Legal notice - Avís legal - - - - General Settings - Paramètres generals - &Launch on System Startup @@ -2940,13 +2858,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray + + + Legal notice + Avís legal + Use &Monochrome Icons Utilizar las icònas &monocròmas - + Show Chat Notifications @@ -2955,6 +2878,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Mostrar las notificacions del servidor + + + Advanced + Avançat + + + + Ask for confirmation before synchronizing new folders larger than + Demandar una confirmacion abans de sincronizar los dossièrs novèls mai gròsses que + Updates @@ -2965,43 +2898,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates Verificar &automaticament las mesas a jorn - - - &Channel - &Canal - - - - - stable - estable - - - - - beta - beta - - - - &Restart && Update - &Reaviar e metre a jorn - - - - &Check for Update now - &Verificar las mesas a jorn ara - - - - Advanced - Avançat - - - - Ask for confirmation before synchronizing new folders larger than - Demandar una confirmacion abans de sincronizar los dossièrs novèls mai gròsses que - MB @@ -3009,12 +2905,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Mo - + + &Channel + &Canal + + + Notify when synchronised folders grow larger than specified limit Afichar una notificacion quand de dossièrs venon mai gròsses que lo limit especificat - + Automatically disable synchronisation of folders that overcome limit Desactivar automaticament la sincronizacion dels dossièrs que subrepassan lo limit @@ -3024,12 +2925,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Demandar una confirmacion abans de sincronizar los dossièrs extèrns - + Move removed files to trash Desplaçar a l’escobilhièr los fichièrs suprimits - + + &Check for Update now + &Verificar las mesas a jorn ara + + + Show sync folders in &Explorer's navigation pane @@ -3038,6 +2944,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter + + + Ask for confirmation before synchronizing folders larger than + Demandar una confirmacion abans de sincronizar dossièrs de mai de + Edit &Ignored Files @@ -3050,77 +2961,57 @@ Alternatively, you can restore all deleted files by downloading them from the se Crear un archiu de debugatge - + Info - - Ask for confirmation before synchronizing folders larger than - Demandar una confirmacion abans de sincronizar dossièrs de mai de + + Desktop client x.x.x + - - Desktop client x.x.x + + Show sync folders in &Explorer's Navigation Pane - + Update channel - - Show sync folders in &Explorer's Navigation Pane - + + &Restart && Update + &Reaviar e metre a jorn - + &Automatically check for updates Verificar &automaticament las mesas a jorn - + Check Now Verificar ara - + Usage Documentation - + Legal Notice - - - Use &monochrome icons - Utilizar las icònas &monocròmas - - - - &Launch on system startup - &Lançar a l’aviada del sistèma - - - - Show server &notifications - Mostrar las _notificacions del servidor - - - - Show call notifications - Mostrar las notificacions de sonadas - Server notifications that require attention. Las notificacions del servidor que demanda vòstra atencion. - + Show chat notification dialogs. @@ -3134,6 +3025,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. + + + + stable + estable + + + + + beta + beta + Change update channel? @@ -3147,24 +3050,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3173,17 +3069,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3191,12 +3077,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4352,7 +4238,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4425,8 +4311,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4548,7 +4434,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + The folder %1 cannot be made read-only: %2 @@ -4579,7 +4465,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4955,6 +4841,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -4981,7 +4882,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5119,13 +5020,13 @@ Server replied with error: %2 Copiar lo ligam public - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5149,16 +5050,16 @@ Server replied with error: %2 remaining time before lock expires - - - Edit - Modificar - Open in browser Dobrir dins lo navegador + + + Edit + Modificar + Resolve conflict … @@ -5614,7 +5515,7 @@ Server replied with error: %2 <p>Client de burèu %1</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) @@ -5625,7 +5526,7 @@ Server replied with error: %2 <p><small>Usatge extension pels fichièrs virtuals : %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6019,12 +5920,12 @@ Server replied with error: %2 - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6100,23 +6001,23 @@ Server replied with error: %2 - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6280,12 +6181,12 @@ Server replied with error: %2 Dossièr novèl - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6466,7 +6367,7 @@ Server replied with error: %2 - + Allow resharing @@ -6523,6 +6424,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6586,54 +6497,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6918,7 +6781,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7323,6 +7186,54 @@ Server replied with error: %2 Copiar lo ligam + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_pl.ts b/translations/client_pl.ts index 86e90b45c3ba3..be6e7b335d1b0 100644 --- a/translations/client_pl.ts +++ b/translations/client_pl.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - Dodaj konto - - - - Add new account - Dodaj nowe konto - - - + Unified search results list - - Settings - Ustawienia - - - - Exit - Wyjdź - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1264,34 +1187,34 @@ Ta czynność spowoduje przerwanie aktualnie uruchomionej synchronizacji.Kontynuuj - + %1 accounts number of accounts imported %1 kont - + 1 account 1 konto - + %1 folders number of folders imported %1 katalogów - + 1 folder 1 katalog - + Legacy import Import ze starszej wersji - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1757,13 +1680,13 @@ Ta czynność spowoduje przerwanie aktualnie uruchomionej synchronizacji.Błąd serwera: odpowiedź PROPFIND nie ma formatu XML! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2264,17 +2187,12 @@ Może to być problem z bibliotekami OpenSSL. Przejdź do ustawień, aby go wybrać do pobrania. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 Katalog przekroczył ustawiony limit rozmiaru katalogu wynoszący %1MB: %2. %3 - - - Keep syncing - Kontynuuj synchronizację - All files in the sync folder "%1" folder were deleted on the server. @@ -2286,6 +2204,11 @@ W momencie synchronizacji zostaną usunięte z lokalnego katalogu, co spowoduje Jeśli zdecydujesz się przywrócić pliki i posiadasz odpowiednie uprawnienia, zostaną one ponownie wysłane na serwer. Jeśli zdecydujesz się je usunąć, nie będą już dostępne. + + + Keep syncing + Kontynuuj synchronizację + 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. @@ -2295,16 +2218,16 @@ If this was an accident and you decide to keep your files, they will be re-synce Czy na pewno chcesz zsynchronizować te działania z serwerem? Jeśli to był przypadek i zdecydujesz się zachować swoje pliki, zostaną one przywrócone z serwera. - - - Stop syncing - Zatrzymaj synchronizację - Remove All Files? Usunąć wszystkie pliki? + + + Stop syncing + Zatrzymaj synchronizację + Remove all files @@ -2316,12 +2239,12 @@ Jeśli to był przypadek i zdecydujesz się zachować swoje pliki, zostaną one Zachowaj pliki - + The folder %1 has surpassed the set folder size limit of %2MB. Katalog %1 przekroczył ustawiony limit rozmiaru katalogu wynoszący %2MB. - + Would you like to stop syncing this folder? Czy chcesz zatrzymać synchronizację tego katalogu? @@ -2349,41 +2272,41 @@ Oznacza to, że klient synchronizacji może nie przesyłać natychmiast zmian lo %1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" Pobieranie pliku wirtualnego nie powiodło się z powodu kodu "%1", status "%2" i komunikatu o błędzie "%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? Usunąć wszystkie pliki? - + Proceed with Deletion - + Restore Files to Server - + Restore Files from Server @@ -2935,22 +2858,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Ustawienia ogólne + About O aplikacji - - - Legal notice - Nota prawna - - - - General Settings - Ustawienia ogólne - &Launch on System Startup @@ -2966,13 +2884,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray W zasobniku systemowym + + + Legal notice + Nota prawna + Use &Monochrome Icons Użyj ikon &monochromatycznych - + Show Chat Notifications @@ -2981,6 +2904,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Pokaż &powiadomienia serwera + + + Advanced + Zaawansowane + + + + Ask for confirmation before synchronizing new folders larger than + Zapytaj o potwierdzenie przed synchronizacją nowych katalogów większych niż + Updates @@ -2991,43 +2924,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Automatyczne sprawdzanie aktualizacji - - - &Channel - &Kanał - - - - - stable - stabilny - - - - - beta - beta - - - - &Restart && Update - &Uruchom ponownie i aktualizuj - - - - &Check for Update now - &Sprawdź aktualizację - - - - Advanced - Zaawansowane - - - - Ask for confirmation before synchronizing new folders larger than - Zapytaj o potwierdzenie przed synchronizacją nowych katalogów większych niż - MB @@ -3035,12 +2931,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Kanał + + + Notify when synchronised folders grow larger than specified limit Powiadamiaj, gdy zsynchronizowane katalogi osiągną rozmiar większy niż określony limit - + Automatically disable synchronisation of folders that overcome limit Automatycznie wyłączaj synchronizację katalogów, które przekraczają limit @@ -3050,12 +2951,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Zapytaj o potwierdzenie przed synchronizacją zewnętrznych magazynów - + Move removed files to trash Przenieś usunięte pliki do kosza - + + &Check for Update now + &Sprawdź aktualizację + + + Show sync folders in &Explorer's navigation pane Pokaż katalogi synchronizacji w panelu nawigacji &Eksploratora @@ -3064,6 +2970,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter Pokaż &raport awarii + + + Ask for confirmation before synchronizing folders larger than + Zapytaj o potwierdzenie przed synchronizacją katalogów większych niż + Edit &Ignored Files @@ -3076,77 +2987,57 @@ Alternatively, you can restore all deleted files by downloading them from the se Utwórz archiwum debugowania - + Info Informacje - - Ask for confirmation before synchronizing folders larger than - Zapytaj o potwierdzenie przed synchronizacją katalogów większych niż - - - + Desktop client x.x.x Klient na komputer x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Pokaż katalog synchronizacji w oknie &Exploratora + + + Update channel Kanał aktualizacji - - Show sync folders in &Explorer's Navigation Pane - Pokaż katalog synchronizacji w oknie &Exploratora + + &Restart && Update + &Uruchom ponownie i aktualizuj - + &Automatically check for updates &Automatycznie sprawdzaj dostępność aktualizacji - + Check Now Sprawdź teraz - + Usage Documentation Dokumentacja użytkowania - + Legal Notice Nota prawna - - - Use &monochrome icons - Użyj &monochromatycznych ikon - - - - &Launch on system startup - &Uruchamiaj przy starcie systemu - - - - Show server &notifications - &Pokaż powiadomienia serwera - - - - Show call notifications - Pokaż powiadomienia o połączeniach - Server notifications that require attention. Powiadomienia serwera, które wymagają uwagi. - + Show chat notification dialogs. @@ -3160,6 +3051,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Nie można wyłączyć autostartu, ponieważ autostart całego systemu jest włączony. + + + + stable + stabilny + + + + + beta + beta + Change update channel? @@ -3175,24 +3078,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Zwróć uwagę, że wybiera to tylko, z której puli aktualizacje są pobierane oraz że nie można powrócić do niższej wersji. Więc powrót z kanału beta do stabilnego zwykle nie może być wykonany natychmiast i oznacza to oczekiwanie na stabilną wersję, która jest nowsza niż aktualnie zainstalowana wersja beta. - + daily codziennie - + enterprise komercyjna - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3201,17 +3097,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3219,12 +3105,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4393,7 +4279,7 @@ To nowy, eksperymentalny tryb. Jeśli zdecydujesz się z niego skorzystać, zgł Nie można zsynchronizować z powodu nieprawidłowego czasu modyfikacji - + Could not upload file, because it is open in "%1". Nie można przesłać pliku, ponieważ jest on otwarty w „%1”. @@ -4466,8 +4352,8 @@ To nowy, eksperymentalny tryb. Jeśli zdecydujesz się z niego skorzystać, zgł Błąd podczas aktualizacji metadanych z powodu nieprawidłowego czasu modyfikacji - - + + The folder %1 cannot be made read-only: %2 @@ -4589,7 +4475,7 @@ To nowy, eksperymentalny tryb. Jeśli zdecydujesz się z niego skorzystać, zgł Nie można utworzyć katalogu %1 - + The folder %1 cannot be made read-only: %2 @@ -4620,7 +4506,7 @@ To nowy, eksperymentalny tryb. Jeśli zdecydujesz się z niego skorzystać, zgł OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4996,6 +4882,21 @@ To nowy, eksperymentalny tryb. Jeśli zdecydujesz się z niego skorzystać, zgł OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5022,7 +4923,7 @@ To nowy, eksperymentalny tryb. Jeśli zdecydujesz się z niego skorzystać, zgł Bezpieczne upuszczanie plików - + Could not find local folder for %1 @@ -5161,16 +5062,16 @@ Serwer odpowiedział błędem: %2 Copy public link Kopiuj link publiczny - - - Encrypt - Zaszyfruj - Copy secure filedrop link Kopiuj bezpieczny link do upuszczenia pliku + + + Encrypt + Zaszyfruj + Lock file @@ -5192,16 +5093,16 @@ Serwer odpowiedział błędem: %2 remaining time before lock expires Wygasa za %1 minutęWygasa za %1 minutyWygasa za %1 minutWygasa za %1 minut - - - Edit - Edytuj - Open in browser Otwórz w przeglądarce + + + Edit + Edytuj + Resolve conflict … @@ -5657,7 +5558,7 @@ Serwer odpowiedział błędem: %2 <p>%1 Desktop Client</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>Klient na komputer %1<p>Wersja %1. Aby uzyskać więcej informacji, kliknij <a href='%2'>tutaj</a>.</p> @@ -5668,7 +5569,7 @@ Serwer odpowiedział błędem: %2 <p><small>Używanie wtyczki plików wirtualnych: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 klient na komputer %2</p> @@ -6062,12 +5963,12 @@ Serwer odpowiedział błędem: %2 Serwer na koncie %1 uruchomiony jest na starej i niewspieranej wersji %2. Używanie klienta z niewspieraną wersją serwera nie zostało przetestowane i jest potencjalnie niebezpieczne. Kontynuujesz na własne ryzyko. - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6143,23 +6044,23 @@ Serwer odpowiedział błędem: %2 Nie skonfigurowano katalogów do synchronizacji - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6323,12 +6224,12 @@ Serwer odpowiedział błędem: %2 Nowy katalog - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6509,7 +6410,7 @@ Serwer odpowiedział błędem: %2 Upuszczanie pliku (tylko wysyłanie) - + Allow resharing Zezwalaj na udostępnianie @@ -6566,6 +6467,16 @@ Serwer odpowiedział błędem: %2 Share password Udostępnij hasło + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6629,54 +6540,6 @@ Serwer odpowiedział błędem: %2 Wyślij odpowiedź w wiadomości na czacie - - TrayFoldersMenuButton - - - Open local or group folders - Otwórz katalogi lokalne lub grupowe - - - - Open local folder - Otwórz katalog lokalny - - - - Connected - Połączony - - - - Disconnected - Rozłączony - - - - Group folder button - Przycisk katalogu grupowego - - - - Open local folder "%1" - Otwórz katalog lokalny "%1" - - - - Open group folder "%1" - Otwórz katalog grupy "%1" - - - - Open %1 in file explorer - Otwórz %1 w eksploratorze plików - - - - User group and local folders menu - Menu grupy użytkowników i katalogów lokalnych - - TrayWindowHeader @@ -6961,7 +6824,7 @@ Serwer odpowiedział błędem: %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>Zbudowany z wersji Git <a href="%1">%2</a> na %3, %4 przy użyciu Qt %5, %6</small></p> @@ -7366,6 +7229,54 @@ Serwer odpowiedział błędem: %2 Kopiuj link + + TrayFoldersMenuButton + + + Open local or group folders + Otwórz katalogi lokalne lub grupowe + + + + Open local folder + Otwórz katalog lokalny + + + + Connected + Połączony + + + + Disconnected + Rozłączony + + + + Group folder button + Przycisk katalogu grupowego + + + + Open local folder "%1" + Otwórz katalog lokalny "%1" + + + + Open group folder "%1" + Otwórz katalog grupy "%1" + + + + Open %1 in file explorer + Otwórz %1 w eksploratorze plików + + + + User group and local folders menu + Menu grupy użytkowników i katalogów lokalnych + + Window diff --git a/translations/client_pt.ts b/translations/client_pt.ts index 9f2acd1562cf0..b07ad5a5338e1 100644 --- a/translations/client_pt.ts +++ b/translations/client_pt.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1255,34 +1178,34 @@ This action will abort any currently running synchronization. Continuar - + %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. @@ -1745,13 +1668,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2251,16 +2174,11 @@ This can be an issue with your OpenSSL libraries. Por favor, vá às definições para a selecionar, se desejar transferi-la. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2269,6 +2187,11 @@ If you decide to restore the files, they will be re-synced with the server if yo If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + + Keep syncing + + 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. @@ -2276,16 +2199,16 @@ 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. - - - Stop syncing - - Remove All Files? Remover todos os ficheiros? + + + Stop syncing + + Remove all files @@ -2297,12 +2220,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Manter ficheiros - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2326,41 +2249,41 @@ This means that the synchronization client might not upload local changes immedi - + 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 @@ -2912,22 +2835,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Configuração Geral + About Sobre - - - Legal notice - Notícia de legalidade - - - - General Settings - Configuração Geral - &Launch on System Startup @@ -2943,13 +2861,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Para a Bandeja do Sistema + + + Legal notice + Notícia de legalidade + Use &Monochrome Icons Utilizar Ícones &Monocromáticos - + Show Chat Notifications @@ -2959,50 +2882,23 @@ Alternatively, you can restore all deleted files by downloading them from the se Mostrar Servidor &Notificações - - Updates - Atualizações - - - - &Automatically check for Updates - - - - - &Channel - - - - - - stable - - - - - - beta - - - - - &Restart && Update - &Reiniciar e Atualizar + + Advanced + Avançada - - &Check for Update now + + Ask for confirmation before synchronizing new folders larger than - - Advanced - Avançada + + Updates + Atualizações - - Ask for confirmation before synchronizing new folders larger than + + &Automatically check for Updates @@ -3012,12 +2908,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3027,12 +2928,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Pedir confirmação antes de sincronizar armazenamentos externos - + Move removed files to trash - + + &Check for Update now + + + + Show sync folders in &Explorer's navigation pane @@ -3041,6 +2947,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter M&ostrar relatório de crache + + + Ask for confirmation before synchronizing folders larger than + Pedir confirmação antes de sincronizar pastas maiores que + Edit &Ignored Files @@ -3053,68 +2964,48 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Info - - Ask for confirmation before synchronizing folders larger than - Pedir confirmação antes de sincronizar pastas maiores que - - - + Desktop client x.x.x - - - Update channel - - Show sync folders in &Explorer's Navigation Pane Mostrar pastas de sincronização em &Página de Navegação do Explorador - - &Automatically check for updates - - - - - Check Now - - - - - Usage Documentation + + Update channel - - Legal Notice - + + &Restart && Update + &Reiniciar e Atualizar - - Use &monochrome icons + + &Automatically check for updates - - &Launch on system startup + + Check Now - - Show server &notifications + + Usage Documentation - - Show call notifications + + Legal Notice @@ -3123,7 +3014,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Notificações do Servidor que requerem atenção. - + Show chat notification dialogs. @@ -3137,6 +3028,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. + + + + stable + + + + + + beta + + Change update channel? @@ -3150,24 +3053,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3176,17 +3072,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3194,12 +3080,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4357,7 +4243,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4430,8 +4316,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4553,7 +4439,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + The folder %1 cannot be made read-only: %2 @@ -4584,7 +4470,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4960,6 +4846,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -4986,7 +4887,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5124,13 +5025,13 @@ Server replied with error: %2 Copiar link publico - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5154,16 +5055,16 @@ Server replied with error: %2 remaining time before lock expires - - - Edit - Editar - Open in browser Abrir no navegador + + + Edit + Editar + Resolve conflict … @@ -5619,7 +5520,7 @@ Server replied with error: %2 - + <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) @@ -5630,7 +5531,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6024,12 +5925,12 @@ Server replied with error: %2 - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6105,23 +6006,23 @@ Server replied with error: %2 Não há pastas de sincronização configuradas - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6285,12 +6186,12 @@ Server replied with error: %2 - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6471,7 +6372,7 @@ Server replied with error: %2 - + Allow resharing @@ -6528,6 +6429,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6591,54 +6502,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6923,7 +6786,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7328,6 +7191,54 @@ Server replied with error: %2 Copiar ligação + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_pt_BR.ts b/translations/client_pt_BR.ts index 3597efee34849..76d713217228e 100644 --- a/translations/client_pt_BR.ts +++ b/translations/client_pt_BR.ts @@ -342,11 +342,6 @@ Signal file provider domain Domínio do provedor de arquivo de sinal - - - Create debug archive - Criar arquivo de depuração - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog Caixa de diálogo principal do desktop Nextcloud - - Current account - Conta atual - - - - - Resume sync for all - Retomar sincronização para todos - - - - - Pause sync for all - Pausar sincronização para todos - - - - Add account - Incluir conta - - - - Add new account - Incluir nova conta - - - + Unified search results list Lista unificada de resultados de pesquisa - - Settings - Configurações - - - - Exit - Saír - - - - Current account avatar - Avatar da conta atual - - - + New activities Novas atividades - - - Current account status is online - Status da conta atual é online - - - - Current account status is do not disturb - Status da conta atual é não perturbe - - - - Account switcher and settings menu - Alternador de conta e menu de configurações - - - - Open local or group folders - Abrir pastas locais ou de grupo - - - - More apps - Mais aplicativos - - - - Open %1 in browser - Abrir %1 no navegador - OCC::AbstractNetworkJob @@ -1261,34 +1184,34 @@ Esta ação irá cancelar qualquer sincronização atualmente em execução.Continuar - + %1 accounts number of accounts imported %1 contas - + 1 account 1 conta - + %1 folders number of folders imported %1 pastas - + 1 folder 1 pasta - + Legacy import Importação legada - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1753,13 +1676,13 @@ Esta ação irá cancelar qualquer sincronização atualmente em execução.Erro do servidor: a resposta PROPFIND não está formatada em XML! - - + + Encrypted metadata setup error! Erro de configuração de metadados criptografados! - + Encrypted metadata setup error: initial signature from server is empty. Erro de configuração de metadados criptografados: a assinatura inicial do servidor está vazia. @@ -2260,17 +2183,12 @@ Isso pode ser um problema com suas bibliotecas OpenSSL. Por favor, vá às configurações para selecioná-la se desejar baixá-la. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 Uma pasta ultrapassou o limite de tamanho de pasta definido de %1 MB: %2. %3 - - - Keep syncing - Continue sincronizando - All files in the sync folder "%1" folder were deleted on the server. @@ -2282,6 +2200,11 @@ Essas exclusões serão sincronizadas com sua pasta de sincronização local, to Se você decidir restaurar os arquivos, eles serão sincronizados novamente com o servidor, se você tiver direitos para fazê-lo. Se você decidir excluir os arquivos, eles ficarão indisponíveis para você, a menos que você seja o proprietário. + + + Keep syncing + Continue sincronizando + 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. @@ -2289,16 +2212,16 @@ 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 os arquivos em sua pasta de sincronização local "%1" foram excluídos. Essas exclusões serão sincronizadas com seu servidor, tornando esses arquivos indisponíveis a menos que sejam restaurados. Tem certeza de que deseja sincronizar essas ações com o servidor? Se isso foi um acidente e você decidir manter seus arquivos, eles serão sincronizados novamente a partir do servidor. - - - Stop syncing - Parar de sincronizar - Remove All Files? Remover todos os arquivos? + + + Stop syncing + Parar de sincronizar + Remove all files @@ -2310,12 +2233,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Manter arquivos - + The folder %1 has surpassed the set folder size limit of %2MB. A pasta %1 ultrapassou o limite de tamanho de pasta definido de %2MB. - + Would you like to stop syncing this folder? Deseja interromper a sincronização desta pasta? @@ -2343,12 +2266,12 @@ Isso significa que o cliente de sincronização pode não fazer upload de altera %1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" Falha no download do arquivo virtual com código "%1", status "%2" e mensagem de erro "%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. @@ -2357,7 +2280,7 @@ Por favor, confirme se você gostaria de prosseguir com essas exclusões. Alternativamente, você pode restaurar todos os arquivos excluídos enviando da pasta '%1' para o 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. @@ -2366,22 +2289,22 @@ Por favor, confirme se você gostaria de prosseguir com essas exclusões. Como alternativa, você pode restaurar todos os arquivos excluídos baixando-os do servidor. - + Remove all files? Remover todos os arquivos? - + Proceed with Deletion Prosseguir com a Exclusão - + Restore Files to Server Restaurar Arquivos para o Servidor - + Restore Files from Server Restaurar Arquivos do Servidor @@ -2933,22 +2856,17 @@ Como alternativa, você pode restaurar todos os arquivos excluídos baixando-os OCC::GeneralSettings + + + General Settings + Configuração Geral + About Sobre - - - Legal notice - Nota legal - - - - General Settings - Configuração Geral - &Launch on System Startup @@ -2964,13 +2882,18 @@ Como alternativa, você pode restaurar todos os arquivos excluídos baixando-os For System Tray Para Bandeja do Sistema + + + Legal notice + Nota legal + Use &Monochrome Icons Usar ícones &monocromáticos - + Show Chat Notifications @@ -2979,6 +2902,16 @@ Como alternativa, você pode restaurar todos os arquivos excluídos baixando-os Show Server &Notifications Exibir &notificações do servidor + + + Advanced + Avançado + + + + Ask for confirmation before synchronizing new folders larger than + Peça confirmação antes de sincronizar novas pastas maiores que + Updates @@ -2989,43 +2922,6 @@ Como alternativa, você pode restaurar todos os arquivos excluídos baixando-os &Automatically check for Updates Checar &Atualizações automaticamente - - - &Channel - &Canal - - - - - stable - estável - - - - - beta - beta - - - - &Restart && Update - &Reiniciar && Atualizar - - - - &Check for Update now - &Checar por Atualização agora - - - - Advanced - Avançado - - - - Ask for confirmation before synchronizing new folders larger than - Peça confirmação antes de sincronizar novas pastas maiores que - MB @@ -3033,12 +2929,17 @@ Como alternativa, você pode restaurar todos os arquivos excluídos baixando-os MB - + + &Channel + &Canal + + + Notify when synchronised folders grow larger than specified limit Notificar quando as pastas sincronizadas ultrapassarem o limite especificado - + Automatically disable synchronisation of folders that overcome limit Desative automaticamente a sincronização de pastas que superam o limite @@ -3048,12 +2949,17 @@ Como alternativa, você pode restaurar todos os arquivos excluídos baixando-os Pedir confirmação antes de sincronizar armazenamentos externos - + Move removed files to trash Mover arquivos removidos para a lixeira - + + &Check for Update now + &Checar por Atualização agora + + + Show sync folders in &Explorer's navigation pane Mostrar pastas de sincronização no painel de navegação do &Explorer @@ -3062,6 +2968,11 @@ Como alternativa, você pode restaurar todos os arquivos excluídos baixando-os S&how crash reporter M&ostrar relatório de acidentes + + + Ask for confirmation before synchronizing folders larger than + Pedir confirmação antes de sincronizar pastas maiores que + Edit &Ignored Files @@ -3074,77 +2985,57 @@ Como alternativa, você pode restaurar todos os arquivos excluídos baixando-os Criar arquivamento de depuração - + Info Info - - Ask for confirmation before synchronizing folders larger than - Pedir confirmação antes de sincronizar pastas maiores que - - - + Desktop client x.x.x Cliente de desktop xxx - + + Show sync folders in &Explorer's Navigation Pane + Exibir pastas de sincronização no Painel de Navegação do &Explorer + + + Update channel Atualizar canal - - Show sync folders in &Explorer's Navigation Pane - Exibir pastas de sincronização no Painel de Navegação do &Explorer + + &Restart && Update + &Reiniciar && Atualizar - + &Automatically check for updates Verificar $Automaticamente atualizações - + Check Now Verifique Agora - + Usage Documentation Documentação de uso - + Legal Notice Notícia Legal - - - Use &monochrome icons - Usar ícones &monocromáticos - - - - &Launch on system startup - &Iniciar na inicialização do sistema - - - - Show server &notifications - Mostrar ¬ificações e servidores - - - - Show call notifications - Mostrar notificações de chamadas - Server notifications that require attention. Notificações do servidor que exigem atenção. - + Show chat notification dialogs. @@ -3158,6 +3049,18 @@ Como alternativa, você pode restaurar todos os arquivos excluídos baixando-os You cannot disable autostart because system-wide autostart is enabled. Você não pode desativar a inicialização automática porque a inicialização automática em todo o sistema está ativada. + + + + stable + estável + + + + + beta + beta + Change update channel? @@ -3173,25 +3076,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Observe que isso seleciona apenas quais upgrades de pool são retirados, e que não há downgrades: Portanto, voltar do canal beta para o canal estável geralmente não pode ser feito imediatamente e significa esperar por uma versão estável que seja mais recente que a beta instalada atualmente versão. - + daily diário - + enterprise empresa - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - Enterprise: Contém versões estáveis para clientes. - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3203,22 +3098,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m As versões de downgrade não são possíveis imediatamente: mudar de beta para estável significa aguardar a nova versão estável. - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3228,12 +3108,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp As versões de downgrade não são possíveis imediatamente: mudar de estável para empresa significa aguardar a nova versão corporativa. - + Changing update channel? Mudando o canal de atualização? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4404,7 +4284,7 @@ Este é um novo modo experimental. Se você decidir usá-lo, relate quaisquer pr Não é possível sincronizar devido ao horário de modificação inválido - + Could not upload file, because it is open in "%1". Não foi possível fazer upload do arquivo porque ele está aberto em "%1". @@ -4477,8 +4357,8 @@ Este é um novo modo experimental. Se você decidir usá-lo, relate quaisquer pr Erro ao atualizar os metadados devido a erro na data/hora modificada - - + + The folder %1 cannot be made read-only: %2 A pasta %1 não pode ser tornada somente leitura: %2 @@ -4600,7 +4480,7 @@ Este é um novo modo experimental. Se você decidir usá-lo, relate quaisquer pr Não foi possível criar a pasta %1 - + The folder %1 cannot be made read-only: %2 A pasta %1 não pode ser tornada somente leitura: %2 @@ -4631,7 +4511,7 @@ Este é um novo modo experimental. Se você decidir usá-lo, relate quaisquer pr OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! A pasta %1 não pode ser renomeada devido a um conflito de nome de arquivo ou pasta local! @@ -5007,6 +4887,21 @@ Este é um novo modo experimental. Se você decidir usá-lo, relate quaisquer pr OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5033,7 +4928,7 @@ Este é um novo modo experimental. Se você decidir usá-lo, relate quaisquer pr Secure file drop - + Could not find local folder for %1 Não foi possível encontrar a pasta local para %1 @@ -5172,16 +5067,16 @@ Servidor respondeu com erro: %2 Copy public link Copiar link público - - - Encrypt - Criptografar - Copy secure filedrop link Copy secure filedrop link + + + Encrypt + Criptografar + Lock file @@ -5203,16 +5098,16 @@ Servidor respondeu com erro: %2 remaining time before lock expires Expira em 1% minutosExpira em 1% minutosExpira em 1% minutos - - - Edit - Editar - Open in browser Abrir no navegador + + + Edit + Editar + Resolve conflict … @@ -5668,7 +5563,7 @@ Servidor respondeu com erro: %2 <p>%1 Cliente Desktop</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 desktop</p><p>Versão %1. Para mais informações por favor click <a href='%2'>aqui</a>.</p> @@ -5679,7 +5574,7 @@ Servidor respondeu com erro: %2 <p><small>Usando o plugin de arquivos virtuais: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 cliente desktop %2</p> @@ -6073,12 +5968,12 @@ Servidor respondeu com erro: %2 O servidor na conta %1 executa uma versão não suportada %2. Usar este cliente com versões de servidor não suportadas não foi testado e é potencialmente perigoso. Prossiga por sua conta e risco. - + Terms of service Termos de Serviço - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. Sua conta %1 exige que você aceite os termos de serviço do seu servidor. Você será redirecionado para %2 para reconhecer que leu e concorda com ele. @@ -6154,23 +6049,23 @@ Servidor respondeu com erro: %2 Nenhuma pasta de sincronização configurada - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) %1: %2 - + macOS VFS for %1: Sync is running. macOS VFS para %1: a sincronização está em execução. - + macOS VFS for %1: Last sync was successful. macOS VFS para %1: a última sincronização foi bem-sucedida. - + macOS VFS for %1: A problem was encountered. macOS VFS para %1: foi encontrado um problema. @@ -6334,12 +6229,12 @@ Servidor respondeu com erro: %2 Nova pasta - + Failed to create debug archive Falha ao criar arquivo de depuração - + Could not create debug archive in selected location! Não foi possível criar o arquivo de depuração no local selecionado! @@ -6520,7 +6415,7 @@ Servidor respondeu com erro: %2 Descarte de arquivo (somente enviar) - + Allow resharing Permitir recompartilhar @@ -6577,6 +6472,16 @@ Servidor respondeu com erro: %2 Share password Compartilhar senha + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6640,54 +6545,6 @@ Servidor respondeu com erro: %2 Enviar resposta à mensagem de bate-papo - - TrayFoldersMenuButton - - - Open local or group folders - Abra pastas locais ou de grupo - - - - Open local folder - Abra a pasta local - - - - Connected - Conectado - - - - Disconnected - Desconectado - - - - Group folder button - Botão de pasta de grupo - - - - Open local folder "%1" - Abra a pasta local "%1" - - - - Open group folder "%1" -  Abra a pasta do grupo "%1 - - - - Open %1 in file explorer - Abrir %1 no explorador de arquivos - - - - User group and local folders menu - Grupo de usuários e menu de pastas locais - - TrayWindowHeader @@ -6972,7 +6829,7 @@ Servidor respondeu com erro: %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>Construído a partir da revisão do Git <a href="%1">%2</a> em %3, %4 usando Qt %5, %6</small></p> @@ -7377,6 +7234,54 @@ Servidor respondeu com erro: %2 Copiar link + + TrayFoldersMenuButton + + + Open local or group folders + Abra pastas locais ou de grupo + + + + Open local folder + Abra a pasta local + + + + Connected + Conectado + + + + Disconnected + Desconectado + + + + Group folder button + Botão de pasta de grupo + + + + Open local folder "%1" + Abra a pasta local "%1" + + + + Open group folder "%1" +  Abra a pasta do grupo "%1 + + + + Open %1 in file explorer + Abrir %1 no explorador de arquivos + + + + User group and local folders menu + Grupo de usuários e menu de pastas locais + + Window diff --git a/translations/client_ro.ts b/translations/client_ro.ts index 94d07d55bc2ae..f52e958b5a4fb 100644 --- a/translations/client_ro.ts +++ b/translations/client_ro.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1259,34 +1182,34 @@ Această acțiune va opri toate sincronizările în derulare din acest moment.Continuare - + %1 accounts number of accounts imported - + 1 account 1 cont - + %1 folders number of folders imported 1 foldere - + 1 folder 1 folder - + Legacy import Import mostenit - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1751,13 +1674,13 @@ Această acțiune va opri toate sincronizările în derulare din acest moment.Eroare de server: PROPFIND reply is not XML formatted! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2258,16 +2181,11 @@ Aceasta poate fi o problemă cu librariile OpenSSL. Vă rugăm să selectați în setări dacă doriți să descărcați acest fișier. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2279,6 +2197,11 @@ Aceste ștergeri vor fi sincronizate în dosarul de sincronizare local, făcând Dacă decideți să restaurați fișierele, acestea vor fi resincronizate cu serverul, dacă aveți drepturi în acest sens. Dacă decideți să ștergeți fișierele, acestea vor fi indisponibile pentru dumneavoastră, cu excepția cazului în care sunteți proprietarul. + + + Keep syncing + + 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. @@ -2286,16 +2209,16 @@ 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. Toate fișierele din dosarul de sincronizare locală "%1" au fost șterse. Aceste ștergeri vor fi sincronizate cu serverul dvs., făcând aceste fișiere indisponibile dacă nu sunt restaurate.Sunteți sigur că doriți să sincronizați aceste acțiuni cu serverul?Dacă a fost un accident și decideți să păstrați fișierele, acestea vor fi resincronizate de pe server. - - - Stop syncing - - Remove All Files? Ștergeți toate fișierele ? + + + Stop syncing + + Remove all files @@ -2307,12 +2230,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Păstrează fișierele - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2340,41 +2263,41 @@ Acest lucru înseamnă că aplicația de sincronizare ar putea să nu încarce %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 @@ -2926,22 +2849,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Setări Generale + About Despre - - - Legal notice - Aviz juridic - - - - General Settings - Setări Generale - &Launch on System Startup @@ -2957,13 +2875,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Pentru System Tray + + + Legal notice + Aviz juridic + Use &Monochrome Icons Folosește pictograme &Monochrome - + Show Chat Notifications @@ -2972,6 +2895,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Arată notificările serverului + + + Advanced + Avansat + + + + Ask for confirmation before synchronizing new folders larger than + Cereți o confirmare înainte de a sincroniza foldere noi mai mari de + Updates @@ -2982,43 +2915,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Verificarea automată a actualizărilor - - - &Channel - &Canal - - - - - stable - stabil - - - - - beta - beta - - - - &Restart && Update - &Restart && Actualizare - - - - &Check for Update now - &Verifică pentru actualizare acum - - - - Advanced - Avansat - - - - Ask for confirmation before synchronizing new folders larger than - Cereți o confirmare înainte de a sincroniza foldere noi mai mari de - MB @@ -3026,12 +2922,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Canal + + + Notify when synchronised folders grow larger than specified limit Notificați când folderele sincronizate cresc mai mult decât limita specificată. - + Automatically disable synchronisation of folders that overcome limit Dezactivați automat sincronizarea folderelor care depășesc limita. @@ -3041,12 +2942,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Solicitați confirmarea înainte de sincronizarea stocărilor externe - + Move removed files to trash - + + &Check for Update now + &Verifică pentru actualizare acum + + + Show sync folders in &Explorer's navigation pane @@ -3055,6 +2961,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter + + + Ask for confirmation before synchronizing folders larger than + Cereți o confirmare înainte de a sincroniza foldere mai mari de + Edit &Ignored Files @@ -3067,77 +2978,57 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Info Informatii - - Ask for confirmation before synchronizing folders larger than - Cereți o confirmare înainte de a sincroniza foldere mai mari de - - - + Desktop client x.x.x Client desktop x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Afișați folderele de sincronizare în panoul de navigare al &Explorer-ului. + + + Update channel Canal pentru actualizări - - Show sync folders in &Explorer's Navigation Pane - Afișați folderele de sincronizare în panoul de navigare al &Explorer-ului. + + &Restart && Update + &Restart && Actualizare - + &Automatically check for updates &Verificarea automată a actualizărilor - + Check Now Verifică acum - + Usage Documentation Documentație de utilizare - + Legal Notice Aviz juridic - - - Use &monochrome icons - - - - - &Launch on system startup - - - - - Show server &notifications - Arată &notificările serverului - - - - Show call notifications - - Server notifications that require attention. Notificări ale serverului care necesită atenție. - + Show chat notification dialogs. @@ -3151,6 +3042,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Nu puteți dezactiva pornirea automată deoarece pornirea automată la nivel de sistem este activată. + + + + stable + stabil + + + + + beta + beta + Change update channel? @@ -3164,24 +3067,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3190,17 +3086,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3208,12 +3094,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4369,7 +4255,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4442,8 +4328,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4565,7 +4451,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + The folder %1 cannot be made read-only: %2 @@ -4596,7 +4482,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4972,6 +4858,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -4998,7 +4899,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5136,13 +5037,13 @@ Server replied with error: %2 Copiză link public - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5166,16 +5067,16 @@ Server replied with error: %2 remaining time before lock expires - - - Edit - - Open in browser Deschide în Browser + + + Edit + + Resolve conflict … @@ -5629,7 +5530,7 @@ Server replied with error: %2 - + <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) @@ -5640,7 +5541,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6034,12 +5935,12 @@ Server replied with error: %2 - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6115,23 +6016,23 @@ Server replied with error: %2 - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6295,12 +6196,12 @@ Server replied with error: %2 - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6481,7 +6382,7 @@ Server replied with error: %2 - + Allow resharing @@ -6538,6 +6439,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6601,54 +6512,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6933,7 +6796,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7338,6 +7201,54 @@ Server replied with error: %2 Copiză link + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_ru.ts b/translations/client_ru.ts index 6ad3cc0615619..39bfdcc280bb3 100644 --- a/translations/client_ru.ts +++ b/translations/client_ru.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - Создать архив с отладочными данными - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog Основное окно Nextcloud - - Current account - Текущая учетная запись - - - - - Resume sync for all - Возобновить синхронизацию - - - - - Pause sync for all - Приостановить синхронизацию - - - - Add account - Добавить учетную запись - - - - Add new account - Создать учётную запись - - - + Unified search results list Единый список результатов поиска - - Settings - Настройки - - - - Exit - Выход - - - - Current account avatar - Текущее изображение учётной записи - - - + New activities Новые события - - - Current account status is online - Текущий статус пользователя: в сети - - - - Current account status is do not disturb - Текущий статус пользователя: не беспокоить - - - - Account switcher and settings menu - Переключение уч. записей и настройки - - - - Open local or group folders - Открыть локальную или групповую папку - - - - More apps - Больше приложений - - - - Open %1 in browser - Открыть «%1» в браузере - OCC::AbstractNetworkJob @@ -1262,34 +1185,34 @@ This action will abort any currently running synchronization. Продолжить - + %1 accounts number of accounts imported учётных записей: %1 - + 1 account одна учётная запись - + %1 folders number of folders imported папок: %1 - + 1 folder одна папка - + Legacy import Импорт из устаревшей версии - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1755,13 +1678,13 @@ This action will abort any currently running synchronization. Ошибка сервера: ответ PROPFIND не в формате XML. - - + + Encrypted metadata setup error! Ошибка настройки зашифрованных метаданных! - + Encrypted metadata setup error: initial signature from server is empty. Ошибка настройки зашифрованных метаданных: первоначальная подпись с сервера пуста. @@ -2262,17 +2185,12 @@ This can be an issue with your OpenSSL libraries. Чтобы скачать новую папку, перейдите в параметры приложения и отметьте её для синхронизации. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 Размер папки превысил заданное ограничение в %1 МБ: %2. %3 - - - Keep syncing - Продолжить синхронизировать - All files in the sync folder "%1" folder were deleted on the server. @@ -2284,6 +2202,11 @@ If you decide to delete the files, they will be unavailable to you, unless you a При выборе «Сохранить файлы» и наличии соответствующих прав доступа, файлы будут повторно переданы на сервер. При выборе «Удалить файлы», файлы станут недоступны, кроме случая, когда вы являетесь их владельцем. + + + Keep syncing + Продолжить синхронизировать + 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. @@ -2293,16 +2216,16 @@ If this was an accident and you decide to keep your files, they will be re-synce Действительно выполнить синхронизировать с этими изменениями? Если это произошло случайно, и вы решите сохранить файлы, они будут повторно скачаны с сервера. - - - Stop syncing - Отключить синхронизацию - Remove All Files? Удалить все файлы? + + + Stop syncing + Отключить синхронизацию + Remove all files @@ -2314,12 +2237,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Сохранить файлы - + The folder %1 has surpassed the set folder size limit of %2MB. Размер папки «%1» превысил заданное ограничение в %2 МБ. - + Would you like to stop syncing this folder? Отключить синхронизацию этой папки? @@ -2346,12 +2269,12 @@ This means that the synchronization client might not upload local changes immedi %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. @@ -2360,29 +2283,29 @@ Alternatively, you can restore all deleted files by uploading from '%1&apos В качестве альтернативы вы можете восстановить все удаленные файлы, отправив их из папки '%1' на сервер. - + 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 Восстановить файлы с сервера @@ -2934,22 +2857,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Основные настройки + About О программе - - - Legal notice - Официальное уведомление - - - - General Settings - Основные настройки - &Launch on System Startup @@ -2965,13 +2883,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Чёрно-белые значки с системном лотке + + + Legal notice + Официальное уведомление + Use &Monochrome Icons Использовать чё&рно-белые значки - + Show Chat Notifications @@ -2980,6 +2903,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Показывать &уведомления, полученные с сервера + + + Advanced + Дополнительно + + + + Ask for confirmation before synchronizing new folders larger than + Запрашивать подтверждение синхронизации папок размером более + Updates @@ -2990,43 +2923,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates Проверять наличие о&бновлений - - - &Channel - &Канал - - - - - stable - стабильный - - - - - beta - бета - - - - &Restart && Update - &Перезапуск и обновление - - - - &Check for Update now - &Проверить наличие обновлений - - - - Advanced - Дополнительно - - - - Ask for confirmation before synchronizing new folders larger than - Запрашивать подтверждение синхронизации папок размером более - MB @@ -3034,12 +2930,17 @@ Alternatively, you can restore all deleted files by downloading them from the se МБ - + + &Channel + &Канал + + + Notify when synchronised folders grow larger than specified limit Уведомлять о превышении заданного максимального размера папок - + Automatically disable synchronisation of folders that overcome limit Автоматически отключать синхронизацию папок, размер которых превысил заданный лимит @@ -3049,12 +2950,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Запрашивать подтверждение синхронизации внешних хранилищ - + Move removed files to trash Перемещать удалённые файлы в корзину - + + &Check for Update now + &Проверить наличие обновлений + + + Show sync folders in &Explorer's navigation pane Показывать синхронизируемые папки в панели навигации &Проводника @@ -3063,6 +2969,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter Показать отчёты об ошибках + + + Ask for confirmation before synchronizing folders larger than + Запрашивать подтверждение синхронизации папок размером более + Edit &Ignored Files @@ -3075,77 +2986,57 @@ Alternatively, you can restore all deleted files by downloading them from the se Создать архив с отладочными данными - + Info Информация - - Ask for confirmation before synchronizing folders larger than - Запрашивать подтверждение синхронизации папок размером более - - - + Desktop client x.x.x Клиент для ПК x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Показывать синхронизируемые папки в панели навигации &Проводника + + + Update channel Канал обновлений - - Show sync folders in &Explorer's Navigation Pane - Показывать синхронизируемые папки в панели навигации &Проводника + + &Restart && Update + &Перезапуск и обновление - + &Automatically check for updates Проверять наличие о&бновлений - + Check Now Проверить сейчас - + Usage Documentation Документация по использованию - + Legal Notice Официальное уведомление - - - Use &monochrome icons - Использовать чё&рно-белые значки - - - - &Launch on system startup - &Запускать при входе в систему - - - - Show server &notifications - Показывать &уведомления, полученные с сервера - - - - Show call notifications - Показывать уведомления о вызовах - Server notifications that require attention. Требующие внимания уведомления, полученные с сервера. - + Show chat notification dialogs. @@ -3159,6 +3050,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Автоматический запуск не может быть отключен, т.к. он настроен на уровне системы. + + + + stable + стабильный + + + + + beta + бета + Change update channel? @@ -3174,25 +3077,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Обратите внимание, что смена канала возможна переход только при увеличения внутренней версии приложения: переход со стабильного на бета-канал происходит моментально, а переход с бета-канала на стабильный потребует времени, пока стабильная версия станет новее установленной бета-версии. - + daily Ежедневно - + enterprise предприятие - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - корпоративный: содержит стабильные версии для клиентов. - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3201,22 +3096,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Канал определяет, какие обновления будут предложены для установки: -- stable: содержит проверенные версии, считающиеся надежными -- beta: содержит версии с новыми функциями, которые могут быть не полностью протестированы -- daily: содержит версии, создаваемые ежедневно только для тестирования и разработки -%1 -Понижение версии невозможно немедленно: переход с beta на stable означает ожидание новой стабильной версии. - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3224,12 +3104,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? Сменить канал обновлений? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4397,7 +4277,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Синхронизация невозможна по причине некорректного времени изменения файла - + Could not upload file, because it is open in "%1". @@ -4470,8 +4350,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss Ошибка обновления метаданных из-за недопустимого времени модификации - - + + The folder %1 cannot be made read-only: %2 @@ -4593,7 +4473,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Не удалось создать папку «%1» - + The folder %1 cannot be made read-only: %2 @@ -4624,7 +4504,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! Папка «%1» не может быть переименована, так как это действие приведёт к конфликту имён локальных файлов или папок. @@ -5000,6 +4880,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5026,7 +4921,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Безопасное удаление файла - + Could not find local folder for %1 Не удалось найти локальную папку %1 @@ -5165,16 +5060,16 @@ Server replied with error: %2 Copy public link Скопировать общедоступную ссылку - - - Encrypt - Зашифровать - Copy secure filedrop link Скопировать защищенную ссылку для удаления файла + + + Encrypt + Зашифровать + Lock file @@ -5196,16 +5091,16 @@ Server replied with error: %2 remaining time before lock expires Блокировка будет снята через %1 минутуБлокировка будет снята через %1 минутыБлокировка будет снята через %1 минутБлокировка будет снята через %1 минуты - - - Edit - Редактировать - Open in browser Открыть в браузере + + + Edit + Редактировать + Resolve conflict … @@ -5661,7 +5556,7 @@ Server replied with error: %2 <p>%1 клиент для ПК</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 для ПК</p> <p>Версия %1. Для получения дополнительной информации нажмите <a href='%2'>сюда</a>.</p> @@ -5672,7 +5567,7 @@ Server replied with error: %2 <p><small>Используемый модуль поддержки виртуальных файлов: %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> @@ -6066,12 +5961,12 @@ Server replied with error: %2 На сервере учётной записи «%1» используется неподдерживаемая версия %2. Использование этого клиента совместно с неподдерживаемым сервером не тестировалось и может быть небезопасным. Продолжайте на свой страх и риск. - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6147,23 +6042,23 @@ Server replied with error: %2 Не настроено ни одного каталога для синхронизации - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6327,12 +6222,12 @@ Server replied with error: %2 Новая папка - + Failed to create debug archive Не удалось создать архив со сведениями для отладки - + Could not create debug archive in selected location! Не удалось создать архив со сведениями для отладки в выбранном расположении. @@ -6513,7 +6408,7 @@ Server replied with error: %2 Хранилище (только приём файлов) - + Allow resharing Разрешить повторную публикацию @@ -6570,6 +6465,16 @@ Server replied with error: %2 Share password Пароль для доступа к ресурсу + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6633,54 +6538,6 @@ Server replied with error: %2 Отправить ответ на сообщение - - TrayFoldersMenuButton - - - Open local or group folders - Открыть локальную или групповую папку - - - - Open local folder - Открыть локальную папку - - - - Connected - Подключено - - - - Disconnected - Отключено - - - - Group folder button - Кнопка групповой папки - - - - Open local folder "%1" - Открыть локальную папку "%1" - - - - Open group folder "%1" - Открыть групповую папку "%1" - - - - Open %1 in file explorer - Открыть %1 в обозревателе файлов - - - - User group and local folders menu - Меню пользователя групповых и локальных папок - - TrayWindowHeader @@ -6965,7 +6822,7 @@ Server replied with 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>Собрано из исходников Git версии <a href="%1">%2</a> на %3, %4 с использованием библиотек Qt %5, %6</small></p> @@ -7370,6 +7227,54 @@ Server replied with error: %2 Скопировать ссылку + + TrayFoldersMenuButton + + + Open local or group folders + Открыть локальную или групповую папку + + + + Open local folder + Открыть локальную папку + + + + Connected + Подключено + + + + Disconnected + Отключено + + + + Group folder button + Кнопка групповой папки + + + + Open local folder "%1" + Открыть локальную папку "%1" + + + + Open group folder "%1" + Открыть групповую папку "%1" + + + + Open %1 in file explorer + Открыть %1 в обозревателе файлов + + + + User group and local folders menu + Меню пользователя групповых и локальных папок + + Window diff --git a/translations/client_sc.ts b/translations/client_sc.ts index 55d0295302e09..61b771955b7ac 100644 --- a/translations/client_sc.ts +++ b/translations/client_sc.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - Agiunghe unu contu nou - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities Atividades noas - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1259,34 +1182,34 @@ Custa atzione at a firmare cale si siat sincronizatzione immoe in esecutzione.Sighi - + %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. @@ -1751,13 +1674,13 @@ Custa atzione at a firmare cale si siat sincronizatzione immoe in esecutzione.Errore de su serbidore: sa risposta PROPFIND no est in formadu XML! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2258,16 +2181,11 @@ Custu podet èssere un'errore de is librerias tuas OpenSSL. Bae a sa cunfiguratzione pro dda seletzionare si dda boles iscarrigare. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2279,6 +2197,11 @@ Sa cantzelladura at a èssere sincronizada cun sa cartella de sincronizatzione l Si detzides de ripristinare is archìvios, custos ant a èssere sincronizados torra cun su serbidore, si tenes is diritos pro ddu fàghere. Si detzides de cantzellare is archìvios, non ant a èssere prus a disponimentu, francu chi sias tue su mere. + + + Keep syncing + + 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. @@ -2289,16 +2212,16 @@ Custas cantzelladuras ant a èssere sincronizadas cun su serbidore tuo, faghende Ses seguru chi boles sincronizare custas atziones cun su serbidore? Si custu fiat un'errore e detzides de mantènnere is archìvios tuos, custos ddos at a torrare a sincronizare su serbidore. - - - Stop syncing - - Remove All Files? Boles bogare totu is archìvios? + + + Stop syncing + + Remove all files @@ -2310,12 +2233,12 @@ Si custu fiat un'errore e detzides de mantènnere is archìvios tuos, custo Mantene is archìvios - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2343,41 +2266,41 @@ Custu bolet nàrrere chi sa sincronizatzione de su cliente diat pòdere non carr %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 @@ -2929,22 +2852,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Cunfiguratzione generale + About In contu de - - - Legal notice - Nota legale - - - - General Settings - Cunfiguratzione generale - &Launch on System Startup @@ -2960,13 +2878,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Pro sa safata de sistema + + + Legal notice + Nota legale + Use &Monochrome Icons Imprea Iconas &monocromàticas - + Show Chat Notifications @@ -2975,6 +2898,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Mustra serbidore &notìficas + + + Advanced + Avantzadu + + + + Ask for confirmation before synchronizing new folders larger than + + Updates @@ -2985,43 +2918,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates controll&a in automàticu si ddoe at agiornamentos - - - &Channel - &Canale - - - - - stable - stàbile - - - - - beta - beta - - - - &Restart && Update - &Torra a aviare && agiorna - - - - &Check for Update now - &Controlla si immoe ddoe at agiornamentos - - - - Advanced - Avantzadu - - - - Ask for confirmation before synchronizing new folders larger than - - MB @@ -3029,12 +2925,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Canale + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3044,12 +2945,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Pedi cunfirma in antis de sincronizare memòrias foranas - + Move removed files to trash - + + &Check for Update now + &Controlla si immoe ddoe at agiornamentos + + + Show sync folders in &Explorer's navigation pane @@ -3058,6 +2964,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter Mustra su raportu de s&rradura inatesu + + + Ask for confirmation before synchronizing folders larger than + Pedi cunfirma in antis de sincronizare cartellas prus mannas de + Edit &Ignored Files @@ -3070,68 +2981,48 @@ Alternatively, you can restore all deleted files by downloading them from the se Crea archìviu de debug - + Info - - Ask for confirmation before synchronizing folders larger than - Pedi cunfirma in antis de sincronizare cartellas prus mannas de - - - + Desktop client x.x.x - - - Update channel - - Show sync folders in &Explorer's Navigation Pane Mustra is cartellas de sincronizatzione in su pannellu de navigatzione de &Explorer - - &Automatically check for updates - - - - - Check Now - - - - - Usage Documentation + + Update channel - - Legal Notice - + + &Restart && Update + &Torra a aviare && agiorna - - Use &monochrome icons + + &Automatically check for updates - - &Launch on system startup + + Check Now - - Show server &notifications + + Usage Documentation - - Show call notifications + + Legal Notice @@ -3140,7 +3031,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Serbidore de notìficas chi tocat a ddis dare contu. - + Show chat notification dialogs. @@ -3154,6 +3045,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Non faghet a disativare s'aviamentu automàticu ca est ativu s'aviamentu automàticu a livellu de sistema. + + + + stable + stàbile + + + + + beta + beta + Change update channel? @@ -3169,24 +3072,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Annota chi custu seletzionat isceti dae cale grùstiu prelevare is agiornamentos e chi non ddoe apant downgrade: duncas, a su sòlitu non faghet a torrare deretu dae su canale beta a su canale istàbile e custu cheret nàrrere a isetare una versione istàbile chi siat prus reghente de sa versione beta chi ddoe est immoe. - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3195,17 +3091,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3213,12 +3099,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4386,7 +4272,7 @@ Custa est una modalidade noa, isperimentale. Si detzides de dda impreare, sinnal - + Could not upload file, because it is open in "%1". @@ -4459,8 +4345,8 @@ Custa est una modalidade noa, isperimentale. Si detzides de dda impreare, sinnal - - + + The folder %1 cannot be made read-only: %2 @@ -4582,7 +4468,7 @@ Custa est una modalidade noa, isperimentale. Si detzides de dda impreare, sinnal No at fatu a creare sa cartella %1 - + The folder %1 cannot be made read-only: %2 @@ -4613,7 +4499,7 @@ Custa est una modalidade noa, isperimentale. Si detzides de dda impreare, sinnal OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4989,6 +4875,21 @@ Custa est una modalidade noa, isperimentale. Si detzides de dda impreare, sinnal OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5015,7 +4916,7 @@ Custa est una modalidade noa, isperimentale. Si detzides de dda impreare, sinnal - + Could not find local folder for %1 @@ -5153,13 +5054,13 @@ Server replied with error: %2 Còpia ligòngiu pùblicu - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5183,16 +5084,16 @@ Server replied with error: %2 remaining time before lock expires - - - Edit - Modìfica - Open in browser Aberi in su navigadore + + + Edit + Modìfica + Resolve conflict … @@ -5648,7 +5549,7 @@ Server replied with error: %2 <p>%1 Cliente de iscrivania</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) @@ -5659,7 +5560,7 @@ Server replied with error: %2 <p><small>Impreende s'estensione de archìvios virtuales: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6053,12 +5954,12 @@ Server replied with error: %2 Su serbidore de su contu %1 esecutat una versione non suportada %2. S'impreu de custu cliente cun versiones non suportadas non est istadu verificadu e podet èssere perigulosu. Sighi a arriscu tuo. - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6134,23 +6035,23 @@ Server replied with error: %2 Peruna cartella cunfigurada pro sa sincronizatzione - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6314,12 +6215,12 @@ Server replied with error: %2 Cartella noa - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6500,7 +6401,7 @@ Server replied with error: %2 - + Allow resharing @@ -6557,6 +6458,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6620,54 +6531,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6952,7 +6815,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7357,6 +7220,54 @@ Server replied with error: %2 Còpia ligòngiu + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_sk.ts b/translations/client_sk.ts index 93232c0001d36..504c530ab6f31 100644 --- a/translations/client_sk.ts +++ b/translations/client_sk.ts @@ -342,11 +342,6 @@ Signal file provider domain Signál súbor poskytovateľa domény - - - Create debug archive - Vytvoriť archív pre ladenie programu - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - Pridať účet - - - - Add new account - Pridať nový účet - - - + Unified search results list - - Settings - Nastavenia - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1264,34 +1187,34 @@ Táto akcia zruší všetky prebiehajúce synchronizácie. Pokračovať - + %1 accounts number of accounts imported %1 účty - + 1 account 1 účet - + %1 folders number of folders imported %1 priečinkov - + 1 folder 1 priečinok - + Legacy import Starý import - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1757,13 +1680,13 @@ Táto akcia zruší všetky prebiehajúce synchronizácie. Chyba servera: odpoveď PROPFIND nie je vo formáte XML. - - + + Encrypted metadata setup error! Chyba nastavenia šifrovaných metadát! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2264,17 +2187,12 @@ Môže to byť problém s knižnicami OpenSSL. Ak si to prajete prevziať, tak prejdite do nastavení a vyberte to. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 Priečinok prekročil nastavený limit veľkosti priečinka %1 MB: %2. %3 - - - Keep syncing - Pokračovať v synchronizácií - All files in the sync folder "%1" folder were deleted on the server. @@ -2286,6 +2204,11 @@ Tieto zmeny budú synchronizované do lokálneho synchronizačného priečinka, Ak sa rozhodnete lokálne súbory ponechať, budú znovu synchronizované so serverom ak na to máte oprávnenie. Ak sa rozhodnete súbory vymazať tak následne už nebudú dostupné, ak nie ste vlastník. + + + Keep syncing + Pokračovať v synchronizácií + 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. @@ -2295,16 +2218,16 @@ If this was an accident and you decide to keep your files, they will be re-synce Ste si istí, že chcete tieto akcie synchronizovať so serverom? Ak to bol omyl a rozhodnete sa tieto súbory ponechať, budú opäť synchronizované zo servera. - - - Stop syncing - Zastaviť synchronizáciu - Remove All Files? Odstrániť všetky súbory? + + + Stop syncing + Zastaviť synchronizáciu + Remove all files @@ -2316,12 +2239,12 @@ Ak to bol omyl a rozhodnete sa tieto súbory ponechať, budú opäť synchronizo Ponechať súbory - + The folder %1 has surpassed the set folder size limit of %2MB. Priečinok %1 prekročil nastavený limit veľkosti priečinka %2 MB. - + Would you like to stop syncing this folder? Chcete vypnúť synchronizáciu tohto priečinka? @@ -2349,41 +2272,41 @@ To znamená, že klient synchronizácie nemusí okamžite odovzdať lokálne zme % 1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" Virtuálny súbor sa nepodarilo stiahnuť s kódom "%1", stavom "%2" a chybovou správou "%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 @@ -2935,22 +2858,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Všeobecné nastavenia + About O aplikácii - - - Legal notice - Právne upozornenie - - - - General Settings - Všeobecné nastavenia - &Launch on System Startup @@ -2966,13 +2884,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Pre oznamovaciu oblasť systémového panela + + + Legal notice + Právne upozornenie + Use &Monochrome Icons Použiť &monochromatické ikony - + Show Chat Notifications @@ -2981,6 +2904,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Zobraziť &hlásenia zo servera + + + Advanced + Rozšírené + + + + Ask for confirmation before synchronizing new folders larger than + Požiadať o potvrdenie pred synchronizáciou nových priečinkov väčších než + Updates @@ -2991,43 +2924,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Automaticky kontrolovať aktualizácie - - - &Channel - &Kanál - - - - - stable - stabilné - - - - - beta - beta - - - - &Restart && Update - &Restart && aktualizácia - - - - &Check for Update now - &Skontrolovať dostupnosť aktualizácie - - - - Advanced - Rozšírené - - - - Ask for confirmation before synchronizing new folders larger than - Požiadať o potvrdenie pred synchronizáciou nových priečinkov väčších než - MB @@ -3035,12 +2931,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Kanál + + + Notify when synchronised folders grow larger than specified limit Upozorniť, keď synchronizované priečinky presiahnu stanovený limit - + Automatically disable synchronisation of folders that overcome limit Automaticky zakázať synchronizáciu priečinkov, ktoré limit presiahnu @@ -3050,12 +2951,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Požiadať o potvrdenie pred synchronizáciou externých úložísk - + Move removed files to trash Presúvať vymazané súbory do koša - + + &Check for Update now + &Skontrolovať dostupnosť aktualizácie + + + Show sync folders in &Explorer's navigation pane Zobraziť synchronizované priečinky v paneli navigácie &Prieskumníka @@ -3064,6 +2970,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter Z&obraziť hlásenia o pádoch + + + Ask for confirmation before synchronizing folders larger than + Požiadať o potvrdenie pred synchronizáciou priečinkov väčších než + Edit &Ignored Files @@ -3076,77 +2987,57 @@ Alternatively, you can restore all deleted files by downloading them from the se Vytvoriť archív pre ladenie programu - + Info Informácie - - Ask for confirmation before synchronizing folders larger than - Požiadať o potvrdenie pred synchronizáciou priečinkov väčších než - - - + Desktop client x.x.x Desktopový klient x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Zobraziť synchronizované priečinky v paneli navigáci&e Prieskumníka + + + Update channel Aktualizovať kanál - - Show sync folders in &Explorer's Navigation Pane - Zobraziť synchronizované priečinky v paneli navigáci&e Prieskumníka + + &Restart && Update + &Restart && aktualizácia - + &Automatically check for updates &Automaticky kontrolovať aktualizácie - + Check Now Skontrolovať teraz - + Usage Documentation Používateľská dokumentácia - + Legal Notice Právne upozornenie - - - Use &monochrome icons - Použiť &monochromatické ikony - - - - &Launch on system startup - &Spustiť pri štarte systému - - - - Show server &notifications - Zobraziť &hlásenia zo servera - - - - Show call notifications - Zobraziť upozornenia na hovory - Server notifications that require attention. Zobrazovať hlásenie, ktoré vyžadujú pozornosť. - + Show chat notification dialogs. @@ -3160,6 +3051,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Nemôžete vypnúť autoštart pretože autoštart je zapnutý na systémov úrovni. + + + + stable + stabilné + + + + + beta + beta + Change update channel? @@ -3175,24 +3078,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Upozorňujeme, že sa tým vyberie iba to, odkiaľ sa aktualizácie budú sťahovať, a že nedôjde k nijakému downgrade. Takže návrat z beta kanála do stabilného kanála sa zvyčajne nedá vykonať okamžite a znamená čakať na stabilnú verziu, ktorá je novšia ako aktuálne nainštalovaná beta verzia. - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3201,17 +3097,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3219,12 +3105,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4393,7 +4279,7 @@ Toto je nový experimentálny režim. Ak sa ho rozhodnete použiť, nahláste v Chyba pri synchronizácii z dôvodu neplatného času poslednej zmeny - + Could not upload file, because it is open in "%1". Súbor sa nepodarilo nahrať, pretože je otvorený v "%1". @@ -4466,8 +4352,8 @@ Toto je nový experimentálny režim. Ak sa ho rozhodnete použiť, nahláste v Chyba pri aktualizácii metadát z dôvodu neplatného času poslednej zmeny - - + + The folder %1 cannot be made read-only: %2 Priečinok %1 nemôže byť nastavený len na čítanie: %2 @@ -4589,7 +4475,7 @@ Toto je nový experimentálny režim. Ak sa ho rozhodnete použiť, nahláste v Nemôžem vytvoriť priečinok %1 - + The folder %1 cannot be made read-only: %2 Priečinok %1 nemôže byť nastavený len na čítanie: %2 @@ -4620,7 +4506,7 @@ Toto je nový experimentálny režim. Ak sa ho rozhodnete použiť, nahláste v OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4996,6 +4882,21 @@ Toto je nový experimentálny režim. Ak sa ho rozhodnete použiť, nahláste v OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5022,7 +4923,7 @@ Toto je nový experimentálny režim. Ak sa ho rozhodnete použiť, nahláste v Zabezpečený file drop - + Could not find local folder for %1 Nepodarilo sa nájsť miestny adresár pre %1 @@ -5161,16 +5062,16 @@ Server odpovedal chybou: %2 Copy public link Kopírovať verejný odkaz - - - Encrypt - Zašifrovať - Copy secure filedrop link Kopírovať bezpečný odkaz pre file-drop + + + Encrypt + Zašifrovať + Lock file @@ -5192,16 +5093,16 @@ Server odpovedal chybou: %2 remaining time before lock expires Vyprší za %1 minútuVyprší za %1 minútyVyprší za %1 minúťVyprší za %1 minúť - - - Edit - Upraviť - Open in browser Otvoriť v prehliadači + + + Edit + Upraviť + Resolve conflict … @@ -5657,7 +5558,7 @@ Server odpovedal chybou: %2 <p>Klient %1 pre počítač</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 Desktopový klient</p><p> Verzia %1. Pre viac informácií kliknite <a href='%2'>sem</a>.</p> @@ -5668,7 +5569,7 @@ Server odpovedal chybou: %2 <p><small>Používa zásuvný modul virtuálnych súborov: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 Dektopový klient %2</p> @@ -6062,12 +5963,12 @@ Server odpovedal chybou: %2 Server na účte %1  používa starú a nepodporovanú verziu %2. Používanie tohto klienta s nepodporovanými verziami servera nie je testované a môže byť nebezpečné. Pokračujte len na vlastné riziko. - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6143,23 +6044,23 @@ Server odpovedal chybou: %2 Nie sú nastavené žiadne synchronizačné priečinky - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6323,12 +6224,12 @@ Server odpovedal chybou: %2 Nový priečinok - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6509,7 +6410,7 @@ Server odpovedal chybou: %2 File drop (len nahrávanie) - + Allow resharing Povoliť opakované zdieľanie @@ -6566,6 +6467,16 @@ Server odpovedal chybou: %2 Share password Zdieľať heslo + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6629,54 +6540,6 @@ Server odpovedal chybou: %2 Odoslať odpoveď do správy v rozhovoroch - - TrayFoldersMenuButton - - - Open local or group folders - Otvoriť miestne alebo skupinové priečinky - - - - Open local folder - Otvoriť lokálny priečinok - - - - Connected - Pripojené - - - - Disconnected - Odpojené - - - - Group folder button - Skupinové tlačidlo adresára - - - - Open local folder "%1" - Otvoriť lokálny priečinok "%1" - - - - Open group folder "%1" - Otvoriť skupinový adresár "%1" - - - - Open %1 in file explorer - Otvoriť %1 v prehliadači súborov - - - - User group and local folders menu - Užívateľská skupina a menu miestnych adresárov - - TrayWindowHeader @@ -6961,7 +6824,7 @@ Server odpovedal chybou: %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>Zostavené z Git revízie <a href="%1">%2</a> na %3, %4 s použitím Qt %5, %6</small></p> @@ -7366,6 +7229,54 @@ Server odpovedal chybou: %2 Kopírovať odkaz + + TrayFoldersMenuButton + + + Open local or group folders + Otvoriť miestne alebo skupinové priečinky + + + + Open local folder + Otvoriť lokálny priečinok + + + + Connected + Pripojené + + + + Disconnected + Odpojené + + + + Group folder button + Skupinové tlačidlo adresára + + + + Open local folder "%1" + Otvoriť lokálny priečinok "%1" + + + + Open group folder "%1" + Otvoriť skupinový adresár "%1" + + + + Open %1 in file explorer + Otvoriť %1 v prehliadači súborov + + + + User group and local folders menu + Užívateľská skupina a menu miestnych adresárov + + Window diff --git a/translations/client_sl.ts b/translations/client_sl.ts index f9eefcb506d38..3fad895be89f1 100644 --- a/translations/client_sl.ts +++ b/translations/client_sl.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - Ustvari arhiv razhroščevanja - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - Trenutni račun - - - - - Resume sync for all - Nadaljuj usklajevanje za vse - - - - - Pause sync for all - Ustavi usklajevanje za vse - - - - Add account - Dodaj račun - - - - Add new account - Dodaj nov račun - - - + Unified search results list - - Settings - Nastavitve - - - - Exit - Končaj - - - - Current account avatar - Trenutna podoba računa - - - + New activities Nove dejavnosti - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - Več programov - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1259,34 +1182,34 @@ S tem dejanjem prav tako prekinete vsa trenutna usklajevanja v izvajanju.Nadaljuj - + %1 accounts number of accounts imported %1 računov - + 1 account 1 račun - + %1 folders number of folders imported %1 map - + 1 folder 1 mapa - + Legacy import Opuščeno uvažanje - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1751,13 +1674,13 @@ S tem dejanjem prav tako prekinete vsa trenutna usklajevanja v izvajanju.Napaka strežnika: odziv PROPFIND ni zapisan kot XML! - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2258,16 +2181,11 @@ Morda je napaka v knjužnicah OpenSSL. Med nastavitvami jo je mogoče izbrati in označiti za prejem. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - Nadaljuj z usklajevanjem - All files in the sync folder "%1" folder were deleted on the server. @@ -2279,6 +2197,11 @@ Sprememba bo usklajena tudi s krajevno mapo na disku, zato bodo te datoteke, če V kolikor se odločite te datoteke ohraniti, in so na voljo ustrezna dovoljenja, bodo spet usklajene s strežnikom. Nasprotno, če potrdite izbris in niste lastnik datotek, te ne bodo več dosegljive. + + + Keep syncing + Nadaljuj z usklajevanjem + 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. @@ -2288,16 +2211,16 @@ If this was an accident and you decide to keep your files, they will be re-synce Ali ste prepričani, da želite posodobiti spremembe s strežnikom? Če je prišlo do napake in se odločite datoteke ohraniti, bodo te ponovno usklajene s strežnika. - - - Stop syncing - Zaustavi usklajevanje - Remove All Files? Ali naj bodo odstranjene vse datoteke? + + + Stop syncing + Zaustavi usklajevanje + Remove all files @@ -2309,12 +2232,12 @@ Ali ste prepričani, da želite posodobiti spremembe s strežnikom? Ohrani datoteke - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? Ali želite zaustaviti usklajevanje te mape? @@ -2342,41 +2265,41 @@ To pomeni, da odjemalec usklajevanja ne pošilja krajevnih sprememb takoj in mor %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? Ali želite odstraniti vse datoteke? - + Proceed with Deletion - + Restore Files to Server - + Restore Files from Server @@ -2928,22 +2851,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Splošne nastavitve + About O programu ... - - - Legal notice - Pravno obvestilo - - - - General Settings - Splošne nastavitve - &Launch on System Startup @@ -2959,13 +2877,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray V sistemsko vrstico + + + Legal notice + Pravno obvestilo + Use &Monochrome Icons Uporabi &črno-bele ikone - + Show Chat Notifications @@ -2974,6 +2897,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Pokaži &obvestila strežnika + + + Advanced + Napredne možnosti + + + + Ask for confirmation before synchronizing new folders larger than + Vprašaj za potrditev pred usklajevanjem novih map večjih od + Updates @@ -2984,43 +2917,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Samodejno preveri za posodobitve - - - &Channel - &Kanal - - - - - stable - stabilni - - - - - beta - preizkusni - - - - &Restart && Update - &Ponovno zaženi in posodobi - - - - &Check for Update now - &Preveri za posodobitve - - - - Advanced - Napredne možnosti - - - - Ask for confirmation before synchronizing new folders larger than - Vprašaj za potrditev pred usklajevanjem novih map večjih od - MB @@ -3028,12 +2924,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Kanal + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3043,12 +2944,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Vprašaj za potrditev pred usklajevanjem zunanjih shramb - + Move removed files to trash - + + &Check for Update now + &Preveri za posodobitve + + + Show sync folders in &Explorer's navigation pane @@ -3057,6 +2963,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter Pokaži &poročilo o sesutu + + + Ask for confirmation before synchronizing folders larger than + Zahtevaj potrditev pred usklajevanjem map, večjih od + Edit &Ignored Files @@ -3069,77 +2980,57 @@ Alternatively, you can restore all deleted files by downloading them from the se Ustvari arhiv razhroščevanja - + Info Podrobnosti - - Ask for confirmation before synchronizing folders larger than - Zahtevaj potrditev pred usklajevanjem map, večjih od - - - + Desktop client x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Pokaži mape usklajevanja v bočnem oknu programa &Explorer + + + Update channel Kanal za posodobitve - - Show sync folders in &Explorer's Navigation Pane - Pokaži mape usklajevanja v bočnem oknu programa &Explorer + + &Restart && Update + &Ponovno zaženi in posodobi - + &Automatically check for updates - + Check Now Preveri takoj - + Usage Documentation Dokumentacija uporabe - + Legal Notice Pravno obvestilo - - - Use &monochrome icons - Uporabi &črno-bele ikone - - - - &Launch on system startup - - - - - Show server &notifications - - - - - Show call notifications - - Server notifications that require attention. Prejeto je obvestilo strežnika, ki zahteva pozornost. - + Show chat notification dialogs. @@ -3153,6 +3044,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Samodejnega zagona ni mogoče izklopiti, ker je ta omogočen sistemsko. + + + + stable + stabilni + + + + + beta + preizkusni + Change update channel? @@ -3168,24 +3071,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Zavedati se je treba, da izbor določa le različice programske opreme za nadgradnjo in da povrnitev na starejše različice ni več mogoča. Povrnitev iz preizkusnega kanala Beta na Stabilnega ni mogoča, dokler stabilna različica ni višja oziroma novejša od nameščene preizkusne različice. - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3194,17 +3090,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3212,12 +3098,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? Ali želite zamenjati kanal za posodobitve? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4386,7 +4272,7 @@ To je nov preizkusni način. Če ga boste uporabili, pošljite tudi poročila o - + Could not upload file, because it is open in "%1". @@ -4459,8 +4345,8 @@ To je nov preizkusni način. Če ga boste uporabili, pošljite tudi poročila o - - + + The folder %1 cannot be made read-only: %2 @@ -4582,7 +4468,7 @@ To je nov preizkusni način. Če ga boste uporabili, pošljite tudi poročila o Ni mogoče ustvariti mape %1 - + The folder %1 cannot be made read-only: %2 @@ -4613,7 +4499,7 @@ To je nov preizkusni način. Če ga boste uporabili, pošljite tudi poročila o OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4989,6 +4875,21 @@ To je nov preizkusni način. Če ga boste uporabili, pošljite tudi poročila o OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5015,7 +4916,7 @@ To je nov preizkusni način. Če ga boste uporabili, pošljite tudi poročila o - + Could not find local folder for %1 @@ -5152,16 +5053,16 @@ Server replied with error: %2 Copy public link Kopiraj javno povezavo - - - Encrypt - Šifriraj - Copy secure filedrop link + + + Encrypt + Šifriraj + Lock file @@ -5183,16 +5084,16 @@ Server replied with error: %2 remaining time before lock expires Poteče čez %1 minutoPoteče čez %1 minutiPoteče čez %1 minutePoteče čez %1 minut - - - Edit - Uredi - Open in browser Odpri v brskalniku + + + Edit + Uredi + Resolve conflict … @@ -5648,7 +5549,7 @@ Server replied with error: %2 <p>Namizni program %1</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) @@ -5659,7 +5560,7 @@ Server replied with error: %2 <p><small>Uporablja vstavek navideznih datotek: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6053,12 +5954,12 @@ Server replied with error: %2 Strežnik računa %1 deluje na nepodprti različici %2. Uporaba programa za nepodprt strežnik ni preizkušena in lahko povzroči napake. Nadaljujete na lastno odgovornost. - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6134,23 +6035,23 @@ Server replied with error: %2 Ni nastavljenih map za usklajevanje - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6314,12 +6215,12 @@ Server replied with error: %2 Nova mapa - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6500,7 +6401,7 @@ Server replied with error: %2 - + Allow resharing @@ -6557,6 +6458,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6620,54 +6531,6 @@ Server replied with error: %2 Pošlji odgovor na sporočilo klepeta - - TrayFoldersMenuButton - - - Open local or group folders - Odpri krajevne oziroma skupinske mape - - - - Open local folder - Odpri krajevno mapo - - - - Connected - Povezano - - - - Disconnected - epovezano - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6952,7 +6815,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7357,6 +7220,54 @@ Server replied with error: %2 Kopiraj povezavo + + TrayFoldersMenuButton + + + Open local or group folders + Odpri krajevne oziroma skupinske mape + + + + Open local folder + Odpri krajevno mapo + + + + Connected + Povezano + + + + Disconnected + epovezano + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_sr.ts b/translations/client_sr.ts index 2f6d8efd9a985..7863a5cd73d78 100644 --- a/translations/client_sr.ts +++ b/translations/client_sr.ts @@ -342,11 +342,6 @@ Signal file provider domain Наведи домен пружаоца фајла - - - Create debug archive - Креирај дибаг архиву - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog Nextcloud desktop главни дијалог - - Current account - Тренутни налог - - - - - Resume sync for all - Настави синхронизацију за све - - - - - Pause sync for all - Паузирај синхронизацију за све - - - - Add account - Додај налог - - - - Add new account - Додај нови налог - - - + Unified search results list Листа резултата обједињене претраге - - Settings - Подешавања - - - - Exit - Изађи - - - - Current account avatar - Тренутни аватар налога - - - + New activities Нове активности - - - Current account status is online - Тренутни статус налога је на мрежи - - - - Current account status is do not disturb - Тренутни статус налога је не узнемиравај - - - - Account switcher and settings menu - Пребацивач налога и мени подешавања - - - - Open local or group folders - Отвори локалне или фолдере групе - - - - More apps - Још апликација - - - - Open %1 in browser - Отвори %1 у прегледачу - OCC::AbstractNetworkJob @@ -1264,34 +1187,34 @@ This action will abort any currently running synchronization. Настави - + %1 accounts number of accounts imported %1 налога - + 1 account 1 налог - + %1 folders number of folders imported %1 фолдера - + 1 folder 1 фолдер - + Legacy import Увоз старе верзије - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1757,13 +1680,13 @@ This action will abort any currently running synchronization. Серверска грешка: PROPFIND одговор није XML форматиран! - - + + Encrypted metadata setup error! Грешка подешавања шифрованих метаподатака! - + Encrypted metadata setup error: initial signature from server is empty. Грешка у подешавању шифрованих метаподатака: почетни потпис са сервера је празан. @@ -2264,17 +2187,12 @@ This can be an issue with your OpenSSL libraries. Идите у поставке и означите ако желите да ја преузмете. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 Фолдер је прешао постављено ограничење величине од %1MB: %2. %3 - - - Keep syncing - Настави синхронизацију - All files in the sync folder "%1" folder were deleted on the server. @@ -2286,6 +2204,11 @@ If you decide to delete the files, they will be unavailable to you, unless you a Ако одлучите да обновите фајлове, они ће се поново синхронизовати са сервером у случају да имате права за то. Ако одлучите да обришете фајлове, нећете више моћи да им приступите, осим у случају да сте ви њихов власник. + + + Keep syncing + Настави синхронизацију + 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. @@ -2295,16 +2218,16 @@ If this was an accident and you decide to keep your files, they will be re-synce Да ли сте сигурни да желите да синхронизујете ове акције са сервером? Ако је ово било случајно и одлучите да задржите своје фајлове, они ће се поново синхронизовати са сервера. - - - Stop syncing - Заустави синхронизацију - Remove All Files? Уклонити све фајлове? + + + Stop syncing + Заустави синхронизацију + Remove all files @@ -2316,12 +2239,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Остави фајлове - + The folder %1 has surpassed the set folder size limit of %2MB. Фолдер %1 је прешао постављено ограничење величине од %2MB. - + Would you like to stop syncing this folder? Желите ли да зауставите синхронизацију овог фолдера? @@ -2349,12 +2272,12 @@ This means that the synchronization client might not upload local changes immedi %1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" Није успело виртуелно преузимање фајла, кôд „%1”, статус „%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. @@ -2363,7 +2286,7 @@ Alternatively, you can restore all deleted files by uploading from '%1&apos У супротном, све обрисане фајлове можете да обновите тако што их отпремите из фолдера ’%1’ на сервер. - + 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. @@ -2372,22 +2295,22 @@ Alternatively, you can restore all deleted files by downloading them from the se У супротном, све обрисане фајлове можете да обновите тако што их поново преузмете са сервера. - + Remove all files? Желите ли да уклоните све фајлове? - + Proceed with Deletion Настави са брисањем - + Restore Files to Server Врати фајлове на сервер - + Restore Files from Server Врати фајлове са сервера @@ -2939,22 +2862,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Опште поставке + About О програму - - - Legal notice - Правно обавештење - - - - General Settings - Опште поставке - &Launch on System Startup @@ -2970,13 +2888,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray За системску палету + + + Legal notice + Правно обавештење + Use &Monochrome Icons Користи &једнобојне иконе - + Show Chat Notifications @@ -2985,6 +2908,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Прикажи &обавештења са сервера + + + Advanced + Напредно + + + + Ask for confirmation before synchronizing new folders larger than + Питај за потврду пре синхронизације нових фолдера већих од + Updates @@ -2995,43 +2928,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Аутоматски проверавај за ажурирања - - - &Channel - &Канал - - - - - stable - стабилан - - - - - beta - бета - - - - &Restart && Update - &Поново покрени и ажурирај - - - - &Check for Update now - &Провери ажурирања сад - - - - Advanced - Напредно - - - - Ask for confirmation before synchronizing new folders larger than - Питај за потврду пре синхронизације нових фолдера већих од - MB @@ -3039,12 +2935,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Канал + + + Notify when synchronised folders grow larger than specified limit Обавести када величина синхронизованих фолдера пређе задату границу - + Automatically disable synchronisation of folders that overcome limit Аутоматски искључи синхронизацију фолдера чија величина пређе границу @@ -3054,12 +2955,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Питај за потврду пре синхронизације спољашњих складишта - + Move removed files to trash Премести уклоњене фајлове у отпад - + + &Check for Update now + &Провери ажурирања сад + + + Show sync folders in &Explorer's navigation pane Прикажи синхронизоване фасцикле у навигационом панелу &Истраживача фајлова @@ -3068,6 +2974,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter П&рикажи извештавач о грешкама + + + Ask for confirmation before synchronizing folders larger than + Питај за потврду пре синхронизације фасцикли већих од + Edit &Ignored Files @@ -3080,77 +2991,57 @@ Alternatively, you can restore all deleted files by downloading them from the se Креирај дибаг архиву - + Info Инфо - - Ask for confirmation before synchronizing folders larger than - Питај за потврду пре синхронизације фасцикли већих од - - - + Desktop client x.x.x Десктоп клијент x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Прикажи синхронизоване фасцикле у &Експлореровом навигационом панелу + + + Update channel Канал ажурирања - - Show sync folders in &Explorer's Navigation Pane - Прикажи синхронизоване фасцикле у &Експлореровом навигационом панелу + + &Restart && Update + &Поново покрени и ажурирај - + &Automatically check for updates &Аутоматски проверавај постојање ажурирања - + Check Now Провери сада - + Usage Documentation Документација о употреби - + Legal Notice Правно обавештење - - - Use &monochrome icons - Користи &једнобојне иконе - - - - &Launch on system startup - Покрени при покретању &система - - - - Show server &notifications - Прикажи &обавештења са сервера - - - - Show call notifications - Прикажи обавештења о позиву - Server notifications that require attention. Обавештења са сервера која захтевају пажњу. - + Show chat notification dialogs. @@ -3164,6 +3055,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Не можете да искључите аутостарт јер је укључен аутостарт на нивоу система. + + + + stable + стабилан + + + + + beta + бета + Change update channel? @@ -3179,25 +3082,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Имајте на уму да ово бира само из ког складишта се преузимају ажурирања, као и да нема враћања на раније верзије: тако да враћање са бета канала на стабилни канал обично не може да се изврши тренутно и значи да је потребно чекање на стабилну верзију која је новија од тренутно инсталиране бета верзије. - + daily дневно - + enterprise предузетничка - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - предузетничка: садржи стабилне верзије за муштерије. - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3209,22 +3104,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m Враћање на старију верзију није могуће тренутно: промена са бета канала на стабилни значи да ће се чекати на нову стабилну верзију. - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Канал одређује која ажурирања ће се понудити за инсталирање: -- стабилни: садржи тестиране верзије које се сматрају за поуздане -- бета: садржи верзије са новим функцијама које можда нису темељно тестиране -- дневни: садржи верзије које се креирају свакодневно и служе само за тестирање и развој -%1 -Враћање на старију верзију није могуће тренутно: промена са бета канала на стабилни значи да ће се чекати на нову стабилну верзију. - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3234,12 +3114,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp Враћање на старију верзију није могуће тренутно: промена са стабилне на пословну значи да ће се чекати на нову пословну верзију. - + Changing update channel? Мењате ли канал ажурирања? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4410,7 +4290,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Не може да се синхронизује због неисправног времена измене - + Could not upload file, because it is open in "%1". Фајл не може да се отпреми јер је отворен у „%1”. @@ -4483,8 +4363,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss Грешка приликом ажурирања метаподатака услед неисправног времена измене - - + + The folder %1 cannot be made read-only: %2 Фолдер %1 не може да се буде само-за-читање: %2 @@ -4606,7 +4486,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Не може да се креира фолдер %1 - + The folder %1 cannot be made read-only: %2 Фолдер %1 не може да се буде само-за-читање: %2 @@ -4637,7 +4517,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! Фолдеру %1 не може да се промени име због судара са називом локалног фајла или фолдера! @@ -5013,6 +4893,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5039,7 +4934,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Сигурно место за упуштање фајлова - + Could not find local folder for %1 Не може да се пронађе локални фолдер за %1 @@ -5178,16 +5073,16 @@ Server replied with error: %2 Copy public link Копирај јавну везу - - - Encrypt - Шифруј - Copy secure filedrop link Копирај линк сигурног места за упуштање фајлова + + + Encrypt + Шифруј + Lock file @@ -5209,16 +5104,16 @@ Server replied with error: %2 remaining time before lock expires Истиче за %1 минутИстиче за %1 минутаИстиче за %1 минута - - - Edit - Измени - Open in browser Отвори у веб читачу + + + Edit + Измени + Resolve conflict … @@ -5674,7 +5569,7 @@ Server replied with error: %2 <p>%1 десктоп клијент</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 Десктоп клијент</p><p>верзија %1. За више информација, молимо вас да кликнете <a href='%2'>овде</a>.</p> @@ -5685,7 +5580,7 @@ Server replied with error: %2 <p><small>Користи се додатак виртуелних фајлова: %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> @@ -6079,12 +5974,12 @@ Server replied with error: %2 Сервер на налогу %1 извршава неподржану верзију %2. Коришћење овог клијента са неподржаном верзијом сервера није тестирано и потенцијално може бити опасно. Настављате на сопствену одговорност. - + Terms of service Услови коришћења - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. Ваш налог %1 захтева да прихватите услове коришћења сервера. Бићете преусмерени на %2 да потврдите да сте их прочитали и да се слажете са њима. @@ -6160,23 +6055,23 @@ Server replied with error: %2 Нису подешене фасцикле за синхронизацију - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) %1: %2 - + macOS VFS for %1: Sync is running. macOS VFS за %1: Синхронизација у току. - + macOS VFS for %1: Last sync was successful. macOS VFS за %1: Последња синхронизација је била успешна. - + macOS VFS for %1: A problem was encountered. macOS VFS за %1: Дошло је до проблема. @@ -6340,12 +6235,12 @@ Server replied with error: %2 Нови фолдер - + Failed to create debug archive Није успело креирање дибаг архиве - + Could not create debug archive in selected location! На изабраној локацији није могла да се креира дибаг архива! @@ -6526,7 +6421,7 @@ Server replied with error: %2 Превлачење фајлова (само за отпремање) - + Allow resharing Дозволи поновно дељење @@ -6583,6 +6478,16 @@ Server replied with error: %2 Share password Лозинка дељења + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6646,54 +6551,6 @@ Server replied with error: %2 Пошаљи одговор на чет поруку - - TrayFoldersMenuButton - - - Open local or group folders - Отвори локални или фолдер групе - - - - Open local folder - Отвори локални фолдер - - - - Connected - Веза је успостављена - - - - Disconnected - Веза је прекинута - - - - Group folder button - Дугме фолдера групе - - - - Open local folder "%1" - Отвори локални фолдер %1” - - - - Open group folder "%1" - Отвори фолдер групе „%1” - - - - Open %1 in file explorer - ОТвори %1 у истраживачу фајлова - - - - User group and local folders menu - Мени коринисникових групних и локалних фолдера - - TrayWindowHeader @@ -6978,7 +6835,7 @@ Server replied with 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>Изграђен из Git ревизије <a href="%1">%2</a> дана %3, %4 користећи Qt %5, %6</small></p> @@ -7383,6 +7240,54 @@ Server replied with error: %2 Копирај везу + + TrayFoldersMenuButton + + + Open local or group folders + Отвори локални или фолдер групе + + + + Open local folder + Отвори локални фолдер + + + + Connected + Веза је успостављена + + + + Disconnected + Веза је прекинута + + + + Group folder button + Дугме фолдера групе + + + + Open local folder "%1" + Отвори локални фолдер %1” + + + + Open group folder "%1" + Отвори фолдер групе „%1” + + + + Open %1 in file explorer + ОТвори %1 у истраживачу фајлова + + + + User group and local folders menu + Мени коринисникових групних и локалних фолдера + + Window diff --git a/translations/client_sv.ts b/translations/client_sv.ts index 7ee52f53e9c71..f07930bc8aafa 100644 --- a/translations/client_sv.ts +++ b/translations/client_sv.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - Skapa felsökningsarkiv - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog Nextcloud-klient huvuddialog - - Current account - Nuvarande konto - - - - - Resume sync for all - Återuppta synkronisering för alla - - - - - Pause sync for all - Pausa synkronisering för alla - - - - Add account - Lägg till konto - - - - Add new account - Lägg till nytt konto - - - + Unified search results list Sammanlagda sökresultat - - Settings - Inställningar - - - - Exit - Avsluta - - - - Current account avatar - Avatar för aktuellt konto - - - + New activities Nya aktiviteter - - - Current account status is online - Aktuell kontostatus är online - - - - Current account status is do not disturb - Aktuell kontostatus är stör ej - - - - Account switcher and settings menu - Kontobytare och inställningsmeny - - - - Open local or group folders - Öppna lokala eller gruppmappar - - - - More apps - Fler appar - - - - Open %1 in browser - Öppna %1 i webbläsare - OCC::AbstractNetworkJob @@ -1264,34 +1187,34 @@ Den här åtgärden avbryter alla pågående synkroniseringar. Fortsätt - + %1 accounts number of accounts imported %1 konton - + 1 account 1 konto - + %1 folders number of folders imported %1 mappar - + 1 folder 1 mapp - + Legacy import Legacyimport - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1757,13 +1680,13 @@ Den här åtgärden avbryter alla pågående synkroniseringar. Serverfel: PROPFIND-svar är inte XML-formaterat! - - + + Encrypted metadata setup error! Inställningsfel för krypterad metadata! - + Encrypted metadata setup error: initial signature from server is empty. Inställningsfel för krypterad metadata: initial signatur från servern är tom. @@ -2264,17 +2187,12 @@ Det kan vara problem med dina OpenSSL-bibliotek. Vänligen gå till inställningar och välj den om du önskar att hämta den. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 En mapp har överskridit den inställda mappstorleksgränsen på %1MB: %2. %3 - - - Keep syncing - Fortsätt synkronisera - All files in the sync folder "%1" folder were deleted on the server. @@ -2286,6 +2204,11 @@ Dessa raderingar kommer att synkroniseras till din lokalt synkade mapp och göra Om du återställer dessa filer kommer de att synkroniseras till servern på nytt, om du har rättighet att göra det. Om du bestämmer dig för att radera filerna är de inte tillgängliga för dig, såvida du inte är ägaren. + + + Keep syncing + Fortsätt synkronisera + 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. @@ -2295,16 +2218,16 @@ If this was an accident and you decide to keep your files, they will be re-synce Är du säker på att du vill synka ändringarna till servern? Om detta var ett misstag och du vill behålla dina filer, kommer de att synkroniseras på nytt från servern. - - - Stop syncing - Sluta synkronisera - Remove All Files? Ta bort alla filer? + + + Stop syncing + Sluta synkronisera + Remove all files @@ -2316,12 +2239,12 @@ Om detta var ett misstag och du vill behålla dina filer, kommer de att synkroni Behåll filer - + The folder %1 has surpassed the set folder size limit of %2MB. Mappen %1 har överskridit den inställda mappstorleksgränsen på %2MB. - + Would you like to stop syncing this folder? Vill du sluta synkronisera den här mappen? @@ -2349,12 +2272,12 @@ Det betyder att synkroniseringsklienten inte kan ladda upp lokala ändringar ome %1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" Virtuell filnedladdning misslyckades med koden "%1", status "%2" och felmeddelandet "%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. @@ -2363,7 +2286,7 @@ Bekräfta om du vill fortsätta med dessa raderingar. Alternativt kan du återställa alla raderade filer genom att ladda upp från '%1' mappen till servern. - + 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. @@ -2372,22 +2295,22 @@ Bekräfta om du vill fortsätta med dessa raderingar. Alternativt kan du återställa alla raderade filer genom att ladda ner dem från servern. - + Remove all files? Ta bort alla filer? - + Proceed with Deletion Fortsätt med radering - + Restore Files to Server Återställ filer till server - + Restore Files from Server Återställ filer från servern @@ -2939,22 +2862,17 @@ Alternativt kan du återställa alla raderade filer genom att ladda ner dem frå OCC::GeneralSettings + + + General Settings + Generella inställningar + About Om - - - Legal notice - Rättsligt meddelande - - - - General Settings - Generella inställningar - &Launch on System Startup @@ -2970,13 +2888,18 @@ Alternativt kan du återställa alla raderade filer genom att ladda ner dem frå For System Tray För aktivitetsfältet + + + Legal notice + Rättsligt meddelande + Use &Monochrome Icons Använd &monokroma ikoner - + Show Chat Notifications @@ -2985,6 +2908,16 @@ Alternativt kan du återställa alla raderade filer genom att ladda ner dem frå Show Server &Notifications Visa server&aviseringar + + + Advanced + Avancerat + + + + Ask for confirmation before synchronizing new folders larger than + Fråga innan du synkroniserar nya mappar större än + Updates @@ -2995,43 +2928,6 @@ Alternativt kan du återställa alla raderade filer genom att ladda ner dem frå &Automatically check for Updates &Automatisk kontroll av uppdateringar - - - &Channel - &Kanal - - - - - stable - stabil - - - - - beta - beta - - - - &Restart && Update - &Starta om && Uppdatera - - - - &Check for Update now - &Sök efter uppdateringar nu - - - - Advanced - Avancerat - - - - Ask for confirmation before synchronizing new folders larger than - Fråga innan du synkroniserar nya mappar större än - MB @@ -3039,12 +2935,17 @@ Alternativt kan du återställa alla raderade filer genom att ladda ner dem frå MB - + + &Channel + &Kanal + + + Notify when synchronised folders grow larger than specified limit Meddela när synkroniserade mappar växer sig större än den angivna gränsen - + Automatically disable synchronisation of folders that overcome limit Inaktivera automatiskt synkronisering av mappar som överskrider gränsen @@ -3054,12 +2955,17 @@ Alternativt kan du återställa alla raderade filer genom att ladda ner dem frå Fråga innan synkronisering av externa lagringsytor - + Move removed files to trash Flytta borttagna filer till papperskorgen - + + &Check for Update now + &Sök efter uppdateringar nu + + + Show sync folders in &Explorer's navigation pane Visa synkroniseringsmappar i &utforskarens navigeringsfönster @@ -3068,6 +2974,11 @@ Alternativt kan du återställa alla raderade filer genom att ladda ner dem frå S&how crash reporter Visa krashrapporteraren + + + Ask for confirmation before synchronizing folders larger than + Fråga innan synkronisering av mappar större än + Edit &Ignored Files @@ -3080,77 +2991,57 @@ Alternativt kan du återställa alla raderade filer genom att ladda ner dem frå Skapa felsökningsarkiv - + Info Info - - Ask for confirmation before synchronizing folders larger than - Fråga innan synkronisering av mappar större än - - - + Desktop client x.x.x Skrivbordsklient x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Visa synkroniseringsmappar i &utforskarens navigeringsfönster + + + Update channel Uppdateringskanal - - Show sync folders in &Explorer's Navigation Pane - Visa synkroniseringsmappar i &utforskarens navigeringsfönster + + &Restart && Update + &Starta om && Uppdatera - + &Automatically check for updates &Automatisk kontroll av uppdateringar - + Check Now Kolla nu - + Usage Documentation Användardokumentation - + Legal Notice Rättsligt meddelande - - - Use &monochrome icons - Använd &monokroma ikoner - - - - &Launch on system startup - &Starta vid systemstart - - - - Show server &notifications - Visa server &aviseringar - - - - Show call notifications - Visa samtalsmeddelanden - Server notifications that require attention. Serveraviseringar som kräver uppmärksamhet. - + Show chat notification dialogs. @@ -3164,6 +3055,18 @@ Alternativt kan du återställa alla raderade filer genom att ladda ner dem frå You cannot disable autostart because system-wide autostart is enabled. Du kan inte deaktivera autostart eftersom autostart är aktiverat på systemnivå. + + + + stable + stabil + + + + + beta + beta + Change update channel? @@ -3179,25 +3082,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Observera att detta endast väljer vilken pool uppgraderingar tas från, och att det inte finns några nedgraderingar: Så att gå tillbaka från betakanalen till den stabila kanalen kan vanligtvis inte göras omedelbart och innebär att vänta på en stabil version som är nyare än den för närvarande installerade betaversionen. - + daily dagligen - + enterprise enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - enterprise: innehåller stabila versioner för kunder. - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3209,22 +3104,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m Nedgradering av versioner är inte möjligt omedelbart: att byta från beta till stabil innebär att vänta på den nya stabila versionen. - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Kanalen avgör vilka uppgraderingar som kommer att erbjudas att installera: -- stable: innehåller testade versioner som anses tillförlitliga -- beta: innehåller versioner med nya funktioner som kanske inte testas noggrant -- daily: innehåller versioner som skapas dagligen endast för testning och utveckling -%1 -Nedgradering av versioner är inte möjlig omedelbart: att byta från beta till stabil innebär att man väntar på den nya stabila versionen. - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3234,12 +3114,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp Det är inte möjligt att nedgradera versioner omedelbart: att byta från stabil till enterprise innebär att man väntar på den nya enterprise-versionen. - + Changing update channel? Ändra uppdateringskanal? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4410,7 +4290,7 @@ Detta är ett nytt experimentellt läge. Om du bestämmer dig för att använda Det går inte att synkronisera på grund av ogiltig ändringstid - + Could not upload file, because it is open in "%1". Kunde inte ladda upp filen eftersom den är öppen i "%1". @@ -4483,8 +4363,8 @@ Detta är ett nytt experimentellt läge. Om du bestämmer dig för att använda Fel vid uppdatering av metadata på grund av ogiltig ändringstid - - + + The folder %1 cannot be made read-only: %2 Mappen %1 kan inte göras skrivskyddad: %2 @@ -4606,7 +4486,7 @@ Detta är ett nytt experimentellt läge. Om du bestämmer dig för att använda Kunde inte skapa mappen %1 - + The folder %1 cannot be made read-only: %2 Mappen %1 kan inte göras skrivskyddad: %2 @@ -4637,7 +4517,7 @@ Detta är ett nytt experimentellt läge. Om du bestämmer dig för att använda OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! Mapp %1 kan inte byta namn på grund av en konflikt med ett lokalt fil- eller mappnamn! @@ -5013,6 +4893,21 @@ Detta är ett nytt experimentellt läge. Om du bestämmer dig för att använda OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5039,7 +4934,7 @@ Detta är ett nytt experimentellt läge. Om du bestämmer dig för att använda Säker gömd fillista - + Could not find local folder for %1 Kunde inte hitta lokal mapp för %1 @@ -5178,16 +5073,16 @@ Servern svarade med fel: %2 Copy public link Kopiera publik länk - - - Encrypt - Kryptera - Copy secure filedrop link Kopiera säker gömd fillista-länk + + + Encrypt + Kryptera + Lock file @@ -5209,16 +5104,16 @@ Servern svarade med fel: %2 remaining time before lock expires Går ut om %1 minuterGår ut om %1 minuter - - - Edit - Ändra - Open in browser Öppna i webbläsare + + + Edit + Ändra + Resolve conflict … @@ -5674,7 +5569,7 @@ Servern svarade med fel: %2 <p>%1 Skrivbordsklient</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 Skrivbordsklient</p><p>Version %1. För mer information klicka <a href='%2'>här</a>.</p> @@ -5685,7 +5580,7 @@ Servern svarade med fel: %2 <p><small>Använder plugin för virtuella filer: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 skrivbordsklient %2</p> @@ -6079,12 +5974,12 @@ Servern svarade med fel: %2 Servern på kontot %1 kör en version %2 som inte stöds. Att använda den här klienten med serverversioner som inte stöds är oprövat och potentiellt farligt. Fortsätt på egen risk. - + Terms of service Användarvillkor - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. Ditt konto %1 kräver att du accepterar din servers användarvillkor. Du kommer bli omdirigerad till %2 för att bekräfta att du har läst och håller med om villkoren. @@ -6160,23 +6055,23 @@ Servern svarade med fel: %2 Inga mappar valda för synkronisering - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) %1: %2 - + macOS VFS for %1: Sync is running. macOS VFS för %1: Synkronisering körs. - + macOS VFS for %1: Last sync was successful. macOS VFS för %1: Senaste synkroniseringen lyckades. - + macOS VFS for %1: A problem was encountered. macOS VFS för %1: Ett problem påträffades. @@ -6340,12 +6235,12 @@ Servern svarade med fel: %2 Ny mapp - + Failed to create debug archive Kunde inte skapa felsökningsarkiv - + Could not create debug archive in selected location! Kunde inte skapa felsökningsarkiv på den valda platsen! @@ -6526,7 +6421,7 @@ Servern svarade med fel: %2 Gömd fillista (endast uppladdning) - + Allow resharing Tillåt vidaredelning @@ -6583,6 +6478,16 @@ Servern svarade med fel: %2 Share password Lösenord för delning + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6646,54 +6551,6 @@ Servern svarade med fel: %2 Skicka svar på chattmeddelande - - TrayFoldersMenuButton - - - Open local or group folders - Öppna lokala eller gruppmappar - - - - Open local folder - Öppnar lokal mapp - - - - Connected - Ansluten - - - - Disconnected - Bortkopplad - - - - Group folder button - Knapp för gruppmapp - - - - Open local folder "%1" - Öppna lokala mappen "%1" - - - - Open group folder "%1" - Öppna gruppmappen "%1" - - - - Open %1 in file explorer - Öppna %1 i filutforskaren - - - - User group and local folders menu - Användargrupp och meny för lokala mappar - - TrayWindowHeader @@ -6978,7 +6835,7 @@ Servern svarade med fel: %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>Byggd från Git revision <a href="%1">%2</a> den %3, %4 med Qt %5, %6</small></p> @@ -7383,6 +7240,54 @@ Servern svarade med fel: %2 Kopiera länk + + TrayFoldersMenuButton + + + Open local or group folders + Öppna lokala eller gruppmappar + + + + Open local folder + Öppnar lokal mapp + + + + Connected + Ansluten + + + + Disconnected + Bortkopplad + + + + Group folder button + Knapp för gruppmapp + + + + Open local folder "%1" + Öppna lokala mappen "%1" + + + + Open group folder "%1" + Öppna gruppmappen "%1" + + + + Open %1 in file explorer + Öppna %1 i filutforskaren + + + + User group and local folders menu + Användargrupp och meny för lokala mappar + + Window diff --git a/translations/client_th.ts b/translations/client_th.ts index ebc5439659f0b..7f1a4b851204c 100644 --- a/translations/client_th.ts +++ b/translations/client_th.ts @@ -342,11 +342,6 @@ Signal file provider domain - - - Create debug archive - - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog - - Current account - - - - - - Resume sync for all - - - - - - Pause sync for all - - - - - Add account - - - - - Add new account - - - - + Unified search results list - - Settings - - - - - Exit - - - - - Current account avatar - - - - + New activities - - - Current account status is online - - - - - Current account status is do not disturb - - - - - Account switcher and settings menu - - - - - Open local or group folders - - - - - More apps - - - - - Open %1 in browser - - OCC::AbstractNetworkJob @@ -1258,34 +1181,34 @@ This action will abort any currently running synchronization. ดำเนินการต่อ - + %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. @@ -1750,13 +1673,13 @@ This action will abort any currently running synchronization. - - + + Encrypted metadata setup error! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2256,16 +2179,11 @@ This can be an issue with your OpenSSL libraries. กรุณาเข้าไปในการตั้งค่าเพื่อเลือก ถ้าคุณต้องการดาวน์โหลด - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - - - Keep syncing - - All files in the sync folder "%1" folder were deleted on the server. @@ -2274,6 +2192,11 @@ If you decide to restore the files, they will be re-synced with the server if yo If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + + Keep syncing + + 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. @@ -2281,16 +2204,16 @@ 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. - - - Stop syncing - - Remove All Files? ลบไฟล์ทั้งหมดหรือไม่? + + + Stop syncing + + Remove all files @@ -2302,12 +2225,12 @@ If this was an accident and you decide to keep your files, they will be re-synce เก็บไฟล์ไว้ - + The folder %1 has surpassed the set folder size limit of %2MB. - + Would you like to stop syncing this folder? @@ -2331,41 +2254,41 @@ This means that the synchronization client might not upload local changes immedi - + 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 @@ -2917,22 +2840,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + การตั้งค่าทั่วไป + About เกี่ยวกับ - - - Legal notice - - - - - General Settings - การตั้งค่าทั่วไป - &Launch on System Startup @@ -2948,13 +2866,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray สำหรับถาดของระบบ + + + Legal notice + + Use &Monochrome Icons ใช้&ไอคอนขาวดำ - + Show Chat Notifications @@ -2964,50 +2887,23 @@ Alternatively, you can restore all deleted files by downloading them from the se - - Updates - อัปเดต - - - - &Automatically check for Updates - - - - - &Channel - - - - - - stable - + + Advanced + ขั้นสูง - - - beta + + Ask for confirmation before synchronizing new folders larger than - - &Restart && Update - &เริ่มต้นใหม่และอัปเดต - - - - &Check for Update now - &ตรวจสอบการอัปเดตตอนนี้ - - - - Advanced - ขั้นสูง + + Updates + อัปเดต - - Ask for confirmation before synchronizing new folders larger than + + &Automatically check for Updates @@ -3017,12 +2913,17 @@ Alternatively, you can restore all deleted files by downloading them from the se เมกะไบต์ - + + &Channel + + + + Notify when synchronised folders grow larger than specified limit - + Automatically disable synchronisation of folders that overcome limit @@ -3032,12 +2933,17 @@ Alternatively, you can restore all deleted files by downloading them from the se ถามก่อนที่จะซิงค์กับพื้นที่จัดเก็บข้อมูลภายนอก - + Move removed files to trash - + + &Check for Update now + &ตรวจสอบการอัปเดตตอนนี้ + + + Show sync folders in &Explorer's navigation pane @@ -3046,6 +2952,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter แ&สดงตัวรายงานข้อผิดพลาด + + + Ask for confirmation before synchronizing folders larger than + ถามก่อนที่จะซิงค์โฟลเดอร์ที่มีขนาดใหญ่กว่า + Edit &Ignored Files @@ -3058,68 +2969,48 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Info - - Ask for confirmation before synchronizing folders larger than - ถามก่อนที่จะซิงค์โฟลเดอร์ที่มีขนาดใหญ่กว่า + + Desktop client x.x.x + - - Desktop client x.x.x + + Show sync folders in &Explorer's Navigation Pane - + Update channel - - Show sync folders in &Explorer's Navigation Pane - + + &Restart && Update + &เริ่มต้นใหม่และอัปเดต - + &Automatically check for updates - + Check Now - + Usage Documentation - - - Legal Notice - - - Use &monochrome icons - - - - - &Launch on system startup - - - - - Show server &notifications - - - - - Show call notifications + Legal Notice @@ -3128,7 +3019,7 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Show chat notification dialogs. @@ -3142,6 +3033,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. + + + + stable + + + + + + beta + + Change update channel? @@ -3155,24 +3058,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar - + daily - + enterprise - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3181,17 +3077,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3199,12 +3085,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4362,7 +4248,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not upload file, because it is open in "%1". @@ -4435,8 +4321,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss - - + + The folder %1 cannot be made read-only: %2 @@ -4558,7 +4444,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + The folder %1 cannot be made read-only: %2 @@ -4589,7 +4475,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! @@ -4965,6 +4851,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -4991,7 +4892,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss - + Could not find local folder for %1 @@ -5129,13 +5030,13 @@ Server replied with error: %2 - - Encrypt + + Copy secure filedrop link - - Copy secure filedrop link + + Encrypt @@ -5160,13 +5061,13 @@ Server replied with error: %2 - - Edit + + Open in browser - - Open in browser + + Edit @@ -5623,7 +5524,7 @@ Server replied with error: %2 - + <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) @@ -5634,7 +5535,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6028,12 +5929,12 @@ Server replied with error: %2 - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6109,23 +6010,23 @@ Server replied with error: %2 ไม่ได้กำหนดค่าโฟลเดอร์ที่จะซิงค์ - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. - + macOS VFS for %1: Last sync was successful. - + macOS VFS for %1: A problem was encountered. @@ -6289,12 +6190,12 @@ Server replied with error: %2 - + Failed to create debug archive - + Could not create debug archive in selected location! @@ -6475,7 +6376,7 @@ Server replied with error: %2 - + Allow resharing @@ -6532,6 +6433,16 @@ Server replied with error: %2 Share password + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6595,54 +6506,6 @@ Server replied with error: %2 - - TrayFoldersMenuButton - - - Open local or group folders - - - - - Open local folder - - - - - Connected - - - - - Disconnected - - - - - Group folder button - - - - - Open local folder "%1" - - - - - Open group folder "%1" - - - - - Open %1 in file explorer - - - - - User group and local folders menu - - - TrayWindowHeader @@ -6927,7 +6790,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -7332,6 +7195,54 @@ Server replied with error: %2 + + TrayFoldersMenuButton + + + Open local or group folders + + + + + Open local folder + + + + + Connected + + + + + Disconnected + + + + + Group folder button + + + + + Open local folder "%1" + + + + + Open group folder "%1" + + + + + Open %1 in file explorer + + + + + User group and local folders menu + + + Window diff --git a/translations/client_tr.ts b/translations/client_tr.ts index beceeb40e292b..19c139c5084d5 100644 --- a/translations/client_tr.ts +++ b/translations/client_tr.ts @@ -342,11 +342,6 @@ Signal file provider domain Signal dosyasını sağlayan etki alanı - - - Create debug archive - Hata ayıklama arşivi oluştur - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog Nextcloud masaüstü ana penceresi - - Current account - Geçerli hesap - - - - - Resume sync for all - Tümü için eşitlemeyi sürdür - - - - - Pause sync for all - Tümü için eşitlemeyi duraklat - - - - Add account - Hesap ekle - - - - Add new account - Yeni hesap ekle - - - + Unified search results list Birleşik arama sonuçları listesi - - Settings - Ayarlar - - - - Exit - Çık - - - - Current account avatar - Geçerli hesap avatarı - - - + New activities Yeni işlemler - - - Current account status is online - Hesabın geçerli durumu: Çevrim içi - - - - Current account status is do not disturb - Hesabın geçerli durumu: Rahatsız etmeyin - - - - Account switcher and settings menu - Hesap değiştirici ve ayarlar menüsü - - - - Open local or group folders - Yerel ya da grup klasörlerini aç - - - - More apps - Diğer uygulamalar - - - - Open %1 in browser - %1 ögesini tarayıcıda aç - OCC::AbstractNetworkJob @@ -1264,34 +1187,34 @@ Bu işlem şu anda yürütülmekte olan eşitleme işlemlerini durdurur.Sürdür - + %1 accounts number of accounts imported %1 hesap - + 1 account 1 hesap - + %1 folders number of folders imported %1 klasör - + 1 folder 1 klasör - + Legacy import Eskileri içe aktarma - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1757,13 +1680,13 @@ Bu işlem şu anda yürütülmekte olan eşitleme işlemlerini durdurur.Sunucu hatası: PROPFIND yanıtı XML biçiminde değil! - - + + Encrypted metadata setup error! Şifrelenmiş üst veri kurulumu sorunu! - + Encrypted metadata setup error: initial signature from server is empty. Şifrelenmiş üst veri kurulum hatası: Sunucudan gelen ilk imza boş. @@ -2264,17 +2187,12 @@ Bu durum OpenSLL kitaplıkları ile ilgili bir sorun olabilir. İndirmek istiyorsanız seçmek için lütfen ayarlar bölümüne gidin. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 Bir klasörün boyutu %1MB olan klasör boyutu sınırını aştı : %2. %3 - - - Keep syncing - Eşitlemeyi sürdür - All files in the sync folder "%1" folder were deleted on the server. @@ -2286,6 +2204,11 @@ Silinen bu dosyalar yerel eşitleme klasörünüzden de silineceğinden, geri y Geri yükleme yetkiniz varsa ve geri yüklemeyi seçerseniz, dosyalar sunucu ile yeniden eşitlenir. Silmeyi seçerseniz ve bu sahibi değilseniz bu dosyaları artık kullanamazsınız. + + + Keep syncing + Eşitlemeyi sürdür + 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. @@ -2296,16 +2219,16 @@ Silinen dosyalar eşitleme sırasında yerel eşitleme klasörünüzden de silin Sunucuda bu eşitleme işlemlerinin yapılmasını istediğinizden emin misiniz? Bu işlemi yanlışlıkla yaptıysanız ve dosyalarınızı korumak istiyorsanız dosyalar sunucudan yeniden eşitlenecek. - - - Stop syncing - Eşitlemeyi durdur - Remove All Files? Tüm dosyalar silinsin mi? + + + Stop syncing + Eşitlemeyi durdur + Remove all files @@ -2317,12 +2240,12 @@ Bu işlemi yanlışlıkla yaptıysanız ve dosyalarınızı korumak istiyorsanı Dosyalar korunsun - + The folder %1 has surpassed the set folder size limit of %2MB. %1 klasörünün boyutu %2MB olan klasör boyutu sınırını aştı. - + Would you like to stop syncing this folder? Bu klasörün eşitlenmesini durdurmak ister misiniz? @@ -2348,12 +2271,12 @@ This means that the synchronization client might not upload local changes immedi Bunun sonucunda eşitleme istemcisi yerel değişiklikleri anında yükleyemez. Onun yerine yalnızca yerel değişiklikleri tarar ve aralıklarla yükler (varsayılan olarak iki saatte bir). - + Virtual file download failed with code "%1", status "%2" and error message "%3" Sanal dosya indirilemedi. Kod: "%1" Durum: "%2" Hata iletisi: "%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. @@ -2362,7 +2285,7 @@ Bu silme işlemlerinin tamamlanmasını isteyip istemediğinizi onaylayın. Bir yanlışlık varsa, silinen tüm dosyaları '%1' klasöründen sunucuya geri yükleyebilirsiniz. - + 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. @@ -2371,22 +2294,22 @@ Bu silme işlemlerinin tamamlanmasını isteyip istemediğinizi onaylayın. Bir yanlışlık varsa, silinen tüm dosyaları sunucudan indirerek geri yükleyebilirsiniz. - + Remove all files? Tüm dosyalar silinsin mi? - + Proceed with Deletion Silme işlemini tamamla - + Restore Files to Server Dosyaları sunucuya geri yükle - + Restore Files from Server Dosyaları sunucudan geri yükle @@ -2938,22 +2861,17 @@ Bir yanlışlık varsa, silinen tüm dosyaları sunucudan indirerek geri yükley OCC::GeneralSettings + + + General Settings + Genel ayarlar + About Hakkında - - - Legal notice - Yasal bildirim - - - - General Settings - Genel ayarlar - &Launch on System Startup @@ -2969,13 +2887,18 @@ Bir yanlışlık varsa, silinen tüm dosyaları sunucudan indirerek geri yükley For System Tray Sistem çekmecesi için + + + Legal notice + Yasal bildirim + Use &Monochrome Icons Tek &renkli simgeler kullanılsın - + Show Chat Notifications @@ -2984,6 +2907,16 @@ Bir yanlışlık varsa, silinen tüm dosyaları sunucudan indirerek geri yükley Show Server &Notifications Su&nucu bildirimleri görüntülensin + + + Advanced + Gelişmiş + + + + Ask for confirmation before synchronizing new folders larger than + Şu boyuttan büyük yeni klasörlerin eşitlenmesi için onay istensin + Updates @@ -2994,43 +2927,6 @@ Bir yanlışlık varsa, silinen tüm dosyaları sunucudan indirerek geri yükley &Automatically check for Updates &Güncellemeler otomatik olarak denetlensin - - - &Channel - &Kanal - - - - - stable - Kararlı - - - - - beta - Beta - - - - &Restart && Update - &Yeniden başlat ve güncelle - - - - &Check for Update now - &Güncellemeri denetle - - - - Advanced - Gelişmiş - - - - Ask for confirmation before synchronizing new folders larger than - Şu boyuttan büyük yeni klasörlerin eşitlenmesi için onay istensin - MB @@ -3038,12 +2934,17 @@ Bir yanlışlık varsa, silinen tüm dosyaları sunucudan indirerek geri yükley MB - + + &Channel + &Kanal + + + Notify when synchronised folders grow larger than specified limit Klasörler eşitlenirken belirtilen sınır aşılırsa bildirilsin - + Automatically disable synchronisation of folders that overcome limit Sınırı aşan klasörlerin eşitlenmesi otomatik olarak durdurulsun @@ -3053,12 +2954,17 @@ Bir yanlışlık varsa, silinen tüm dosyaları sunucudan indirerek geri yükley Dış depolama aygıtları ile eşitleme için onay istensin - + Move removed files to trash Silinen dosyalar çöpe atılsın - + + &Check for Update now + &Güncellemeri denetle + + + Show sync folders in &Explorer's navigation pane &Eşitleme klasörleri gezgin panosunda görüntülensin @@ -3067,6 +2973,11 @@ Bir yanlışlık varsa, silinen tüm dosyaları sunucudan indirerek geri yükley S&how crash reporter Ç&ökme bilgileri görüntülensin + + + Ask for confirmation before synchronizing folders larger than + Şu boyuttan büyük klasörlerin eşitlenmesi için onay istensin + Edit &Ignored Files @@ -3079,77 +2990,57 @@ Bir yanlışlık varsa, silinen tüm dosyaları sunucudan indirerek geri yükley Hata ayıklama arşivi oluştur - + Info Bilgiler - - Ask for confirmation before synchronizing folders larger than - Şu boyuttan büyük klasörlerin eşitlenmesi için onay istensin - - - + Desktop client x.x.x Masaüstü istemcisi x.x.x - + + Show sync folders in &Explorer's Navigation Pane + &Eşitleme klasörleri gezgin panosunda görüntülensin + + + Update channel Güncelleme kanalı - - Show sync folders in &Explorer's Navigation Pane - &Eşitleme klasörleri gezgin panosunda görüntülensin + + &Restart && Update + &Yeniden başlat ve güncelle - + &Automatically check for updates &Güncellemeler otomatik olarak denetlensin - + Check Now Şimdi denetle - + Usage Documentation Kullanım belgeleri - + Legal Notice Yasal bildirim - - - Use &monochrome icons - İki &renkli simgeler kullanılsın - - - - &Launch on system startup - &Sistem başlangıcında çalıştırılsın - - - - Show server &notifications - Su&nucu bildirimleri görüntülensin - - - - Show call notifications - Çağrı bildirimleri görüntülensin - Server notifications that require attention. İlgilenmeniz gereken sunucu bildirimleri. - + Show chat notification dialogs. @@ -3163,6 +3054,18 @@ Bir yanlışlık varsa, silinen tüm dosyaları sunucudan indirerek geri yükley You cannot disable autostart because system-wide autostart is enabled. Otomatik başlatma sistem genelinde kullanıma alınmış olduğundan, otomatik başlatma kullanımdan kaldırılamaz. + + + + stable + Kararlı + + + + + beta + Beta + Change update channel? @@ -3178,25 +3081,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Bu seçenek yalnızca güncellemelerin hangi havuzdan alınacağını belirler. Güncelleme sonrası önceki sürüme geri dönülemeyeceğini unutmayın. Genellikle beta kanalından kararlı kanala geri dönmek için kurulu olan beta sürümünden daha yeni bir kararlı sürümün yayınlanmasını beklemeniz gerekeceğinden bu işlemin hemen gerçekleşmeyeceğini unutmayın. - + daily Günlük - + enterprise Kurumsal - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - Kurumsal: Müşteriler için kararlı sürümleri içerir. - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3208,22 +3103,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m Sürümler hemen düşürülemez: Beta sürümünden Kararlı sürüme geçmek için yeni bir kararlı sürümün yayınlanması beklenmelidir. - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Kanal, hangi güncellemelerin kurulacağını belirler: -- Kararlı: Güvenilir kabul edilen denenmiş sürümler -- Beta: Kapsamlı denenmemiş ancak yeni özellikler bulunan sürümler -- Günlük: Yalnızca deneme ve geliştirme için günlük olarak oluşturulan sürümler -%1 -Sürümler hemen düşürülemez: Beta sürümünden Kararlı sürüme geçmek için yeni bir kararlı sürümün yayınlanması beklenmelidir. - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3233,12 +3113,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp Sürümler hemen düşürülemez: Kararlı sürümünden Enterprise sürüme geçmek için yeni bir kararlı sürümün yayınlanması beklenmelidir. - + Changing update channel? Güncelleme kanalı değiştirilsin mi? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4409,7 +4289,7 @@ Bu yeni ve deneysel bir özelliktir. Kullanmaya karar verirseniz, lütfen karş Değiştirilme zamanı geçersiz olduğundan eşitlenemedi - + Could not upload file, because it is open in "%1". Dosya "%1" içinde açık olduğundan yüklenemedi. @@ -4482,8 +4362,8 @@ Bu yeni ve deneysel bir özelliktir. Kullanmaya karar verirseniz, lütfen karş Değiştirilme zamanı geçersiz olduğundan üst veriler yüklenirken sorun çıktı - - + + The folder %1 cannot be made read-only: %2 %1 klasörü salt okunur yapılamaz: %2 @@ -4605,7 +4485,7 @@ Bu yeni ve deneysel bir özelliktir. Kullanmaya karar verirseniz, lütfen karş %1 klasörü oluşturulamadı - + The folder %1 cannot be made read-only: %2 %1 klasörü salt okunur yapılamaz: %2 @@ -4636,7 +4516,7 @@ Bu yeni ve deneysel bir özelliktir. Kullanmaya karar verirseniz, lütfen karş OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! Yerel dosya veya klasör adı çakışması nedeniyle %1 klasörü yeniden adlandırılamadı! @@ -5012,6 +4892,21 @@ Bu yeni ve deneysel bir özelliktir. Kullanmaya karar verirseniz, lütfen karş OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5038,7 +4933,7 @@ Bu yeni ve deneysel bir özelliktir. Kullanmaya karar verirseniz, lütfen karş Güvenli dosya bırakma - + Could not find local folder for %1 %1 için yerel klasör bulunamadı @@ -5177,16 +5072,16 @@ Sunucunun verdiği hata yanıtı: %2 Copy public link Herkese açık bağlantıyı kopyala - - - Encrypt - Şifrele - Copy secure filedrop link Güvenli dosya bırakma bağlantısını kopyala + + + Encrypt + Şifrele + Lock file @@ -5208,16 +5103,16 @@ Sunucunun verdiği hata yanıtı: %2 remaining time before lock expires %1 dakika sonra açılacak%1 dakika sonra açılacak - - - Edit - Düzenle - Open in browser Tarayıcıda aç + + + Edit + Düzenle + Resolve conflict … @@ -5673,7 +5568,7 @@ Sunucunun verdiği hata yanıtı: %2 <p>%1 Masaüstü istemcisi</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 masaüstü istemcisi</p> <p>%1. Sürüm. Ayrıntılı bilgi almak için <a href='%2'>buraya tıklayabilirsiniz</a>.</p> @@ -5684,7 +5579,7 @@ Sunucunun verdiği hata yanıtı: %2 <p><small>Sanal dosyalar eklentisi kullanılarak: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 masaüstü istemcisi %2</p> @@ -6078,12 +5973,12 @@ Sunucunun verdiği hata yanıtı: %2 %1 hesabındaki sunucu desteklenmeyen %2 sürümünü kullanıyor. Bu istemci desteklenmeyen sunucu sürümleri üzerinde denenmemiş olduğundan tehlikeli olabilir. Bu riski alıyorsanız ilerleyebilirsiniz. - + Terms of service Hizmet koşulları - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. Hesabınızdan %1 sunucunuzun hizmet koşullarını kabul etmeniz isteniyor. Hizmet koşulları okuyup kabul ettiğinizi onaylamak için %2 üzerine yönlendirileceksiniz. @@ -6159,23 +6054,23 @@ Sunucunun verdiği hata yanıtı: %2 Herhangi bir eşitleme klasörü yapılandırılmamış - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) %1: %2 - + macOS VFS for %1: Sync is running. %1 için macOS VFS: Eşitleniyor. - + macOS VFS for %1: Last sync was successful. %1 için macOS VFS: Son eşitleme sorunsuz tamamlandı. - + macOS VFS for %1: A problem was encountered. %1 için macOS VFS: Bir sorun çıktı. @@ -6339,12 +6234,12 @@ Sunucunun verdiği hata yanıtı: %2 Yeni klasör - + Failed to create debug archive Hata ayıklama arşivi oluşturulamadı - + Could not create debug archive in selected location! Seçilmiş konumda hata ayıklama arşivi oluşturulamadı! @@ -6525,7 +6420,7 @@ Sunucunun verdiği hata yanıtı: %2 Dosya bırakma (yalnızca yükleme) - + Allow resharing Yeniden paylaşılabilsin @@ -6582,6 +6477,16 @@ Sunucunun verdiği hata yanıtı: %2 Share password Parolayı paylaş + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6645,54 +6550,6 @@ Sunucunun verdiği hata yanıtı: %2 Bir görüşme iletisini yanıtla - - TrayFoldersMenuButton - - - Open local or group folders - Yerel ya da grup klasörlerini aç - - - - Open local folder - Yerel klasörü aç - - - - Connected - Bağlantı kuruldu - - - - Disconnected - Bağlantı kesildi - - - - Group folder button - Grup klasörü düğmesi - - - - Open local folder "%1" - "%1" yerel klasörünü aç - - - - Open group folder "%1" - "%1" grup klasörünü aç - - - - Open %1 in file explorer - Dosya gezgininde %1 aç - - - - User group and local folders menu - Kullanıcı grup ve yerel klasörler menüsü - - TrayWindowHeader @@ -6977,7 +6834,7 @@ Sunucunun verdiği hata yanıtı: %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>Git <a href="%1">%2</a> sürümü ile %3 zamanında, %4 Qt %5 kullanılarak, %6 hazırlandı</small></p> @@ -7382,6 +7239,54 @@ Sunucunun verdiği hata yanıtı: %2 Bağlantıyı kopyala + + TrayFoldersMenuButton + + + Open local or group folders + Yerel ya da grup klasörlerini aç + + + + Open local folder + Yerel klasörü aç + + + + Connected + Bağlantı kuruldu + + + + Disconnected + Bağlantı kesildi + + + + Group folder button + Grup klasörü düğmesi + + + + Open local folder "%1" + "%1" yerel klasörünü aç + + + + Open group folder "%1" + "%1" grup klasörünü aç + + + + Open %1 in file explorer + Dosya gezgininde %1 aç + + + + User group and local folders menu + Kullanıcı grup ve yerel klasörler menüsü + + Window diff --git a/translations/client_ug.ts b/translations/client_ug.ts index 79e575fe23947..96be1e97260ee 100644 --- a/translations/client_ug.ts +++ b/translations/client_ug.ts @@ -342,11 +342,6 @@ Signal file provider domain سىگنال ھۆججەت تەمىنلىگۈچى دائىرە - - - Create debug archive - خاتالىق ئارخىپى قۇرۇش - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog Nextcloud ئۈستەل يۈزى ئاساسىي دىئالوگى - - Current account - نۆۋەتتىكى ھېسابات - - - - - Resume sync for all - ھەممەيلەنگە ماسقەدەملەشنى ئەسلىگە كەلتۈرۈڭ - - - - - Pause sync for all - ھەممەيلەنگە ماسقەدەملەشنى توختىتىڭ - - - - Add account - ھېسابات قوشۇڭ - - - - Add new account - يېڭى ھېسابات قوشۇڭ - - - + Unified search results list بىرلىككە كەلگەن ئىزدەش نەتىجىسى تىزىملىكى - - Settings - تەڭشەك - - - - Exit - چىقىش - - - - Current account avatar - نۆۋەتتىكى ھېسابات باش سۈرىتى - - - + New activities يېڭى پائالىيەتلەر - - - Current account status is online - نۆۋەتتىكى ھېسابات ھالىتى توردا - - - - Current account status is do not disturb - نۆۋەتتىكى ھېسابات ھالىتى قالايمىقانلاشمايدۇ - - - - Account switcher and settings menu - ھېسابات ئالماشتۇرغۇچ ۋە تەڭشەك تىزىملىكى - - - - Open local or group folders - يەرلىك ياكى گۇرۇپپا ھۆججەت قىسقۇچلىرىنى ئېچىڭ - - - - More apps - تېخىمۇ كۆپ ئەپلەر - - - - Open %1 in browser - تور كۆرگۈچتە% 1 نى ئېچىڭ - OCC::AbstractNetworkJob @@ -1264,34 +1187,34 @@ This action will abort any currently running synchronization. داۋاملاشتۇر - + %1 accounts number of accounts imported % 1 ھېسابات - + 1 account 1 ھېسابات - + %1 folders number of folders imported % 1 ھۆججەت قىسقۇچ - + 1 folder 1 ھۆججەت قىسقۇچ - + Legacy import مىراس ئىمپورت - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1757,13 +1680,13 @@ This action will abort any currently running synchronization. مۇلازىمېتىر خاتالىقى: PROPFIND جاۋاب XML فورماتى ئەمەس! - - + + Encrypted metadata setup error! شىفىرلانغان مېتا سانلىق مەلۇمات تەڭشەش خاتالىقى! - + Encrypted metadata setup error: initial signature from server is empty. شىفىرلانغان مېتا سانلىق مەلۇمات تەڭشەش خاتالىقى: مۇلازىمېتىردىن دەسلەپكى ئىمزا قۇرۇق. @@ -2264,17 +2187,12 @@ This can be an issue with your OpenSSL libraries. چۈشۈرمەكچى بولسىڭىز تەڭشەكلەرگە كىرىڭ. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 قىسقۇچ بەلگىلەنگەن ھۆججەت قىسقۇچنىڭ چوڭلۇقى% 1MB دىن ئېشىپ كەتتى:% 2. % 3 - - - Keep syncing - ماسقەدەملەشنى داۋاملاشتۇرۇڭ - All files in the sync folder "%1" folder were deleted on the server. @@ -2286,6 +2204,11 @@ If you decide to delete the files, they will be unavailable to you, unless you a ئەگەر ھۆججەتلەرنى ئەسلىگە كەلتۈرۈشنى قارار قىلسىڭىز ، ھوقۇقىڭىز بولسا ئۇلار مۇلازىمېتىر بىلەن قايتا ماسقەدەملىنىدۇ. ئەگەر ھۆججەتلەرنى ئۆچۈرۈشنى قارار قىلسىڭىز ، ئىگىسى بولمىسىڭىز ، ئۇلار سىزنى ئىشلىتەلمەيدۇ. + + + Keep syncing + ماسقەدەملەشنى داۋاملاشتۇرۇڭ + 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. @@ -2295,16 +2218,16 @@ If this was an accident and you decide to keep your files, they will be re-synce بۇ ھەرىكەتلەرنى مۇلازىمېتىر بىلەن ماسقەدەملەشنى خالامسىز؟ ئەگەر بۇ تاسادىپىي ۋەقە بولۇپ ، ھۆججەتلىرىڭىزنى ساقلاشنى قارار قىلسىڭىز ، ئۇلار مۇلازىمېتىردىن قايتا ماسقەدەملىنىدۇ. - - - Stop syncing - ماسقەدەملەشنى توختىتىڭ - Remove All Files? بارلىق ھۆججەتلەرنى ئۆچۈرەمسىز؟ + + + Stop syncing + ماسقەدەملەشنى توختىتىڭ + Remove all files @@ -2316,12 +2239,12 @@ If this was an accident and you decide to keep your files, they will be re-synce ھۆججەتلەرنى ساقلاڭ - + The folder %1 has surpassed the set folder size limit of %2MB. % 1 ھۆججەت قىسقۇچ% 2MB لىق ھۆججەت قىسقۇچنىڭ چوڭلۇقىدىن ئېشىپ كەتتى. - + Would you like to stop syncing this folder? بۇ ھۆججەت قىسقۇچنى ماسقەدەملەشنى توختاتامسىز؟ @@ -2349,12 +2272,12 @@ This means that the synchronization client might not upload local changes immedi % 1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" مەۋھۇم ھۆججەت چۈشۈرۈش «% 1» ، ھالەت «% 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. @@ -2363,7 +2286,7 @@ Alternatively, you can restore all deleted files by uploading from '%1&apos ئۇنىڭدىن باشقا ، '% 1' ھۆججەت قىسقۇچىدىن مۇلازىمېتىرغا يوللاش ئارقىلىق ئۆچۈرۈلگەن ھۆججەتلەرنىڭ ھەممىسىنى ئەسلىگە كەلتۈرەلەيسىز. - + 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. @@ -2372,22 +2295,22 @@ Alternatively, you can restore all deleted files by downloading them from the se ئۇنىڭدىن باشقا ، ئۆچۈرۈلگەن ھۆججەتلەرنىڭ ھەممىسىنى مۇلازىمېتىردىن چۈشۈرۈپ ئەسلىگە كەلتۈرەلەيسىز. - + Remove all files? بارلىق ھۆججەتلەرنى ئۆچۈرەمسىز؟ - + Proceed with Deletion ئۆچۈرۈش بىلەن داۋاملاشتۇرۇڭ - + Restore Files to Server ھۆججەتلەرنى مۇلازىمېتىرغا ئەسلىگە كەلتۈرۈڭ - + Restore Files from Server مۇلازىمېتىردىن ھۆججەتلەرنى ئەسلىگە كەلتۈرۈڭ @@ -2939,22 +2862,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + ئادەتتىكى تەڭشەكلەر + About ھەققىدە - - - Legal notice - قانۇن ئۇقتۇرۇشى - - - - General Settings - ئادەتتىكى تەڭشەكلەر - &Launch on System Startup @@ -2970,13 +2888,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray سىستېما تەخسىسى ئۈچۈن + + + Legal notice + قانۇن ئۇقتۇرۇشى + Use &Monochrome Icons & Monochrome سىنبەلگىسىنى ئىشلىتىڭ - + Show Chat Notifications @@ -2985,6 +2908,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications مۇلازىمېتىر ۋە ئۇقتۇرۇشلارنى كۆرسىتىش + + + Advanced + Advanced + + + + Ask for confirmation before synchronizing new folders larger than + ئۇنىڭدىن چوڭراق يېڭى ھۆججەت قىسقۇچلارنى ماسقەدەملەشتىن بۇرۇن جەزملەشتۈرۈڭ + Updates @@ -2995,43 +2928,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates & يېڭىلانمىلارنى ئاپتوماتىك تەكشۈرۈڭ - - - &Channel - & Channel - - - - - stable - مۇقىم - - - - - beta - beta - - - - &Restart && Update - & قايتا قوزغىتىش && يېڭىلاش - - - - &Check for Update now - & يېڭىلاشنى تەكشۈرۈڭ - - - - Advanced - Advanced - - - - Ask for confirmation before synchronizing new folders larger than - ئۇنىڭدىن چوڭراق يېڭى ھۆججەت قىسقۇچلارنى ماسقەدەملەشتىن بۇرۇن جەزملەشتۈرۈڭ - MB @@ -3039,12 +2935,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + & Channel + + + Notify when synchronised folders grow larger than specified limit ماس قەدەملىك ھۆججەت قىسقۇچنىڭ بەلگىلەنگەن چەكتىن چوڭ بولغاندا قاچان ئۇقتۇرۇڭ - + Automatically disable synchronisation of folders that overcome limit چەكتىن ئېشىپ كەتكەن ھۆججەت قىسقۇچلارنىڭ ماسقەدەملىنىشىنى ئاپتوماتىك چەكلەيدۇ @@ -3054,12 +2955,17 @@ Alternatively, you can restore all deleted files by downloading them from the se تاشقى دۇكانلارنى ماسقەدەملەشتىن بۇرۇن جەزملەشتۈرۈشنى سوراڭ - + Move removed files to trash چىقىرىۋېتىلگەن ھۆججەتلەرنى ئەخلەت ساندۇقىغا يۆتكەڭ - + + &Check for Update now + & يېڭىلاشنى تەكشۈرۈڭ + + + Show sync folders in &Explorer's navigation pane & Explorer نىڭ يولباشچى تاختىسىدا ماسقەدەم ھۆججەت قىسقۇچنى كۆرسىتىڭ @@ -3068,6 +2974,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter S ۋە قانداق چۈشۈپ كەتكەن مۇخبىر + + + Ask for confirmation before synchronizing folders larger than + ئۇنىڭدىن چوڭ ھۆججەت قىسقۇچلارنى ماسقەدەملەشتىن بۇرۇن جەزملەشتۈرۈڭ + Edit &Ignored Files @@ -3080,77 +2991,57 @@ Alternatively, you can restore all deleted files by downloading them from the se خاتالىق ئارخىپى قۇرۇش - + Info ئۇچۇر - - Ask for confirmation before synchronizing folders larger than - ئۇنىڭدىن چوڭ ھۆججەت قىسقۇچلارنى ماسقەدەملەشتىن بۇرۇن جەزملەشتۈرۈڭ - - - + Desktop client x.x.x ئۈستەل يۈزى خېرىدارى x.x.x. - + + Show sync folders in &Explorer's Navigation Pane + & Explorer نىڭ يولباشچى تاختىسىدا ماسقەدەم ھۆججەت قىسقۇچنى كۆرسىتىڭ + + + Update channel قانالنى يېڭىلاش - - Show sync folders in &Explorer's Navigation Pane - & Explorer نىڭ يولباشچى تاختىسىدا ماسقەدەم ھۆججەت قىسقۇچنى كۆرسىتىڭ + + &Restart && Update + & قايتا قوزغىتىش && يېڭىلاش - + &Automatically check for updates يېڭىلانمىلارنى ئاپتوماتىك تەكشۈرۈڭ - + Check Now ھازىر تەكشۈرۈڭ - + Usage Documentation ئىشلىتىش ھۆججىتى - + Legal Notice قانۇن ئۇقتۇرۇشى - - - Use &monochrome icons - سىنبەلگىلەرنى ئىشلىتىڭ - - - - &Launch on system startup - & سىستېما قوزغىتىشنى قوزغىتىش - - - - Show server &notifications - مۇلازىمېتىر ۋە ئۇقتۇرۇشنى كۆرسىتىش - - - - Show call notifications - چاقىرىش ئۇقتۇرۇشىنى كۆرسىتىش - Server notifications that require attention. دىققەت قىلىشنى تەلەپ قىلىدىغان مۇلازىمېتىر ئۇقتۇرۇشى. - + Show chat notification dialogs. @@ -3164,6 +3055,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. ئاپتوماتىك قوزغىتىشنى چەكلىيەلمەيسىز ، چۈنكى سىستېما بويىچە ئاپتوماتىك قوزغىتىش ئىقتىدارى قوزغىتىلغان. + + + + stable + مۇقىم + + + + + beta + beta + Change update channel? @@ -3179,25 +3082,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar شۇنىڭغا دىققەت قىلىڭكى ، بۇ پەقەت كۆلچەكنىڭ يېڭىلىنىشىدىن ئېلىنغان ، ھەمدە تۆۋەنلەشنىڭ يوقلىقىنىلا تاللايدۇ: شۇڭلاشقا سىناق قانالدىن مۇقىم قانالغا قايتىشنى ئادەتتە دەرھال قىلغىلى بولمايدۇ ھەمدە نۆۋەتتىكى ئورنىتىلغان سىناقتىنمۇ يېڭى بولغان مۇقىم نەشرىنى ساقلاشنى كۆرسىتىدۇ. نەشرى. - + daily ھەر كۈنى - + enterprise كارخانا - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - كارخانا: خېرىدارلارنىڭ مۇقىم نەشرىنى ئۆز ئىچىگە ئالىدۇ. - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3209,22 +3104,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m دەرىجىسىنى تۆۋەنلىتىش دەرھال مۇمكىن ئەمەس: سىناقتىن مۇقىم ھالەتكە ئۆزگەرتىش يېڭى مۇقىم نەشرىنى ساقلاشنى كۆرسىتىدۇ. - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - بۇ قانال قايسى يېڭىلاشلارنىڭ ئورنىتىلىدىغانلىقىنى بەلگىلەيدۇ: -- مۇقىم: ئىشەنچلىك دەپ قارالغان سىناق نۇسخىسىنى ئۆز ئىچىگە ئالىدۇ -- beta: تولۇق سىناق قىلىنماسلىقى مۇمكىن بولغان يېڭى ئىقتىدارلىرى بار نۇسخىسى بار -- كۈندىلىك: پەقەت سىناق ۋە ئېچىش ئۈچۈنلا ياسالغان نۇسخىسىنى ئۆز ئىچىگە ئالىدۇ -% 1 -دەرىجىسىنى تۆۋەنلىتىش دەرھال مۇمكىن ئەمەس: سىناقتىن مۇقىم ھالەتكە ئۆزگەرتىش يېڭى مۇقىم نەشرىنى ساقلاشنى كۆرسىتىدۇ. - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3234,12 +3114,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp دەرىجىسىنى تۆۋەنلىتىش دەرھال مۇمكىن ئەمەس: مۇقىملىقتىن كارخانىغا ئۆزگەرتىش يېڭى كارخانا نۇسخىسىنى ساقلاشنى كۆرسىتىدۇ. - + Changing update channel? يېڭىلاش قانىلىنى ئۆزگەرتەمسىز؟ - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4410,7 +4290,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss ئۆزگەرتىش ۋاقتى ئىناۋەتسىز بولغاچقا ماسقەدەملىيەلمەيدۇ - + Could not upload file, because it is open in "%1". ھۆججەت يۈكلىيەلمىدى ، چۈنكى ئۇ «% 1» دە ئوچۇق. @@ -4483,8 +4363,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss ئۆزگەرتىش ۋاقتى ئىناۋەتسىز بولغانلىقتىن مېتا سانلىق مەلۇماتنى يېڭىلاشتا خاتالىق بار - - + + The folder %1 cannot be made read-only: %2 % 1 ھۆججەت قىسقۇچنى ئوقۇشقىلا بولمايدۇ:% 2 @@ -4606,7 +4486,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss % 1 ھۆججەت قىسقۇچ قۇرالمىدى - + The folder %1 cannot be made read-only: %2 % 1 ھۆججەت قىسقۇچنى ئوقۇشقىلا بولمايدۇ:% 2 @@ -4637,7 +4517,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! يەرلىك ھۆججەت ياكى ھۆججەت قىسقۇچ ئىسمى توقۇنۇش سەۋەبىدىن% 1 ھۆججەت قىسقۇچنىڭ نامىنى ئۆزگەرتكىلى بولمايدۇ! @@ -5013,6 +4893,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5039,7 +4934,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss بىخەتەر ھۆججەت چۈشۈرۈش - + Could not find local folder for %1 % 1 يەرلىك ھۆججەت قىسقۇچنى تاپالمىدى @@ -5178,16 +5073,16 @@ Server replied with error: %2 Copy public link ئاممىۋى ئۇلىنىشنى كۆچۈرۈڭ - - - Encrypt - شىفىرلاش - Copy secure filedrop link بىخەتەر ئارخىپ ئۇلىنىشىنى كۆچۈرۈڭ + + + Encrypt + شىفىرلاش + Lock file @@ -5209,16 +5104,16 @@ Server replied with error: %2 remaining time before lock expires - - - Edit - تەھرىر - Open in browser توركۆرگۈدە ئېچىڭ + + + Edit + تەھرىر + Resolve conflict … @@ -5674,7 +5569,7 @@ Server replied with error: %2 <p>% 1 ئۈستەل يۈزى خېرىدارى </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 ئۈستەل يۈزى خېرىدارى </p> <p> نەشرى% 1. تېخىمۇ كۆپ ئۇچۇرغا ئېرىشىش ئۈچۈن بۇ يەردىكى <a href = '% 2'> نى بېسىڭ. </p> @@ -5685,7 +5580,7 @@ Server replied with error: %2 <p> <small> مەۋھۇم ھۆججەت قىستۇرمىسىنى ئىشلىتىش:% 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> @@ -6079,12 +5974,12 @@ Server replied with error: %2 % 1 ھېساباتىدىكى مۇلازىمېتىر قوللىمايدىغان نەشرىنى% 2 ئىجرا قىلىدۇ. قوللىمايدىغان مۇلازىمېتىر نەشرى بىلەن بۇ خېرىدارنى ئىشلىتىش سىناقتىن ئۆتمىگەن ۋە خەتەرلىك بولۇشى مۇمكىن. ئۆزىڭىزنىڭ خەتىرىگە قاراپ ئىلگىرىلەڭ. - + Terms of service مۇلازىمەت شەرتلىرى - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. ھېساباتىڭىز% 1 مۇلازىمىتىرىڭىزنىڭ مۇلازىمەت شەرتلىرىنى قوبۇل قىلىشىڭىزنى تەلەپ قىلىدۇ. ئۇنى ئوقۇغانلىقىڭىز ۋە ئۇنىڭغا قوشۇلغانلىقىڭىزنى ئېتىراپ قىلىش ئۈچۈن% 2 گە قايتا نىشانلىنىسىز. @@ -6160,23 +6055,23 @@ Server replied with error: %2 ماس قەدەملىك ھۆججەت قىسقۇچ سەپلەنمىدى - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) % 1:% 2 - + macOS VFS for %1: Sync is running. % 1 ئۈچۈن macOS VFS: ماسقەدەملەش ئىجرا بولۇۋاتىدۇ. - + macOS VFS for %1: Last sync was successful. % 1 ئۈچۈن macOS VFS: ئاخىرقى ماسقەدەملەش مۇۋەپپەقىيەتلىك بولدى. - + macOS VFS for %1: A problem was encountered. % 1 ئۈچۈن macOS VFS: مەسىلە كۆرۈلدى. @@ -6340,12 +6235,12 @@ Server replied with error: %2 يېڭى ھۆججەت قىسقۇچ - + Failed to create debug archive خاتالىق ئارخىپى قۇرالمىدى - + Could not create debug archive in selected location! تاللانغان جايدا خاتالىق ئارخىپى قۇرالمىدى! @@ -6526,7 +6421,7 @@ Server replied with error: %2 ھۆججەت چۈشۈرۈش (پەقەت يوللاش) - + Allow resharing قايتا تولۇقلاشقا يول قويۇڭ @@ -6583,6 +6478,16 @@ Server replied with error: %2 Share password پارولنى ئورتاقلىشىش + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6646,54 +6551,6 @@ Server replied with error: %2 پاراڭلىشىش ئۇچۇرىغا جاۋاب ئەۋەتىڭ - - TrayFoldersMenuButton - - - Open local or group folders - يەرلىك ياكى گۇرۇپپا ھۆججەت قىسقۇچلىرىنى ئېچىڭ - - - - Open local folder - يەرلىك ھۆججەت قىسقۇچنى ئېچىڭ - - - - Connected - ئۇلاندى - - - - Disconnected - ئۈزۈلۈپ قالدى - - - - Group folder button - گۇرۇپپا قىسقۇچ كۇنۇپكىسى - - - - Open local folder "%1" - يەرلىك ھۆججەت قىسقۇچنى ئېچىڭ "% 1" - - - - Open group folder "%1" - گۇرۇپپا ھۆججەت قىسقۇچىنى ئېچىڭ "% 1" - - - - Open %1 in file explorer - ھۆججەت ئىزدىگۈچىدە% 1 نى ئېچىڭ - - - - User group and local folders menu - ئىشلەتكۈچى گۇرۇپپىسى ۋە يەرلىك ھۆججەت قىسقۇچ تىزىملىكى - - TrayWindowHeader @@ -6978,7 +6835,7 @@ Server replied with 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> Git تۈزىتىلگەن نۇسخىسىدىن ياسالغان <a href = "% 1">% 2 </a>% 3 ،% 4 Qt% 5 ،% 6 </small> </p> @@ -7383,6 +7240,54 @@ Server replied with error: %2 ئۇلانمىنى كۆچۈرۈڭ + + TrayFoldersMenuButton + + + Open local or group folders + يەرلىك ياكى گۇرۇپپا ھۆججەت قىسقۇچلىرىنى ئېچىڭ + + + + Open local folder + يەرلىك ھۆججەت قىسقۇچنى ئېچىڭ + + + + Connected + ئۇلاندى + + + + Disconnected + ئۈزۈلۈپ قالدى + + + + Group folder button + گۇرۇپپا قىسقۇچ كۇنۇپكىسى + + + + Open local folder "%1" + يەرلىك ھۆججەت قىسقۇچنى ئېچىڭ "% 1" + + + + Open group folder "%1" + گۇرۇپپا ھۆججەت قىسقۇچىنى ئېچىڭ "% 1" + + + + Open %1 in file explorer + ھۆججەت ئىزدىگۈچىدە% 1 نى ئېچىڭ + + + + User group and local folders menu + ئىشلەتكۈچى گۇرۇپپىسى ۋە يەرلىك ھۆججەت قىسقۇچ تىزىملىكى + + Window diff --git a/translations/client_uk.ts b/translations/client_uk.ts index 3e18f0ca0cf0d..73bbe46cda242 100644 --- a/translations/client_uk.ts +++ b/translations/client_uk.ts @@ -342,11 +342,6 @@ Signal file provider domain Домен служби сигнального файлу - - - Create debug archive - Створити архів зневадження - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog Діалогове вікно Nextcloud - - Current account - Цей обліковий запис - - - - - Resume sync for all - Відновити синхронізацію для всіх - - - - - Pause sync for all - Призупинити синхронізацію для всіх - - - - Add account - Додати обліковий запис - - - - Add new account - Додати новий обліковий запис - - - + Unified search results list Результати пошуку - - Settings - Налаштування - - - - Exit - Вихід - - - - Current account avatar - Пікторграма для цього користувача - - - + New activities Нові події - - - Current account status is online - Цей користувач в мережі - - - - Current account status is do not disturb - Цей користувач просить не турбувати - - - - Account switcher and settings menu - Перемикач облікових записів та меню налаштувань - - - - Open local or group folders - Відкрити каталог на пристрої або груповий каталог - - - - More apps - Ще застосунки - - - - Open %1 in browser - Відкрити %1 в бравзері - OCC::AbstractNetworkJob @@ -1264,34 +1187,34 @@ This action will abort any currently running synchronization. Продовжити - + %1 accounts number of accounts imported %1 облікових записів - + 1 account 1 обліковий запис - + %1 folders number of folders imported %1 каталогів - + 1 folder 1 каталог - + Legacy import Імпорт застарілих записів - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1757,13 +1680,13 @@ This action will abort any currently running synchronization. Помилка серверу: PROPFIND reply is not XML formatted! - - + + Encrypted metadata setup error! Помилка з налаштуванням шифрування метаданих! - + Encrypted metadata setup error: initial signature from server is empty. Помилка під час налаштування зашифрованих метаданих: початкова сиґнатура, отримана від сервера, є порожньою. @@ -2264,17 +2187,12 @@ This can be an issue with your OpenSSL libraries. Будь ласка, перейдіть у налаштуваннях, щоб вибрати її для подальшого звантаження. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 Каталог %2 перевищив встановлене обмеження на розмір %1MB %3 - - - Keep syncing - Синхронізовувати - All files in the sync folder "%1" folder were deleted on the server. @@ -2286,6 +2204,11 @@ If you decide to delete the files, they will be unavailable to you, unless you a Якщо ви вирішите відновити ці файли, їх буде повторно синхронізовано з хмарою, якщо ви маєте відповідні права. Якщо ви вирішите вилучити ці файли, вони будуть недоступні вам, якщо ви не є їхнім власником. + + + Keep syncing + Синхронізовувати + 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. @@ -2295,16 +2218,16 @@ If this was an accident and you decide to keep your files, they will be re-synce Чи дійсно виконати такі дії з синхронізації з хмарою? Якщо ви це зробили помилково та бажаєте зберегти ваші файли, їх буде повторно синхронізовано з хмари. - - - Stop syncing - Зупинити синхронізацію - Remove All Files? Вилучити усі файли? + + + Stop syncing + Зупинити синхронізацію + Remove all files @@ -2316,12 +2239,12 @@ If this was an accident and you decide to keep your files, they will be re-synce Зберегти файли - + The folder %1 has surpassed the set folder size limit of %2MB. Каталог %1 перевищив встановлене обмеження на розмір %2MB. - + Would you like to stop syncing this folder? Призупинити синхронізацію цього каталогу? @@ -2349,12 +2272,12 @@ This means that the synchronization client might not upload local changes immedi %1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" Помилка звантаженння віртульного файлу: код "%1", статус "%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. @@ -2363,7 +2286,7 @@ Alternatively, you can restore all deleted files by uploading from '%1&apos Альтернативно ви можете відновити усі вилучені файли шляхом завантаженя з каталогу "%1" на сервер хмари. - + 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. @@ -2372,22 +2295,22 @@ Alternatively, you can restore all deleted files by downloading them from the se Альтернативно ви можете відновити усі вилучені файли шляхом їхнього звантаженя з сервера хмари. - + Remove all files? Дійсно вилучити всі файли? - + Proceed with Deletion Дійсно вилучити - + Restore Files to Server Відновити файли на сервері - + Restore Files from Server Відновити файли з сервера @@ -2939,22 +2862,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + Загальні + About Опис - - - Legal notice - Правові застереження - - - - General Settings - Загальні - &Launch on System Startup @@ -2970,13 +2888,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray Для системного трею + + + Legal notice + Правові застереження + Use &Monochrome Icons Використовувати &чорно-білі значки - + Show Chat Notifications @@ -2985,6 +2908,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications Показувати &Сповіщення сервера + + + Advanced + Додатково + + + + Ask for confirmation before synchronizing new folders larger than + Питати підтвердження перед синхронізацією каталогу, розмір якого перевищує + Updates @@ -2995,43 +2928,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates &Автоматично перевіряти оновлення - - - &Channel - &Канал - - - - - stable - Стабільний - - - - - beta - Бета-версія - - - - &Restart && Update - &Перезавантажити та оновити - - - - &Check for Update now - &Перевірити оновлення - - - - Advanced - Додатково - - - - Ask for confirmation before synchronizing new folders larger than - Питати підтвердження перед синхронізацією каталогу, розмір якого перевищує - MB @@ -3039,12 +2935,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &Канал + + + Notify when synchronised folders grow larger than specified limit Сповіщати, коли каталоги, що синхронізуються, збільшуються у розмірі понад встановлене обмеженння - + Automatically disable synchronisation of folders that overcome limit Автоматично вимикати синхронізацію каталогів, розмір яких перевищує обмеження @@ -3054,12 +2955,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Підтверджувати перед синхронізацією зовнішнього сховища - + Move removed files to trash Переміщати вилучені файли до кошика - + + &Check for Update now + &Перевірити оновлення + + + Show sync folders in &Explorer's navigation pane Показувати каталоги для синхронізації на панелі &файлового менеджера @@ -3068,6 +2974,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter &Вивести звіт про помилку + + + Ask for confirmation before synchronizing folders larger than + Підтверджувати синхронізацію каталогів, розмір яких більше + Edit &Ignored Files @@ -3080,77 +2991,57 @@ Alternatively, you can restore all deleted files by downloading them from the se Створити архів зневадження - + Info Інформація - - Ask for confirmation before synchronizing folders larger than - Підтверджувати синхронізацію каталогів, розмір яких більше - - - + Desktop client x.x.x Настільний клієнт x.x.x - + + Show sync folders in &Explorer's Navigation Pane + Показувати каталоги для синхронізації у панелі &Файлового провідника + + + Update channel Оновити канал - - Show sync folders in &Explorer's Navigation Pane - Показувати каталоги для синхронізації у панелі &Файлового провідника + + &Restart && Update + &Перезавантажити та оновити - + &Automatically check for updates &Автоматично перевіряти оновлення - + Check Now Перевірити зараз - + Usage Documentation Документація користувача - + Legal Notice Правові застереження - - - Use &monochrome icons - Використовувати &монохромні іконки - - - - &Launch on system startup - &Запускати під час запуску системи - - - - Show server &notifications - Показувати &сповіщення сервера - - - - Show call notifications - Показувати сповіщення голосових викликів - Server notifications that require attention. Сповіщення сервера, на які треба звернути увагу. - + Show chat notification dialogs. @@ -3164,6 +3055,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. Неможливо вимкнути автостарт, оскільки увімкнено автоматичний запуск на рівні системи. + + + + stable + Стабільний + + + + + beta + Бета-версія + Change update channel? @@ -3179,25 +3082,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar Зауважте, що таким чином ви виберете набір оновлень, які буде застосовувано, і що неможливо буде повернутися до попередніх версій. Відтак повернення з "бета" до "стабільного" каналу зазвичай неможливо буде виконати одразу, натомість ви матимете зачекати на нову стабільну версію порівняно зі встановленою бета-версією. - + daily щоденно - + enterprise для бізнесу - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - для бізнесу: містить стабільні версії для клієнтів. - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3208,22 +3103,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m Пониження версії не відбувається одразу: повернення з каналу "бета" до "стабільного" означає, що ви матимете зачекати на нову стабільну версію. - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - Канал визначає, які оновлення буде запропоновано системою до встановлення: -- стабільний: містить перевірені версії, які вважають стабільними -- бета: містить версії з новими функціями, які не обов'язково пройшли ретельне тестування -- щоденні збірки: містить версії, які оновлюються щодня виключено для потреб тестування та розробки -%1 -Пониження версії не відбувається одразу: зміна з каналу "бета" на "стабільни! можлива тільки з наступного випуску стабільної версії. - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3232,12 +3112,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp Пониження версії не відбувається одразу: повернення з каналу "бета" до "для бізнесу" означає, що ви матимете зачекати на нову версію для бізнесу. - + Changing update channel? Змінити канал оновлення? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4408,7 +4288,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Неможливо виконати синхронізацію через неправильний час модифікації - + Could not upload file, because it is open in "%1". Не вдалося завантажити файл, оскільки його відкрито у "%1". @@ -4481,8 +4361,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss Помилка при завантаженні метаданих через неправильні зміни часу - - + + The folder %1 cannot be made read-only: %2 Неможливо зробити каталог %1 тільки для читання: %2 @@ -4604,7 +4484,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Неможливо створити каталог %1 - + The folder %1 cannot be made read-only: %2 Неможливо зробити каталог %1 тільки для читання: %2 @@ -4635,7 +4515,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! Неможливо перейменувати каталог %1, оскільки файл або каталог з таким же ім'ям вже присутній на пристрої! @@ -5011,6 +4891,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5037,7 +4932,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss Безпечне копіювання файлів - + Could not find local folder for %1 Не вдалося знайти каталог на пристрої для %1 @@ -5176,16 +5071,16 @@ Server replied with error: %2 Copy public link Копіювати публічне посилання - - - Encrypt - Зашифрувати - Copy secure filedrop link Копіювати посилання для безпечного копіювання файлів + + + Encrypt + Зашифрувати + Lock file @@ -5207,16 +5102,16 @@ Server replied with error: %2 remaining time before lock expires Спливає за %1 хвилинуСпливає за %1 хвилиниСпливає за %1 хвилинСпливає за %1 хвилин - - - Edit - Редагувати - Open in browser Відкрити у бравзері + + + Edit + Редагувати + Resolve conflict … @@ -5672,7 +5567,7 @@ Server replied with error: %2 <p>%1 клієнт для робочої істанції</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</p><p>Версія %1. Для докладної інформації, перейдіть <a href='%2'>сюди</a>.</p> @@ -5683,7 +5578,7 @@ Server replied with error: %2 <p><small>Використання плаґіну віртуальних файлів: %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> @@ -6077,12 +5972,12 @@ Server replied with error: %2 Сервер облікового запису %1 має версію %2, яка не підтримується. Використання цього клієнта з версією сервера, яка не підтримується, не протестовано та може принести шкоду. Продовжуйте на власний ризик. - + Terms of service Умови користування - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. Користувач %1 має прийняти умови користування хмарою вашого серверу. Вас буде переспрямовано до %2, де ви зможете переглянути та погодитися з умовами. @@ -6158,23 +6053,23 @@ Server replied with error: %2 Каталог(и) для синхронізації не налаштовано - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. macOS VFS для %1: Відбувається синхронізація. - + macOS VFS for %1: Last sync was successful. macOS VFS для %1: Остання синхронізація була успішною. - + macOS VFS for %1: A problem was encountered. macOS VFS для %1: Помилка під час синхронізації. @@ -6338,12 +6233,12 @@ Server replied with error: %2 Новий каталог - + Failed to create debug archive Не вдалося створити архів зневадження - + Could not create debug archive in selected location! Неможливо створити архів зневадження у вибраному місці! @@ -6524,7 +6419,7 @@ Server replied with error: %2 Сховище (тільки завантажування) - + Allow resharing Дозволити передавати у спільний доступ іншим @@ -6581,6 +6476,16 @@ Server replied with error: %2 Share password Пароль на спільний доступ + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6644,54 +6549,6 @@ Server replied with error: %2 Відповісти на повідомлення у чаті - - TrayFoldersMenuButton - - - Open local or group folders - Відкрити локальні або групові каталоги - - - - Open local folder - Відкрити каталог на пристрої - - - - Connected - З'єднано - - - - Disconnected - Від'єднано - - - - Group folder button - Кнопка групового каталогу - - - - Open local folder "%1" - Відкрити локальний каталог "%1" - - - - Open group folder "%1" - Відкрити груповий каталог "%1" - - - - Open %1 in file explorer - Відкрити %1 у файловому провіднику - - - - User group and local folders menu - Меню груп користувачів та локальних каталогів - - TrayWindowHeader @@ -6976,7 +6833,7 @@ Server replied with 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>Зібрано з ревізії Git %2</a> на %3, %4 з використанням Qt %5, %6</small></p> @@ -7381,6 +7238,54 @@ Server replied with error: %2 Копіювати посилання + + TrayFoldersMenuButton + + + Open local or group folders + Відкрити локальні або групові каталоги + + + + Open local folder + Відкрити каталог на пристрої + + + + Connected + З'єднано + + + + Disconnected + Від'єднано + + + + Group folder button + Кнопка групового каталогу + + + + Open local folder "%1" + Відкрити локальний каталог "%1" + + + + Open group folder "%1" + Відкрити груповий каталог "%1" + + + + Open %1 in file explorer + Відкрити %1 у файловому провіднику + + + + User group and local folders menu + Меню груп користувачів та локальних каталогів + + Window diff --git a/translations/client_zh_CN.ts b/translations/client_zh_CN.ts index ef46971ce2ec6..93b5acca68131 100644 --- a/translations/client_zh_CN.ts +++ b/translations/client_zh_CN.ts @@ -342,11 +342,6 @@ Signal file provider domain 信号文件提供商域名 - - - Create debug archive - 创建调试存档 - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog Nextcloud 桌面主对话框 - - Current account - 当前账号 - - - - - Resume sync for all - 继续所有同步 - - - - - Pause sync for all - 暂停所有同步 - - - - Add account - 添加账号 - - - - Add new account - 添加新账号 - - - + Unified search results list 统一搜索结果列表 - - Settings - 设置 - - - - Exit - 退出 - - - - Current account avatar - 当前账号头像 - - - + New activities 新动态 - - - Current account status is online - 当前账号状态为在线 - - - - Current account status is do not disturb - 当前账号状态为请勿打扰 - - - - Account switcher and settings menu - 账号切换器和设置菜单 - - - - Open local or group folders - 打开本地或群组文件夹 - - - - More apps - 更多的应用程序 - - - - Open %1 in browser - 在浏览器中打开 %1 - OCC::AbstractNetworkJob @@ -1260,34 +1183,34 @@ This action will abort any currently running synchronization. 继续 - + %1 accounts number of accounts imported %1 个账号 - + 1 account 1 个账号 - + %1 folders number of folders imported %1 个文件夹 - + 1 folder 1 个文件夹 - + Legacy import 旧版导入 - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1753,13 +1676,13 @@ This action will abort any currently running synchronization. 服务器错误:PROPFIND 回复的格式不是 XML! - - + + Encrypted metadata setup error! 已加密的元数据设置错误! - + Encrypted metadata setup error: initial signature from server is empty. @@ -2260,17 +2183,12 @@ This can be an issue with your OpenSSL libraries. 如果您想下载,请到设置页面选择它。 - + A folder has surpassed the set folder size limit of %1MB: %2. %3 文件夹已超过设置的文件夹大小限制 %1MB:%2。 %3 - - - Keep syncing - 保持同步 - All files in the sync folder "%1" folder were deleted on the server. @@ -2282,6 +2200,11 @@ If you decide to delete the files, they will be unavailable to you, unless you a 如果您决定恢复文件,它们将与服务器重新同步(如果您有权限这样做的话)。 如果您决定删除文件,它们将对您不可用,除非您是所有者。 + + + Keep syncing + 保持同步 + 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. @@ -2291,16 +2214,16 @@ If this was an accident and you decide to keep your files, they will be re-synce 您确定要与服务器同步这些操作吗? 如果这是一次意外,而您决定保留您的文件,它们将从服务器重新同步。 - - - Stop syncing - 停止同步 - Remove All Files? 移除所有文件? + + + Stop syncing + 停止同步 + Remove all files @@ -2312,12 +2235,12 @@ If this was an accident and you decide to keep your files, they will be re-synce 保留文件 - + The folder %1 has surpassed the set folder size limit of %2MB. 文件夹 %1 已超过设置的文件夹大小限制 %2MB - + Would you like to stop syncing this folder? 你想要停止同步此文件夹吗? @@ -2345,19 +2268,19 @@ This means that the synchronization client might not upload local changes immedi %1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" 虚拟文件下载失败,错误代码 “%1”,状态 “%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 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. @@ -2366,22 +2289,22 @@ Alternatively, you can restore all deleted files by downloading them from the se 或者,你可以通过从服务器重新下载以恢复删除的文件。 - + Remove all files? 删除所有文件? - + Proceed with Deletion 继续删除 - + Restore Files to Server 恢复文件至服务器 - + Restore Files from Server 从服务器恢复文件 @@ -2933,22 +2856,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + 常规设置 + About 关于 - - - Legal notice - 法律提示 - - - - General Settings - 常规设置 - &Launch on System Startup @@ -2964,13 +2882,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray 系统托盘 + + + Legal notice + 法律提示 + Use &Monochrome Icons 使用单色图标(&M) - + Show Chat Notifications @@ -2979,6 +2902,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications 显示服务器通知(&N) + + + Advanced + 高级 + + + + Ask for confirmation before synchronizing new folders larger than + 请询问确认同步,若同步新文件夹大于 + Updates @@ -2989,43 +2922,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates 自动检查更新 (&A) - - - &Channel - &通道 - - - - - stable - 稳定版 - - - - - beta - 测试版 - - - - &Restart && Update - 重启并更新(&R) - - - - &Check for Update now - 立即检查更新 (&C) - - - - Advanced - 高级 - - - - Ask for confirmation before synchronizing new folders larger than - 请询问确认同步,若同步新文件夹大于 - MB @@ -3033,12 +2929,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + &通道 + + + Notify when synchronised folders grow larger than specified limit 当同步文件夹的大小超过指定限制时发出通知 - + Automatically disable synchronisation of folders that overcome limit 自动禁用超出限制的文件夹同步 @@ -3048,12 +2949,17 @@ Alternatively, you can restore all deleted files by downloading them from the se 请询问确认同步,若涉及外部存储 - + Move removed files to trash 将移除的文件移动到回收站 - + + &Check for Update now + 立即检查更新 (&C) + + + Show sync folders in &Explorer's navigation pane 在文件管理器的导航显示同步文件夹(&E) @@ -3062,6 +2968,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter 显示崩溃报告器(&H) + + + Ask for confirmation before synchronizing folders larger than + 请询问确认同步,若同步文件夹大于 + Edit &Ignored Files @@ -3074,77 +2985,57 @@ Alternatively, you can restore all deleted files by downloading them from the se 创建调试存档 - + Info 信息 - - Ask for confirmation before synchronizing folders larger than - 请询问确认同步,若同步文件夹大于 - - - + Desktop client x.x.x 桌面客户端 x.x.x - + + Show sync folders in &Explorer's Navigation Pane + 在文件管理器的导航显示同步文件夹(&E) + + + Update channel 更新频道 - - Show sync folders in &Explorer's Navigation Pane - 在文件管理器的导航显示同步文件夹(&E) + + &Restart && Update + 重启并更新(&R) - + &Automatically check for updates 自动检查更新(&A) - + Check Now 立即检查 - + Usage Documentation 使用文档 - + Legal Notice 法律声明 - - - Use &monochrome icons - 使用单色图标(&M) - - - - &Launch on system startup - 在系统启动时打开(&L) - - - - Show server &notifications - 显示服务器通知(&N) - - - - Show call notifications - 显示电话通知 - Server notifications that require attention. 需要注意的服务器通知。 - + Show chat notification dialogs. @@ -3158,6 +3049,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. 你不能禁用自启动,因为系统级的自启动处于启用状态。 + + + + stable + 稳定版 + + + + + beta + 测试版 + Change update channel? @@ -3173,24 +3076,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar 请注意,这只会选择从何种中池升级,并且没有降级:因此,通常无法立即从测试版通道返回到稳定版通道,这意味着您需要等待比当前安装的测试版更新的稳定版。 - + daily 每天 - + enterprise 企业 - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - 企业版:包含供客户使用的稳定版本。 - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3199,21 +3095,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - 渠道决定了提供安装的升级版本: -- 稳定:包含经过测试的可靠版本 -- 测试:包含具有新功能的版本,可能尚未经过全面测试 -- 日更:包含每日创建的版本,仅用于测试和开发。 -不能立即降级版本:从测试版切换到稳定版意味着要等待新的稳定版。 - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3221,12 +3103,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp - + Changing update channel? 更改更新频道? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4387,7 +4269,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss 由于修改时间无效,因此无法同步 - + Could not upload file, because it is open in "%1". 无法上传文件,因为此文件已在 “%1” 中被打开。 @@ -4460,8 +4342,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss 由于修改时间无效,更新元数据时出错 - - + + The folder %1 cannot be made read-only: %2 文件夹 %1 无法被设置为只读:%2 @@ -4583,7 +4465,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss 无法创建文件夹 %1 - + The folder %1 cannot be made read-only: %2 文件夹 %1 无法被设置为只读:%2 @@ -4614,7 +4496,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! 文件夹 %1 无法被重命名,因为本地文件或文件夹名称冲突! @@ -4990,6 +4872,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5016,7 +4913,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss 安全文件拖放 - + Could not find local folder for %1 无法在本地找到名为 %1 的文件夹 @@ -5155,16 +5052,16 @@ Server replied with error: %2 Copy public link 复制公开链接 - - - Encrypt - 加密 - Copy secure filedrop link 复制安全文件拖放链接 + + + Encrypt + 加密 + Lock file @@ -5186,16 +5083,16 @@ Server replied with error: %2 remaining time before lock expires %1 分钟后过期 - - - Edit - 编辑 - Open in browser 在浏览器中打开 + + + Edit + 编辑 + Resolve conflict … @@ -5651,7 +5548,7 @@ Server replied with error: %2 <p>%1 桌面客户端</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 桌面客户端</p><p>版本 %1。了解更多咨询请点击<a href='%2'>此处</a>。</p> @@ -5662,7 +5559,7 @@ Server replied with error: %2 <p><small>正使用虚拟文件插件:%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> @@ -6056,12 +5953,12 @@ Server replied with error: %2 帐户 %1 上的服务器运行不支持的版本 %2。将此客户端与不支持的服务器版本一起使用是未经测试的,并且有潜在的危险。继续进行,风险自担。 - + Terms of service - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. @@ -6137,23 +6034,23 @@ Server replied with error: %2 没有配置同步目录 - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) %1:%2 - + macOS VFS for %1: Sync is running. %1 的 macOS VFS:正在同步。 - + macOS VFS for %1: Last sync was successful. %1 的 macOS VFS:上次同步成功。 - + macOS VFS for %1: A problem was encountered. %1 的 macOS VFS:遇到问题。 @@ -6317,12 +6214,12 @@ Server replied with error: %2 新文件夹 - + Failed to create debug archive 创建调试存档已失败 - + Could not create debug archive in selected location! 无法在所选位置创建调试存档! @@ -6503,7 +6400,7 @@ Server replied with error: %2 文件拖放(仅上传) - + Allow resharing 允许再次共享 @@ -6560,6 +6457,16 @@ Server replied with error: %2 Share password 分享密码 + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6623,54 +6530,6 @@ Server replied with error: %2 回复聊天消息 - - TrayFoldersMenuButton - - - Open local or group folders - 打开本地或群组文件夹 - - - - Open local folder - 打开本地文件夹 - - - - Connected - 已连接 - - - - Disconnected - 连接已断开 - - - - Group folder button - 群组文件夹按钮 - - - - Open local folder "%1" - 打开本地文件夹 “%1” - - - - Open group folder "%1" - 打开群组文件夹 "%1" - - - - Open %1 in file explorer - 在文件浏览器中打开 %1 - - - - User group and local folders menu - 用户群组和本地文件夹菜单 - - TrayWindowHeader @@ -6955,7 +6814,7 @@ Server replied with 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>由 Git 版本 <a href="%1">%2</a> 在 %3 构建,%4 使用 Qt %5,%6</small></p> @@ -7360,6 +7219,54 @@ Server replied with error: %2 复制链接 + + TrayFoldersMenuButton + + + Open local or group folders + 打开本地或群组文件夹 + + + + Open local folder + 打开本地文件夹 + + + + Connected + 已连接 + + + + Disconnected + 连接已断开 + + + + Group folder button + 群组文件夹按钮 + + + + Open local folder "%1" + 打开本地文件夹 “%1” + + + + Open group folder "%1" + 打开群组文件夹 "%1" + + + + Open %1 in file explorer + 在文件浏览器中打开 %1 + + + + User group and local folders menu + 用户群组和本地文件夹菜单 + + Window diff --git a/translations/client_zh_HK.ts b/translations/client_zh_HK.ts index 9d155436e593d..5b890cb2c06f2 100644 --- a/translations/client_zh_HK.ts +++ b/translations/client_zh_HK.ts @@ -342,11 +342,6 @@ Signal file provider domain 信號檔案提供者網域 - - - Create debug archive - 建立除錯封存檔 - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog Nextcloud 桌面版主對話框 - - Current account - 目前帳戶 - - - - - Resume sync for all - 恢復所有同步 - - - - - Pause sync for all - 暫停所有同步 - - - - Add account - 添加帳戶 - - - - Add new account - 添加新帳戶 - - - + Unified search results list 統一搜尋結果清單 - - Settings - 設定 - - - - Exit - 退出 - - - - Current account avatar - 目前帳戶虛擬化身 - - - + New activities 新活動紀錄 - - - Current account status is online - 目前的帳戶狀態為在線上 - - - - Current account status is do not disturb - 目前的帳戶狀態為請勿打擾 - - - - Account switcher and settings menu - 帳戶切換器和設置選項單 - - - - Open local or group folders - 打開近端或群組資料夾 - - - - More apps - 更多應用程式 - - - - Open %1 in browser - 在瀏覽器中開啟 %1 - OCC::AbstractNetworkJob @@ -1267,34 +1190,34 @@ This action will abort any currently running synchronization. 繼續 - + %1 accounts number of accounts imported %1 個帳戶 - + 1 account 1 個帳戶 - + %1 folders number of folders imported %n 個資料夾 - + 1 folder 1 個資料夾 - + Legacy import 舊版匯入 - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1760,13 +1683,13 @@ This action will abort any currently running synchronization. 伺服器錯誤:PROPFIND回覆未採用XML格式! - - + + Encrypted metadata setup error! 已加密的元數據設置錯誤! - + Encrypted metadata setup error: initial signature from server is empty. 加密中繼資料設定錯誤:來自伺服器的初始簽章為空。 @@ -2265,17 +2188,12 @@ This can be an issue with your OpenSSL libraries. 若要下載此項目,請前往設定選擇它 - + A folder has surpassed the set folder size limit of %1MB: %2. %3 資料夾已超出設置的資料夾大小限制 %1MB:%2。 %3 - - - Keep syncing - 保持同步 - All files in the sync folder "%1" folder were deleted on the server. @@ -2287,6 +2205,11 @@ If you decide to delete the files, they will be unavailable to you, unless you a 假如您決定復原這些檔案,只要您擁有權限,這些檔案就會重新和伺服器同步。 假如您決定刪除這些檔案,除非您是檔案的所有者,否則您將無法讀取這些檔案。 + + + Keep syncing + 保持同步 + 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. @@ -2296,16 +2219,16 @@ If this was an accident and you decide to keep your files, they will be re-synce 您確定要與伺服器同步這些操作嗎? 如果您意外地刪除了檔案並決定保留它們,則它們將從伺服器重新同步。 - - - Stop syncing - 停止同步 - Remove All Files? 移除所有檔案? + + + Stop syncing + 停止同步 + Remove all files @@ -2317,12 +2240,12 @@ If this was an accident and you decide to keep your files, they will be re-synce 保留檔案 - + The folder %1 has surpassed the set folder size limit of %2MB. 資料夾已超出設置的資料夾大小限制 %2MB。 - + Would you like to stop syncing this folder? 您想停止同步此資料夾嗎? @@ -2350,12 +2273,12 @@ This means that the synchronization client might not upload local changes immedi %1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" 虛擬檔案下載失敗,代碼為“%1”,狀態為“%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. @@ -2364,7 +2287,7 @@ Alternatively, you can restore all deleted files by uploading from '%1&apos 或者,您也可以從「%1」資料夾上傳至伺服器來還原所有已刪除的檔案。 - + 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. @@ -2373,22 +2296,22 @@ Alternatively, you can restore all deleted files by downloading them from the se 或者,您也可以從伺服器下載這些檔案來還原所有已刪除的檔案。 - + Remove all files? 移除所有檔案? - + Proceed with Deletion 繼續刪除 - + Restore Files to Server 將檔案還原到伺服器 - + Restore Files from Server 從伺服器還原檔案 @@ -2940,22 +2863,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + 一般設定 + About 關於 - - - Legal notice - 法律提示 - - - - General Settings - 一般設定 - &Launch on System Startup @@ -2971,13 +2889,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray 顯示在工作列 + + + Legal notice + 法律提示 + Use &Monochrome Icons 使用&單色圖示 - + Show Chat Notifications @@ -2986,6 +2909,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications 顯示系統訊息 + + + Advanced + 進階 + + + + Ask for confirmation before synchronizing new folders larger than + 先詢問,當要同步的新資料夾大小超過 + Updates @@ -2996,43 +2929,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates 自動檢查更新 - - - &Channel - 頻道(&C) - - - - - stable - 穩定版 - - - - - beta - 測試版 - - - - &Restart && Update - 重新啟動並更新(&R) - - - - &Check for Update now - 立即檢查更新 - - - - Advanced - 進階 - - - - Ask for confirmation before synchronizing new folders larger than - 先詢問,當要同步的新資料夾大小超過 - MB @@ -3040,12 +2936,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + 頻道(&C) + + + Notify when synchronised folders grow larger than specified limit 當同步資料夾的大小超過指定限制時發出通知 - + Automatically disable synchronisation of folders that overcome limit 自動禁用超出限制的資料夾同步 @@ -3055,12 +2956,17 @@ Alternatively, you can restore all deleted files by downloading them from the se 在與外部儲存空間同步時先詢問 - + Move removed files to trash 將移除了的檔案移至垃圾箱 - + + &Check for Update now + 立即檢查更新 + + + Show sync folders in &Explorer's navigation pane 在資源管理器的導覽窗格中顯示同步資料夾(&E) @@ -3069,6 +2975,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter &顯示意外舉報器 + + + Ask for confirmation before synchronizing folders larger than + 先詢問,當要同步的資料夾大小超過 + Edit &Ignored Files @@ -3081,77 +2992,57 @@ Alternatively, you can restore all deleted files by downloading them from the se 建立除錯壓縮檔 - + Info 資料 - - Ask for confirmation before synchronizing folders larger than - 先詢問,當要同步的資料夾大小超過 - - - + Desktop client x.x.x 桌面客戶端 x.x.x - + + Show sync folders in &Explorer's Navigation Pane + 在檔案管理員中顯示資料夾 + + + Update channel 更新頻道 - - Show sync folders in &Explorer's Navigation Pane - 在檔案管理員中顯示資料夾 + + &Restart && Update + 重新啟動並更新(&R) - + &Automatically check for updates 自動檢查更新(&A) - + Check Now 現在檢查 - + Usage Documentation 運用說明書 - + Legal Notice 法律聲明 - - - Use &monochrome icons - 使用單色圖示(&m) - - - - &Launch on system startup - 系統啟動時啟動(&L) - - - - Show server &notifications - 顯示系統訊息(&n) - - - - Show call notifications - 顯示通話通告 - Server notifications that require attention. 伺服器公告,請注意 - + Show chat notification dialogs. @@ -3165,6 +3056,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. 您不可以停用自動啟動,因為已啟用系統廣域自動啟動。 + + + + stable + 穩定版 + + + + + beta + 測試版 + Change update channel? @@ -3180,24 +3083,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar 請注意,這僅選擇從哪個池升級中進行升級,並且沒有降級:因此通常無法立即從Beta通道返回到穩定通道,這意味著要等待比當前安裝的測試版本更新的穩定版本。 - + daily 每日 - + enterprise 企業 - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - 企業版:包含客戶穩定版本。 - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3209,22 +3105,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m 無法立即降級版本:從測試版變更為穩定版必須等待新的穩定版本才能更新。 - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - 更新頻道決定將提供哪些升級進行安裝: -- 穩定版(stable):包含經過測試且被認為可靠的版本 -- 測試版(beta):包含可能尚未全面測試的新功能版本 -- 每日版(daily):包含每日創建的僅供測試和開發的版本 -%1 -版本降級無法立即進行:從測試版更改為穩定版意味著需要等待新的穩定版本。 - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3234,12 +3115,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp 無法立即降級版本:從穩定版變更為企業版必須等待新的企業版本才能更新。 - + Changing update channel? 變更更新頻道? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4410,7 +4291,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss 由於修改時間無效,無法同步 - + Could not upload file, because it is open in "%1". 無法上傳檔案,因為其於「%1」開啟。 @@ -4483,8 +4364,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss 由於修改時間無效,更新元數據時出錯。 - - + + The folder %1 cannot be made read-only: %2 無法將資料夾 %1 設為唯讀:%2 @@ -4606,7 +4487,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss 無法建立資料夾 %1 - + The folder %1 cannot be made read-only: %2 無法將資料夾 %1 設為唯讀:%2 @@ -4637,7 +4518,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! 無法重新命名資料夾 %1,因為近端檔案或資料夾名稱有衝突! @@ -5013,6 +4894,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5039,7 +4935,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss 安全檔案投放 - + Could not find local folder for %1 找不到 %1 的近端資料夾 @@ -5178,16 +5074,16 @@ Server replied with error: %2 Copy public link 複製公共連結 - - - Encrypt - 加密 - Copy secure filedrop link 複製安全檔案投放連結 + + + Encrypt + 加密 + Lock file @@ -5209,16 +5105,16 @@ Server replied with error: %2 remaining time before lock expires %1 分鐘後過期 - - - Edit - 編輯 - Open in browser 用瀏覽器打開 + + + Edit + 編輯 + Resolve conflict … @@ -5674,7 +5570,7 @@ Server replied with error: %2 <p>%1 桌面版用戶端</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 桌面客戶端</p><p>版本 %1。詳細資訊請點擊 <a href='%2'>此處</a>。</p> @@ -5685,7 +5581,7 @@ Server replied with error: %2 <p><small>使用虛擬文件插件:%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> @@ -6079,12 +5975,12 @@ Server replied with error: %2 %1 帳戶所在的伺服器正運行不受支援的舊版本 %2。此客戶端在該伺服器版本上未經測試,可能會有風險。請慎行。 - + Terms of service 服務條款 - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. 您的帳戶 %1 要求您接受伺服器的服務條款。您將被重定向到 %2 以確認您已閱讀並同意。 @@ -6160,23 +6056,23 @@ Server replied with error: %2 尚未設定同步資料夾 - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + macOS VFS for %1: Sync is running. macOS VFS for %1:同步正在進行中。 - + macOS VFS for %1: Last sync was successful. macOS VFS for %1:上次同步成功。 - + macOS VFS for %1: A problem was encountered. macOS VFS for %1:遇到了一個問題。 @@ -6340,12 +6236,12 @@ Server replied with error: %2 新資料夾 - + Failed to create debug archive 創建排除錯誤封存失敗 - + Could not create debug archive in selected location! 無法在選定位置創建排除錯誤封存! @@ -6526,7 +6422,7 @@ Server replied with error: %2 拖曳檔案(僅供上傳) - + Allow resharing 允許轉貼分享 @@ -6583,6 +6479,16 @@ Server replied with error: %2 Share password 分享密碼 + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6646,54 +6552,6 @@ Server replied with error: %2 發送聊天回覆訊息 - - TrayFoldersMenuButton - - - Open local or group folders - 開啟近端或群組資料夾 - - - - Open local folder - 開啟近端資料夾 - - - - Connected - 已連線 - - - - Disconnected - 連接已斷開 - - - - Group folder button - 群組資料夾按鈕 - - - - Open local folder "%1" - 開啟近端資料夾 "%1" - - - - Open group folder "%1" - 開啟群組資料夾 "%1" - - - - Open %1 in file explorer - 在文件資源管理器中打開 %1 - - - - User group and local folders menu - 用戶群組及近端資料夾選項單 - - TrayWindowHeader @@ -6978,7 +6836,7 @@ Server replied with 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>根據Git版本號<a href="%1">%2</a>在 %3, %4建置 使用了Qt %5,%6</small></p> @@ -7383,6 +7241,54 @@ Server replied with error: %2 複製連結 + + TrayFoldersMenuButton + + + Open local or group folders + 開啟近端或群組資料夾 + + + + Open local folder + 開啟近端資料夾 + + + + Connected + 已連線 + + + + Disconnected + 連接已斷開 + + + + Group folder button + 群組資料夾按鈕 + + + + Open local folder "%1" + 開啟近端資料夾 "%1" + + + + Open group folder "%1" + 開啟群組資料夾 "%1" + + + + Open %1 in file explorer + 在文件資源管理器中打開 %1 + + + + User group and local folders menu + 用戶群組及近端資料夾選項單 + + Window diff --git a/translations/client_zh_TW.ts b/translations/client_zh_TW.ts index 5d9720801d217..18f63cfa092a4 100644 --- a/translations/client_zh_TW.ts +++ b/translations/client_zh_TW.ts @@ -342,11 +342,6 @@ Signal file provider domain 訊好檔案提供者網域 - - - Create debug archive - 建立除錯封存檔 - FileProviderStorageInfo @@ -470,92 +465,20 @@ MainWindow - + Nextcloud desktop main dialog Nextcloud 桌面主要對話方塊 - - Current account - 目前帳號 - - - - - Resume sync for all - 繼續所有同步 - - - - - Pause sync for all - 暫停所有同步 - - - - Add account - 新增帳號 - - - - Add new account - 新增新帳號 - - - + Unified search results list 統一搜尋結果清單 - - Settings - 設定 - - - - Exit - 離開 - - - - Current account avatar - 目前帳號大頭照 - - - + New activities 新活動 - - - Current account status is online - 目前的帳號狀態為在線上 - - - - Current account status is do not disturb - 目前的帳號狀態為請勿打擾 - - - - Account switcher and settings menu - 帳號切換器與設定選單 - - - - Open local or group folders - 開啟本機或群組資料夾 - - - - More apps - 更多應用程式 - - - - Open %1 in browser - 在瀏覽器中開啟 %1 - OCC::AbstractNetworkJob @@ -1264,34 +1187,34 @@ This action will abort any currently running synchronization. 繼續 - + %1 accounts number of accounts imported %1 個帳號 - + 1 account 1 個帳號 - + %1 folders number of folders imported %1 個資料夾 - + 1 folder 1 個資料夾 - + Legacy import 舊版匯入 - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1757,13 +1680,13 @@ This action will abort any currently running synchronization. 伺服器錯誤:PROPFIND 回覆未使用 XML 格式! - - + + Encrypted metadata setup error! 已加密的詮釋資料設定錯誤! - + Encrypted metadata setup error: initial signature from server is empty. 加密中繼資料設定錯誤:來自伺服器的初始簽章為空。 @@ -2264,17 +2187,12 @@ This can be an issue with your OpenSSL libraries. 若要下載此項目,請前往設定選取它。 - + A folder has surpassed the set folder size limit of %1MB: %2. %3 資料夾已超過設定的資料夾大小限制 %1MB:%2。 %3 - - - Keep syncing - 保持同步 - All files in the sync folder "%1" folder were deleted on the server. @@ -2286,6 +2204,11 @@ If you decide to delete the files, they will be unavailable to you, unless you a 假如您決定復原這些檔案,只要您有權執行,這些檔案就能重新和伺服器同步。 假如您決定移除這些檔案,除非您是檔案的所有者,否則您將無法取用這些檔案。 + + + Keep syncing + 保持同步 + 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. @@ -2295,16 +2218,16 @@ If this was an accident and you decide to keep your files, they will be re-synce 您確定要與伺服器同步那些動作嗎? 如果這是意外,而且您決定保留您的檔案,它們將會從伺服器重新同步回來。 - - - Stop syncing - 停止同步 - Remove All Files? 移除所有檔案? + + + Stop syncing + 停止同步 + Remove all files @@ -2316,12 +2239,12 @@ If this was an accident and you decide to keep your files, they will be re-synce 保留檔案 - + The folder %1 has surpassed the set folder size limit of %2MB. 資料夾 %1 已超過設定的資料夾大小限制 %2MB。 - + Would you like to stop syncing this folder? 您想要停止同步此資料夾嗎? @@ -2349,12 +2272,12 @@ This means that the synchronization client might not upload local changes immedi %1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" 虛擬檔案下載失敗,代碼「%1」,狀態「%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. @@ -2363,7 +2286,7 @@ Alternatively, you can restore all deleted files by uploading from '%1&apos 或者,您也可以從「%1」資料夾上傳至伺服器來還原所有已刪除的檔案。 - + 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. @@ -2372,22 +2295,22 @@ Alternatively, you can restore all deleted files by downloading them from the se 或者,您也可以從伺服器下載這些檔案來還原所有已刪除的檔案。 - + Remove all files? 移除所有檔案? - + Proceed with Deletion 繼續刪除 - + Restore Files to Server 還原檔案至伺服器 - + Restore Files from Server 從伺服器還原檔案 @@ -2939,22 +2862,17 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::GeneralSettings + + + General Settings + 一般設定 + About 關於 - - - Legal notice - 法律聲明 - - - - General Settings - 一般設定 - &Launch on System Startup @@ -2970,13 +2888,18 @@ Alternatively, you can restore all deleted files by downloading them from the se For System Tray 系統匣適用 + + + Legal notice + 法律聲明 + Use &Monochrome Icons 使用單色圖示(&M) - + Show Chat Notifications @@ -2985,6 +2908,16 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications 顯示伺服器通知(&N) + + + Advanced + 進階 + + + + Ask for confirmation before synchronizing new folders larger than + 每當要同步的新資料夾超過大小限制時先詢問確認 + Updates @@ -2995,43 +2928,6 @@ Alternatively, you can restore all deleted files by downloading them from the se &Automatically check for Updates 自動檢查更新(&A) - - - &Channel - 頻道(&C) - - - - - stable - 穩定版 - - - - - beta - 測試版 - - - - &Restart && Update - 重新啟動並更新(&R) - - - - &Check for Update now - 立即檢查更新(&C) - - - - Advanced - 進階 - - - - Ask for confirmation before synchronizing new folders larger than - 每當要同步的新資料夾超過大小限制時先詢問確認 - MB @@ -3039,12 +2935,17 @@ Alternatively, you can restore all deleted files by downloading them from the se MB - + + &Channel + 頻道(&C) + + + Notify when synchronised folders grow larger than specified limit 每當同步資料夾的大小超過指定限制時發出通知 - + Automatically disable synchronisation of folders that overcome limit 自動停用超出限制的資料夾同步 @@ -3054,12 +2955,17 @@ Alternatively, you can restore all deleted files by downloading them from the se 在與外部儲存空間同步前先詢問確認 - + Move removed files to trash 將移除的檔案移動到垃圾桶 - + + &Check for Update now + 立即檢查更新(&C) + + + Show sync folders in &Explorer's navigation pane 在檔案管理程式的導覽面板中顯示同步資料夾(&E) @@ -3068,6 +2974,11 @@ Alternatively, you can restore all deleted files by downloading them from the se S&how crash reporter 顯示當機回報程式(&H) + + + Ask for confirmation before synchronizing folders larger than + 每當要同步的資料夾超過大小限制時先詢問確認 + Edit &Ignored Files @@ -3080,77 +2991,57 @@ Alternatively, you can restore all deleted files by downloading them from the se 建立除錯封存檔 - + Info 資訊 - - Ask for confirmation before synchronizing folders larger than - 每當要同步的資料夾超過大小限制時先詢問確認 - - - + Desktop client x.x.x 桌面用戶端 x.x.x - + + Show sync folders in &Explorer's Navigation Pane + 在檔案管理程式的導覽面板中顯示同步資料夾(&E) + + + Update channel 更新頻道 - - Show sync folders in &Explorer's Navigation Pane - 在檔案管理程式的導覽面板中顯示同步資料夾(&E) + + &Restart && Update + 重新啟動並更新(&R) - + &Automatically check for updates 自動檢查更新(&A) - + Check Now 立刻檢查 - + Usage Documentation 用法說明文件 - + Legal Notice 法律聲明 - - - Use &monochrome icons - 使用單色圖示(&M) - - - - &Launch on system startup - 系統初始啟動時啟動(&L) - - - - Show server &notifications - 顯示伺服器通知(&N) - - - - Show call notifications - 顯示來電通知 - Server notifications that require attention. 需要注意的伺服器通知。 - + Show chat notification dialogs. @@ -3164,6 +3055,18 @@ Alternatively, you can restore all deleted files by downloading them from the se You cannot disable autostart because system-wide autostart is enabled. 您無法停用自動啟動,因為已啟用系統層級的自動啟動。 + + + + stable + 穩定版 + + + + + beta + 測試版 + Change update channel? @@ -3179,25 +3082,17 @@ Note that this selects only what pool upgrades are taken from, and that there ar 請注意,這只能選取要從哪個軟體庫中取得升級,無法降級:所以像是從測試頻道切回穩定頻道,也無法立即作用,這代表要等到穩定版推出的版本比目前安裝的測試版還新時才算切換成功。 - + daily 每日 - + enterprise 企業版 - - - enterprise: contains stable versions for customers. - - description of enterprise update channel for enterprise customers - - 企業版:包含供顧客使用的穩定版本。 - - - - + - beta: contains versions with new features that may not be tested thoroughly - daily: contains versions created daily only for testing and development @@ -3209,22 +3104,7 @@ Downgrading versions is not possible immediately: changing from beta to stable m 無法立即降級版本:從測試版變更為穩定版必須等待新的穩定版本才能更新。 - - The channel determines which upgrades will be offered to install: -- stable: contains tested versions considered reliable -- beta: contains versions with new features that may not be tested thoroughly -- daily: contains versions created daily only for testing and development -%1 -Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. - 頻道是用來決定哪些升級可供安裝: -- 穩定:包含被認為可靠的經測試版本 -- 測試:包含可能未經徹底測試的的新功能版本 -- 每日:包含每日建立的版本,僅用於測試與開發 -%1 -無法立即降級版本:從測試版變更為穩定版必須等待新的穩定版本才能更新。 - - - + - enterprise: contains stable versions for customers. Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. @@ -3234,12 +3114,12 @@ Downgrading versions is not possible immediately: changing from stable to enterp 無法立即降級版本:從穩定版變更為企業版必須等待新的企業版本才能更新。 - + Changing update channel? 變更更新頻道? - + The channel determines which upgrades will be offered to install: - stable: contains tested versions considered reliable @@ -4410,7 +4290,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss 由於修改時間無效,無法同步 - + Could not upload file, because it is open in "%1". 無法上傳檔案,因為其於「%1」開啟。 @@ -4483,8 +4363,8 @@ This is a new, experimental mode. If you decide to use it, please report any iss 因為修改時間無效,更新中介資料時發生錯誤 - - + + The folder %1 cannot be made read-only: %2 無法將資料夾 %1 設為唯讀:%2 @@ -4606,7 +4486,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss 無法建立資料夾 %1 - + The folder %1 cannot be made read-only: %2 無法將資料夾 %1 設為唯讀:%2 @@ -4637,7 +4517,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::PropagateLocalRename - + Folder %1 cannot be renamed because of a local file or folder name clash! 由於本機檔案或資料夾名稱衝突,無法重新命名資料夾 %1! @@ -5013,6 +4893,21 @@ This is a new, experimental mode. If you decide to use it, please report any iss OCC::ShareModel + + + %1 days + + + + + 1 day + + + + + Today + + Secure file drop link @@ -5039,7 +4934,7 @@ This is a new, experimental mode. If you decide to use it, please report any iss 安全檔案投放 - + Could not find local folder for %1 找不到 %1 的本機資料夾 @@ -5178,16 +5073,16 @@ Server replied with error: %2 Copy public link 複製公開連結 - - - Encrypt - 加密 - Copy secure filedrop link 複製安全檔案投放連結 + + + Encrypt + 加密 + Lock file @@ -5209,16 +5104,16 @@ Server replied with error: %2 remaining time before lock expires %1 分鐘內過期 - - - Edit - 編輯 - Open in browser 用瀏覽器打開 + + + Edit + 編輯 + Resolve conflict … @@ -5674,7 +5569,7 @@ Server replied with error: %2 <p>%1 桌面版客戶端</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 桌面用戶端</p><p>版本 %1。若要了解更多資訊,請點擊<a href='%2'>這裡</a>。</p> @@ -5685,7 +5580,7 @@ Server replied with error: %2 <p><small>正在使用虛擬檔案插入式元件:%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> @@ -6079,12 +5974,12 @@ Server replied with error: %2 帳號 %1 所在的伺服器執行了不支援的版本 %2。將此客戶端搭配不支援的伺服器版本一同使用,此行為未經測試且有潛在危險。若要繼續,請自負風險。 - + Terms of service 服務條款 - + Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. 您的帳號 %1 要求您接受伺服器的服務條款。將會重新導向至 %2 以確認您已閱讀並同意。 @@ -6160,23 +6055,23 @@ Server replied with error: %2 未設定同步資料夾組態 - + %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) %1:%2 - + macOS VFS for %1: Sync is running. %1 的 macOS VFS:正在同步。 - + macOS VFS for %1: Last sync was successful. %1 的 macOS VFS:上次同步成功。 - + macOS VFS for %1: A problem was encountered. %1 的 macOS VFS:遇到問題。 @@ -6340,12 +6235,12 @@ Server replied with error: %2 新資料夾 - + Failed to create debug archive 無法建立除錯封存 - + Could not create debug archive in selected location! 無法在選定位置建立除錯封存! @@ -6526,7 +6421,7 @@ Server replied with error: %2 檔案投遞(僅供上傳) - + Allow resharing 允許轉發分享 @@ -6583,6 +6478,16 @@ Server replied with error: %2 Share password 分享密碼 + + + Shared with you by %1 + + + + + Expires in %1 + + Sharing is disabled @@ -6646,54 +6551,6 @@ Server replied with error: %2 傳送回覆至聊天訊息 - - TrayFoldersMenuButton - - - Open local or group folders - 開啟本機或群組資料夾 - - - - Open local folder - 開啟本機資料夾 - - - - Connected - 已連線 - - - - Disconnected - 已中斷連線 - - - - Group folder button - 群組資料夾按鈕 - - - - Open local folder "%1" - 開啟本機資料夾「%1」 - - - - Open group folder "%1" - 開啟群組資料夾「%1」 - - - - Open %1 in file explorer - 在檔案管理程式中開啟 %1 - - - - User group and local folders menu - 使用者群組與本機資料夾選單 - - TrayWindowHeader @@ -6978,7 +6835,7 @@ Server replied with 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>根據 Git 修訂版本 <a href="%1">%2</a> 於 %3 %4 建置,使用 Qt %5、%6</small></p> @@ -7383,6 +7240,54 @@ Server replied with error: %2 複製連結 + + TrayFoldersMenuButton + + + Open local or group folders + 開啟本機或群組資料夾 + + + + Open local folder + 開啟本機資料夾 + + + + Connected + 已連線 + + + + Disconnected + 已中斷連線 + + + + Group folder button + 群組資料夾按鈕 + + + + Open local folder "%1" + 開啟本機資料夾「%1」 + + + + Open group folder "%1" + 開啟群組資料夾「%1」 + + + + Open %1 in file explorer + 在檔案管理程式中開啟 %1 + + + + User group and local folders menu + 使用者群組與本機資料夾選單 + + Window From 7cac07e1d10eef23370ce3bb04eb278b2bb57aca Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Fri, 22 Nov 2024 15:47:40 +0100 Subject: [PATCH 220/244] fix spelling os UserStatus qml type when setting user status Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/gui/UserStatusSelector.qml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/gui/UserStatusSelector.qml b/src/gui/UserStatusSelector.qml index e20f58890537a..3e303b469bee6 100644 --- a/src/gui/UserStatusSelector.qml +++ b/src/gui/UserStatusSelector.qml @@ -54,36 +54,36 @@ ColumnLayout { } UserStatusSelectorButton { - checked: userStatusSelectorModel.onlineStatus === NC.userStatus.Online + checked: userStatusSelectorModel.onlineStatus === NC.UserStatus.Online checkable: true icon.source: userStatusSelectorModel.onlineIcon icon.color: "transparent" text: qsTr("Online") - onClicked: userStatusSelectorModel.onlineStatus = NC.userStatus.Online + onClicked: userStatusSelectorModel.onlineStatus = NC.UserStatus.Online Layout.fillWidth: true implicitWidth: 200 // Pretty much a hack to ensure all the buttons are equal in width } UserStatusSelectorButton { - checked: userStatusSelectorModel.onlineStatus === NC.userStatus.Away + checked: userStatusSelectorModel.onlineStatus === NC.UserStatus.Away checkable: true icon.source: userStatusSelectorModel.awayIcon icon.color: "transparent" text: qsTr("Away") - onClicked: userStatusSelectorModel.onlineStatus = NC.userStatus.Away + onClicked: userStatusSelectorModel.onlineStatus = NC.UserStatus.Away Layout.fillWidth: true implicitWidth: 200 // Pretty much a hack to ensure all the buttons are equal in width } UserStatusSelectorButton { - checked: userStatusSelectorModel.onlineStatus === NC.userStatus.DoNotDisturb + checked: userStatusSelectorModel.onlineStatus === NC.UserStatus.DoNotDisturb checkable: true icon.source: userStatusSelectorModel.dndIcon icon.color: "transparent" text: qsTr("Do not disturb") secondaryText: qsTr("Mute all notifications") - onClicked: userStatusSelectorModel.onlineStatus = NC.userStatus.DoNotDisturb + onClicked: userStatusSelectorModel.onlineStatus = NC.UserStatus.DoNotDisturb Layout.fillWidth: true implicitWidth: 200 // Pretty much a hack to ensure all the buttons are equal in width @@ -92,14 +92,14 @@ ColumnLayout { Component.onCompleted: topButtonsLayout.updateMaxButtonHeight(implicitHeight) } UserStatusSelectorButton { - checked: userStatusSelectorModel.onlineStatus === NC.userStatus.Invisible || - userStatusSelectorModel.onlineStatus === NC.userStatus.Offline + checked: userStatusSelectorModel.onlineStatus === NC.UserStatus.Invisible || + userStatusSelectorModel.onlineStatus === NC.UserStatus.Offline checkable: true icon.source: userStatusSelectorModel.invisibleIcon icon.color: "transparent" text: qsTr("Invisible") secondaryText: qsTr("Appear offline") - onClicked: userStatusSelectorModel.onlineStatus = NC.userStatus.Invisible + onClicked: userStatusSelectorModel.onlineStatus = NC.UserStatus.Invisible Layout.fillWidth: true implicitWidth: 200 // Pretty much a hack to ensure all the buttons are equal in width From f07f7530f494558a54fcb8a5fda78dbf5da5ff9b Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Sat, 23 Nov 2024 02:57:00 +0000 Subject: [PATCH 221/244] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: Rainer Walke --- translations/client_gl.ts | 44 +++++++++++++++++++-------------------- translations/client_uk.ts | 44 +++++++++++++++++++-------------------- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/translations/client_gl.ts b/translations/client_gl.ts index ff34dd8dc87da..e656a073f67cd 100644 --- a/translations/client_gl.ts +++ b/translations/client_gl.ts @@ -171,59 +171,59 @@ Current account - + Conta actual Resume sync for all - + Continuar coa sincronización para todos Pause sync for all - + Por en pausa a sincronización para todos Add account - + Engadir unha conta Add new account - + Engadir unha conta nova Settings - + Axustes Exit - + Saír Current account avatar - + Avatar actual da conta Current account status is online - + O estado da conta actual é conectado Current account status is do not disturb - + O estado actual da conta é non molestar Account switcher and settings menu - + Cambiador de contas e menú de axustes @@ -2901,7 +2901,7 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do Show Chat Notifications - + Amosar as notificacións de parolas @@ -3043,7 +3043,7 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do Show chat notification dialogs. - + Amosar os diálogos de notificación de parolas. @@ -4895,17 +4895,17 @@ Este é un novo modo experimental. Se decide usalo, agradecémoslle que informe %1 days - + %1 días 1 day - + 1 día Today - + Hoxe @@ -6480,12 +6480,12 @@ O servidor respondeu co erro: %2 Shared with you by %1 - + Compartido con vostede por %1 Expires in %1 - + Caduca en %1 @@ -6555,17 +6555,17 @@ O servidor respondeu co erro: %2 Open local or group folders - + Abrir cartafoles locais ou de grupo More apps - + Máis aplicacións Open %1 in browser - + Abrir %1 nun navegador @@ -6581,7 +6581,7 @@ O servidor respondeu co erro: %2 Start typing to search - + Comece a escribir para buscar diff --git a/translations/client_uk.ts b/translations/client_uk.ts index 73bbe46cda242..ca1869b3f192e 100644 --- a/translations/client_uk.ts +++ b/translations/client_uk.ts @@ -171,59 +171,59 @@ Current account - + Поточний обліковий запис Resume sync for all - + Відновити синхронізацію для всіх Pause sync for all - + Призупинити синхронізацію для всіх Add account - + Додати обліковий запис Add new account - + Додати новий обліковий запис Settings - + Налаштування Exit - + Вийти Current account avatar - + Піктограма поточного користувача Current account status is online - + Статус в мережі поточного користувача Current account status is do not disturb - + Поточний статус "не турбувати" Account switcher and settings menu - + Перемикання користувачів та меню налаштувань @@ -2901,7 +2901,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Chat Notifications - + Показувати сповіщення чату @@ -3043,7 +3043,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Show chat notification dialogs. - + Показувати діалог сповіщень у чаті @@ -4894,17 +4894,17 @@ This is a new, experimental mode. If you decide to use it, please report any iss %1 days - + %1 днів 1 day - + 1 день Today - + Сьогодні @@ -6479,12 +6479,12 @@ Server replied with error: %2 Shared with you by %1 - + %1 поділив(-ла)ся з вами Expires in %1 - + Спливає за %1 @@ -6554,17 +6554,17 @@ Server replied with error: %2 Open local or group folders - + Відкрити локальні чи групові каталоги More apps - + Більше застосунків Open %1 in browser - + Відкрити %1 у бравзері @@ -6580,7 +6580,7 @@ Server replied with error: %2 Start typing to search - + Почніть вводити для пошуку From 40469583dbe4f982d7ca15ec6687490ba3937723 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Sun, 24 Nov 2024 02:59:25 +0000 Subject: [PATCH 222/244] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: Rainer Walke --- translations/client_de.ts | 10 ++--- translations/client_en_GB.ts | 44 ++++++++++---------- translations/client_ga.ts | 44 ++++++++++---------- translations/client_hu.ts | 80 ++++++++++++++++++------------------ translations/client_lt_LT.ts | 8 ++-- translations/client_sv.ts | 44 ++++++++++---------- translations/client_zh_HK.ts | 44 ++++++++++---------- 7 files changed, 137 insertions(+), 137 deletions(-) diff --git a/translations/client_de.ts b/translations/client_de.ts index 39f438e05ef80..2f58548bca2a7 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -4894,17 +4894,17 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver %1 days - + %1 Tage 1 day - + 1 Tag Today - + Heute @@ -6479,12 +6479,12 @@ Server antwortete mit Fehler: %2 Shared with you by %1 - + Geteilt mit Ihnen von %1 Expires in %1 - + Läuft ab in %1 diff --git a/translations/client_en_GB.ts b/translations/client_en_GB.ts index 042bcc52397cd..5235b7ede85c3 100644 --- a/translations/client_en_GB.ts +++ b/translations/client_en_GB.ts @@ -171,59 +171,59 @@ Current account - + Current account Resume sync for all - + Resume sync for all Pause sync for all - + Pause sync for all Add account - + Add account Add new account - + Add new account Settings - + Settings Exit - + Exit Current account avatar - + Current account avatar Current account status is online - + Current account status is online Current account status is do not disturb - + Current account status is do not disturb Account switcher and settings menu - + Account switcher and settings menu @@ -2901,7 +2901,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Chat Notifications - + Show Chat Notifications @@ -3043,7 +3043,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Show chat notification dialogs. - + Show chat notification dialogs. @@ -4896,17 +4896,17 @@ This is a new, experimental mode. If you decide to use it, please report any iss %1 days - + %1 days 1 day - + 1 day Today - + Today @@ -6481,12 +6481,12 @@ Server replied with error: %2 Shared with you by %1 - + Shared with you by %1 Expires in %1 - + Expires in %1 @@ -6556,17 +6556,17 @@ Server replied with error: %2 Open local or group folders - + Open local or group folders More apps - + More apps Open %1 in browser - + Open %1 in browser @@ -6582,7 +6582,7 @@ Server replied with error: %2 Start typing to search - + Start typing to search diff --git a/translations/client_ga.ts b/translations/client_ga.ts index ce7572160fe35..1300f41b16c2d 100644 --- a/translations/client_ga.ts +++ b/translations/client_ga.ts @@ -171,59 +171,59 @@ Current account - + Cuntas reatha Resume sync for all - + Lean an sioncronú do chách Pause sync for all - + Cuir sioncrónú ar sos do chách Add account - + Cuir cuntas leis Add new account - + Cuir cuntas nua leis Settings - + Socruithe Exit - + Scoir Current account avatar - + Avatar cuntas reatha Current account status is online - + Tá stádas cuntais reatha ar líne Current account status is do not disturb - + Níl aon chur isteach ar stádas an chuntais reatha Account switcher and settings menu - + Malartóir cuntais agus roghchlár socruithe @@ -2901,7 +2901,7 @@ De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n Show Chat Notifications - + Taispeáin Fógraí Comhrá @@ -3043,7 +3043,7 @@ De rogha air sin, is féidir leat gach comhad a scriosadh a chur ar ais trína n Show chat notification dialogs. - + Taispeáin dialóga fógraí comhrá. @@ -4896,17 +4896,17 @@ Is modh turgnamhach nua é seo. Má shocraíonn tú é a úsáid, cuir in iúl l %1 days - + %1 laethanta 1 day - + 1 lá Today - + Inniu @@ -6481,12 +6481,12 @@ D'fhreagair an freastalaí le hearráid: % 2 Shared with you by %1 - + Roinnte le leat ag%1 Expires in %1 - + In éag i%1 @@ -6556,17 +6556,17 @@ D'fhreagair an freastalaí le hearráid: % 2 Open local or group folders - + Oscail fillteáin áitiúla nó grúpa More apps - + Tuilleadh aipeanna Open %1 in browser - + Oscail %1 sa bhrabhsálaí @@ -6582,7 +6582,7 @@ D'fhreagair an freastalaí le hearráid: % 2 Start typing to search - + Tosaigh ag clóscríobh chun cuardach a dhéanamh diff --git a/translations/client_hu.ts b/translations/client_hu.ts index 08f4952501a9d..8d18c386a3452 100644 --- a/translations/client_hu.ts +++ b/translations/client_hu.ts @@ -171,59 +171,59 @@ Current account - + Jelenlegi fiók Resume sync for all - + Szinkronizálás folytatása mindenhova Pause sync for all - + Mindenhova szinkronizálás szüneteltetése Add account - + Fiók hozzáadása Add new account - + Új fiók hozzáadása Settings - + Beállítások Exit - + Kilépés Current account avatar - + Jelenlegi fiókprofilkép Current account status is online - + Jelenlegi fiókállapot: online Current account status is do not disturb - + Jelenlegi fiókállapot: ne zavarjanak Account switcher and settings menu - + Fiókváltó és beállítások menü @@ -1261,7 +1261,7 @@ Ez a művelet megszakítja a jelenleg futó szinkronizálást. "%1 Failed to unlock encrypted folder %2". - + „%1 nem sikerült feloldani a(z) %2 titkosított mappát”. @@ -1914,22 +1914,22 @@ Ezt a problémát valószínűleg az OpenSSL programkönyvtárakban kell keresni Error locking folder. - + Hiba a könyvtár zárolásakor. Error fetching encrypted folder ID. - + Hiba a titkosított mappaazonosító lekérése közben. Error parsing or decrypting metadata. - + Hiba a metaadatok feldolgozása vagy visszafejtése közben. Failed to upload metadata - + A metaadatok letöltése sikertelen @@ -3473,12 +3473,12 @@ Ne feledje, hogy a naplózás parancssori kapcsolóinak használata felülbírá Could not start editing locally. - + Nem sikerült a helyi szerkesztés elkezdése. An error occurred during setup. - + Hiba történt a beállítás során. @@ -3601,7 +3601,7 @@ Ne feledje, hogy a naplózás parancssori kapcsolóinak használata felülbírá Use global settings - + Globális beállítások alkalmazása @@ -4881,17 +4881,17 @@ Ez egy új, kísérleti mód. Ha úgy dönt, hogy használja, akkor jelezze nek %1 days - + %1 nap 1 day - + 1 nap Today - + Ma @@ -5568,7 +5568,7 @@ A kiszolgáló hibával válaszolt: %2 <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - + <p>%1 asztali kliens%2</p> @@ -5610,17 +5610,17 @@ A kiszolgáló hibával válaszolt: %2 Failed to update folder metadata. - + A mappa metaadatainak frissítése sikertelen. Failed to unlock encrypted folder. - + Nem sikerült feloldani a titkosított mappát. Failed to finalize item. - + Az elem véglegesítése sikertelen. @@ -5656,7 +5656,7 @@ A kiszolgáló hibával válaszolt: %2 Failed to unlock a folder. - + Nem sikerült feloldani egy mappát. @@ -5664,7 +5664,7 @@ A kiszolgáló hibával válaszolt: %2 %1 notifications - + %1 értesítés @@ -5685,12 +5685,12 @@ A kiszolgáló hibával válaszolt: %2 Open Nextcloud Assistant in browser - + Nextcloud Asszisztens megnyitása böngészőben Open Nextcloud Talk in browser - + Nextcloud Beszélgetés megnyitása böngészőben @@ -5836,7 +5836,7 @@ A kiszolgáló hibával válaszolt: %2 could not be downloaded - + nem tölthető le @@ -5961,7 +5961,7 @@ A kiszolgáló hibával válaszolt: %2 Terms of service - + Szolgáltatási feltételek @@ -6043,7 +6043,7 @@ A kiszolgáló hibával válaszolt: %2 %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + %1: %2 @@ -6466,7 +6466,7 @@ A kiszolgáló hibával válaszolt: %2 Shared with you by %1 - + %1 megosztotta veled @@ -6541,17 +6541,17 @@ A kiszolgáló hibával válaszolt: %2 Open local or group folders - + Helyi vagy csoportmappák megnyitása More apps - + További alkalmazások Open %1 in browser - + A(z) %1 megnyitása böngészőben @@ -6567,7 +6567,7 @@ A kiszolgáló hibával válaszolt: %2 Start typing to search - + Kezdjen el gépelni a kereséshez @@ -6822,7 +6822,7 @@ A kiszolgáló hibával válaszolt: %2 <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - + <p><small>Összeállítva a(z) <a href="%1">%2</a> Git verzióból, ekkor: %3, %4, Qt %5 (%6) használatával</small></p> @@ -6890,7 +6890,7 @@ A kiszolgáló hibával válaszolt: %2 Updated local virtual files metadata - + Frissített helyi virtuális fájlok metaadatai diff --git a/translations/client_lt_LT.ts b/translations/client_lt_LT.ts index d8383196e6fc3..ea544d85244cc 100644 --- a/translations/client_lt_LT.ts +++ b/translations/client_lt_LT.ts @@ -188,22 +188,22 @@ Add account - + Pridėti paskyrą Add new account - + Pridėti naują paskyrą Settings - + Nustatymai Exit - + Išeiti diff --git a/translations/client_sv.ts b/translations/client_sv.ts index f07930bc8aafa..e40f47ba2e61e 100644 --- a/translations/client_sv.ts +++ b/translations/client_sv.ts @@ -171,59 +171,59 @@ Current account - + Nuvarande konto Resume sync for all - + Återuppta synkronisering för alla Pause sync for all - + Pausa synkronisering för alla Add account - + Lägg till konto Add new account - + Lägg till nytt konto Settings - + Inställningar Exit - + Avsluta Current account avatar - + Avatar för aktuellt konto Current account status is online - + Aktuell kontostatus är online Current account status is do not disturb - + Aktuell kontostatus är stör ej Account switcher and settings menu - + Kontobytare och inställningsmeny @@ -2901,7 +2901,7 @@ Alternativt kan du återställa alla raderade filer genom att ladda ner dem frå Show Chat Notifications - + Visa chattaviseringar @@ -3043,7 +3043,7 @@ Alternativt kan du återställa alla raderade filer genom att ladda ner dem frå Show chat notification dialogs. - + Visa dialogrutor för chattaviseringar. @@ -4896,17 +4896,17 @@ Detta är ett nytt experimentellt läge. Om du bestämmer dig för att använda %1 days - + %1 dagar 1 day - + 1 dag Today - + Idag @@ -6481,12 +6481,12 @@ Servern svarade med fel: %2 Shared with you by %1 - + Delad med dig av %1 Expires in %1 - + Går ut om %1 @@ -6556,17 +6556,17 @@ Servern svarade med fel: %2 Open local or group folders - + Öppna lokala eller gruppmappar More apps - + Fler appar Open %1 in browser - + Öppna %1 i webbläsare @@ -6582,7 +6582,7 @@ Servern svarade med fel: %2 Start typing to search - + Börja skriva för att söka diff --git a/translations/client_zh_HK.ts b/translations/client_zh_HK.ts index 5b890cb2c06f2..0e725be2d7574 100644 --- a/translations/client_zh_HK.ts +++ b/translations/client_zh_HK.ts @@ -171,59 +171,59 @@ Current account - + 目前的帳戶 Resume sync for all - + 為所有項目恢復同步 Pause sync for all - + 暫停所有同步 Add account - + 添加帳戶 Add new account - + 添加新帳戶 Settings - + 設定 Exit - + 退出 Current account avatar - + 目前的帳戶虛擬化身 Current account status is online - + 目前帳戶狀態為在線 Current account status is do not disturb - + 目前帳戶狀態為請勿打擾 Account switcher and settings menu - + 帳戶切換器和設置選項單 @@ -2902,7 +2902,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Chat Notifications - + 顯示聊天通告 @@ -3044,7 +3044,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Show chat notification dialogs. - + 顯示聊天通告對話框。 @@ -4897,17 +4897,17 @@ This is a new, experimental mode. If you decide to use it, please report any iss %1 days - + %1 天 1 day - + 1 日 Today - + 今日 @@ -6482,12 +6482,12 @@ Server replied with error: %2 Shared with you by %1 - + %1 已與您分享 Expires in %1 - + 於 %1 過期 @@ -6557,17 +6557,17 @@ Server replied with error: %2 Open local or group folders - + 打開近端或群組資料夾 More apps - + 更多應用程式 Open %1 in browser - + 瀏覽器中開啟 %1 @@ -6583,7 +6583,7 @@ Server replied with error: %2 Start typing to search - + 開始輸入文字以搜尋 From 2119aa1d27acd9c7d8a45d3430b263a570b31670 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Mon, 25 Nov 2024 02:55:11 +0000 Subject: [PATCH 223/244] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: Rainer Walke --- translations/client_fr.ts | 44 ++++++++++++++++----------------- translations/client_hu.ts | 47 ++++++++++++++++++++---------------- translations/client_zh_HK.ts | 2 +- translations/client_zh_TW.ts | 44 ++++++++++++++++----------------- 4 files changed, 71 insertions(+), 66 deletions(-) diff --git a/translations/client_fr.ts b/translations/client_fr.ts index a5d950c05d06e..edb56db4b7fbc 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -171,59 +171,59 @@ Current account - + Compte actuel Resume sync for all - + Reprendre la synchronisation pour tous Pause sync for all - + Mettre en pause la synchronisation pour tous Add account - + Ajouter un compte Add new account - + Ajouter un nouveau compte Settings - + Paramètres Exit - + Quitter Current account avatar - + Avatar du compte actuel Current account status is online - + Le statuts de compte actuel est en ligne Current account status is do not disturb - + Le statuts de compte actuel est ne pas déranger Account switcher and settings menu - + Sélecteur de compte et menu de paramètres @@ -2900,7 +2900,7 @@ Vous pouvez également restaurer tous les fichiers supprimés en les télécharg Show Chat Notifications - + Afficher les notifications de discussion @@ -3042,7 +3042,7 @@ Vous pouvez également restaurer tous les fichiers supprimés en les télécharg Show chat notification dialogs. - + Afficher les boîtes de dialogue de notification de chat. @@ -4894,17 +4894,17 @@ Il s'agit d'un nouveau mode expérimental. Si vous décidez de l' %1 days - + %1 jours 1 day - + 1 jour Today - + Aujourd'hui @@ -6479,12 +6479,12 @@ Le serveur a répondu avec l'erreur : %2 Shared with you by %1 - + Partagé avec vous par %1 Expires in %1 - + Expire dans %1 @@ -6554,17 +6554,17 @@ Le serveur a répondu avec l'erreur : %2 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 @@ -6580,7 +6580,7 @@ Le serveur a répondu avec l'erreur : %2 Start typing to search - + Commencez à écrire pour rechercher diff --git a/translations/client_hu.ts b/translations/client_hu.ts index 8d18c386a3452..b53d4806f6ebc 100644 --- a/translations/client_hu.ts +++ b/translations/client_hu.ts @@ -281,12 +281,12 @@ Evict materialised files - + Materializált fájlok kilakoltatása Materialised items - + Materializált elemek @@ -304,7 +304,7 @@ 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. - + A gyors szinkronizálás csak a feltárt mappákon belüli fájlok és mappák változásait szinkronizálja. Ez jelentősen növelheti a reakciókészséget a virtuális fájlok kezdeti konfigurálásakor, azonban a még fel nem tárt mappába áthelyezett fájlok redundáns letöltését okozza. @@ -340,7 +340,7 @@ Signal file provider domain - + Jelző fájlszolgáltatói tartomány @@ -353,12 +353,12 @@ %1 GB of %2 GB remote files synced - + %1 GB/%2 GB távoli fájl szinkronizálva Evict local copies... - + Helyi másolatok kilakoltatása… @@ -529,13 +529,15 @@ Megpróbálja importálni a fiókot? %1 accounts were detected from a legacy desktop client. Should the accounts be imported? - + %1 fiók észlelve egy régi asztali ügyfélről. +Be kell importálni a fiókokat? 1 account was detected from a legacy desktop client. Should the account be imported? - + 1 fiók észlelve egy régi asztali ügyfélről. +Be kell importálni a fiókot? @@ -653,7 +655,8 @@ 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. <b>This process is not reversible. Are you sure you want to proceed?</b> - + Ez titkosítja a mappát és a benne lévő összes fájlt. Ezek a fájlok többé nem lesznek elérhetők a titkosítási emlékeztető kulcs nélkül. +<b>Ez a folyamat nem visszafordítható. Biztos, hogy folytatni szeretné?</b> @@ -683,17 +686,17 @@ Should the account be imported? Please wait for the folder to sync before trying to encrypt it. - + Kérjük, várja meg a mappa szinkronizálását, mielőtt megpróbálná titkosítani. The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully - + A mappának van egy kisebb szinkronizálási problémája. A mappa titkosítása a sikeres szinkronizálás után lesz lehetséges. The folder has a sync error. Encryption of this folder will be possible once it has synced successfully - + A mappának szinkronizálási hibája van. A mappa titkosítása a sikeres szinkronizálás után lesz lehetséges. @@ -924,7 +927,7 @@ Ez a művelet megszakítja a jelenleg futó szinkronizálást. Server %1 is currently being redirected, or your connection is behind a captive portal. - + A(z) %1 kiszolgálót jelenleg átirányítják, vagy a kapcsolatod egy foglyul ejtett portál mögött van. @@ -949,7 +952,7 @@ Ez a művelet megszakítja a jelenleg futó szinkronizálást. Unable to connect to %1. - + Nem lehetséges a csatlakozás a következőhöz: %1. @@ -984,7 +987,7 @@ Ez a művelet megszakítja a jelenleg futó szinkronizálást. There are folders that have grown in size beyond %1MB: %2 - + Vannak olyan mappák, amelyek mérete meghaladta a(z) %1 MB-ot: %2 @@ -1070,7 +1073,7 @@ Ez a művelet megszakítja a jelenleg futó szinkronizálást. Need the user to accept the terms of service - + A felhasználónak el kell fogadnia a felhasználási feltételeket @@ -1215,7 +1218,8 @@ Ez a művelet megszakítja a jelenleg futó szinkronizálást. Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. - + %1 és %2 importálva egy régi asztali kliensből. +%3 @@ -1679,12 +1683,12 @@ Ez a művelet megszakítja a jelenleg futó szinkronizálást. Encrypted metadata setup error! - + Titkosított metaadatok beállítási hibája! Encrypted metadata setup error: initial signature from server is empty. - + Titkosított metaadatok beállítási hibája: a kiszolgáló kezdeti aláírása üres. @@ -2186,7 +2190,8 @@ Ezt a problémát valószínűleg az OpenSSL programkönyvtárakban kell keresni A folder has surpassed the set folder size limit of %1MB: %2. %3 - + Egy mappa túllépte a beállított %1 MB-os mappamérethatárt: %2. +%3 @@ -2236,7 +2241,7 @@ Ha ez véletlen volt, és úgy dönt, hogy megtartja ezeket a fájlokat, akkor The folder %1 has surpassed the set folder size limit of %2MB. - + A mappa túllépte a beállított %2MB-os mappamérethatárt: %1 diff --git a/translations/client_zh_HK.ts b/translations/client_zh_HK.ts index 0e725be2d7574..ca66cde931986 100644 --- a/translations/client_zh_HK.ts +++ b/translations/client_zh_HK.ts @@ -6059,7 +6059,7 @@ Server replied with error: %2 %1: %2 Example text: "Nextcloud: Syncing 25MB (3 minutes left)" (%1 is the folder name to be synced, %2 a status message for that folder) - + %1: %2 diff --git a/translations/client_zh_TW.ts b/translations/client_zh_TW.ts index 18f63cfa092a4..5f936b8fdfdd7 100644 --- a/translations/client_zh_TW.ts +++ b/translations/client_zh_TW.ts @@ -171,59 +171,59 @@ Current account - + 目前帳號 Resume sync for all - + 繼續所有同步 Pause sync for all - + 暫停所有同步 Add account - + 新增帳號 Add new account - + 加入新帳號 Settings - + 設定 Exit - + 離開 Current account avatar - + 目前帳號大頭照 Current account status is online - + 目前帳號狀態為在線上 Current account status is do not disturb - + 目前帳號狀態為請勿打擾 Account switcher and settings menu - + 帳號切換器與設定選單 @@ -2901,7 +2901,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Chat Notifications - + 顯示聊天通知 @@ -3043,7 +3043,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Show chat notification dialogs. - + 顯示聊天通知對話方塊 @@ -4896,17 +4896,17 @@ This is a new, experimental mode. If you decide to use it, please report any iss %1 days - + %1天 1 day - + 1天 Today - + 今天 @@ -6481,12 +6481,12 @@ Server replied with error: %2 Shared with you by %1 - + 由 %1 與您分享 Expires in %1 - + 於 %1 過期 @@ -6556,17 +6556,17 @@ Server replied with error: %2 Open local or group folders - + 開啟本機或群組資料夾 More apps - + 更多應用程式 Open %1 in browser - + 在瀏覽器中開啟 %1 @@ -6582,7 +6582,7 @@ Server replied with error: %2 Start typing to search - + 開始輸入以搜尋 From 8e927688c06416723ec1b7b74e1130541371342b Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 25 Nov 2024 16:39:20 +0800 Subject: [PATCH 224/244] Make connectToPaletteSignal const We don't really need to have the check fo paletteSignalsConnected Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/libsync/theme.cpp | 9 +++------ src/libsync/theme.h | 3 +-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index cb672c71750dd..2db9e708ca616 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -964,13 +964,10 @@ QColor Theme::defaultColor() return QColor{NEXTCLOUD_BACKGROUND_COLOR}; } -void Theme::connectToPaletteSignal() +void Theme::connectToPaletteSignal() const { - if (!_paletteSignalsConnected) { - if (const auto ptr = qobject_cast(qApp)) { - connect(ptr->styleHints(), &QStyleHints::colorSchemeChanged, this, &Theme::darkModeChanged); - _paletteSignalsConnected = true; - } + if (const auto ptr = qobject_cast(qApp)) { + connect(ptr->styleHints(), &QStyleHints::colorSchemeChanged, this, &Theme::darkModeChanged, Qt::UniqueConnection); } } diff --git a/src/libsync/theme.h b/src/libsync/theme.h index a7e817de15ca9..9e12ba709f51c 100644 --- a/src/libsync/theme.h +++ b/src/libsync/theme.h @@ -639,14 +639,13 @@ public slots: Theme &operator=(Theme const &); void updateMultipleOverrideServers(); - void connectToPaletteSignal(); + void connectToPaletteSignal() const; #if defined(Q_OS_WIN) QPalette reserveDarkPalette; // Windows 11 button and window dark colours #endif static Theme *_instance; bool _mono = false; - bool _paletteSignalsConnected = false; QString _overrideServerUrl; bool _forceOverrideServerUrl = false; From f6658de901a46ebf4bcc889ba770ed5237758879 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 25 Nov 2024 16:40:02 +0800 Subject: [PATCH 225/244] Try connectToSignal on all OSes on Theme init Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/libsync/theme.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index 2db9e708ca616..84fbe18685420 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -398,9 +398,10 @@ Theme::Theme() QColor(127, 127, 127)); reserveDarkPalette.setColor(QPalette::Disabled, QPalette::WindowText, QColor(127, 127, 127)); - connectToPaletteSignal(); #endif + connectToPaletteSignal(); + #ifdef APPLICATION_SERVER_URL_ENFORCE _forceOverrideServerUrl = true; #endif From 29118774a7bc4aecaeb86c5cdb796db067bc8446 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 25 Nov 2024 16:40:23 +0800 Subject: [PATCH 226/244] Add connectToSignal on darkMode property fetch Theme may be instantiated before the qApp is available Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/libsync/theme.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index 84fbe18685420..a77aa4450d7f1 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -1010,6 +1010,7 @@ QVariantMap Theme::systemPalette() const bool Theme::darkMode() const { + connectToPaletteSignal(); const auto isDarkFromStyle = [] { switch (qGuiApp->styleHints()->colorScheme()) { From e67aa6c8128577249070cc01843471711285b7c5 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 25 Nov 2024 16:42:39 +0800 Subject: [PATCH 227/244] Use Style.darkMode instead of Theme.darkMode This way we avoid the computation that happens in Theme::darkMode each time the property is accessed Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- src/gui/tray/ActivityItemContent.qml | 2 +- src/gui/tray/CallNotificationDialog.qml | 2 +- src/gui/tray/UnifiedSearchResultListItem.qml | 6 +++--- src/gui/tray/UserLine.qml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gui/tray/ActivityItemContent.qml b/src/gui/tray/ActivityItemContent.qml index cc56103e40194..98ea3c2277f04 100644 --- a/src/gui/tray/ActivityItemContent.qml +++ b/src/gui/tray/ActivityItemContent.qml @@ -104,7 +104,7 @@ RowLayout { cache: true fillMode: Image.PreserveAspectFit - source: Theme.darkMode ? model.darkIcon : model.lightIcon + source: Style.darkMode ? model.darkIcon : model.lightIcon sourceSize.height: 64 sourceSize.width: 64 mipmap: true // Addresses grainy downscale diff --git a/src/gui/tray/CallNotificationDialog.qml b/src/gui/tray/CallNotificationDialog.qml index 22f11da71fb5e..3ebe3bd65c2f6 100644 --- a/src/gui/tray/CallNotificationDialog.qml +++ b/src/gui/tray/CallNotificationDialog.qml @@ -163,7 +163,7 @@ ApplicationWindow { cache: true source: root.usingUserAvatar ? root.talkNotificationData.userAvatar : - Theme.darkMode ? root.talkIcon + palette.windowText : root.talkIcon + Style.ncBlue + Style.darkMode ? root.talkIcon + palette.windowText : root.talkIcon + Style.ncBlue sourceSize.width: Style.accountAvatarSize sourceSize.height: Style.accountAvatarSize diff --git a/src/gui/tray/UnifiedSearchResultListItem.qml b/src/gui/tray/UnifiedSearchResultListItem.qml index bc3588e6e527f..97092b23c6f00 100644 --- a/src/gui/tray/UnifiedSearchResultListItem.qml +++ b/src/gui/tray/UnifiedSearchResultListItem.qml @@ -56,9 +56,9 @@ MouseArea { anchors.fill: parent title: model.resultTitle subline: model.subline - icons: Theme.darkMode ? model.darkIcons : model.lightIcons - iconsIsThumbnail: Theme.darkMode ? model.darkIconsIsThumbnail : model.lightIconsIsThumbnail - iconPlaceholder: Theme.darkMode ? model.darkImagePlaceholder : model.lightImagePlaceholder + icons: Style.darkMode ? model.darkIcons : model.lightIcons + iconsIsThumbnail: Style.darkMode ? model.darkIconsIsThumbnail : model.lightIconsIsThumbnail + iconPlaceholder: Style.darkMode ? model.darkImagePlaceholder : model.lightImagePlaceholder isRounded: model.isRounded && iconsIsThumbnail } } diff --git a/src/gui/tray/UserLine.qml b/src/gui/tray/UserLine.qml index 6502817e9f135..010a9391b08b9 100644 --- a/src/gui/tray/UserLine.qml +++ b/src/gui/tray/UserLine.qml @@ -41,7 +41,7 @@ AbstractButton { Layout.leftMargin: Style.accountIconsMenuMargin verticalAlignment: Qt.AlignCenter cache: false - source: model.avatar !== "" ? model.avatar : Theme.darkMode ? "image://avatars/fallbackWhite" : "image://avatars/fallbackBlack" + source: model.avatar !== "" ? model.avatar : Style.darkMode ? "image://avatars/fallbackWhite" : "image://avatars/fallbackBlack" Layout.preferredHeight: Style.accountAvatarSize Layout.preferredWidth: Style.accountAvatarSize From 494db75cd5d778d4f12acbd92f4b0b760b6e200a Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Mon, 25 Nov 2024 11:00:07 +0100 Subject: [PATCH 228/244] no transparent background for main ApplicationWindow Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/gui/tray/MainWindow.qml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index 3f80f58c6d1cb..2a81a493e7fa8 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -36,7 +36,6 @@ ApplicationWindow { width: Systray.useNormalWindow ? Style.trayWindowHeight : Style.trayWindowWidth height: Style.trayWindowHeight flags: Systray.useNormalWindow ? Qt.Window : Qt.Dialog | Qt.FramelessWindowHint - color: 'transparent' readonly property int maxMenuHeight: Style.trayWindowHeight - Style.trayWindowHeaderHeight - 2 * Style.trayWindowBorderWidth From 411479c5188093f6b012d5820677b1410a2d7d77 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Tue, 26 Nov 2024 03:35:02 +0000 Subject: [PATCH 229/244] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: Rainer Walke --- translations/client_ar.ts | 56 ++++++++++++++++++------------------ translations/client_bg.ts | 12 ++++---- translations/client_br.ts | 12 ++++---- translations/client_ca.ts | 12 ++++---- translations/client_cs.ts | 12 ++++---- translations/client_da.ts | 12 ++++---- translations/client_de.ts | 12 ++++---- translations/client_el.ts | 12 ++++---- translations/client_en_GB.ts | 12 ++++---- translations/client_eo.ts | 12 ++++---- translations/client_es.ts | 12 ++++---- translations/client_es_CL.ts | 12 ++++---- translations/client_es_CO.ts | 12 ++++---- translations/client_es_CR.ts | 12 ++++---- translations/client_es_DO.ts | 12 ++++---- translations/client_es_EC.ts | 12 ++++---- translations/client_es_GT.ts | 12 ++++---- translations/client_es_HN.ts | 12 ++++---- translations/client_es_MX.ts | 12 ++++---- translations/client_es_SV.ts | 12 ++++---- translations/client_eu.ts | 12 ++++---- translations/client_fa.ts | 12 ++++---- translations/client_fi.ts | 12 ++++---- translations/client_fr.ts | 12 ++++---- translations/client_ga.ts | 12 ++++---- translations/client_gl.ts | 12 ++++---- translations/client_he.ts | 12 ++++---- translations/client_hr.ts | 12 ++++---- translations/client_hu.ts | 48 +++++++++++++++++-------------- translations/client_is.ts | 12 ++++---- translations/client_it.ts | 12 ++++---- translations/client_ja.ts | 12 ++++---- translations/client_ko.ts | 12 ++++---- translations/client_lt_LT.ts | 12 ++++---- translations/client_lv.ts | 12 ++++---- translations/client_mk.ts | 12 ++++---- translations/client_nb_NO.ts | 12 ++++---- translations/client_nl.ts | 12 ++++---- translations/client_oc.ts | 12 ++++---- translations/client_pl.ts | 12 ++++---- translations/client_pt.ts | 12 ++++---- translations/client_pt_BR.ts | 12 ++++---- translations/client_ro.ts | 12 ++++---- translations/client_ru.ts | 12 ++++---- translations/client_sc.ts | 12 ++++---- translations/client_sk.ts | 12 ++++---- translations/client_sl.ts | 12 ++++---- translations/client_sr.ts | 12 ++++---- translations/client_sv.ts | 12 ++++---- translations/client_th.ts | 12 ++++---- translations/client_tr.ts | 12 ++++---- translations/client_ug.ts | 12 ++++---- translations/client_uk.ts | 12 ++++---- translations/client_zh_CN.ts | 12 ++++---- translations/client_zh_HK.ts | 12 ++++---- translations/client_zh_TW.ts | 12 ++++---- 56 files changed, 378 insertions(+), 374 deletions(-) diff --git a/translations/client_ar.ts b/translations/client_ar.ts index 8a99802faa04d..fe54a6c396dbf 100644 --- a/translations/client_ar.ts +++ b/translations/client_ar.ts @@ -171,59 +171,59 @@ Current account - + الحساب الحالي Resume sync for all - + استئناف المزامنة للكل Pause sync for all - + تجميد المزامنة للكل Add account - + إضافة حساب Add new account - + إضافة حساب جديد Settings - + الإعدادات Exit - + خروج Current account avatar - + آفاتار الحساب الحالي Current account status is online - + حالة الحساب الحالي: مُتّصِل Current account status is do not disturb - + حالة الحساب الحالي: أرجو عدم الإزعاج Account switcher and settings menu - + قائمة تبديل الحسابات و الإعدادات @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog شاشة الحوار الرئيسية في تطبيق نكست كلاود لسطح المكتب - + Unified search results list قائمة نتائج البحث الموحد - + New activities أنشطة جديدة @@ -2887,7 +2887,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Chat Notifications - + عرض إشعارات الدردشة @@ -3029,7 +3029,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Show chat notification dialogs. - + عرض نافذة إشعارات الدردشة. @@ -4872,17 +4872,17 @@ This is a new, experimental mode. If you decide to use it, please report any iss %1 days - + %1 يوم 1 day - + 1 يوم Today - + اليوم @@ -5543,7 +5543,7 @@ Server replied with error: %2 <p>%1 عميل سطح المكتب Desktop Client</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 عميل سطح المكتب</p><p>الإصدار %1. لمزيد المعلومات إضغَط <a href='%2'>هنا.</p> @@ -5554,7 +5554,7 @@ Server replied with error: %2 <p><small>إستعمال الملحق البرمجي plugin للملفات الظاهرية: %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> @@ -6455,12 +6455,12 @@ Server replied with error: %2 Shared with you by %1 - + تمّت مشاركته معك من قِبَل %1 Expires in %1 - + تنتهي صلاحيته في %1 @@ -6530,17 +6530,17 @@ Server replied with error: %2 Open local or group folders - + فتح مجلدات محلية أو جماعية More apps - + تطبيقات أخرى Open %1 in browser - + فتح %1 في مُستعرِض الوِب @@ -6556,7 +6556,7 @@ Server replied with error: %2 Start typing to search - + إبدإ الكتابة للبحث @@ -6809,7 +6809,7 @@ Server replied with 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>تمّ بناؤها من نسخة "قيت هب" <a href="%1">%2</a> في %3, %4 باستعمال "كيو تي" %5, %6</small></p> diff --git a/translations/client_bg.ts b/translations/client_bg.ts index 5b7b6e5cd4b57..28aef2d0e777c 100644 --- a/translations/client_bg.ts +++ b/translations/client_bg.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5552,7 +5552,7 @@ Server replied with error: %2 <p>%1 Клиент за настолен компютър</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) @@ -5563,7 +5563,7 @@ Server replied with error: %2 <p><small>Използване на добавка за виртуални файлове: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6818,7 +6818,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_br.ts b/translations/client_br.ts index 56769456b7674..6d4e2f09da73d 100644 --- a/translations/client_br.ts +++ b/translations/client_br.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5526,7 +5526,7 @@ Server replied with error: %2 <p>%1 Kliant Burev</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) @@ -5537,7 +5537,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6792,7 +6792,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_ca.ts b/translations/client_ca.ts index 6a663c70c516a..588fd68a07401 100644 --- a/translations/client_ca.ts +++ b/translations/client_ca.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5527,7 +5527,7 @@ Server replied with error: %2 <p>Client d'escriptori del %1</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) @@ -5538,7 +5538,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6793,7 +6793,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_cs.ts b/translations/client_cs.ts index e3170153e87e0..10b5d76663e41 100644 --- a/translations/client_cs.ts +++ b/translations/client_cs.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Hlavní dialog Nextcloud desktop - + Unified search results list Seznam výsledků sjednoceného vyhledávání - + New activities Nové aktivity @@ -5567,7 +5567,7 @@ Server odpověděl chybou: %2 <p>%1 klient pro počítač</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>Klient %1 pro počítač</p><p>verze %1. Další informace získáte kliknutím <a href='%2'>sem</a>.</p> @@ -5578,7 +5578,7 @@ Server odpověděl chybou: %2 <p><small>Používá zásuvný modul pro virtuální soubory: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 klient pro počítač</p> @@ -6833,7 +6833,7 @@ Server odpověděl chybou: %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>Sestaveno z Git revize <a href="%1">%2</a> na %3, %4 s použitím Qt %5, %6</small></p> diff --git a/translations/client_da.ts b/translations/client_da.ts index 4975dd1f73026..54855e848382d 100644 --- a/translations/client_da.ts +++ b/translations/client_da.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Nextcloud-skrivebordets hoveddialog - + Unified search results list Samlet søgeresultatliste - + New activities Nye aktiviteter @@ -5536,7 +5536,7 @@ Server replied with error: %2 <p>%1-skrivebordsklient</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) @@ -5547,7 +5547,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6802,7 +6802,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_de.ts b/translations/client_de.ts index 2f58548bca2a7..a77f1a4dcc454 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Nextcloud Desktop-Hauptdialog - + Unified search results list Einheitliche Suchergebnisliste - + New activities Neue Aktivitäten @@ -5567,7 +5567,7 @@ Server antwortete mit Fehler: %2 <p>%1 Desktop-Client</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> @@ -5578,7 +5578,7 @@ Server antwortete mit Fehler: %2 <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> @@ -6833,7 +6833,7 @@ Server antwortete mit Fehler: %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>Erstellt aus der Git-Revision <a href="%1">%2</a> auf %3, %4 unter Verwendung von Qt %5, %6</small></p> diff --git a/translations/client_el.ts b/translations/client_el.ts index 3f7f7610a09e4..ae0517a5eb2e2 100644 --- a/translations/client_el.ts +++ b/translations/client_el.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5534,7 +5534,7 @@ Server replied with error: %2 <p>Εφαρμογή Υπολογιστή %1 </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) @@ -5545,7 +5545,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6800,7 +6800,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_en_GB.ts b/translations/client_en_GB.ts index 5235b7ede85c3..f272d83f2b492 100644 --- a/translations/client_en_GB.ts +++ b/translations/client_en_GB.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Nextcloud desktop main dialogue - + Unified search results list Unified search results list - + New activities New activities @@ -5569,7 +5569,7 @@ Server replied with error: %2 <p>%1 Desktop Client</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. For more information please click <a href='%2'>here</a>.</p> @@ -5580,7 +5580,7 @@ Server replied with error: %2 <p><small>Using virtual files plugin: %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> @@ -6835,7 +6835,7 @@ Server replied with 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>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_eo.ts b/translations/client_eo.ts index 24f37eddeaafb..aaee17827e950 100644 --- a/translations/client_eo.ts +++ b/translations/client_eo.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5524,7 +5524,7 @@ Server replied with error: %2 <p>Labortabla Kliento %1</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) @@ -5535,7 +5535,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6790,7 +6790,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_es.ts b/translations/client_es.ts index 546f53ad615e3..d6aa509b79b19 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Diálogo principal de Nextcloud para escritorio - + Unified search results list Lista de resultados de la búsqueda unificada - + New activities Nuevas actividades @@ -5571,7 +5571,7 @@ El servidor respondió con el error: %2 <p>%1 - Cliente de escritorio</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> @@ -5582,7 +5582,7 @@ El servidor respondió con el error: %2 <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> @@ -6837,7 +6837,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> diff --git a/translations/client_es_CL.ts b/translations/client_es_CL.ts index f58e53840301d..e3e290bbd7543 100644 --- a/translations/client_es_CL.ts +++ b/translations/client_es_CL.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5517,7 +5517,7 @@ Server replied with error: %2 - + <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) @@ -5528,7 +5528,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6783,7 +6783,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_es_CO.ts b/translations/client_es_CO.ts index ab8c7ddde6e67..8748dfdc0f550 100644 --- a/translations/client_es_CO.ts +++ b/translations/client_es_CO.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5517,7 +5517,7 @@ Server replied with error: %2 - + <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) @@ -5528,7 +5528,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6783,7 +6783,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_es_CR.ts b/translations/client_es_CR.ts index 612376eac5974..9b6ecca11f26e 100644 --- a/translations/client_es_CR.ts +++ b/translations/client_es_CR.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5517,7 +5517,7 @@ Server replied with error: %2 - + <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) @@ -5528,7 +5528,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6783,7 +6783,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_es_DO.ts b/translations/client_es_DO.ts index 169dfa80713d6..244894fca175e 100644 --- a/translations/client_es_DO.ts +++ b/translations/client_es_DO.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5517,7 +5517,7 @@ Server replied with error: %2 - + <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) @@ -5528,7 +5528,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6783,7 +6783,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_es_EC.ts b/translations/client_es_EC.ts index 4b9013844b38c..3d5cafaa7705e 100644 --- a/translations/client_es_EC.ts +++ b/translations/client_es_EC.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5552,7 +5552,7 @@ Server replied with error: %2 <p>%1 Cliente de Escritorio</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) @@ -5563,7 +5563,7 @@ Server replied with error: %2 <p><small>Usando el complemento de archivos virtuales: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6818,7 +6818,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_es_GT.ts b/translations/client_es_GT.ts index e4a164f304326..3dd287fc11652 100644 --- a/translations/client_es_GT.ts +++ b/translations/client_es_GT.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5517,7 +5517,7 @@ Server replied with error: %2 - + <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) @@ -5528,7 +5528,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6783,7 +6783,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_es_HN.ts b/translations/client_es_HN.ts index e1ebf9b3b0a7d..9460983de6c1f 100644 --- a/translations/client_es_HN.ts +++ b/translations/client_es_HN.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5517,7 +5517,7 @@ Server replied with error: %2 - + <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) @@ -5528,7 +5528,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6783,7 +6783,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_es_MX.ts b/translations/client_es_MX.ts index c61bee1b91f02..402856b2915f8 100644 --- a/translations/client_es_MX.ts +++ b/translations/client_es_MX.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5558,7 +5558,7 @@ El servidor respondió con el error: %2 <p>%1 - Cliente de escritorio</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, haga clic <a href='%2'>aquí</a>.</p> @@ -5569,7 +5569,7 @@ El servidor respondió con el error: %2 <p><small>Usando el complemento para 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> @@ -6824,7 +6824,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>Construido de la revisión Git <a href="%1">%2</a> en %3, %4 usando Qt %5, %6</small></p> diff --git a/translations/client_es_SV.ts b/translations/client_es_SV.ts index c7703993179e4..e624087981bb6 100644 --- a/translations/client_es_SV.ts +++ b/translations/client_es_SV.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5517,7 +5517,7 @@ Server replied with error: %2 - + <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) @@ -5528,7 +5528,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6783,7 +6783,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_eu.ts b/translations/client_eu.ts index d3dedd5ddc938..50c108bae310e 100644 --- a/translations/client_eu.ts +++ b/translations/client_eu.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Mahaigaineko Nextcloud-en elkarrizketa nagusia - + Unified search results list Bilaketa-emaitzen zerrenda bateratua - + New activities Jarduera berriak @@ -5568,7 +5568,7 @@ Zerbitzariak errorearekin erantzun du: %2 <p>Mahaigaineko %1 bezeroa</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 Mahaigaineko bezeroa</p><p>%1 bertsioa. Infomazio gehiago jasotzeko egin klik <a href='%2'>hemen</a>.</p> @@ -5579,7 +5579,7 @@ Zerbitzariak errorearekin erantzun du: %2 <p><small>Fitxategi birtualen plugina erabiltzen: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 mahaigaineko bezeroa %2</p> @@ -6834,7 +6834,7 @@ Zerbitzariak errorearekin erantzun du: %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><a href="%1">%2</a> Git berrikuspenetik eraikia %3, %4 gainean Qt %5, %6 erabiliz</small></p> diff --git a/translations/client_fa.ts b/translations/client_fa.ts index 6df693d7ae183..87838f042b537 100644 --- a/translations/client_fa.ts +++ b/translations/client_fa.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5551,7 +5551,7 @@ Server replied with error: %2 <p>%1 Desktop Client</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) @@ -5562,7 +5562,7 @@ Server replied with error: %2 <p><small>Using virtual files plugin: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6817,7 +6817,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_fi.ts b/translations/client_fi.ts index a955bbd88a2e9..187c75021a274 100644 --- a/translations/client_fi.ts +++ b/translations/client_fi.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5528,7 +5528,7 @@ Server replied with error: %2 <p>%1-työpöytäsovellus</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) @@ -5539,7 +5539,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6794,7 +6794,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_fr.ts b/translations/client_fr.ts index edb56db4b7fbc..15dccb77f9897 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Boîte de dialogue principale du bureau Nextcloud - + Unified search results list Liste des résultats de la recherche unifiée - + New activities Nouvelles activités @@ -5567,7 +5567,7 @@ Le serveur a répondu avec l'erreur : %2 <p>Client de bureau %1</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> @@ -5578,7 +5578,7 @@ Le serveur a répondu avec l'erreur : %2 <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> @@ -6833,7 +6833,7 @@ Le serveur a répondu avec l'erreur : %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>Généré à partir de la révision Git <a href="%1">%2</a> du %3, %4 en utilisant Qt %5, %6</small></p> diff --git a/translations/client_ga.ts b/translations/client_ga.ts index 1300f41b16c2d..8eef91c45c13c 100644 --- a/translations/client_ga.ts +++ b/translations/client_ga.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Príomhdhialóg deisce Nextcloud - + Unified search results list Liosta torthaí cuardaigh aontaithe - + New activities Gníomhaíochtaí nua @@ -5569,7 +5569,7 @@ D'fhreagair an freastalaí le hearráid: % 2 <p>%1 Cliant Deisce</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 Cliant Deisce</p><p>Leagan %1. Chun tuilleadh eolais a fháil cliceáil le do thoil ar <a href='%2'>anseo</a>.</p> @@ -5580,7 +5580,7 @@ D'fhreagair an freastalaí le hearráid: % 2 <p><small>Ag úsáid an breiseáin comhaid fhíorúil: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 cliant deisce %2</p> @@ -6835,7 +6835,7 @@ D'fhreagair an freastalaí le hearráid: % 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>Tógtha ó athbhreithniú Git <a href="%1">%2</a> ar %3, %4 ag úsáid %5, %6</small></p> diff --git a/translations/client_gl.ts b/translations/client_gl.ts index e656a073f67cd..fa82251393f33 100644 --- a/translations/client_gl.ts +++ b/translations/client_gl.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Diálogo principal do escritorio Nextcloud - + Unified search results list Lista de resultados da busca unificada - + New activities Novas actividades @@ -5568,7 +5568,7 @@ O servidor respondeu co erro: %2 <p>Cliente de escritorio de %1</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>Cliente de escritorio de %1</p><p>Versión %1. Para obter máis información prema <a href='%2'>aquí</a>.</p> @@ -5579,7 +5579,7 @@ O servidor respondeu co erro: %2 <p><small>Usando o complemento de ficheiros virtuais: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>Cliente de escritorio de %1, %2</p> @@ -6834,7 +6834,7 @@ O servidor respondeu co erro: %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>Construido desde a revisión Git <a href="%1">%2</a> en %3, %4 usando Qt %5, %6</small></p> diff --git a/translations/client_he.ts b/translations/client_he.ts index 4c1a8819b08e4..3b469bee079a4 100644 --- a/translations/client_he.ts +++ b/translations/client_he.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5522,7 +5522,7 @@ Server replied with error: %2 <p>%1 לקוח לשולחן העבודה</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) @@ -5533,7 +5533,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6788,7 +6788,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_hr.ts b/translations/client_hr.ts index bdfdd4879a00d..9f497ecc24af7 100644 --- a/translations/client_hr.ts +++ b/translations/client_hr.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5549,7 +5549,7 @@ Server replied with error: %2 <p>%1 Klijent za osobna računala</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) @@ -5560,7 +5560,7 @@ Server replied with error: %2 <p><small>Upotreba dodatka za virtualne datoteke: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6815,7 +6815,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_hu.ts b/translations/client_hu.ts index b53d4806f6ebc..55d849ab36cbf 100644 --- a/translations/client_hu.ts +++ b/translations/client_hu.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog A Nextcloud asztali alkalmazás főablaka - + Unified search results list Egyesített keresési találatlista - + New activities Új tevékenységek @@ -2274,21 +2274,25 @@ Ez azt jelenti, hogy a szinkronizációs kliens lehet, hogy nem fogja azonnal fe Virtual file download failed with code "%1", status "%2" and error message "%3" - + A virtuális fájl letöltése „%1” kóddal, „%2” állapottal és „%3” hibaüzenettel sikertelen volt. 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 kiszolgálón nagyszámú fájl törlődött. +Kérjük, erősítse meg, hogy szeretné-e folytatni ezeket a törléseket. +Alternatívaként az összes törölt fájlt visszaállíthatja a(z) „%1” mappából a kiszolgálóra történő feltöltéssel. 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 helyi „%1” mappából nagyszámú fájl törlődött. +Kérjük, erősítse meg, hogy szeretné-e folytatni ezeket a törléseket. +Alternatívaként az összes törölt fájlt visszaállíthatja a kiszolgálóról történő letöltéssel. @@ -2298,17 +2302,17 @@ Alternatively, you can restore all deleted files by downloading them from the se Proceed with Deletion - + Törlés folytatása Restore Files to Server - + Fájlok visszaállítása a kiszolgálóra Restore Files from Server - + Fájlok visszaállítása a kiszolgálóról @@ -2582,7 +2586,7 @@ Alternatively, you can restore all deleted files by downloading them from the se %1 %2 … Example text: "Uploading foobar.png (1MB of 2MB) time left 2 minutes at a rate of 24Kb/s" Example text: "Syncing 'foo.txt', 'bar.txt'" - + %1 %2 … @@ -2677,7 +2681,7 @@ Alternatively, you can restore all deleted files by downloading them from the se About to start syncing - + Szinkronizálás megkezdése @@ -2897,7 +2901,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Chat Notifications - + Csevegési értesítések megjelenítése @@ -2943,7 +2947,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Automatically disable synchronisation of folders that overcome limit - + Az érintett mappák szinkronizálásának automatikus letiltása a korlát túllépésekor @@ -3039,7 +3043,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Show chat notification dialogs. - + Csevegésértesítési párbeszédablakok megjelenítése @@ -3328,22 +3332,22 @@ Ahol a törlés engedélyezett, ott az elemek törölve lesznek, ha megakadályo The following characters are not allowed: %1 - + A következő karakterek nem engedélyezettek: %1 The following basenames are not allowed: %1 - + A következő alapnevek nem engedélyezettek: %1 The following filenames are not allowed: %1 - + A következő fájlnevek nem engedélyezettek: %1 The following file extensions are not allowed: %1 - + A következő kiterjesztések nem engedélyezettek: %1 @@ -3488,7 +3492,7 @@ Ne feledje, hogy a naplózás parancssori kapcsolóinak használata felülbírá Could not find a file for local editing.Make sure its path is valid and it is synced locally. - + A helyi szerkesztéshez szükséges fájl nem található. Győződjön meg róla, hogy az elérési útja érvényes és helyileg szinkronizálva van. @@ -5559,7 +5563,7 @@ A kiszolgáló hibával válaszolt: %2 <p>%1 asztali kliens</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) @@ -5570,7 +5574,7 @@ A kiszolgáló hibával válaszolt: %2 <p><small>Virtuális fájlok bővítmény használata: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 asztali kliens%2</p> @@ -6825,7 +6829,7 @@ A kiszolgáló hibával válaszolt: %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>Összeállítva a(z) <a href="%1">%2</a> Git verzióból, ekkor: %3, %4, Qt %5 (%6) használatával</small></p> diff --git a/translations/client_is.ts b/translations/client_is.ts index c55beae5fc469..bbe8b190ef82d 100644 --- a/translations/client_is.ts +++ b/translations/client_is.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5530,7 +5530,7 @@ Server replied with error: %2 <p>%1 vinnutölvuforrit</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 vinnutölvuforrit (Desktop Client)</p><p>Útgáfa %1. Til að sjá nánari upplýsingar skaltu <a href='%2'>smella hér</a>.</p> @@ -5541,7 +5541,7 @@ Server replied with error: %2 <p><small>Notar viðbót fyrir sýndarskrár: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 vinnutölvuforrit %2</p> @@ -6797,7 +6797,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_it.ts b/translations/client_it.ts index 12b55e4551286..1abba67237d21 100644 --- a/translations/client_it.ts +++ b/translations/client_it.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Finestra di dialogo principale del desktop Nextcloud - + Unified search results list Elenco dei risultati di ricerca unificato - + New activities Nuove attività @@ -5560,7 +5560,7 @@ Il server ha risposto con errore: %2 <p>Client desktop di %1</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 Client Desktop</p><p>Versione %1. Per maggiori informazioni clicca <a href='%2'>qui</a>.</p> @@ -5571,7 +5571,7 @@ Il server ha risposto con errore: %2 <p><small>Usato il plugin dei file virtuali: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 Client desktop %2</p> @@ -6826,7 +6826,7 @@ Il server ha risposto con errore: %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>Realizzato dalla revisione Git <a href="%1">%2</a> su %3, %4 usando Qt %5, %6</small></p> diff --git a/translations/client_ja.ts b/translations/client_ja.ts index de189f154daec..51e68d57ee41f 100644 --- a/translations/client_ja.ts +++ b/translations/client_ja.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Nextcloudデスクトップのメインダイアログ - + Unified search results list 統合検索結果 - + New activities 新しいアクティビティ @@ -5568,7 +5568,7 @@ Server replied with error: %2 <p>%1 デスクトップクライアント</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 デスクトップクライアント</p><p>バージョン %1. 詳細については <a href='%2'>ここ</a>をクリックしてください。</p> @@ -5579,7 +5579,7 @@ Server replied with error: %2 <p><small>仮想ファイルシステムプラグインを利用:%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> @@ -6834,7 +6834,7 @@ Server replied with 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>Git リビジョン <a href="%1">%2</a> から %3, %4 で Qt %5, %6 を使用してビルドされました</small></p> diff --git a/translations/client_ko.ts b/translations/client_ko.ts index 4fcc17f65fe55..c87a10fa3f39f 100644 --- a/translations/client_ko.ts +++ b/translations/client_ko.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5559,7 +5559,7 @@ Server replied with error: %2 <p>%1 데스크톱 클라이언트</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) @@ -5570,7 +5570,7 @@ Server replied with error: %2 <small><p>가상 파일 플러그인 사용: %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> @@ -6825,7 +6825,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_lt_LT.ts b/translations/client_lt_LT.ts index ea544d85244cc..1a648215b0a40 100644 --- a/translations/client_lt_LT.ts +++ b/translations/client_lt_LT.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities Naujos veiklos @@ -5526,7 +5526,7 @@ Server replied with error: %2 <p>%1 darbalaukio kliento programa</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) @@ -5537,7 +5537,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6792,7 +6792,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_lv.ts b/translations/client_lv.ts index c01269db26069..ebea9da28550b 100644 --- a/translations/client_lv.ts +++ b/translations/client_lv.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5535,7 +5535,7 @@ Server replied with error: %2 - + <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) @@ -5546,7 +5546,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6801,7 +6801,7 @@ Server replied with 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>Izveidots no Git revīzijas <a href="%1">%2</a> %3, %4, izmantojot Qt %5, %6</small></p> diff --git a/translations/client_mk.ts b/translations/client_mk.ts index 68d3cd1dfe977..766e335de8cbe 100644 --- a/translations/client_mk.ts +++ b/translations/client_mk.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5524,7 +5524,7 @@ Server replied with error: %2 <p>%1 Клиент за компјутер</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) @@ -5535,7 +5535,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6790,7 +6790,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_nb_NO.ts b/translations/client_nb_NO.ts index a47875c6add79..269cf3b5321cd 100644 --- a/translations/client_nb_NO.ts +++ b/translations/client_nb_NO.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5557,7 +5557,7 @@ Server svarte med feil: %2 <p>%1 skrivebordsklient</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>%1Skrivebordsklient</p><p>Versjon %1. For mer informasjon, vennligst klikk <a href='%2'>her</a>.</p> @@ -5568,7 +5568,7 @@ Server svarte med feil: %2 <p><small>Bruker plugin for virtuelle filer: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 skrivebordsklient %2</p> @@ -6823,7 +6823,7 @@ Server svarte med feil: %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>Bygget fra Git-revisjon <a href="%1">%2</a> den %3, %4 med Qt %5, %6</small></p> diff --git a/translations/client_nl.ts b/translations/client_nl.ts index 137aea7454d02..925bcd6b6c8f5 100644 --- a/translations/client_nl.ts +++ b/translations/client_nl.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5554,7 +5554,7 @@ Server antwoordde met fout: %2 <p>%1 Desktop Client</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. Voor meer informatie klik <a href='%2'>hier</a>.</p> @@ -5565,7 +5565,7 @@ Server antwoordde met fout: %2 <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>%1 desktop cliënt %2</p> @@ -6820,7 +6820,7 @@ Server antwoordde met fout: %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>Gebouwd vanaf Git revisie <a href="%1">%2</a> op %3, %4 gebruik makend van Qt %5, %6</small></p> diff --git a/translations/client_oc.ts b/translations/client_oc.ts index 67d657d274047..3b47e67c0811f 100644 --- a/translations/client_oc.ts +++ b/translations/client_oc.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5515,7 +5515,7 @@ Server replied with error: %2 <p>Client de burèu %1</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) @@ -5526,7 +5526,7 @@ Server replied with error: %2 <p><small>Usatge extension pels fichièrs virtuals : %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6781,7 +6781,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_pl.ts b/translations/client_pl.ts index be6e7b335d1b0..da2426c7c05b7 100644 --- a/translations/client_pl.ts +++ b/translations/client_pl.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5558,7 +5558,7 @@ Serwer odpowiedział błędem: %2 <p>%1 Desktop Client</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>Klient na komputer %1<p>Wersja %1. Aby uzyskać więcej informacji, kliknij <a href='%2'>tutaj</a>.</p> @@ -5569,7 +5569,7 @@ Serwer odpowiedział błędem: %2 <p><small>Używanie wtyczki plików wirtualnych: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 klient na komputer %2</p> @@ -6824,7 +6824,7 @@ Serwer odpowiedział błędem: %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>Zbudowany z wersji Git <a href="%1">%2</a> na %3, %4 przy użyciu Qt %5, %6</small></p> diff --git a/translations/client_pt.ts b/translations/client_pt.ts index b07ad5a5338e1..6fa3b8fb6e92f 100644 --- a/translations/client_pt.ts +++ b/translations/client_pt.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5520,7 +5520,7 @@ Server replied with error: %2 - + <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) @@ -5531,7 +5531,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6786,7 +6786,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_pt_BR.ts b/translations/client_pt_BR.ts index 76d713217228e..f900269c2f1c0 100644 --- a/translations/client_pt_BR.ts +++ b/translations/client_pt_BR.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Caixa de diálogo principal do desktop Nextcloud - + Unified search results list Lista unificada de resultados de pesquisa - + New activities Novas atividades @@ -5563,7 +5563,7 @@ Servidor respondeu com erro: %2 <p>%1 Cliente Desktop</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 desktop</p><p>Versão %1. Para mais informações por favor click <a href='%2'>aqui</a>.</p> @@ -5574,7 +5574,7 @@ Servidor respondeu com erro: %2 <p><small>Usando o plugin de arquivos virtuais: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 cliente desktop %2</p> @@ -6829,7 +6829,7 @@ Servidor respondeu com erro: %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>Construído a partir da revisão do Git <a href="%1">%2</a> em %3, %4 usando Qt %5, %6</small></p> diff --git a/translations/client_ro.ts b/translations/client_ro.ts index f52e958b5a4fb..0e20a7c47a20c 100644 --- a/translations/client_ro.ts +++ b/translations/client_ro.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5530,7 +5530,7 @@ Server replied with error: %2 - + <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) @@ -5541,7 +5541,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6796,7 +6796,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_ru.ts b/translations/client_ru.ts index 39bfdcc280bb3..8f7748e2eff81 100644 --- a/translations/client_ru.ts +++ b/translations/client_ru.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Основное окно Nextcloud - + Unified search results list Единый список результатов поиска - + New activities Новые события @@ -5556,7 +5556,7 @@ Server replied with error: %2 <p>%1 клиент для ПК</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 для ПК</p> <p>Версия %1. Для получения дополнительной информации нажмите <a href='%2'>сюда</a>.</p> @@ -5567,7 +5567,7 @@ Server replied with error: %2 <p><small>Используемый модуль поддержки виртуальных файлов: %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> @@ -6822,7 +6822,7 @@ Server replied with 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>Собрано из исходников Git версии <a href="%1">%2</a> на %3, %4 с использованием библиотек Qt %5, %6</small></p> diff --git a/translations/client_sc.ts b/translations/client_sc.ts index 61b771955b7ac..3af325f8b0d64 100644 --- a/translations/client_sc.ts +++ b/translations/client_sc.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities Atividades noas @@ -5549,7 +5549,7 @@ Server replied with error: %2 <p>%1 Cliente de iscrivania</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) @@ -5560,7 +5560,7 @@ Server replied with error: %2 <p><small>Impreende s'estensione de archìvios virtuales: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6815,7 +6815,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_sk.ts b/translations/client_sk.ts index 504c530ab6f31..7a0ced08122ac 100644 --- a/translations/client_sk.ts +++ b/translations/client_sk.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5558,7 +5558,7 @@ Server odpovedal chybou: %2 <p>Klient %1 pre počítač</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 Desktopový klient</p><p> Verzia %1. Pre viac informácií kliknite <a href='%2'>sem</a>.</p> @@ -5569,7 +5569,7 @@ Server odpovedal chybou: %2 <p><small>Používa zásuvný modul virtuálnych súborov: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 Dektopový klient %2</p> @@ -6824,7 +6824,7 @@ Server odpovedal chybou: %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>Zostavené z Git revízie <a href="%1">%2</a> na %3, %4 s použitím Qt %5, %6</small></p> diff --git a/translations/client_sl.ts b/translations/client_sl.ts index 3fad895be89f1..384496254e366 100644 --- a/translations/client_sl.ts +++ b/translations/client_sl.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities Nove dejavnosti @@ -5549,7 +5549,7 @@ Server replied with error: %2 <p>Namizni program %1</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) @@ -5560,7 +5560,7 @@ Server replied with error: %2 <p><small>Uporablja vstavek navideznih datotek: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6815,7 +6815,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_sr.ts b/translations/client_sr.ts index 7863a5cd73d78..2209446a527b2 100644 --- a/translations/client_sr.ts +++ b/translations/client_sr.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Nextcloud desktop главни дијалог - + Unified search results list Листа резултата обједињене претраге - + New activities Нове активности @@ -5569,7 +5569,7 @@ Server replied with error: %2 <p>%1 десктоп клијент</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 Десктоп клијент</p><p>верзија %1. За више информација, молимо вас да кликнете <a href='%2'>овде</a>.</p> @@ -5580,7 +5580,7 @@ Server replied with error: %2 <p><small>Користи се додатак виртуелних фајлова: %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> @@ -6835,7 +6835,7 @@ Server replied with 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>Изграђен из Git ревизије <a href="%1">%2</a> дана %3, %4 користећи Qt %5, %6</small></p> diff --git a/translations/client_sv.ts b/translations/client_sv.ts index e40f47ba2e61e..b1f07cdecc352 100644 --- a/translations/client_sv.ts +++ b/translations/client_sv.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Nextcloud-klient huvuddialog - + Unified search results list Sammanlagda sökresultat - + New activities Nya aktiviteter @@ -5569,7 +5569,7 @@ Servern svarade med fel: %2 <p>%1 Skrivbordsklient</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 Skrivbordsklient</p><p>Version %1. För mer information klicka <a href='%2'>här</a>.</p> @@ -5580,7 +5580,7 @@ Servern svarade med fel: %2 <p><small>Använder plugin för virtuella filer: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 skrivbordsklient %2</p> @@ -6835,7 +6835,7 @@ Servern svarade med fel: %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>Byggd från Git revision <a href="%1">%2</a> den %3, %4 med Qt %5, %6</small></p> diff --git a/translations/client_th.ts b/translations/client_th.ts index 7f1a4b851204c..61974cb6327c9 100644 --- a/translations/client_th.ts +++ b/translations/client_th.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog - + Unified search results list - + New activities @@ -5524,7 +5524,7 @@ Server replied with error: %2 - + <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) @@ -5535,7 +5535,7 @@ Server replied with error: %2 - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) @@ -6790,7 +6790,7 @@ Server replied with error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> diff --git a/translations/client_tr.ts b/translations/client_tr.ts index 19c139c5084d5..2934295c5b470 100644 --- a/translations/client_tr.ts +++ b/translations/client_tr.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Nextcloud masaüstü ana penceresi - + Unified search results list Birleşik arama sonuçları listesi - + New activities Yeni işlemler @@ -5568,7 +5568,7 @@ Sunucunun verdiği hata yanıtı: %2 <p>%1 Masaüstü istemcisi</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 masaüstü istemcisi</p> <p>%1. Sürüm. Ayrıntılı bilgi almak için <a href='%2'>buraya tıklayabilirsiniz</a>.</p> @@ -5579,7 +5579,7 @@ Sunucunun verdiği hata yanıtı: %2 <p><small>Sanal dosyalar eklentisi kullanılarak: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 masaüstü istemcisi %2</p> @@ -6834,7 +6834,7 @@ Sunucunun verdiği hata yanıtı: %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>Git <a href="%1">%2</a> sürümü ile %3 zamanında, %4 Qt %5 kullanılarak, %6 hazırlandı</small></p> diff --git a/translations/client_ug.ts b/translations/client_ug.ts index 96be1e97260ee..9eed8b4bedf26 100644 --- a/translations/client_ug.ts +++ b/translations/client_ug.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Nextcloud ئۈستەل يۈزى ئاساسىي دىئالوگى - + Unified search results list بىرلىككە كەلگەن ئىزدەش نەتىجىسى تىزىملىكى - + New activities يېڭى پائالىيەتلەر @@ -5569,7 +5569,7 @@ Server replied with error: %2 <p>% 1 ئۈستەل يۈزى خېرىدارى </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 ئۈستەل يۈزى خېرىدارى </p> <p> نەشرى% 1. تېخىمۇ كۆپ ئۇچۇرغا ئېرىشىش ئۈچۈن بۇ يەردىكى <a href = '% 2'> نى بېسىڭ. </p> @@ -5580,7 +5580,7 @@ Server replied with error: %2 <p> <small> مەۋھۇم ھۆججەت قىستۇرمىسىنى ئىشلىتىش:% 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> @@ -6835,7 +6835,7 @@ Server replied with 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> Git تۈزىتىلگەن نۇسخىسىدىن ياسالغان <a href = "% 1">% 2 </a>% 3 ،% 4 Qt% 5 ،% 6 </small> </p> diff --git a/translations/client_uk.ts b/translations/client_uk.ts index ca1869b3f192e..22f6b5950fbad 100644 --- a/translations/client_uk.ts +++ b/translations/client_uk.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Діалогове вікно Nextcloud - + Unified search results list Результати пошуку - + New activities Нові події @@ -5567,7 +5567,7 @@ Server replied with error: %2 <p>%1 клієнт для робочої істанції</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</p><p>Версія %1. Для докладної інформації, перейдіть <a href='%2'>сюди</a>.</p> @@ -5578,7 +5578,7 @@ Server replied with error: %2 <p><small>Використання плаґіну віртуальних файлів: %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> @@ -6833,7 +6833,7 @@ Server replied with 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>Зібрано з ревізії Git %2</a> на %3, %4 з використанням Qt %5, %6</small></p> diff --git a/translations/client_zh_CN.ts b/translations/client_zh_CN.ts index 93b5acca68131..d71c4fd490e96 100644 --- a/translations/client_zh_CN.ts +++ b/translations/client_zh_CN.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Nextcloud 桌面主对话框 - + Unified search results list 统一搜索结果列表 - + New activities 新动态 @@ -5548,7 +5548,7 @@ Server replied with error: %2 <p>%1 桌面客户端</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 桌面客户端</p><p>版本 %1。了解更多咨询请点击<a href='%2'>此处</a>。</p> @@ -5559,7 +5559,7 @@ Server replied with error: %2 <p><small>正使用虚拟文件插件:%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> @@ -6814,7 +6814,7 @@ Server replied with 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>由 Git 版本 <a href="%1">%2</a> 在 %3 构建,%4 使用 Qt %5,%6</small></p> diff --git a/translations/client_zh_HK.ts b/translations/client_zh_HK.ts index ca66cde931986..23dbf8d9aee72 100644 --- a/translations/client_zh_HK.ts +++ b/translations/client_zh_HK.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Nextcloud 桌面版主對話框 - + Unified search results list 統一搜尋結果清單 - + New activities 新活動紀錄 @@ -5570,7 +5570,7 @@ Server replied with error: %2 <p>%1 桌面版用戶端</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 桌面客戶端</p><p>版本 %1。詳細資訊請點擊 <a href='%2'>此處</a>。</p> @@ -5581,7 +5581,7 @@ Server replied with error: %2 <p><small>使用虛擬文件插件:%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> @@ -6836,7 +6836,7 @@ Server replied with 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>根據Git版本號<a href="%1">%2</a>在 %3, %4建置 使用了Qt %5,%6</small></p> diff --git a/translations/client_zh_TW.ts b/translations/client_zh_TW.ts index 5f936b8fdfdd7..5398a642a5749 100644 --- a/translations/client_zh_TW.ts +++ b/translations/client_zh_TW.ts @@ -465,17 +465,17 @@ MainWindow - + Nextcloud desktop main dialog Nextcloud 桌面主要對話方塊 - + Unified search results list 統一搜尋結果清單 - + New activities 新活動 @@ -5569,7 +5569,7 @@ Server replied with error: %2 <p>%1 桌面版客戶端</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 桌面用戶端</p><p>版本 %1。若要了解更多資訊,請點擊<a href='%2'>這裡</a>。</p> @@ -5580,7 +5580,7 @@ Server replied with error: %2 <p><small>正在使用虛擬檔案插入式元件:%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> @@ -6835,7 +6835,7 @@ Server replied with 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>根據 Git 修訂版本 <a href="%1">%2</a> 於 %3 %4 建置,使用 Qt %5、%6</small></p> From 2d34e8876e10060f4183d32e386afd8fc78c8a94 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Wed, 27 Nov 2024 03:04:50 +0000 Subject: [PATCH 230/244] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: Rainer Walke --- translations/client_hu.ts | 42 +++++++++---------- translations/client_zh_CN.ts | 79 ++++++++++++++++++++---------------- 2 files changed, 65 insertions(+), 56 deletions(-) diff --git a/translations/client_hu.ts b/translations/client_hu.ts index 55d849ab36cbf..dff46847ec264 100644 --- a/translations/client_hu.ts +++ b/translations/client_hu.ts @@ -3327,7 +3327,7 @@ Ahol a törlés engedélyezett, ott az elemek törölve lesznek, ha megakadályo The file "%1" could not be synced because the name contains characters which are not allowed on the server. - + A(z) „%1” fájlt nem sikerült szinkronizálni, mert a neve a kiszolgálón nem megengedett karaktereket tartalmaz. @@ -3497,17 +3497,17 @@ Ne feledje, hogy a naplózás parancssori kapcsolóinak használata felülbírá Could not get file ID. - + Nem kérhető le a fájl ID. Could not get file identifier. - + Nem kérhető le a fájlazonosító. The file identifier is empty. - + A fájlazonosító üres. @@ -4171,17 +4171,17 @@ Ez egy új, kísérleti mód. Ha úgy dönt, hogy használja, akkor jelezze nek %1 name containing the character "%2" is not supported on this file system. folder or file impossible to sync due to an invalid name, placeholders will be file or folder and the invalid character - + A(z) „%2” karaktert tartalmazó %1 nevek nem támogatottak ezen a fájlrendszeren. %1 name contains at least one invalid character - + A %1név legalább egy érvénytelen karaktert tartalmaz. %1 name is a reserved name on this file system. - + A %1név egy fenntartott név ezen a fájlrendszeren. @@ -4236,22 +4236,22 @@ Ez egy új, kísérleti mód. Ha úgy dönt, hogy használja, akkor jelezze nek Reason: the entire filename is forbidden. - + Indoklás: a teljes fájlnév tiltott. Reason: the filename has a forbidden base name (filename start). - + Indoklás: a fájlnévnek tiltott alapneve van (fájlnév kezdete). Reason: the file has a forbidden extension (.%1). - + Indoklás: a fájl tiltott kiterjesztésű (.%1). Reason: the filename contains a forbidden character (%1). - + Indoklás: a fájlnév tiltott karaktert (%1) tartalmaz. @@ -4286,7 +4286,7 @@ Ez egy új, kísérleti mód. Ha úgy dönt, hogy használja, akkor jelezze nek Could not upload file, because it is open in "%1". - + Nem sikerült feltölteni a fájlt, mert meg van nyitva itt: „%1”. @@ -4360,7 +4360,7 @@ Ez egy új, kísérleti mód. Ha úgy dönt, hogy használja, akkor jelezze nek The folder %1 cannot be made read-only: %2 - + A(z) %1 mappa nem tehető csak olvashatóvá: %2 @@ -4482,7 +4482,7 @@ Ez egy új, kísérleti mód. Ha úgy dönt, hogy használja, akkor jelezze nek The folder %1 cannot be made read-only: %2 - + A(z) %1 mappa nem tehető csak olvashatóvá: %2 @@ -4513,7 +4513,7 @@ Ez egy új, kísérleti mód. Ha úgy dönt, hogy használja, akkor jelezze nek Folder %1 cannot be renamed because of a local file or folder name clash! - + A(z) %1 mappa nem nevezhető át, mert helyi fájl- vagy mappanévvel ütközik. @@ -4592,7 +4592,7 @@ Ez egy új, kísérleti mód. Ha úgy dönt, hogy használja, akkor jelezze nek Failed to encrypt a folder %1 - + A mappa titkosítása sikertelen: %1 @@ -4930,7 +4930,7 @@ Ez egy új, kísérleti mód. Ha úgy dönt, hogy használja, akkor jelezze nek Could not find local folder for %1 - + A helyi mappa nem található a(z) %1 számára @@ -5566,7 +5566,7 @@ A kiszolgáló hibával válaszolt: %2 <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 asztali kliens</p><p> Verzió: %1. További információkért kattintson <a href='%2'>ide</a>.</p> @@ -5645,17 +5645,17 @@ A kiszolgáló hibával válaszolt: %2 Error updating metadata for a folder %1 - + Hiba a mappa metaadatainak frissítésekor: %1 Could not fetch public key for user %1 - + %1 felhasználó nyilvános kulcsát nem sikerült lekérni Could not find root encrypted folder for folder %1 - + Nem található a(z) %1 mappa titkosított gyökérmappája diff --git a/translations/client_zh_CN.ts b/translations/client_zh_CN.ts index d71c4fd490e96..f06fd3fef7d61 100644 --- a/translations/client_zh_CN.ts +++ b/translations/client_zh_CN.ts @@ -171,59 +171,59 @@ Current account - + 当前账号 Resume sync for all - + 恢复所有同步 Pause sync for all - + 暂停所有同步 Add account - + 添加账号 Add new account - + 添加新账号 Settings - + 设置 Exit - + 退出 Current account avatar - + 当前账号头像 Current account status is online - + 当前账号状态为在线 Current account status is do not disturb - + 当前账号状态为请勿打扰 Account switcher and settings menu - + 账号切换和设置菜单 @@ -958,7 +958,7 @@ This action will abort any currently running synchronization. You need to accept the terms of service - + 你需要接受服务条款 @@ -1069,7 +1069,7 @@ This action will abort any currently running synchronization. Need the user to accept the terms of service - + 需要用户接受服务条款 @@ -1684,7 +1684,7 @@ This action will abort any currently running synchronization. Encrypted metadata setup error: initial signature from server is empty. - + 加密元数据设置错误:来自服务器的初始签名为空。 @@ -2277,7 +2277,9 @@ This means that the synchronization client might not upload local changes immedi 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. - + 服务器中的大量文件已被删除。 +请确认你是否要继续删除这些内容。 +或者,你可以通过从 “%1” 文件夹上传到服务器来还原所有已删除的文件。 @@ -2895,7 +2897,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Chat Notifications - + 显示聊天通知 @@ -3037,7 +3039,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Show chat notification dialogs. - + 显示聊天通知对话框 @@ -3092,7 +3094,10 @@ Note that this selects only what pool upgrades are taken from, and that there ar Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. list of available update channels to non enterprise users and downgrading warning - + - beta:包含可能未经过完全测试的新功能版本 +- daily:包含仅为测试和开发而每天创建的版本 + +降级版本是不可能立即实现的:从测试版更改为稳定版意味着等待新的稳定版。 @@ -3100,7 +3105,9 @@ Downgrading versions is not possible immediately: changing from beta to stable m Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. list of available update channels to enterprise users and downgrading warning - + - enterprise:为客户提供稳定版本 + +降级版本不可能立即实现:从稳定版更改为企业版意味着等待新的企业版。 @@ -3113,7 +3120,9 @@ Downgrading versions is not possible immediately: changing from stable to enterp - stable: contains tested versions considered reliable starts list of available update channels, stable is always available - + 渠道决定将提供哪些升级进行安装: +- stable:包含被认为可靠的测试版本 + @@ -4221,22 +4230,22 @@ This is a new, experimental mode. If you decide to use it, please report any iss Reason: the entire filename is forbidden. - + 原因:整个文件名被禁止。 Reason: the filename has a forbidden base name (filename start). - + 原因:文件名包含禁止的基本名称(文件名开头)。 Reason: the file has a forbidden extension (.%1). - + 原因:文件包含禁止的扩展名(.%1)。 Reason: the filename contains a forbidden character (%1). - + 原因:文件名包含禁止的字符(%1)。 @@ -4875,17 +4884,17 @@ This is a new, experimental mode. If you decide to use it, please report any iss %1 days - + %1 天 1 day - + 1 天 Today - + 今天 @@ -5955,12 +5964,12 @@ Server replied with error: %2 Terms of service - + 服务条款 Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. - + 你的账号 %1 要求你接受服务器的服务条款。你将被重定向到 %2,以确认你已阅读并同意。 @@ -6460,12 +6469,12 @@ Server replied with error: %2 Shared with you by %1 - + 通过 %1 与你共享 Expires in %1 - + 于 %1 过期 @@ -6535,17 +6544,17 @@ Server replied with error: %2 Open local or group folders - + 打开本地或群组文件夹 More apps - + 更多应用 Open %1 in browser - + 在浏览器打开 %1 @@ -6561,7 +6570,7 @@ Server replied with error: %2 Start typing to search - + 开始输入以搜索 From 659d37add31baf21e1517c47f061e35d6b9f6827 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Thu, 28 Nov 2024 02:58:41 +0000 Subject: [PATCH 231/244] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: Rainer Walke --- translations/client_cs.ts | 44 +++++++++++++++++++-------------------- translations/client_hu.ts | 37 +++++++++++++++++++------------- 2 files changed, 44 insertions(+), 37 deletions(-) diff --git a/translations/client_cs.ts b/translations/client_cs.ts index 10b5d76663e41..3433a4f27ab05 100644 --- a/translations/client_cs.ts +++ b/translations/client_cs.ts @@ -171,59 +171,59 @@ Current account - + Stávající účet Resume sync for all - + Pokračovat v synchronizaci u všeho Pause sync for all - + Pozastavit synchronizaci u všeho Add account - + Přidat účet Add new account - + Přidat nový účet Settings - + Settings Exit - + Ukončit Current account avatar - + Stávající zástupný obrázek uživatele Current account status is online - + Stávající stav účtu je online Current account status is do not disturb - + Stávající stav účtu je nerušit Account switcher and settings menu - + Přepínání účtů a nabídka nastavení @@ -2899,7 +2899,7 @@ Případně je možné veškeré smazané soubory obnovit jejich stažením si z Show Chat Notifications - + Zobrazovat notifikace ohledně chatu @@ -3041,7 +3041,7 @@ Případně je možné veškeré smazané soubory obnovit jejich stažením si z Show chat notification dialogs. - + Zobrazovat dialogy notifikací chatu. @@ -4894,17 +4894,17 @@ Toto je nový, experimentální režim. Pokud se jej rozhodnete používat, pros %1 days - + %1 dnů 1 day - + 1 den Today - + Dnes @@ -6479,12 +6479,12 @@ Server odpověděl chybou: %2 Shared with you by %1 - + Nasdílel(a) vám %1 Expires in %1 - + Platnost skončí v %1 @@ -6554,17 +6554,17 @@ Server odpověděl chybou: %2 Open local or group folders - + Otevřít místní nebo skupinové složky More apps - + Více aplikací Open %1 in browser - + Otevřít %1 v prohlížeči @@ -6580,7 +6580,7 @@ Server odpověděl chybou: %2 Start typing to search - + Hledejte psaním diff --git a/translations/client_hu.ts b/translations/client_hu.ts index dff46847ec264..f9cd1dc9aa103 100644 --- a/translations/client_hu.ts +++ b/translations/client_hu.ts @@ -962,7 +962,7 @@ Ez a művelet megszakítja a jelenleg futó szinkronizálást. You need to accept the terms of service - El kell fogadnia a felhasználási feltételeket + El kell fogadnia a szolgáltatási feltételeket @@ -1073,7 +1073,7 @@ Ez a művelet megszakítja a jelenleg futó szinkronizálást. Need the user to accept the terms of service - A felhasználónak el kell fogadnia a felhasználási feltételeket + A felhasználónak el kell fogadnia a szolgáltatási feltételeket @@ -3028,7 +3028,7 @@ Alternatívaként az összes törölt fájlt visszaállíthatja a kiszolgálór Usage Documentation - Felhasználási dokumentáció + Felhasználói dokumentáció @@ -3098,7 +3098,10 @@ Ne feledje, hogy ez csak azt választja ki, hogy a frissítések milyen készlet Downgrading versions is not possible immediately: changing from beta to stable means waiting for the new stable version. list of available update channels to non enterprise users and downgrading warning - + - béta: olyan új funkciókat tartalmazó verziókat tartalmaz, amelyeket még nem teszteltek alaposan. +- napi: a csak tesztelés és fejlesztés céljából naponta létrehozott verziókat tartalmazza. + +A verziók visszaváltása nem lehetséges azonnal: a bétáról stabilra való váltás az új stabil verzióra való várakozást jelenti. @@ -3106,7 +3109,9 @@ Downgrading versions is not possible immediately: changing from beta to stable m Downgrading versions is not possible immediately: changing from stable to enterprise means waiting for the new enterprise version. list of available update channels to enterprise users and downgrading warning - + - vállalati: stabil verziókat tartalmaz az ügyfelek számára. + +A verziók visszaváltása nem lehetséges azonnal: a stabilról vállalatira való váltás az új vállalati verzióra való várakozást jelenti. @@ -3119,7 +3124,9 @@ Downgrading versions is not possible immediately: changing from stable to enterp - stable: contains tested versions considered reliable starts list of available update channels, stable is always available - + A csatorna határozza meg, hogy mely frissítéseket ajánl fel a telepítéshez: +- stabil: megbízhatónak tartott, tesztelt verziókat tartalmaz + @@ -5660,7 +5667,7 @@ A kiszolgáló hibával válaszolt: %2 Could not add or remove user %1 to access folder %2 - + Nem sikerült hozzáadni vagy eltávolítani %1 felhasználót a(a) %2 mappa eléréséhez @@ -5975,7 +5982,7 @@ A kiszolgáló hibával válaszolt: %2 Your account %1 requires you to accept the terms of service of your server. You will be redirected to %2 to acknowledge that you have read it and agrees with it. - + %1 fiókja megköveteli, hogy elfogadja a kiszolgáló szolgáltatási feltételeit. A rendszer átirányítja Önt, hogy elismerje, hogy elolvasta és elfogadja azt: %2 @@ -6057,17 +6064,17 @@ A kiszolgáló hibával válaszolt: %2 macOS VFS for %1: Sync is running. - + %1 macOS VFS: A szinkronizálás fut. macOS VFS for %1: Last sync was successful. - + %1 macOS VFS: A legutolsó szinkronizálás sikeres volt. macOS VFS for %1: A problem was encountered. - + %1 macOS VFS: Probléma merült fel. @@ -6231,12 +6238,12 @@ A kiszolgáló hibával válaszolt: %2 Failed to create debug archive - + Az hibakeresési archívum létrehozása sikertelen Could not create debug archive in selected location! - + Nem sikerült létrehozni a hibakeresési archívumot a kiválasztott helyen! @@ -6311,7 +6318,7 @@ A kiszolgáló hibával válaszolt: %2 Paths beginning with '#' character are not supported in VFS mode. - + A „#” karakterrel kezdődő elérési utak nem támogatottak VFS módban. @@ -6480,7 +6487,7 @@ A kiszolgáló hibával válaszolt: %2 Expires in %1 - + Lejárat: %1 From ceba6509245fc891f1abe92cbe31d1f1a227a827 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Fri, 29 Nov 2024 02:51:57 +0000 Subject: [PATCH 232/244] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: Rainer Walke --- translations/client_hu.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/client_hu.ts b/translations/client_hu.ts index f9cd1dc9aa103..80fe442bcf47d 100644 --- a/translations/client_hu.ts +++ b/translations/client_hu.ts @@ -3628,7 +3628,7 @@ Ne feledje, hogy a naplózás parancssori kapcsolóinak használata felülbírá No limit - Nincs korlát + Nincs korlátozás From 0d8fc4371b01a5d403a6423e67628dd7db0c4718 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Wed, 27 Nov 2024 16:26:00 +0100 Subject: [PATCH 233/244] fix regressions in automated tests for bulk upload Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/libsync/bulkpropagatorjob.cpp | 1 + src/libsync/propagateupload.cpp | 5 ++- test/syncenginetestutils.cpp | 57 +++++++++++++++++++++++++++---- test/syncenginetestutils.h | 23 +++++++++++++ test/testsyncengine.cpp | 12 +++++-- 5 files changed, 87 insertions(+), 11 deletions(-) diff --git a/src/libsync/bulkpropagatorjob.cpp b/src/libsync/bulkpropagatorjob.cpp index 58e1ab82f0c95..2d06298fe1088 100644 --- a/src/libsync/bulkpropagatorjob.cpp +++ b/src/libsync/bulkpropagatorjob.cpp @@ -520,6 +520,7 @@ void BulkPropagatorJob::finalize(const QJsonObject &fullReply) } if (!singleFile._item->hasErrorStatus()) { finalizeOneFile(singleFile); + singleFile._item->_status = OCC::SyncFileItem::Success; } done(singleFile._item, singleFile._item->_status, {}, ErrorCategory::GenericError); diff --git a/src/libsync/propagateupload.cpp b/src/libsync/propagateupload.cpp index d486f861da03f..16e68c96b5ac6 100644 --- a/src/libsync/propagateupload.cpp +++ b/src/libsync/propagateupload.cpp @@ -532,7 +532,10 @@ qint64 UploadDevice::readData(char *data, qint64 maxlen) } auto c = _file.read(data, maxlen); - if (c < 0) { + if (c == 0) { + setErrorString({}); + return c; + } else if (c < 0) { setErrorString(_file.errorString()); return -1; } diff --git a/test/syncenginetestutils.cpp b/test/syncenginetestutils.cpp index 39edfc6537abd..d3f351f1c725d 100644 --- a/test/syncenginetestutils.cpp +++ b/test/syncenginetestutils.cpp @@ -552,12 +552,12 @@ QVector FakePutMultiFileReply::performMultiPart(FileInfo &remoteRoot auto onePartBody = onePart.mid(headerEndPosition + 4, onePart.size() - headerEndPosition - 6); auto onePartHeaders = onePartHeaderPart.split(QStringLiteral("\r\n")); QMap allHeaders; - for(auto oneHeader : onePartHeaders) { + for(const auto &oneHeader : onePartHeaders) { auto headerParts = oneHeader.split(QStringLiteral(": ")); - allHeaders[headerParts.at(0)] = headerParts.at(1); + allHeaders[headerParts.at(0).toLower()] = headerParts.at(1); } - const auto fileName = allHeaders[QStringLiteral("X-File-Path")]; - const auto modtime = allHeaders[QByteArrayLiteral("X-File-Mtime")].toLongLong(); + const auto fileName = allHeaders[QStringLiteral("x-file-path")]; + const auto modtime = allHeaders[QByteArrayLiteral("x-file-mtime")].toLongLong(); Q_ASSERT(!fileName.isEmpty()); Q_ASSERT(modtime > 0); FileInfo *fileInfo = remoteRootFileInfo.find(fileName); @@ -568,7 +568,7 @@ QVector FakePutMultiFileReply::performMultiPart(FileInfo &remoteRoot // Assume that the file is filled with the same character fileInfo = remoteRootFileInfo.create(fileName, onePartBody.size(), onePartBody.at(0).toLatin1()); } - fileInfo->lastModified = OCC::Utility::qDateTimeFromTime_t(request.rawHeader("X-OC-Mtime").toLongLong()); + fileInfo->lastModified = OCC::Utility::qDateTimeFromTime_t(request.rawHeader("x-oc-mtime").toLongLong()); remoteRootFileInfo.find(fileName, /*invalidateEtags=*/true); result.push_back(fileInfo); } @@ -1052,13 +1052,13 @@ QJsonObject FakeQNAM::forEachReplyPart(QIODevice *outgoingData, QMap allHeaders; for(const auto &oneHeader : qAsConst(onePartHeaders)) { auto headerParts = oneHeader.split(QStringLiteral(": ")); - allHeaders[headerParts.at(0)] = headerParts.at(1).toLatin1(); + allHeaders[headerParts.at(0).toLower()] = headerParts.at(1).toLatin1(); } auto reply = replyFunction(allHeaders); if (reply.contains(QStringLiteral("error")) && reply.contains(QStringLiteral("etag"))) { - fullReply.insert(allHeaders[QStringLiteral("X-File-Path")], reply); + fullReply.insert(allHeaders[QStringLiteral("x-file-path")], reply); } } @@ -1413,3 +1413,46 @@ FakeFileLockReply::FakeFileLockReply(FileInfo &remoteRootFileInfo, xml.writeEndElement(); // prop xml.writeEndDocument(); } + +FakeJsonReply::FakeJsonReply(QNetworkAccessManager::Operation op, + const QNetworkRequest &request, + QObject *parent, + int httpReturnCode, + const QJsonDocument &reply) + : FakeReply{parent} + , _body{reply.toJson()} +{ + setRequest(request); + setUrl(request.url()); + setOperation(op); + open(QIODevice::ReadOnly); + setAttribute(QNetworkRequest::HttpStatusCodeAttribute, httpReturnCode); + QMetaObject::invokeMethod(this, &FakeJsonReply::respond, Qt::QueuedConnection); +} + +void FakeJsonReply::respond() +{ + emit metaDataChanged(); + emit readyRead(); + // finishing can come strictly after readyRead was called + QTimer::singleShot(5, this, &FakeJsonReply::slotSetFinished); +} + +void FakeJsonReply::slotSetFinished() +{ + setFinished(true); + emit finished(); +} + +qint64 FakeJsonReply::readData(char *buf, qint64 max) +{ + max = qMin(max, _body.size()); + memcpy(buf, _body.constData(), max); + _body = _body.mid(max); + return max; +} + +qint64 FakeJsonReply::bytesAvailable() const +{ + return _body.size(); +} diff --git a/test/syncenginetestutils.h b/test/syncenginetestutils.h index dca0eb02b92a4..fee77f1494c89 100644 --- a/test/syncenginetestutils.h +++ b/test/syncenginetestutils.h @@ -214,6 +214,29 @@ class FakeReply : public QNetworkReply using QNetworkReply::setRawHeader; }; +class FakeJsonReply : public FakeReply +{ + Q_OBJECT +public: + FakeJsonReply(QNetworkAccessManager::Operation op, + const QNetworkRequest &request, + QObject *parent, + int httpReturnCode, + const QJsonDocument &reply = QJsonDocument()); + + Q_INVOKABLE virtual void respond(); + +public slots: + void slotSetFinished(); + +public: + void abort() override { } + qint64 readData(char *buf, qint64 max) override; + [[nodiscard]] qint64 bytesAvailable() const override; + + QByteArray _body; +}; + class FakePropfindReply : public FakeReply { Q_OBJECT diff --git a/test/testsyncengine.cpp b/test/testsyncengine.cpp index c46a9f7ab0143..c745ddcad4ffe 100644 --- a/test/testsyncengine.cpp +++ b/test/testsyncengine.cpp @@ -984,15 +984,17 @@ private slots: if (op == QNetworkAccessManager::PostOperation) { ++nPOST; if (contentType.startsWith(QStringLiteral("multipart/related; boundary="))) { - auto jsonReplyObject = fakeFolder.forEachReplyPart(outgoingData, contentType, [] (const QMap &allHeaders) -> QJsonObject { + auto hasAnError = false; + auto jsonReplyObject = fakeFolder.forEachReplyPart(outgoingData, contentType, [&hasAnError] (const QMap &allHeaders) -> QJsonObject { auto reply = QJsonObject{}; - const auto fileName = allHeaders[QStringLiteral("X-File-Path")]; + const auto fileName = allHeaders[QStringLiteral("x-file-path")]; if (fileName.endsWith("A/big2") || fileName.endsWith("A/big3") || fileName.endsWith("A/big4") || fileName.endsWith("A/big5") || fileName.endsWith("A/big7") || fileName.endsWith("B/big8")) { + hasAnError = true; reply.insert(QStringLiteral("error"), true); reply.insert(QStringLiteral("etag"), {}); return reply; @@ -1005,7 +1007,11 @@ private slots: if (jsonReplyObject.size()) { auto jsonReply = QJsonDocument{}; jsonReply.setObject(jsonReplyObject); - return new FakeJsonErrorReply{op, request, this, 200, jsonReply}; + if (hasAnError) { + return new FakeJsonErrorReply{op, request, this, 200, jsonReply}; + } else { + return new FakeJsonReply{op, request, this, 200, jsonReply}; + } } return nullptr; } From 61b5a57c77a5207560463b903d4d95d0e12e6c82 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Thu, 28 Nov 2024 11:07:50 +0100 Subject: [PATCH 234/244] fix local discovery test for file names with spaces on windows Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- test/testlocaldiscovery.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test/testlocaldiscovery.cpp b/test/testlocaldiscovery.cpp index bb6bcdc01f374..95c691b75e364 100644 --- a/test/testlocaldiscovery.cpp +++ b/test/testlocaldiscovery.cpp @@ -378,6 +378,7 @@ private slots: const QString fileWithSpaces4("A/ foo"); const QString fileWithSpaces5("A/ bar "); const QString fileWithSpaces6("A/bla "); + const auto extraFileNameWithSpaces = QStringLiteral(" with spaces "); fakeFolder.localModifier().insert(fileWithSpaces1); fakeFolder.localModifier().insert(fileWithSpaces2); @@ -386,7 +387,7 @@ private slots: fakeFolder.localModifier().insert(fileWithSpaces4); fakeFolder.localModifier().insert(fileWithSpaces5); fakeFolder.localModifier().insert(fileWithSpaces6); - fakeFolder.localModifier().mkdir(QStringLiteral(" with spaces ")); + fakeFolder.localModifier().mkdir(extraFileNameWithSpaces); ItemCompletedSpy completeSpy(fakeFolder); completeSpy.clear(); @@ -400,7 +401,7 @@ private slots: QCOMPARE(completeSpy.findItem(fileWithSpaces4)->_status, SyncFileItem::Status::FileNameInvalid); QCOMPARE(completeSpy.findItem(fileWithSpaces5)->_status, SyncFileItem::Status::FileNameInvalid); QCOMPARE(completeSpy.findItem(fileWithSpaces6)->_status, SyncFileItem::Status::FileNameInvalid); - QCOMPARE(completeSpy.findItem(QStringLiteral(" with spaces "))->_status, SyncFileItem::Status::FileNameInvalid); + QCOMPARE(completeSpy.findItem(extraFileNameWithSpaces)->_status, SyncFileItem::Status::FileNameInvalid); #else QCOMPARE(completeSpy.findItem(fileWithSpaces1)->_status, SyncFileItem::Status::Success); QCOMPARE(completeSpy.findItem(fileWithSpaces2)->_status, SyncFileItem::Status::Success); @@ -408,7 +409,7 @@ private slots: QCOMPARE(completeSpy.findItem(fileWithSpaces4)->_status, SyncFileItem::Status::Success); QCOMPARE(completeSpy.findItem(fileWithSpaces5)->_status, SyncFileItem::Status::Success); QCOMPARE(completeSpy.findItem(fileWithSpaces6)->_status, SyncFileItem::Status::Success); - QCOMPARE(completeSpy.findItem(QStringLiteral(" with spaces "))->_status, SyncFileItem::Status::Success); + QCOMPARE(completeSpy.findItem(extraFileNameWithSpaces)->_status, SyncFileItem::Status::Success); #endif fakeFolder.syncEngine().addAcceptedInvalidFileName(fakeFolder.localPath() + fileWithSpaces1); @@ -417,7 +418,7 @@ private slots: fakeFolder.syncEngine().addAcceptedInvalidFileName(fakeFolder.localPath() + fileWithSpaces4); fakeFolder.syncEngine().addAcceptedInvalidFileName(fakeFolder.localPath() + fileWithSpaces5); fakeFolder.syncEngine().addAcceptedInvalidFileName(fakeFolder.localPath() + fileWithSpaces6); - fakeFolder.syncEngine().addAcceptedInvalidFileName(fakeFolder.localPath() + QStringLiteral(" with spaces ")); + fakeFolder.syncEngine().addAcceptedInvalidFileName(fakeFolder.localPath() + extraFileNameWithSpaces); completeSpy.clear(); @@ -431,7 +432,7 @@ private slots: QCOMPARE(completeSpy.findItem(fileWithSpaces4)->_status, SyncFileItem::Status::Success); QCOMPARE(completeSpy.findItem(fileWithSpaces5)->_status, SyncFileItem::Status::Success); QCOMPARE(completeSpy.findItem(fileWithSpaces6)->_status, SyncFileItem::Status::Success); - QCOMPARE(completeSpy.findItem(QStringLiteral(" with spaces "))->_status, SyncFileItem::Status::NormalError); + QCOMPARE(completeSpy.findItem(extraFileNameWithSpaces)->_status, SyncFileItem::Status::Success); #endif } From 34be93e8e416a5707dc94cbd59ae1913d1ba6f3f Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Thu, 28 Nov 2024 14:09:05 +0100 Subject: [PATCH 235/244] fix TestSyncConflictsModel by using locale aware test data should ensure comparisons of locale aware text is compared against locale aware test data will remove portability issues especially on Windows Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- test/testsyncconflictsmodel.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/testsyncconflictsmodel.cpp b/test/testsyncconflictsmodel.cpp index fe7ed88e1bc70..fb7b94ab67ff2 100644 --- a/test/testsyncconflictsmodel.cpp +++ b/test/testsyncconflictsmodel.cpp @@ -24,6 +24,7 @@ #include #include #include +#include namespace { @@ -47,6 +48,7 @@ class TestSyncConflictsModel : public QObject Q_OBJECT private: + QLocale _locale; private slots: void initTestCase() @@ -104,8 +106,8 @@ private slots: QCOMPARE(model.rowCount(), 1); QCOMPARE(model.data(model.index(0), static_cast(SyncConflictsModel::SyncConflictRoles::ExistingFileName)), QString{"a2"}); - QCOMPARE(model.data(model.index(0), static_cast(SyncConflictsModel::SyncConflictRoles::ExistingSize)), QString{"6 bytes"}); - QCOMPARE(model.data(model.index(0), static_cast(SyncConflictsModel::SyncConflictRoles::ConflictSize)), QString{"5 bytes"}); + QCOMPARE(model.data(model.index(0), static_cast(SyncConflictsModel::SyncConflictRoles::ExistingSize)), _locale.formattedDataSize(6)); + QCOMPARE(model.data(model.index(0), static_cast(SyncConflictsModel::SyncConflictRoles::ConflictSize)), _locale.formattedDataSize(5)); QVERIFY(!model.data(model.index(0), static_cast(SyncConflictsModel::SyncConflictRoles::ExistingDate)).toString().isEmpty()); QVERIFY(!model.data(model.index(0), static_cast(SyncConflictsModel::SyncConflictRoles::ConflictDate)).toString().isEmpty()); QCOMPARE(model.data(model.index(0), static_cast(SyncConflictsModel::SyncConflictRoles::ExistingPreviewUrl)), QVariant::fromValue(QUrl{QStringLiteral("image://tray-image-provider/:/fileicon%1A/a2").arg(fakeFolder.localPath())})); From 0ae37d9c659785edf28928dea5365c507e2b4b2e Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Thu, 28 Nov 2024 14:38:21 +0100 Subject: [PATCH 236/244] fir regression with VFS availability test on Windows ensure we report the expected availability erro for non existing files Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/libsync/vfs/cfapi/vfs_cfapi.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libsync/vfs/cfapi/vfs_cfapi.cpp b/src/libsync/vfs/cfapi/vfs_cfapi.cpp index 64779407f2a9f..27f8f945792af 100644 --- a/src/libsync/vfs/cfapi/vfs_cfapi.cpp +++ b/src/libsync/vfs/cfapi/vfs_cfapi.cpp @@ -354,7 +354,7 @@ Vfs::AvailabilityResult VfsCfApi::availability(const QString &folderPath, const break; }; return VfsItemAvailability::Mixed; - } else { + } else if (basePinState) { const auto hydrationAndPinStates = computeRecursiveHydrationAndPinStates(folderPath, basePinState); const auto pin = hydrationAndPinStates.pinState; @@ -382,6 +382,8 @@ Vfs::AvailabilityResult VfsCfApi::availability(const QString &folderPath, const } } return AvailabilityError::NoSuchItem; + } else { + return AvailabilityError::NoSuchItem; } } From f2b5faa785e0f214510afbe1e1e4eb5a68aa554c Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Tue, 26 Nov 2024 18:12:36 +0100 Subject: [PATCH 237/244] when updating a virtual file after lock/unlock: avoid setting modtime will prevent truncating the modification time when changing the lock state of a file could be visible when using an office software to open an office file with automated locking happening after the file gets opened Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/gui/folder.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp index e35be0168f82d..a2547dafafa69 100644 --- a/src/gui/folder.cpp +++ b/src/gui/folder.cpp @@ -666,7 +666,7 @@ void Folder::slotFilesLockReleased(const QSet &files) SyncJournalFileRecord rec; const auto isFileRecordValid = journalDb()->getFileRecord(fileRecordPath, &rec) && rec.isValid(); if (isFileRecordValid) { - [[maybe_unused]] const auto result = _vfs->updateMetadata(path() + rec.path(), rec._modtime, rec._fileSize, rec._fileId); + [[maybe_unused]] const auto result = _vfs->updatePlaceholderMarkInSync(path() + rec.path(), rec._fileId); } const auto canUnlockFile = isFileRecordValid && rec._lockstate._locked @@ -709,7 +709,7 @@ void Folder::slotFilesLockImposed(const QSet &files) const auto fileRecordPath = fileFromLocalPath(file); SyncJournalFileRecord rec; if (journalDb()->getFileRecord(fileRecordPath, &rec) && rec.isValid()) { - [[maybe_unused]] const auto result = _vfs->updateMetadata(path() + rec.path(), rec._modtime, rec._fileSize, rec._fileId); + [[maybe_unused]] const auto result = _vfs->updatePlaceholderMarkInSync(path() + rec.path(), rec._fileId); } } } From f034a3f616a81ae570ba405dba51edd13452fac4 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Sat, 30 Nov 2024 02:55:18 +0000 Subject: [PATCH 238/244] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: Rainer Walke --- translations/client_es_MX.ts | 16 ++++++------- translations/client_ja.ts | 44 ++++++++++++++++++------------------ translations/client_uk.ts | 4 ++-- 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/translations/client_es_MX.ts b/translations/client_es_MX.ts index 402856b2915f8..761c290b18fd8 100644 --- a/translations/client_es_MX.ts +++ b/translations/client_es_MX.ts @@ -171,44 +171,44 @@ Current account - + Cuenta actual Resume sync for all - + Reanudar sincronización para todos Pause sync for all - + Pausar sincronización para todos Add account - + Añadir cuenta Add new account - + Añadir nueva cuenta Settings - + Configuraciones Exit - + Salir Current account avatar - + Avatar de la cuenta actual diff --git a/translations/client_ja.ts b/translations/client_ja.ts index 51e68d57ee41f..9f42efda58226 100644 --- a/translations/client_ja.ts +++ b/translations/client_ja.ts @@ -171,59 +171,59 @@ Current account - + 現在のアカウント Resume sync for all - + 全ての同期を再開 Pause sync for all - + 全ての同期を一時停止 Add account - + アカウントを追加 Add new account - + 新しいアカウントを追加 Settings - + 設定 Exit - + 終了 Current account avatar - + 現在のアバター Current account status is online - + 現在のステータスはオンラインです Current account status is do not disturb - + 現在のステータスは取り込み中です Account switcher and settings menu - + アカウントスイッチャーと設定メニュー @@ -2902,7 +2902,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Chat Notifications - + チャットの通知を表示 @@ -3044,7 +3044,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Show chat notification dialogs. - + チャットの通知ダイアログを表示する @@ -4895,17 +4895,17 @@ This is a new, experimental mode. If you decide to use it, please report any iss %1 days - + %1 日 1 day - + 1日 Today - + 今日 @@ -6480,12 +6480,12 @@ Server replied with error: %2 Shared with you by %1 - + %1と共有中 Expires in %1 - + %1に期限が切れます @@ -6555,17 +6555,17 @@ Server replied with error: %2 Open local or group folders - + ローカルまたはグループフォルダを開く More apps - + その他のアプリ Open %1 in browser - + %1をブラウザーで開く @@ -6581,7 +6581,7 @@ Server replied with error: %2 Start typing to search - + 入力して検索を開始 diff --git a/translations/client_uk.ts b/translations/client_uk.ts index 22f6b5950fbad..2e4f69a77a5e2 100644 --- a/translations/client_uk.ts +++ b/translations/client_uk.ts @@ -2876,7 +2876,7 @@ Alternatively, you can restore all deleted files by downloading them from the se &Launch on System Startup - &Запускати при старті Системи + &Запускати при старті системи @@ -2906,7 +2906,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Show Server &Notifications - Показувати &Сповіщення сервера + Показувати &сповіщення сервера From ff4f04d402d667a9ce419cf7f5d779650db8492d Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Mon, 2 Dec 2024 02:56:08 +0000 Subject: [PATCH 239/244] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: Rainer Walke --- translations/client_it.ts | 44 +++++++++++++++++++-------------------- translations/client_ru.ts | 2 +- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/translations/client_it.ts b/translations/client_it.ts index 1abba67237d21..d4a006aa09479 100644 --- a/translations/client_it.ts +++ b/translations/client_it.ts @@ -171,59 +171,59 @@ Current account - + Account corrente Resume sync for all - + Riprendi la sincronizzazione per tutti Pause sync for all - + Sospendi la sincronizzazione per tutti Add account - + Aggiungi account Add new account - + Aggiungi nuovo account Settings - + Impostazioni Exit - + Uscita Current account avatar - + Avatar dell'account corrente Current account status is online - + Lo stato attuale dell'account è online Current account status is do not disturb - + Lo stato attuale dell'account è "non disturbare" Account switcher and settings menu - + Menu di cambio account e impostazioni @@ -2902,7 +2902,7 @@ In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli da Show Chat Notifications - + Mostra notifiche chat @@ -3044,7 +3044,7 @@ In alternativa, è possibile ripristinare tutti i file eliminati scaricandoli da Show chat notification dialogs. - + Mostra la finestra di dialogo di notifica della chat. @@ -4887,17 +4887,17 @@ This is a new, experimental mode. If you decide to use it, please report any iss %1 days - + %1 giorni 1 day - + 1 giorno Today - + Oggi @@ -6472,12 +6472,12 @@ Il server ha risposto con errore: %2 Shared with you by %1 - + Condiviso con te da %1 Expires in %1 - + Scade tra %1 @@ -6547,17 +6547,17 @@ Il server ha risposto con errore: %2 Open local or group folders - + Aprire cartelle locali o di gruppo More apps - + Altre app Open %1 in browser - + Apri %1 nel browser @@ -6573,7 +6573,7 @@ Il server ha risposto con errore: %2 Start typing to search - + Inizia a digitare per cercare diff --git a/translations/client_ru.ts b/translations/client_ru.ts index 8f7748e2eff81..d583390e4e1f0 100644 --- a/translations/client_ru.ts +++ b/translations/client_ru.ts @@ -6938,7 +6938,7 @@ Server replied with error: %2 Moving - + Перемещение From 05dad2a09ac3b80adac6f1e8fa3b341c7b47b4c1 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Wed, 2 Feb 2022 14:01:37 +0100 Subject: [PATCH 240/244] enable reversed locale layout in QML Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/gui/ResolveConflictsDialog.qml | 3 +++ src/gui/application.cpp | 5 ++++- src/gui/filedetails/FileDetailsWindow.qml | 3 +++ src/gui/macOS/ui/FileProviderEvictionDialog.qml | 3 +++ src/gui/tray/CallNotificationDialog.qml | 3 +++ src/gui/tray/EditFileLocallyLoadingDialog.qml | 3 +++ src/gui/tray/MainWindow.qml | 3 +++ 7 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/gui/ResolveConflictsDialog.qml b/src/gui/ResolveConflictsDialog.qml index a4b8474cd47f1..e0d689b6bdfeb 100644 --- a/src/gui/ResolveConflictsDialog.qml +++ b/src/gui/ResolveConflictsDialog.qml @@ -30,6 +30,9 @@ ApplicationWindow { flags: Qt.Window | Qt.Dialog visible: true + LayoutMirroring.enabled: Application.layoutDirection === Qt.RightToLeft + LayoutMirroring.childrenInherit: true + width: Style.minimumWidthResolveConflictsDialog height: Style.minimumHeightResolveConflictsDialog minimumWidth: Style.minimumWidthResolveConflictsDialog diff --git a/src/gui/application.cpp b/src/gui/application.cpp index 9569c8bc1257c..4b2f600afdaf7 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -101,7 +101,8 @@ namespace { " --isvfsenabled : whether to set a VFS or non-VFS folder (1 for 'yes' or 0 for 'no') when creating an account via command-line.\n" " --remotedirpath : (optional) path to a remote subfolder when creating an account via command-line.\n" " --serverurl : a server URL to use when creating an account via command-line.\n" - " --forcelegacyconfigimport : forcefully import account configurations from legacy clients (if available).\n"; + " --forcelegacyconfigimport : forcefully import account configurations from legacy clients (if available).\n" + " --reverse : use a reverse layout direction.\n"; QString applicationTrPath() { @@ -814,6 +815,8 @@ void Application::parseOptions(const QStringList &options) _backgroundMode = true; } else if (option == QLatin1String("--version") || option == QLatin1String("-v")) { _versionOnly = true; + } else if (option == QLatin1String("--reverse")) { + setLayoutDirection(layoutDirection() == Qt::LeftToRight ? Qt::RightToLeft : Qt::LeftToRight); } else if (option.endsWith(QStringLiteral(APPLICATION_DOTVIRTUALFILE_SUFFIX))) { // virtual file, open it after the Folder were created (if the app is not terminated) QTimer::singleShot(0, this, [this, option] { openVirtualFile(option); }); diff --git a/src/gui/filedetails/FileDetailsWindow.qml b/src/gui/filedetails/FileDetailsWindow.qml index 2353498ad8db0..f7f5eee41e420 100644 --- a/src/gui/filedetails/FileDetailsWindow.qml +++ b/src/gui/filedetails/FileDetailsWindow.qml @@ -26,6 +26,9 @@ ApplicationWindow { property var accountState property string localPath: "" + LayoutMirroring.enabled: Application.layoutDirection === Qt.RightToLeft + LayoutMirroring.childrenInherit: true + width: 400 height: 500 minimumWidth: 300 diff --git a/src/gui/macOS/ui/FileProviderEvictionDialog.qml b/src/gui/macOS/ui/FileProviderEvictionDialog.qml index c62363b659315..5f96557ea910d 100644 --- a/src/gui/macOS/ui/FileProviderEvictionDialog.qml +++ b/src/gui/macOS/ui/FileProviderEvictionDialog.qml @@ -30,6 +30,9 @@ ApplicationWindow { property var materialisedItemsModel: null property string accountUserIdAtHost: "" + LayoutMirroring.enabled: Application.layoutDirection === Qt.RightToLeft + LayoutMirroring.childrenInherit: true + title: qsTr("Evict materialised files") color: palette.base flags: Qt.Dialog | Qt.WindowStaysOnTopHint diff --git a/src/gui/tray/CallNotificationDialog.qml b/src/gui/tray/CallNotificationDialog.qml index 3ebe3bd65c2f6..708882512aa8b 100644 --- a/src/gui/tray/CallNotificationDialog.qml +++ b/src/gui/tray/CallNotificationDialog.qml @@ -52,6 +52,9 @@ ApplicationWindow { Systray.destroyDialog(root); } + LayoutMirroring.enabled: Application.layoutDirection === Qt.RightToLeft + LayoutMirroring.childrenInherit: true + width: root.windowWidth height: rootBackground.height diff --git a/src/gui/tray/EditFileLocallyLoadingDialog.qml b/src/gui/tray/EditFileLocallyLoadingDialog.qml index 47dd20d09aa77..8edbf8d01b635 100644 --- a/src/gui/tray/EditFileLocallyLoadingDialog.qml +++ b/src/gui/tray/EditFileLocallyLoadingDialog.qml @@ -11,6 +11,9 @@ ApplicationWindow { color: palette.base + LayoutMirroring.enabled: Application.layoutDirection === Qt.RightToLeft + LayoutMirroring.childrenInherit: true + width: 320 height: contentLayout.implicitHeight diff --git a/src/gui/tray/MainWindow.qml b/src/gui/tray/MainWindow.qml index 2a81a493e7fa8..c127d6db03a69 100644 --- a/src/gui/tray/MainWindow.qml +++ b/src/gui/tray/MainWindow.qml @@ -31,6 +31,9 @@ import com.nextcloud.desktopclient ApplicationWindow { id: trayWindow + LayoutMirroring.enabled: Application.layoutDirection === Qt.RightToLeft + LayoutMirroring.childrenInherit: true + 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 From ed75220b0a48f93275dd394c969158a699c8488a Mon Sep 17 00:00:00 2001 From: Valdnet <47037905+Valdnet@users.noreply.github.com> Date: Tue, 14 Sep 2021 17:31:19 +0200 Subject: [PATCH 241/244] improve translations of strings with numbers inside tell tr that there is a number inside the translated string such that translators can provide the proper plural forms Changing text strings to correctly import them into Transifex. Issue #3776. Signed-off-by: Valdnet <47037905+Valdnet@users.noreply.github.com> Signed-off-by: Rainer Walke --- src/gui/userstatusselectormodel.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/userstatusselectormodel.cpp b/src/gui/userstatusselectormodel.cpp index 778013eaea863..69f698ade1c34 100644 --- a/src/gui/userstatusselectormodel.cpp +++ b/src/gui/userstatusselectormodel.cpp @@ -413,21 +413,21 @@ QString UserStatusSelectorModel::timeDifferenceToString(int differenceSecs) cons if (minutesLeft == 1) { return tr("1 minute"); } else { - return tr("%1 minutes").arg(minutesLeft); + return tr("%1 minutes", "", minutesLeft).arg(minutesLeft); } } else if (differenceSecs < 60 * 60 * 24) { const auto hoursLeft = std::ceil(differenceSecs / 60.0 / 60.0); if (hoursLeft == 1) { return tr("1 hour"); } else { - return tr("%1 hours").arg(hoursLeft); + return tr("%1 hours", "", hoursLeft).arg(hoursLeft); } } else { const auto daysLeft = std::ceil(differenceSecs / 60.0 / 60.0 / 24.0); if (daysLeft == 1) { return tr("1 day"); } else { - return tr("%1 days").arg(daysLeft); + return tr("%1 days", "", daysLeft).arg(daysLeft); } } } From 6661bad24bef2c22a2e14c87649ec135d33f7f74 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Fri, 3 Jun 2022 12:15:14 +0200 Subject: [PATCH 242/244] convert double numbers to int because we expect them to be real ints we give them to APIs expecting int we compare them to int values Signed-off-by: Matthieu Gallien Signed-off-by: Rainer Walke --- src/gui/userstatusselectormodel.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/userstatusselectormodel.cpp b/src/gui/userstatusselectormodel.cpp index 69f698ade1c34..7bc9172bed4db 100644 --- a/src/gui/userstatusselectormodel.cpp +++ b/src/gui/userstatusselectormodel.cpp @@ -409,21 +409,21 @@ QString UserStatusSelectorModel::timeDifferenceToString(int differenceSecs) cons if (differenceSecs < 60) { return tr("Less than a minute"); } else if (differenceSecs < 60 * 60) { - const auto minutesLeft = std::ceil(differenceSecs / 60.0); + const auto minutesLeft = static_cast(std::ceil(differenceSecs / 60.0)); if (minutesLeft == 1) { return tr("1 minute"); } else { return tr("%1 minutes", "", minutesLeft).arg(minutesLeft); } } else if (differenceSecs < 60 * 60 * 24) { - const auto hoursLeft = std::ceil(differenceSecs / 60.0 / 60.0); + const auto hoursLeft = static_cast(std::ceil(differenceSecs / 60.0 / 60.0)); if (hoursLeft == 1) { return tr("1 hour"); } else { return tr("%1 hours", "", hoursLeft).arg(hoursLeft); } } else { - const auto daysLeft = std::ceil(differenceSecs / 60.0 / 60.0 / 24.0); + const auto daysLeft = static_cast(std::ceil(differenceSecs / 60.0 / 60.0 / 24.0)); if (daysLeft == 1) { return tr("1 day"); } else { From 1b894c313f07c7d86cba389059be6f21b9bee04c Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Wed, 4 Dec 2024 03:27:04 +0000 Subject: [PATCH 243/244] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: Rainer Walke --- translations/client_eu.ts | 36 ++++++++++++++++++------------------ translations/client_gl.ts | 2 +- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/translations/client_eu.ts b/translations/client_eu.ts index 50c108bae310e..91b5926bb7ed9 100644 --- a/translations/client_eu.ts +++ b/translations/client_eu.ts @@ -171,59 +171,59 @@ Current account - + Uneko kontua Resume sync for all - + Berrekin sinkronizazioa guztientzat Pause sync for all - + Pausatu sinkronizazioa guztientzat Add account - + Gehitu kontua Add new account - + Gehitu kontu berria Settings - + Ezarpenak Exit - + Irten Current account avatar - + Uneko kontuaren avatarra Current account status is online - + Uneko kontuaren egoera: aktibo dago Current account status is do not disturb - + Uneko kontuaren egoera: ez molestatu Account switcher and settings menu - + Kontu aldatzailea eta ezarpenen menua @@ -4895,17 +4895,17 @@ Modu hau berria eta experimentala da. Erabiltzea erabakitzen baduzu, agertzen di %1 days - + %1 egun 1 day - + egun 1 Today - + Gaur @@ -6555,17 +6555,17 @@ Zerbitzariak errorearekin erantzun du: %2 Open local or group folders - + Ireki tokiko edo taldeko karpetak More apps - + Aplikazio gehiago Open %1 in browser - + Ireki %1 nabigatzailean @@ -6581,7 +6581,7 @@ Zerbitzariak errorearekin erantzun du: %2 Start typing to search - + Hasi idazten bilatzeko diff --git a/translations/client_gl.ts b/translations/client_gl.ts index fa82251393f33..d3f510db40362 100644 --- a/translations/client_gl.ts +++ b/translations/client_gl.ts @@ -2972,7 +2972,7 @@ Como alternativa, pode restaurar todos os ficheiros eliminados descargándoos do S&how crash reporter - Amosar o informe de &fallos + Amosar o informe de &crebas From 568e782001676653276637a9499fe19044ffe126 Mon Sep 17 00:00:00 2001 From: Rainer Walke Date: Wed, 4 Dec 2024 15:45:36 +0100 Subject: [PATCH 244/244] improve proposeLocalDir feature Signed-off-by: Rainer Walke --- src/gui/owncloudsetupwizard.cpp | 15 +++++++++++++-- src/libsync/configfile.cpp | 13 +++++++++++++ src/libsync/configfile.h | 3 +++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp index 9928dac02b329..a67f78f9324bc 100644 --- a/src/gui/owncloudsetupwizard.cpp +++ b/src/gui/owncloudsetupwizard.cpp @@ -120,9 +120,20 @@ void OwncloudSetupWizard::startWizard() if (!QDir(localFolder).isAbsolute()) { localFolder = QDir::homePath() + QLatin1Char('/') + localFolder; } - - localFolder = "Please select folder"; + _ocWizard->setProperty("localFolder", localFolder); + + { + ConfigFile cfg; + if (!cfg.proposeLocalDir().isEmpty()) { + qCInfo(lcWizard) << "cfg.proposeLocalDir() " << cfg.proposeLocalDir(); + if (cfg.proposeLocalDir() == "false") { + localFolder = "Please select folder"; + } + _ocWizard->setProperty("localFolder", localFolder); + } + } + { ConfigFile cfg; if (!cfg.overrideLocalDir().isEmpty()) { diff --git a/src/libsync/configfile.cpp b/src/libsync/configfile.cpp index 2b1cda432e597..3fd2e7933a989 100644 --- a/src/libsync/configfile.cpp +++ b/src/libsync/configfile.cpp @@ -67,6 +67,7 @@ static constexpr char updateSegmentC[] = "updateSegment"; static constexpr char updateChannelC[] = "updateChannel"; static constexpr char overrideServerUrlC[] = "overrideServerUrl"; static constexpr char overrideLocalDirC[] = "overrideLocalDir"; +static constexpr char proposeLocalDirC[] = "proposeLocalDir"; static constexpr char isVfsEnabledC[] = "isVfsEnabled"; static constexpr char geometryC[] = "geometry"; static constexpr char timeoutC[] = "timeout"; @@ -779,6 +780,18 @@ void ConfigFile::setOverrideLocalDir(const QString &localDir) settings.setValue(QLatin1String(overrideLocalDirC), localDir); } +[[nodiscard]] QString ConfigFile::proposeLocalDir() const +{ + QSettings settings(configFile(), QSettings::IniFormat); + return settings.value(QLatin1String(proposeLocalDirC), {}).toString(); +} + +void ConfigFile::setProposeLocalDir(const QString &localDir) +{ + QSettings settings(configFile(), QSettings::IniFormat); + settings.setValue(QLatin1String(proposeLocalDirC), localDir); +} + bool ConfigFile::isVfsEnabled() const { QSettings settings(configFile(), QSettings::IniFormat); diff --git a/src/libsync/configfile.h b/src/libsync/configfile.h index 844036336a6f9..45915f91ba426 100644 --- a/src/libsync/configfile.h +++ b/src/libsync/configfile.h @@ -212,6 +212,9 @@ class OWNCLOUDSYNC_EXPORT ConfigFile [[nodiscard]] QString overrideLocalDir() const; void setOverrideLocalDir(const QString &localDir); + [[nodiscard]] QString proposeLocalDir() const; + void setProposeLocalDir(const QString &localDir); + [[nodiscard]] bool isVfsEnabled() const; void setVfsEnabled(bool enabled);

X{~-CU-#@&% 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 Date: Wed, 13 Nov 2024 14:06:51 +0800 Subject: [PATCH 022/244] Add note on notify_push to macosvfs doc Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- doc/macosvfs.rst | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/doc/macosvfs.rst b/doc/macosvfs.rst index 47512c6215ed3..bb994f074d8c6 100644 --- a/doc/macosvfs.rst +++ b/doc/macosvfs.rst @@ -33,10 +33,17 @@ Supported features - Remote file locking compatibility - “Edit locally” support - File sharing with other users -- Automatic synchronisation of remote changes **NOTE: we recommend the - use of ``notify_push`` on the server!** +- Automatic synchronisation of remote changes - More! +.. note:: + To improve remote change detection, we recommend enabling the + ``notify_push`` app on your Nextcloud server. This app will notify + the desktop client of changes on the server as soon as they happen, + reducing the time it takes for the client to detect changes. This + will also eliminate the need for the desktop client to continuously + poll the server for changes. + Installation and initial setup ============================== From 6ca82b253484a3053edc43afa2a966cb179f70c3 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 13 Nov 2024 14:07:11 +0800 Subject: [PATCH 023/244] Add section on configuration for macosvfs docs Signed-off-by: Claudio Cambra Signed-off-by: Rainer Walke --- doc/images/macosvfs-settings.png | Bin 0 -> 440571 bytes doc/macosvfs.rst | 16 ++++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 doc/images/macosvfs-settings.png diff --git a/doc/images/macosvfs-settings.png b/doc/images/macosvfs-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..9c8ad8d81bb8af8ec17b8c8ffd044a854c956ae8 GIT binary patch literal 440571 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