From 01c2ffe2ae394c4282475eceaf3febdc4d76c731 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Tue, 10 Oct 2017 13:24:41 +0200 Subject: [PATCH 01/45] PropagateDownload: Read Content-md5 header #6088 --- src/libsync/propagatedownload.cpp | 3 ++ src/libsync/propagatorjobs.h | 1 + test/syncenginetestutils.h | 3 ++ test/testsyncengine.cpp | 54 +++++++++++++++++++++++++++++++ 4 files changed, 61 insertions(+) diff --git a/src/libsync/propagatedownload.cpp b/src/libsync/propagatedownload.cpp index 11207d2ad..72b311a3f 100644 --- a/src/libsync/propagatedownload.cpp +++ b/src/libsync/propagatedownload.cpp @@ -625,6 +625,9 @@ void PropagateDownloadFile::slotGetFinished() connect(validator, &ValidateChecksumHeader::validationFailed, this, &PropagateDownloadFile::slotChecksumFail); auto checksumHeader = job->reply()->rawHeader(checkSumHeaderC); + auto contentMd5Header = job->reply()->rawHeader(contentMd5HeaderC); + if (checksumHeader.isEmpty() && !contentMd5Header.isEmpty()) + checksumHeader = "MD5:" + contentMd5Header; validator->start(_tmpFile.fileName(), checksumHeader); } diff --git a/src/libsync/propagatorjobs.h b/src/libsync/propagatorjobs.h index 424685ab4..010e03fec 100644 --- a/src/libsync/propagatorjobs.h +++ b/src/libsync/propagatorjobs.h @@ -25,6 +25,7 @@ namespace OCC { * It's here for being shared between Upload- and Download Job */ static const char checkSumHeaderC[] = "OC-Checksum"; +static const char contentMd5HeaderC[] = "Content-MD5"; /** * @brief Declaration of the other propagation jobs diff --git a/test/syncenginetestutils.h b/test/syncenginetestutils.h index e061de222..5d4d467f3 100644 --- a/test/syncenginetestutils.h +++ b/test/syncenginetestutils.h @@ -597,6 +597,9 @@ public: size -= len; return len; } + + // useful to be public for testing + using QNetworkReply::setRawHeader; }; diff --git a/test/testsyncengine.cpp b/test/testsyncengine.cpp index 9c1b7a2c0..b925c83cc 100644 --- a/test/testsyncengine.cpp +++ b/test/testsyncengine.cpp @@ -613,6 +613,60 @@ private slots: QCOMPARE(nDELETE, 5); QCOMPARE(fakeFolder.currentLocalState(), remoteInfo); } + + // Checks whether downloads with bad checksums are accepted + void testChecksumValidation() + { + FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() }; + QObject parent; + + QByteArray checksumValue; + QByteArray contentMd5Value; + + fakeFolder.setServerOverride([&](QNetworkAccessManager::Operation op, const QNetworkRequest &request) -> QNetworkReply * { + if (op == QNetworkAccessManager::GetOperation) { + auto reply = new FakeGetReply(fakeFolder.remoteModifier(), op, request, &parent); + if (!checksumValue.isNull()) + reply->setRawHeader("OC-Checksum", checksumValue); + if (!contentMd5Value.isNull()) + reply->setRawHeader("Content-MD5", contentMd5Value); + return reply; + } + return nullptr; + }); + + // Basic case + fakeFolder.remoteModifier().create("A/a3", 16, 'A'); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + + // Bad OC-Checksum + checksumValue = "SHA1:bad"; + fakeFolder.remoteModifier().create("A/a4", 16, 'A'); + QVERIFY(!fakeFolder.syncOnce()); + + // Good OC-Checksum + checksumValue = "SHA1:19b1928d58a2030d08023f3d7054516dbc186f20"; // printf 'A%.0s' {1..16} | sha1sum - + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + checksumValue = QByteArray(); + + // Bad Content-MD5 + contentMd5Value = "bad"; + fakeFolder.remoteModifier().create("A/a5", 16, 'A'); + QVERIFY(!fakeFolder.syncOnce()); + + // Good Content-MD5 + contentMd5Value = "d8a73157ce10cd94a91c2079fc9a92c8"; // printf 'A%.0s' {1..16} | md5sum - + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + + // OC-Checksum has preference + checksumValue = "garbage"; + // contentMd5Value is still good + fakeFolder.remoteModifier().create("A/a6", 16, 'A'); + QVERIFY(!fakeFolder.syncOnce()); + } }; QTEST_GUILESS_MAIN(TestSyncEngine) From 096cd348f0d1616576bc84cc3b0e282dd26b671b Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Wed, 11 Oct 2017 16:01:46 +0200 Subject: [PATCH 02/45] Doc: Update FAQ entry on deeply nested directories #1067 --- doc/faq.rst | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/doc/faq.rst b/doc/faq.rst index 7b9c85344..a07fb79e2 100644 --- a/doc/faq.rst +++ b/doc/faq.rst @@ -11,13 +11,15 @@ continually changes all files, unless you remove from the windows registry. See http://petersteier.wordpress.com/2011/10/22/windows-indexer-changes-modification-dates-of-eml-files/ for more information. -Syncing breaks when attempting to sync deeper than 50 sub-directories, but the sync client does not report an error (RC=0) --------------------------------------------------------------------------------------------------------------------------- +Syncing stops when attempting to sync deeper than 100 sub-directories. +---------------------------------------------------------------------- -The sync client has been intentionally limited to sync no deeper than -fifty sub-directories, to help prevent memory problems. -Unfortunately, it, *currently*, does not report an error when this occurs. -However, a UI notification is planned for a future release of ownCloud. +The sync client has been intentionally limited to sync no deeper than 100 +sub-directories. The hard limit exists to guard against bugs with cycles +like symbolic link loops. +When a deeply nested directory is excluded from synchronization it will be +listed with other ignored files and directories in the "Not synced" tab of +the "Activity" pane. I want to move my local sync folder ----------------------------------- From 3f7b3ca962c0732a2d35f7d2f55195ff01ac9976 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Fri, 13 Oct 2017 13:08:20 +0200 Subject: [PATCH 03/45] Checksums: Improve logging and add global disable #5017 --- src/common/checksums.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/common/checksums.cpp b/src/common/checksums.cpp index 245bcaa37..278277c1e 100644 --- a/src/common/checksums.cpp +++ b/src/common/checksums.cpp @@ -133,6 +133,12 @@ QByteArray contentChecksumType() return type; } +static bool checksumComputationEnabled() +{ + static bool enabled = qgetenv("OWNCLOUD_DISABLE_CHECKSUM_COMPUTATIONS").isEmpty(); + return enabled; +} + ComputeChecksum::ComputeChecksum(QObject *parent) : QObject(parent) { @@ -150,6 +156,8 @@ QByteArray ComputeChecksum::checksumType() const void ComputeChecksum::start(const QString &filePath) { + qCInfo(lcChecksums) << "Computing" << checksumType() << "checksum of" << filePath << "in a thread"; + // Calculate the checksum in a different thread first. connect(&_watcher, &QFutureWatcherBase::finished, this, &ComputeChecksum::slotCalculationDone, @@ -159,6 +167,11 @@ void ComputeChecksum::start(const QString &filePath) QByteArray ComputeChecksum::computeNow(const QString &filePath, const QByteArray &checksumType) { + if (!checksumComputationEnabled()) { + qCWarning(lcChecksums) << "Checksum computation disabled by environment variable"; + return QByteArray(); + } + if (checksumType == checkSumMD5C) { return FileSystem::calcMd5(filePath); } else if (checksumType == checkSumSHA1C) { @@ -237,6 +250,7 @@ QByteArray CSyncChecksumHook::hook(const QByteArray &path, const QByteArray &oth if (type.isEmpty()) return NULL; + qCInfo(lcChecksums) << "Computing" << type << "checksum of" << path << "in the csync hook"; QByteArray checksum = ComputeChecksum::computeNow(QString::fromUtf8(path), type); if (checksum.isNull()) { qCWarning(lcChecksums) << "Failed to compute checksum" << type << "for" << path; From f598ac89ac4ded937c6e43497a9e65a9405b9bcb Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Wed, 11 Oct 2017 15:22:51 +0200 Subject: [PATCH 04/45] HttpCreds: Fix retry after wrong password #5989 This is an ugly solution. --- src/gui/creds/httpcredentialsgui.cpp | 9 +++++---- src/gui/creds/httpcredentialsgui.h | 2 +- src/libsync/networkjobs.cpp | 6 ++++++ 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/gui/creds/httpcredentialsgui.cpp b/src/gui/creds/httpcredentialsgui.cpp index 366cbe161..bfa87f097 100644 --- a/src/gui/creds/httpcredentialsgui.cpp +++ b/src/gui/creds/httpcredentialsgui.cpp @@ -32,10 +32,11 @@ namespace OCC { void HttpCredentialsGui::askFromUser() { - // Unfortunately there's a bug that doesn't allow us to send the "is this - // OAuth2 or Basic auth?" GET request directly. Scheduling it for the event - // loop works though. See #5989. - QMetaObject::invokeMethod(this, "askFromUserAsync", Qt::QueuedConnection); + // This function can be called from AccountState::slotInvalidCredentials, + // which (indirectly, through HttpCredentials::invalidateToken) schedules + // a cache wipe of the qnam. We can only execute a network job again once + // the cache has been cleared, otherwise we'd interfere with the job. + QTimer::singleShot(100, this, &HttpCredentialsGui::askFromUserAsync); } void HttpCredentialsGui::askFromUserAsync() diff --git a/src/gui/creds/httpcredentialsgui.h b/src/gui/creds/httpcredentialsgui.h index 94ebda152..671960c88 100644 --- a/src/gui/creds/httpcredentialsgui.h +++ b/src/gui/creds/httpcredentialsgui.h @@ -60,12 +60,12 @@ public: private slots: void asyncAuthResult(OAuth::Result, const QString &user, const QString &accessToken, const QString &refreshToken); void showDialog(); + void askFromUserAsync(); signals: void authorisationLinkChanged(); private: - Q_INVOKABLE void askFromUserAsync(); QScopedPointer> _asyncAuth; }; diff --git a/src/libsync/networkjobs.cpp b/src/libsync/networkjobs.cpp index 3af0f6c21..19041f104 100644 --- a/src/libsync/networkjobs.cpp +++ b/src/libsync/networkjobs.cpp @@ -881,8 +881,14 @@ bool DetermineAuthTypeJob::finished() void DetermineAuthTypeJob::send(const QUrl &url) { QNetworkRequest req; + // Prevent HttpCredentialsAccessManager from setting an Authorization header. req.setAttribute(HttpCredentials::DontAddCredentialsAttribute, true); + // Don't reuse previous auth credentials + req.setAttribute(QNetworkRequest::AuthenticationReuseAttribute, QNetworkRequest::Manual); + // Don't send cookies, we can't determine the auth type if we're logged in + req.setAttribute(QNetworkRequest::CookieLoadControlAttribute, QNetworkRequest::Manual); + sendRequest("GET", url, req); } From e10775d34fe4ed2082e9b229bdfea7b9bb686d91 Mon Sep 17 00:00:00 2001 From: Piotr Mrowczynski Date: Fri, 11 Aug 2017 00:03:03 +0200 Subject: [PATCH 05/45] Fix paused sync file move issue #5949 Dont abort final chunk immedietally Use sync and async aborts --- src/libsync/owncloudpropagator.cpp | 13 ++++- src/libsync/owncloudpropagator.h | 82 ++++++++++++++++++++++----- src/libsync/propagatedownload.cpp | 6 +- src/libsync/propagatedownload.h | 2 +- src/libsync/propagateremotedelete.cpp | 6 +- src/libsync/propagateremotedelete.h | 2 +- src/libsync/propagateremotemkdir.cpp | 6 +- src/libsync/propagateremotemkdir.h | 2 +- src/libsync/propagateremotemove.cpp | 6 +- src/libsync/propagateremotemove.h | 2 +- src/libsync/propagateupload.cpp | 37 +++++++++++- src/libsync/propagateupload.h | 22 ++++++- src/libsync/propagateuploadng.cpp | 22 +++++++ src/libsync/propagateuploadv1.cpp | 25 ++++++++ 14 files changed, 206 insertions(+), 27 deletions(-) diff --git a/src/libsync/owncloudpropagator.cpp b/src/libsync/owncloudpropagator.cpp index 281f34548..ed473be21 100644 --- a/src/libsync/owncloudpropagator.cpp +++ b/src/libsync/owncloudpropagator.cpp @@ -742,6 +742,16 @@ PropagatorJob::JobParallelism PropagatorCompositeJob::parallelism() return FullParallelism; } +void PropagatorCompositeJob::slotSubJobAbortFinished() +{ + // Count that job has been finished + _abortsCount--; + + // Emit abort if last job has been aborted + if (_abortsCount == 0) { + emit abortFinished(); + } +} bool PropagatorCompositeJob::scheduleSelfOrChild() { @@ -900,7 +910,8 @@ void PropagateDirectory::slotFirstJobFinished(SyncFileItem::Status status) if (status != SyncFileItem::Success && status != SyncFileItem::Restoration) { if (_state != Finished) { - abort(); + // Synchronously abort + abort(AbortType::Synchronous); _state = Finished; emit finished(status); } diff --git a/src/libsync/owncloudpropagator.h b/src/libsync/owncloudpropagator.h index 605614902..402226bdc 100644 --- a/src/libsync/owncloudpropagator.h +++ b/src/libsync/owncloudpropagator.h @@ -65,6 +65,11 @@ class PropagatorJob : public QObject public: explicit PropagatorJob(OwncloudPropagator *propagator); + enum AbortType { + Synchronous, + Asynchronous + }; + enum JobState { NotYetStarted, Running, @@ -98,7 +103,14 @@ public: virtual qint64 committedDiskSpace() const { return 0; } public slots: - virtual void abort() {} + /* + * Asynchronous abort requires emit of abortFinished() signal, + * while synchronous is expected to abort immedietaly. + */ + virtual void abort(PropagatorJob::AbortType abortType) { + if (abortType == AbortType::Asynchronous) + emit abortFinished(); + } /** Starts this job, or a new subjob * returns true if a job was started. @@ -110,11 +122,14 @@ signals: */ void finished(SyncFileItem::Status); + /** + * Emitted when the abort is fully finished + */ + void abortFinished(SyncFileItem::Status status = SyncFileItem::NormalError); protected: OwncloudPropagator *propagator() const; }; - /* * Abstract class to propagate a single item */ @@ -185,10 +200,11 @@ public: SyncFileItemVector _tasksToDo; QVector _runningJobs; SyncFileItem::Status _hasError; // NoStatus, or NormalError / SoftError if there was an error + quint64 _abortsCount; explicit PropagatorCompositeJob(OwncloudPropagator *propagator) : PropagatorJob(propagator) - , _hasError(SyncFileItem::NoStatus) + , _hasError(SyncFileItem::NoStatus), _abortsCount(0) { } @@ -209,15 +225,32 @@ public: virtual bool scheduleSelfOrChild() Q_DECL_OVERRIDE; virtual JobParallelism parallelism() Q_DECL_OVERRIDE; - virtual void abort() Q_DECL_OVERRIDE + + /* + * Abort synchronously or asynchronously - some jobs + * require to be finished without immediete abort (abort on job might + * cause conflicts/duplicated files - owncloud/client/issues/5949) + */ + virtual void abort(PropagatorJob::AbortType abortType) Q_DECL_OVERRIDE { - foreach (PropagatorJob *j, _runningJobs) - j->abort(); + if (!_runningJobs.empty()) { + _abortsCount = _runningJobs.size(); + foreach (PropagatorJob *j, _runningJobs) { + if (abortType == AbortType::Asynchronous) { + connect(j, &PropagatorJob::abortFinished, + this, &PropagatorCompositeJob::slotSubJobAbortFinished); + } + j->abort(abortType); + } + } else if (abortType == AbortType::Asynchronous){ + emit abortFinished(); + } } qint64 committedDiskSpace() const Q_DECL_OVERRIDE; private slots: + void slotSubJobAbortFinished(); bool possiblyRunNextJob(PropagatorJob *next) { if (next->_state == NotYetStarted) { @@ -258,11 +291,17 @@ public: virtual bool scheduleSelfOrChild() Q_DECL_OVERRIDE; virtual JobParallelism parallelism() Q_DECL_OVERRIDE; - virtual void abort() Q_DECL_OVERRIDE + virtual void abort(PropagatorJob::AbortType abortType) Q_DECL_OVERRIDE { if (_firstJob) - _firstJob->abort(); - _subJobs.abort(); + // Force first job to abort synchronously + // even if caller allows async abort (asyncAbort) + _firstJob->abort(AbortType::Synchronous); + + if (abortType == AbortType::Asynchronous){ + connect(&_subJobs, &PropagatorCompositeJob::abortFinished, this, &PropagateDirectory::abortFinished); + } + _subJobs.abort(abortType); } void increaseAffectedCount() @@ -280,6 +319,7 @@ private slots: void slotFirstJobFinished(SyncFileItem::Status status); void slotSubJobsFinished(SyncFileItem::Status status); + }; @@ -324,6 +364,7 @@ public: , _chunkSize(10 * 1000 * 1000) // 10 MB, overridden in setSyncOptions , _account(account) { + qRegisterMetaType("PropagatorJob::AbortType"); } ~OwncloudPropagator(); @@ -406,11 +447,19 @@ public: { _abortRequested.fetchAndStoreOrdered(true); if (_rootJob) { - // We're possibly already in an item's finished stack - QMetaObject::invokeMethod(_rootJob.data(), "abort", Qt::QueuedConnection); + // Connect to abortFinished which signals that abort has been asynchronously finished + connect(_rootJob.data(), &PropagateDirectory::abortFinished, this, &OwncloudPropagator::emitFinished); + + // Use Queued Connection because we're possibly already in an item's finished stack + QMetaObject::invokeMethod(_rootJob.data(), "abort", Qt::QueuedConnection, + Q_ARG(PropagatorJob::AbortType, PropagatorJob::AbortType::Asynchronous)); + + // Give asynchronous abort 5000 msec to finish on its own + QTimer::singleShot(5000, this, SLOT(abortTimeout())); + } else { + // No root job, call emitFinished + emitFinished(SyncFileItem::NormalError); } - // abort() of all jobs will likely have already resulted in finished being emitted, but just in case. - QMetaObject::invokeMethod(this, "emitFinished", Qt::QueuedConnection, Q_ARG(SyncFileItem::Status, SyncFileItem::NormalError)); } // timeout in seconds @@ -431,6 +480,13 @@ public: private slots: + void abortTimeout() + { + // Abort synchronously and finish + _rootJob.data()->abort(PropagatorJob::AbortType::Synchronous); + emitFinished(SyncFileItem::NormalError); + } + /** Emit the finished signal and make sure it is only emitted once */ void emitFinished(SyncFileItem::Status status) { diff --git a/src/libsync/propagatedownload.cpp b/src/libsync/propagatedownload.cpp index 72b311a3f..9be1b8245 100644 --- a/src/libsync/propagatedownload.cpp +++ b/src/libsync/propagatedownload.cpp @@ -900,9 +900,13 @@ void PropagateDownloadFile::slotDownloadProgress(qint64 received, qint64) } -void PropagateDownloadFile::abort() +void PropagateDownloadFile::abort(PropagatorJob::AbortType abortType) { if (_job && _job->reply()) _job->reply()->abort(); + + if (abortType == AbortType::Asynchronous) { + emit abortFinished(); + } } } diff --git a/src/libsync/propagatedownload.h b/src/libsync/propagatedownload.h index 26361541c..80998f67f 100644 --- a/src/libsync/propagatedownload.h +++ b/src/libsync/propagatedownload.h @@ -185,7 +185,7 @@ private slots: /// Called when it's time to update the db metadata void updateMetadata(bool isConflict); - void abort() Q_DECL_OVERRIDE; + void abort(PropagatorJob::AbortType abortType) Q_DECL_OVERRIDE; void slotDownloadProgress(qint64, qint64); void slotChecksumFail(const QString &errMsg); diff --git a/src/libsync/propagateremotedelete.cpp b/src/libsync/propagateremotedelete.cpp index 2e7d03b22..f67b2b3af 100644 --- a/src/libsync/propagateremotedelete.cpp +++ b/src/libsync/propagateremotedelete.cpp @@ -75,10 +75,14 @@ void PropagateRemoteDelete::start() _job->start(); } -void PropagateRemoteDelete::abort() +void PropagateRemoteDelete::abort(PropagatorJob::AbortType abortType) { if (_job && _job->reply()) _job->reply()->abort(); + + if (abortType == AbortType::Asynchronous) { + emit abortFinished(); + } } void PropagateRemoteDelete::slotDeleteJobFinished() diff --git a/src/libsync/propagateremotedelete.h b/src/libsync/propagateremotedelete.h index 6246f7cbf..4d07843e4 100644 --- a/src/libsync/propagateremotedelete.h +++ b/src/libsync/propagateremotedelete.h @@ -52,7 +52,7 @@ public: { } void start() Q_DECL_OVERRIDE; - void abort() Q_DECL_OVERRIDE; + void abort(PropagatorJob::AbortType abortType) Q_DECL_OVERRIDE; bool isLikelyFinishedQuickly() Q_DECL_OVERRIDE { return !_item->isDirectory(); } diff --git a/src/libsync/propagateremotemkdir.cpp b/src/libsync/propagateremotemkdir.cpp index fb0869a2b..98a72d48a 100644 --- a/src/libsync/propagateremotemkdir.cpp +++ b/src/libsync/propagateremotemkdir.cpp @@ -60,10 +60,14 @@ void PropagateRemoteMkdir::slotStartMkcolJob() _job->start(); } -void PropagateRemoteMkdir::abort() +void PropagateRemoteMkdir::abort(PropagatorJob::AbortType abortType) { if (_job && _job->reply()) _job->reply()->abort(); + + if (abortType == AbortType::Asynchronous) { + emit abortFinished(); + } } void PropagateRemoteMkdir::setDeleteExisting(bool enabled) diff --git a/src/libsync/propagateremotemkdir.h b/src/libsync/propagateremotemkdir.h index a89fbe99e..8a08efabd 100644 --- a/src/libsync/propagateremotemkdir.h +++ b/src/libsync/propagateremotemkdir.h @@ -35,7 +35,7 @@ public: { } void start() Q_DECL_OVERRIDE; - void abort() Q_DECL_OVERRIDE; + void abort(PropagatorJob::AbortType abortType) Q_DECL_OVERRIDE; // Creating a directory should be fast. bool isLikelyFinishedQuickly() Q_DECL_OVERRIDE { return true; } diff --git a/src/libsync/propagateremotemove.cpp b/src/libsync/propagateremotemove.cpp index 37ca9fecd..35a2486cf 100644 --- a/src/libsync/propagateremotemove.cpp +++ b/src/libsync/propagateremotemove.cpp @@ -117,10 +117,14 @@ void PropagateRemoteMove::start() _job->start(); } -void PropagateRemoteMove::abort() +void PropagateRemoteMove::abort(PropagatorJob::AbortType abortType) { if (_job && _job->reply()) _job->reply()->abort(); + + if (abortType == AbortType::Asynchronous) { + emit abortFinished(); + } } void PropagateRemoteMove::slotMoveJobFinished() diff --git a/src/libsync/propagateremotemove.h b/src/libsync/propagateremotemove.h index bf6661a65..1a1b8ce92 100644 --- a/src/libsync/propagateremotemove.h +++ b/src/libsync/propagateremotemove.h @@ -56,7 +56,7 @@ public: { } void start() Q_DECL_OVERRIDE; - void abort() Q_DECL_OVERRIDE; + void abort(PropagatorJob::AbortType abortType) Q_DECL_OVERRIDE; JobParallelism parallelism() Q_DECL_OVERRIDE { return _item->isDirectory() ? WaitForFinished : FullParallelism; } /** diff --git a/src/libsync/propagateupload.cpp b/src/libsync/propagateupload.cpp index eca042678..6de6316af 100644 --- a/src/libsync/propagateupload.cpp +++ b/src/libsync/propagateupload.cpp @@ -558,20 +558,24 @@ void PropagateUploadFileCommon::slotJobDestroyed(QObject *job) _jobs.erase(std::remove(_jobs.begin(), _jobs.end(), job), _jobs.end()); } -void PropagateUploadFileCommon::abort() +void PropagateUploadFileCommon::abort(PropagatorJob::AbortType abortType) { foreach (auto *job, _jobs) { if (job->reply()) { job->reply()->abort(); } } + + if (abortType == AbortType::Asynchronous) { + emit abortFinished(); + } } // This function is used whenever there is an error occuring and jobs might be in progress void PropagateUploadFileCommon::abortWithError(SyncFileItem::Status status, const QString &error) { _finished = true; - abort(); + abort(AbortType::Synchronous); done(status, error); } @@ -625,4 +629,33 @@ void PropagateUploadFileCommon::finalize() done(SyncFileItem::Success); } + +void PropagateUploadFileCommon::prepareAbort(PropagatorJob::AbortType abortType) { + if (!_jobs.empty()) { + // Count number of jobs to be aborted asynchronously + _abortCount = _jobs.size(); + + foreach (AbstractNetworkJob *job, _jobs) { + // Check if async abort is requested + if (job->reply() && abortType == AbortType::Asynchronous) { + // Connect to finished signal of job reply + // to asynchonously finish the abort + connect(job->reply(), &QNetworkReply::finished, this, &PropagateUploadFileCommon::slotReplyAbortFinished); + } + } + } else if (abortType == AbortType::Asynchronous) { + // Empty job list, emit abortFinished immedietaly + emit abortFinished(); + } +} + +void PropagateUploadFileCommon::slotReplyAbortFinished() +{ + _abortCount--; + + if (_abortCount == 0) { + emit abortFinished(); + } +} + } diff --git a/src/libsync/propagateupload.h b/src/libsync/propagateupload.h index 016824464..361820530 100644 --- a/src/libsync/propagateupload.h +++ b/src/libsync/propagateupload.h @@ -129,6 +129,11 @@ public: return true; } + QIODevice *device() + { + return _device; + } + QString errorString() { return _errorString.isEmpty() ? AbstractNetworkJob::errorString() : _errorString; @@ -205,6 +210,7 @@ protected: QVector _jobs; /// network jobs that are currently in transit bool _finished BITFIELD(1); /// Tells that all the jobs have been finished bool _deleteExisting BITFIELD(1); + quint64 _abortCount; /// Keep track of number of aborted items // measure the performance of checksum calc and upload #ifdef WITH_TESTING @@ -218,6 +224,7 @@ public: : PropagateItemJob(propagator, item) , _finished(false) , _deleteExisting(false) + , _abortCount(0) { } @@ -248,13 +255,20 @@ public: void abortWithError(SyncFileItem::Status status, const QString &error); public slots: - void abort() Q_DECL_OVERRIDE; + void abort(PropagatorJob::AbortType abortType) Q_DECL_OVERRIDE; void slotJobDestroyed(QObject *job); private slots: + void slotReplyAbortFinished(); void slotPollFinished(); protected: + /** + * Prepares the abort e.g. connects proper signals and slots + * to the subjobs to abort asynchronously + */ + void prepareAbort(PropagatorJob::AbortType abortType); + /** * Checks whether the current error is one that should reset the whole * transfer if it happens too often. If so: Bump UploadInfo::errorCount @@ -303,7 +317,6 @@ private: return propagator()->syncOptions()._initialChunkSize; } - public: PropagateUploadFileV1(OwncloudPropagator *propagator, const SyncFileItemPtr &item) : PropagateUploadFileCommon(propagator, item) @@ -311,7 +324,8 @@ public: } void doStartUpload() Q_DECL_OVERRIDE; - +public slots: + void abort(PropagatorJob::AbortType abortType) Q_DECL_OVERRIDE; private slots: void startNextChunk(); void slotPutFinished(); @@ -361,6 +375,8 @@ public: private: void startNewUpload(); void startNextChunk(); +public slots: + void abort(AbortType abortType) Q_DECL_OVERRIDE; private slots: void slotPropfindFinished(); void slotPropfindFinishedWithError(); diff --git a/src/libsync/propagateuploadng.cpp b/src/libsync/propagateuploadng.cpp index 5026f28a3..f8873654f 100644 --- a/src/libsync/propagateuploadng.cpp +++ b/src/libsync/propagateuploadng.cpp @@ -491,4 +491,26 @@ void PropagateUploadFileNG::slotUploadProgress(qint64 sent, qint64 total) } propagator()->reportProgress(*_item, _sent + sent - total); } + +void PropagateUploadFileNG::abort(PropagatorJob::AbortType abortType) +{ + // Prepare abort + prepareAbort(abortType); + + // Abort all jobs (if there are any left), except final PUT + foreach (AbstractNetworkJob *job, _jobs) { + if (job->reply()) { + if (abortType == AbortType::Asynchronous && qobject_cast(job)){ + // If it is async abort, dont abort + // MoveJob since it might result in conflict, + // only PUT and MKDIR jobs can be safely aborted. + continue; + } + + // Abort the job + job->reply()->abort(); + } + } +} + } diff --git a/src/libsync/propagateuploadv1.cpp b/src/libsync/propagateuploadv1.cpp index c8b0e421d..ce63db5a5 100644 --- a/src/libsync/propagateuploadv1.cpp +++ b/src/libsync/propagateuploadv1.cpp @@ -350,4 +350,29 @@ void PropagateUploadFileV1::slotUploadProgress(qint64 sent, qint64 total) } propagator()->reportProgress(*_item, amount); } + +void PropagateUploadFileV1::abort(PropagatorJob::AbortType abortType) +{ + // Prepare abort + prepareAbort(abortType); + + // Abort all jobs (if there are any left), except final PUT + foreach (AbstractNetworkJob *job, _jobs) { + if (job->reply()) { + // If asynchronous abort allowed, + // dont abort final PUT which uploaded its data, + // since this might result in conflicts + if (PUTFileJob *putJob = qobject_cast(job)){ + if (abortType == AbortType::Asynchronous && (((_currentChunk + _startChunk) % _chunkCount) == 0) + && putJob->device()->atEnd()) { + continue; + } + } + + // Abort the job + job->reply()->abort(); + } + } +} + } From 111bb485ecfce64244282b91a207dab07dc96b63 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Mon, 25 Sep 2017 11:38:42 +0200 Subject: [PATCH 06/45] UploadNG: Avoid div-by-zero for super fast uploads --- src/libsync/propagateuploadng.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libsync/propagateuploadng.cpp b/src/libsync/propagateuploadng.cpp index f8873654f..fa16a4abe 100644 --- a/src/libsync/propagateuploadng.cpp +++ b/src/libsync/propagateuploadng.cpp @@ -365,7 +365,7 @@ void PropagateUploadFileNG::slotPutFinished() // target duration for each chunk upload. double targetDuration = propagator()->syncOptions()._targetChunkUploadDuration; if (targetDuration > 0) { - double uploadTime = job->msSinceStart(); + double uploadTime = job->msSinceStart() + 1; // add one to avoid div-by-zero auto predictedGoodSize = static_cast( _currentChunkSize / uploadTime * targetDuration); From e6b971b316f3016a7bcf77ae1fc4b0b4c6d9cab5 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Mon, 25 Sep 2017 11:39:21 +0200 Subject: [PATCH 07/45] TestUtils: Invalidate etags on PUT or chunk-MOVE --- test/syncenginetestutils.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/syncenginetestutils.h b/test/syncenginetestutils.h index 5d4d467f3..95591d82e 100644 --- a/test/syncenginetestutils.h +++ b/test/syncenginetestutils.h @@ -433,6 +433,8 @@ public: abort(); return; } + fileInfo->lastModified = OCC::Utility::qDateTimeFromTime_t(request.rawHeader("X-OC-Mtime").toLongLong()); + remoteRootFileInfo.find(fileName, /*invalidate_etags=*/true); QMetaObject::invokeMethod(this, "respond", Qt::QueuedConnection); } @@ -665,6 +667,8 @@ public: abort(); return; } + fileInfo->lastModified = OCC::Utility::qDateTimeFromTime_t(request.rawHeader("X-OC-Mtime").toLongLong()); + remoteRootFileInfo.find(fileName, /*invalidate_etags=*/true); QMetaObject::invokeMethod(this, "respond", Qt::QueuedConnection); } From 2ac7e0200a9c7885ce7279dec03657cd827b979b Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Mon, 25 Sep 2017 11:41:23 +0200 Subject: [PATCH 08/45] Test case for #5949 --- test/syncenginetestutils.h | 29 +++++++-- test/testchunkingng.cpp | 130 +++++++++++++++++++++++++++++++++++++ 2 files changed, 155 insertions(+), 4 deletions(-) diff --git a/test/syncenginetestutils.h b/test/syncenginetestutils.h index 95591d82e..376b47496 100644 --- a/test/syncenginetestutils.h +++ b/test/syncenginetestutils.h @@ -611,8 +611,10 @@ class FakeChunkMoveReply : public QNetworkReply FileInfo *fileInfo; public: FakeChunkMoveReply(FileInfo &uploadsFileInfo, FileInfo &remoteRootFileInfo, - QNetworkAccessManager::Operation op, const QNetworkRequest &request, - QObject *parent) : QNetworkReply{parent} { + QNetworkAccessManager::Operation op, const QNetworkRequest &request, + quint64 delayMs, QObject *parent) + : QNetworkReply{ parent } + { setRequest(request); setUrl(request.url()); setOperation(op); @@ -669,7 +671,8 @@ public: } fileInfo->lastModified = OCC::Utility::qDateTimeFromTime_t(request.rawHeader("X-OC-Mtime").toLongLong()); remoteRootFileInfo.find(fileName, /*invalidate_etags=*/true); - QMetaObject::invokeMethod(this, "respond", Qt::QueuedConnection); + + QTimer::singleShot(delayMs, this, &FakeChunkMoveReply::respond); } Q_INVOKABLE void respond() { @@ -720,6 +723,24 @@ public: int _httpErrorCode; }; +// A reply that never responds +class FakeHangingReply : public QNetworkReply +{ + Q_OBJECT +public: + FakeHangingReply(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent) + : QNetworkReply(parent) + { + setRequest(request); + setUrl(request.url()); + setOperation(op); + open(QIODevice::ReadOnly); + } + + void abort() override {} + qint64 readData(char *, qint64) override { return 0; } +}; + class FakeQNAM : public QNetworkAccessManager { public: @@ -772,7 +793,7 @@ protected: else if (verb == QLatin1String("MOVE") && !isUpload) return new FakeMoveReply{info, op, request, this}; else if (verb == QLatin1String("MOVE") && isUpload) - return new FakeChunkMoveReply{info, _remoteRootFileInfo, op, request, this}; + return new FakeChunkMoveReply{ info, _remoteRootFileInfo, op, request, 0, this }; else { qDebug() << verb << outgoingData; Q_UNREACHABLE(); diff --git a/test/testchunkingng.cpp b/test/testchunkingng.cpp index ed30f8954..16c6856ac 100644 --- a/test/testchunkingng.cpp +++ b/test/testchunkingng.cpp @@ -85,6 +85,136 @@ private slots: QCOMPARE(fakeFolder.uploadState().children.first().name, chunkingId); } + // Check what happens when we abort during the final MOVE and the + // the final MOVE takes longer than the abort-delay + void testLateAbortHard() + { + FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() }; + fakeFolder.syncEngine().account()->setCapabilities({ { "dav", QVariantMap{ { "chunking", "1.0" } } }, { "checksums", QVariantMap{ { "supportedTypes", QStringList() << "SHA1" } } } }); + const int size = 150 * 1000 * 1000; + + // Make the MOVE never reply, but trigger a client-abort and apply the change remotely + auto parent = new QObject; + QByteArray moveChecksumHeader; + int nGET = 0; + int responseDelay = 10000; // bigger than abort-wait timeout + fakeFolder.setServerOverride([&](QNetworkAccessManager::Operation op, const QNetworkRequest &request) -> QNetworkReply * { + if (request.attribute(QNetworkRequest::CustomVerbAttribute) == "MOVE") { + QTimer::singleShot(50, parent, [&]() { fakeFolder.syncEngine().abort(); }); + moveChecksumHeader = request.rawHeader("OC-Checksum"); + return new FakeChunkMoveReply(fakeFolder.uploadState(), fakeFolder.remoteModifier(), op, request, responseDelay, parent); + } else if (op == QNetworkAccessManager::GetOperation) { + nGET++; + } + return nullptr; + }); + + + // Test 1: NEW file aborted + fakeFolder.localModifier().insert("A/a0", size); + QVERIFY(!fakeFolder.syncOnce()); // error: abort! + + // Now the next sync gets a NEW/NEW conflict and since there's no checksum + // it just becomes a UPDATE_METADATA + auto checkEtagUpdated = [&](SyncFileItemVector &items) { + QCOMPARE(items.size(), 1); + QCOMPARE(items[0]->_file, QLatin1String("A")); + SyncJournalFileRecord record; + QVERIFY(fakeFolder.syncJournal().getFileRecord(QByteArray("A/a0"), &record)); + QCOMPARE(record._etag, fakeFolder.remoteModifier().find("A/a0")->etag.toUtf8()); + }; + auto connection = connect(&fakeFolder.syncEngine(), &SyncEngine::aboutToPropagate, checkEtagUpdated); + QVERIFY(fakeFolder.syncOnce()); + disconnect(connection); + QCOMPARE(nGET, 0); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + + + // Test 2: modified file upload aborted + fakeFolder.localModifier().appendByte("A/a0"); + QVERIFY(!fakeFolder.syncOnce()); // error: abort! + + // An EVAL/EVAL conflict is also UPDATE_METADATA when there's no checksums + connection = connect(&fakeFolder.syncEngine(), &SyncEngine::aboutToPropagate, checkEtagUpdated); + QVERIFY(fakeFolder.syncOnce()); + disconnect(connection); + QCOMPARE(nGET, 0); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + + + // Test 3: modified file upload aborted, with good checksums + fakeFolder.localModifier().appendByte("A/a0"); + QVERIFY(!fakeFolder.syncOnce()); // error: abort! + + // Set the remote checksum -- the test setup doesn't do it automatically + QVERIFY(!moveChecksumHeader.isEmpty()); + fakeFolder.remoteModifier().find("A/a0")->checksums = moveChecksumHeader; + + // This time it's a real conflict, we have a remote checksum! + connection = connect(&fakeFolder.syncEngine(), &SyncEngine::aboutToPropagate, [&](SyncFileItemVector &items) { + SyncFileItemPtr a0; + for (auto &item : items) { + if (item->_file == "A/a0") + a0 = item; + } + + QVERIFY(a0); + QCOMPARE(a0->_instruction, CSYNC_INSTRUCTION_CONFLICT); + }); + QVERIFY(fakeFolder.syncOnce()); + disconnect(connection); + QCOMPARE(nGET, 0); // no new download, just a metadata update! + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + + + // Test 4: New file, that gets deleted locally before the next sync + fakeFolder.localModifier().insert("A/a3", size); + QVERIFY(!fakeFolder.syncOnce()); // error: abort! + fakeFolder.localModifier().remove("A/a3"); + + // bug: in this case we must expect a re-download of A/A3 + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(nGET, 1); + QVERIFY(fakeFolder.currentLocalState().find("A/a3")); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + } + + // Check what happens when we abort during the final MOVE and the + // the final MOVE is short enough for the abort-delay to help + void testLateAbortRecoverable() + { + FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() }; + fakeFolder.syncEngine().account()->setCapabilities({ { "dav", QVariantMap{ { "chunking", "1.0" } } }, { "checksums", QVariantMap{ { "supportedTypes", QStringList() << "SHA1" } } } }); + const int size = 150 * 1000 * 1000; + + // Make the MOVE never reply, but trigger a client-abort and apply the change remotely + auto parent = new QObject; + QByteArray moveChecksumHeader; + int nGET = 0; + int responseDelay = 2000; // smaller than abort-wait timeout + fakeFolder.setServerOverride([&](QNetworkAccessManager::Operation op, const QNetworkRequest &request) -> QNetworkReply * { + if (request.attribute(QNetworkRequest::CustomVerbAttribute) == "MOVE") { + QTimer::singleShot(50, parent, [&]() { fakeFolder.syncEngine().abort(); }); + moveChecksumHeader = request.rawHeader("OC-Checksum"); + return new FakeChunkMoveReply(fakeFolder.uploadState(), fakeFolder.remoteModifier(), op, request, responseDelay, parent); + } else if (op == QNetworkAccessManager::GetOperation) { + nGET++; + } + return nullptr; + }); + + + // Test 1: NEW file aborted + fakeFolder.localModifier().insert("A/a0", size); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + + // Test 2: modified file upload aborted + fakeFolder.localModifier().appendByte("A/a0"); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + } + // We modify the file locally after it has been partially uploaded void testRemoveStale1() { From e2711224edd4fd4dcb4ffe303e26fdbbef90a643 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Thu, 28 Sep 2017 09:52:21 +0200 Subject: [PATCH 09/45] Propagator: Avoid duplicate async abort --- src/libsync/owncloudpropagator.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libsync/owncloudpropagator.h b/src/libsync/owncloudpropagator.h index 402226bdc..9655e1ac4 100644 --- a/src/libsync/owncloudpropagator.h +++ b/src/libsync/owncloudpropagator.h @@ -445,7 +445,9 @@ public: void abort() { - _abortRequested.fetchAndStoreOrdered(true); + bool alreadyAborting = _abortRequested.fetchAndStoreOrdered(true); + if (alreadyAborting) + return; if (_rootJob) { // Connect to abortFinished which signals that abort has been asynchronously finished connect(_rootJob.data(), &PropagateDirectory::abortFinished, this, &OwncloudPropagator::emitFinished); From b2a8ffc577a093cec3eb447834e5fe987d646a5f Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Thu, 28 Sep 2017 10:03:04 +0200 Subject: [PATCH 10/45] Abort: Fix crash with early aborts _chunkCount could be 0, leading to a floating point exception I also added initializers for several uninitialized integers in the upload jobs. --- src/libsync/propagateupload.h | 19 +++++++++---------- src/libsync/propagateuploadv1.cpp | 6 ++++-- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/libsync/propagateupload.h b/src/libsync/propagateupload.h index 361820530..c156190b5 100644 --- a/src/libsync/propagateupload.h +++ b/src/libsync/propagateupload.h @@ -301,15 +301,15 @@ private: * In the non-resuming case it is 0. * If we are resuming, this is the first chunk we need to send */ - int _startChunk; + int _startChunk = 0; /** * This is the next chunk that we need to send. Starting from 0 even if _startChunk != 0 * (In other words, _startChunk + _currentChunk is really the number of the chunk we need to send next) * (In other words, _currentChunk is the number of the chunk that we already sent or started sending) */ - int _currentChunk; - int _chunkCount; /// Total number of chunks for this file - int _transferId; /// transfer id (part of the url) + int _currentChunk = 0; + int _chunkCount = 0; /// Total number of chunks for this file + int _transferId = 0; /// transfer id (part of the url) quint64 chunkSize() const { // Old chunking does not use dynamic chunking algorithm, and does not adjusts the chunk size respectively, @@ -342,11 +342,11 @@ class PropagateUploadFileNG : public PropagateUploadFileCommon { Q_OBJECT private: - quint64 _sent; /// amount of data (bytes) that was already sent - uint _transferId; /// transfer id (part of the url) - int _currentChunk; /// Id of the next chunk that will be sent - quint64 _currentChunkSize; /// current chunk size - bool _removeJobError; /// If not null, there was an error removing the job + quint64 _sent = 0; /// amount of data (bytes) that was already sent + uint _transferId = 0; /// transfer id (part of the url) + int _currentChunk = 0; /// Id of the next chunk that will be sent + quint64 _currentChunkSize = 0; /// current chunk size + bool _removeJobError = false; /// If not null, there was an error removing the job // Map chunk number with its size from the PROPFIND on resume. // (Only used from slotPropfindIterate/slotPropfindFinished because the LsColJob use signals to report data.) @@ -366,7 +366,6 @@ private: public: PropagateUploadFileNG(OwncloudPropagator *propagator, const SyncFileItemPtr &item) : PropagateUploadFileCommon(propagator, item) - , _currentChunkSize(0) { } diff --git a/src/libsync/propagateuploadv1.cpp b/src/libsync/propagateuploadv1.cpp index ce63db5a5..8ebdd3786 100644 --- a/src/libsync/propagateuploadv1.cpp +++ b/src/libsync/propagateuploadv1.cpp @@ -363,8 +363,10 @@ void PropagateUploadFileV1::abort(PropagatorJob::AbortType abortType) // dont abort final PUT which uploaded its data, // since this might result in conflicts if (PUTFileJob *putJob = qobject_cast(job)){ - if (abortType == AbortType::Asynchronous && (((_currentChunk + _startChunk) % _chunkCount) == 0) - && putJob->device()->atEnd()) { + if (abortType == AbortType::Asynchronous + && _chunkCount > 0 + && (((_currentChunk + _startChunk) % _chunkCount) == 0) + && putJob->device()->atEnd()) { continue; } } From 17b1c83ae55504b1b0c91626a420ad855704d1db Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Thu, 12 Oct 2017 14:38:13 +0200 Subject: [PATCH 11/45] Activity: Allow sorting of issues and protocol #6086 The issues tab uses custom ordering where overall and summary sync issues are displayed first. This ordering is preserved by creating special sorting logic for the "time" column. It needed special handling anyway, since sorting by time-string would have yielded incorrect results. --- src/gui/issueswidget.cpp | 24 ++++++++++++++++++++---- src/gui/issueswidget.ui | 3 +++ src/gui/protocolwidget.cpp | 30 +++++++++++++++++++++++++++--- src/gui/protocolwidget.h | 15 +++++++++++++++ src/gui/protocolwidget.ui | 3 +++ 5 files changed, 68 insertions(+), 7 deletions(-) diff --git a/src/gui/issueswidget.cpp b/src/gui/issueswidget.cpp index edc984a7d..c132ff925 100644 --- a/src/gui/issueswidget.cpp +++ b/src/gui/issueswidget.cpp @@ -107,6 +107,16 @@ void IssuesWidget::showEvent(QShowEvent *ev) { ConfigFile cfg; cfg.restoreGeometryHeader(_ui->_treeWidget->header()); + + // Sorting by section was newly enabled. But if we restore the header + // from a state where sorting was disabled, both of these flags will be + // false and sorting will be impossible! + _ui->_treeWidget->header()->setSectionsClickable(true); + _ui->_treeWidget->header()->setSortIndicatorShown(true); + + // Switch back to "first important, then by time" ordering + _ui->_treeWidget->sortByColumn(0, Qt::DescendingOrder); + QWidget::showEvent(ev); } @@ -119,6 +129,8 @@ void IssuesWidget::hideEvent(QHideEvent *ev) void IssuesWidget::cleanItems(const QString &folder) { + _ui->_treeWidget->setSortingEnabled(false); + // The issue list is a state, clear it and let the next sync fill it // with ignored files and propagation errors. int itemCnt = _ui->_treeWidget->topLevelItemCount(); @@ -129,6 +141,9 @@ void IssuesWidget::cleanItems(const QString &folder) delete item; } } + + _ui->_treeWidget->setSortingEnabled(true); + // update the tabtext emit(issueCountUpdated(_ui->_treeWidget->topLevelItemCount())); } @@ -240,7 +255,7 @@ bool IssuesWidget::shouldBeVisible(QTreeWidgetItem *item, AccountState *filterAc const QString &filterFolderAlias) const { bool visible = true; - auto status = item->data(0, Qt::UserRole); + auto status = item->data(3, Qt::UserRole); visible &= (_ui->showIgnores->isChecked() || status != SyncFileItem::FileIgnored); visible &= (_ui->showWarnings->isChecked() || (status != SyncFileItem::SoftError @@ -368,13 +383,14 @@ void IssuesWidget::addError(const QString &folderAlias, const QString &message, QIcon icon = Theme::instance()->syncStateIcon(SyncResult::Error); - QTreeWidgetItem *twitem = new QTreeWidgetItem(columns); + QTreeWidgetItem *twitem = new SortedTreeWidgetItem(columns); twitem->setData(0, Qt::SizeHintRole, QSize(0, ActivityItemDelegate::rowHeight())); + twitem->setData(0, Qt::UserRole, timestamp); twitem->setIcon(0, icon); twitem->setToolTip(0, longTimeStr); - twitem->setToolTip(3, message); - twitem->setData(0, Qt::UserRole, SyncFileItem::NormalError); twitem->setData(2, Qt::UserRole, folderAlias); + twitem->setToolTip(3, message); + twitem->setData(3, Qt::UserRole, SyncFileItem::NormalError); addItem(twitem); addErrorWidget(twitem, message, category); diff --git a/src/gui/issueswidget.ui b/src/gui/issueswidget.ui index 27bfe1118..2d1161e78 100644 --- a/src/gui/issueswidget.ui +++ b/src/gui/issueswidget.ui @@ -99,6 +99,9 @@ false + + true + 4 diff --git a/src/gui/protocolwidget.cpp b/src/gui/protocolwidget.cpp index f3a52dff6..e27152563 100644 --- a/src/gui/protocolwidget.cpp +++ b/src/gui/protocolwidget.cpp @@ -32,6 +32,19 @@ namespace OCC { +bool SortedTreeWidgetItem::operator<(const QTreeWidgetItem &other) const +{ + int column = treeWidget()->sortColumn(); + if (column != 0) { + return QTreeWidgetItem::operator<(other); + } + + // Items with empty "File" column are larger than others, + // otherwise sort by time (this uses lexicographic ordering) + return std::forward_as_tuple(text(1).isEmpty(), data(0, Qt::UserRole).toDateTime()) + < std::forward_as_tuple(other.text(1).isEmpty(), other.data(0, Qt::UserRole).toDateTime()); +} + ProtocolWidget::ProtocolWidget(QWidget *parent) : QWidget(parent) , _ui(new Ui::ProtocolWidget) @@ -86,6 +99,16 @@ void ProtocolWidget::showEvent(QShowEvent *ev) { ConfigFile cfg; cfg.restoreGeometryHeader(_ui->_treeWidget->header()); + + // Sorting by section was newly enabled. But if we restore the header + // from a state where sorting was disabled, both of these flags will be + // false and sorting will be impossible! + _ui->_treeWidget->header()->setSectionsClickable(true); + _ui->_treeWidget->header()->setSortIndicatorShown(true); + + // Switch back to "by time" ordering + _ui->_treeWidget->sortByColumn(0, Qt::DescendingOrder); + QWidget::showEvent(ev); } @@ -158,14 +181,15 @@ QTreeWidgetItem *ProtocolWidget::createCompletedTreewidgetItem(const QString &fo columns << Utility::octetsToString(item._size); } - QTreeWidgetItem *twitem = new QTreeWidgetItem(columns); + QTreeWidgetItem *twitem = new SortedTreeWidgetItem(columns); twitem->setData(0, Qt::SizeHintRole, QSize(0, ActivityItemDelegate::rowHeight())); + twitem->setData(0, Qt::UserRole, timestamp); twitem->setIcon(0, icon); twitem->setToolTip(0, longTimeStr); twitem->setToolTip(1, item._file); - twitem->setToolTip(3, message); - twitem->setData(0, Qt::UserRole, item._status); twitem->setData(2, Qt::UserRole, folder); + twitem->setToolTip(3, message); + twitem->setData(3, Qt::UserRole, item._status); return twitem; } diff --git a/src/gui/protocolwidget.h b/src/gui/protocolwidget.h index 7e3a154a5..77bb641b4 100644 --- a/src/gui/protocolwidget.h +++ b/src/gui/protocolwidget.h @@ -34,6 +34,21 @@ namespace Ui { } class Application; +/** + * A QTreeWidgetItem with special sorting. + * + * It allows items for global entries to be moved to the top if the + * sorting section is the "Time" column. + */ +class SortedTreeWidgetItem : public QTreeWidgetItem +{ +public: + using QTreeWidgetItem::QTreeWidgetItem; + +private: + bool operator<(const QTreeWidgetItem &other) const override; +}; + /** * @brief The ProtocolWidget class * @ingroup gui diff --git a/src/gui/protocolwidget.ui b/src/gui/protocolwidget.ui index 143c2d627..7cec20f9d 100644 --- a/src/gui/protocolwidget.ui +++ b/src/gui/protocolwidget.ui @@ -35,6 +35,9 @@ true + + true + 4 From 408cf11b2b3b5f0ac5bbbcb5b158a35535e49814 Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Tue, 17 Oct 2017 12:40:55 +0200 Subject: [PATCH 12/45] [tx-robot] updated from transifex --- mirall.desktop.in | 3 ++ translations/client_ca.ts | 62 ++++++++++++++++++------------------ translations/client_cs.ts | 62 ++++++++++++++++++------------------ translations/client_de.ts | 62 ++++++++++++++++++------------------ translations/client_el.ts | 62 ++++++++++++++++++------------------ translations/client_en.ts | 62 ++++++++++++++++++------------------ translations/client_es.ts | 62 ++++++++++++++++++------------------ translations/client_es_AR.ts | 62 ++++++++++++++++++------------------ translations/client_et.ts | 62 ++++++++++++++++++------------------ translations/client_eu.ts | 62 ++++++++++++++++++------------------ translations/client_fa.ts | 62 ++++++++++++++++++------------------ translations/client_fi.ts | 62 ++++++++++++++++++------------------ translations/client_fr.ts | 62 ++++++++++++++++++------------------ translations/client_gl.ts | 62 ++++++++++++++++++------------------ translations/client_hu.ts | 62 ++++++++++++++++++------------------ translations/client_it.ts | 62 ++++++++++++++++++------------------ translations/client_ja.ts | 62 ++++++++++++++++++------------------ translations/client_nb_NO.ts | 62 ++++++++++++++++++------------------ translations/client_nl.ts | 62 ++++++++++++++++++------------------ translations/client_pl.ts | 62 ++++++++++++++++++------------------ translations/client_pt.ts | 62 ++++++++++++++++++------------------ translations/client_pt_BR.ts | 62 ++++++++++++++++++------------------ translations/client_ru.ts | 62 ++++++++++++++++++------------------ translations/client_sk.ts | 62 ++++++++++++++++++------------------ translations/client_sl.ts | 62 ++++++++++++++++++------------------ translations/client_sr.ts | 62 ++++++++++++++++++------------------ translations/client_sv.ts | 62 ++++++++++++++++++------------------ translations/client_th.ts | 62 ++++++++++++++++++------------------ translations/client_tr.ts | 62 ++++++++++++++++++------------------ translations/client_uk.ts | 62 ++++++++++++++++++------------------ translations/client_zh_CN.ts | 62 ++++++++++++++++++------------------ translations/client_zh_TW.ts | 62 ++++++++++++++++++------------------ 32 files changed, 964 insertions(+), 961 deletions(-) diff --git a/mirall.desktop.in b/mirall.desktop.in index 710763723..e94639886 100644 --- a/mirall.desktop.in +++ b/mirall.desktop.in @@ -219,6 +219,9 @@ X-GNOME-Autostart-Delay=3 # Translations +# Translations + + # Translations Comment[oc]=@APPLICATION_NAME@ sincronizacion del client GenericName[oc]=Dorsièr de Sincronizacion diff --git a/translations/client_ca.ts b/translations/client_ca.ts index 1cc21f0d6..6f0b30e61 100644 --- a/translations/client_ca.ts +++ b/translations/client_ca.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database Error en escriure les metadades a la base de dades @@ -1286,22 +1286,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> Introduïu la contrassenya de %1:<br><br>Usuari: %2<br>Compte: %3<br> - + Reading from keychain failed with error: '%1' La lectura de la cadena de claus ha fallat amb l'error: '%1' - + Enter Password Escriviu contrasenya - + <a href="%1">Click here</a> to request an app password from the web interface. @@ -1423,12 +1423,12 @@ Els elements que poden ser eliminats s'eliminaran si impedeixen que una car - + Copy the issues list to the clipboard. - + Copy Copiar @@ -2098,7 +2098,7 @@ No és aconsellada usar-la. OCC::PropagateDirectory - + Error writing metadata to the database Error en escriure les metadades a la base de dades @@ -2136,17 +2136,17 @@ No és aconsellada usar-la. - + File %1 cannot be saved because of a local file name clash! - + File has changed since discovery El fitxer ha canviat des de que es va descobrir - + Error writing metadata to the database Error en escriure les metadades a la base de dades @@ -2222,12 +2222,12 @@ No és aconsellada usar-la. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. El fitxer s'ha eliminat d'una compartició només de lectura. S'ha restaurat. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". @@ -2235,12 +2235,12 @@ No és aconsellada usar-la. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - + Error writing metadata to the database Error en escriure les metadades a la base de dades @@ -2258,18 +2258,18 @@ No és aconsellada usar-la. Aquesta carpeta no es pot reanomenar. Reanomeneu-la de nou Shared. - + The file was renamed but is part of a read only share. The original file was restored. El fitxer s'ha reanomenat però és part d'una compartició només de lectura. El fixter original s'ha restaurat. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - - + + Error writing metadata to the database Error en escriure les metadades a la base de dades @@ -2303,7 +2303,7 @@ No és aconsellada usar-la. - + Error writing metadata to the database Error en escriure les metadades a la base de dades @@ -2377,42 +2377,42 @@ No és aconsellada usar-la. TextLabel - + Time Hora - + File Fitxer - + Folder Carpeta - + Action Acció - + Size Mida - + Local sync protocol Protocol de sincronització local - + Copy Copia - + Copy the activity list to the clipboard. Copia la llista d'activitats al porta-retalls. @@ -3429,17 +3429,17 @@ No és aconsellada usar-la. OCC::ValidateChecksumHeader - + The checksum header is malformed. - + The checksum header contained an unknown checksum type '%1' - + The downloaded file does not match the checksum, it will be resumed. El fitxer descarregat no concorda amb la suma de verificació. Es reintentarà. diff --git a/translations/client_cs.ts b/translations/client_cs.ts index 6c366b938..209ef1113 100644 --- a/translations/client_cs.ts +++ b/translations/client_cs.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database Chyba zápisu metadat do databáze @@ -1289,22 +1289,22 @@ Pokračováním v synchronizaci způsobí přepsání všech vašich souborů st OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> Vložte prosím %1 heslo:<br><br>Uživatel: %2<br>Účet: %3<br> - + Reading from keychain failed with error: '%1' Čtení z klíčenky selhalo s chybou: '%1' - + Enter Password Zadejte heslo - + <a href="%1">Click here</a> to request an app password from the web interface. <a href="%1">Klikněte sem</a> pro vyžádání hesla aplikace z webového rozhraní. @@ -1426,12 +1426,12 @@ Položky u kterých je povoleno smazání budou vymazány, pokud by bránily ods Ukázat ignorované soubory - + Copy the issues list to the clipboard. - + Copy Kopie @@ -2101,7 +2101,7 @@ Nedoporučuje se jí používat. OCC::PropagateDirectory - + Error writing metadata to the database Chyba zápisu metadat do databáze @@ -2139,17 +2139,17 @@ Nedoporučuje se jí používat. Stažený soubor je prázdný, přestože server oznámil, že měl být %1. - + File %1 cannot be saved because of a local file name clash! Soubor %1 nemohl být uložen z důvodu kolize názvu se souborem v místním systému! - + File has changed since discovery Soubor se mezitím změnil - + Error writing metadata to the database Chyba zápisu metadat do databáze @@ -2225,12 +2225,12 @@ Nedoporučuje se jí používat. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. Soubor byl odebrán ze sdílení pouze pro čtení. Soubor byl obnoven. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". Server vrátil neplatný HTTP kód. Očekáván 204, ale obdržen "%1 %2". @@ -2238,12 +2238,12 @@ Nedoporučuje se jí používat. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Server vrátil neplatný HTTP kód. Očekáván 201, ale obdržen "%1 %2". - + Error writing metadata to the database Chyba zápisu metadat do databáze @@ -2261,18 +2261,18 @@ Nedoporučuje se jí používat. Tento adresář nemůže být přejmenován. Přejmenujte jej prosím zpět na Shared. - + The file was renamed but is part of a read only share. The original file was restored. Soubor byl přejmenován, ale je součástí sdílení pouze pro čtení. Původní soubor byl obnoven. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Server vrátil neplatný HTTP kód. Očekáván 201, ale obdržen "%1 %2". - - + + Error writing metadata to the database Chyba zápisu metadat do databáze @@ -2306,7 +2306,7 @@ Nedoporučuje se jí používat. - + Error writing metadata to the database Chyba zápisu metadat do databáze @@ -2380,42 +2380,42 @@ Nedoporučuje se jí používat. Textový popisek - + Time Čas - + File Soubor - + Folder Adresář - + Action Akce - + Size Velikost - + Local sync protocol Místní protokol synchronizace - + Copy Kopie - + Copy the activity list to the clipboard. Kopírovat záznam aktivity do schránky. @@ -3432,17 +3432,17 @@ Nedoporučuje se jí používat. OCC::ValidateChecksumHeader - + The checksum header is malformed. Hlavička kontrolního součtu je poškozena. - + The checksum header contained an unknown checksum type '%1' Hlavička kontrolního součtu obsahovala neznámý typ součtu '%1' - + The downloaded file does not match the checksum, it will be resumed. Stažený soubor neodpovídá kontrolnímu součtu, bude znovu stažen. diff --git a/translations/client_de.ts b/translations/client_de.ts index 2136331a9..45f29d4a6 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database Fehler beim Schreiben der Metadaten in die Datenbank @@ -1291,22 +1291,22 @@ Wenn diese Synchronisation fortgesetzt wird, werden Dateien eventuell von älter OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> Bitte Kennwort für %1 eingeben:<br><br>Benutzer: %2<br>Konto: %3<br> - + Reading from keychain failed with error: '%1' Schlüsselbund fehlgeschlagen mit Fehler: '%1' - + Enter Password Passwort eingeben - + <a href="%1">Click here</a> to request an app password from the web interface. <a href="%1">Klicken Sie hier</a> um ein App-Passwort von dem Web-Interface zu erhalten. @@ -1428,12 +1428,12 @@ Objekte, bei denen Löschen erlaubt ist, werden gelöscht, wenn sie die Löschun Ignorierte Dateien anzeigen - + Copy the issues list to the clipboard. Liste der Fehler in die Zwischenablage kopieren. - + Copy Kopieren @@ -2102,7 +2102,7 @@ Es ist nicht ratsam, diese zu benutzen. OCC::PropagateDirectory - + Error writing metadata to the database Fehler beim Schreiben der Metadaten in die Datenbank @@ -2140,17 +2140,17 @@ Es ist nicht ratsam, diese zu benutzen. Die heruntergeladene Datei ist leer, obwohl der Server %1 als Größe übermittelt hat. - + File %1 cannot be saved because of a local file name clash! Die Datei %1 kann aufgrund eines Konfliktes mit dem lokalen Dateinamen nicht gespeichert geladen werden! - + File has changed since discovery Datei ist seit der Entdeckung geändert worden - + Error writing metadata to the database Fehler beim Schreiben der Metadaten in die Datenbank @@ -2226,12 +2226,12 @@ Es ist nicht ratsam, diese zu benutzen. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. Die Datei wurde von einer Nur-Lese-Freigabe gelöscht. Die Datei wurde wiederhergestellt. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". Es wurde ein falscher HTTP-Status-Code vom Server gesendet. Erwartet wurde 204, aber gesendet wurde "%1 %2". @@ -2239,12 +2239,12 @@ Es ist nicht ratsam, diese zu benutzen. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Es wurde ein falscher HTTP-Status-Code vom Server gesendet. Erwartet wurde 201, aber gesendet wurde "%1 %2". - + Error writing metadata to the database Fehler beim Schreiben der Metadaten in die Datenbank @@ -2262,18 +2262,18 @@ Es ist nicht ratsam, diese zu benutzen. Dieser Ordner muss nicht umbenannt werden. Bitte benennen Sie es zurück wie in der Freigabe. - + The file was renamed but is part of a read only share. The original file was restored. Die Datei wurde auf einer Nur-Lese-Freigabe umbenannt. Die Original-Datei wurde wiederhergestellt. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Es wurde ein falscher HTTP-Status-Code vom Server gesendet. Erwartet wurde 201, aber gesendet wurde "%1 %2". - - + + Error writing metadata to the database Fehler beim Schreiben der Metadaten in die Datenbank @@ -2307,7 +2307,7 @@ Es ist nicht ratsam, diese zu benutzen. Das Hochladen von %1 überschreitet das Speicherkontingent des Ordners - + Error writing metadata to the database Fehler beim Schreiben der Metadaten in die Datenbank @@ -2381,42 +2381,42 @@ Es ist nicht ratsam, diese zu benutzen. TextLabel - + Time Zeit - + File Datei - + Folder Ordner - + Action Aktion - + Size Größe - + Local sync protocol Lokales Sychronisationsprotokoll - + Copy Kopieren - + Copy the activity list to the clipboard. Aktivitätsliste in die Zwischenablage kopieren. @@ -3433,17 +3433,17 @@ Es ist nicht ratsam, diese zu benutzen. OCC::ValidateChecksumHeader - + The checksum header is malformed. Der Prüfsummen-Header hat ein fehlerhaftes Format. - + The checksum header contained an unknown checksum type '%1' Die Prüfsummen-Kopfzeile enthielt den unbekannten Prüfsummentypen '%1'. - + The downloaded file does not match the checksum, it will be resumed. Die heruntergeladene Datei entspricht nicht der Prüfsumme, das Herunterladen wird wiederaufgenommen. diff --git a/translations/client_el.ts b/translations/client_el.ts index a8917a885..cf2e34d8b 100644 --- a/translations/client_el.ts +++ b/translations/client_el.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων @@ -1291,22 +1291,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> Παρακαλώ εισάγετε %1 κωδικού πρόσβασης:<br><br>Χρήστης: %2<br>Λογαριασμός: %3<br> - + Reading from keychain failed with error: '%1' Η ανάγνωση από την κλειδοθήκη απέτυχε με σφάλμα: '%1' - + Enter Password Εισάγετε Κωδικό Πρόσβασης - + <a href="%1">Click here</a> to request an app password from the web interface. <a href="%1">πατήστε εδώ</a>για να ζητήσετε έναν κωδικό πρόσβασης εφαρμογής από τη διεπαφή ιστού. @@ -1428,12 +1428,12 @@ Items where deletion is allowed will be deleted if they prevent a directory from - + Copy the issues list to the clipboard. - + Copy Αντιγραφή @@ -2103,7 +2103,7 @@ It is not advisable to use it. OCC::PropagateDirectory - + Error writing metadata to the database Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων @@ -2141,17 +2141,17 @@ It is not advisable to use it. Το ληφθέν αρχείο είναι άδειο, παρόλο που ο διακομιστής ανακοίνωσε ότι θα έπρεπε να ήταν% 1. - + File %1 cannot be saved because of a local file name clash! Το αρχείο %1 δεν είναι δυνατό να αποθηκευτεί λόγω διένεξης με το όνομα ενός τοπικού ονόματος αρχείου! - + File has changed since discovery Το αρχείο έχει αλλάξει από όταν ανακαλύφθηκε - + Error writing metadata to the database Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων @@ -2227,12 +2227,12 @@ It is not advisable to use it. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. Το αρχείο αφαιρέθηκε από ένα διαμοιρασμένο κατάλογο μόνο για ανάγνωση. Το αρχείο επαναφέρθηκε. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". Ο διακομιστής επέστρεψε εσφαλμένο κωδικό HTTP. Αναμενόταν 204, αλλά ελήφθη "%1 %2". @@ -2240,12 +2240,12 @@ It is not advisable to use it. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Ο διακομιστής επέστρεψε εσφαλμένο κωδικό HTTP. Αναμενόταν 201, αλλά ελήφθη "%1 %2". - + Error writing metadata to the database Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων @@ -2263,18 +2263,18 @@ It is not advisable to use it. Αυτός ο φάκελος δεν πρέπει να μετονομαστεί. Παρακαλώ ονομάστε τον ξανά Κοινόχρηστος. - + The file was renamed but is part of a read only share. The original file was restored. Το αρχείο μετονομάστηκε αλλά είναι τμήμα ενός διαμοιρασμένου καταλόγου μόνο για ανάγνωση. Το αρχικό αρχείο επαναφέρθηκε. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Ο διακομιστής επέστρεψε εσφαλμένο κωδικό HTTP. Αναμενόταν 201, αλλά ελήφθη "%1 %2". - - + + Error writing metadata to the database Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων @@ -2308,7 +2308,7 @@ It is not advisable to use it. - + Error writing metadata to the database Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων @@ -2382,42 +2382,42 @@ It is not advisable to use it. TextLabel - + Time Ώρα - + File Αρχείο - + Folder Φάκελος - + Action Ενέργεια - + Size Μέγεθος - + Local sync protocol Πρωτόκολλο τοπικού συγχρονισμού - + Copy Αντιγραφή - + Copy the activity list to the clipboard. Αντιγραφή της λίστας δραστηριότητας στο πρόχειρο. @@ -3434,17 +3434,17 @@ It is not advisable to use it. OCC::ValidateChecksumHeader - + The checksum header is malformed. Η κεφαλίδα του αθροίσματος ελέγχου δεν είναι σωστά διαμορφωμένη. - + The checksum header contained an unknown checksum type '%1' Το checksum header περιέχει άγνωστο τύπο checksum '%1' - + The downloaded file does not match the checksum, it will be resumed. Το αρχείο που μεταφορτώθηκε δεν επαληθεύει το άθροισμα ελέγχου, θα συγχρονιστεί πάλι. diff --git a/translations/client_en.ts b/translations/client_en.ts index 9c73b0e40..8652e4f8b 100644 --- a/translations/client_en.ts +++ b/translations/client_en.ts @@ -604,7 +604,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database @@ -1314,22 +1314,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> - + Reading from keychain failed with error: '%1' - + Enter Password - + <a href="%1">Click here</a> to request an app password from the web interface. @@ -1449,12 +1449,12 @@ Items where deletion is allowed will be deleted if they prevent a directory from - + Copy the issues list to the clipboard. - + Copy @@ -2122,7 +2122,7 @@ It is not advisable to use it. OCC::PropagateDirectory - + Error writing metadata to the database @@ -2160,17 +2160,17 @@ It is not advisable to use it. - + File %1 cannot be saved because of a local file name clash! - + File has changed since discovery - + Error writing metadata to the database @@ -2246,12 +2246,12 @@ It is not advisable to use it. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". @@ -2259,12 +2259,12 @@ It is not advisable to use it. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - + Error writing metadata to the database @@ -2282,18 +2282,18 @@ It is not advisable to use it. - + The file was renamed but is part of a read only share. The original file was restored. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - - + + Error writing metadata to the database @@ -2327,7 +2327,7 @@ It is not advisable to use it. - + Error writing metadata to the database @@ -2401,42 +2401,42 @@ It is not advisable to use it. - + Time - + File - + Folder - + Action - + Size - + Local sync protocol - + Copy - + Copy the activity list to the clipboard. @@ -3451,17 +3451,17 @@ It is not advisable to use it. OCC::ValidateChecksumHeader - + The checksum header is malformed. - + The checksum header contained an unknown checksum type '%1' - + The downloaded file does not match the checksum, it will be resumed. diff --git a/translations/client_es.ts b/translations/client_es.ts index a1692aa70..8908be695 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database Error al escribir los metadatos en la base de datos @@ -1291,22 +1291,22 @@ Si continua con la sincronización todos los archivos serán remplazados por su OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> Por favor introduzca la contraseña de %1:<br><br>Usuario: %2<br>Cuenta: %3<br> - + Reading from keychain failed with error: '%1' La lectura del llavero ha fallado y ha generado este error: '%1' - + Enter Password Introduzca la contraseña - + <a href="%1">Click here</a> to request an app password from the web interface. <a href="%1">Haga clic aquí</a> para solicitar una contraseña de aplicación desde la interfaz web. @@ -1428,12 +1428,12 @@ Los elementos cuya eliminación está permitida serán eliminados si impiden que Mostrar archivos ignorados - + Copy the issues list to the clipboard. Copiar la lista de problemas al portapapeles. - + Copy Copiar @@ -2102,7 +2102,7 @@ No se recomienda usarla. OCC::PropagateDirectory - + Error writing metadata to the database Error al escribir los metadatos en la base de datos @@ -2140,17 +2140,17 @@ No se recomienda usarla. El archivo descargado está vacio aunque el servidor dice que deberia haber sido %1. - + File %1 cannot be saved because of a local file name clash! ¡El fichero %1 no puede guardarse debido a un conflicto con el nombre de otro fichero local! - + File has changed since discovery El archivo ha cambiado desde que fue descubierto - + Error writing metadata to the database Error al escribir los metadatos en la base de datos @@ -2226,12 +2226,12 @@ No se recomienda usarla. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. El archvo fue eliminado de una carpeta compartida en modo de solo lectura. Ha sido recuperado. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". El código HTTP devuelto por el servidor es erróneo. Esperado 204, pero recibido "%1 %2". @@ -2239,12 +2239,12 @@ No se recomienda usarla. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". El código HTTP devuelto por el servidor es erróneo. Esperado 201, pero recibido "%1 %2". - + Error writing metadata to the database Error al escribir los metadatos en la base de datos @@ -2262,18 +2262,18 @@ No se recomienda usarla. Esta carpeta no debe ser renombrada. Favor de renombrar a Compartida. - + The file was renamed but is part of a read only share. The original file was restored. El archivo fue renombrado, pero es parte de una carpeta compartida en modo de solo lectura. El archivo original ha sido recuperado. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". El código HTTP devuelto por el servidor es erróneo. Esperado 201, pero recibido "%1 %2". - - + + Error writing metadata to the database Error al escribir los metadatos en la base de datos @@ -2307,7 +2307,7 @@ No se recomienda usarla. La subida %1 excede la quota de la carpeta - + Error writing metadata to the database Error al escribir los metadatos en la base de datos @@ -2381,42 +2381,42 @@ No se recomienda usarla. Etiqueta de texto - + Time Hora - + File Archivo - + Folder Carpeta - + Action Acción - + Size Tamaño - + Local sync protocol Protocolo de sincronización local - + Copy Copiar - + Copy the activity list to the clipboard. Copie la lista de actividades al portapapeles @@ -3433,17 +3433,17 @@ No se recomienda usarla. OCC::ValidateChecksumHeader - + The checksum header is malformed. La cabecera del archivo de comprobación es incorrecto. - + The checksum header contained an unknown checksum type '%1' La suma de comprobación de cabeceras contenía una suma de comprobación desconocida de tipo '%1' - + The downloaded file does not match the checksum, it will be resumed. El archivo descargado no coincide con el archivo de comprobación, será reanudado. diff --git a/translations/client_es_AR.ts b/translations/client_es_AR.ts index f24f81036..1b2376030 100644 --- a/translations/client_es_AR.ts +++ b/translations/client_es_AR.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database Error escribiendo metadatos a la base de datos @@ -1282,22 +1282,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> - + Reading from keychain failed with error: '%1' - + Enter Password Ingresar contraseña - + <a href="%1">Click here</a> to request an app password from the web interface. @@ -1417,12 +1417,12 @@ Items where deletion is allowed will be deleted if they prevent a directory from - + Copy the issues list to the clipboard. - + Copy Copiar @@ -2090,7 +2090,7 @@ It is not advisable to use it. OCC::PropagateDirectory - + Error writing metadata to the database Error escribiendo metadatos a la base de datos @@ -2128,17 +2128,17 @@ It is not advisable to use it. - + File %1 cannot be saved because of a local file name clash! - + File has changed since discovery - + Error writing metadata to the database Error escribiendo metadatos a la base de datos @@ -2214,12 +2214,12 @@ It is not advisable to use it. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". @@ -2227,12 +2227,12 @@ It is not advisable to use it. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - + Error writing metadata to the database Error escribiendo metadatos a la base de datos @@ -2250,18 +2250,18 @@ It is not advisable to use it. - + The file was renamed but is part of a read only share. The original file was restored. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - - + + Error writing metadata to the database Error escribiendo metadatos a la base de datos @@ -2295,7 +2295,7 @@ It is not advisable to use it. - + Error writing metadata to the database Error escribiendo metadatos a la base de datos @@ -2369,42 +2369,42 @@ It is not advisable to use it. EtiquetaDeTexto - + Time Hora - + File Archivo - + Folder Carpeta - + Action Acción - + Size Tamaño - + Local sync protocol - + Copy Copiar - + Copy the activity list to the clipboard. Copiar la lista de actividades al portapapeles. @@ -3419,17 +3419,17 @@ It is not advisable to use it. OCC::ValidateChecksumHeader - + The checksum header is malformed. - + The checksum header contained an unknown checksum type '%1' - + The downloaded file does not match the checksum, it will be resumed. diff --git a/translations/client_et.ts b/translations/client_et.ts index c97230a58..c5ddc6b44 100644 --- a/translations/client_et.ts +++ b/translations/client_et.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database @@ -1282,22 +1282,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> - + Reading from keychain failed with error: '%1' - + Enter Password Sisesta parool - + <a href="%1">Click here</a> to request an app password from the web interface. @@ -1417,12 +1417,12 @@ Items where deletion is allowed will be deleted if they prevent a directory from - + Copy the issues list to the clipboard. - + Copy Kopeeri @@ -2091,7 +2091,7 @@ Selle kasutamine pole soovitatav. OCC::PropagateDirectory - + Error writing metadata to the database @@ -2129,17 +2129,17 @@ Selle kasutamine pole soovitatav. - + File %1 cannot be saved because of a local file name clash! Faili %1 ei saa salvestada kuna on nime konflikt kohaliku failiga! - + File has changed since discovery Faili on pärast avastamist muudetud - + Error writing metadata to the database @@ -2215,12 +2215,12 @@ Selle kasutamine pole soovitatav. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. Fail oli eemaldatud kirjutamisõiguseta kataloogist. See on nüüd taastatud. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". Server saatis vale HTTP koodi. Ootuspärane kood oli 204, aga saadeti kood "%1 %2". @@ -2228,12 +2228,12 @@ Selle kasutamine pole soovitatav. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Server saatis vale HTTP koodi. Ootuspärane kood oli 201, aga saadeti kood "%1 %2". - + Error writing metadata to the database @@ -2251,18 +2251,18 @@ Selle kasutamine pole soovitatav. Kausta nime ei tohi muuta. Palun pane selle nimeks tagasi Shared. - + The file was renamed but is part of a read only share. The original file was restored. Fail oli ümber nimetatud, kuid see on osa kirjutamisõiguseta jagamisest. Algne fail taastati. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Server saatis vale HTTP koodi. Ootuspärane kood oli 201, aga saadeti kood "%1 %2". - - + + Error writing metadata to the database @@ -2296,7 +2296,7 @@ Selle kasutamine pole soovitatav. - + Error writing metadata to the database @@ -2370,42 +2370,42 @@ Selle kasutamine pole soovitatav. Tekstisilt - + Time Aeg - + File Fail - + Folder Kaust - + Action Tegevus - + Size Suurus - + Local sync protocol - + Copy Kopeeri - + Copy the activity list to the clipboard. Kopeeri tegevuste nimistu puhvrisse. @@ -3422,17 +3422,17 @@ Selle kasutamine pole soovitatav. OCC::ValidateChecksumHeader - + The checksum header is malformed. - + The checksum header contained an unknown checksum type '%1' - + The downloaded file does not match the checksum, it will be resumed. diff --git a/translations/client_eu.ts b/translations/client_eu.ts index 2e2895d60..92aed57e4 100644 --- a/translations/client_eu.ts +++ b/translations/client_eu.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database Errorea metadatuak datu-basean idaztean @@ -1282,22 +1282,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> - + Reading from keychain failed with error: '%1' - + Enter Password Sartu Pasahitza - + <a href="%1">Click here</a> to request an app password from the web interface. @@ -1419,12 +1419,12 @@ Ezabatzeko baimena duten itemak ezabatuko dira hauek karpeta bat ezabatzea uzten - + Copy the issues list to the clipboard. - + Copy Kopiatu @@ -2093,7 +2093,7 @@ Ez da gomendagarria erabltzea. OCC::PropagateDirectory - + Error writing metadata to the database Errorea metadatuak datu-basean idaztean @@ -2131,17 +2131,17 @@ Ez da gomendagarria erabltzea. - + File %1 cannot be saved because of a local file name clash! - + File has changed since discovery - + Error writing metadata to the database Errorea metadatuak datu-basean idaztean @@ -2217,12 +2217,12 @@ Ez da gomendagarria erabltzea. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". @@ -2230,12 +2230,12 @@ Ez da gomendagarria erabltzea. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - + Error writing metadata to the database Errorea metadatuak datu-basean idaztean @@ -2253,18 +2253,18 @@ Ez da gomendagarria erabltzea. Karpeta hau ezin da berrizendatu. Mesedez jarri berriz Shared izena. - + The file was renamed but is part of a read only share. The original file was restored. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - - + + Error writing metadata to the database Errorea metadatuak datu-basean idaztean @@ -2298,7 +2298,7 @@ Ez da gomendagarria erabltzea. - + Error writing metadata to the database Errorea metadatuak datu-basean idaztean @@ -2372,42 +2372,42 @@ Ez da gomendagarria erabltzea. TestuEtiketa - + Time Noiz - + File Fitxategia - + Folder Karpeta - + Action Ekintza - + Size Tamaina - + Local sync protocol Bertako sinkronizazio protokolo - + Copy Kopiatu - + Copy the activity list to the clipboard. Kopiatu jarduera zerrenda arbelara. @@ -3422,17 +3422,17 @@ Ez da gomendagarria erabltzea. OCC::ValidateChecksumHeader - + The checksum header is malformed. - + The checksum header contained an unknown checksum type '%1' - + The downloaded file does not match the checksum, it will be resumed. diff --git a/translations/client_fa.ts b/translations/client_fa.ts index 997445ac4..1b1df5682 100644 --- a/translations/client_fa.ts +++ b/translations/client_fa.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database خطا در نوشتن متادیتا در پایگاه داده @@ -1282,22 +1282,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> - + Reading from keychain failed with error: '%1' - + Enter Password رمز را وارد کنید - + <a href="%1">Click here</a> to request an app password from the web interface. @@ -1417,12 +1417,12 @@ Items where deletion is allowed will be deleted if they prevent a directory from - + Copy the issues list to the clipboard. - + Copy کپی کردن @@ -2090,7 +2090,7 @@ It is not advisable to use it. OCC::PropagateDirectory - + Error writing metadata to the database خطا در نوشتن متادیتا در پایگاه داده @@ -2128,17 +2128,17 @@ It is not advisable to use it. - + File %1 cannot be saved because of a local file name clash! - + File has changed since discovery - + Error writing metadata to the database خطا در نوشتن متادیتا در پایگاه داده @@ -2214,12 +2214,12 @@ It is not advisable to use it. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". @@ -2227,12 +2227,12 @@ It is not advisable to use it. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - + Error writing metadata to the database خطا در نوشتن متادیتا در پایگاه داده @@ -2250,18 +2250,18 @@ It is not advisable to use it. - + The file was renamed but is part of a read only share. The original file was restored. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - - + + Error writing metadata to the database خطا در نوشتن متادیتا در پایگاه داده @@ -2295,7 +2295,7 @@ It is not advisable to use it. - + Error writing metadata to the database خطا در نوشتن متادیتا در پایگاه داده @@ -2369,42 +2369,42 @@ It is not advisable to use it. برچسب متنی - + Time زمان - + File فایل - + Folder پوشه - + Action فعالیت - + Size اندازه - + Local sync protocol - + Copy کپی کردن - + Copy the activity list to the clipboard. @@ -3419,17 +3419,17 @@ It is not advisable to use it. OCC::ValidateChecksumHeader - + The checksum header is malformed. - + The checksum header contained an unknown checksum type '%1' - + The downloaded file does not match the checksum, it will be resumed. diff --git a/translations/client_fi.ts b/translations/client_fi.ts index 5605be6a4..e928d028f 100644 --- a/translations/client_fi.ts +++ b/translations/client_fi.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database Virhe kirjoittaessa metadataa tietokantaan @@ -1282,22 +1282,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> Anna %1-salasana:<br><br>Käyttäjä: %2<br>Tili: %3<br> - + Reading from keychain failed with error: '%1' - + Enter Password Anna salasana - + <a href="%1">Click here</a> to request an app password from the web interface. @@ -1419,12 +1419,12 @@ Kohteet, joiden poisto on sallittu, poistetaan, jos ne estävät kansion poistam - + Copy the issues list to the clipboard. - + Copy Kopioi @@ -2093,7 +2093,7 @@ Osoitteen käyttäminen ei ole suositeltavaa. OCC::PropagateDirectory - + Error writing metadata to the database Virhe kirjoittaessa metadataa tietokantaan @@ -2131,17 +2131,17 @@ Osoitteen käyttäminen ei ole suositeltavaa. - + File %1 cannot be saved because of a local file name clash! - + File has changed since discovery Tiedosto on muuttunut löytymisen jälkeen - + Error writing metadata to the database Virhe kirjoittaessa metadataa tietokantaan @@ -2217,12 +2217,12 @@ Osoitteen käyttäminen ei ole suositeltavaa. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". HTTP-palvelin palautti väärän koodin. Odotettiin koodia 204, vastaanotettiin "%1 %2". @@ -2230,12 +2230,12 @@ Osoitteen käyttäminen ei ole suositeltavaa. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". HTTP-palvelin palautti väärän koodin. Odotettiin koodia 201, vastaanotettiin "%1 %2". - + Error writing metadata to the database Virhe kirjoittaessa metadataa tietokantaan @@ -2253,18 +2253,18 @@ Osoitteen käyttäminen ei ole suositeltavaa. - + The file was renamed but is part of a read only share. The original file was restored. Tiedosto nimettiin uudelleen, mutta se on osa "vain luku"-jakoa. Alkuperäinen tiedosto palautettiin. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". HTTP-palvelin palautti väärän koodin. Odotettiin koodia 201, vastaanotettiin "%1 %2". - - + + Error writing metadata to the database Virhe kirjoittaessa metadataa tietokantaan @@ -2298,7 +2298,7 @@ Osoitteen käyttäminen ei ole suositeltavaa. - + Error writing metadata to the database Virhe kirjoittaessa metadataa tietokantaan @@ -2372,42 +2372,42 @@ Osoitteen käyttäminen ei ole suositeltavaa. TekstiLeima - + Time Aika - + File Tiedosto - + Folder Kansio - + Action Toiminto - + Size Koko - + Local sync protocol Paikallinen synkronointiprotokolla - + Copy Kopioi - + Copy the activity list to the clipboard. Kopioi toimilista leikepöydälle. @@ -3424,17 +3424,17 @@ Osoitteen käyttäminen ei ole suositeltavaa. OCC::ValidateChecksumHeader - + The checksum header is malformed. Tarkistesumman otsake on muodostettu väärin. - + The checksum header contained an unknown checksum type '%1' - + The downloaded file does not match the checksum, it will be resumed. diff --git a/translations/client_fr.ts b/translations/client_fr.ts index 855f2196f..13ddc4f9a 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database Erreur à l'écriture des métadonnées dans la base de données @@ -1292,22 +1292,22 @@ Continuer la synchronisation comme d'habitude fera en sorte que tous les fi OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> Merci de saisir le mot de passe de %1 :<br><br>Utilisateur : %2<br>Compte : %3<br> - + Reading from keychain failed with error: '%1' Erreur lors de l'accès au trousseau : '%1' - + Enter Password Saisissez le mot de passe - + <a href="%1">Click here</a> to request an app password from the web interface. <a href="%1">Cliquez ici</a> pour demander un mot de passe d'application depuis l'interface web. @@ -1429,12 +1429,12 @@ L'option "Autoriser suppression" permet de ne pas bloquer la supp Voir les fichiers ignorés - + Copy the issues list to the clipboard. Copier la liste des anomalies dans le presse-papier. - + Copy Copier @@ -2104,7 +2104,7 @@ Il est déconseillé de l'utiliser. OCC::PropagateDirectory - + Error writing metadata to the database Erreur à l'écriture des métadonnées dans la base de données @@ -2142,17 +2142,17 @@ Il est déconseillé de l'utiliser. Le fichier téléchargé est vide bien que le serveur indique que sa taille devrait être de %1. - + File %1 cannot be saved because of a local file name clash! Le fichier %1 n'a pas pu être sauvegardé en raison d'un conflit sur le nom du fichier local ! - + File has changed since discovery Le fichier a changé depuis sa découverte - + Error writing metadata to the database Erreur à l'écriture des métadonnées dans la base de données @@ -2228,12 +2228,12 @@ Il est déconseillé de l'utiliser. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. Le fichier a été supprimé d'un partage en lecture seule. Il a été restauré. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur reçue est "%1 %2". @@ -2241,12 +2241,12 @@ Il est déconseillé de l'utiliser. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 201 mais la valeur reçue est "%1 %2". - + Error writing metadata to the database Erreur à l'écriture des métadonnées dans la base de données @@ -2264,18 +2264,18 @@ Il est déconseillé de l'utiliser. Le nom de ce dossier ne doit pas être changé. Veuillez le renommer en Shared. - + The file was renamed but is part of a read only share. The original file was restored. Le fichier a été renommé mais appartient à un partage en lecture seule. Le fichier original a été restauré. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 201 mais la valeur reçue est "%1 %2". - - + + Error writing metadata to the database Erreur à l'écriture des métadonnées dans la base de données @@ -2309,7 +2309,7 @@ Il est déconseillé de l'utiliser. - + Error writing metadata to the database Erreur à l'écriture des métadonnées dans la base de données @@ -2383,42 +2383,42 @@ Il est déconseillé de l'utiliser. TextLabel - + Time Heure - + File Fichier - + Folder Dossier - + Action Action - + Size Taille - + Local sync protocol Historique des opérations de synchronisation locale - + Copy Copier - + Copy the activity list to the clipboard. Copier la liste d'activités dans le presse-papier @@ -3435,17 +3435,17 @@ Il est déconseillé de l'utiliser. OCC::ValidateChecksumHeader - + The checksum header is malformed. L'entête de somme de contrôle est mal formée. - + The checksum header contained an unknown checksum type '%1' L'en-tête de la somme de contrôle contenait un type de somme de contrôle inconnu '%1' - + The downloaded file does not match the checksum, it will be resumed. Le fichier téléchargé ne correspond pas à la somme de contrôle, il va être téléchargé à nouveau. diff --git a/translations/client_gl.ts b/translations/client_gl.ts index c7be450b9..ac660b419 100644 --- a/translations/client_gl.ts +++ b/translations/client_gl.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database @@ -1282,22 +1282,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> - + Reading from keychain failed with error: '%1' A lectura do chaveiro fallou co erro: «%1» - + Enter Password Escriba o contrasinal - + <a href="%1">Click here</a> to request an app password from the web interface. @@ -1417,12 +1417,12 @@ Items where deletion is allowed will be deleted if they prevent a directory from - + Copy the issues list to the clipboard. - + Copy Copiar @@ -2092,7 +2092,7 @@ Recomendámoslle que non o use. OCC::PropagateDirectory - + Error writing metadata to the database @@ -2130,17 +2130,17 @@ Recomendámoslle que non o use. - + File %1 cannot be saved because of a local file name clash! Non foi posíbel gardar o ficheiro %1 por mor dunha colisión co nome dun ficheiro local! - + File has changed since discovery O ficheiro cambiou após seren atopado - + Error writing metadata to the database @@ -2216,12 +2216,12 @@ Recomendámoslle que non o use. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. Foi retirado un ficheiro desde unha compartición de só lectura. Foi restaurado. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". O servidor devolveu código HTTP incorrecto. Agardábase 204, mais recibiuse «%1 %2». @@ -2229,12 +2229,12 @@ Recomendámoslle que non o use. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". O servidor devolveu código HTTP incorrecto. Agardábase 201, mais recibiuse «%1 %2». - + Error writing metadata to the database @@ -2252,18 +2252,18 @@ Recomendámoslle que non o use. Non é posíbel renomear este cartafol. Devólvalle o nome ao compartido. - + The file was renamed but is part of a read only share. The original file was restored. O ficheiro foi renomeado mais é parte dunha compartición de só lectura. O ficheiro orixinal foi restaurado. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". O servidor devolveu código HTTP incorrecto. Agardábase 201, mais recibiuse «%1 %2». - - + + Error writing metadata to the database @@ -2297,7 +2297,7 @@ Recomendámoslle que non o use. - + Error writing metadata to the database @@ -2371,42 +2371,42 @@ Recomendámoslle que non o use. Etiqueta de texto - + Time Hora - + File Ficheiro - + Folder Cartafol - + Action Acción - + Size Tamaño - + Local sync protocol - + Copy Copiar - + Copy the activity list to the clipboard. Copiar a lista da actividade no portapapeis. @@ -3423,17 +3423,17 @@ Recomendámoslle que non o use. OCC::ValidateChecksumHeader - + The checksum header is malformed. A cabeceira da suma de comprobación é incorrecta. - + The checksum header contained an unknown checksum type '%1' - + The downloaded file does not match the checksum, it will be resumed. O ficheiro descargado non coincide coa suma de comprobación. Retomase. diff --git a/translations/client_hu.ts b/translations/client_hu.ts index 48382501c..3f892ae4a 100644 --- a/translations/client_hu.ts +++ b/translations/client_hu.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database @@ -1282,22 +1282,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> - + Reading from keychain failed with error: '%1' - + Enter Password Jelszómegadás - + <a href="%1">Click here</a> to request an app password from the web interface. @@ -1417,12 +1417,12 @@ Items where deletion is allowed will be deleted if they prevent a directory from - + Copy the issues list to the clipboard. - + Copy Másolás @@ -2090,7 +2090,7 @@ It is not advisable to use it. OCC::PropagateDirectory - + Error writing metadata to the database @@ -2128,17 +2128,17 @@ It is not advisable to use it. - + File %1 cannot be saved because of a local file name clash! - + File has changed since discovery - + Error writing metadata to the database @@ -2214,12 +2214,12 @@ It is not advisable to use it. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". @@ -2227,12 +2227,12 @@ It is not advisable to use it. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - + Error writing metadata to the database @@ -2250,18 +2250,18 @@ It is not advisable to use it. - + The file was renamed but is part of a read only share. The original file was restored. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - - + + Error writing metadata to the database @@ -2295,7 +2295,7 @@ It is not advisable to use it. - + Error writing metadata to the database @@ -2369,42 +2369,42 @@ It is not advisable to use it. TextLabel - + Time Idő - + File Fájl - + Folder Mappa - + Action Művelet - + Size Méret - + Local sync protocol - + Copy Másolás - + Copy the activity list to the clipboard. Az aktivitási lista másolása a vágólapra. @@ -3420,17 +3420,17 @@ It is not advisable to use it. OCC::ValidateChecksumHeader - + The checksum header is malformed. - + The checksum header contained an unknown checksum type '%1' - + The downloaded file does not match the checksum, it will be resumed. diff --git a/translations/client_it.ts b/translations/client_it.ts index 169618012..b68399a75 100644 --- a/translations/client_it.ts +++ b/translations/client_it.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database Errore durante la scrittura dei metadati nel database @@ -1287,22 +1287,22 @@ Se continui normalmente la sincronizzazione provocherai la sovrascrittura di tut OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> Digita la password di %1:<br><br>Utente: '%2<br>Account: %3<br> - + Reading from keychain failed with error: '%1' Lettura dal portachiavi non riuscita con errore: '%1' - + Enter Password Digita password - + <a href="%1">Click here</a> to request an app password from the web interface. <a href="%1">Fai clic qui</a> per richiedere una password dell'applicazione dall'interfaccia web. @@ -1424,12 +1424,12 @@ Gli elementi per i quali è consentita l'eliminazione, saranno eliminati se Mostra i file ignorati - + Copy the issues list to the clipboard. Copia la lista dei problemi negli appunti. - + Copy Copia @@ -2098,7 +2098,7 @@ Non è consigliabile utilizzarlo. OCC::PropagateDirectory - + Error writing metadata to the database Errore durante la scrittura dei metadati nel database @@ -2136,17 +2136,17 @@ Non è consigliabile utilizzarlo. Il file scaricato è vuoto nonostante il server indicasse una dimensione di %1. - + File %1 cannot be saved because of a local file name clash! Il file %1 non può essere salvato a causa di un conflitto con un file locale. - + File has changed since discovery Il file è stato modificato dal suo rilevamento - + Error writing metadata to the database Errore durante la scrittura dei metadati nel database @@ -2222,12 +2222,12 @@ Non è consigliabile utilizzarlo. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. Il file è stato rimosso da una condivisione in sola lettura. È stato ripristinato. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". Codice HTTP errato restituito dal server. Atteso 204, ma ricevuto "%1 %2". @@ -2235,12 +2235,12 @@ Non è consigliabile utilizzarlo. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Codice HTTP errato restituito dal server. Atteso 201, ma ricevuto "%1 %2". - + Error writing metadata to the database Errore durante la scrittura dei metadati nel database @@ -2258,18 +2258,18 @@ Non è consigliabile utilizzarlo. Questa cartella non può essere rinominata. Ripristina il nome Shared. - + The file was renamed but is part of a read only share. The original file was restored. Il file è stato rinominato, ma è parte di una condivisione in sola lettura. Il file originale è stato ripristinato. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Codice HTTP errato restituito dal server. Atteso 201, ma ricevuto "%1 %2". - - + + Error writing metadata to the database Errore durante la scrittura dei metadati nel database @@ -2303,7 +2303,7 @@ Non è consigliabile utilizzarlo. - + Error writing metadata to the database Errore durante la scrittura dei metadati nel database @@ -2377,42 +2377,42 @@ Non è consigliabile utilizzarlo. EtichettaTesto - + Time Ora - + File File - + Folder Cartella - + Action Azione - + Size Dimensione - + Local sync protocol Protocollo di sincronizzazione locale - + Copy Copia - + Copy the activity list to the clipboard. Copia l'elenco delle attività negli appunti. @@ -3429,17 +3429,17 @@ Non è consigliabile utilizzarlo. OCC::ValidateChecksumHeader - + The checksum header is malformed. L'intestazione del codice di controllo non è valida. - + The checksum header contained an unknown checksum type '%1' L'intestazione di controllo conteneva un tipo di codice di controllo '%1' sconosciuto - + The downloaded file does not match the checksum, it will be resumed. Il file scaricato non verifica il codice di controllo, sarà ripristinato. diff --git a/translations/client_ja.ts b/translations/client_ja.ts index fb706cf3e..1413a0b05 100644 --- a/translations/client_ja.ts +++ b/translations/client_ja.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database メタデータのデータベースへの書き込みに失敗 @@ -1289,22 +1289,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> %1 のパスワードを入力してください:<br> <br>ユーザー:%2<br>アカウント:%3<br> - + Reading from keychain failed with error: '%1' 鍵情報の読み込みに失敗しました。エラー: '%1' - + Enter Password パスワードを入力してください - + <a href="%1">Click here</a> to request an app password from the web interface. <a href="%1">ここをクリック</a>してウェブインターフェースからアプリパスワードをリクエストしてください。 @@ -1426,12 +1426,12 @@ Items where deletion is allowed will be deleted if they prevent a directory from - + Copy the issues list to the clipboard. - + Copy コピー @@ -2099,7 +2099,7 @@ It is not advisable to use it. OCC::PropagateDirectory - + Error writing metadata to the database メタデータのデータベースへの書き込みに失敗 @@ -2137,17 +2137,17 @@ It is not advisable to use it. サーバーが通知しているファイルは %1 であるべきですが、ダウンロードファイルは空でした。 - + File %1 cannot be saved because of a local file name clash! %1 はローカルファイル名が衝突しているため保存できません! - + File has changed since discovery ファイルは発見以降に変更されました - + Error writing metadata to the database メタデータのデータベースへの書き込みに失敗 @@ -2223,12 +2223,12 @@ It is not advisable to use it. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. ファイルが読み込み専用の共有から削除されました。ファイルは復元されました。 - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". 誤ったHTTPコードがサーバーから返されました。204のはずが、"%1 %2"が返りました。 @@ -2236,12 +2236,12 @@ It is not advisable to use it. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". 誤ったHTTPコードがサーバーから返されました。201のはずが、"%1 %2"が返りました。 - + Error writing metadata to the database メタデータのデータベースへの書き込みに失敗 @@ -2259,18 +2259,18 @@ It is not advisable to use it. このフォルダー名は変更できません。名前を Shared に戻してください。 - + The file was renamed but is part of a read only share. The original file was restored. ファイルの名前が変更されましたが、読み込み専用の共有の一部です。オリジナルのファイルが復元されました。 - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". 誤ったHTTPコードがサーバーから返されました。201のはずが、"%1 %2"が返りました。 - - + + Error writing metadata to the database メタデータのデータベースへの書き込みに失敗 @@ -2304,7 +2304,7 @@ It is not advisable to use it. - + Error writing metadata to the database メタデータのデータベースへの書き込みに失敗 @@ -2378,42 +2378,42 @@ It is not advisable to use it. テキストラベル - + Time 時刻 - + File ファイル - + Folder フォルダー - + Action アクション - + Size サイズ - + Local sync protocol ローカルファイル同期状況 - + Copy コピー - + Copy the activity list to the clipboard. アクティビティ一覧をコピーする @@ -3430,17 +3430,17 @@ It is not advisable to use it. OCC::ValidateChecksumHeader - + The checksum header is malformed. ヘッダーのチェックサムが異常です。 - + The checksum header contained an unknown checksum type '%1' チェックサムヘッダーに '%1' という未知のチェックサムが含まれていました - + The downloaded file does not match the checksum, it will be resumed. ダウンロードしたファイルがチェックサムエラーです。再ダウンロードします。 diff --git a/translations/client_nb_NO.ts b/translations/client_nb_NO.ts index 0fcd1fca0..7c3869fab 100644 --- a/translations/client_nb_NO.ts +++ b/translations/client_nb_NO.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database Feil ved skriving av metadata til databasen @@ -1290,22 +1290,22 @@ Hvis synkroniseringen fortsetter som normalt, vil alle filene dine bli overskrev OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> Legg inn %1-passord:<br><br>Bruker: %2<br>Konto: %3<br> - + Reading from keychain failed with error: '%1' Lesing fra nøkkelring feilet med feil: '%1' - + Enter Password Legg inn passord - + <a href="%1">Click here</a> to request an app password from the web interface. <a href="%1">Klikk her</a> for å be om et app-passord fra web-grensesnittet. @@ -1427,12 +1427,12 @@ Elementer hvor sletting er tillatt, vil bli slettet hvis de forhindrer fjerning - + Copy the issues list to the clipboard. - + Copy Kopier @@ -2102,7 +2102,7 @@ Det er ikke tilrådelig å bruke den. OCC::PropagateDirectory - + Error writing metadata to the database Feil ved skriving av metadata til databasen @@ -2140,17 +2140,17 @@ Det er ikke tilrådelig å bruke den. Nedlastet fil er tom, selv om serveren annonserte at den skulle være %1. - + File %1 cannot be saved because of a local file name clash! Fil %1 kan ikke lagres på grunn av lokal konflikt med filnavn. - + File has changed since discovery Filen er endret siden den ble oppdaget - + Error writing metadata to the database Feil ved skriving av metadata til databasen @@ -2226,12 +2226,12 @@ Det er ikke tilrådelig å bruke den. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. Filen er blitt fjernet fra en deling med lesetilgang. Den ble gjenopprettet. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". Feil HTTP-kode returnert fra server. Ventet 204, men mottok "%1 %2". @@ -2239,12 +2239,12 @@ Det er ikke tilrådelig å bruke den. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Feil HTTP-kode returnert fra server. Ventet 201, men mottok "%1 %2". - + Error writing metadata to the database Feil ved skriving av metadata til databasen @@ -2262,18 +2262,18 @@ Det er ikke tilrådelig å bruke den. Denne mappen må ikke omdøpes. Vennligst omdøp den tilbake til Shared. - + The file was renamed but is part of a read only share. The original file was restored. Filen ble gitt nytt navn mer er en del av en deling med lesetilgang. Den opprinnelige filen ble gjenopprettet. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Feil HTTP-kode returnert fra server. Ventet 201, men mottok "%1 %2". - - + + Error writing metadata to the database Feil ved skriving av metadata til databasen @@ -2307,7 +2307,7 @@ Det er ikke tilrådelig å bruke den. - + Error writing metadata to the database Feil ved skriving av metadata til databasen @@ -2381,42 +2381,42 @@ Det er ikke tilrådelig å bruke den. Tekst-etikett - + Time Tid - + File Fil - + Folder Mappe - + Action Handling - + Size Størrelse - + Local sync protocol Lokal synkroniseringsprotokoll - + Copy Kopier - + Copy the activity list to the clipboard. Kopier aktivitetslisten til utklippstavlen. @@ -3433,17 +3433,17 @@ Det er ikke tilrådelig å bruke den. OCC::ValidateChecksumHeader - + The checksum header is malformed. Sjekksum-headeren har feil format. - + The checksum header contained an unknown checksum type '%1' Sjekksum-header inneholdt ukjent sjekksum-type '%1' - + The downloaded file does not match the checksum, it will be resumed. Den nedlastede filen passer ikke med sjekksummen, den vil bli gjenopptatt. diff --git a/translations/client_nl.ts b/translations/client_nl.ts index bae7b67e2..bb38056f7 100644 --- a/translations/client_nl.ts +++ b/translations/client_nl.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database Fout bij schrijven van Metadata naar de database @@ -1291,7 +1291,7 @@ Doorgaan met deze synchronisatie overschrijft al uw bestanden door een eerdere v OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> Voer %1 wachtwoord in: @@ -1300,17 +1300,17 @@ Account: %3 - + Reading from keychain failed with error: '%1' Het lezen van de sleutelketen is mislukt met fout: '%1' - + Enter Password Vul het wachtwoord in - + <a href="%1">Click here</a> to request an app password from the web interface. <a href="%1">Klik hier</a> om een nieuw app wachtwoord via de web interface op te vragen. @@ -1432,12 +1432,12 @@ Onderdelen die gewist mogen worden worden verwijderd als ze voorkomen dat een ma - + Copy the issues list to the clipboard. - + Copy Kopiëren @@ -2107,7 +2107,7 @@ We adviseren deze site niet te gebruiken. OCC::PropagateDirectory - + Error writing metadata to the database Fout bij schrijven van Metadata naar de database @@ -2145,17 +2145,17 @@ We adviseren deze site niet te gebruiken. Het gedownloade bestand is leeg, hoewel de server meldde dat het %1 zou moeten zijn. - + File %1 cannot be saved because of a local file name clash! Bestand %1 kan niet worden opgeslagen wegens een lokaal bestandsnaam conflict! - + File has changed since discovery Het bestand is gewijzigd sinds het is gevonden - + Error writing metadata to the database Fout bij schrijven van Metadata naar de database @@ -2231,12 +2231,12 @@ We adviseren deze site niet te gebruiken. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. Het bestand is verwijderd van een alleen-lezen share. Het is teruggezet. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". Foutieve HTTP code ontvangen van de server. Verwacht was 204, maar ontvangen "%1 %2". @@ -2244,12 +2244,12 @@ We adviseren deze site niet te gebruiken. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Foutieve HTTP code ontvangen van de server. Verwacht was 201, maar ontvangen "%1 %2". - + Error writing metadata to the database Fout bij schrijven van Metadata naar de database @@ -2267,18 +2267,18 @@ We adviseren deze site niet te gebruiken. Deze map mag niet worden hernoemd. Verander de naam terug in Gedeeld. - + The file was renamed but is part of a read only share. The original file was restored. Het bestand is hernoemd, maar hoort bij een alleen-lezen share. Het originele bestand is teruggezet. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Foutieve HTTP code ontvangen van de server. Verwacht werd 201, maar ontvangen "%1 %2". - - + + Error writing metadata to the database Fout bij schrijven van Metadata naar de database @@ -2312,7 +2312,7 @@ We adviseren deze site niet te gebruiken. - + Error writing metadata to the database Fout bij schrijven van Metadata naar de database @@ -2386,42 +2386,42 @@ We adviseren deze site niet te gebruiken. Tekstlabel - + Time Tijd - + File Bestand - + Folder Map - + Action Handeling - + Size Grootte - + Local sync protocol Lokaal sync protocol - + Copy Kopiëren - + Copy the activity list to the clipboard. Kopieer de activiteitenlijst naar het klembord. @@ -3438,17 +3438,17 @@ We adviseren deze site niet te gebruiken. OCC::ValidateChecksumHeader - + The checksum header is malformed. De header van het controlegetal is misvormd. - + The checksum header contained an unknown checksum type '%1' Het header controlegetal bevat een onbekend controlegetal type '%1' - + The downloaded file does not match the checksum, it will be resumed. Het gedownloade bestand komt niet overeen met het controlegetal. Het wordt opnieuw verwerkt. diff --git a/translations/client_pl.ts b/translations/client_pl.ts index a2b6321c7..f165cc548 100644 --- a/translations/client_pl.ts +++ b/translations/client_pl.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database Błąd podczas zapisu metadanych do bazy @@ -1284,22 +1284,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> Wprowadź %1 hasło:<br><br>Użytkownik:%2<br>Konto:%3<br> - + Reading from keychain failed with error: '%1' - + Enter Password Wprowadź hasło - + <a href="%1">Click here</a> to request an app password from the web interface. @@ -1421,12 +1421,12 @@ Pozycje, dla których usuwanie jest dozwolone zostaną usunięte, jeżeli uprawn - + Copy the issues list to the clipboard. - + Copy Kopiuj @@ -2096,7 +2096,7 @@ Niezalecane jest jego użycie. OCC::PropagateDirectory - + Error writing metadata to the database Błąd podczas zapisu metadanych do bazy @@ -2134,17 +2134,17 @@ Niezalecane jest jego użycie. Pobrany plik jest pusty pomimo tego, że według zapowiedzi serwera powinien mieć %1. - + File %1 cannot be saved because of a local file name clash! - + File has changed since discovery - + Error writing metadata to the database Błąd podczas zapisu metadanych do bazy @@ -2220,12 +2220,12 @@ Niezalecane jest jego użycie. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. Plik został usunięty z zasobu z prawem tylko do odczytu. Został przywrócony. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". @@ -2233,12 +2233,12 @@ Niezalecane jest jego użycie. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - + Error writing metadata to the database Błąd podczas zapisu metadanych do bazy @@ -2256,18 +2256,18 @@ Niezalecane jest jego użycie. Nie wolno zmieniać nazwy tego folderu. Proszę zmień nazwę z powrotem na Shared. - + The file was renamed but is part of a read only share. The original file was restored. Plik był edytowany lokalnie ale jest częścią udziału z prawem tylko do odczytu. Przywrócono oryginalny plik - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - - + + Error writing metadata to the database Błąd podczas zapisu metadanych do bazy @@ -2301,7 +2301,7 @@ Niezalecane jest jego użycie. - + Error writing metadata to the database Błąd podczas zapisu metadanych do bazy @@ -2375,42 +2375,42 @@ Niezalecane jest jego użycie. Etykieta - + Time Czas - + File Plik - + Folder Folder - + Action Akcja - + Size Rozmiar - + Local sync protocol Lokalny protokół synchronizacji - + Copy Kopiuj - + Copy the activity list to the clipboard. Kopiuj listę aktywności do schowka. @@ -3427,17 +3427,17 @@ Niezalecane jest jego użycie. OCC::ValidateChecksumHeader - + The checksum header is malformed. - + The checksum header contained an unknown checksum type '%1' - + The downloaded file does not match the checksum, it will be resumed. diff --git a/translations/client_pt.ts b/translations/client_pt.ts index 587e49e10..e17edae49 100644 --- a/translations/client_pt.ts +++ b/translations/client_pt.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database Erro ao gravar os metadados para a base de dados @@ -1291,22 +1291,22 @@ Continuando a sincronização fará com que todos os seus ficheiros sejam substi OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> Por favor, insira a palavra-passe %1:<br><br>Utilizador: %2<br>Conta: %3<br> - + Reading from keychain failed with error: '%1' A leitura da cadeia de dados falhou com um erro: '%1' - + Enter Password Insira a Palavra-passe - + <a href="%1">Click here</a> to request an app password from the web interface. <a href="%1">Clique aqui</a> para solicitar uma palavra-passe da aplicação a partir da interface da Web. @@ -1428,12 +1428,12 @@ Os itens onde é permitido a eliminação serão eliminados se estes impedirem a - + Copy the issues list to the clipboard. - + Copy Copiar @@ -2103,7 +2103,7 @@ Não é aconselhada a sua utilização. OCC::PropagateDirectory - + Error writing metadata to the database Erro ao escrever a meta-informação par a base de dados @@ -2141,17 +2141,17 @@ Não é aconselhada a sua utilização. O ficheiro transferido está vazio, apesar do servidor indicar que este deveria ter %1. - + File %1 cannot be saved because of a local file name clash! Ficheiro %1 não pode ser guardado devido à existência de um ficheiro local com o mesmo nome. - + File has changed since discovery O ficheiro alterou-se desde a sua descoberta - + Error writing metadata to the database Erro ao gravar os metadados para a base de dados @@ -2227,12 +2227,12 @@ Não é aconselhada a sua utilização. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. O ficheiro havia sido removido de uma partilha apenas de leitura. Ficheiro restaurado. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". Código HTTP errado devolvido pelo servidor. Esperado 204, mas foi recebido "%1 %2". @@ -2240,12 +2240,12 @@ Não é aconselhada a sua utilização. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Código HTTP errado devolvido pelo servidor. Esperado 201, mas foi recebido "%1 %2". - + Error writing metadata to the database Erro ao escrever a meta-informação par a base de dados @@ -2263,18 +2263,18 @@ Não é aconselhada a sua utilização. Esta pasta não pode ser renomeada. Por favor renomeie para o seu nome original: Shared. - + The file was renamed but is part of a read only share. The original file was restored. O ficheiro foi renomeado mas faz parte de uma partilha só de leitura. O ficheiro original foi restaurado. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Código HTTP errado devolvido pelo servidor. Esperado 201, mas foi recebido "%1 %2". - - + + Error writing metadata to the database Erro ao escrever a meta-informação par a base de dados @@ -2308,7 +2308,7 @@ Não é aconselhada a sua utilização. - + Error writing metadata to the database Erro ao gravar os metadados para a base de dados @@ -2382,42 +2382,42 @@ Não é aconselhada a sua utilização. TextLabel - + Time Tempo - + File Ficheiro - + Folder Pasta - + Action Ação - + Size Tamanho - + Local sync protocol Protocolo de sincronização local - + Copy Copiar - + Copy the activity list to the clipboard. Copiar lista de actividades para a área de transferência. @@ -3434,17 +3434,17 @@ Não é aconselhada a sua utilização. OCC::ValidateChecksumHeader - + The checksum header is malformed. O cabeçalho de "checksum" está com problemas. - + The checksum header contained an unknown checksum type '%1' O header checksum continha um tipo de checksum desconhecido '%1' - + The downloaded file does not match the checksum, it will be resumed. O ficheiro transferido não corresponde ao "checksum", Este irá ser retomado. diff --git a/translations/client_pt_BR.ts b/translations/client_pt_BR.ts index cd1646820..82ca6573d 100644 --- a/translations/client_pt_BR.ts +++ b/translations/client_pt_BR.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database Ocorreu um erro ao escrever metadados ao banco de dados @@ -1290,22 +1290,22 @@ Continuar a sincronização como normal fará com que todos os seus arquivos sej OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> Por favor entre uma senha %1:<br><br>Usuário: %2<br>Conta: %3<br> - + Reading from keychain failed with error: '%1' Leitura de chaveiro falhou com o erro: '%1' - + Enter Password Entrar Senha - + <a href="%1">Click here</a> to request an app password from the web interface. <a href="%1">Clique aqui</a> para solicitar uma senha de aplicativo na interface da web. @@ -1427,12 +1427,12 @@ Itens onde a eliminação é permitida serão excluídos se eles evitarem que um Mostrar arquivos ignorados - + Copy the issues list to the clipboard. Copie a lista de problemas para a área de transferência. - + Copy Copiar @@ -2100,7 +2100,7 @@ It is not advisable to use it. OCC::PropagateDirectory - + Error writing metadata to the database Ocorreu um erro ao escrever metadados ao banco de dados @@ -2138,17 +2138,17 @@ It is not advisable to use it. O arquivo baixado está vazio apesar do servidor anunciou que deveria ter %1. - + File %1 cannot be saved because of a local file name clash! O arquivo %1 não pode ser salvo devido a um confronto com um nome de arquivo local! - + File has changed since discovery Arquivo foi alterado desde a descoberta - + Error writing metadata to the database Ocorreu um erro ao escrever metadados ao banco de dados @@ -2224,12 +2224,12 @@ It is not advisable to use it. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. O arquivo foi removido de um compartilhamento somente de leitura. Ele foi restaurado. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". Código HTTP retornado errado pelo servidor. 204 esperado, mas recebeu "%1 %2". @@ -2237,12 +2237,12 @@ It is not advisable to use it. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Código HTTP retornado errado pelo servidor. 201 esperado, mas recebeu "%1 %2". - + Error writing metadata to the database Ocorreu um erro ao escrever metadados ao banco de dados @@ -2260,18 +2260,18 @@ It is not advisable to use it. Esta pasta não pode ser renomeada. Por favor, nomeie-a de volta para Compartilhada. - + The file was renamed but is part of a read only share. The original file was restored. O arquivo foi renomeado mas faz parte de compartilhamento só de leitura. O arquivo original foi restaurado. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Código HTTP retornado errado pelo servidor. 201 esperado, mas recebeu "%1 %2". - - + + Error writing metadata to the database Ocorreu um erro ao escrever metadados ao banco de dados @@ -2305,7 +2305,7 @@ It is not advisable to use it. O envio de %1 excede a quota da pasta - + Error writing metadata to the database Ocorreu um erro ao escrever metadados ao banco de dados @@ -2379,42 +2379,42 @@ It is not advisable to use it. RótuloTexto - + Time Tempo - + File Arquivo - + Folder Pasta - + Action Ação - + Size Tamanho - + Local sync protocol Protocolo de sincronização local - + Copy Copiar - + Copy the activity list to the clipboard. Copiar a lista de atividades para a área de transferência. @@ -3431,17 +3431,17 @@ It is not advisable to use it. OCC::ValidateChecksumHeader - + The checksum header is malformed. O cabeçalho da soma de verificação está incorreto. - + The checksum header contained an unknown checksum type '%1' A cabeçalho da soma de verificação continha um tipo de soma de verificação desconhecido '%1' - + The downloaded file does not match the checksum, it will be resumed. O arquivo baixado não coincide com o checksum, ele será retomado. diff --git a/translations/client_ru.ts b/translations/client_ru.ts index 48473ae35..317a7e41e 100644 --- a/translations/client_ru.ts +++ b/translations/client_ru.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database Ошибка записи метаданных в базу данных @@ -1289,22 +1289,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> Пожалуйста введите пароль для %1:<br><br>Пользователь: %2<br>Учётная запись: %3<br> - + Reading from keychain failed with error: '%1' Чтение из брелока завершилось с ошибкой: '%1' - + Enter Password Введите пароль - + <a href="%1">Click here</a> to request an app password from the web interface. <a href="%1">Кликните здесь</a> чтобы запросить пароль приложения через веб-интерфейс. @@ -1425,12 +1425,12 @@ Items where deletion is allowed will be deleted if they prevent a directory from Показать игнорируемые файлы - + Copy the issues list to the clipboard. Скопировать список проблем в буфер обмена. - + Copy Копировать @@ -2100,7 +2100,7 @@ It is not advisable to use it. OCC::PropagateDirectory - + Error writing metadata to the database Ошибка записи метаданных в базу данных @@ -2138,17 +2138,17 @@ It is not advisable to use it. Скачанный файл пуст, хотя сервер заявил, что он должен быть %1. - + File %1 cannot be saved because of a local file name clash! Файл %1 не может быть сохранён из-за локального конфликта имен! - + File has changed since discovery После обнаружения файл был изменен - + Error writing metadata to the database Ошибка записи метаданных в базу данных @@ -2224,12 +2224,12 @@ It is not advisable to use it. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. Файл удалён с удаленного общего ресурса только для чтения. Файл был восстановлен. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". Сервер ответил не правильным HTTP кодом. Ожидался 204, но получен "%1 %2". @@ -2237,12 +2237,12 @@ It is not advisable to use it. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Сервер ответил не правильным HTTP кодом. Ожидался 201, но получен "%1 %2". - + Error writing metadata to the database Ошибка записи метаданных в базу данных @@ -2260,18 +2260,18 @@ It is not advisable to use it. Этот каталог не должен переименовываться. Присвойте ему изначальное имя: Shared. - + The file was renamed but is part of a read only share. The original file was restored. Файл переименован на удаленном общем ресурсе только для чтения. Файл был восстановлен. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Сервер ответил не правильным HTTP кодом. Ожидался 201, но получен "%1 %2". - - + + Error writing metadata to the database Ошибка записи метаданных в базу данных @@ -2305,7 +2305,7 @@ It is not advisable to use it. Закачка %1 превышает квоту для каталога - + Error writing metadata to the database Ошибка записи метаданных в базу данных @@ -2379,42 +2379,42 @@ It is not advisable to use it. TextLabel - + Time Время - + File Файл - + Folder Каталог - + Action Действие - + Size Размер - + Local sync protocol Локальный протокол синхронизации - + Copy Копировать - + Copy the activity list to the clipboard. Скопировать журнал синхронизации в буфер обмена. @@ -3431,17 +3431,17 @@ It is not advisable to use it. OCC::ValidateChecksumHeader - + The checksum header is malformed. Некорректная контрольная сумма заголовка - + The checksum header contained an unknown checksum type '%1' Заголовок контрольной суммы содержал неизвестный тип '%1' контрольной суммы - + The downloaded file does not match the checksum, it will be resumed. Загруженный файл не соответствует контрольной сумме, операция будет возобновлена. diff --git a/translations/client_sk.ts b/translations/client_sk.ts index 81edf3b48..313e9b0ad 100644 --- a/translations/client_sk.ts +++ b/translations/client_sk.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database Chyba pri zápise metadát do databázy @@ -1282,22 +1282,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> - + Reading from keychain failed with error: '%1' - + Enter Password Vložte heslo - + <a href="%1">Click here</a> to request an app password from the web interface. @@ -1417,12 +1417,12 @@ Items where deletion is allowed will be deleted if they prevent a directory from - + Copy the issues list to the clipboard. - + Copy Kopírovať @@ -2092,7 +2092,7 @@ Nie je vhodné ju používať. OCC::PropagateDirectory - + Error writing metadata to the database Chyba pri zápise metadát do databázy @@ -2130,17 +2130,17 @@ Nie je vhodné ju používať. - + File %1 cannot be saved because of a local file name clash! Súbor %1 nie je možné uložiť, pretože jeho názov koliduje s názvom lokálneho súboru! - + File has changed since discovery Súbor sa medzitým zmenil - + Error writing metadata to the database Chyba pri zápise metadát do databázy @@ -2216,12 +2216,12 @@ Nie je vhodné ju používať. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. Súbor bol odobratý zo zdieľania len na čítanie. Súbor bol obnovený. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". Server vrátil neplatný HTTP kód. Očakávaný bol 204, ale vrátený bol "%1 %2". @@ -2229,12 +2229,12 @@ Nie je vhodné ju používať. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Server vrátil neplatný HTTP kód. Očakávaný bol 201, ale vrátený bol "%1 %2". - + Error writing metadata to the database Chyba pri zápise metadát do databázy @@ -2252,18 +2252,18 @@ Nie je vhodné ju používať. Tento priečinok nemôže byť premenovaný. Prosím, vráťte mu meno Shared. - + The file was renamed but is part of a read only share. The original file was restored. Súbor bol premenovaný, ale je súčasťou zdieľania len na čítanie. Pôvodný súbor bol obnovený. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Server vrátil neplatný HTTP kód. Očakávaný bol 201, ale vrátený bol "%1 %2". - - + + Error writing metadata to the database Chyba pri zápise metadát do databázy @@ -2297,7 +2297,7 @@ Nie je vhodné ju používať. - + Error writing metadata to the database Chyba pri zápise metadát do databázy @@ -2371,42 +2371,42 @@ Nie je vhodné ju používať. Štítok - + Time Čas - + File Súbor - + Folder Priečinok - + Action Akcia - + Size Veľkosť - + Local sync protocol Lokálny protokol synchronizácie - + Copy Kopírovať - + Copy the activity list to the clipboard. Skopírovať zoznam aktivít do schránky. @@ -3423,17 +3423,17 @@ Nie je vhodné ju používať. OCC::ValidateChecksumHeader - + The checksum header is malformed. Hlavička kontrolného súčtu je poškodená. - + The checksum header contained an unknown checksum type '%1' Hlavička kontrolného súčtu obsahovala neznámy typ kontrolného súčtu „%1“ - + The downloaded file does not match the checksum, it will be resumed. Stiahnutý súbor nemá správny kontrolný súčet, bude stiahnutý znovu. diff --git a/translations/client_sl.ts b/translations/client_sl.ts index 4e9686459..2e13e7662 100644 --- a/translations/client_sl.ts +++ b/translations/client_sl.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database Napaka zapisovanja metapodatkov v podatkovno zbirko @@ -1291,22 +1291,22 @@ Z nadaljevanjem usklajevanja bodo vse trenutne datoteke prepisane s starejšimi OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> Vnesite geslo %1:<br><br>Uporabnik: %2<br>Račun: %3<br> - + Reading from keychain failed with error: '%1' Branje iz ključa je spodletelo z napako: '%1' - + Enter Password Vnos gesla - + <a href="%1">Click here</a> to request an app password from the web interface. <a href="%1">Kliknite tu</a> za dodelitev gesla za program prek spletnega vmesnika. @@ -1428,12 +1428,12 @@ Predmeti na mestu, kjer je brisanje dovoljeno, bodo izbisani, v kolikor zaradi n Pokaži prezrte datoteke - + Copy the issues list to the clipboard. Kopiraj seznam napak v odložišče. - + Copy Kopiraj @@ -2103,7 +2103,7 @@ Uporaba ni priporočljiva. OCC::PropagateDirectory - + Error writing metadata to the database Napaka zapisovanja metapodatkov v podatkovno zbirko @@ -2141,17 +2141,17 @@ Uporaba ni priporočljiva. Prejeta datoteka je prazna, čeprav je na strežniku velikosti %1. - + File %1 cannot be saved because of a local file name clash! Datoteke %1 ni mogoče shraniti zaradi neskladja z imenom obstoječe datoteke! - + File has changed since discovery Datoteka je bila spremenjena po usklajevanju seznama datotek - + Error writing metadata to the database Napaka zapisovanja metapodatkov v podatkovno zbirko @@ -2227,12 +2227,12 @@ Uporaba ni priporočljiva. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. Datoteka je bila odstranjena iz mesta v souporabi, vendar je uspešno obnovljena. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". S strežnika je vrnjen neveljaven odziv HTTP. Pričakovan je 204, prejet pa je bil "%1 %2". @@ -2240,12 +2240,12 @@ Uporaba ni priporočljiva. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". S strežnika je vrnjen neveljaven odziv HTTP. Pričakovan je 201, prejet pa je bil "%1 %2". - + Error writing metadata to the database Napaka zapisovanja metapodatkov v podatkovno zbirko @@ -2263,18 +2263,18 @@ Uporaba ni priporočljiva. Te mape ni dovoljeno preimenovati. Preimenujte jo nazaj na privzeto vrednost. - + The file was renamed but is part of a read only share. The original file was restored. Datoteka je preimenovana, vendar je označena za souporabo le za branje. Obnovljena je izvirna datoteka. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". S strežnika je vrnjen neveljaven odziv HTTP. Pričakovan je 201, prejet pa je bil "%1 %2". - - + + Error writing metadata to the database Napaka zapisovanja metapodatkov v podatkovno zbirko @@ -2308,7 +2308,7 @@ Uporaba ni priporočljiva. - + Error writing metadata to the database Napaka zapisovanja metapodatkov v podatkovno zbirko @@ -2382,42 +2382,42 @@ Uporaba ni priporočljiva. Besedilna oznaka - + Time Čas - + File Datoteka - + Folder Mapa - + Action Dejanje - + Size Velikost - + Local sync protocol Krajevni protokol usklajevanja - + Copy Kopiraj - + Copy the activity list to the clipboard. Kopiraj seznam opravil v odložišče. @@ -3434,17 +3434,17 @@ Uporaba ni priporočljiva. OCC::ValidateChecksumHeader - + The checksum header is malformed. Glava nadzorne vsote je napačno oblikovana. - + The checksum header contained an unknown checksum type '%1' Glava nadzorne vsote vsebuje neznano vrsto zapisa '%1' - + The downloaded file does not match the checksum, it will be resumed. Prejeta datoteka ni skladna z nadzorno vsoto te datoteke, zato bo prenos ponovljen. diff --git a/translations/client_sr.ts b/translations/client_sr.ts index 7ba439af9..2fdc69975 100644 --- a/translations/client_sr.ts +++ b/translations/client_sr.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database @@ -1282,22 +1282,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> - + Reading from keychain failed with error: '%1' - + Enter Password Унесите лозинку - + <a href="%1">Click here</a> to request an app password from the web interface. @@ -1417,12 +1417,12 @@ Items where deletion is allowed will be deleted if they prevent a directory from - + Copy the issues list to the clipboard. - + Copy Копирај @@ -2092,7 +2092,7 @@ It is not advisable to use it. OCC::PropagateDirectory - + Error writing metadata to the database @@ -2130,17 +2130,17 @@ It is not advisable to use it. - + File %1 cannot be saved because of a local file name clash! Фајл %1 се не може сачувати јер се судара са називом локалног фајла! - + File has changed since discovery Фајл је измењен у међувремену - + Error writing metadata to the database @@ -2216,12 +2216,12 @@ It is not advisable to use it. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. Фајл је уклоњен из дељења које је само за читање. Зато је враћен. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". Сервер је вратио лош ХТТП код. Очекивано је 204 али је примљено „%1 %2“. @@ -2229,12 +2229,12 @@ It is not advisable to use it. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Сервер је вратио лош ХТТП код. Очекивано је 201 али је примљено „%1 %2“. - + Error writing metadata to the database @@ -2252,18 +2252,18 @@ It is not advisable to use it. Ова фасцикла се не сме преименовати. Молим вас вратите назив у „Shared“. - + The file was renamed but is part of a read only share. The original file was restored. Фајл је био преименован али је део дељења које је само за читање. Оригинални фајл је враћен. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Сервер је вратио лош ХТТП код. Очекивано је 201 али је примљено „%1 %2“. - - + + Error writing metadata to the database @@ -2297,7 +2297,7 @@ It is not advisable to use it. - + Error writing metadata to the database @@ -2371,42 +2371,42 @@ It is not advisable to use it. Текст ознака - + Time време - + File фајл - + Folder фасцикла - + Action радња - + Size величина - + Local sync protocol Локални протокол синхронизације - + Copy Копирај - + Copy the activity list to the clipboard. Копирај активност у клипборд. @@ -3423,17 +3423,17 @@ It is not advisable to use it. OCC::ValidateChecksumHeader - + The checksum header is malformed. Заглавље контролне суме је лоше формирано. - + The checksum header contained an unknown checksum type '%1' - + The downloaded file does not match the checksum, it will be resumed. Преузети фајл се не поклапа с контролном сумом. Биће настављено. diff --git a/translations/client_sv.ts b/translations/client_sv.ts index 9b08dfd01..bffa2fa15 100644 --- a/translations/client_sv.ts +++ b/translations/client_sv.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database Fel vid skrivning av metadata till databasen @@ -1286,22 +1286,22 @@ Om du fortsätter synkningen kommer alla dina filer återställas med en äldre OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> Vänligen ange %1 lösenord:<br><br>Användare: %2<br>Konto: %3<br> - + Reading from keychain failed with error: '%1' Avläsning från kedjan misslyckades med felkod: '%1' - + Enter Password Ange lösenord - + <a href="%1">Click here</a> to request an app password from the web interface. <a href="%1">Klicka här</a> för att begära ett app-lösenord från webbgränssnittet. @@ -1423,12 +1423,12 @@ Objekt som tillåter radering kommer tas bort om de förhindrar en mapp att tas Visa ignorerade filer - + Copy the issues list to the clipboard. Kopiera fellistan till klippbordet. - + Copy Kopiera @@ -2098,7 +2098,7 @@ Det är inte lämpligt använda den. OCC::PropagateDirectory - + Error writing metadata to the database Fel vid skrivning av metadata till databasen @@ -2136,17 +2136,17 @@ Det är inte lämpligt använda den. Den nedladdade filen är tom men servern sa att den skulle vara %1. - + File %1 cannot be saved because of a local file name clash! Fil %1 kan inte sparas eftersom namnet krockar med en lokal fil! - + File has changed since discovery Filen har ändrats sedan upptäckten - + Error writing metadata to the database Fel vid skrivning av metadata till databasen @@ -2222,12 +2222,12 @@ Det är inte lämpligt använda den. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. Den här filen har tagits bort från en endast-läsbar delning. Den återställdes. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". Felaktig HTTP-kod i svaret från servern. '204' förväntades, men "%1 %2" mottogs. @@ -2235,12 +2235,12 @@ Det är inte lämpligt använda den. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Felaktig HTTP-kod i svaret från servern. '201' förväntades, men "%1 %2" mottogs. - + Error writing metadata to the database Fel vid skrivning av metadata till databasen @@ -2258,18 +2258,18 @@ Det är inte lämpligt använda den. Denna mapp får ej döpas om. Vänligen döp den till Delad igen. - + The file was renamed but is part of a read only share. The original file was restored. En fil döptes om men är en del av en endast-läsbar delning. Original filen återställdes. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Felaktig HTTP-kod i svaret från servern. '201' förväntades, men "%1 %2" mottogs. - - + + Error writing metadata to the database Fel vid skrivning av metadata till databasen @@ -2303,7 +2303,7 @@ Det är inte lämpligt använda den. Uppladdningen av %1 överstiger kvoten för mappen - + Error writing metadata to the database Fel vid skrivning av metadata till databasen @@ -2377,42 +2377,42 @@ Det är inte lämpligt använda den. Textetikett - + Time Tid - + File Fil - + Folder Mapp - + Action Ågärd - + Size Storlek - + Local sync protocol Lokalt synkprotokoll - + Copy Kopiera - + Copy the activity list to the clipboard. Kopiera aktivitetslistan till urklipp. @@ -3429,17 +3429,17 @@ Det är inte lämpligt använda den. OCC::ValidateChecksumHeader - + The checksum header is malformed. Checksummans huvud är felformaterad. - + The checksum header contained an unknown checksum type '%1' Checksummans huvud innehåller en okänd checksumma av typ '%1' - + The downloaded file does not match the checksum, it will be resumed. Den nedladdade filen stämmer inte med checksumman, den kommer startas om. diff --git a/translations/client_th.ts b/translations/client_th.ts index 842bb02d1..b75de6f97 100644 --- a/translations/client_th.ts +++ b/translations/client_th.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database ข้อผิดพลาดในการเขียนข้อมูลเมตาไปยังฐานข้อมูล @@ -1293,22 +1293,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> กรุณากรอกรหัสผ่าน %1:<br><br>ผู้ใช้: %2<br>บัญชี: %3<br> - + Reading from keychain failed with error: '%1' อ่านจาก Keychain ล้มเหลวด้วยข้อผิดพลาด: '%1' - + Enter Password ป้อนรหัสผ่าน - + <a href="%1">Click here</a> to request an app password from the web interface. <a href="%1">คลิกที่นี่</a> เพื่อขอรหัสผ่านแอพฯ จากเว็บอินเตอร์เฟส @@ -1430,12 +1430,12 @@ Items where deletion is allowed will be deleted if they prevent a directory from แสดงไฟล์ที่ถูกเพิกเฉย - + Copy the issues list to the clipboard. คัดลอกรายการปัญหาไปยังคลิปบอร์ด - + Copy คัดลอก @@ -2104,7 +2104,7 @@ It is not advisable to use it. OCC::PropagateDirectory - + Error writing metadata to the database ข้อผิดพลาดในการเขียนข้อมูลเมตาไปยังฐานข้อมูล @@ -2142,17 +2142,17 @@ It is not advisable to use it. ไฟล์ที่ดาวน์โหลดว่างเปล่าแม้ว่าเซิร์ฟเวอร์ประกาศว่าควรจะเป็น %1 - + File %1 cannot be saved because of a local file name clash! ไฟล์ %1 ไม่สามารถบันทึกได้เพราะชื่อไฟล์ต้นทางเหมือนกัน! - + File has changed since discovery ไฟล์มีการเปลี่ยนแปลงตั้งแต่ถูกพบ - + Error writing metadata to the database ข้อผิดพลาดในการเขียนข้อมูลเมตาไปยังฐานข้อมูล @@ -2228,12 +2228,12 @@ It is not advisable to use it. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. ไฟล์ถูกลบออกจากการแชร์เพื่ออ่านเพียงอย่างเดียว ได้รับการกู้คืน - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". รหัส HTTP ผิดพลาด โดยเซิร์ฟเวอร์คาดว่าจะได้รับรหัส 204 แต่กลับได้รับ "%1 %2" @@ -2241,12 +2241,12 @@ It is not advisable to use it. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". รหัส HTTP ผิดพลาด โดยเซิร์ฟเวอร์คาดว่าจะได้รับรหัส 201 แต่กลับได้รับ "%1 %2" - + Error writing metadata to the database ข้อผิดพลาดในการเขียนข้อมูลเมตาไปยังฐานข้อมูล @@ -2264,18 +2264,18 @@ It is not advisable to use it. โฟลเดอร์นี้จะต้องไม่ถูกเปลี่ยนชื่อ กรุณาตั้งชื่อมันให้เหมือนตอนที่แชร์ - + The file was renamed but is part of a read only share. The original file was restored. ไฟล์ที่ถูกเปลี่ยนชื่อ แต่เป็นส่วนหนึ่งของการแชร์เพื่ออ่านเพียงอย่างเดียว ไฟล์ต้นฉบับจะถูกกู้คืน - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". รหัส HTTP ผิดพลาด โดยเซิร์ฟเวอร์คาดว่าจะได้รับรหัส 201 แต่กลับได้รับ "%1 %2" - - + + Error writing metadata to the database ข้อผิดพลาดในการเขียนข้อมูลเมตาไปยังฐานข้อมูล @@ -2309,7 +2309,7 @@ It is not advisable to use it. การอัพโหลด %1 เกินโควต้าของโฟลเดอร์ - + Error writing metadata to the database ข้อผิดพลาดในการเขียนข้อมูลเมตาไปยังฐานข้อมูล @@ -2383,42 +2383,42 @@ It is not advisable to use it. ป้ายข้อความ - + Time เวลา - + File ไฟล์ - + Folder แฟ้มเอกสาร - + Action การกระทำ - + Size ขนาด - + Local sync protocol โปรโตคอลการประสานข้อมูลต้นทาง - + Copy คัดลอก - + Copy the activity list to the clipboard. คัดลอกรายชื่อกิจกรรมไปยังคลิปบอร์ด @@ -3434,17 +3434,17 @@ It is not advisable to use it. OCC::ValidateChecksumHeader - + The checksum header is malformed. การตรวจสอบส่วนหัวผิดรูปแบบ - + The checksum header contained an unknown checksum type '%1' จากการตรวจสอบส่วนหัวมีประเภทที่ไม่รู้จัก '%1' - + The downloaded file does not match the checksum, it will be resumed. ไฟล์ที่ดาวน์โหลดมาไม่ตรงกับการตรวจสอบที่จะกลับมา diff --git a/translations/client_tr.ts b/translations/client_tr.ts index 50b0f11dc..bfc82ef12 100644 --- a/translations/client_tr.ts +++ b/translations/client_tr.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database Veritabanına üstveri yazma hatası @@ -1282,22 +1282,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> - + Reading from keychain failed with error: '%1' Anahtar zinciri okuması hatayla sonuçlandı: '%1' - + Enter Password Parolayı Girin - + <a href="%1">Click here</a> to request an app password from the web interface. @@ -1419,12 +1419,12 @@ Bir dizinin silinmesine engel oluyorsa silmeye izin verilen yerlerdeki ögeler s - + Copy the issues list to the clipboard. - + Copy Kopyala @@ -2093,7 +2093,7 @@ Kullanmanız önerilmez. OCC::PropagateDirectory - + Error writing metadata to the database Veritabanına üstveri yazma hatası @@ -2131,17 +2131,17 @@ Kullanmanız önerilmez. Sunucu boyutunu %1 olarak duyurmasına rağmen indirilen dosya boş. - + File %1 cannot be saved because of a local file name clash! Yerel bir dosya ismi ile çakıştığından, %1 dosyası kaydedilemedi! - + File has changed since discovery Dosya, bulunduğundan itibaren değişmiş - + Error writing metadata to the database Veritabanına üstveri yazma hatası @@ -2217,12 +2217,12 @@ Kullanmanız önerilmez. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. Dosya salt okunur bir paylaşımdan kaldırılmıştı. Geri yüklendi. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". Sunucudan yanlış HTTP kodu döndü. 204 bekleniyordu, ancak "%1 %2" geldi. @@ -2230,12 +2230,12 @@ Kullanmanız önerilmez. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Sunucudan yanlış HTTP kodu döndü. 201 bekleniyordu, ancak "%1 %2" geldi. - + Error writing metadata to the database Veritabanına üstveri yazma hatası @@ -2253,18 +2253,18 @@ Kullanmanız önerilmez. Bu klasörün adı değiştirilmemelidir. Lütfen Shared olarak geri adlandırın. - + The file was renamed but is part of a read only share. The original file was restored. Dosya adlandırıldı ancak salt okunur paylaşımın bir parçası. Özgün dosya geri yüklendi. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Sunucudan yanlış HTTP kodu döndü. 201 bekleniyordu, ancak "%1 %2" geldi. - - + + Error writing metadata to the database Veritabanına üstveri yazma hatası @@ -2298,7 +2298,7 @@ Kullanmanız önerilmez. - + Error writing metadata to the database Veritabanına üstveri yazma hatası @@ -2372,42 +2372,42 @@ Kullanmanız önerilmez. MetinEtiketi - + Time Zaman - + File Dosya - + Folder Klasör - + Action Eylem - + Size Boyut - + Local sync protocol Yerel eşitleme protokolü - + Copy Kopyala - + Copy the activity list to the clipboard. Etkinlik listesini panoya kopyala. @@ -3424,17 +3424,17 @@ Kullanmanız önerilmez. OCC::ValidateChecksumHeader - + The checksum header is malformed. Sağlama toplam başlığı bozulmuş. - + The checksum header contained an unknown checksum type '%1' Sağlama başlığı bilinmeyen '%1' sağlama tipi içeriyor - + The downloaded file does not match the checksum, it will be resumed. İndirilen dosya sağlama toplamı ile eşleşmiyor, devam edilecek. diff --git a/translations/client_uk.ts b/translations/client_uk.ts index fdcaa653c..e0f23b7f2 100644 --- a/translations/client_uk.ts +++ b/translations/client_uk.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database @@ -1282,22 +1282,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> - + Reading from keychain failed with error: '%1' - + Enter Password Введіть Пароль - + <a href="%1">Click here</a> to request an app password from the web interface. @@ -1417,12 +1417,12 @@ Items where deletion is allowed will be deleted if they prevent a directory from - + Copy the issues list to the clipboard. - + Copy Копіювати @@ -2091,7 +2091,7 @@ It is not advisable to use it. OCC::PropagateDirectory - + Error writing metadata to the database @@ -2129,17 +2129,17 @@ It is not advisable to use it. - + File %1 cannot be saved because of a local file name clash! Файл %1 не збережено через локальний конфлікт назви файлу! - + File has changed since discovery Файл змінився з моменту знаходження - + Error writing metadata to the database @@ -2215,12 +2215,12 @@ It is not advisable to use it. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. Файл видалено з опублікованої теки з правами тільки на перегляд. Файл відновлено. - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". Сервер відповів неправильним HTTP кодом. Очікувався 204, але отримано "%1 %2". @@ -2228,12 +2228,12 @@ It is not advisable to use it. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Сервер відповів неправильним HTTP кодом. Очікувався 201, але отримано "%1 %2". - + Error writing metadata to the database @@ -2251,18 +2251,18 @@ It is not advisable to use it. Цю теку не можна перейменувати. Будь ласка, поверніть їй ім'я Shared. - + The file was renamed but is part of a read only share. The original file was restored. Файл було перейменовано, але він розташований в теці з правами лише на перегляд. Відновлено оригінальний файл. - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Сервер відповів неправильним HTTP кодом. Очікувався 201, але отримано "%1 %2". - - + + Error writing metadata to the database @@ -2296,7 +2296,7 @@ It is not advisable to use it. - + Error writing metadata to the database @@ -2370,42 +2370,42 @@ It is not advisable to use it. Мітка - + Time Час - + File Файл - + Folder Тека - + Action Дія - + Size Розмір - + Local sync protocol - + Copy Копіювати - + Copy the activity list to the clipboard. Скопіювати протокол синхронізації до буферу обміну. @@ -3422,17 +3422,17 @@ It is not advisable to use it. OCC::ValidateChecksumHeader - + The checksum header is malformed. Заголовок контрольної суми пошкоджено. - + The checksum header contained an unknown checksum type '%1' - + The downloaded file does not match the checksum, it will be resumed. Завантажений файл не відповідає контрольній сумі, його буде відновлено. diff --git a/translations/client_zh_CN.ts b/translations/client_zh_CN.ts index 6ccee25e8..cb8047210 100644 --- a/translations/client_zh_CN.ts +++ b/translations/client_zh_CN.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database 向数据库写入元数据错误 @@ -1291,22 +1291,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> 请输入 %1 密码:<br><br>用户:%2<br>账户:%3<br> - + Reading from keychain failed with error: '%1' 获取密钥链失败,错误: '%1' - + Enter Password 输入密码 - + <a href="%1">Click here</a> to request an app password from the web interface. <a href="%1">点击这里</a>从 web 界面请求一个 app 密码。 @@ -1428,12 +1428,12 @@ Items where deletion is allowed will be deleted if they prevent a directory from - + Copy the issues list to the clipboard. - + Copy 复制 @@ -2102,7 +2102,7 @@ It is not advisable to use it. OCC::PropagateDirectory - + Error writing metadata to the database 向数据库写入元数据错误 @@ -2140,17 +2140,17 @@ It is not advisable to use it. 虽然服务器宣称已完成 %1,但实际下载文件为空。 - + File %1 cannot be saved because of a local file name clash! 由于本地文件名冲突,文件 %1 无法保存。 - + File has changed since discovery 自从发现文件以来,它已经被改变了 - + Error writing metadata to the database 向数据库写入元数据错误 @@ -2226,12 +2226,12 @@ It is not advisable to use it. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. 文件已经移除只读共享,并已经恢复。 - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". 服务器返回的 HTTP 状态错误,应返回 204,但返回的是“%1 %2”。 @@ -2239,12 +2239,12 @@ It is not advisable to use it. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". 服务器返回的 HTTP 状态错误,应返回 201,但返回的是“%1 %2”。 - + Error writing metadata to the database 向数据库写入元数据错误 @@ -2262,18 +2262,18 @@ It is not advisable to use it. 文件无法更名,请改回“Shared”。 - + The file was renamed but is part of a read only share. The original file was restored. 文件已经更名,但这是某个只读分享的一部分,原文件已经恢复。 - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". 服务器返回的 HTTP 状态错误,应返回 201,但返回的是“%1 %2”。 - - + + Error writing metadata to the database 向数据库写入元数据错误 @@ -2307,7 +2307,7 @@ It is not advisable to use it. - + Error writing metadata to the database 向数据库写入元数据错误 @@ -2381,42 +2381,42 @@ It is not advisable to use it. 文本标签 - + Time 时间 - + File 文件 - + Folder 文件夹 - + Action 动作 - + Size 大小 - + Local sync protocol 本地同步协议 - + Copy 复制 - + Copy the activity list to the clipboard. 复制动态列表到剪贴板。 @@ -3433,17 +3433,17 @@ It is not advisable to use it. OCC::ValidateChecksumHeader - + The checksum header is malformed. 校验异常 - + The checksum header contained an unknown checksum type '%1' 校验头包含未知的校验类型 '%1' - + The downloaded file does not match the checksum, it will be resumed. 下载的文件校验失败,将会回退。 diff --git a/translations/client_zh_TW.ts b/translations/client_zh_TW.ts index 17235c7dd..494437bf6 100644 --- a/translations/client_zh_TW.ts +++ b/translations/client_zh_TW.ts @@ -596,7 +596,7 @@ OCC::CleanupPollsJob - + Error writing metadata to the database 寫入後設資料(metadata) 時發生錯誤 @@ -1282,22 +1282,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>User: %2<br>Account: %3<br> - + Reading from keychain failed with error: '%1' 從授權碼讀取資料時失敗,錯誤: '%1' - + Enter Password 輸入密碼 - + <a href="%1">Click here</a> to request an app password from the web interface. @@ -1419,12 +1419,12 @@ Items where deletion is allowed will be deleted if they prevent a directory from - + Copy the issues list to the clipboard. - + Copy 複製 @@ -2094,7 +2094,7 @@ It is not advisable to use it. OCC::PropagateDirectory - + Error writing metadata to the database 寫入後設資料(metadata) 時發生錯誤 @@ -2132,17 +2132,17 @@ It is not advisable to use it. - + File %1 cannot be saved because of a local file name clash! 檔案 %1 無法存檔,因為本地端的檔案名稱已毀損! - + File has changed since discovery 尋找的過程中檔案已經被更改 - + Error writing metadata to the database 寫入後設資料(metadata) 時發生錯誤 @@ -2218,12 +2218,12 @@ It is not advisable to use it. OCC::PropagateRemoteDelete - + The file has been removed from a read only share. It was restored. 已復原從只供讀取的分享中被移除檔案 - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". 從伺服器端回傳錯誤的 HTTP 代碼, 預期是 204, 但是接收到的是 "%1 %2". @@ -2231,12 +2231,12 @@ It is not advisable to use it. OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". 從伺服器端回傳錯誤的 HTTP 代碼, 預期是 201, 但是接收到的是 "%1 %2". - + Error writing metadata to the database 寫入後設資料(metadata) 時發生錯誤 @@ -2254,18 +2254,18 @@ It is not advisable to use it. 這個資料夾已經被分享,不應該被更名,請改回原本的名稱。 - + The file was renamed but is part of a read only share. The original file was restored. 檔案更名完成,但這檔案是只供讀取的分享,原始檔案已被還原 - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". 從伺服器端回傳錯誤的 HTTP 代碼, 預期是 201, 但是接收到的是 "%1 %2". - - + + Error writing metadata to the database 寫入後設資料(metadata) 時發生錯誤 @@ -2299,7 +2299,7 @@ It is not advisable to use it. - + Error writing metadata to the database 寫入後設資料(metadata) 時發生錯誤 @@ -2373,42 +2373,42 @@ It is not advisable to use it. 文字標籤 - + Time 時間 - + File 檔案 - + Folder 資料夾 - + Action 動作 - + Size 大小 - + Local sync protocol 本機同步協定 - + Copy 複製 - + Copy the activity list to the clipboard. 複製活動列表到剪貼簿。 @@ -3425,17 +3425,17 @@ It is not advisable to use it. OCC::ValidateChecksumHeader - + The checksum header is malformed. 校驗碼異常。 - + The checksum header contained an unknown checksum type '%1' 校正資料含有未知的型態 '%1' - + The downloaded file does not match the checksum, it will be resumed. 下載的檔案驗證失敗,將會被還原 From eadc7917954aef2a8dc1d414384897eae646f7e1 Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Tue, 17 Oct 2017 12:43:06 +0200 Subject: [PATCH 13/45] [tx-robot] updated from transifex --- admin/win/nsi/l10n/Norwegian.nsh | 2 +- admin/win/nsi/l10n/Spanish.nsh | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/admin/win/nsi/l10n/Norwegian.nsh b/admin/win/nsi/l10n/Norwegian.nsh index c7ffdf74f..690c434a2 100644 --- a/admin/win/nsi/l10n/Norwegian.nsh +++ b/admin/win/nsi/l10n/Norwegian.nsh @@ -3,7 +3,7 @@ StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Vis versjonsmerknader" StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "Fant ${APPLICATION_EXECUTABLE}-prosess(er) som m stoppes.$\nVil du at installasjonsprogrammet skal stoppe dem for deg?" StrCpy $ConfirmEndProcess_KILLING_PROCESSES_TEXT "Terminerer ${APPLICATION_EXECUTABLE}-prosesser." StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Fant ikke prosess som skulle termineres!" -StrCpy $PageReinstall_NEW_Field_1 "En eldre versjon av ${APPLICATION_NAME} er installert p systemet ditt. Det anbefales at du avnistallerer den versjonen fr installering av ny versjon. Velg hva du vil gjre og klikk Neste for fortsette." +StrCpy $PageReinstall_NEW_Field_1 "En eldre versjon av ${APPLICATION_NAME} er installert p systemet ditt. Det anbefales at du avinstallerer den versjonen fr installering av ny versjon. Velg hva du vil gjre og klikk Neste for fortsette." StrCpy $PageReinstall_NEW_Field_2 "Avinstaller fr installering" StrCpy $PageReinstall_NEW_Field_3 "Ikke avinstaller" StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_TITLE "Allerede installert" diff --git a/admin/win/nsi/l10n/Spanish.nsh b/admin/win/nsi/l10n/Spanish.nsh index 2848e68c8..c0e518581 100644 --- a/admin/win/nsi/l10n/Spanish.nsh +++ b/admin/win/nsi/l10n/Spanish.nsh @@ -1,9 +1,9 @@ # Auto-generated - do not modify StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Mostrar las notas de la versin" -StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "El/los proceso/s ${APPLICATION_EXECUTABLE} debe/n ser detenidos.$\nQuiere que el instalador lo haga por usted?" -StrCpy $ConfirmEndProcess_KILLING_PROCESSES_TEXT "Deteniendo el/los proceso/s ${APPLICATION_EXECUTABLE}." +StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "El/los proceso(s) ${APPLICATION_EXECUTABLE} debe(n) ser detenido(s).$\nQuiere que el instalador lo haga por usted?" +StrCpy $ConfirmEndProcess_KILLING_PROCESSES_TEXT "Deteniendo el/los proceso(s) ${APPLICATION_EXECUTABLE}." StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Proceso a finalizar no encontrado!" -StrCpy $PageReinstall_NEW_Field_1 "Una versin anterior de ${APPLICATION_NAME} se encuentra instalada en el sistema. Se recomienda de instalar la versin actual antes de instalar la nueva. Seleccione la operacion deseada y haga click en Siguiente para continuar." +StrCpy $PageReinstall_NEW_Field_1 "Una versin anterior de ${APPLICATION_NAME} se encuentra instalada en el sistema. Se recomienda desinstalar la versin actual antes de instalar la nueva. Seleccione la operacion deseada y haga click en Siguiente para continuar." StrCpy $PageReinstall_NEW_Field_2 "Desinstalar antes de instalar" StrCpy $PageReinstall_NEW_Field_3 "No desinstalar" StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_TITLE "Ya est instalado" @@ -17,13 +17,13 @@ StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Elija la opcion de mantenim StrCpy $SEC_APPLICATION_DETAILS "Instalando ${APPLICATION_NAME} esenciales." StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Integracin para Windows Explorer" StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Instalando la integracin para Windows Explorer" -StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Acceso directo al programa Men de Inicio" +StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Acceso directo al programa en Men de Inicio" StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Aadiendo accesos directos para ${APPLICATION_NAME} en el Men de Inicio." StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Acceso directo de Escritorio" StrCpy $OPTION_SECTION_SC_DESKTOP_DetailPrint "Creando accesos directos de escritorio" -StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_SECTION "Atajo de accceso rpido" +StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_SECTION "Atajo de acceso rpido" StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_DetailPrint "Creando un Acceso Directo al Lanzador Rpido" -StrCpy $OPTION_SECTION_SC_APPLICATION_Desc "${APPLICATION_NAME} esencial." +StrCpy $OPTION_SECTION_SC_APPLICATION_Desc "${APPLICATION_NAME} esenciales." StrCpy $OPTION_SECTION_SC_START_MENU_Desc "Acceso Directo de ${APPLICATION_NAME}" StrCpy $OPTION_SECTION_SC_DESKTOP_Desc "Acceso Directo de Escritorio para ${APPLICATION_NAME}" StrCpy $OPTION_SECTION_SC_QUICK_LAUNCH_Desc "Lanzador Rpido de Accesos Director para ${APPLICATION_NAME}." From d339b68715f71c13860f6b1135a7d0a6bf3ac647 Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Thu, 5 Oct 2017 21:43:49 +0200 Subject: [PATCH 14/45] Checksums: Use addData function Our implementation had bad error handling. This one now uses a new Qt5 addData function. owncloud/enterprise#2252 --- src/common/filesystembase.cpp | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/src/common/filesystembase.cpp b/src/common/filesystembase.cpp index 879b2f85c..1d95e3918 100644 --- a/src/common/filesystembase.cpp +++ b/src/common/filesystembase.cpp @@ -358,26 +358,19 @@ QString FileSystem::fileSystemForPath(const QString &path) #define BUFSIZE qint64(500 * 1024) // 500 KiB -static QByteArray readToCrypto(const QString &filename, QCryptographicHash::Algorithm algo) -{ - QFile file(filename); - const qint64 bufSize = qMin(BUFSIZE, file.size() + 1); - QByteArray buf(bufSize, Qt::Uninitialized); - QByteArray arr; - QCryptographicHash crypto(algo); +static QByteArray readToCrypto( const QString& filename, QCryptographicHash::Algorithm algo ) + { + QFile file(filename); + QByteArray arr; + QCryptographicHash crypto( algo ); - if (file.open(QIODevice::ReadOnly)) { - qint64 size; - while (!file.atEnd()) { - size = file.read(buf.data(), bufSize); - if (size > 0) { - crypto.addData(buf.data(), size); - } - } - arr = crypto.result().toHex(); - } - return arr; -} + if (file.open(QIODevice::ReadOnly)) { + if (crypto.addData(&file)) { + arr = crypto.result().toHex(); + } + } + return arr; + } QByteArray FileSystem::calcMd5(const QString &filename) { From af24b4132d131886e65ebb12a480f73b87902f42 Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Tue, 17 Oct 2017 16:53:11 +0200 Subject: [PATCH 15/45] Packaging: Require ZLIB For owncloud/enterprise#2295 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c2540f689..022aaccc2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -199,7 +199,7 @@ if(BUILD_CLIENT) endif() endif() - find_package(ZLIB) + find_package(ZLIB REQUIRED) endif() if (NOT DEFINED APPLICATION_ICON_NAME) From bf393439206c3294227a365153efd97bad91d7f6 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Fri, 13 Oct 2017 14:56:40 +0200 Subject: [PATCH 16/45] Sync: Add capability for invalid filename regexes #6092 --- src/libsync/capabilities.cpp | 5 +++++ src/libsync/capabilities.h | 11 +++++++++++ src/libsync/syncengine.cpp | 17 +++++++++++++---- test/testsyncengine.cpp | 30 ++++++++++++++++++++++++++++++ 4 files changed, 59 insertions(+), 4 deletions(-) diff --git a/src/libsync/capabilities.cpp b/src/libsync/capabilities.cpp index 4dfc33b89..fcf71b7e9 100644 --- a/src/libsync/capabilities.cpp +++ b/src/libsync/capabilities.cpp @@ -145,4 +145,9 @@ QList Capabilities::httpErrorCodesThatResetFailingChunkedUploads() const } return list; } + +QString Capabilities::invalidFilenameRegex() const +{ + return _capabilities["dav"].toMap()["invalidFilenameRegex"].toString(); +} } diff --git a/src/libsync/capabilities.h b/src/libsync/capabilities.h index 9b15edb9c..f9f6614a4 100644 --- a/src/libsync/capabilities.h +++ b/src/libsync/capabilities.h @@ -105,6 +105,17 @@ public: */ QList httpErrorCodesThatResetFailingChunkedUploads() const; + /** + * Regex that, if contained in a filename, will result in it not being uploaded. + * + * For servers older than 8.1.0 it defaults to [\\:?*"<>|] + * For servers >= that version, it defaults to the empty regex (the server + * will indicate invalid characters through an upload error) + * + * Note that it just needs to be contained. The regex [ab] is contained in "car". + */ + QString invalidFilenameRegex() const; + private: QVariantMap _capabilities; }; diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index 8bb336865..f2fd135ba 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -960,11 +960,20 @@ void SyncEngine::slotDiscoveryJobFinished(int discoveryResult) } // Check for invalid character in old server version - if (_account->serverVersionInt() < Account::makeServerVersion(8, 1, 0)) { - // Server version older than 8.1 don't support these character in filename. - static const QRegExp invalidCharRx("[\\\\:?*\"<>|]"); + QString invalidFilenamePattern = _account->capabilities().invalidFilenameRegex(); + if (invalidFilenamePattern.isNull() + && _account->serverVersionInt() < Account::makeServerVersion(8, 1, 0)) { + // Server versions older than 8.1 don't support some characters in filenames. + // If the capability is not set, default to a pattern that avoids uploading + // files with names that contain these. + // It's important to respect the capability also for older servers -- the + // version check doesn't make sense for custom servers. + invalidFilenamePattern = "[\\\\:?*\"<>|]"; + } + if (!invalidFilenamePattern.isEmpty()) { + const QRegExp invalidFilenameRx(invalidFilenamePattern); for (auto it = syncItems.begin(); it != syncItems.end(); ++it) { - if ((*it)->_direction == SyncFileItem::Up && (*it)->destination().contains(invalidCharRx)) { + if ((*it)->_direction == SyncFileItem::Up && (*it)->destination().contains(invalidFilenameRx)) { (*it)->_errorString = tr("File name contains at least one invalid character"); (*it)->_instruction = CSYNC_INSTRUCTION_IGNORE; } diff --git a/test/testsyncengine.cpp b/test/testsyncengine.cpp index b925c83cc..591ca653f 100644 --- a/test/testsyncengine.cpp +++ b/test/testsyncengine.cpp @@ -667,6 +667,36 @@ private slots: fakeFolder.remoteModifier().create("A/a6", 16, 'A'); QVERIFY(!fakeFolder.syncOnce()); } + + // Tests the behavior of invalid filename detection + void testInvalidFilenameRegex() + { + FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() }; + + // For current servers, no characters are forbidden + fakeFolder.syncEngine().account()->setServerVersion("10.0.0"); + fakeFolder.localModifier().insert("A/\\:?*\"<>|.txt"); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + + // For legacy servers, some characters were forbidden by the client + fakeFolder.syncEngine().account()->setServerVersion("8.0.0"); + fakeFolder.localModifier().insert("B/\\:?*\"<>|.txt"); + QVERIFY(fakeFolder.syncOnce()); + QVERIFY(!fakeFolder.currentRemoteState().find("B/\\:?*\"<>|.txt")); + + // We can override that by setting the capability + fakeFolder.syncEngine().account()->setCapabilities({ { "dav", QVariantMap{ { "invalidFilenameRegex", "" } } } }); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + + // Check that new servers also accept the capability + fakeFolder.syncEngine().account()->setServerVersion("10.0.0"); + fakeFolder.syncEngine().account()->setCapabilities({ { "dav", QVariantMap{ { "invalidFilenameRegex", "my[fgh]ile" } } } }); + fakeFolder.localModifier().insert("C/myfile.txt"); + QVERIFY(fakeFolder.syncOnce()); + QVERIFY(!fakeFolder.currentRemoteState().find("C/myfile.txt")); + } }; QTEST_GUILESS_MAIN(TestSyncEngine) From 726cbc160cdac076a782b6d03973b70d362b73ab Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Wed, 18 Oct 2017 02:19:58 +0200 Subject: [PATCH 17/45] [tx-robot] updated from transifex --- mirall.desktop.in | 3 +++ translations/client_ca.ts | 32 ++++++++++++------------ translations/client_cs.ts | 32 ++++++++++++------------ translations/client_de.ts | 32 ++++++++++++------------ translations/client_el.ts | 32 ++++++++++++------------ translations/client_en.ts | 32 ++++++++++++------------ translations/client_es.ts | 32 ++++++++++++------------ translations/client_es_AR.ts | 32 ++++++++++++------------ translations/client_et.ts | 32 ++++++++++++------------ translations/client_eu.ts | 32 ++++++++++++------------ translations/client_fa.ts | 32 ++++++++++++------------ translations/client_fi.ts | 32 ++++++++++++------------ translations/client_fr.ts | 32 ++++++++++++------------ translations/client_gl.ts | 32 ++++++++++++------------ translations/client_hu.ts | 32 ++++++++++++------------ translations/client_it.ts | 32 ++++++++++++------------ translations/client_ja.ts | 32 ++++++++++++------------ translations/client_nb_NO.ts | 32 ++++++++++++------------ translations/client_nl.ts | 32 ++++++++++++------------ translations/client_pl.ts | 32 ++++++++++++------------ translations/client_pt.ts | 48 ++++++++++++++++++------------------ translations/client_pt_BR.ts | 32 ++++++++++++------------ translations/client_ru.ts | 32 ++++++++++++------------ translations/client_sk.ts | 32 ++++++++++++------------ translations/client_sl.ts | 32 ++++++++++++------------ translations/client_sr.ts | 32 ++++++++++++------------ translations/client_sv.ts | 32 ++++++++++++------------ translations/client_th.ts | 32 ++++++++++++------------ translations/client_tr.ts | 32 ++++++++++++------------ translations/client_uk.ts | 32 ++++++++++++------------ translations/client_zh_CN.ts | 32 ++++++++++++------------ translations/client_zh_TW.ts | 32 ++++++++++++------------ 32 files changed, 507 insertions(+), 504 deletions(-) diff --git a/mirall.desktop.in b/mirall.desktop.in index e94639886..ce7f1ed34 100644 --- a/mirall.desktop.in +++ b/mirall.desktop.in @@ -222,6 +222,9 @@ X-GNOME-Autostart-Delay=3 # Translations +# Translations + + # Translations Comment[oc]=@APPLICATION_NAME@ sincronizacion del client GenericName[oc]=Dorsièr de Sincronizacion diff --git a/translations/client_ca.ts b/translations/client_ca.ts index 6f0b30e61..beca69057 100644 --- a/translations/client_ca.ts +++ b/translations/client_ca.ts @@ -3200,22 +3200,22 @@ No és aconsellada usar-la. - + Not allowed because you don't have permission to add parent folder - + Not allowed because you don't have permission to add files in that folder - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3340,54 +3340,54 @@ No és aconsellada usar-la. No es pot obrir el diari de sincronització - + File name contains at least one invalid character El nom del fitxer conté al menys un caràcter invàlid - - + + Ignored because of the "choose what to sync" blacklist S'ignora degut al filtre a «Trieu què sincronitzar» - + Not allowed because you don't have permission to add subfolders to that folder - + Not allowed to upload this file because it is read-only on the server, restoring No es permet pujar aquest fitxer perquè només és de lectura en el servidor, es restaura - - + + Not allowed to remove, restoring No es permet l'eliminació, es restaura - + Local files and share folder removed. Fitxers locals i carpeta compartida esborrats. - + Move not allowed, item restored No es permet moure'l, l'element es restaura - + Move not allowed because %1 is read-only No es permet moure perquè %1 només és de lectura - + the destination el destí - + the source l'origen diff --git a/translations/client_cs.ts b/translations/client_cs.ts index 209ef1113..dde7f94cd 100644 --- a/translations/client_cs.ts +++ b/translations/client_cs.ts @@ -3203,22 +3203,22 @@ Nedoporučuje se jí používat. - + Not allowed because you don't have permission to add parent folder Není povoleno, protože nemáte oprávnění vytvořit nadřazený adresář - + Not allowed because you don't have permission to add files in that folder Není povoleno, protože nemáte oprávnění přidávat soubory do tohoto adresáře - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3343,54 +3343,54 @@ Nedoporučuje se jí používat. Nelze otevřít synchronizační žurnál - + File name contains at least one invalid character Jméno souboru obsahuje alespoň jeden neplatný znak - - + + Ignored because of the "choose what to sync" blacklist Ignorováno podle nastavení "vybrat co synchronizovat" - + Not allowed because you don't have permission to add subfolders to that folder Není povoleno, protože nemáte oprávnění přidávat podadresáře do tohoto adresáře - + Not allowed to upload this file because it is read-only on the server, restoring Není povoleno nahrát tento soubor, protože je na serveru uložen pouze pro čtení, obnovuji - - + + Not allowed to remove, restoring Odstranění není povoleno, obnovuji - + Local files and share folder removed. Místní soubory a sdílený adresář byly odstraněny. - + Move not allowed, item restored Přesun není povolen, položka obnovena - + Move not allowed because %1 is read-only Přesun není povolen, protože %1 je pouze pro čtení - + the destination cílové umístění - + the source zdroj diff --git a/translations/client_de.ts b/translations/client_de.ts index 45f29d4a6..8bca5b3b7 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -3204,22 +3204,22 @@ Es ist nicht ratsam, diese zu benutzen. - + Not allowed because you don't have permission to add parent folder Nicht erlaubt, da Sie keine Rechte zur Erstellung von Unterordnern haben - + Not allowed because you don't have permission to add files in that folder Nicht erlaubt, da Sie keine Rechte zum Hinzufügen von Dateien in diesen Ordner haben - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. Auf dem Server ist für einige Dateien zum Hochladen nicht genug Platz. @@ -3344,54 +3344,54 @@ Es ist nicht ratsam, diese zu benutzen. Synchronisationsbericht kann nicht geöffnet werden - + File name contains at least one invalid character Der Dateiname enthält mindestens ein ungültiges Zeichen - - + + Ignored because of the "choose what to sync" blacklist Aufgrund der »Zu synchronisierende Elemente auswählen«-Sperrliste ignoriert - + Not allowed because you don't have permission to add subfolders to that folder Nicht erlaubt, da Sie keine Rechte zur Erstellung von Unterordnern haben - + Not allowed to upload this file because it is read-only on the server, restoring Das Hochladen dieser Datei ist nicht erlaubt, da die Datei auf dem Server schreibgeschützt ist, Wiederherstellung - - + + Not allowed to remove, restoring Löschen nicht erlaubt, Wiederherstellung - + Local files and share folder removed. Lokale Dateien und Freigabeordner wurden entfernt. - + Move not allowed, item restored Verschieben nicht erlaubt, Element wiederhergestellt - + Move not allowed because %1 is read-only Verschieben nicht erlaubt, da %1 schreibgeschützt ist - + the destination Das Ziel - + the source Die Quelle diff --git a/translations/client_el.ts b/translations/client_el.ts index cf2e34d8b..e2da239a5 100644 --- a/translations/client_el.ts +++ b/translations/client_el.ts @@ -3205,22 +3205,22 @@ It is not advisable to use it. - + Not allowed because you don't have permission to add parent folder Δεν επιτρέπεται επειδή δεν έχετε δικαιώματα να προσθέσετε γονικό κατάλογο - + Not allowed because you don't have permission to add files in that folder Δεν επιτρέπεται επειδή δεν έχετε δικαιώματα να προσθέσετε αρχεία σε αυτόν τον φάκελο - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3345,54 +3345,54 @@ It is not advisable to use it. Αδυναμία ανοίγματος του αρχείου συγχρονισμού - + File name contains at least one invalid character Το όνομα αρχείου περιέχει έναν τουλάχιστον μη έγκυρο χαρακτήρα - - + + Ignored because of the "choose what to sync" blacklist Αγνοήθηκε εξαιτίας της μαύρης λίστας "διάλεξε τι να συγχρονιστεί" - + Not allowed because you don't have permission to add subfolders to that folder Δεν επιτρέπεται επειδή δεν έχετε δικαιώματα να προσθέσετε υποφακέλους σε αυτό τον φάκελο - + Not allowed to upload this file because it is read-only on the server, restoring Δεν επιτρέπεται να μεταφορτώσετε αυτό το αρχείο επειδή είναι μόνο για ανάγνωση στο διακομιστή, αποκατάσταση σε εξέλιξη - - + + Not allowed to remove, restoring Δεν επιτρέπεται η αφαίρεση, αποκατάσταση σε εξέλιξη - + Local files and share folder removed. Οι τοπικοί φάκελοι και ο φάκελος κοινής χρήσης αφαιρέθηκαν. - + Move not allowed, item restored Η μετακίνηση δεν επιτρέπεται, το αντικείμενο αποκαταστάθηκε - + Move not allowed because %1 is read-only Η μετακίνηση δεν επιτρέπεται επειδή το %1 είναι μόνο για ανάγνωση - + the destination ο προορισμός - + the source η προέλευση diff --git a/translations/client_en.ts b/translations/client_en.ts index 8652e4f8b..409120ba9 100644 --- a/translations/client_en.ts +++ b/translations/client_en.ts @@ -3222,22 +3222,22 @@ It is not advisable to use it. - + Not allowed because you don't have permission to add parent folder - + Not allowed because you don't have permission to add files in that folder - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3362,54 +3362,54 @@ It is not advisable to use it. - + File name contains at least one invalid character - - + + Ignored because of the "choose what to sync" blacklist - + Not allowed because you don't have permission to add subfolders to that folder - + Not allowed to upload this file because it is read-only on the server, restoring - - + + Not allowed to remove, restoring - + Local files and share folder removed. - + Move not allowed, item restored - + Move not allowed because %1 is read-only - + the destination - + the source diff --git a/translations/client_es.ts b/translations/client_es.ts index 8908be695..076922795 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -3204,22 +3204,22 @@ No se recomienda usarla. Imposible abrir o crear la BBDD local de sync. Asegurese de que tiene permisos de escritura en la carpeta de sync. - + Not allowed because you don't have permission to add parent folder No permitido porque no tienes permiso para añadir un directorio padre - + Not allowed because you don't have permission to add files in that folder No permitido porque no tienes permiso para añadir archivos a ese directorio - + Disk space is low: Downloads that would reduce free space below %1 were skipped. Poco espacio libre en disco: La descarga lo reducirá por debajo del %1, deberia abortar. - + There is insufficient space available on the server for some uploads. No hay suficiente espacio libre en el servidor para algunas subidas. @@ -3344,54 +3344,54 @@ No se recomienda usarla. No es posible abrir el diario de sincronización - + File name contains at least one invalid character Nombre de archivo contiene al menos un caracter no válido - - + + Ignored because of the "choose what to sync" blacklist Ignorado porque se encuentra en la lista negra de "elija qué va a sincronizar" - + Not allowed because you don't have permission to add subfolders to that folder No permitido porque no tienes permiso para añadir subdirectorios a ese directorio - + Not allowed to upload this file because it is read-only on the server, restoring No está permitido subir este archivo porque es de solo lectura en el servidor, restaurando. - - + + Not allowed to remove, restoring No está permitido borrar, restaurando. - + Local files and share folder removed. Se han eliminado los archivos locales y la carpeta compartida. - + Move not allowed, item restored No está permitido mover, elemento restaurado. - + Move not allowed because %1 is read-only No está permitido mover, porque %1 es de sólo lectura. - + the destination destino - + the source origen diff --git a/translations/client_es_AR.ts b/translations/client_es_AR.ts index 1b2376030..7d9687a98 100644 --- a/translations/client_es_AR.ts +++ b/translations/client_es_AR.ts @@ -3190,22 +3190,22 @@ It is not advisable to use it. - + Not allowed because you don't have permission to add parent folder - + Not allowed because you don't have permission to add files in that folder - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3330,54 +3330,54 @@ It is not advisable to use it. - + File name contains at least one invalid character - - + + Ignored because of the "choose what to sync" blacklist - + Not allowed because you don't have permission to add subfolders to that folder - + Not allowed to upload this file because it is read-only on the server, restoring - - + + Not allowed to remove, restoring - + Local files and share folder removed. - + Move not allowed, item restored - + Move not allowed because %1 is read-only - + the destination - + the source diff --git a/translations/client_et.ts b/translations/client_et.ts index c5ddc6b44..1766696e4 100644 --- a/translations/client_et.ts +++ b/translations/client_et.ts @@ -3193,22 +3193,22 @@ Selle kasutamine pole soovitatav. - + Not allowed because you don't have permission to add parent folder - + Not allowed because you don't have permission to add files in that folder - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3333,54 +3333,54 @@ Selle kasutamine pole soovitatav. Ei suuda avada sünkroniseeringu zurnaali - + File name contains at least one invalid character Faili nimesonvähemalt üks keelatud märk - - + + Ignored because of the "choose what to sync" blacklist "Vali, mida sünkroniseerida" musta nimekirja tõttu vahele jäetud - + Not allowed because you don't have permission to add subfolders to that folder - + Not allowed to upload this file because it is read-only on the server, restoring Pole lubatud üles laadida, kuna tegemist on ainult-loetava serveriga, taastan - - + + Not allowed to remove, restoring Eemaldamine pole lubatud, taastan - + Local files and share folder removed. Kohalikud failid ja jagatud kaustad eemaldatud. - + Move not allowed, item restored Liigutamine pole lubatud, üksus taastatud - + Move not allowed because %1 is read-only Liigutamien pole võimalik kuna %1 on ainult lugemiseks - + the destination sihtkoht - + the source allikas diff --git a/translations/client_eu.ts b/translations/client_eu.ts index 92aed57e4..da702ae4c 100644 --- a/translations/client_eu.ts +++ b/translations/client_eu.ts @@ -3193,22 +3193,22 @@ Ez da gomendagarria erabltzea. - + Not allowed because you don't have permission to add parent folder - + Not allowed because you don't have permission to add files in that folder - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3333,54 +3333,54 @@ Ez da gomendagarria erabltzea. Ezin da sinkronizazio egunerokoa ireki - + File name contains at least one invalid character Fitxategi izenak behintzat baliogabeko karaktere bat du - - + + Ignored because of the "choose what to sync" blacklist - + Not allowed because you don't have permission to add subfolders to that folder - + Not allowed to upload this file because it is read-only on the server, restoring - - + + Not allowed to remove, restoring Ezabatzeko baimenik gabe, berrezartzen - + Local files and share folder removed. - + Move not allowed, item restored Mugitzea ez dago baimenduta, elementua berrezarri da - + Move not allowed because %1 is read-only Mugitzea ez dago baimenduta %1 irakurtzeko bakarrik delako - + the destination helburua - + the source jatorria diff --git a/translations/client_fa.ts b/translations/client_fa.ts index 1b1df5682..76e1c75ff 100644 --- a/translations/client_fa.ts +++ b/translations/client_fa.ts @@ -3190,22 +3190,22 @@ It is not advisable to use it. - + Not allowed because you don't have permission to add parent folder - + Not allowed because you don't have permission to add files in that folder - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3330,54 +3330,54 @@ It is not advisable to use it. - + File name contains at least one invalid character نام فایل دارای حداقل یک کاراکتر نامعتبر است - - + + Ignored because of the "choose what to sync" blacklist - + Not allowed because you don't have permission to add subfolders to that folder با توجه به عدم اجازه‌ی شما به ایجاد زیرپوشه به پوشه مجاز نیست - + Not allowed to upload this file because it is read-only on the server, restoring آپلود این فایل با توجه به فقط-خواندنی بودن آن در سرور مجاز نیست، در حال بازگرداندن - - + + Not allowed to remove, restoring حذف مجاز نیست، در حال بازگردادن - + Local files and share folder removed. فایل‌های محلی و پوشه‌ی اشتراک حذف شد. - + Move not allowed, item restored انتقال مجاز نیست، مورد بازگردانده شد - + Move not allowed because %1 is read-only - + the destination مقصد - + the source مبدا diff --git a/translations/client_fi.ts b/translations/client_fi.ts index e928d028f..35b6c590e 100644 --- a/translations/client_fi.ts +++ b/translations/client_fi.ts @@ -3195,22 +3195,22 @@ Osoitteen käyttäminen ei ole suositeltavaa. - + Not allowed because you don't have permission to add parent folder Ei sallittu, koska käyttöoikeutesi eivät riitä ylätason kansion lisäämiseen - + Not allowed because you don't have permission to add files in that folder Ei sallittu, koska käyttöoikeutesi eivät riitä tiedostojen lisäämiseen kyseiseen kansioon - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3335,54 +3335,54 @@ Osoitteen käyttäminen ei ole suositeltavaa. - + File name contains at least one invalid character Tiedoston nimi sisältää ainakin yhden virheellisen merkin - - + + Ignored because of the "choose what to sync" blacklist - + Not allowed because you don't have permission to add subfolders to that folder Ei sallittu, koska oikeutesi eivät riitä alikansioiden lisäämiseen kyseiseen kansioon - + Not allowed to upload this file because it is read-only on the server, restoring - - + + Not allowed to remove, restoring Poistaminen ei ole sallittua, palautetaan - + Local files and share folder removed. Paikalliset tiedostot ja jakokansio poistettu. - + Move not allowed, item restored Siirtäminen ei ole sallittua, kohde palautettu - + Move not allowed because %1 is read-only Siirto ei ole sallittu, koska %1 on "vain luku"-tilassa - + the destination kohde - + the source lähde diff --git a/translations/client_fr.ts b/translations/client_fr.ts index 13ddc4f9a..83e372491 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -3206,22 +3206,22 @@ Il est déconseillé de l'utiliser. - + Not allowed because you don't have permission to add parent folder Non autorisé car vous n'avez pas la permission d'ajouter un dossier parent - + Not allowed because you don't have permission to add files in that folder Non autorisé car vous n'avez pas la permission d'ajouter des fichiers dans ce dossier - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3346,54 +3346,54 @@ Il est déconseillé de l'utiliser. Impossible d'ouvrir le journal de synchronisation - + File name contains at least one invalid character Le nom de fichier contient au moins un caractère non valable - - + + Ignored because of the "choose what to sync" blacklist Ignoré en raison de la liste noire "Sélectionner le contenu à synchroniser". - + Not allowed because you don't have permission to add subfolders to that folder Non autorisé car vous n'avez pas la permission d'ajouter des sous-dossiers dans ce dossier - + Not allowed to upload this file because it is read-only on the server, restoring Non autorisé à envoyer ce fichier car il est en lecture seule sur le serveur. Restauration - - + + Not allowed to remove, restoring Non autorisé à supprimer. Restauration - + Local files and share folder removed. Fichiers locaux et dossier partagé supprimés. - + Move not allowed, item restored Déplacement non autorisé, élément restauré - + Move not allowed because %1 is read-only Déplacement non autorisé car %1 est en mode lecture seule - + the destination la destination - + the source la source diff --git a/translations/client_gl.ts b/translations/client_gl.ts index ac660b419..62afa77bd 100644 --- a/translations/client_gl.ts +++ b/translations/client_gl.ts @@ -3194,22 +3194,22 @@ Recomendámoslle que non o use. - + Not allowed because you don't have permission to add parent folder - + Not allowed because you don't have permission to add files in that folder - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3334,54 +3334,54 @@ Recomendámoslle que non o use. Non foi posíbel abrir o rexistro de sincronización - + File name contains at least one invalid character O nome de ficheiro contén algún carácter incorrecto - - + + Ignored because of the "choose what to sync" blacklist Ignorado por mor da lista negra de «escolla que sincronizar» - + Not allowed because you don't have permission to add subfolders to that folder - + Not allowed to upload this file because it is read-only on the server, restoring Non está permitido o envío xa que o ficheiro é só de lectura no servidor, restaurando - - + + Not allowed to remove, restoring Non está permitido retiralo, restaurando - + Local files and share folder removed. Retirados os ficheiros locais e o cartafol compartido. - + Move not allowed, item restored Nos está permitido movelo, elemento restaurado - + Move not allowed because %1 is read-only Bon está permitido movelo xa que %1 é só de lectura - + the destination o destino - + the source a orixe diff --git a/translations/client_hu.ts b/translations/client_hu.ts index 3f892ae4a..6d0a9a8ef 100644 --- a/translations/client_hu.ts +++ b/translations/client_hu.ts @@ -3191,22 +3191,22 @@ It is not advisable to use it. - + Not allowed because you don't have permission to add parent folder - + Not allowed because you don't have permission to add files in that folder - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3331,54 +3331,54 @@ It is not advisable to use it. - + File name contains at least one invalid character A fájlnév legalább egy érvénytelen karaktert tartalmaz! - - + + Ignored because of the "choose what to sync" blacklist - + Not allowed because you don't have permission to add subfolders to that folder - + Not allowed to upload this file because it is read-only on the server, restoring - - + + Not allowed to remove, restoring - + Local files and share folder removed. - + Move not allowed, item restored - + Move not allowed because %1 is read-only - + the destination a cél - + the source a forrás diff --git a/translations/client_it.ts b/translations/client_it.ts index b68399a75..1595c14f9 100644 --- a/translations/client_it.ts +++ b/translations/client_it.ts @@ -3200,22 +3200,22 @@ Non è consigliabile utilizzarlo. - + Not allowed because you don't have permission to add parent folder Non consentito poiché non disponi dei permessi per aggiungere la cartella superiore - + Not allowed because you don't have permission to add files in that folder Non consentito poiché non disponi dei permessi per aggiungere file in quella cartella - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3340,54 +3340,54 @@ Non è consigliabile utilizzarlo. Impossibile aprire il registro di sincronizzazione - + File name contains at least one invalid character Il nome del file contiene almeno un carattere non valido - - + + Ignored because of the "choose what to sync" blacklist Ignorato in base alla lista nera per la scelta di cosa sincronizzare - + Not allowed because you don't have permission to add subfolders to that folder Non consentito poiché non disponi dei permessi per aggiungere sottocartelle in quella cartella - + Not allowed to upload this file because it is read-only on the server, restoring Il caricamento di questo file non è consentito poiché è in sola lettura sul server, ripristino - - + + Not allowed to remove, restoring Rimozione non consentita, ripristino - + Local files and share folder removed. I file locali e la cartella condivisa sono stati rimossi. - + Move not allowed, item restored Spostamento non consentito, elemento ripristinato - + Move not allowed because %1 is read-only Spostamento non consentito poiché %1 è in sola lettura - + the destination la destinazione - + the source l'origine diff --git a/translations/client_ja.ts b/translations/client_ja.ts index 1413a0b05..2254b2582 100644 --- a/translations/client_ja.ts +++ b/translations/client_ja.ts @@ -3201,22 +3201,22 @@ It is not advisable to use it. - + Not allowed because you don't have permission to add parent folder 親フォルダーを追加する権限がありません - + Not allowed because you don't have permission to add files in that folder そのフォルダーにファイルを追加する権限がありません - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3341,54 +3341,54 @@ It is not advisable to use it. 同期ジャーナルを開くことができません - + File name contains at least one invalid character ファイル名に1文字以上の無効な文字が含まれています - - + + Ignored because of the "choose what to sync" blacklist "同期対象先" ブラックリストにより無視されました。 - + Not allowed because you don't have permission to add subfolders to that folder そのフォルダーにサブフォルダーを追加する権限がありません - + Not allowed to upload this file because it is read-only on the server, restoring サーバーでは読み取り専用となっているため、このファイルをアップロードすることはできません、復元しています - - + + Not allowed to remove, restoring 削除できないので復元しています - + Local files and share folder removed. ローカルファイルと共有フォルダーを削除しました。 - + Move not allowed, item restored 移動できないので項目を復元しました - + Move not allowed because %1 is read-only %1 は読み取り専用のため移動できません - + the destination 移動先 - + the source 移動元 diff --git a/translations/client_nb_NO.ts b/translations/client_nb_NO.ts index 7c3869fab..c8c03c307 100644 --- a/translations/client_nb_NO.ts +++ b/translations/client_nb_NO.ts @@ -3204,22 +3204,22 @@ Det er ikke tilrådelig å bruke den. - + Not allowed because you don't have permission to add parent folder Ikke tillatt fordi du ikke har lov til å legge til foreldremappe - + Not allowed because you don't have permission to add files in that folder Ikke tillatt fordi du ikke har lov til å opprette filer i den mappen - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3344,54 +3344,54 @@ Det er ikke tilrådelig å bruke den. Kan ikke åpne synkroniseringsjournalen - + File name contains at least one invalid character Filnavnet inneholder minst ett ulovlig tegn - - + + Ignored because of the "choose what to sync" blacklist Ignorert på grunn av svartelisten "velg hva som skal synkroniseres" - + Not allowed because you don't have permission to add subfolders to that folder Ikke tillatt fordi du ikke har lov til å lage undermapper i den mappen - + Not allowed to upload this file because it is read-only on the server, restoring Ikke tillatt å laste opp denne filenfordi den er skrivebeskyttet på serveren, gjenoppretter - - + + Not allowed to remove, restoring Ikke tillatt å fjerne, gjenoppretter - + Local files and share folder removed. Lokale filer og delingsmappe fjernet. - + Move not allowed, item restored Flytting ikke tillatt, element gjenopprettet - + Move not allowed because %1 is read-only Flytting ikke tillatt fordi %1 er skrivebeskyttet - + the destination målet - + the source kilden diff --git a/translations/client_nl.ts b/translations/client_nl.ts index bb38056f7..051f70d52 100644 --- a/translations/client_nl.ts +++ b/translations/client_nl.ts @@ -3209,22 +3209,22 @@ We adviseren deze site niet te gebruiken. - + Not allowed because you don't have permission to add parent folder Niet toegestaan omdat u geen rechten hebt om een bovenliggende map toe te voegen - + Not allowed because you don't have permission to add files in that folder Niet toegestaan omdat u geen rechten hebt om bestanden in die map toe te voegen - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3349,54 +3349,54 @@ We adviseren deze site niet te gebruiken. Kan het sync transactielog niet openen - + File name contains at least one invalid character De bestandsnaam bevat ten minste één ongeldig teken - - + + Ignored because of the "choose what to sync" blacklist Genegeerd vanwege de "wat synchroniseren" zwarte lijst - + Not allowed because you don't have permission to add subfolders to that folder Niet toegestaan, omdat je geen permissies hebt om submappen aan die map toe te voegen - + Not allowed to upload this file because it is read-only on the server, restoring Niet toegestaan om dit bestand te uploaden, omdat het alleen-lezen is op de server, herstellen - - + + Not allowed to remove, restoring Niet toegestaan om te verwijderen, herstellen - + Local files and share folder removed. Lokale bestanden en share-map verwijderd. - + Move not allowed, item restored Verplaatsen niet toegestaan, object hersteld - + Move not allowed because %1 is read-only Verplaatsen niet toegestaan, omdat %1 alleen-lezen is - + the destination bestemming - + the source bron diff --git a/translations/client_pl.ts b/translations/client_pl.ts index f165cc548..f3aaa8f24 100644 --- a/translations/client_pl.ts +++ b/translations/client_pl.ts @@ -3198,22 +3198,22 @@ Niezalecane jest jego użycie. - + Not allowed because you don't have permission to add parent folder Niedozwolone, ponieważ nie masz uprawnień do dodawania katalogu nadrzędnego - + Not allowed because you don't have permission to add files in that folder Niedozwolone, ponieważ nie masz uprawnień do dodawania plików w tym katalogu - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3338,54 +3338,54 @@ Niezalecane jest jego użycie. Nie można otworzyć dziennika synchronizacji - + File name contains at least one invalid character Nazwa pliku zawiera co najmniej jeden nieprawidłowy znak - - + + Ignored because of the "choose what to sync" blacklist - + Not allowed because you don't have permission to add subfolders to that folder Niedozwolone, ponieważ nie masz uprawnień do dodawania podkatalogów w tym katalogu - + Not allowed to upload this file because it is read-only on the server, restoring Wgrywanie niedozwolone, ponieważ plik jest tylko do odczytu na serwerze, przywracanie - - + + Not allowed to remove, restoring Brak uprawnień by usunąć, przywracanie - + Local files and share folder removed. Lokalne pliki i udostępniane foldery zostały usunięte. - + Move not allowed, item restored Przenoszenie niedozwolone, obiekt przywrócony - + Move not allowed because %1 is read-only Przenoszenie niedozwolone, ponieważ %1 jest tylko do odczytu - + the destination docelowy - + the source źródło diff --git a/translations/client_pt.ts b/translations/client_pt.ts index e17edae49..8ca79b441 100644 --- a/translations/client_pt.ts +++ b/translations/client_pt.ts @@ -88,7 +88,7 @@ Server replied "%1 %2" to "%3 %4" - + O Servidor respondeu "%1 %2" até "%3 %4" @@ -243,7 +243,7 @@ Server %1 is currently in maintenance mode. - + O Servidor %1 encontra-se em manutenção @@ -258,7 +258,7 @@ Connecting to %1... - + A Conectar a %1... @@ -373,7 +373,7 @@ Maintenance mode - + Modo de Manutenção @@ -1420,7 +1420,7 @@ Os itens onde é permitido a eliminação serão eliminados se estes impedirem a Show warnings - + Mostrar Avisos @@ -1450,7 +1450,7 @@ Os itens onde é permitido a eliminação serão eliminados se estes impedirem a Issue - + Situação @@ -2641,7 +2641,7 @@ Não é aconselhada a sua utilização. &Create new - + &Criar novo @@ -2888,7 +2888,7 @@ Não é aconselhada a sua utilização. Share... - + Partilhar... @@ -3205,22 +3205,22 @@ Não é aconselhada a sua utilização. - + Not allowed because you don't have permission to add parent folder Não permitido, porque não tem permissão para adicionar a pasta fonte - + Not allowed because you don't have permission to add files in that folder Não permitido, porque não tem permissão para adicionar os ficheiros nessa pasta - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3345,54 +3345,54 @@ Não é aconselhada a sua utilização. Impossível abrir o jornal de sincronismo - + File name contains at least one invalid character O nome de ficheiro contém pelo menos um caráter inválido - - + + Ignored because of the "choose what to sync" blacklist Ignorado devido à blacklist de escolha para sincronização - + Not allowed because you don't have permission to add subfolders to that folder Não permitido, porque não tem permissão para adicionar as subpastas nessa pasta - + Not allowed to upload this file because it is read-only on the server, restoring Não é permitido enviar este ficheiro porque este é só de leitura no servidor, a restaurar - - + + Not allowed to remove, restoring Não autorizado para remoção, restaurando - + Local files and share folder removed. Ficheiros locais e pasta partilhada removidos. - + Move not allowed, item restored Mover não foi permitido, item restaurado - + Move not allowed because %1 is read-only Mover não foi autorizado porque %1 é só de leitura - + the destination o destino - + the source a origem diff --git a/translations/client_pt_BR.ts b/translations/client_pt_BR.ts index 82ca6573d..b784081b2 100644 --- a/translations/client_pt_BR.ts +++ b/translations/client_pt_BR.ts @@ -3202,22 +3202,22 @@ It is not advisable to use it. Não é possível abrir ou criar o banco de dados de sincronização local. Certifique-se de ter acesso de gravação na pasta de sincronização. - + Not allowed because you don't have permission to add parent folder Não permitido porque você não tem permissão para adicionar pasta mãe - + Not allowed because you don't have permission to add files in that folder Não permitido porque você não tem permissão para adicionar arquivos na pasta - + Disk space is low: Downloads that would reduce free space below %1 were skipped. O espaço em disco é pequeno: Os downloads que reduzam o espaço livre abaixo de %1 foram ignorados. - + There is insufficient space available on the server for some uploads. Há espaço disponível no servidor para alguns envios. @@ -3342,54 +3342,54 @@ It is not advisable to use it. Não é possível abrir o arquivo de sincronização - + File name contains at least one invalid character O nome do arquivo contem pelo menos um caractere inválido - - + + Ignored because of the "choose what to sync" blacklist Ignorado por causa da lista negra "escolher o que sincronizar" - + Not allowed because you don't have permission to add subfolders to that folder Não permitido porque você não tem permissão para adicionar subpastas para essa pasta - + Not allowed to upload this file because it is read-only on the server, restoring Não é permitido fazer o upload deste arquivo porque ele é somente leitura no servidor, restaurando - - + + Not allowed to remove, restoring Não é permitido remover, restaurando - + Local files and share folder removed. Arquivos locais e pasta compartilhada removida. - + Move not allowed, item restored Não é permitido mover, item restaurado - + Move not allowed because %1 is read-only Não é permitido mover porque %1 é somente para leitura - + the destination o destino - + the source a fonte diff --git a/translations/client_ru.ts b/translations/client_ru.ts index 317a7e41e..25731653a 100644 --- a/translations/client_ru.ts +++ b/translations/client_ru.ts @@ -3202,22 +3202,22 @@ It is not advisable to use it. Не могу открыть или создать локальную базу данных синхронизации. Удостоверьтесь, что у вас есть доступ на запись в каталог синхронизации. - + Not allowed because you don't have permission to add parent folder Не разрешается, так как у вас нет полномочий на добавление родительской папки - + Not allowed because you don't have permission to add files in that folder Не разрешается, так как у вас нет полномочий на добавление файлов в эту папку - + Disk space is low: Downloads that would reduce free space below %1 were skipped. Мало места на диске: Скачивания, которые сократят свободное место ниже %1, будут пропущены. - + There is insufficient space available on the server for some uploads. На сервере недостаточно места для некоторых закачек. @@ -3342,54 +3342,54 @@ It is not advisable to use it. Не удаётся открыть журнал синхронизации - + File name contains at least one invalid character Имя файла содержит по крайней мере один некорректный символ - - + + Ignored because of the "choose what to sync" blacklist Игнорируется из-за черного списка в "что синхронизировать" - + Not allowed because you don't have permission to add subfolders to that folder Не разрешается, так как у вас нет полномочий на добавление подпапок в папку. - + Not allowed to upload this file because it is read-only on the server, restoring Не допускается загрузка этого файла, так как на сервере он помечен только для чтения, восстанавливаем - - + + Not allowed to remove, restoring Не допускается удаление, восстанавливаем - + Local files and share folder removed. Локальные файлы и общий каталог удалены. - + Move not allowed, item restored Перемещение не допускается, элемент восстановлен - + Move not allowed because %1 is read-only Перемещение не допускается, поскольку %1 помечен только для чтения - + the destination назначение - + the source источник diff --git a/translations/client_sk.ts b/translations/client_sk.ts index 313e9b0ad..782c8318d 100644 --- a/translations/client_sk.ts +++ b/translations/client_sk.ts @@ -3194,22 +3194,22 @@ Nie je vhodné ju používať. - + Not allowed because you don't have permission to add parent folder - + Not allowed because you don't have permission to add files in that folder - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3334,54 +3334,54 @@ Nie je vhodné ju používať. Nemožno otvoriť sync žurnál - + File name contains at least one invalid character Názov súboru obsahuje nevhodný znak - - + + Ignored because of the "choose what to sync" blacklist Ignorované podľa nastavenia "vybrať čo synchronizovať" - + Not allowed because you don't have permission to add subfolders to that folder Nie je dovolené, lebo nemáte oprávnenie pridávať podpriečinky do tohto priečinka - + Not allowed to upload this file because it is read-only on the server, restoring Nie je dovolené tento súbor nahrať, pretože je na serveri iba na čítanie. Obnovuje sa. - - + + Not allowed to remove, restoring Nie je dovolené odstrániť. Obnovuje sa. - + Local files and share folder removed. Lokálne súbory a zdieľaný priečinok boli odstránené. - + Move not allowed, item restored Presunutie nie je dovolené. Položka obnovená. - + Move not allowed because %1 is read-only Presunutie nie je dovolené, pretože %1 je na serveri iba na čítanie - + the destination cieľ - + the source zdroj diff --git a/translations/client_sl.ts b/translations/client_sl.ts index 2e13e7662..d77a6e2f0 100644 --- a/translations/client_sl.ts +++ b/translations/client_sl.ts @@ -3205,22 +3205,22 @@ Uporaba ni priporočljiva. - + Not allowed because you don't have permission to add parent folder Dejanje ni dovoljeno, ker ni ustreznih dovoljenj za dodajanje starševske mape - + Not allowed because you don't have permission to add files in that folder Dejanje ni dovoljeno, ker ni ustreznih dovoljenj za dodajanje datotek v to mapo - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3345,54 +3345,54 @@ Uporaba ni priporočljiva. Ni mogoče odpreti dnevnika usklajevanja - + File name contains at least one invalid character Ime datoteke vsebuje vsaj en neveljaven znak. - - + + Ignored because of the "choose what to sync" blacklist Prezrto, ker je predmet označen na črni listi za usklajevanje - + Not allowed because you don't have permission to add subfolders to that folder Dejanje ni dovoljeno! Ni ustreznih dovoljenj za dodajanje podmap v to mapo. - + Not allowed to upload this file because it is read-only on the server, restoring Ni dovoljeno pošiljati te datoteke, ker ima določena dovoljenja le za branje. Datoteka bo obnovljena na izvorno različico. - - + + Not allowed to remove, restoring Odstranitev ni dovoljena, datoteka bo obnovljena. - + Local files and share folder removed. Krajevne datoteke in mape v souporabi so odstranjene. - + Move not allowed, item restored Premikanje ni dovoljeno, datoteka bo obnovljena. - + Move not allowed because %1 is read-only Premikanje ni dovoljeno, ker je nastavljeno določilo %1 le za branje. - + the destination cilj - + the source vir diff --git a/translations/client_sr.ts b/translations/client_sr.ts index 2fdc69975..d21ade620 100644 --- a/translations/client_sr.ts +++ b/translations/client_sr.ts @@ -3194,22 +3194,22 @@ It is not advisable to use it. - + Not allowed because you don't have permission to add parent folder - + Not allowed because you don't have permission to add files in that folder - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3334,54 +3334,54 @@ It is not advisable to use it. Не могу да отворим дневник синхронизације - + File name contains at least one invalid character Назив садржи бар један недозвољен карактер - - + + Ignored because of the "choose what to sync" blacklist Игнорисано јер се не налази на листи за синхронизацију - + Not allowed because you don't have permission to add subfolders to that folder - + Not allowed to upload this file because it is read-only on the server, restoring Није могуће отпремити овај фајл јер је на серверу само за читање. Враћам - - + + Not allowed to remove, restoring Није могуће уклањање. Враћам - + Local files and share folder removed. Локални фајлови и дељена фасцикла су уклоњени. - + Move not allowed, item restored Премештање није дозвољено. Ставка је враћена - + Move not allowed because %1 is read-only Премештање није дозвољено јер %1 је само за читање - + the destination одредиште - + the source извор diff --git a/translations/client_sv.ts b/translations/client_sv.ts index bffa2fa15..7bee90cc3 100644 --- a/translations/client_sv.ts +++ b/translations/client_sv.ts @@ -3200,22 +3200,22 @@ Det är inte lämpligt använda den. Kunde inte öppna eller återskapa den lokala synkroniseringsdatabasen. Säkerställ att du har skrivrättigheter till synkroniseringsmappen. - + Not allowed because you don't have permission to add parent folder Otillåtet eftersom du inte har rättigheter att lägga till övermappar - + Not allowed because you don't have permission to add files in that folder Otillåtet eftersom du inte har rättigheter att lägga till filer i den mappen. - + Disk space is low: Downloads that would reduce free space below %1 were skipped. Diskutrymmet är lågt: Nedladdningar som reduceringar det fria utrymmet under %1 skippades. - + There is insufficient space available on the server for some uploads. Det finns inte tillräckligt med utrymme på servern för vissa uppladdningar. @@ -3340,54 +3340,54 @@ Det är inte lämpligt använda den. Kunde inte öppna synk journalen - + File name contains at least one invalid character Filnamnet innehåller minst ett ogiltigt tecken - - + + Ignored because of the "choose what to sync" blacklist Ignorerad eftersom den är svartlistad i "välj vad som ska synkas" - + Not allowed because you don't have permission to add subfolders to that folder Otillåtet eftersom du inte har rättigheter att lägga till undermappar i den mappen. - + Not allowed to upload this file because it is read-only on the server, restoring Inte behörig att ladda upp denna fil då den är skrivskyddad på servern, återställer - - + + Not allowed to remove, restoring Inte behörig att radera, återställer - + Local files and share folder removed. Lokala filer och mappar som är delade är borttagna. - + Move not allowed, item restored Det gick inte att genomföra flytten, objektet återställs - + Move not allowed because %1 is read-only Det gick inte att genomföra flytten då %1 är skrivskyddad - + the destination destinationen - + the source källan diff --git a/translations/client_th.ts b/translations/client_th.ts index b75de6f97..cd57e6029 100644 --- a/translations/client_th.ts +++ b/translations/client_th.ts @@ -3205,22 +3205,22 @@ It is not advisable to use it. ไม่สามารถเปิดหรือสร้างฐานข้อมูลการประสานข้อมูลในเครื่อง ตรวจสอบว่าคุณมีสิทธิ์การเขียนในโฟลเดอร์ซิงค์ - + Not allowed because you don't have permission to add parent folder ไม่ได้รับอนุญาต เพราะคุณไม่มีสิทธิ์ที่จะเพิ่มโฟลเดอร์หลัก - + Not allowed because you don't have permission to add files in that folder ไม่ได้รับอนุญาต เพราะคุณไม่มีสิทธิ์ที่จะเพิ่มไฟล์ในโฟลเดอร์นั้น - + Disk space is low: Downloads that would reduce free space below %1 were skipped. พื้นที่จัดเก็บเหลือน้อย: การดาวน์โหลดจะช่วยลดพื้นที่ว่างด้านล่าง %1 ที่ถูกข้ามไป - + There is insufficient space available on the server for some uploads. มีพื้นที่ว่างไม่เพียงพอบนเซิร์ฟเวอร์สำหรับการอัพโหลดบางรายการ @@ -3345,54 +3345,54 @@ It is not advisable to use it. ไม่สามารถเปิดการผสานข้อมูลเจอร์นัล - + File name contains at least one invalid character มีชื่อแฟ้มอย่างน้อยหนึ่งตัวอักษรที่ไม่ถูกต้อง - - + + Ignored because of the "choose what to sync" blacklist ถูกละเว้นเพราะ "ข้อมูลที่เลือกประสาน" ติดบัญชีดำ - + Not allowed because you don't have permission to add subfolders to that folder ไม่อนุญาติเพราะคุณไม่มีสิทธิ์ที่จะเพิ่มโฟลเดอร์ย่อยของโฟลเดอร์นั้น - + Not allowed to upload this file because it is read-only on the server, restoring ไม่อนุญาตให้อัพโหลดไฟล์นี้เพราะมันจะอ่านได้เพียงอย่างเดียวบนเซิร์ฟเวอร์ กำลังฟื้นฟู - - + + Not allowed to remove, restoring ไม่อนุญาตให้ลบเพราะกำลังฟื้นฟู - + Local files and share folder removed. ไฟล์ต้นทางและโฟลเดอร์ที่แชร์ถูกลบออก - + Move not allowed, item restored ไม่ได้รับอนุญาตให้ย้าย เพราะกำลังกู้คืนรายการ - + Move not allowed because %1 is read-only ไม่อนุญาตให้ย้ายเพราะ %1 จะอ่านได้เพียงอย่างเดียว - + the destination ปลายทาง - + the source แหล่งที่มา diff --git a/translations/client_tr.ts b/translations/client_tr.ts index bfc82ef12..8080bc9fb 100644 --- a/translations/client_tr.ts +++ b/translations/client_tr.ts @@ -3195,22 +3195,22 @@ Kullanmanız önerilmez. - + Not allowed because you don't have permission to add parent folder Üst dizin ekleme yetkiniz olmadığından izin verilmedi - + Not allowed because you don't have permission to add files in that folder Bu klasöre dosya ekleme yetkiniz olmadığından izin verilmedi - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3335,54 +3335,54 @@ Kullanmanız önerilmez. Eşitleme günlüğü açılamıyor - + File name contains at least one invalid character Dosya adı en az bir geçersiz karakter içeriyor - - + + Ignored because of the "choose what to sync" blacklist "Eşitlenecekleri seçin" kara listesinde olduğundan yoksayıldı. - + Not allowed because you don't have permission to add subfolders to that folder Bu dizine alt dizin ekleme yetkiniz olmadığından izin verilmedi - + Not allowed to upload this file because it is read-only on the server, restoring Sunucuda salt okunur olduğundan, bu dosya yüklenemedi, geri alınıyor - - + + Not allowed to remove, restoring Kaldırmaya izin verilmedi, geri alınıyor - + Local files and share folder removed. Yerel dosyalar ve paylaşım klasörü kaldırıldı. - + Move not allowed, item restored Taşımaya izin verilmedi, öge geri alındı - + Move not allowed because %1 is read-only %1 salt okunur olduğundan taşımaya izin verilmedi - + the destination hedef - + the source kaynak diff --git a/translations/client_uk.ts b/translations/client_uk.ts index e0f23b7f2..b7963e678 100644 --- a/translations/client_uk.ts +++ b/translations/client_uk.ts @@ -3193,22 +3193,22 @@ It is not advisable to use it. - + Not allowed because you don't have permission to add parent folder - + Not allowed because you don't have permission to add files in that folder - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3333,54 +3333,54 @@ It is not advisable to use it. Не вдається відкрити протокол синхронізації - + File name contains at least one invalid character Ім’я файлу містить принаймні один некоректний символ - - + + Ignored because of the "choose what to sync" blacklist Ігнорується через чорний список в "обрати що синхронізувати" - + Not allowed because you don't have permission to add subfolders to that folder Заборонено через відсутність прав додавання підкаталогів в цю теку. - + Not allowed to upload this file because it is read-only on the server, restoring Не дозволено завантажувати цей файл, оскільки він має дозвіл лише на перегляд, відновлюємо - - + + Not allowed to remove, restoring Не дозволено видаляти, відновлюємо - + Local files and share folder removed. Локальні файли та теки в загальному доступі було видалено. - + Move not allowed, item restored Переміщення не дозволено, елемент відновлено - + Move not allowed because %1 is read-only Переміщення не дозволено, оскільки %1 помічений тільки для перегляду - + the destination призначення - + the source джерело diff --git a/translations/client_zh_CN.ts b/translations/client_zh_CN.ts index cb8047210..7cb200b91 100644 --- a/translations/client_zh_CN.ts +++ b/translations/client_zh_CN.ts @@ -3204,22 +3204,22 @@ It is not advisable to use it. - + Not allowed because you don't have permission to add parent folder 你没有权限增加父目录 - + Not allowed because you don't have permission to add files in that folder 你没有权限增加文件 - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3344,54 +3344,54 @@ It is not advisable to use it. 无法打开同步日志 - + File name contains at least one invalid character 文件名中存在至少一个非法字符 - - + + Ignored because of the "choose what to sync" blacklist 已忽略(“选择同步内容”黑名单) - + Not allowed because you don't have permission to add subfolders to that folder 你没有权限增加子目录 - + Not allowed to upload this file because it is read-only on the server, restoring 无法上传文件,因为服务器端此文件为只读,正在回退 - - + + Not allowed to remove, restoring 无法删除,正在回退 - + Local files and share folder removed. 本地文件和共享文件夹已被删除。 - + Move not allowed, item restored 无法移动,正在回退 - + Move not allowed because %1 is read-only 无法移动,%1为是只读的 - + the destination 目标 - + the source diff --git a/translations/client_zh_TW.ts b/translations/client_zh_TW.ts index 494437bf6..3f57aaf5c 100644 --- a/translations/client_zh_TW.ts +++ b/translations/client_zh_TW.ts @@ -3196,22 +3196,22 @@ It is not advisable to use it. - + Not allowed because you don't have permission to add parent folder 拒絕此操作,您沒有新增母資料夾的權限。 - + Not allowed because you don't have permission to add files in that folder 拒絕此操作,您沒有新增檔案在此資料夾的權限。 - + Disk space is low: Downloads that would reduce free space below %1 were skipped. - + There is insufficient space available on the server for some uploads. @@ -3336,54 +3336,54 @@ It is not advisable to use it. 同步處理日誌無法開啟 - + File name contains at least one invalid character 檔案名稱含有不合法的字元 - - + + Ignored because of the "choose what to sync" blacklist 已忽略。根據 "選擇要同步的項目"的黑名單 - + Not allowed because you don't have permission to add subfolders to that folder 拒絕此操作,您沒有在此新增子資料夾的權限。 - + Not allowed to upload this file because it is read-only on the server, restoring 拒絕上傳此檔案,此檔案在伺服器是唯讀檔,復原中 - - + + Not allowed to remove, restoring 不允許刪除,復原中 - + Local files and share folder removed. 本地端檔案和共享資料夾已被刪除。 - + Move not allowed, item restored 不允許移動,物件復原中 - + Move not allowed because %1 is read-only 不允許移動,因為 %1 是唯讀的 - + the destination 目標 - + the source 來源 From a3c1052caed65bb0559b2239cfa5294e116d2e69 Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Tue, 17 Oct 2017 15:16:48 +0200 Subject: [PATCH 18/45] owncloudcmd: Fix timestamps, Fix --logdebug We did not set a log handler so there were no timestamps. The --debug didn't have an effect, let's use --logdebug like in GUI version. (Command line always outputs some log) Found in owncloud/documentation#3436 --- src/cmd/cmd.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/cmd/cmd.cpp b/src/cmd/cmd.cpp index 4055ab1b3..a84aa82af 100644 --- a/src/cmd/cmd.cpp +++ b/src/cmd/cmd.cpp @@ -39,6 +39,7 @@ #include "theme.h" #include "netrcparser.h" +#include "libsync/logger.h" #include "config.h" @@ -189,7 +190,7 @@ void help() std::cout << " --downlimit [n] Limit the download speed of files to n KB/s" << std::endl; std::cout << " -h Sync hidden files,do not ignore them" << std::endl; std::cout << " --version, -v Display version and exit" << std::endl; - std::cout << " --debug More verbose logging" << std::endl; + std::cout << " --logdebug More verbose logging" << std::endl; std::cout << "" << std::endl; exit(0); } @@ -267,6 +268,9 @@ void parseOptions(const QStringList &app_args, CmdOptions *options) options->uplimit = it.next().toInt() * 1000; } else if (option == "--downlimit" && !it.peekNext().startsWith("-")) { options->downlimit = it.next().toInt() * 1000; + } else if (option == "--logdebug") { + Logger::instance()->setLogFile("-"); + Logger::instance()->setLogDebug(true); } else { help(); } @@ -330,6 +334,8 @@ int main(int argc, char **argv) csync_set_log_level(options.silent ? 1 : 11); if (options.silent) { qInstallMsgHandler(nullMessageHandler); + } else { + qSetMessagePattern("%{time MM-dd hh:mm:ss:zzz} [ %{type} %{category} ]%{if-debug}\t[ %{function} ]%{endif}:\t%{message}"); } AccountPtr account = Account::create(); From 9866010b4ce61086c06f9787d525ad1c5ef796b6 Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Tue, 17 Oct 2017 17:55:14 +0200 Subject: [PATCH 19/45] SettingsDialogMac: Fix account display name #6078 --- src/gui/settingsdialogmac.cpp | 22 +++++++++++++++++++++- src/gui/settingsdialogmac.h | 1 + 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/gui/settingsdialogmac.cpp b/src/gui/settingsdialogmac.cpp index 9124c8288..0e117779b 100644 --- a/src/gui/settingsdialogmac.cpp +++ b/src/gui/settingsdialogmac.cpp @@ -157,7 +157,8 @@ void SettingsDialogMac::accountAdded(AccountState *s) connect(accountSettings, &AccountSettings::openFolderAlias, _gui, &ownCloudGui::slotFolderOpenAction); connect(accountSettings, &AccountSettings::showIssuesList, this, &SettingsDialogMac::showIssuesList); - connect(s->account().data(), SIGNAL(accountChangedAvatar()), this, SLOT(slotAccountAvatarChanged())); + connect(s->account().data(), &Account::accountChangedAvatar, this, &SettingsDialogMac::slotAccountAvatarChanged); + connect(s->account().data(), &Account::accountChangedDisplayName, this, &SettingsDialogMac::slotAccountDisplayNameChanged); slotRefreshActivity(s); } @@ -195,4 +196,23 @@ void SettingsDialogMac::slotAccountAvatarChanged() } } } + +void SettingsDialogMac::slotAccountDisplayNameChanged() +{ + Account *account = static_cast(sender()); + auto list = findChildren(QString()); + foreach (auto p, list) { + if (p->accountsState()->account() == account) { + int idx = indexForPanel(p); + QString displayName = account->displayName(); + if (!displayName.isNull()) { + displayName = Theme::instance()->multiAccount() + ? SettingsDialogCommon::shortDisplayNameForSettings(account, 0) + : tr("Account"); + setPreferencesPanelTitle(idx, displayName); + } + } + } +} + } diff --git a/src/gui/settingsdialogmac.h b/src/gui/settingsdialogmac.h index c69ee5f14..5b4f412b8 100644 --- a/src/gui/settingsdialogmac.h +++ b/src/gui/settingsdialogmac.h @@ -54,6 +54,7 @@ private slots: void accountAdded(AccountState *); void accountRemoved(AccountState *); void slotAccountAvatarChanged(); + void slotAccountDisplayNameChanged(); private: void closeEvent(QCloseEvent *event); From 84d8624e03ddb354e1c45508c2aedf00099071a7 Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Thu, 19 Oct 2017 02:21:00 +0200 Subject: [PATCH 20/45] [tx-robot] updated from transifex --- mirall.desktop.in | 3 +++ translations/client_ca.ts | 1 + translations/client_cs.ts | 1 + translations/client_de.ts | 1 + translations/client_el.ts | 1 + translations/client_en.ts | 1 + translations/client_es.ts | 1 + translations/client_es_AR.ts | 1 + translations/client_et.ts | 1 + translations/client_eu.ts | 1 + translations/client_fa.ts | 1 + translations/client_fi.ts | 1 + translations/client_fr.ts | 1 + translations/client_gl.ts | 1 + translations/client_hu.ts | 1 + translations/client_it.ts | 39 ++++++++++++++++++------------------ translations/client_ja.ts | 1 + translations/client_nb_NO.ts | 1 + translations/client_nl.ts | 1 + translations/client_pl.ts | 1 + translations/client_pt.ts | 1 + translations/client_pt_BR.ts | 1 + translations/client_ru.ts | 9 +++++---- translations/client_sk.ts | 1 + translations/client_sl.ts | 1 + translations/client_sr.ts | 1 + translations/client_sv.ts | 1 + translations/client_th.ts | 1 + translations/client_tr.ts | 1 + translations/client_uk.ts | 1 + translations/client_zh_CN.ts | 1 + translations/client_zh_TW.ts | 1 + 32 files changed, 57 insertions(+), 23 deletions(-) diff --git a/mirall.desktop.in b/mirall.desktop.in index ce7f1ed34..88c09188e 100644 --- a/mirall.desktop.in +++ b/mirall.desktop.in @@ -225,6 +225,9 @@ X-GNOME-Autostart-Delay=3 # Translations +# Translations + + # Translations Comment[oc]=@APPLICATION_NAME@ sincronizacion del client GenericName[oc]=Dorsièr de Sincronizacion diff --git a/translations/client_ca.ts b/translations/client_ca.ts index beca69057..12a9f869e 100644 --- a/translations/client_ca.ts +++ b/translations/client_ca.ts @@ -2544,6 +2544,7 @@ No és aconsellada usar-la. + Account Compte diff --git a/translations/client_cs.ts b/translations/client_cs.ts index dde7f94cd..25aecb925 100644 --- a/translations/client_cs.ts +++ b/translations/client_cs.ts @@ -2547,6 +2547,7 @@ Nedoporučuje se jí používat. + Account Účet diff --git a/translations/client_de.ts b/translations/client_de.ts index 8bca5b3b7..4d7722239 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -2548,6 +2548,7 @@ Es ist nicht ratsam, diese zu benutzen. + Account Benutzerkonto diff --git a/translations/client_el.ts b/translations/client_el.ts index e2da239a5..92dabdcd6 100644 --- a/translations/client_el.ts +++ b/translations/client_el.ts @@ -2549,6 +2549,7 @@ It is not advisable to use it. + Account Λογαριασμός diff --git a/translations/client_en.ts b/translations/client_en.ts index 409120ba9..db44f6d7b 100644 --- a/translations/client_en.ts +++ b/translations/client_en.ts @@ -2568,6 +2568,7 @@ It is not advisable to use it. + Account diff --git a/translations/client_es.ts b/translations/client_es.ts index 076922795..2b2c7fe29 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -2548,6 +2548,7 @@ No se recomienda usarla. + Account Cuenta diff --git a/translations/client_es_AR.ts b/translations/client_es_AR.ts index 7d9687a98..a9c083010 100644 --- a/translations/client_es_AR.ts +++ b/translations/client_es_AR.ts @@ -2536,6 +2536,7 @@ It is not advisable to use it. + Account Cuenta diff --git a/translations/client_et.ts b/translations/client_et.ts index 1766696e4..02c6fdd18 100644 --- a/translations/client_et.ts +++ b/translations/client_et.ts @@ -2537,6 +2537,7 @@ Selle kasutamine pole soovitatav. + Account Konto diff --git a/translations/client_eu.ts b/translations/client_eu.ts index da702ae4c..21d720eff 100644 --- a/translations/client_eu.ts +++ b/translations/client_eu.ts @@ -2539,6 +2539,7 @@ Ez da gomendagarria erabltzea. + Account Kontua diff --git a/translations/client_fa.ts b/translations/client_fa.ts index 76e1c75ff..debdba5e3 100644 --- a/translations/client_fa.ts +++ b/translations/client_fa.ts @@ -2536,6 +2536,7 @@ It is not advisable to use it. + Account حساب کاربری diff --git a/translations/client_fi.ts b/translations/client_fi.ts index 35b6c590e..a8e119d19 100644 --- a/translations/client_fi.ts +++ b/translations/client_fi.ts @@ -2539,6 +2539,7 @@ Osoitteen käyttäminen ei ole suositeltavaa. + Account Tili diff --git a/translations/client_fr.ts b/translations/client_fr.ts index 83e372491..24dc39518 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -2550,6 +2550,7 @@ Il est déconseillé de l'utiliser. + Account Compte diff --git a/translations/client_gl.ts b/translations/client_gl.ts index 62afa77bd..d56941fd0 100644 --- a/translations/client_gl.ts +++ b/translations/client_gl.ts @@ -2538,6 +2538,7 @@ Recomendámoslle que non o use. + Account Conta diff --git a/translations/client_hu.ts b/translations/client_hu.ts index 6d0a9a8ef..607e849a1 100644 --- a/translations/client_hu.ts +++ b/translations/client_hu.ts @@ -2536,6 +2536,7 @@ It is not advisable to use it. + Account Fiók diff --git a/translations/client_it.ts b/translations/client_it.ts index 1595c14f9..395e1544e 100644 --- a/translations/client_it.ts +++ b/translations/client_it.ts @@ -1686,7 +1686,7 @@ Gli elementi per i quali è consentita l'eliminazione, saranno eliminati se Error returned from the server: <em>%1</em> - + Messaggio di errore dal server: <em>%1</em> @@ -2544,6 +2544,7 @@ Non è consigliabile utilizzarlo. + Account Account @@ -2692,22 +2693,22 @@ Non è consigliabile utilizzarlo. Link shares have been disabled - + La condivisione tramite link è stata disabilitata Create public link share - + Crea collegamento pubblico Open link in browser - + Apri collegamento nel browser Copy link to clipboard - + Copia link negli appunti @@ -2760,17 +2761,17 @@ Non è consigliabile utilizzarlo. The item is not shared with any users or groups - + L'elemento non è condiviso con nessun utente o gruppo Open link in browser - + Apri collegamento nel browser Copy link to clipboard - + Copia link negli appunti @@ -2785,7 +2786,7 @@ Non è consigliabile utilizzarlo. I shared something with you - + Ho condiviso qualcosa con te @@ -2878,22 +2879,22 @@ Non è consigliabile utilizzarlo. I shared something with you - + Ho condiviso qualcosa con te Share... - + Condividi... Copy private link to clipboard - + Copia link privato negli appunti Send private link by email... - + Invia link privato per email @@ -3553,7 +3554,7 @@ Non è consigliabile utilizzarlo. Disconnected from some accounts - + Disconnesso da un account @@ -3579,17 +3580,17 @@ Non è consigliabile utilizzarlo. Synchronization is paused - + La sincronizzazione è in pausa Error during synchronization - + Errore durante la sincronizzazione No sync folders configured - + Nessuna cartella configurata per la sincronizzazione @@ -3799,7 +3800,7 @@ Non è consigliabile utilizzarlo. An error occured while connecting. Please try again. - + Si è verificato un errore durante la connessione. Prova ancora @@ -4131,7 +4132,7 @@ Non è consigliabile utilizzarlo. Could not open browser - + Impossibile aprire il browser diff --git a/translations/client_ja.ts b/translations/client_ja.ts index 2254b2582..e15c9b62a 100644 --- a/translations/client_ja.ts +++ b/translations/client_ja.ts @@ -2545,6 +2545,7 @@ It is not advisable to use it. + Account アカウント diff --git a/translations/client_nb_NO.ts b/translations/client_nb_NO.ts index c8c03c307..793788024 100644 --- a/translations/client_nb_NO.ts +++ b/translations/client_nb_NO.ts @@ -2548,6 +2548,7 @@ Det er ikke tilrådelig å bruke den. + Account Konto diff --git a/translations/client_nl.ts b/translations/client_nl.ts index 051f70d52..e13643bd5 100644 --- a/translations/client_nl.ts +++ b/translations/client_nl.ts @@ -2553,6 +2553,7 @@ We adviseren deze site niet te gebruiken. + Account Account diff --git a/translations/client_pl.ts b/translations/client_pl.ts index f3aaa8f24..984a1e2e1 100644 --- a/translations/client_pl.ts +++ b/translations/client_pl.ts @@ -2542,6 +2542,7 @@ Niezalecane jest jego użycie. + Account Konto diff --git a/translations/client_pt.ts b/translations/client_pt.ts index 8ca79b441..99344657b 100644 --- a/translations/client_pt.ts +++ b/translations/client_pt.ts @@ -2549,6 +2549,7 @@ Não é aconselhada a sua utilização. + Account Conta diff --git a/translations/client_pt_BR.ts b/translations/client_pt_BR.ts index b784081b2..b9ff0a3f9 100644 --- a/translations/client_pt_BR.ts +++ b/translations/client_pt_BR.ts @@ -2546,6 +2546,7 @@ It is not advisable to use it. + Account Conta diff --git a/translations/client_ru.ts b/translations/client_ru.ts index 25731653a..b17d4fcac 100644 --- a/translations/client_ru.ts +++ b/translations/client_ru.ts @@ -2546,6 +2546,7 @@ It is not advisable to use it. + Account Уч.запись @@ -3555,7 +3556,7 @@ It is not advisable to use it. Disconnected from some accounts - + Отключено от некоторых учётных записей @@ -3581,17 +3582,17 @@ It is not advisable to use it. Synchronization is paused - + Синхронизация приостановлена Error during synchronization - + Ошибка во время синхронизации No sync folders configured - + Не настроено ни одного каталога для синхронизации diff --git a/translations/client_sk.ts b/translations/client_sk.ts index 782c8318d..4f3ae5650 100644 --- a/translations/client_sk.ts +++ b/translations/client_sk.ts @@ -2538,6 +2538,7 @@ Nie je vhodné ju používať. + Account Účet diff --git a/translations/client_sl.ts b/translations/client_sl.ts index d77a6e2f0..d3edfe26b 100644 --- a/translations/client_sl.ts +++ b/translations/client_sl.ts @@ -2549,6 +2549,7 @@ Uporaba ni priporočljiva. + Account Račun diff --git a/translations/client_sr.ts b/translations/client_sr.ts index d21ade620..0e38b2702 100644 --- a/translations/client_sr.ts +++ b/translations/client_sr.ts @@ -2538,6 +2538,7 @@ It is not advisable to use it. + Account Налог diff --git a/translations/client_sv.ts b/translations/client_sv.ts index 7bee90cc3..2f6872a78 100644 --- a/translations/client_sv.ts +++ b/translations/client_sv.ts @@ -2544,6 +2544,7 @@ Det är inte lämpligt använda den. + Account Konto diff --git a/translations/client_th.ts b/translations/client_th.ts index cd57e6029..f093f1263 100644 --- a/translations/client_th.ts +++ b/translations/client_th.ts @@ -2550,6 +2550,7 @@ It is not advisable to use it. + Account บัญชี diff --git a/translations/client_tr.ts b/translations/client_tr.ts index 8080bc9fb..081b9b115 100644 --- a/translations/client_tr.ts +++ b/translations/client_tr.ts @@ -2539,6 +2539,7 @@ Kullanmanız önerilmez. + Account Hesap diff --git a/translations/client_uk.ts b/translations/client_uk.ts index b7963e678..56137a33a 100644 --- a/translations/client_uk.ts +++ b/translations/client_uk.ts @@ -2537,6 +2537,7 @@ It is not advisable to use it. + Account Обліковий запис diff --git a/translations/client_zh_CN.ts b/translations/client_zh_CN.ts index 7cb200b91..19a74ed0a 100644 --- a/translations/client_zh_CN.ts +++ b/translations/client_zh_CN.ts @@ -2548,6 +2548,7 @@ It is not advisable to use it. + Account 账户 diff --git a/translations/client_zh_TW.ts b/translations/client_zh_TW.ts index 3f57aaf5c..979ebbef4 100644 --- a/translations/client_zh_TW.ts +++ b/translations/client_zh_TW.ts @@ -2540,6 +2540,7 @@ It is not advisable to use it. + Account 帳號 From a9761a89769c1a55b031eb0a198accfd5c36a9b8 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Fri, 29 Sep 2017 10:31:41 +0200 Subject: [PATCH 21/45] Use qEnvironmentVariable* instead of qgetenv when appropriate Now that we use Qt5, we should do that. It is slightly more efficient and declares the intent. (Modified using clazy) --- src/common/checksums.cpp | 2 +- src/common/utility.cpp | 2 +- src/gui/creds/shibboleth/shibbolethwebview.cpp | 4 ++-- src/gui/main.cpp | 2 +- src/libsync/owncloudpropagator.cpp | 4 ++-- src/libsync/syncengine.cpp | 4 ++-- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/common/checksums.cpp b/src/common/checksums.cpp index 278277c1e..1e8fdd988 100644 --- a/src/common/checksums.cpp +++ b/src/common/checksums.cpp @@ -120,7 +120,7 @@ QByteArray parseChecksumHeaderType(const QByteArray &header) bool uploadChecksumEnabled() { - static bool enabled = qgetenv("OWNCLOUD_DISABLE_CHECKSUM_UPLOAD").isEmpty(); + static bool enabled = qEnvironmentVariableIsEmpty("OWNCLOUD_DISABLE_CHECKSUM_UPLOAD"); return enabled; } diff --git a/src/common/utility.cpp b/src/common/utility.cpp index 212433c75..1653bd3d2 100644 --- a/src/common/utility.cpp +++ b/src/common/utility.cpp @@ -579,7 +579,7 @@ bool Utility::isConflictFile(const char *name) bool Utility::shouldUploadConflictFiles() { - static bool uploadConflictFiles = qgetenv("OWNCLOUD_UPLOAD_CONFLICT_FILES").toInt() != 0; + static bool uploadConflictFiles = qEnvironmentVariableIntValue("OWNCLOUD_UPLOAD_CONFLICT_FILES") != 0; return uploadConflictFiles; } diff --git a/src/gui/creds/shibboleth/shibbolethwebview.cpp b/src/gui/creds/shibboleth/shibbolethwebview.cpp index 4332cb95b..53fad96fa 100644 --- a/src/gui/creds/shibboleth/shibbolethwebview.cpp +++ b/src/gui/creds/shibboleth/shibbolethwebview.cpp @@ -43,7 +43,7 @@ public: UserAgentWebPage(QObject *parent) : QWebPage(parent) { - if (!qgetenv("OWNCLOUD_SHIBBOLETH_DEBUG").isEmpty()) { + if (!qEnvironmentVariableIsEmpty("OWNCLOUD_SHIBBOLETH_DEBUG")) { settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true); } } @@ -83,7 +83,7 @@ ShibbolethWebView::ShibbolethWebView(AccountPtr account, QWidget *parent) setWindowTitle(tr("%1 - Authenticate").arg(Theme::instance()->appNameGUI())); // Debug view to display the cipher suite - if (!qgetenv("OWNCLOUD_SHIBBOLETH_DEBUG").isEmpty()) { + if (!qEnvironmentVariableIsEmpty("OWNCLOUD_SHIBBOLETH_DEBUG")) { // open an additional window to display some cipher debug info QWebPage *debugPage = new UserAgentWebPage(this); debugPage->mainFrame()->load(QUrl("https://cc.dcsec.uni-hannover.de/")); diff --git a/src/gui/main.cpp b/src/gui/main.cpp index ba3947f14..8614bdcf4 100644 --- a/src/gui/main.cpp +++ b/src/gui/main.cpp @@ -88,7 +88,7 @@ int main(int argc, char **argv) // check a environment variable for core dumps #ifdef Q_OS_UNIX - if (!qgetenv("OWNCLOUD_CORE_DUMP").isEmpty()) { + if (!qEnvironmentVariableIsEmpty("OWNCLOUD_CORE_DUMP")) { struct rlimit core_limit; core_limit.rlim_cur = RLIM_INFINITY; core_limit.rlim_max = RLIM_INFINITY; diff --git a/src/libsync/owncloudpropagator.cpp b/src/libsync/owncloudpropagator.cpp index ed473be21..d90ae8af7 100644 --- a/src/libsync/owncloudpropagator.cpp +++ b/src/libsync/owncloudpropagator.cpp @@ -114,13 +114,13 @@ PropagateItemJob::~PropagateItemJob() static qint64 getMinBlacklistTime() { - return qMax(qgetenv("OWNCLOUD_BLACKLIST_TIME_MIN").toInt(), + return qMax(qEnvironmentVariableIntValue("OWNCLOUD_BLACKLIST_TIME_MIN"), 25); // 25 seconds } static qint64 getMaxBlacklistTime() { - int v = qgetenv("OWNCLOUD_BLACKLIST_TIME_MAX").toInt(); + int v = qEnvironmentVariableIntValue("OWNCLOUD_BLACKLIST_TIME_MAX"); if (v > 0) return v; return 24 * 60 * 60; // 1 day diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index f2fd135ba..a54df4024 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -1031,7 +1031,7 @@ void SyncEngine::slotDiscoveryJobFinished(int discoveryResult) _progressInfo->startEstimateUpdates(); // post update phase script: allow to tweak stuff by a custom script in debug mode. - if (!qgetenv("OWNCLOUD_POST_UPDATE_SCRIPT").isEmpty()) { + if (!qEnvironmentVariableIsEmpty("OWNCLOUD_POST_UPDATE_SCRIPT")) { #ifndef NDEBUG QString script = qgetenv("OWNCLOUD_POST_UPDATE_SCRIPT"); @@ -1464,7 +1464,7 @@ void SyncEngine::checkForPermission(SyncFileItemVector &syncItems) RemotePermissions SyncEngine::getPermissions(const QString &file) const { - static bool isTest = qgetenv("OWNCLOUD_TEST_PERMISSIONS").toInt(); + static bool isTest = qEnvironmentVariableIntValue("OWNCLOUD_TEST_PERMISSIONS"); if (isTest) { QRegExp rx("_PERM_([^_]*)_[^/]*$"); if (rx.indexIn(file) != -1) { From 984631d8070c4d4b758853fa2e1c9ed2c04fd227 Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Fri, 20 Oct 2017 02:21:27 +0200 Subject: [PATCH 22/45] [tx-robot] updated from transifex --- mirall.desktop.in | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mirall.desktop.in b/mirall.desktop.in index 88c09188e..33782963d 100644 --- a/mirall.desktop.in +++ b/mirall.desktop.in @@ -228,6 +228,9 @@ X-GNOME-Autostart-Delay=3 # Translations +# Translations + + # Translations Comment[oc]=@APPLICATION_NAME@ sincronizacion del client GenericName[oc]=Dorsièr de Sincronizacion From a0e50670de6f5fc4e001e387210abc1da69d61e9 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Thu, 19 Oct 2017 13:49:40 +0200 Subject: [PATCH 23/45] Shibolleth: raise the browser when clicking on the tray Issue #6105 Dynamically find the browser trough topLevelWidgets instead of forwarding the call to the relevant page as it would require to break many abstration layers (OwncloudSetupWizard -> OwncloudWizard -> AbstractCredentialsWizardPage -> OwncloudShibbolethCredsPage) And considering that we want to phase shibboleth down, I tought is was not worth adding an interface for this. The OAuth page don't have this problem because it shows a label and allow the user to re-open the browser. --- src/gui/owncloudsetupwizard.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp index 86a0c19ad..4f83a8496 100644 --- a/src/gui/owncloudsetupwizard.cpp +++ b/src/gui/owncloudsetupwizard.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include "wizard/owncloudwizardcommon.h" #include "wizard/owncloudwizard.h" @@ -84,6 +85,17 @@ bool OwncloudSetupWizard::bringWizardToFrontIfVisible() return false; } + if (wiz->_ocWizard->currentId() == WizardCommon::Page_ShibbolethCreds) { + // Try to find if there is a browser open and raise that instead (Issue #6105) + const auto allWindow = qApp->topLevelWidgets(); + auto it = std::find_if(allWindow.cbegin(), allWindow.cend(), [](QWidget *w) + { return QLatin1String(w->metaObject()->className()) == QLatin1String("OCC::ShibbolethWebView"); }); + if (it != allWindow.cend()) { + ownCloudGui::raiseDialog(*it); + return true; + } + } + ownCloudGui::raiseDialog(wiz->_ocWizard); return true; } From f41c9fbb7ff30830fbb13a3eeb26f8f721788203 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Fri, 20 Oct 2017 11:19:23 +0200 Subject: [PATCH 24/45] owncloudsetupwizard: Fix "add new account" if the wizard is already visible Clicking on the "Add new Account" from the systray menu should raise the wizard, even if it is already running. Relates to issue #6105 --- src/gui/owncloudsetupwizard.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp index 4f83a8496..7167d5bbc 100644 --- a/src/gui/owncloudsetupwizard.cpp +++ b/src/gui/owncloudsetupwizard.cpp @@ -70,6 +70,7 @@ static QPointer wiz = 0; void OwncloudSetupWizard::runWizard(QObject *obj, const char *amember, QWidget *parent) { if (!wiz.isNull()) { + bringWizardToFrontIfVisible(); return; } From df19b20d075940bd6aab561ce0d3d39482f5c5ba Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Sat, 21 Oct 2017 02:20:25 +0200 Subject: [PATCH 25/45] [tx-robot] updated from transifex --- mirall.desktop.in | 3 ++ translations/client_ca.ts | 60 ++++++++++++++++++------------------ translations/client_cs.ts | 60 ++++++++++++++++++------------------ translations/client_de.ts | 60 ++++++++++++++++++------------------ translations/client_el.ts | 60 ++++++++++++++++++------------------ translations/client_en.ts | 60 ++++++++++++++++++------------------ translations/client_es.ts | 60 ++++++++++++++++++------------------ translations/client_es_AR.ts | 60 ++++++++++++++++++------------------ translations/client_et.ts | 60 ++++++++++++++++++------------------ translations/client_eu.ts | 60 ++++++++++++++++++------------------ translations/client_fa.ts | 60 ++++++++++++++++++------------------ translations/client_fi.ts | 60 ++++++++++++++++++------------------ translations/client_fr.ts | 60 ++++++++++++++++++------------------ translations/client_gl.ts | 60 ++++++++++++++++++------------------ translations/client_hu.ts | 60 ++++++++++++++++++------------------ translations/client_it.ts | 60 ++++++++++++++++++------------------ translations/client_ja.ts | 60 ++++++++++++++++++------------------ translations/client_nb_NO.ts | 60 ++++++++++++++++++------------------ translations/client_nl.ts | 60 ++++++++++++++++++------------------ translations/client_pl.ts | 60 ++++++++++++++++++------------------ translations/client_pt.ts | 60 ++++++++++++++++++------------------ translations/client_pt_BR.ts | 60 ++++++++++++++++++------------------ translations/client_ru.ts | 60 ++++++++++++++++++------------------ translations/client_sk.ts | 60 ++++++++++++++++++------------------ translations/client_sl.ts | 60 ++++++++++++++++++------------------ translations/client_sr.ts | 60 ++++++++++++++++++------------------ translations/client_sv.ts | 60 ++++++++++++++++++------------------ translations/client_th.ts | 60 ++++++++++++++++++------------------ translations/client_tr.ts | 60 ++++++++++++++++++------------------ translations/client_uk.ts | 60 ++++++++++++++++++------------------ translations/client_zh_CN.ts | 60 ++++++++++++++++++------------------ translations/client_zh_TW.ts | 60 ++++++++++++++++++------------------ 32 files changed, 933 insertions(+), 930 deletions(-) diff --git a/mirall.desktop.in b/mirall.desktop.in index 33782963d..d290a0386 100644 --- a/mirall.desktop.in +++ b/mirall.desktop.in @@ -231,6 +231,9 @@ X-GNOME-Autostart-Delay=3 # Translations +# Translations + + # Translations Comment[oc]=@APPLICATION_NAME@ sincronizacion del client GenericName[oc]=Dorsièr de Sincronizacion diff --git a/translations/client_ca.ts b/translations/client_ca.ts index 12a9f869e..83cf89439 100644 --- a/translations/client_ca.ts +++ b/translations/client_ca.ts @@ -1914,144 +1914,144 @@ No és aconsellada usar-la. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">S'ha connectat correctament amb %1: %2 versió %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Ha fallat la connexió amb %1 a %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. S'ha esgotat el temps d'espera mentres es conectava a %1 a les %2. - + Trying to connect to %1 at %2... Intentant connectar amb %1 a %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. - + There was an invalid response to an authenticated webdav request - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. El servidor ha prohibit l'accés. Per verificar que teniu permisos, <a href="%1">cliqueu aquí</a> per accedir al servei amb el vostre navegador. - + Invalid URL URL incorrecte - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> La carpeta local %1 ja existeix, s'està configurant per sincronitzar.<br/><br/> - + Creating local sync folder %1... S'està creant la carpeta de sincronització local %1... - + ok correcte - + failed. ha fallat. - + Could not create local folder %1 No s'ha pogut crear la carpeta local %1 - + No remote folder specified! No heu especificat cap carpeta remota! - + Error: %1 Error: %1 - + creating folder on ownCloud: %1 creant la carpeta a ownCloud: %1 - + Remote folder %1 created successfully. La carpeta remota %1 s'ha creat correctament. - + The remote folder %1 already exists. Connecting it for syncing. La carpeta remota %1 ja existeix. S'hi està connectant per sincronitzar-les. - - + + The folder creation resulted in HTTP error code %1 La creació de la carpeta ha resultat en el codi d'error HTTP %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Ha fallat la creació de la carpeta perquè les credencials proporcionades són incorrectes!<br/>Aneu enrera i comproveu les credencials.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">La creació de la carpeta remota ha fallat, probablement perquè les credencials facilitades són incorrectes.</font><br/>Comproveu les vostres credencials.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. La creació de la carpeta remota %1 ha fallat amb l'error <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. S'ha establert una connexió de sincronització des de %1 a la carpeta remota %2. - + Successfully connected to %1! Connectat amb èxit a %1! - + Connection to %1 could not be established. Please check again. No s'ha pogut establir la connexió amb %1. Comproveu-ho de nou. - + Folder rename failed Ha fallat en canviar el nom de la carpeta - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. No es pot esborrar i restaurar la carpeta perquè una carpeta o un fitxer de dins està obert en un altre programa. Tanqueu la carpeta o el fitxer i intenteu-ho de nou o cancel·leu la configuració. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>la carpeta de sincronització %1 s'ha creat correctament!</b></font> diff --git a/translations/client_cs.ts b/translations/client_cs.ts index 25aecb925..cfb6b5d5e 100644 --- a/translations/client_cs.ts +++ b/translations/client_cs.ts @@ -1917,144 +1917,144 @@ Nedoporučuje se jí používat. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Úspěšně připojeno k %1: %2 verze %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Selhalo spojení s %1 v %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Vypršení časového limitu při pokusu o připojení k %1 na %2. - + Trying to connect to %1 at %2... Pokouším se připojit k %1 na %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Ověřený požadavek na server byl přesměrován na '%1'. URL je špatně, server není správně nakonfigurován. - + There was an invalid response to an authenticated webdav request Byla obdržena nesprávná odpověď na ověřený webdav požadavek - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Přístup zamítnut serverem. Pro ověření správných přístupových práv <a href="%1">klikněte sem</a> a otevřete službu ve svém prohlížeči. - + Invalid URL Neplatná URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Místní synchronizovaný adresář %1 již existuje, nastavuji jej pro synchronizaci.<br/><br/> - + Creating local sync folder %1... Vytvářím místní adresář pro synchronizaci %1... - + ok OK - + failed. selhalo. - + Could not create local folder %1 Nelze vytvořit místní adresář %1 - + No remote folder specified! Není nastaven žádný vzdálený adresář! - + Error: %1 Chyba: %1 - + creating folder on ownCloud: %1 vytvářím adresář na ownCloudu: %1 - + Remote folder %1 created successfully. Vzdálený adresář %1 byl úspěšně vytvořen. - + The remote folder %1 already exists. Connecting it for syncing. Vzdálený adresář %1 již existuje. Spojuji jej pro synchronizaci. - - + + The folder creation resulted in HTTP error code %1 Vytvoření adresáře selhalo s HTTP chybou %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Vytvoření vzdáleného adresáře selhalo, pravděpodobně z důvodu neplatných přihlašovacích údajů.<br/>Vraťte se prosím zpět a zkontrolujte je.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Vytvoření vzdáleného adresáře selhalo, pravděpodobně z důvodu neplatných přihlašovacích údajů.</font><br/>Vraťte se prosím zpět a zkontrolujte je.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Vytváření vzdáleného adresáře %1 selhalo s chybou <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Bylo nastaveno synchronizované spojení z %1 do vzdáleného adresáře %2. - + Successfully connected to %1! Úspěšně spojeno s %1. - + Connection to %1 could not be established. Please check again. Spojení s %1 nelze navázat. Prosím zkuste to znovu. - + Folder rename failed Přejmenování adresáře selhalo - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Nelze odstranit a zazálohovat adresář, protože adresář nebo soubor v něm je otevřen v jiném programu. Prosím zavřete adresář nebo soubor a zkuste znovu nebo zrušte akci. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Místní synchronizovaný adresář %1 byl úspěšně vytvořen!</b></font> diff --git a/translations/client_de.ts b/translations/client_de.ts index 4d7722239..b50b90063 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -1918,144 +1918,144 @@ Es ist nicht ratsam, diese zu benutzen. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Erfolgreich mit %1 verbunden: %2 Version %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Die Verbindung zu %1 auf %2:<br/>%3 konnte nicht hergestellt werden - + Timeout while trying to connect to %1 at %2. Zeitüberschreitung beim Verbindungsversuch mit %1 unter %2. - + Trying to connect to %1 at %2... Verbindungsversuch mit %1 unter %2… - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Die Authentifizierungs-Anfrage an den Server wurde weitergeleitet an '%1'. Diese Adresse ist ungültig, der Server ist falsch konfiguriert. - + There was an invalid response to an authenticated webdav request Es gab eine ungültige Reaktion auf eine WebDav-Authentifizeriungs-Anfrage - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Zugang vom Server nicht erlaubt. <a href="%1">Klicken Sie hier</a> zum Zugriff auf den Dienst mithilfe Ihres Browsers, so dass Sie sicherstellen können, dass Ihr Zugang ordnungsgemäß funktioniert. - + Invalid URL Ungültige URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Lokaler Sync-Ordner %1 existiert bereits, aktiviere Synchronistation.<br/><br/> - + Creating local sync folder %1... Lokaler Synchronisations-Ordner %1 wird erstellt ... - + ok ok - + failed. fehlgeschlagen. - + Could not create local folder %1 Der lokale Ordner %1 konnte nicht angelegt werden - + No remote folder specified! Keinen entfernten Ordner angegeben! - + Error: %1 Fehler: %1 - + creating folder on ownCloud: %1 erstelle Ordner auf ownCloud: %1 - + Remote folder %1 created successfully. Remoteordner %1 erfolgreich erstellt. - + The remote folder %1 already exists. Connecting it for syncing. Der Ordner %1 ist auf dem Server bereits vorhanden. Verbinde zur Synchronisation. - - + + The folder creation resulted in HTTP error code %1 Das Erstellen des Verzeichnisses erzeugte den HTTP-Fehler-Code %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Die Remote-Ordner-Erstellung ist fehlgeschlagen, weil die angegebenen Zugangsdaten falsch sind. Bitte gehen Sie zurück und überprüfen Sie die Zugangsdaten. - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Die Remote-Ordner-Erstellung ist fehlgeschlagen, vermutlich sind die angegebenen Zugangsdaten falsch.</font><br/>Bitte gehen Sie zurück und überprüfen Sie Ihre Zugangsdaten.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Remote-Ordner %1 konnte mit folgendem Fehler nicht erstellt werden: <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Eine Synchronisationsverbindung für Ordner %1 zum entfernten Ordner %2 wurde eingerichtet. - + Successfully connected to %1! Erfolgreich verbunden mit %1! - + Connection to %1 could not be established. Please check again. Die Verbindung zu %1 konnte nicht hergestellt werden. Bitte prüfen Sie die Einstellungen erneut. - + Folder rename failed Ordner umbenennen fehlgeschlagen. - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Der Ordner kann nicht entfernt und gesichert werden, da der Ordner oder einer seiner Dateien in einem anderen Programm geöffnet ist. Bitte schließen Sie den Ordner oder die Datei oder beenden Sie die Installation. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Lokaler Sync-Ordner %1 erfolgreich erstellt!</b></font> diff --git a/translations/client_el.ts b/translations/client_el.ts index 92dabdcd6..01404c6d0 100644 --- a/translations/client_el.ts +++ b/translations/client_el.ts @@ -1919,144 +1919,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Επιτυχής σύνδεση στο %1: %2 έκδοση %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Αποτυχία σύνδεσης με το %1 στο %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Λήξη χρονικού ορίου κατά τη σύνδεση σε %1 σε %2. - + Trying to connect to %1 at %2... Προσπάθεια σύνδεσης στο %1 για %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Η πιστοποιημένη αίτηση στον διακομιστή ανακατευθύνθηκε σε '%1'. Το URL είναι εσφαλμένο, ο διακομιστής δεν έχει διαμορφωθεί σωστά. - + There was an invalid response to an authenticated webdav request Υπήρξε μια άκυρη απόκριση σε μια πιστοποιημένη αίτηση - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Απαγόρευση πρόσβασης από τον διακομιστή. Για να επιβεβαιώσετε ότι έχετε δικαιώματα πρόσβασης, <a href="%1">πατήστε εδώ</a> για να προσπελάσετε την υπηρεσία με το πρόγραμμα πλοήγησής σας. - + Invalid URL Μη έγκυρη URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Ο τοπικός φάκελος συγχρονισμού %1 υπάρχει ήδη, ρύθμιση για συγχρονισμό.<br/><br/> - + Creating local sync folder %1... Δημιουργία τοπικού φακέλου συγχρονισμού %1... - + ok οκ - + failed. απέτυχε. - + Could not create local folder %1 Αδυναμία δημιουργίας τοπικού φακέλου %1 - + No remote folder specified! Δεν προσδιορίστηκε κανένας απομακρυσμένος φάκελος! - + Error: %1 Σφάλμα: %1 - + creating folder on ownCloud: %1 δημιουργία φακέλου στο ownCloud: %1 - + Remote folder %1 created successfully. Ο απομακρυσμένος φάκελος %1 δημιουργήθηκε με επιτυχία. - + The remote folder %1 already exists. Connecting it for syncing. Ο απομακρυσμένος φάκελος %1 υπάρχει ήδη. Θα συνδεθεί για συγχρονισμό. - - + + The folder creation resulted in HTTP error code %1 Η δημιουργία φακέλου είχε ως αποτέλεσμα τον κωδικό σφάλματος HTTP %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Η δημιουργία απομακρυσμένου φακέλλου απέτυχε επειδή τα διαπιστευτήρια είναι λάθος!<br/>Παρακαλώ επιστρέψετε και ελέγξετε τα διαπιστευτήριά σας.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Η δημιουργία απομακρυσμένου φακέλου απέτυχε, πιθανώς επειδή τα διαπιστευτήρια που δόθηκαν είναι λάθος.</font><br/>Παρακαλώ επιστρέψτε πίσω και ελέγξτε τα διαπιστευτήρια σας.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Η δημιουργία απομακρυσμένου φακέλου %1 απέτυχε με σφάλμα <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Μια σύνδεση συγχρονισμού από τον απομακρυσμένο κατάλογο %1 σε %2 έχει ρυθμιστεί. - + Successfully connected to %1! Επιτυχής σύνδεση με %1! - + Connection to %1 could not be established. Please check again. Αδυναμία σύνδεσης στον %1. Παρακαλώ ελέξτε ξανά. - + Folder rename failed Αποτυχία μετονομασίας φακέλου - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Αδυναμία αφαίρεσης και δημιουργίας αντιγράφου ασφαλείας του φακέλου διότι ο φάκελος ή ένα αρχείο του είναι ανοικτό από άλλο πρόγραμμα. Παρακαλώ κλείστε τον φάκελο ή το αρχείο και πατήστε επανάληψη ή ακυρώστε την ρύθμιση. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Επιτυχής δημιουργία τοπικού φακέλου %1 για συγχρονισμό!</b></font> diff --git a/translations/client_en.ts b/translations/client_en.ts index db44f6d7b..0f01e5bd1 100644 --- a/translations/client_en.ts +++ b/translations/client_en.ts @@ -1938,144 +1938,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. - + Trying to connect to %1 at %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. - + There was an invalid response to an authenticated webdav request - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - + Invalid URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> - + Creating local sync folder %1... - + ok - + failed. - + Could not create local folder %1 - + No remote folder specified! - + Error: %1 - + creating folder on ownCloud: %1 - + Remote folder %1 created successfully. - + The remote folder %1 already exists. Connecting it for syncing. - - + + The folder creation resulted in HTTP error code %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. - + Successfully connected to %1! - + Connection to %1 could not be established. Please check again. - + Folder rename failed - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> diff --git a/translations/client_es.ts b/translations/client_es.ts index 2b2c7fe29..fb9f0fc0b 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -1918,144 +1918,144 @@ No se recomienda usarla. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Conectado con éxito a %1: versión %2 %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Fallo al conectar %1 a %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Tiempo de espera agotado mientras se intentaba conectar a %1 en %2 - + Trying to connect to %1 at %2... Intentando conectar a %1 desde %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. La petición autenticada al servidor ha sido redirigida a '%1'. La dirección URL es errónea, el servidor está mal configurado. - + There was an invalid response to an authenticated webdav request Ha habido una respuesta no válida a una solicitud autenticada de webdav - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Acceso denegado por el servidor. Para verificar que usted tiene acceso, <a href="%1">haga clic aquí</a> para acceder al servicio con su navegador. - + Invalid URL URL inválida. - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> La carpeta de sincronización local %1 ya existe, configurándola para la sincronización.<br/><br/> - + Creating local sync folder %1... Creando carpeta de sincronización local %1 - + ok bien - + failed. ha fallado. - + Could not create local folder %1 No se ha podido crear la carpeta local %1 - + No remote folder specified! ¡No se ha especificado ninguna carpeta remota! - + Error: %1 Error: %1 - + creating folder on ownCloud: %1 creando carpeta en ownCloud: %1 - + Remote folder %1 created successfully. Carpeta remota %1 creado correctamente. - + The remote folder %1 already exists. Connecting it for syncing. La carpeta remota %1 ya existe. Conectándola para sincronizacion. - - + + The folder creation resulted in HTTP error code %1 La creación de la carpeta ha producido el código de error HTTP %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> ¡La creación de la carpeta remota ha fallado debido a que las credenciales proporcionadas son incorrectas!<br/>Por favor, vuelva atrás y compruebe sus credenciales</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">La creación de la carpeta remota ha fallado, probablemente porque las credenciales proporcionadas son incorrectas.</font><br/>Por favor, vuelva atrás y compruebe sus credenciales.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Creación %1 de carpeta remota ha fallado con el error <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Se ha configarado una conexión de sincronización desde %1 al directorio remoto %2 - + Successfully connected to %1! ¡Conectado con éxito a %1! - + Connection to %1 could not be established. Please check again. No se ha podido establecer la conexión con %1. Por favor, compruébelo de nuevo. - + Folder rename failed Error al renombrar la carpeta - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. No se puede eliminar y respaldar la carpeta porque la misma o un fichero en ella está abierto por otro programa. Por favor, cierre la carpeta o el fichero y reintente, o cancele la instalación. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Carpeta de sincronización local %1 creada con éxito</b></font> diff --git a/translations/client_es_AR.ts b/translations/client_es_AR.ts index a9c083010..7a5c9b71e 100644 --- a/translations/client_es_AR.ts +++ b/translations/client_es_AR.ts @@ -1906,144 +1906,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Conectado a %1: versión de %2 %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Falló al conectarse a %1 en %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Tiempo excedido mientras se intentaba conectar a %1 desde %2. - + Trying to connect to %1 at %2... Intentando conectar a %1 en %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. - + There was an invalid response to an authenticated webdav request - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - + Invalid URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> El directorio de sincronización local %1 ya existe, configurándolo para la sincronización.<br/><br/> - + Creating local sync folder %1... - + ok aceptar - + failed. Error. - + Could not create local folder %1 No fue posible crear el directorio local %1 - + No remote folder specified! ¡No se ha especificado un directorio remoto! - + Error: %1 Error: %1 - + creating folder on ownCloud: %1 Creando carpeta en ownCloud: %1 - + Remote folder %1 created successfully. El directorio remoto %1 fue creado con éxito. - + The remote folder %1 already exists. Connecting it for syncing. El directorio remoto %1 ya existe. Estableciendo conexión para sincronizar. - - + + The folder creation resulted in HTTP error code %1 La creación del directorio resultó en un error HTTP con código de error %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> <p><font color="red">Error al crear el directorio remoto porque las credenciales provistas son incorrectas.</font><br/>Por favor, volvé atrás y verificá tus credenciales.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Error al crear el directorio remoto, probablemente porque las credenciales provistas son incorrectas.</font><br/>Por favor, volvé atrás y verificá tus credenciales.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Se prtodujo un error <tt>%2</tt> al crear el directorio remoto %1. - + A sync connection from %1 to remote directory %2 was set up. Fue creada una conexión de sincronización desde %1 al directorio remoto %2. - + Successfully connected to %1! Conectado con éxito a %1! - + Connection to %1 could not be established. Please check again. No fue posible establecer la conexión a %1. Por favor, intentalo nuevamente. - + Folder rename failed Error Al Renombrar Directorio - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Directorio local %1 creado</b></font> diff --git a/translations/client_et.ts b/translations/client_et.ts index 02c6fdd18..c23eb664f 100644 --- a/translations/client_et.ts +++ b/translations/client_et.ts @@ -1907,144 +1907,144 @@ Selle kasutamine pole soovitatav. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Edukalt ühendatud %1: %2 versioon %3 (4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Ühendumine ebaõnnestus %1 %2-st:<br/>%3 - + Timeout while trying to connect to %1 at %2. - + Trying to connect to %1 at %2... Püüan ühenduda %1 kohast %2 - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. - + There was an invalid response to an authenticated webdav request - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - + Invalid URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Kohalik kataloog %1 on juba olemas. Valmistan selle ette sünkroniseerimiseks. - + Creating local sync folder %1... Kohaliku kausta %1 sünkroonimise loomine ... - + ok ok - + failed. ebaõnnestus. - + Could not create local folder %1 Ei suuda tekitada kohalikku kataloogi %1 - + No remote folder specified! Ühtegi võrgukataloogi pole määratletud! - + Error: %1 Viga: %1 - + creating folder on ownCloud: %1 loon uue kataloogi ownCloudi: %1 - + Remote folder %1 created successfully. Eemalolev kaust %1 on loodud. - + The remote folder %1 already exists. Connecting it for syncing. Serveris on kataloog %1 juba olemas. Ühendan selle sünkroniseerimiseks. - - + + The folder creation resulted in HTTP error code %1 Kausta tekitamine lõppes HTTP veakoodiga %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Kataloogi loomine serverisse ebaõnnestus, kuna kasutajatõendid on valed!<br/>Palun kontrolli oma kasutajatunnust ja parooli.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Serveris oleva kataloogi tekitamine ebaõnnestus tõenäoliselt valede kasutajatunnuste tõttu.</font><br/>Palun mine tagasi ning kontrolli kasutajatunnust ning parooli.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Kataloogi %1 tekitamine serverisse ebaõnnestus veaga <tt>%2</tt> - + A sync connection from %1 to remote directory %2 was set up. Loodi sünkroniseerimisühendus kataloogist %1 serveri kataloogi %2 - + Successfully connected to %1! Edukalt ühendatud %1! - + Connection to %1 could not be established. Please check again. Ühenduse loomine %1 ebaõnnestus. Palun kontrolli uuesti. - + Folder rename failed Kataloogi ümbernimetamine ebaõnnestus - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Ei suuda eemaldada ning varundada kataloogi kuna kataloog või selles asuv fail on avatud mõne teise programmi poolt. Palun sulge kataloog või fail ning proovi uuesti või katkesta paigaldus. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Kohalik kataloog %1 edukalt loodud!</b></font> diff --git a/translations/client_eu.ts b/translations/client_eu.ts index 21d720eff..bc51cc4f6 100644 --- a/translations/client_eu.ts +++ b/translations/client_eu.ts @@ -1909,144 +1909,144 @@ Ez da gomendagarria erabltzea. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Konexioa ongi burutu da %1 zerbitzarian: %2 bertsioa %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Denbora iraungi da %1era %2n konektatzen saiatzean. - + Trying to connect to %1 at %2... %2 zerbitzarian dagoen %1 konektatzen... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. - + There was an invalid response to an authenticated webdav request - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - + Invalid URL Baliogabeko URLa - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Bertako %1 karpeta dagoeneko existitzen da, sinkronizaziorako prestatzen.<br/><br/> - + Creating local sync folder %1... Bertako %1 sinkronizazio karpeta sortzen... - + ok ados - + failed. huts egin du. - + Could not create local folder %1 Ezin da %1 karpeta lokala sortu - + No remote folder specified! Ez da urruneko karpeta zehaztu! - + Error: %1 Errorea: %1 - + creating folder on ownCloud: %1 ownClouden karpeta sortzen: %1 - + Remote folder %1 created successfully. Urruneko %1 karpeta ongi sortu da. - + The remote folder %1 already exists. Connecting it for syncing. Urruneko %1 karpeta dagoeneko existintzen da. Bertara konetatuko da sinkronizatzeko. - - + + The folder creation resulted in HTTP error code %1 Karpeta sortzeak HTTP %1 errore kodea igorri du - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Huts egin du urrutiko karpeta sortzen emandako kredintzialak ez direlako zuzenak!<br/> Egin atzera eta egiaztatu zure kredentzialak.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Urruneko karpeten sortzeak huts egin du ziuraski emandako kredentzialak gaizki daudelako.</font><br/>Mesedez atzera joan eta egiaztatu zure kredentzialak.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Urruneko %1 karpetaren sortzeak huts egin du <tt>%2</tt> errorearekin. - + A sync connection from %1 to remote directory %2 was set up. Sinkronizazio konexio bat konfiguratu da %1 karpetatik urruneko %2 karpetara. - + Successfully connected to %1! %1-era ongi konektatu da! - + Connection to %1 could not be established. Please check again. %1 konexioa ezin da ezarri. Mesedez egiaztatu berriz. - + Folder rename failed Karpetaren berrizendatzeak huts egin du - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Ezin da karpeta ezabatu eta kopia egin, karpeta edo barruko fitxategiren bat beste programa batean irekita dagoelako. Mesedez itxi karpeta edo fitxategia eta sakatu berrekin edo ezeztatu konfigurazioa. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Bertako sinkronizazio %1 karpeta ongi sortu da!</b></font> diff --git a/translations/client_fa.ts b/translations/client_fa.ts index debdba5e3..199737772 100644 --- a/translations/client_fa.ts +++ b/translations/client_fa.ts @@ -1906,144 +1906,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green"> با موفقیت متصل شده است به %1: %2 نسخه %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 ارتباط ناموفق با %1 در %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. - + Trying to connect to %1 at %2... تلاش برای اتصال %1 به %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. - + There was an invalid response to an authenticated webdav request - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - + Invalid URL آدرس نامعتبر - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> پوشه همگام سازی محلی %1 در حال حاضر موجود است، تنظیم آن برای همگام سازی. <br/><br/> - + Creating local sync folder %1... - + ok خوب - + failed. ناموفق. - + Could not create local folder %1 نمی تواند پوشه محلی ایجاد کند %1 - + No remote folder specified! - + Error: %1 خطا: %1 - + creating folder on ownCloud: %1 ایجاد کردن پوشه بر روی ownCloud: %1 - + Remote folder %1 created successfully. پوشه از راه دور %1 با موفقیت ایجاد شده است. - + The remote folder %1 already exists. Connecting it for syncing. در حال حاضر پوشه از راه دور %1 موجود است. برای همگام سازی به آن متصل شوید. - - + + The folder creation resulted in HTTP error code %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> ایجاد پوشه از راه دور ناموفق بود به علت اینکه اعتبارهای ارائه شده اشتباه هستند!<br/>لطفا اعتبارهای خودتان را بررسی کنید.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red"> ایجاد پوشه از راه دور ناموفق بود، شاید به علت اعتبارهایی که ارئه شده اند، اشتباه هستند.</font><br/> لطفا باز گردید و اعتبار خود را بررسی کنید.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. ایجاد پوشه از راه دور %1 ناموفق بود با خطا <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. یک اتصال همگام سازی از %1 تا %2 پوشه از راه دور راه اندازی شد. - + Successfully connected to %1! با موفقیت به %1 اتصال یافت! - + Connection to %1 could not be established. Please check again. اتصال به %1 نمی تواند مقرر باشد. لطفا دوباره بررسی کنید. - + Folder rename failed تغییر نام پوشه ناموفق بود - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b> پوشه همگام سازی محلی %1 با موفقیت ساخته شده است!</b></font> diff --git a/translations/client_fi.ts b/translations/client_fi.ts index a8e119d19..0e701795f 100644 --- a/translations/client_fi.ts +++ b/translations/client_fi.ts @@ -1909,144 +1909,144 @@ Osoitteen käyttäminen ei ole suositeltavaa. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Muodostettu yhteys onnistuneesti kohteeseen %1: %2 versio %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Yhteys %1iin osoitteessa %2 epäonnistui:<br/>%3 - + Timeout while trying to connect to %1 at %2. Aikakatkaisu yrittäessä yhteyttä kohteeseen %1 osoitteessa %2. - + Trying to connect to %1 at %2... Yritetään yhdistetää palvelimeen %1 portissa %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. - + There was an invalid response to an authenticated webdav request Todennettuun webdav-pyyntöön saatiin virheellinen vastaus - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Palvelin esti käyttämisen. Vahvista käyttöoikeutesi palvelimeen <a href="%1">napsauttamalla tästä</a> ja kirjaudu palveluun selaimella. - + Invalid URL Virheellinen verkko-osoite - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Paikallinen kansio %1 on jo olemassa, asetetaan se synkronoitavaksi.<br/><br/> - + Creating local sync folder %1... Luodaan paikallista synkronointikansiota %1... - + ok ok - + failed. epäonnistui. - + Could not create local folder %1 Paikalliskansion %1 luonti epäonnistui - + No remote folder specified! Etäkansiota ei määritelty! - + Error: %1 Virhe: %1 - + creating folder on ownCloud: %1 luodaan kansio ownCloudiin: %1 - + Remote folder %1 created successfully. Etäkansio %1 luotiin onnistuneesti. - + The remote folder %1 already exists. Connecting it for syncing. Etäkansio %1 on jo olemassa. Otetaan siihen yhteyttä tiedostojen täsmäystä varten. - - + + The folder creation resulted in HTTP error code %1 Kansion luonti aiheutti HTTP-virhekoodin %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Etäkansion luominen epäonnistui koska antamasi tunnus/salasana ei täsmää!<br/>Ole hyvä ja palaa tarkistamaan tunnus/salasana</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Pilvipalvelun etäkansion luominen ei onnistunut , koska tunnistautumistietosi ovat todennäköisesti väärin.</font><br/>Palaa takaisin ja tarkista käyttäjätunnus ja salasana.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Etäkansion %1 luonti epäonnistui, virhe <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Täsmäysyhteys kansiosta %1 etäkansioon %2 on asetettu. - + Successfully connected to %1! Yhteys kohteeseen %1 muodostettiin onnistuneesti! - + Connection to %1 could not be established. Please check again. Yhteyttä osoitteeseen %1 ei voitu muodostaa. Ole hyvä ja tarkista uudelleen. - + Folder rename failed Kansion nimen muuttaminen epäonnistui - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Paikallinen synkronointikansio %1 luotu onnistuneesti!</b></font> diff --git a/translations/client_fr.ts b/translations/client_fr.ts index 24dc39518..08a181014 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -1920,144 +1920,144 @@ Il est déconseillé de l'utiliser. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Connecté avec succès à %1 : %2 version %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Échec de la connexion à %1 sur %2 :<br/>%3 - + Timeout while trying to connect to %1 at %2. Délai d'attente dépassé lors de la connexion à %1 sur %2. - + Trying to connect to %1 at %2... Tentative de connexion à %1 sur %2 ... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. La requête d'authentification vers le serveur a été redirigée vers '%1'. L'URL est erronée, le serveur est mal configuré. - + There was an invalid response to an authenticated webdav request Une réponse non valide a été reçue suite à une requête WebDav authentifiée. - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Accès impossibe. Afin de vérifier l'accès au serveur, <a href="%1">cliquez ici</a> et connectez-vous au service avec votre navigateur web. - + Invalid URL URL invalide - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Le dossier de synchronisation local %1 existe déjà, configuration de la synchronisation.<br/><br/> - + Creating local sync folder %1... Création du dossier local de synchronisation %1... - + ok ok - + failed. échoué. - + Could not create local folder %1 Impossible de créer le dossier local %1 - + No remote folder specified! Aucun dossier distant spécifié ! - + Error: %1 Erreur : %1 - + creating folder on ownCloud: %1 création d'un dossier sur ownCloud : %1 - + Remote folder %1 created successfully. Le dossier distant %1 a été créé avec succès. - + The remote folder %1 already exists. Connecting it for syncing. Le dossier distant %1 existe déjà. Connexion. - - + + The folder creation resulted in HTTP error code %1 La création du dossier a généré le code d'erreur HTTP %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> La création du dossier distant a échoué car les identifiants de connexion sont erronés !<br/>Veuillez revenir en arrière et vérifier ces derniers.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">La création du dossier distant a échoué, probablement parce que les informations d'identification fournies sont fausses.</font><br/>Veuillez revenir en arrière et les vérifier.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. La création du dossier distant "%1" a échouée avec l'erreur <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Une synchronisation entre le dossier local %1 et le dossier distant %2 a été configurée. - + Successfully connected to %1! Connecté avec succès à %1 ! - + Connection to %1 could not be established. Please check again. La connexion à %1 n'a pu être établie. Veuillez réessayer. - + Folder rename failed Echec du renommage du dossier - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Impossible de supprimer et de sauvegarder le dossier parce que ce dossier ou un de ses fichiers est ouvert dans un autre programme. Veuillez fermer le dossier ou le fichier et ré-essayer, ou annuler l'installation. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Dossier de synchronisation local %1 créé avec succès !</b></font> diff --git a/translations/client_gl.ts b/translations/client_gl.ts index d56941fd0..aeb8b2839 100644 --- a/translations/client_gl.ts +++ b/translations/client_gl.ts @@ -1908,144 +1908,144 @@ Recomendámoslle que non o use. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Conectouse correctamente a %1: %2 versión %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Non foi posíbel conectar con %1 en %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Esgotouse o tempo tentando conectarse a %1 en %2... - + Trying to connect to %1 at %2... Tentando conectarse a %1 en %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. A solicitude autenticada no servidor foi redirixida a «%1», O URL é incorrecto, o servidor está mal configurado. - + There was an invalid response to an authenticated webdav request Deuse unha resposta incorrecta a unha solicitude de WebDAV autenticada - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Acceso prohibido polo servidor. Para comprobar que dispón do acceso axeitado, <a href="%1">prema aquí</a> para acceder ao servizo co seu navegador. - + Invalid URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> O cartafol de sincronización local %1 xa existe. Configurándoo para a sincronización.<br/><br/> - + Creating local sync folder %1... Creando un cartafol local de sincronización %1... - + ok aceptar - + failed. fallou. - + Could not create local folder %1 Non foi posíbel crear o cartafol local %1 - + No remote folder specified! Non foi especificado o cartafol remoto! - + Error: %1 Erro: %1 - + creating folder on ownCloud: %1 creando o cartafol en ownCloud: %1 - + Remote folder %1 created successfully. O cartafol remoto %1 creouse correctamente. - + The remote folder %1 already exists. Connecting it for syncing. O cartafol remoto %1 xa existe. Conectándoo para a sincronización. - - + + The folder creation resulted in HTTP error code %1 A creación do cartafol resultou nun código de erro HTTP %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> A creación do cartafol remoto fracasou por por de seren incorrectas as credenciais!<br/>Volva atrás e comprobe as súas credenciais.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">A creación do cartafol remoto fallou probabelmente debido a que as credenciais que se deron non foran as correctas.</font><br/>Volva atrás e comprobe as súas credenciais.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Produciuse un fallo ao crear o cartafol remoto %1 e dou o erro <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Estabeleceuse a conexión de sincronización de %1 ao directorio remoto %2. - + Successfully connected to %1! Conectou satisfactoriamente con %1 - + Connection to %1 could not be established. Please check again. Non foi posíbel estabelecer a conexión con %1. Compróbeo de novo. - + Folder rename failed Non foi posíbel renomear o cartafol - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Non é posíbel retirar e facer unha copia de seguranza do cartafol, xa que o cartafol ou un ficheiro está aberto noutro programa Peche o cartafol ou o ficheiro e ténteo de novo, ou cancele a acción. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>O cartafol local de sincronización %1 creouse correctamente!</b></font> diff --git a/translations/client_hu.ts b/translations/client_hu.ts index 607e849a1..a60ba7548 100644 --- a/translations/client_hu.ts +++ b/translations/client_hu.ts @@ -1906,144 +1906,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Sikeresen csatlakozott az %1-hoz: %2 verziószám %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. - + Trying to connect to %1 at %2... Próbál kapcsolódni az %1-hoz: %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. - + There was an invalid response to an authenticated webdav request - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - + Invalid URL Érvénytelen URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> A helyi %1 mappa már létezik, állítsa be a szinkronizálódását.<br/><br/> - + Creating local sync folder %1... - + ok ok - + failed. sikertelen. - + Could not create local folder %1 - + No remote folder specified! - + Error: %1 Hiba: %1 - + creating folder on ownCloud: %1 - + Remote folder %1 created successfully. %1 távoli nappa sikeresen létrehozva. - + The remote folder %1 already exists. Connecting it for syncing. A %1 távoli mappa már létezik. Csatlakoztassa a szinkronizációhoz. - - + + The folder creation resulted in HTTP error code %1 A könyvtár létrehozásakor keletkezett HTTP hibakód %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">A távoli mappa létrehozása sikertelen, valószínűleg mivel hibásak a megdott hitelesítési adatok.</font><br/>Lépjen vissza és ellenőrizze a belépési adatokat.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. A távoli %1 mappa létrehozása nem sikerült. Hibaüzenet: <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. A szinkronizációs kapcsolat a %1 és a %2 távoli mappa között létrejött. - + Successfully connected to %1! Sikeresen csatlakozva: %1! - + Connection to %1 could not be established. Please check again. A kapcsolat a %1 kiszolgálóhoz sikertelen. Ellenőrizze újra. - + Folder rename failed A mappa átnevezése nem sikerült - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Helyi %1 szinkronizációs mappa sikeresen létrehozva!</b></font> diff --git a/translations/client_it.ts b/translations/client_it.ts index 395e1544e..0a19057c6 100644 --- a/translations/client_it.ts +++ b/translations/client_it.ts @@ -1914,144 +1914,144 @@ Non è consigliabile utilizzarlo. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Connesso correttamente a %1: %2 versione %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Connessione a %1 su %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Tempo scaduto durante il tentativo di connessione a %1 su %2. - + Trying to connect to %1 at %2... Tentativo di connessione a %1 su %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. La richiesta autenticata al server è stata rediretta a '%1'. L'URL è errato, il server non è configurato correttamente. - + There was an invalid response to an authenticated webdav request Ricevuta una risposta non valida a una richiesta webdav autenticata. - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Accesso negato dal server. Per verificare di avere i permessi appropriati, <a href="%1">fai clic qui</a> per accedere al servizio con il tuo browser. - + Invalid URL URL non valido - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> La cartella di sincronizzazione locale %1 esiste già, impostata per la sincronizzazione.<br/><br/> - + Creating local sync folder %1... Creazione della cartella locale di sincronizzazione %1... - + ok ok - + failed. non riuscita. - + Could not create local folder %1 Impossibile creare la cartella locale %1 - + No remote folder specified! Nessuna cartella remota specificata! - + Error: %1 Errore: %1 - + creating folder on ownCloud: %1 creazione cartella su ownCloud: %1 - + Remote folder %1 created successfully. La cartella remota %1 è stata creata correttamente. - + The remote folder %1 already exists. Connecting it for syncing. La cartella remota %1 esiste già. Connessione in corso per la sincronizzazione - - + + The folder creation resulted in HTTP error code %1 La creazione della cartella ha restituito un codice di errore HTTP %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> La creazione della cartella remota non è riuscita poiché le credenziali fornite sono errate!<br/>Torna indietro e verifica le credenziali.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">La creazione della cartella remota non è riuscita probabilmente perché le credenziali fornite non sono corrette.</font><br/>Torna indietro e controlla le credenziali inserite.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Creazione della cartella remota %1 non riuscita con errore <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Una connessione di sincronizzazione da %1 alla cartella remota %2 è stata stabilita. - + Successfully connected to %1! Connesso con successo a %1! - + Connection to %1 could not be established. Please check again. La connessione a %1 non può essere stabilita. Prova ancora. - + Folder rename failed Rinomina della cartella non riuscita - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Impossibile rimuovere o creare una copia di sicurezza della cartella poiché la cartella o un file in essa contenuto è aperta in un altro programma. Chiudi la cartella o il file e premi Riprova o annulla la configurazione. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Cartella locale %1 creata correttamente!</b></font> diff --git a/translations/client_ja.ts b/translations/client_ja.ts index e15c9b62a..6f7f0cbad 100644 --- a/translations/client_ja.ts +++ b/translations/client_ja.ts @@ -1915,144 +1915,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">正常に %1 へ接続されました:%2 バージョン %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 %2 の %1 に接続に失敗:<br/>%3 - + Timeout while trying to connect to %1 at %2. %2 の %1 へ接続を試みた際にタイムアウトしました。 - + Trying to connect to %1 at %2... %2 の %1 へ接続を試みています... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. サーバーへの認証リクエストは '%1' へリダイレクトされました。URLは不正です、サーバーの設定に誤りがあります。 - + There was an invalid response to an authenticated webdav request 認証された WebDav リクエストに不正な応答がありました - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. サーバーによってアクセスが拒否されています。適切なアクセス権があるか検証するには、<a href="%1">ここをクリック</a>してブラウザーでサービスにアクセスしてください。 - + Invalid URL 無効なURL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> ローカルの同期フォルダー %1 はすでに存在するため、同期の設定をしてください。<br/><br/> - + Creating local sync folder %1... ローカル同期フォルダー %1 を作成中... - + ok OK - + failed. 失敗。 - + Could not create local folder %1 ローカルフォルダー %1 を作成できませんでした - + No remote folder specified! リモートフォルダーが指定されていません! - + Error: %1 エラー: %1 - + creating folder on ownCloud: %1 ownCloud上にフォルダーを作成中: %1 - + Remote folder %1 created successfully. リモートフォルダー %1 は正常に生成されました。 - + The remote folder %1 already exists. Connecting it for syncing. リモートフォルダー %1 はすでに存在します。同期のために接続しています。 - - + + The folder creation resulted in HTTP error code %1 フォルダーの作成はHTTPのエラーコード %1 で終了しました - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> 指定された資格情報が間違っているため、リモートフォルダーの作成に失敗しました!<br/>前に戻って資格情報を確認してください。</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">おそらく資格情報が間違っているため、リモートフォルダーの作成に失敗しました。</font><br/>前に戻り、資格情報をチェックしてください。</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. リモートフォルダー %1 の作成がエラーで失敗しました。<tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. %1 からリモートディレクトリ %2 への同期接続を設定しました。 - + Successfully connected to %1! %1への接続に成功しました! - + Connection to %1 could not be established. Please check again. %1 への接続を確立できませんでした。もう一度確認してください。 - + Folder rename failed フォルダー名の変更に失敗しました。 - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. フォルダーまたはその中にあるファイルが他のプログラムで開かれているため、フォルダーの削除やバックアップができません。フォルダーまたはファイルを閉じてから再試行するか、セットアップをキャンセルしてください。 - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>ローカルの同期フォルダー %1 は正常に作成されました!</b></font> diff --git a/translations/client_nb_NO.ts b/translations/client_nb_NO.ts index 793788024..082be5917 100644 --- a/translations/client_nb_NO.ts +++ b/translations/client_nb_NO.ts @@ -1918,144 +1918,144 @@ Det er ikke tilrådelig å bruke den. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Vellykket oppkobling mot %1: %2 versjon %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Klarte ikke å koble til %1 på %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Tidsavbrudd ved oppkobling mot %1 på %2. - + Trying to connect to %1 at %2... Prøver å koble til %1 på %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Autentisert forespørsel til serveren ble omdirigert til '%1'. URL-en er ugyldig, serveren er feilkonfigurert. - + There was an invalid response to an authenticated webdav request Det kom et uventet svar fra en autentisert webdav-forespørsel. - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Tilgang forbudt av serveren. For å sjekke om du har gyldig tilgang, <a href="%1">klikk her</a> for å aksessere tjenesten med nettleseren din. - + Invalid URL Ugyldig URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Lokal synkroniseringsmappe %1 finnes allerede. Setter den opp for synkronisering.<br/><br/> - + Creating local sync folder %1... Oppretter lokal synkroniseringsmappe %1... - + ok ok - + failed. feilet. - + Could not create local folder %1 Klarte ikke å opprette lokal mappe %1 - + No remote folder specified! Ingen ekstern mappe spesifisert! - + Error: %1 Feil: %1 - + creating folder on ownCloud: %1 oppretter mappe på ownCloud: %1 - + Remote folder %1 created successfully. Ekstern mappe %1 ble opprettet. - + The remote folder %1 already exists. Connecting it for syncing. Ekstern mappe %1 finnes allerede. Kobler den til for synkronisering. - - + + The folder creation resulted in HTTP error code %1 Oppretting av mappe resulterte i HTTP-feilkode %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Oppretting av ekstern mappe feilet fordi påloggingsinformasjonen er feil!<br/>Gå tilbake og sjekk brukernavnet og passordet ditt.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Oppretting av ekstern mappe feilet, sannsynligvis fordi oppgitt påloggingsinformasjon er feil.</font><br/>Vennligst gå tilbake og sjekk ditt brukernavn og passord.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Oppretting av ekstern mappe %1 feilet med feil <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. En synkroniseringsforbindelse fra %1 til ekstern mappe %2 ble satt opp. - + Successfully connected to %1! Forbindelse til %1 opprettet! - + Connection to %1 could not be established. Please check again. Klarte ikke å etablere forbindelse til %1. Sjekk igjen. - + Folder rename failed Omdøping av mappe feilet - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Kan ikke fjerne og sikkerhetskopiere mappen fordi mappen eller en fil i mappen er åpen i et annet program. Lukk mappen eller filen og prøv igjen, eller avbryt oppsettet. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Oppretting av lokal synkroniseringsmappe %1 vellykket!</b></font> diff --git a/translations/client_nl.ts b/translations/client_nl.ts index e13643bd5..d48e9dfd7 100644 --- a/translations/client_nl.ts +++ b/translations/client_nl.ts @@ -1923,144 +1923,144 @@ We adviseren deze site niet te gebruiken. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Succesvol verbonden met %1: %2 versie %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Kon geen verbinding maken met %1 op %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Time-out bij verbinden met %1 om %2. - + Trying to connect to %1 at %2... Probeer te verbinden met %1 om %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. De geauthentiseerde aanvraag voor de server werd omgeleid naar '%1'. De URL is onjuist, de server is verkeerd geconfigureerd. - + There was an invalid response to an authenticated webdav request Er was een ongeldig antwoord op een geauthenticeerde webdav opvraging - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Toegang door server verboden. Om te verifiëren dat u toegang mag hebben, <a href="%1">klik hier</a> om met uw browser toegang tot de service te krijgen. - + Invalid URL Ongeldige URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Lokale synch map %1 bestaat al, deze wordt ingesteld voor synchronisatie.<br/><br/> - + Creating local sync folder %1... Creëren lokale sync map %1... - + ok ok - + failed. mislukt. - + Could not create local folder %1 Kon lokale map %1 niet aanmaken - + No remote folder specified! Geen externe map opgegeven! - + Error: %1 Fout: %1 - + creating folder on ownCloud: %1 aanmaken map op ownCloud: %1 - + Remote folder %1 created successfully. Externe map %1 succesvol gecreërd. - + The remote folder %1 already exists. Connecting it for syncing. De remote map %1 bestaat al. Verbinden voor synchroniseren. - - + + The folder creation resulted in HTTP error code %1 Het aanmaken van de map resulteerde in HTTP foutcode %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Het aanmaken van de remote map is mislukt, waarschijnlijk omdat uw inloggegevens fout waren.<br/>Ga terug en controleer uw inloggegevens.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Het aanmaken van de remote map is mislukt, waarschijnlijk omdat uw inloggegevens fout waren.</font><br/>ga terug en controleer uw inloggevens.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Aanmaken van remote map %1 mislukt met fout <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Er is een sync verbinding van %1 naar remote directory %2 opgezet. - + Successfully connected to %1! Succesvol verbonden met %1! - + Connection to %1 could not be established. Please check again. Verbinding met %1 niet geslaagd. Probeer het nog eens. - + Folder rename failed Hernoemen map mislukt - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Kan de map niet verwijderen en backuppen, omdat de map of een bestand daarin, geopend is in een ander programma. Sluit de map of het bestand en drup op Opnieuw of annuleer de installatie. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Lokale synch map %1 is succesvol aangemaakt!</b></font> diff --git a/translations/client_pl.ts b/translations/client_pl.ts index 984a1e2e1..ff56f3d7d 100644 --- a/translations/client_pl.ts +++ b/translations/client_pl.ts @@ -1912,144 +1912,144 @@ Niezalecane jest jego użycie. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Udane połączenie z %1: %2 wersja %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Nie udało się połączyć do %1 w %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Upłynął czas podczas próby połączenia do %1 na %2. - + Trying to connect to %1 at %2... Próba połączenia z %1 w %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. - + There was an invalid response to an authenticated webdav request - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Dostęp zabroniony przez serwer. Aby sprawdzić, czy masz odpowiednie uprawnienia, kliknij <a href="%1">tutaj</a>, aby połączyć się z usługą poprzez przeglądarkę. - + Invalid URL Błędny adres url. - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Lokalny folder synchronizacji %1 już istnieje. Ustawiam go do synchronizacji.<br/><br/> - + Creating local sync folder %1... Tworzenie lokalnego folderu synchronizacji %1... - + ok OK - + failed. Błąd. - + Could not create local folder %1 Nie udało się utworzyć lokalnego folderu %1 - + No remote folder specified! Nie określono folderu zdalnego! - + Error: %1 Błąd: %1 - + creating folder on ownCloud: %1 tworzę folder na ownCloud: %1 - + Remote folder %1 created successfully. Zdalny folder %1 został utworzony pomyślnie. - + The remote folder %1 already exists. Connecting it for syncing. Zdalny folder %1 już istnieje. Podłączam go do synchronizowania. - - + + The folder creation resulted in HTTP error code %1 Tworzenie folderu spowodowało kod błędu HTTP %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Nie udało się utworzyć zdalnego folderu ponieważ podane dane dostępowe są nieprawidłowe!<br/>Wróć i sprawdź podane dane dostępowe.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Tworzenie folderu zdalnego nie powiodło się. Prawdopodobnie dostarczone poświadczenia są błędne.</font><br/>Wróć i sprawdź poświadczenia.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Tworzenie folderu zdalnego %1 nie powiodło się z powodu błędu <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Połączenie synchronizacji z %1 do katalogu zdalnego %2 zostało utworzone. - + Successfully connected to %1! Udane połączenie z %1! - + Connection to %1 could not be established. Please check again. Połączenie z %1 nie może być nawiązane. Sprawdź ponownie. - + Folder rename failed Zmiana nazwy folderu nie powiodła się - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Nie można usunąć i zarchiwizować folderu ponieważ znajdujący się w nim plik lub folder jest otwarty przez inny program. Proszę zamknąć folder lub plik albo kliknąć ponów lub anuluj setup. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Utworzenie lokalnego folderu synchronizowanego %1 zakończone pomyślnie!</b></font> diff --git a/translations/client_pt.ts b/translations/client_pt.ts index 99344657b..b588966e9 100644 --- a/translations/client_pt.ts +++ b/translations/client_pt.ts @@ -1919,144 +1919,144 @@ Não é aconselhada a sua utilização. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Ligado com sucesso a %1: %2 - versão: %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Não foi possível ligar a %1 em %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Tempo expirou enquanto tentava ligar a %1 em %2. - + Trying to connect to %1 at %2... A tentar ligar a %1 em %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. O pedido de autenticação para o servidor foi redirecionado para '%1'. O URL é mau, o servidor está mal configurado. - + There was an invalid response to an authenticated webdav request Houve uma resposta inválida para o pedido de autenticação webdav - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Acesso proibido pelo servidor. Para verificar que tem o acesso adequado, <a href="%1">clique aqui</a> para aceder ao serviço com o seu navegador. - + Invalid URL URL inválido - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> A pasta de sincronização local %1 já existe, a configurar para sincronizar.<br/><br/> - + Creating local sync folder %1... A criar a pasta de sincronização local %1... - + ok ok - + failed. Falhou. - + Could not create local folder %1 Não foi possível criar a pasta local %1 - + No remote folder specified! Não foi indicada a pasta remota! - + Error: %1 Erro: %1 - + creating folder on ownCloud: %1 a criar a pasta na ownCloud: %1 - + Remote folder %1 created successfully. Criação da pasta remota %1 com sucesso! - + The remote folder %1 already exists. Connecting it for syncing. A pasta remota %1 já existe. Ligue-a para sincronizar. - - + + The folder creation resulted in HTTP error code %1 A criação da pasta resultou num erro HTTP com o código %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> A criação da pasta remota falhou, provavelmente por ter introduzido as credenciais erradas.<br/>Por favor, verifique as suas credenciais.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">A criação da pasta remota falhou, provavelmente por ter introduzido as credenciais erradas.</font><br/>Por favor, verifique as suas credenciais.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. A criação da pasta remota %1 falhou com o erro <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. A sincronização de %1 com a pasta remota %2 foi criada com sucesso. - + Successfully connected to %1! Conectado com sucesso a %1! - + Connection to %1 could not be established. Please check again. Não foi possível ligar a %1 . Por Favor verifique novamente. - + Folder rename failed Erro ao renomear a pasta - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Não é possível remover e fazer backup à pasta porque a pasta ou um ficheiro nesta está aberto em outro programa. Por favor, feche a pasta ou o ficheiro e clique novamente ou cancele a configuração. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Pasta de sincronização local %1 criada com sucesso!</b></font> diff --git a/translations/client_pt_BR.ts b/translations/client_pt_BR.ts index b9ff0a3f9..fe5d58d4e 100644 --- a/translations/client_pt_BR.ts +++ b/translations/client_pt_BR.ts @@ -1916,144 +1916,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Conectado com sucesso a %1: %2 versão %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Falha ao conectar a %1 em %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. O tempo expirou ao tentar contactar %1 e %2. - + Trying to connect to %1 at %2... Tentando conectar a %1 em %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. A solicitação de autenticação ao servidor foi direcionada para '%1'. A URL está errada, a configuração do servidor está errada. - + There was an invalid response to an authenticated webdav request Houve uma resposta inválida a um pedido de autenticação WebDAV - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Acesso proibido pelo servidor. Para verificar se você tem acesso adequado, <a href="%1">clique aqui</a> para acessar o serviço com o seu navegador. - + Invalid URL URL inválida - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Pasta local de sincronização %1 já existe, configurando para sincronização. <br/><br/> - + Creating local sync folder %1... Criação de pasta de sincronização local %1... - + ok ok - + failed. falhou. - + Could not create local folder %1 Não foi possível criar pasta local %1 - + No remote folder specified! Nenhuma pasta remota foi especificada! - + Error: %1 Erro: %1 - + creating folder on ownCloud: %1 criar pasta no ownCloud: %1 - + Remote folder %1 created successfully. Pasta remota %1 criada com sucesso. - + The remote folder %1 already exists. Connecting it for syncing. Pasta remota %1 já existe. Conectando para sincronizar. - - + + The folder creation resulted in HTTP error code %1 A criação da pasta resultou em um erro do código HTTP %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> A criação da pasta remota falhou porque as credenciais fornecidas estão erradas!<br/>Por favor, volte e verifique suas credenciais.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">A criação remota de pasta falhou provavelmente as causas da falha na criação da pasta remota são credenciais erradas</font><br/>Volte e verifique suas credenciais, por favor.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Falha na criação da pasta remota %1 com erro <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Uma conexão de sincronização de %1 para o diretório remoto %2 foi realizada. - + Successfully connected to %1! Conectado com sucesso a %1! - + Connection to %1 could not be established. Please check again. Conexão à %1 não foi estabelecida. Por favor, verifique novamente. - + Folder rename failed Falha no nome da pasta - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Não é possível remover e fazer backup da pasta porque a pasta ou um arquivo que está nesta pasta está aberto em outro programa. Por favor, feche a pasta ou arquivo e clique tentar novamente ou cancelar a operação. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Pasta de sincronização local %1 criada com sucesso!</b></font> diff --git a/translations/client_ru.ts b/translations/client_ru.ts index b17d4fcac..a2c7b59e1 100644 --- a/translations/client_ru.ts +++ b/translations/client_ru.ts @@ -1916,144 +1916,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Успешное подключение к %1: %2 версия %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Не удалось подключиться к %1 в %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Превышено время ожидания соединения к %1 на %2. - + Trying to connect to %1 at %2... Попытка соединиться с %1 на %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Запрос авторизации с сервера перенаправлен на '%1'. Ссылка не верна, сервер не настроен. - + There was an invalid response to an authenticated webdav request Обнаружен не верный ответ на авторизованный запрос WebDAV - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Доступ запрещён сервером. Чтобы доказать, что у Вас есть права доступа, <a href="%1">нажмите здесь</a> для входа через Ваш браузер. - + Invalid URL Неверная ссылка - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Локальный каталог синхронизации %1 уже существует, используем его для синхронизации.<br/><br/> - + Creating local sync folder %1... Создание локальной папки синхронизации %1... - + ok ок - + failed. не удалось. - + Could not create local folder %1 Не удалось создать локальный каталог синхронизации %1 - + No remote folder specified! Не указан удалённый каталог! - + Error: %1 Ошибка: %1 - + creating folder on ownCloud: %1 создание каталога на ownCloud: %1 - + Remote folder %1 created successfully. Удалённый каталог %1 успешно создан. - + The remote folder %1 already exists. Connecting it for syncing. Удалённый каталог %1 уже существует. Подключение к нему для синхронизации. - - + + The folder creation resulted in HTTP error code %1 Создание каталога завершилось с HTTP-ошибкой %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Не удалось создать удаленный каталог, так как представленные параметры доступа неверны!<br/>Пожалуйста, вернитесь назад и проверьте учетные данные.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Не удалось создать удаленный каталог, возможно, указанные учетные данные неверны.</font><br/>Вернитесь назад и проверьте учетные данные.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Удаленный каталог %1 не создан из-за ошибки <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Установлено соединение синхронизации %1 к удалённому каталогу %2. - + Successfully connected to %1! Соединение с %1 установлено успешно! - + Connection to %1 could not be established. Please check again. Не удалось соединиться с %1. Попробуйте снова. - + Folder rename failed Ошибка переименования каталога - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Невозможно удалить каталог и создать его резервную копию, каталог или файл в ней открыт в другой программе. Закройте каталог или файл и нажмите "Повторить попытку", либо прервите мастер настройки. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Локальный каталог синхронизации %1 успешно создан!</b></font> diff --git a/translations/client_sk.ts b/translations/client_sk.ts index 4f3ae5650..b682e615d 100644 --- a/translations/client_sk.ts +++ b/translations/client_sk.ts @@ -1908,144 +1908,144 @@ Nie je vhodné ju používať. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Úspešne pripojené k %1: %2 verzie %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Zlyhalo spojenie s %1 o %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Časový limit vypršal pri pokuse o pripojenie k %1 na %2. - + Trying to connect to %1 at %2... Pokúšam sa o pripojenie k %1 na %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Overená požiadavka na server bola presmerovaná na '%1'. URL je zlá, server nie je správne nakonfigurovaný. - + There was an invalid response to an authenticated webdav request Neplatná odpoveď na overenú webdav požiadavku - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Prístup zamietnutý serverom. Po overení správnych prístupových práv, <a href="%1">kliknite sem</a> a otvorte službu v svojom prezerači. - + Invalid URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Lokálny synchronizačný priečinok %1 už existuje, prebieha jeho nastavovanie pre synchronizáciu.<br/><br/> - + Creating local sync folder %1... Vytváranie lokálneho synchronizačného priečinka %1 ... - + ok v poriadku - + failed. neúspešné. - + Could not create local folder %1 Nemožno vytvoriť lokálny priečinok %1 - + No remote folder specified! Vzdialený priečinok nie je nastavený! - + Error: %1 Chyba: %1 - + creating folder on ownCloud: %1 vytváram priečinok v ownCloude: %1 - + Remote folder %1 created successfully. Vzdialený priečinok %1 bol úspešne vytvorený. - + The remote folder %1 already exists. Connecting it for syncing. Vzdialený priečinok %1 už existuje. Prebieha jeho pripájanie pre synchronizáciu. - - + + The folder creation resulted in HTTP error code %1 Vytváranie priečinka skončilo s HTTP chybovým kódom %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Proces vytvárania vzdialeného priečinka zlyhal, lebo použité prihlasovacie údaje nie sú správne!<br/>Prosím skontrolujte si vaše údaje a skúste to znovu.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Vytvorenie vzdialeného priečinka pravdepodobne zlyhalo kvôli nesprávnym prihlasovacím údajom.</font><br/>Prosím choďte späť a skontrolujte ich.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Vytvorenie vzdialeného priečinka %1 zlyhalo s chybou <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Synchronizačné spojenie z %1 do vzdialeného priečinka %2 bolo práve nastavené. - + Successfully connected to %1! Úspešne pripojené s %1! - + Connection to %1 could not be established. Please check again. Pripojenie k %1 nemohlo byť iniciované. Prosím skontrolujte to znovu. - + Folder rename failed Premenovanie priečinka zlyhalo - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Nemožno odstrániť a zazálohovať priečinok, pretože priečinok alebo súbor je otvorený v inom programe. Prosím zatvorte priečinok nebo súbor a skúste to znovu alebo zrušte akciu. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Lokálny synchronizačný priečinok %1 bol úspešne vytvorený!</b></font> diff --git a/translations/client_sl.ts b/translations/client_sl.ts index d3edfe26b..95db575c0 100644 --- a/translations/client_sl.ts +++ b/translations/client_sl.ts @@ -1919,144 +1919,144 @@ Uporaba ni priporočljiva. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Uspešno vzpostavljena povezava z %1: %2 različica %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Povezava z %1 pri %2 je spodletela:<br/>%3 - + Timeout while trying to connect to %1 at %2. Prekinitev med poskusom povezave na %1 pri %2. - + Trying to connect to %1 at %2... Poteka poskus povezave z %1 na %2 ... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Zahteva za overitev s strežnikom je bila preusmerjena na '%1'. Naslov URL ni veljaven ali pa strežnik ni ustrezno nastavljen. - + There was an invalid response to an authenticated webdav request Prejet je neveljaven odziv na zahtevo overitve webdav - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Strežnik ne dovoli dostopa. Če želite preveriti, ali imate ustrezen dostop, <a href="%1">kliknite tu</a> za dostop do te storitve z brskalnikom. - + Invalid URL Neveljaven naslov URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Krajevna mapa %1 že obstaja. Nastavljena bo za usklajevanje.<br/><br/> - + Creating local sync folder %1... Ustvarjanje mape za krajevno usklajevanje %1 ... - + ok je v redu - + failed. je spodletelo. - + Could not create local folder %1 Krajevne mape %1 ni mogoče ustvariti. - + No remote folder specified! Ni navedenega oddaljenega strežnika! - + Error: %1 Napaka: %1 - + creating folder on ownCloud: %1 ustvarjanje mape v oblaku ownCloud: %1 - + Remote folder %1 created successfully. Oddaljena mapa %1 je uspešno ustvarjena. - + The remote folder %1 already exists. Connecting it for syncing. Oddaljena mapa %1 že obstaja. Vzpostavljena bo povezava za usklajevanje. - - + + The folder creation resulted in HTTP error code %1 Ustvarjanje mape je povzročilo napako HTTP %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Ustvarjanje mape na oddaljenem naslovu je spodletelo zaradi napačnih poveril. <br/>Vrnite se in preverite zahtevana gesla.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Ustvarjanje oddaljene mape je spodletelo. Najverjetneje je vzrok v neustreznih poverilih.</font><br/>Vrnite se na predhodno stran in jih preverite.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Ustvarjanje oddaljene mape %1 je spodletelo z napako <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Povezava za usklajevanje med %1 in oddaljeno mapo %2 je vzpostavljena. - + Successfully connected to %1! Povezava z %1 je uspešno vzpostavljena! - + Connection to %1 could not be established. Please check again. Povezave z %1 ni mogoče vzpostaviti. Preveriti je treba nastavitve. - + Folder rename failed Preimenovanje mape je spodletelo - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Mape ni mogoče odstraniti niti ni mogoče ustvariti varnostne kopije, saj je mapa oziroma dokument v njej odprt z drugim programom. Zaprite mapo/dokument ali prekinite namestitev. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Krajevno usklajena mapa %1 je uspešno ustvarjena!</b></font> diff --git a/translations/client_sr.ts b/translations/client_sr.ts index 0e38b2702..ed7179321 100644 --- a/translations/client_sr.ts +++ b/translations/client_sr.ts @@ -1908,144 +1908,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Успешно повезан са %1: %2 верзија %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Неуспешно повезивање са %1 на %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Време је истекло у покушају повезивања са %1 на %2. - + Trying to connect to %1 at %2... Покушавам да се повежем са %1 на %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Аутентификован захтев серверу је преусмерен на %1. УРЛ је лош, сервер је лоше подешен. - + There was an invalid response to an authenticated webdav request Добијен је неисправан одговор на аутентификовани ВебДАВ захтев - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Сервер није дозволио приступ. Да проверите имате ли исправан приступ, <a href="%1">кликните овде</a> да бисте приступили услузи из прегледача. - + Invalid URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Локална фасцикла %1 већ постоји. Одређујем је за синхронизацију.<br/><br/> - + Creating local sync folder %1... Правим локалну фасциклу синхронизације %1... - + ok у реду - + failed. неуспешно - + Could not create local folder %1 Не могу да направим локалну фасциклу %1 - + No remote folder specified! Није наведена удаљена фасцикла! - + Error: %1 Грешка: %1 - + creating folder on ownCloud: %1 правим фасциклу у облаку: % 1 - + Remote folder %1 created successfully. Удаљена фасцикла %1 је успешно направљена. - + The remote folder %1 already exists. Connecting it for syncing. Удаљена фасцикла %1 већ постоји. Повезујем се ради синхронизовања. - - + + The folder creation resulted in HTTP error code %1 Прављење фасцикле довело је до ХТТП грешке са кодом %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Прављење удаљене фасцикле није успело због погрешних акредитива!<br/>Идите назад и проверите ваше акредитиве.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Прављење удаљене фасцикле није успело због погрешних акредитива.</font><br/>Идите назад и проверите ваше акредитиве.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Прављење удаљене фасцикле %1 није успело због грешке <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Веза за синхронизацију %1 до удаљеног директоријума %2 је подешена. - + Successfully connected to %1! Успешно повезан са %1! - + Connection to %1 could not be established. Please check again. Не може се успоставити веза са %1. Проверите поново. - + Folder rename failed Преименовање није успело - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Не могу да уклоним и направим резервну копију фасцикле јер су фасцикла или фајл отворени у другом програму. Затворите фасциклу или фајл и покушајте поново или одустаните од подешавања. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Локална фасцикла за синхронизовање %1 је успешно направљена!</b></font> diff --git a/translations/client_sv.ts b/translations/client_sv.ts index 2f6872a78..3fa7c8fa2 100644 --- a/translations/client_sv.ts +++ b/translations/client_sv.ts @@ -1914,144 +1914,144 @@ Det är inte lämpligt använda den. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Lyckades ansluta till %1: %2 version %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Misslyckades att ansluta till %1 vid %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Försök att ansluta till %1 på %2 tog för lång tid. - + Trying to connect to %1 at %2... Försöker ansluta till %1 på %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Den autentiserade begäran till servern omdirigerades till '%1'. Den URLen är ogiltig, server är felkonfigurerad. - + There was an invalid response to an authenticated webdav request Det kom ett ogiltigt svar på en autentiserad webdav-begäran - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Åtkomst förbjuden av servern. För att bekräfta att du har korrekta rättigheter, <a href="%1">klicka här</a> för att ansluta till tjänsten med din webb-läsare. - + Invalid URL Ogiltig URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Lokal synkmapp %1 finns redan, aktiverar den för synk.<br/><br/> - + Creating local sync folder %1... Skapar lokal synk-mapp %1... - + ok ok - + failed. misslyckades. - + Could not create local folder %1 Kunde inte skapa lokal mapp %1 - + No remote folder specified! Ingen fjärrmapp specificerad! - + Error: %1 Fel: %1 - + creating folder on ownCloud: %1 skapar mapp på ownCloud: %1 - + Remote folder %1 created successfully. Fjärrmapp %1 har skapats. - + The remote folder %1 already exists. Connecting it for syncing. Fjärrmappen %1 finns redan. Ansluter den för synkronisering. - - + + The folder creation resulted in HTTP error code %1 Skapande av mapp resulterade i HTTP felkod %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Det gick inte att skapa mappen efter som du inte har tillräckliga rättigheter!<br/>Vänligen återvänd och kontrollera dina rättigheter. - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Misslyckades skapa fjärrmappen, troligen p.g.a felaktiga inloggningsuppgifter.</font><br/>Kontrollera dina inloggningsuppgifter.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Misslyckades skapa fjärrmapp %1 med fel <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. En synkroniseringsanslutning från %1 till fjärrmappen %2 har skapats. - + Successfully connected to %1! Ansluten till %1! - + Connection to %1 could not be established. Please check again. Anslutningen till %1 kunde inte etableras. Var god kontrollera och försök igen. - + Folder rename failed Omdöpning av mapp misslyckades - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Kan inte ta bort och göra en säkerhetskopia av mappen på grund av att mappen eller en fil i den används av ett annat program. Vänligen stäng mappen eller filen och försök igen eller avbryt installationen. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Lokal synkmapp %1 skapad!</b></font> diff --git a/translations/client_th.ts b/translations/client_th.ts index f093f1263..b93df0bf3 100644 --- a/translations/client_th.ts +++ b/translations/client_th.ts @@ -1920,144 +1920,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">เชื่อมต่อกับ %1: %2 รุ่น %3 (%4) เสร็จเรียบร้อยแล้ว</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 ล้มเหลวในการเชื่อมต่อไปยัง %1 ที่ %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. หมดเวลาขณะที่พยายามเชื่อมต่อไปยัง %1 ที่ %2 - + Trying to connect to %1 at %2... กำลังพยายามเชื่อมต่อไปที่ %1 ที่ %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. คำขอการรับรองความถูกต้องไปยังเซิร์ฟเวอร์ที่ถูกเปลี่ยนเส้นทางไปยัง - + There was an invalid response to an authenticated webdav request มีการตอบสนองที่ไม่ถูกต้องที่จะร้องขอการรับรองความถูกต้องของ WebDAV - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. การเข้าถึงถูกระงับโดยเซิร์ฟเวอร์ เพื่อตรวจสอบว่าคุณมีการเข้าถึงที่เหมาะสม <a href="%1">คลิกที่นี่</a> เพื่อรเข้าถึงบริการกับเบราว์เซอร์ของคุณ - + Invalid URL URL ไม่ถูกต้อง - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> ประสานข้อมูลโฟลเดอร์ต้นทาง %1 มีอยู่แล้ว กรุณาตั้งค่าเพื่อถ่ายข้อมูล <br/<br/> - + Creating local sync folder %1... สร้างประสานข้อมูลโฟลเดอร์ต้นทาง %1... - + ok ตกลง - + failed. ล้มเหลว - + Could not create local folder %1 ไม่สามารถสร้างผสานข้อมูลโฟลเดอร์ต้นทาง %1... - + No remote folder specified! ไม่มีโฟลเดอร์รีโมทที่ระบุ! - + Error: %1 ข้อผิดพลาด: %1 - + creating folder on ownCloud: %1 กำลังสร้างโฟลเดอร์ใหม่บน ownCloud: %1 - + Remote folder %1 created successfully. โฟลเดอร์รีโมท %1 ถูกสร้างเรียบร้อยแล้ว - + The remote folder %1 already exists. Connecting it for syncing. โฟลเดอร์รีโมทมี %1 อยู่แล้ว กำลังเชื่อมต่อเพื่อถ่ายโอนข้อมูล - - + + The folder creation resulted in HTTP error code %1 การสร้างโฟลเดอร์ดังกล่าวส่งผลให้เกิดรหัสข้อผิดพลาด HTTP error code %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> สร้างโฟลเดอร์ระยะไกลล้มเหลวเนื่องจากมีข้อมูลผิดพลาด! - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">การสร้างโฟลเดอร์รีโมทล้มเหลว ซึ่งอาจมีสาเหตุมาจากการกรอกข้อมูลส่วนตัวเพื่อเข้าใช้งานไม่ถูกต้อง.</font><br/>กรุณาย้อนกลับไปแล้วตรวจสอบข้อมูลส่วนตัวของคุณอีกครั้ง.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. การสร้างโฟลเดอร์ระยะไกล %1 ล้มเหลวเนื่องข้อผิดพลาด <tt>%2</tt> - + A sync connection from %1 to remote directory %2 was set up. การเชื่อมต่อเผื่อประสานข้อมูลจาก %1 ไปที่ไดเร็กทอรี่ระยะไกล %2 ได้ถูกติดตั้งแล้ว - + Successfully connected to %1! เชื่อมต่อไปที่ %1! สำเร็จ - + Connection to %1 could not be established. Please check again. การเชื่อมต่อกับ %1 ไม่สามารถดำเนินการได้ กรุณาตรวจสอบอีกครั้ง - + Folder rename failed เปลี่ยนชื่อโฟลเดอร์ล้มเหลว - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. ไม่สามารถลบและสำรองข้อมูลโฟลเดอร์เพราะโฟลเดอร์หรือไฟล์ในนั้นจะเปิดในโปรแกรมอื่นอยู่ กรุณาปิดโฟลเดอร์หรือไฟล์และกดลองใหม่อีกครั้งหรือยกเลิกการติดตั้ง - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>ประสานข้อมูลโฟลเดอร์ต้นทาง %1 ได้ถูกสร้างขึ้นเรียบร้อยแล้ว!</b></font> diff --git a/translations/client_tr.ts b/translations/client_tr.ts index 081b9b115..6e7ddf9ad 100644 --- a/translations/client_tr.ts +++ b/translations/client_tr.ts @@ -1909,144 +1909,144 @@ Kullanmanız önerilmez. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">%1 bağlantısı başarılı: %2 sürüm %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 %2 üzerinde %1 adresine bağlanılamadı:<br/>%3 - + Timeout while trying to connect to %1 at %2. %2 üzerinde %1 bağlantısı yapılırken zaman aşımı. - + Trying to connect to %1 at %2... %2 üzerinde %1 bağlantısı deneniyor... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Sunucuda giriş sırasında istek '%1' adresine yönlendirilmiş. Adres hatalı veya sunucu yanlış ayarlanmış. - + There was an invalid response to an authenticated webdav request Yetkilendirilmiş webdav isteği geçersiz bir cevap alındı - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Erişim sunucu tarafından yasaklandı. Geçerli erişime sahip olup olmadığınızı doğrulamak için hizmete web tarayıcınızla erişmek üzere <a href="%1">buraya tıklayın</a>. - + Invalid URL Geçersiz URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Yerel eşitleme klasörü %1 zaten mevcut, eşitlemek için ayarlanıyor.<br/><br/> - + Creating local sync folder %1... Yerel eşitleme klasörü %1 oluşturuluyor... - + ok tamam - + failed. başarısız. - + Could not create local folder %1 %1 yerel klasörü oluşturulamadı - + No remote folder specified! Uzak klasör belirtilmemiş! - + Error: %1 Hata: %1 - + creating folder on ownCloud: %1 ownCloud üzerinde klasör oluşturuluyor: %1 - + Remote folder %1 created successfully. %1 uzak klasörü başarıyla oluşturuldu. - + The remote folder %1 already exists. Connecting it for syncing. Uzak klasör %1 zaten mevcut. Eşitlemek için bağlanılıyor. - - + + The folder creation resulted in HTTP error code %1 Klasör oluşturma %1 HTTP hata kodu ile sonuçlandı - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Uzak klasör oluşturması, geçersiz kimlik bilgileri nedeniyle başarısız!<br/>Lütfen geri gidin ve bilgileri denetleyin.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Uzak klasör oluşturma muhtemelen hatalı kimlik bilgilerinden dolayı başarısız oldu.</font><br/>Lütfen geri gidip kimlik bilgilerini doğrulayın.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Uzak klasör %1 oluşturma işlemi <tt>%2</tt> hatası ile başarısız oldu. - + A sync connection from %1 to remote directory %2 was set up. %1 kaynaklı %2 uzak dizinine bir eşitleme bağlantısı ayarlandı. - + Successfully connected to %1! %1 bağlantısı başarılı! - + Connection to %1 could not be established. Please check again. %1 bağlantısı kurulamadı. Lütfen tekrar denetleyin. - + Folder rename failed Klasör adlandırma başarısız - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Klasör veya içerisindeki bir dosya farklı bir program içerisinde açık olduğundan, kaldırma ve yedekleme işlemi yapılamıyor. Lütfen klasör veya dosyayı kapatıp yeniden deneyin veya kurulumu iptal edin. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Yerel eşitleme klasörü %1 başarıyla oluşturuldu!</b></font> diff --git a/translations/client_uk.ts b/translations/client_uk.ts index 56137a33a..602a95007 100644 --- a/translations/client_uk.ts +++ b/translations/client_uk.ts @@ -1907,144 +1907,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Успішно підключено до %1: %2 версія %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Не вдалося з'єднатися з %1 в %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Перевищено час очікування з'єднання до %1 на %2. - + Trying to connect to %1 at %2... Спроба підключення до %1 на %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Запит аутентифікації до серверу було переадресовано до '%1'. Поганий URL, сервер сконфігуровано неправильно. - + There was an invalid response to an authenticated webdav request Неправильна відповідь на автентифікований запит webdav - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Доступ заборонений сервером. Щоб довести, що у Вас є права доступу, <a href="%1">клікніть тут</a> для входу через Ваш браузер. - + Invalid URL Невірний URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Локальна тека синхронізації %1 вже існує, налаштування її для синхронізації.<br/><br/> - + Creating local sync folder %1... Створення локальної теки для синхронізації %1... - + ok ok - + failed. не вдалося. - + Could not create local folder %1 Не вдалося створити локальну теку $1 - + No remote folder specified! Не вказано віддалену теку! - + Error: %1 Помилка: %1 - + creating folder on ownCloud: %1 створення теки на ownCloud: %1 - + Remote folder %1 created successfully. Віддалена тека %1 успішно створена. - + The remote folder %1 already exists. Connecting it for syncing. Віддалена тека %1 вже існує. Під'єднання для синхронізації. - - + + The folder creation resulted in HTTP error code %1 Створення теки завершилось HTTP помилкою %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Створити віддалену теку не вдалося через невірно вказані облікові дані.<br/>Поверніться назад та перевірте облікові дані.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Створити віддалену теку не вдалося, можливо, через невірно вказані облікові дані.</font><br/>Будь ласка, поверніться назад та перевірте облікові дані.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Не вдалося створити віддалену теку %1 через помилку <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. З'єднання для синхронізації %1 з віддаленою текою %2 було встановлено. - + Successfully connected to %1! Успішно під'єднано до %1! - + Connection to %1 could not be established. Please check again. Підключення до %1 встановити не вдалося. Будь ласка, перевірте ще раз. - + Folder rename failed Не вдалося перейменувати теку - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Неможливо видалити теку та створити її резервну копію, оскільки тека або файли, що в ній розташовані, використовуються. Будь ласка, закрийте всі програми, що можуть використовувати цю теку та спробуйте ще раз, або скасуйте встановлення. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Локальна тека синхронізації %1 успішно створена!</b></font> diff --git a/translations/client_zh_CN.ts b/translations/client_zh_CN.ts index 19a74ed0a..e002cd660 100644 --- a/translations/client_zh_CN.ts +++ b/translations/client_zh_CN.ts @@ -1918,144 +1918,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">成功连接到 %1:%2 版本 %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 连接到 %1 (%2)失败:<br />%3 - + Timeout while trying to connect to %1 at %2. 连接到 %1 (%2) 时超时。 - + Trying to connect to %1 at %2... 尝试连接位于 %2 的 %1... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. 被发送到服务器的认证请求被重定向到'%1'。此URL无效,服务器配置错误。 - + There was an invalid response to an authenticated webdav request 对于一个验证的 webdav 请求,有一个无效的响应 - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. 服务器拒绝了访问。<a href="%1">点击这里打开浏览器</a> 来确认您是否有权访问。 - + Invalid URL 无效URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> 本地同步文件夹 %1 已存在,将使用它来同步。<br/><br/> - + Creating local sync folder %1... 创建本地同步目录%1 - + ok 成功 - + failed. 失败 - + Could not create local folder %1 不能创建本地文件夹 %1 - + No remote folder specified! 未指定远程文件夹! - + Error: %1 错误:%1 - + creating folder on ownCloud: %1 在 ownCloud 创建文件夹:%1 - + Remote folder %1 created successfully. 远程目录%1成功创建。 - + The remote folder %1 already exists. Connecting it for syncing. 远程文件夹 %1 已存在。连接它以供同步。 - - + + The folder creation resulted in HTTP error code %1 创建文件夹出现 HTTP 错误代码 %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> 远程文件夹创建失败,因为提供的凭证有误!<br/>请返回并检查您的凭证。</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">远程文件夹创建失败,可能是由于提供的用户名密码不正确。</font><br/>请返回并检查它们。</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. 创建远程文件夹 %1 失败,错误为 <tt>%2</tt>。 - + A sync connection from %1 to remote directory %2 was set up. 已经设置了一个 %1 到远程文件夹 %2 的同步连接 - + Successfully connected to %1! 成功连接到了 %1! - + Connection to %1 could not be established. Please check again. 无法建立到 %1的链接,请稍后重试(这里“稍后”用对了,赞!)。 - + Folder rename failed 文件夹更名失败 - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. 无法移除和备份文件夹,由于文件夹或文件正在被另一程序占用。请关闭程序后重试,或取消安装。 - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>本地同步目录 %1 已成功创建</b></font> diff --git a/translations/client_zh_TW.ts b/translations/client_zh_TW.ts index 979ebbef4..8ed1232d5 100644 --- a/translations/client_zh_TW.ts +++ b/translations/client_zh_TW.ts @@ -1910,144 +1910,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">成功連線到 %1: %2 版本 %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 從 %2 連線到 %1 失敗:<br/>%3 - + Timeout while trying to connect to %1 at %2. 從 %2 嘗試連線到 %1 逾時。 - + Trying to connect to %1 at %2... 嘗試連線到%1從%2 - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. 伺服器要求的認證請求被導向 '%1',這個URL可能不安全,此伺服器可能設定有錯。 - + There was an invalid response to an authenticated webdav request 從webdav的認證要求中有無效的回傳值 - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. 從伺服器存取被拒絕。為了正確驗證您的存取資訊 <a href="%1">請點選這裡</a> 透過瀏覽器來存取服務 - + Invalid URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> 本地同步資料夾%1已存在, 將其設置為同步<br/><br/> - + Creating local sync folder %1... 建立本地同步資料夾 %1... - + ok ok - + failed. 失敗 - + Could not create local folder %1 無法建立本地資料夾 %1 - + No remote folder specified! 沒有指定遠端資料夾! - + Error: %1 錯誤: %1 - + creating folder on ownCloud: %1 在 ownCloud 建立資料夾: %1 - + Remote folder %1 created successfully. 遠端資料夾%1建立成功! - + The remote folder %1 already exists. Connecting it for syncing. 遠端資料夾%1已存在,連線同步中 - - + + The folder creation resulted in HTTP error code %1 在HTTP建立資料夾失敗, error code %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> 由於帳號或密碼錯誤,遠端資料夾建立失敗<br/>請檢查您的帳號密碼。</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">遠端資料夾建立失敗,也許是因為所提供的帳號密碼錯誤</font><br/>請重新檢查您的帳號密碼</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. 建立遠端資料夾%1發生錯誤<tt>%2</tt>失敗 - + A sync connection from %1 to remote directory %2 was set up. 從%1到遠端資料夾%2的連線已建立 - + Successfully connected to %1! 成功連接到 %1 ! - + Connection to %1 could not be established. Please check again. 無法建立連線%1, 請重新檢查 - + Folder rename failed 重新命名資料夾失敗 - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. 無法移除與備份此資料夾,因為有其他的程式正在使用其中的資料夾或者檔案。請關閉使用中的資料夾或檔案並重試或者取消設定。 - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>本地同步資料夾 %1 建立成功!</b></font> From ccd32c04a936ed01c00c309dad0911081ad18ad4 Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Sun, 22 Oct 2017 02:21:00 +0200 Subject: [PATCH 26/45] [tx-robot] updated from transifex --- mirall.desktop.in | 3 +++ translations/client_zh_TW.ts | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/mirall.desktop.in b/mirall.desktop.in index d290a0386..dc9558829 100644 --- a/mirall.desktop.in +++ b/mirall.desktop.in @@ -234,6 +234,9 @@ X-GNOME-Autostart-Delay=3 # Translations +# Translations + + # Translations Comment[oc]=@APPLICATION_NAME@ sincronizacion del client GenericName[oc]=Dorsièr de Sincronizacion diff --git a/translations/client_zh_TW.ts b/translations/client_zh_TW.ts index 8ed1232d5..8c7fdf642 100644 --- a/translations/client_zh_TW.ts +++ b/translations/client_zh_TW.ts @@ -2600,12 +2600,12 @@ It is not advisable to use it. Users and Groups - + 使用者及群組 Public Links - + 公共連結 From 13b1f8b33e111c145db43c573069b64dcfed1df2 Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Mon, 23 Oct 2017 02:19:01 +0200 Subject: [PATCH 27/45] [tx-robot] updated from transifex --- mirall.desktop.in | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mirall.desktop.in b/mirall.desktop.in index dc9558829..621b71a42 100644 --- a/mirall.desktop.in +++ b/mirall.desktop.in @@ -237,6 +237,9 @@ X-GNOME-Autostart-Delay=3 # Translations +# Translations + + # Translations Comment[oc]=@APPLICATION_NAME@ sincronizacion del client GenericName[oc]=Dorsièr de Sincronizacion From 15b02547e84de5fdbc3fa4a58899bad04b34df69 Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Tue, 24 Oct 2017 02:18:49 +0200 Subject: [PATCH 28/45] [tx-robot] updated from transifex --- mirall.desktop.in | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mirall.desktop.in b/mirall.desktop.in index 621b71a42..c54f11e7a 100644 --- a/mirall.desktop.in +++ b/mirall.desktop.in @@ -240,6 +240,9 @@ X-GNOME-Autostart-Delay=3 # Translations +# Translations + + # Translations Comment[oc]=@APPLICATION_NAME@ sincronizacion del client GenericName[oc]=Dorsièr de Sincronizacion From f3ea37508321d427674b557cd7b79659129597af Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Thu, 19 Oct 2017 10:54:46 +0200 Subject: [PATCH 29/45] Wizard: Resolve url/ redirects only if url/status.php not found Unfortunately checking the base-url for redirects in all cases lead to incorrect behavior in some SAML/OAuth2 edge cases. This new iteration checks the base url for redirects only if the standard CheckServerJob can't reach the server. That way the 2.3 behavior is only changed in cases that would have lead to errors. See #5954 --- src/gui/owncloudsetupwizard.cpp | 71 ++++++++++++++++++++++----------- src/gui/owncloudsetupwizard.h | 14 ++++--- 2 files changed, 57 insertions(+), 28 deletions(-) diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp index 7167d5bbc..e4e46f4f2 100644 --- a/src/gui/owncloudsetupwizard.cpp +++ b/src/gui/owncloudsetupwizard.cpp @@ -46,7 +46,7 @@ OwncloudSetupWizard::OwncloudSetupWizard(QObject *parent) , _remoteFolder() { connect(_ocWizard, &OwncloudWizard::determineAuthType, - this, &OwncloudSetupWizard::slotDetermineAuthType); + this, &OwncloudSetupWizard::slotCheckServer); connect(_ocWizard, &OwncloudWizard::connectToOCUrl, this, &OwncloudSetupWizard::slotConnectToOCUrl); connect(_ocWizard, &OwncloudWizard::createLocalAndRemoteFolders, @@ -140,7 +140,7 @@ void OwncloudSetupWizard::startWizard() } // also checks if an installation is valid and determines auth type in a second step -void OwncloudSetupWizard::slotDetermineAuthType(const QString &urlString) +void OwncloudSetupWizard::slotCheckServer(const QString &urlString) { QString fixedUrl = urlString; QUrl url = QUrl::fromUserInput(fixedUrl); @@ -163,7 +163,7 @@ void OwncloudSetupWizard::slotDetermineAuthType(const QString &urlString) // We want to reset the QNAM proxy so that the global proxy settings are used (via ClientProxy settings) account->networkAccessManager()->setProxy(QNetworkProxy(QNetworkProxy::DefaultProxy)); // use a queued invocation so we're as asynchronous as with the other code path - QMetaObject::invokeMethod(this, "slotContinueDetermineAuth", Qt::QueuedConnection); + QMetaObject::invokeMethod(this, "slotFindServer", Qt::QueuedConnection); } } @@ -177,20 +177,40 @@ void OwncloudSetupWizard::slotSystemProxyLookupDone(const QNetworkProxy &proxy) AccountPtr account = _ocWizard->account(); account->networkAccessManager()->setProxy(proxy); - slotContinueDetermineAuth(); + slotFindServer(); } -void OwncloudSetupWizard::slotContinueDetermineAuth() +void OwncloudSetupWizard::slotFindServer() { AccountPtr account = _ocWizard->account(); // Set fake credentials before we check what credential it actually is. account->setCredentials(CredentialsFactory::create("dummy")); - // Before we check the auth type, resolve any permanent redirect - // chain there might be. We cannot do this only on url/status.php - // in CheckServerJob, because things like url shorteners don't - // redirect subpaths. + // Determining the actual server URL can be a multi-stage process + // 1. Check url/status.php with CheckServerJob + // If that works we're done. In that case we don't check the + // url directly for redirects, see #5954. + // 2. Check the url for permanent redirects (like url shorteners) + // 3. Check redirected-url/status.php with CheckServerJob + + // Step 1: Check url/status.php + CheckServerJob *job = new CheckServerJob(account, this); + job->setIgnoreCredentialFailure(true); + connect(job, &CheckServerJob::instanceFound, this, &OwncloudSetupWizard::slotFoundServer); + connect(job, &CheckServerJob::instanceNotFound, this, &OwncloudSetupWizard::slotFindServerBehindRedirect); + connect(job, &CheckServerJob::timeout, this, &OwncloudSetupWizard::slotNoServerFoundTimeout); + job->setTimeout((account->url().scheme() == "https") ? 30 * 1000 : 10 * 1000); + job->start(); + + // Step 2 and 3 are in slotFindServerBehindRedirect() +} + +void OwncloudSetupWizard::slotFindServerBehindRedirect() +{ + AccountPtr account = _ocWizard->account(); + + // Step 2: Resolve any permanent redirect chains on the base url auto redirectCheckJob = account->sendRequest("GET", account->url()); // Use a significantly reduced timeout for this redirect check: @@ -210,20 +230,20 @@ void OwncloudSetupWizard::slotContinueDetermineAuth() } }); - // When done, start checking status.php. + // Step 3: When done, start checking status.php. connect(redirectCheckJob, &SimpleNetworkJob::finishedSignal, this, [this, account]() { CheckServerJob *job = new CheckServerJob(account, this); job->setIgnoreCredentialFailure(true); - connect(job, &CheckServerJob::instanceFound, this, &OwncloudSetupWizard::slotOwnCloudFoundAuth); - connect(job, &CheckServerJob::instanceNotFound, this, &OwncloudSetupWizard::slotNoOwnCloudFoundAuth); - connect(job, &CheckServerJob::timeout, this, &OwncloudSetupWizard::slotNoOwnCloudFoundAuthTimeout); + connect(job, &CheckServerJob::instanceFound, this, &OwncloudSetupWizard::slotFoundServer); + connect(job, &CheckServerJob::instanceNotFound, this, &OwncloudSetupWizard::slotNoServerFound); + connect(job, &CheckServerJob::timeout, this, &OwncloudSetupWizard::slotNoServerFoundTimeout); job->setTimeout((account->url().scheme() == "https") ? 30 * 1000 : 10 * 1000); job->start(); - }); + }); } -void OwncloudSetupWizard::slotOwnCloudFoundAuth(const QUrl &url, const QJsonObject &info) +void OwncloudSetupWizard::slotFoundServer(const QUrl &url, const QJsonObject &info) { auto serverVersion = CheckServerJob::version(info); @@ -243,14 +263,10 @@ void OwncloudSetupWizard::slotOwnCloudFoundAuth(const QUrl &url, const QJsonObje qCInfo(lcWizard) << " was redirected to" << url.toString(); } - DetermineAuthTypeJob *job = new DetermineAuthTypeJob(_ocWizard->account(), this); - job->setIgnoreCredentialFailure(true); - connect(job, &DetermineAuthTypeJob::authType, - _ocWizard, &OwncloudWizard::setAuthType); - job->start(); + slotDetermineAuthType(); } -void OwncloudSetupWizard::slotNoOwnCloudFoundAuth(QNetworkReply *reply) +void OwncloudSetupWizard::slotNoServerFound(QNetworkReply *reply) { auto job = qobject_cast(sender()); int resultCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); @@ -292,12 +308,21 @@ void OwncloudSetupWizard::slotNoOwnCloudFoundAuth(QNetworkReply *reply) _ocWizard->account()->resetRejectedCertificates(); } -void OwncloudSetupWizard::slotNoOwnCloudFoundAuthTimeout(const QUrl &url) +void OwncloudSetupWizard::slotNoServerFoundTimeout(const QUrl &url) { _ocWizard->displayError( tr("Timeout while trying to connect to %1 at %2.") .arg(Utility::escape(Theme::instance()->appNameGUI()), Utility::escape(url.toString())), - false); + false); +} + +void OwncloudSetupWizard::slotDetermineAuthType() +{ + DetermineAuthTypeJob *job = new DetermineAuthTypeJob(_ocWizard->account(), this); + job->setIgnoreCredentialFailure(true); + connect(job, &DetermineAuthTypeJob::authType, + _ocWizard, &OwncloudWizard::setAuthType); + job->start(); } void OwncloudSetupWizard::slotConnectToOCUrl(const QString &url) diff --git a/src/gui/owncloudsetupwizard.h b/src/gui/owncloudsetupwizard.h index 28fa884fa..a663af761 100644 --- a/src/gui/owncloudsetupwizard.h +++ b/src/gui/owncloudsetupwizard.h @@ -49,12 +49,16 @@ signals: void ownCloudWizardDone(int); private slots: - void slotDetermineAuthType(const QString &); + void slotCheckServer(const QString &); void slotSystemProxyLookupDone(const QNetworkProxy &proxy); - void slotContinueDetermineAuth(); - void slotOwnCloudFoundAuth(const QUrl &, const QJsonObject &); - void slotNoOwnCloudFoundAuth(QNetworkReply *reply); - void slotNoOwnCloudFoundAuthTimeout(const QUrl &url); + + void slotFindServer(); + void slotFindServerBehindRedirect(); + void slotFoundServer(const QUrl &, const QJsonObject &); + void slotNoServerFound(QNetworkReply *reply); + void slotNoServerFoundTimeout(const QUrl &url); + + void slotDetermineAuthType(); void slotConnectToOCUrl(const QString &); void slotAuthError(); From 8865405a3220ebbc01a3e1b54b6d1d28ec155cbd Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Tue, 24 Oct 2017 09:56:16 +0200 Subject: [PATCH 30/45] Version: master branch is future 2.5 now --- VERSION.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.cmake b/VERSION.cmake index 043aacc84..c03021310 100644 --- a/VERSION.cmake +++ b/VERSION.cmake @@ -1,5 +1,5 @@ set( MIRALL_VERSION_MAJOR 2 ) -set( MIRALL_VERSION_MINOR 4 ) +set( MIRALL_VERSION_MINOR 5 ) set( MIRALL_VERSION_PATCH 0 ) set( MIRALL_VERSION_YEAR 2017 ) set( MIRALL_SOVERSION 0 ) From fb2d31c9cedd10bc3b0cee7ccfff0756f6615386 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Mon, 9 Oct 2017 12:06:11 +0200 Subject: [PATCH 31/45] Folder: Move FolderWatcher to Folder This makes it unnecessary for FolderMan to manage the list and removes the need for some forwarders. This is done in preparation for follow-up commits that want to add diagnostics to FolderWatcher that shall be available from within Folder. --- src/gui/folder.cpp | 18 +++++++++++++++-- src/gui/folder.h | 15 ++++++++++++++ src/gui/folderman.cpp | 47 +++++-------------------------------------- src/gui/folderman.h | 10 +++------ 4 files changed, 39 insertions(+), 51 deletions(-) diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp index c61c4ea68..f3337793a 100644 --- a/src/gui/folder.cpp +++ b/src/gui/folder.cpp @@ -843,10 +843,12 @@ void Folder::slotItemCompleted(const SyncFileItemPtr &item) { // add new directories or remove gone away dirs to the watcher if (item->isDirectory() && item->_instruction == CSYNC_INSTRUCTION_NEW) { - FolderMan::instance()->addMonitorPath(alias(), path() + item->_file); + if (_folderWatcher) + _folderWatcher->addPath(path() + item->_file); } if (item->isDirectory() && item->_instruction == CSYNC_INSTRUCTION_REMOVE) { - FolderMan::instance()->removeMonitorPath(alias(), path() + item->_file); + if (_folderWatcher) + _folderWatcher->removePath(path() + item->_file); } _syncResult.processCompletedItem(item); @@ -913,6 +915,18 @@ void Folder::setSaveBackwardsCompatible(bool save) _saveBackwardsCompatible = save; } +void Folder::registerFolderWatcher() +{ + if (_folderWatcher) + return; + if (!QDir(path()).exists()) + return; + + _folderWatcher.reset(new FolderWatcher(path(), this)); + connect(_folderWatcher.data(), &FolderWatcher::pathChanged, + this, &Folder::slotWatchedPathChanged); +} + void Folder::slotAboutToRemoveAllFiles(SyncFileItem::Direction dir, bool *cancel) { ConfigFile cfgFile; diff --git a/src/gui/folder.h b/src/gui/folder.h index 7b503a6d6..dff69b39b 100644 --- a/src/gui/folder.h +++ b/src/gui/folder.h @@ -36,6 +36,7 @@ namespace OCC { class SyncEngine; class AccountState; class SyncRunFileLog; +class FolderWatcher; /** * @brief The FolderDefinition class @@ -227,6 +228,13 @@ public: */ void setSaveBackwardsCompatible(bool save); + /** + * Sets up this folder's folderWatcher if possible. + * + * May be called several times. + */ + void registerFolderWatcher(); + signals: void syncStateChange(); void syncStarted(); @@ -365,6 +373,13 @@ private: * path. */ bool _saveBackwardsCompatible; + + /** + * Watches this folder's local directory for changes. + * + * Created by registerFolderWatcher(), triggers slotWatchedPathChanged() + */ + QScopedPointer _folderWatcher; }; } diff --git a/src/gui/folderman.cpp b/src/gui/folderman.cpp index b819e7569..517d5dc99 100644 --- a/src/gui/folderman.cpp +++ b/src/gui/folderman.cpp @@ -104,9 +104,6 @@ void FolderMan::unloadFolder(Folder *f) _socketApi->slotUnregisterPath(f->alias()); - if (_folderWatchers.contains(f->alias())) { - _folderWatchers.remove(f->alias()); - } _folderMap.remove(f->alias()); disconnect(f, &Folder::syncStarted, @@ -147,54 +144,18 @@ int FolderMan::unloadAndDeleteAllFolders() return cnt; } -// add a monitor to the local file system. If there is a change in the -// file system, the method slotFolderMonitorFired is triggered through -// the SignalMapper -void FolderMan::registerFolderMonitor(Folder *folder) +void FolderMan::registerFolderWithSocketApi(Folder *folder) { if (!folder) return; if (!QDir(folder->path()).exists()) return; - if (!_folderWatchers.contains(folder->alias())) { - FolderWatcher *fw = new FolderWatcher(folder->path(), folder); - - // Connect the pathChanged signal, which comes with the changed path, - // to the signal mapper which maps to the folder alias. The changed path - // is lost this way, but we do not need it for the current implementation. - connect(fw, &FolderWatcher::pathChanged, folder, &Folder::slotWatchedPathChanged); - - _folderWatchers.insert(folder->alias(), fw); - } - // register the folder with the socket API if (folder->canSync()) _socketApi->slotRegisterPath(folder->alias()); } -void FolderMan::addMonitorPath(const QString &alias, const QString &path) -{ - if (!alias.isEmpty() && _folderWatchers.contains(alias)) { - FolderWatcher *fw = _folderWatchers[alias]; - - if (fw) { - fw->addPath(path); - } - } -} - -void FolderMan::removeMonitorPath(const QString &alias, const QString &path) -{ - if (!alias.isEmpty() && _folderWatchers.contains(alias)) { - FolderWatcher *fw = _folderWatchers[alias]; - - if (fw) { - fw->removePath(path); - } - } -} - int FolderMan::setupFolders() { unloadAndDeleteAllFolders(); @@ -750,7 +711,8 @@ void FolderMan::slotStartScheduledFolderSync() if (folder) { // Safe to call several times, and necessary to try again if // the folder path didn't exist previously. - registerFolderMonitor(folder); + folder->registerFolderWatcher(); + registerFolderWithSocketApi(folder); _currentSyncFolder = folder; folder->startSync(QStringList()); @@ -964,7 +926,8 @@ Folder *FolderMan::addFolderInternal(FolderDefinition folderDefinition, connect(folder, &Folder::watchedFileChangedExternally, &folder->syncEngine().syncFileStatusTracker(), &SyncFileStatusTracker::slotPathTouched); - registerFolderMonitor(folder); + folder->registerFolderWatcher(); + registerFolderWithSocketApi(folder); return folder; } diff --git a/src/gui/folderman.h b/src/gui/folderman.h index 5802789c8..002fb9b45 100644 --- a/src/gui/folderman.h +++ b/src/gui/folderman.h @@ -109,9 +109,6 @@ public: static SyncResult accountStatus(const QList &folders); - void removeMonitorPath(const QString &alias, const QString &path); - void addMonitorPath(const QString &alias, const QString &path); - // Escaping of the alias which is used in QSettings AND the file // system, thus need to be escaped. static QString escapeAlias(const QString &); @@ -284,7 +281,9 @@ private: // finds all folder configuration files // and create the folders QString getBackupName(QString fullPathName) const; - void registerFolderMonitor(Folder *folder); + + // makes the folder known to the socket api + void registerFolderWithSocketApi(Folder *folder); // restarts the application (Linux only) void restartApplication(); @@ -298,9 +297,6 @@ private: QPointer _lastSyncFolder; bool _syncEnabled; - /// Watching for file changes in folders - QMap _folderWatchers; - /// Starts regular etag query jobs QTimer _etagPollTimer; /// The currently running etag query From 66f0ce6616edcb6e44d235ae779170eb28c9c7c0 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Mon, 9 Oct 2017 12:06:57 +0200 Subject: [PATCH 32/45] FolderWatcher: reliability and data-loss signal Add state and signal to catch the following two known problems: * Linux: inotify user watch pool is exhausted. Folder watcher becomes unreliable. * Windows: buffer is too small, some notifications are lost but watching stays reliable. --- src/gui/folderwatcher.cpp | 5 +++++ src/gui/folderwatcher.h | 21 +++++++++++++++++++-- src/gui/folderwatcher_linux.cpp | 6 ++++++ src/gui/folderwatcher_win.cpp | 3 +++ src/gui/folderwatcher_win.h | 1 + 5 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/gui/folderwatcher.cpp b/src/gui/folderwatcher.cpp index 0f5fee413..443956d19 100644 --- a/src/gui/folderwatcher.cpp +++ b/src/gui/folderwatcher.cpp @@ -68,6 +68,11 @@ bool FolderWatcher::pathIsIgnored(const QString &path) return false; } +bool FolderWatcher::isReliable() const +{ + return _isReliable; +} + void FolderWatcher::changeDetected(const QString &path) { QStringList paths(path); diff --git a/src/gui/folderwatcher.h b/src/gui/folderwatcher.h index 334abf1b7..ac40a2ea3 100644 --- a/src/gui/folderwatcher.h +++ b/src/gui/folderwatcher.h @@ -72,13 +72,29 @@ public: /* Check if the path is ignored. */ bool pathIsIgnored(const QString &path); + /** + * Returns false if the folder watcher can't be trusted to capture all + * notifications. + * + * For example, this can happen on linux if the inotify user limit from + * /proc/sys/fs/inotify/max_user_watches is exceeded. + */ + bool isReliable() const; + signals: /** Emitted when one of the watched directories or one * of the contained files is changed. */ void pathChanged(const QString &path); - /** Emitted if an error occurs */ - void error(const QString &error); + /** + * Emitted if some notifications were lost. + * + * Would happen, for example, if the number of pending notifications + * exceeded the allocated buffer size on Windows. Note that the folder + * watcher could still be able to capture all future notifications - + * i.e. isReliable() is orthogonal to losing changes occasionally. + */ + void lostChanges(); protected slots: // called from the implementations to indicate a change in path @@ -93,6 +109,7 @@ private: QTime _timer; QSet _lastPaths; Folder *_folder; + bool _isReliable = true; friend class FolderWatcherPrivate; }; diff --git a/src/gui/folderwatcher_linux.cpp b/src/gui/folderwatcher_linux.cpp index f0e0eb0e4..37d79211a 100644 --- a/src/gui/folderwatcher_linux.cpp +++ b/src/gui/folderwatcher_linux.cpp @@ -78,6 +78,12 @@ void FolderWatcherPrivate::inotifyRegisterPath(const QString &path) IN_CLOSE_WRITE | IN_ATTRIB | IN_MOVE | IN_CREATE | IN_DELETE | IN_DELETE_SELF | IN_MOVE_SELF | IN_UNMOUNT | IN_ONLYDIR); if (wd > -1) { _watches.insert(wd, path); + } else { + // If we're running out of memory or inotify watches, become + // unreliable. + if (errno == ENOMEM || errno == ENOSPC) { + _parent->_isReliable = false; + } } } } diff --git a/src/gui/folderwatcher_win.cpp b/src/gui/folderwatcher_win.cpp index 19c623f56..4f963fbe2 100644 --- a/src/gui/folderwatcher_win.cpp +++ b/src/gui/folderwatcher_win.cpp @@ -101,6 +101,7 @@ void WatcherThread::watchChanges(size_t fileNotifyBufferSize, DWORD errorCode = GetLastError(); if (errorCode == ERROR_NOTIFY_ENUM_DIR) { qCDebug(lcFolderWatcher) << "The buffer for changes overflowed! Triggering a generic change and resizing"; + emit lostChanges(); emit changed(_path); *increaseBufferSize = true; } else { @@ -199,6 +200,8 @@ FolderWatcherPrivate::FolderWatcherPrivate(FolderWatcher *p, const QString &path _thread = new WatcherThread(path); connect(_thread, SIGNAL(changed(const QString &)), _parent, SLOT(changeDetected(const QString &))); + connect(_thread, SIGNAL(lostChanges()), + _parent, SIGNAL(lostChanges())); _thread->start(); } diff --git a/src/gui/folderwatcher_win.h b/src/gui/folderwatcher_win.h index 687ec891d..7ea673084 100644 --- a/src/gui/folderwatcher_win.h +++ b/src/gui/folderwatcher_win.h @@ -53,6 +53,7 @@ protected: signals: void changed(const QString &path); + void lostChanges(); private: QString _path; From e85a339d9461d82e8439fc6714f032f74b58de4b Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Thu, 14 Sep 2017 16:43:23 +0200 Subject: [PATCH 33/45] Local discovery: Use db instead of filesystem We mostly trust the file watchers meaning that we don't re-scan the local tree if we have done that recently and no file watcher events have arrived. If the file watchers invalidate a subtree, we rescan only that subtree. Since we're not entirely sure the file watchers are reliable, we still do full local discoveries regularly (1h by default). There is a config file setting as well as an environment variable to control the interval. --- doc/conffile.rst | 4 +- src/common/syncjournaldb.cpp | 35 ++++++++++-- src/common/syncjournaldb.h | 1 + src/csync/csync.cpp | 3 + src/csync/csync_private.h | 16 ++++++ src/csync/csync_update.cpp | 69 +++++++++++++++-------- src/gui/folder.cpp | 105 +++++++++++++++++++++++++++++++---- src/gui/folder.h | 21 +++++++ src/libsync/configfile.cpp | 9 +++ src/libsync/configfile.h | 7 +++ src/libsync/syncengine.cpp | 7 +++ src/libsync/syncengine.h | 21 +++++++ test/testsyncengine.cpp | 34 ++++++++++++ 13 files changed, 292 insertions(+), 40 deletions(-) diff --git a/doc/conffile.rst b/doc/conffile.rst index 9b3c2ffe0..3fdcc179b 100644 --- a/doc/conffile.rst +++ b/doc/conffile.rst @@ -27,6 +27,8 @@ Some interesting values that can be set on the configuration file are: +---------------------------------+---------------+--------------------------------------------------------------------------------------------------------+ | ``forceSyncInterval`` | ``7200000`` | The duration of no activity after which a synchronization run shall be triggered automatically. | +---------------------------------+---------------+--------------------------------------------------------------------------------------------------------+ +| ``fullLocalDiscoveryInterval`` | ``3600000`` | The interval after which the next synchronization will perform a full local discovery. | ++---------------------------------+---------------+--------------------------------------------------------------------------------------------------------+ | ``notificationRefreshInterval`` | ``300000`` | Specifies the default interval of checking for new server notifications in milliseconds. | +---------------------------------+---------------+--------------------------------------------------------------------------------------------------------+ @@ -62,4 +64,4 @@ Some interesting values that can be set on the configuration file are: | | | ``2`` for No Proxy. | + + +--------------------------------------------------------------------------------------------------------+ | | | ``3`` for HTTP(S) Proxy. | -+---------------------------------+---------------+--------------------------------------------------------------------------------------------------------+ \ No newline at end of file ++---------------------------------+---------------+--------------------------------------------------------------------------------------------------------+ diff --git a/src/common/syncjournaldb.cpp b/src/common/syncjournaldb.cpp index b827657c7..ad8c68aa8 100644 --- a/src/common/syncjournaldb.cpp +++ b/src/common/syncjournaldb.cpp @@ -547,13 +547,28 @@ bool SyncJournalDb::checkConnect() return sqlFail("prepare _getFileRecordQueryByFileId", *_getFileRecordQueryByFileId); } + // This query is used to skip discovery and fill the tree from the + // database instead _getFilesBelowPathQuery.reset(new SqlQuery(_db)); if (_getFilesBelowPathQuery->prepare( GET_FILE_RECORD_QUERY - " WHERE path > (?1||'/') AND path < (?1||'0') ORDER BY path||'/' ASC")) { + " WHERE path > (?1||'/') AND path < (?1||'0')" + // We want to ensure that the contents of a directory are sorted + // directly behind the directory itself. Without this ORDER BY + // an ordering like foo, foo-2, foo/file would be returned. + // With the trailing /, we get foo-2, foo, foo/file. This property + // is used in fill_tree_from_db(). + " ORDER BY path||'/' ASC")) { return sqlFail("prepare _getFilesBelowPathQuery", *_getFilesBelowPathQuery); } + _getAllFilesQuery.reset(new SqlQuery(_db)); + if (_getAllFilesQuery->prepare( + GET_FILE_RECORD_QUERY + " ORDER BY path||'/' ASC")) { + return sqlFail("prepare _getAllFilesQuery", *_getAllFilesQuery); + } + _setFileRecordQuery.reset(new SqlQuery(_db)); if (_setFileRecordQuery->prepare("INSERT OR REPLACE INTO metadata " "(phash, pathlen, path, inode, uid, gid, mode, modtime, type, md5, fileid, remotePerm, filesize, ignoredChildrenRemote, contentChecksum, contentChecksumTypeId) " @@ -704,6 +719,7 @@ void SyncJournalDb::close() _getFileRecordQueryByInode.reset(0); _getFileRecordQueryByFileId.reset(0); _getFilesBelowPathQuery.reset(0); + _getAllFilesQuery.reset(0); _setFileRecordQuery.reset(0); _setFileRecordChecksumQuery.reset(0); _setFileRecordLocalMetadataQuery.reset(0); @@ -1133,16 +1149,23 @@ bool SyncJournalDb::getFilesBelowPath(const QByteArray &path, const std::functio if (!checkConnect()) return false; - _getFilesBelowPathQuery->reset_and_clear_bindings(); - _getFilesBelowPathQuery->bindValue(1, path); + // Since the path column doesn't store the starting /, the getFilesBelowPathQuery + // can't be used for the root path "". It would scan for (path > '/' and path < '0') + // and find nothing. So, unfortunately, we have to use a different query for + // retrieving the whole tree. + auto &query = path.isEmpty() ? _getAllFilesQuery : _getFilesBelowPathQuery; - if (!_getFilesBelowPathQuery->exec()) { + query->reset_and_clear_bindings(); + if (query == _getFilesBelowPathQuery) + query->bindValue(1, path); + + if (!query->exec()) { return false; } - while (_getFilesBelowPathQuery->next()) { + while (query->next()) { SyncJournalFileRecord rec; - fillFileRecordFromGetQuery(rec, *_getFilesBelowPathQuery); + fillFileRecordFromGetQuery(rec, *query); rowCallback(rec); } diff --git a/src/common/syncjournaldb.h b/src/common/syncjournaldb.h index cfdced9a3..91556a807 100644 --- a/src/common/syncjournaldb.h +++ b/src/common/syncjournaldb.h @@ -244,6 +244,7 @@ private: QScopedPointer _getFileRecordQueryByInode; QScopedPointer _getFileRecordQueryByFileId; QScopedPointer _getFilesBelowPathQuery; + QScopedPointer _getAllFilesQuery; QScopedPointer _setFileRecordQuery; QScopedPointer _setFileRecordChecksumQuery; QScopedPointer _setFileRecordLocalMetadataQuery; diff --git a/src/csync/csync.cpp b/src/csync/csync.cpp index 4f0c19916..9c8593e31 100644 --- a/src/csync/csync.cpp +++ b/src/csync/csync.cpp @@ -314,6 +314,9 @@ int csync_s::reinitialize() { local.files.clear(); remote.files.clear(); + local_discovery_style = LocalDiscoveryStyle::FilesystemOnly; + locally_touched_dirs.clear(); + status = CSYNC_STATUS_INIT; SAFE_FREE(error_string); diff --git a/src/csync/csync_private.h b/src/csync/csync_private.h index 2c29ece70..bef8a7512 100644 --- a/src/csync/csync_private.h +++ b/src/csync/csync_private.h @@ -38,6 +38,7 @@ #include #include #include +#include #include "common/syncjournaldb.h" #include "config_csync.h" @@ -70,6 +71,11 @@ enum csync_replica_e { REMOTE_REPLICA }; +enum class LocalDiscoveryStyle { + FilesystemOnly, //< read all local data from the filesystem + DatabaseAndFilesystem, //< read from the db, except for listed paths +}; + /* * This is a structurere similar to QStringRef @@ -190,6 +196,16 @@ struct OCSYNC_EXPORT csync_s { */ bool read_remote_from_db = false; + LocalDiscoveryStyle local_discovery_style = LocalDiscoveryStyle::FilesystemOnly; + + /** + * List of folder-relative directory paths that should be scanned on the + * filesystem if the local_discovery_style suggests it. + * + * Their parents will be scanned too. The paths don't start with a /. + */ + std::set locally_touched_dirs; + bool ignore_hidden_files = true; csync_s(const char *localUri, OCC::SyncJournalDb *statedb); diff --git a/src/csync/csync_update.cpp b/src/csync/csync_update.cpp index 0271b1c56..35c73e625 100644 --- a/src/csync/csync_update.cpp +++ b/src/csync/csync_update.cpp @@ -435,28 +435,31 @@ static bool fill_tree_from_db(CSYNC *ctx, const char *uri) { int64_t count = 0; QByteArray skipbase; - auto rowCallback = [ctx, &count, &skipbase](const OCC::SyncJournalFileRecord &rec) { - /* When selective sync is used, the database may have subtrees with a parent - * whose etag (md5) is _invalid_. These are ignored and shall not appear in the - * remote tree. - * Sometimes folders that are not ignored by selective sync get marked as - * _invalid_, but that is not a problem as the next discovery will retrieve - * their correct etags again and we don't run into this case. - */ - if( rec._etag == "_invalid_") { - qCDebug(lcUpdate, "%s selective sync excluded", rec._path.constData()); - skipbase = rec._path; - skipbase += '/'; - return; - } + auto &files = ctx->current == LOCAL_REPLICA ? ctx->local.files : ctx->remote.files; + auto rowCallback = [ctx, &count, &skipbase, &files](const OCC::SyncJournalFileRecord &rec) { + if (ctx->current == REMOTE_REPLICA) { + /* When selective sync is used, the database may have subtrees with a parent + * whose etag is _invalid_. These are ignored and shall not appear in the + * remote tree. + * Sometimes folders that are not ignored by selective sync get marked as + * _invalid_, but that is not a problem as the next discovery will retrieve + * their correct etags again and we don't run into this case. + */ + if (rec._etag == "_invalid_") { + qCDebug(lcUpdate, "%s selective sync excluded", rec._path.constData()); + skipbase = rec._path; + skipbase += '/'; + return; + } - /* Skip over all entries with the same base path. Note that this depends - * strongly on the ordering of the retrieved items. */ - if( !skipbase.isEmpty() && rec._path.startsWith(skipbase) ) { - qCDebug(lcUpdate, "%s selective sync excluded because the parent is", rec._path.constData()); - return; - } else { - skipbase.clear(); + /* Skip over all entries with the same base path. Note that this depends + * strongly on the ordering of the retrieved items. */ + if (!skipbase.isEmpty() && rec._path.startsWith(skipbase)) { + qCDebug(lcUpdate, "%s selective sync excluded because the parent is", rec._path.constData()); + return; + } else { + skipbase.clear(); + } } std::unique_ptr st = csync_file_stat_t::fromSyncJournalFileRecord(rec); @@ -477,7 +480,7 @@ static bool fill_tree_from_db(CSYNC *ctx, const char *uri) } /* store into result list. */ - ctx->remote.files[rec._path] = std::move(st); + files[rec._path] = std::move(st); ++count; }; @@ -522,6 +525,26 @@ int csync_ftw(CSYNC *ctx, const char *uri, csync_walker_fn fn, int rc = 0; bool do_read_from_db = (ctx->current == REMOTE_REPLICA && ctx->remote.read_from_db); + const char *db_uri = uri; + + if (ctx->current == LOCAL_REPLICA + && ctx->local_discovery_style == LocalDiscoveryStyle::DatabaseAndFilesystem) { + const char *local_uri = uri + strlen(ctx->local.uri); + if (*local_uri == '/') + ++local_uri; + db_uri = local_uri; + do_read_from_db = true; + + // Minor bug: local_uri doesn't have a trailing /. Example: Assume it's "d/foo" + // and we want to check whether we should read from the db. Assume "d/foo a" is + // in locally_touched_dirs. Then this check will say no, don't read from the db! + // (because "d/foo" < "d/foo a" < "d/foo/bar") + // C++14: Could skip the conversion to QByteArray here. + auto it = ctx->locally_touched_dirs.lower_bound(QByteArray(local_uri)); + if (it != ctx->locally_touched_dirs.end() && it->startsWith(local_uri)) { + do_read_from_db = false; + } + } if (!depth) { mark_current_item_ignored(ctx, previous_fs, CSYNC_STATUS_INDIVIDUAL_TOO_DEEP); @@ -533,7 +556,7 @@ int csync_ftw(CSYNC *ctx, const char *uri, csync_walker_fn fn, // if the etag of this dir is still the same, its content is restored from the // database. if( do_read_from_db ) { - if( ! fill_tree_from_db(ctx, uri) ) { + if( ! fill_tree_from_db(ctx, db_uri) ) { errno = ENOENT; ctx->status_code = CSYNC_STATUS_OPENDIR_ERROR; goto error; diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp index f3337793a..176a49323 100644 --- a/src/gui/folder.cpp +++ b/src/gui/folder.cpp @@ -448,12 +448,26 @@ int Folder::slotWipeErrorBlacklist() void Folder::slotWatchedPathChanged(const QString &path) { + if (!path.startsWith(this->path())) { + qCDebug(lcFolder) << "Changed path is not contained in folder, ignoring:" << path; + return; + } + + auto relativePath = path.midRef(this->path().size()); + + // Add to list of locally modified paths + // + // We do this before checking for our own sync-related changes to make + // extra sure to not miss relevant changes. + auto relativePathBytes = relativePath.toUtf8(); + _localDiscoveryPaths.insert(relativePathBytes); + qCDebug(lcFolder) << "local discovery: inserted" << relativePath << "due to file watcher"; + // The folder watcher fires a lot of bogus notifications during // a sync operation, both for actual user files and the database // and log. Therefore we check notifications against operations // the sync is doing to filter out our own changes. #ifdef Q_OS_MAC - Q_UNUSED(path) // On OSX the folder watcher does not report changes done by our // own process. Therefore nothing needs to be done here! #else @@ -465,15 +479,12 @@ void Folder::slotWatchedPathChanged(const QString &path) #endif // Check that the mtime actually changed. - if (path.startsWith(this->path())) { - auto relativePath = path.mid(this->path().size()); - SyncJournalFileRecord record; - if (_journal.getFileRecord(relativePath, &record) - && record.isValid() - && !FileSystem::fileChanged(path, record._fileSize, record._modtime)) { - qCInfo(lcFolder) << "Ignoring spurious notification for file" << relativePath; - return; // probably a spurious notification - } + SyncJournalFileRecord record; + if (_journal.getFileRecord(relativePathBytes, &record) + && record.isValid() + && !FileSystem::fileChanged(path, record._fileSize, record._modtime)) { + qCInfo(lcFolder) << "Ignoring spurious notification for file" << relativePath; + return; // probably a spurious notification } emit watchedFileChangedExternally(path); @@ -645,6 +656,36 @@ void Folder::startSync(const QStringList &pathList) setDirtyNetworkLimits(); setSyncOptions(); + static qint64 fullLocalDiscoveryInterval = []() { + auto interval = ConfigFile().fullLocalDiscoveryInterval(); + QByteArray env = qgetenv("OWNCLOUD_FULL_LOCAL_DISCOVERY_INTERVAL"); + if (!env.isEmpty()) { + interval = env.toLongLong(); + } + return interval; + }(); + if (_folderWatcher && _folderWatcher->isReliable() + && _timeSinceLastFullLocalDiscovery.isValid() + && (fullLocalDiscoveryInterval < 0 + || _timeSinceLastFullLocalDiscovery.elapsed() < fullLocalDiscoveryInterval)) { + qCInfo(lcFolder) << "Allowing local discovery to read from the database"; + _engine->setLocalDiscoveryOptions(LocalDiscoveryStyle::DatabaseAndFilesystem, _localDiscoveryPaths); + + if (lcFolder().isDebugEnabled()) { + QByteArrayList paths; + for (auto &path : _localDiscoveryPaths) + paths.append(path); + qCDebug(lcFolder) << "local discovery paths: " << paths; + } + + _previousLocalDiscoveryPaths = std::move(_localDiscoveryPaths); + } else { + qCInfo(lcFolder) << "Forbidding local discovery to read from the database"; + _engine->setLocalDiscoveryOptions(LocalDiscoveryStyle::FilesystemOnly); + _previousLocalDiscoveryPaths.clear(); + } + _localDiscoveryPaths.clear(); + _engine->setIgnoreHiddenFiles(_definition.ignoreHiddenFiles); QMetaObject::invokeMethod(_engine.data(), "startSync", Qt::QueuedConnection); @@ -783,6 +824,24 @@ void Folder::slotSyncFinished(bool success) journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncWhiteList, QStringList()); } + // bug: This function uses many different criteria for "sync was successful" - investigate! + if ((_syncResult.status() == SyncResult::Success + || _syncResult.status() == SyncResult::Problem) + && success) { + if (_engine->lastLocalDiscoveryStyle() == LocalDiscoveryStyle::FilesystemOnly) { + _timeSinceLastFullLocalDiscovery.start(); + } + qCDebug(lcFolder) << "Sync success, forgetting last sync's local discovery path list"; + } else { + // On overall-failure we can't forget about last sync's local discovery + // paths yet, reuse them for the next sync again. + // C++17: Could use std::set::merge(). + _localDiscoveryPaths.insert( + _previousLocalDiscoveryPaths.begin(), _previousLocalDiscoveryPaths.end()); + qCDebug(lcFolder) << "Sync failed, keeping last sync's local discovery path list"; + } + _previousLocalDiscoveryPaths.clear(); + emit syncStateChange(); // The syncFinished result that is to be triggered here makes the folderman @@ -851,6 +910,25 @@ void Folder::slotItemCompleted(const SyncFileItemPtr &item) _folderWatcher->removePath(path() + item->_file); } + // Success and failure of sync items adjust what the next sync is + // supposed to do. + // + // For successes, we want to wipe the file from the list to ensure we don't + // rediscover it even if this overall sync fails. + // + // For failures, we want to add the file to the list so the next sync + // will be able to retry it. + if (item->_status == SyncFileItem::Success + || item->_status == SyncFileItem::FileIgnored + || item->_status == SyncFileItem::Restoration + || item->_status == SyncFileItem::Conflict) { + if (_previousLocalDiscoveryPaths.erase(item->_file.toUtf8())) + qCDebug(lcFolder) << "local discovery: wiped" << item->_file; + } else { + _localDiscoveryPaths.insert(item->_file.toUtf8()); + qCDebug(lcFolder) << "local discovery: inserted" << item->_file << "due to sync failure"; + } + _syncResult.processCompletedItem(item); _fileLog->logItem(*item); @@ -903,6 +981,11 @@ void Folder::slotScheduleThisFolder() FolderMan::instance()->scheduleFolder(this); } +void Folder::slotNextSyncFullLocalDiscovery() +{ + _timeSinceLastFullLocalDiscovery.invalidate(); +} + void Folder::scheduleThisFolderSoon() { if (!_scheduleSelfTimer.isActive()) { @@ -925,6 +1008,8 @@ void Folder::registerFolderWatcher() _folderWatcher.reset(new FolderWatcher(path(), this)); connect(_folderWatcher.data(), &FolderWatcher::pathChanged, this, &Folder::slotWatchedPathChanged); + connect(_folderWatcher.data(), &FolderWatcher::lostChanges, + this, &Folder::slotNextSyncFullLocalDiscovery); } void Folder::slotAboutToRemoveAllFiles(SyncFileItem::Direction dir, bool *cancel) diff --git a/src/gui/folder.h b/src/gui/folder.h index dff69b39b..2e7f2a7c0 100644 --- a/src/gui/folder.h +++ b/src/gui/folder.h @@ -27,6 +27,7 @@ #include #include +#include class QThread; class QSettings; @@ -312,6 +313,9 @@ private slots: */ void slotScheduleThisFolder(); + /** Ensures that the next sync performs a full local discovery. */ + void slotNextSyncFullLocalDiscovery(); + private: bool setIgnoredFiles(); @@ -346,6 +350,7 @@ private: QString _lastEtag; QElapsedTimer _timeSinceLastSyncDone; QElapsedTimer _timeSinceLastSyncStart; + QElapsedTimer _timeSinceLastFullLocalDiscovery; qint64 _lastSyncDuration; /// The number of syncs that failed in a row. @@ -380,6 +385,22 @@ private: * Created by registerFolderWatcher(), triggers slotWatchedPathChanged() */ QScopedPointer _folderWatcher; + + /** + * The paths that should be checked by the next local discovery. + * + * Mostly a collection of files the filewatchers have reported as touched. + * Also includes files that have had errors in the last sync run. + */ + std::set _localDiscoveryPaths; + + /** + * The paths that the current sync run used for local discovery. + * + * For failing syncs, this list will be merged into _localDiscoveryPaths + * again when the sync is done to make sure everything is retried. + */ + std::set _previousLocalDiscoveryPaths; }; } diff --git a/src/libsync/configfile.cpp b/src/libsync/configfile.cpp index 6fd3df6f0..dc7f31d25 100644 --- a/src/libsync/configfile.cpp +++ b/src/libsync/configfile.cpp @@ -36,6 +36,7 @@ #include #define DEFAULT_REMOTE_POLL_INTERVAL 30000 // default remote poll time in milliseconds +#define DEFAULT_FULL_LOCAL_DISCOVERY_INTERVAL (60 * 60 * 1000) // 1 hour #define DEFAULT_MAX_LOG_LINES 20000 namespace OCC { @@ -45,6 +46,7 @@ Q_LOGGING_CATEGORY(lcConfigFile, "sync.configfile", QtInfoMsg) //static const char caCertsKeyC[] = "CaCertificates"; only used from account.cpp static const char remotePollIntervalC[] = "remotePollInterval"; static const char forceSyncIntervalC[] = "forceSyncInterval"; +static const char fullLocalDiscoveryIntervalC[] = "fullLocalDiscoveryInterval"; static const char notificationRefreshIntervalC[] = "notificationRefreshInterval"; static const char monoIconsC[] = "monoIcons"; static const char promptDeleteC[] = "promptDeleteAllFiles"; @@ -406,6 +408,13 @@ quint64 ConfigFile::forceSyncInterval(const QString &connection) const return interval; } +qint64 ConfigFile::fullLocalDiscoveryInterval() const +{ + QSettings settings(configFile(), QSettings::IniFormat); + settings.beginGroup(defaultConnection()); + return settings.value(QLatin1String(fullLocalDiscoveryIntervalC), DEFAULT_FULL_LOCAL_DISCOVERY_INTERVAL).toLongLong(); +} + quint64 ConfigFile::notificationRefreshInterval(const QString &connection) const { QString con(connection); diff --git a/src/libsync/configfile.h b/src/libsync/configfile.h index b9eda8eb0..4ef698623 100644 --- a/src/libsync/configfile.h +++ b/src/libsync/configfile.h @@ -72,6 +72,13 @@ public: /* Force sync interval, in milliseconds */ quint64 forceSyncInterval(const QString &connection = QString()) const; + /** + * Interval in milliseconds within which full local discovery is required + * + * Use -1 to disable regular full local discoveries. + */ + qint64 fullLocalDiscoveryInterval() const; + bool monoIcons() const; void setMonoIcons(bool); diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index 8bb336865..7da9d3bc4 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -813,6 +813,7 @@ void SyncEngine::startSync() } _csync_ctx->read_remote_from_db = true; + _lastLocalDiscoveryStyle = _csync_ctx->local_discovery_style; bool ok; auto selectiveSyncBlackList = _journal->getSelectiveSyncList(SyncJournalDb::SelectiveSyncBlackList, &ok); @@ -1555,6 +1556,12 @@ AccountPtr SyncEngine::account() const return _account; } +void SyncEngine::setLocalDiscoveryOptions(LocalDiscoveryStyle style, std::set dirs) +{ + _csync_ctx->local_discovery_style = style; + _csync_ctx->locally_touched_dirs = std::move(dirs); +} + void SyncEngine::abort() { if (_propagator) diff --git a/src/libsync/syncengine.h b/src/libsync/syncengine.h index 44c8ca7a2..0b200bb8d 100644 --- a/src/libsync/syncengine.h +++ b/src/libsync/syncengine.h @@ -25,6 +25,7 @@ #include #include #include +#include #include @@ -92,6 +93,7 @@ public: AccountPtr account() const; SyncJournalDb *journal() const { return _journal; } QString localPath() const { return _localPath; } + /** * Minimum age, in milisecond, of a file that can be uploaded. * Files more recent than that are not going to be uploaeded as they are considered @@ -99,6 +101,22 @@ public: */ static qint64 minimumFileAgeForUpload; // in ms + /** + * Control whether local discovery should read from filesystem or db. + * + * If style is Partial, the paths is a set of file paths relative to + * the synced folder. All the parent directories of these paths will not + * be read from the db and scanned on the filesystem. + * + * Note, the style and paths are only retained for the next sync and + * revert afterwards. Use _lastLocalDiscoveryStyle to discover the last + * sync's style. + */ + void setLocalDiscoveryOptions(LocalDiscoveryStyle style, std::set dirs = {}); + + /** Access the last sync run's local discovery style */ + LocalDiscoveryStyle lastLocalDiscoveryStyle() const { return _lastLocalDiscoveryStyle; } + signals: void csyncUnavailable(); @@ -272,6 +290,9 @@ private: /** List of unique errors that occurred in a sync run. */ QSet _uniqueErrors; + + /** The kind of local discovery the last sync run used */ + LocalDiscoveryStyle _lastLocalDiscoveryStyle = LocalDiscoveryStyle::DatabaseAndFilesystem; }; } diff --git a/test/testsyncengine.cpp b/test/testsyncengine.cpp index 9c1b7a2c0..139fbf42b 100644 --- a/test/testsyncengine.cpp +++ b/test/testsyncengine.cpp @@ -613,6 +613,40 @@ private slots: QCOMPARE(nDELETE, 5); QCOMPARE(fakeFolder.currentLocalState(), remoteInfo); } + + // Check correct behavior when local discovery is partially drawn from the db + void testLocalDiscoveryStyle() + { + FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() }; + + // More subdirectories are useful for testing + fakeFolder.localModifier().mkdir("A/X"); + fakeFolder.localModifier().mkdir("A/Y"); + fakeFolder.localModifier().insert("A/X/x1"); + fakeFolder.localModifier().insert("A/Y/y1"); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + + // Test begins + fakeFolder.localModifier().insert("A/a3"); + fakeFolder.localModifier().insert("A/X/x2"); + fakeFolder.localModifier().insert("A/Y/y2"); + fakeFolder.localModifier().insert("B/b3"); + fakeFolder.remoteModifier().insert("C/c3"); + + fakeFolder.syncEngine().setLocalDiscoveryOptions(LocalDiscoveryStyle::DatabaseAndFilesystem, { "A/X" }); + QVERIFY(fakeFolder.syncOnce()); + QVERIFY(fakeFolder.currentRemoteState().find("A/a3")); + QVERIFY(fakeFolder.currentRemoteState().find("A/X/x2")); + QVERIFY(!fakeFolder.currentRemoteState().find("A/Y/y2")); + QVERIFY(!fakeFolder.currentRemoteState().find("B/b3")); + QVERIFY(fakeFolder.currentLocalState().find("C/c3")); + QCOMPARE(fakeFolder.syncEngine().lastLocalDiscoveryStyle(), LocalDiscoveryStyle::DatabaseAndFilesystem); + + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(fakeFolder.syncEngine().lastLocalDiscoveryStyle(), LocalDiscoveryStyle::FilesystemOnly); + } }; QTEST_GUILESS_MAIN(TestSyncEngine) From 9c7ee6ef85fbc11234b2f0bf903c9a647f4b395b Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Mon, 23 Oct 2017 10:46:41 +0200 Subject: [PATCH 34/45] Reconcile: Rename handling fixes: duplicate file ids When users share the same tree several times (say A/ and A/B/ are both shared) the remote tree can have several entries that have the same file id. This needs to be respected in rename detection. Also adds several tests and fixes for issues noticed during testing. See #6096 --- src/common/syncjournaldb.cpp | 13 +- src/common/syncjournaldb.h | 2 +- src/csync/csync_reconcile.cpp | 117 ++++--- src/csync/csync_update.cpp | 77 +++-- test/CMakeLists.txt | 1 + test/syncenginetestutils.h | 20 +- test/testsyncengine.cpp | 170 ---------- test/testsyncmove.cpp | 569 ++++++++++++++++++++++++++++++++++ 8 files changed, 718 insertions(+), 251 deletions(-) create mode 100644 test/testsyncmove.cpp diff --git a/src/common/syncjournaldb.cpp b/src/common/syncjournaldb.cpp index b827657c7..b263cdc16 100644 --- a/src/common/syncjournaldb.cpp +++ b/src/common/syncjournaldb.cpp @@ -1094,15 +1094,10 @@ bool SyncJournalDb::getFileRecordByInode(quint64 inode, SyncJournalFileRecord *r return true; } -bool SyncJournalDb::getFileRecordByFileId(const QByteArray &fileId, SyncJournalFileRecord *rec) +bool SyncJournalDb::getFileRecordsByFileId(const QByteArray &fileId, const std::function &rowCallback) { QMutexLocker locker(&_mutex); - // Reset the output var in case the caller is reusing it. - Q_ASSERT(rec); - rec->_path.clear(); - Q_ASSERT(!rec->isValid()); - if (fileId.isEmpty() || _metadataTableIsEmpty) return true; // no error, yet nothing found (rec->isValid() == false) @@ -1116,8 +1111,10 @@ bool SyncJournalDb::getFileRecordByFileId(const QByteArray &fileId, SyncJournalF return false; } - if (_getFileRecordQueryByFileId->next()) { - fillFileRecordFromGetQuery(*rec, *_getFileRecordQueryByFileId); + while (_getFileRecordQueryByFileId->next()) { + SyncJournalFileRecord rec; + fillFileRecordFromGetQuery(rec, *_getFileRecordQueryByFileId); + rowCallback(rec); } return true; diff --git a/src/common/syncjournaldb.h b/src/common/syncjournaldb.h index cfdced9a3..6baa1388e 100644 --- a/src/common/syncjournaldb.h +++ b/src/common/syncjournaldb.h @@ -58,7 +58,7 @@ public: bool getFileRecord(const QString &filename, SyncJournalFileRecord *rec) { return getFileRecord(filename.toUtf8(), rec); } bool getFileRecord(const QByteArray &filename, SyncJournalFileRecord *rec); bool getFileRecordByInode(quint64 inode, SyncJournalFileRecord *rec); - bool getFileRecordByFileId(const QByteArray &fileId, SyncJournalFileRecord *rec); + bool getFileRecordsByFileId(const QByteArray &fileId, const std::function &rowCallback); bool getFilesBelowPath(const QByteArray &path, const std::function &rowCallback); bool setFileRecord(const SyncJournalFileRecord &record); diff --git a/src/csync/csync_reconcile.cpp b/src/csync/csync_reconcile.cpp index 52ebba36f..92aa563fe 100644 --- a/src/csync/csync_reconcile.cpp +++ b/src/csync/csync_reconcile.cpp @@ -104,14 +104,17 @@ static bool _csync_is_collision_safe_hash(const char *checksum_header) * source and the destination, have been changed, the newer file wins. */ static int _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx) { + csync_s::FileMap *our_tree = nullptr; csync_s::FileMap *other_tree = nullptr; /* we need the opposite tree! */ switch (ctx->current) { case LOCAL_REPLICA: + our_tree = &ctx->local.files; other_tree = &ctx->remote.files; break; case REMOTE_REPLICA: + our_tree = &ctx->remote.files; other_tree = &ctx->local.files; break; default: @@ -152,40 +155,51 @@ static int _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx) { cur->instruction = CSYNC_INSTRUCTION_REMOVE; break; case CSYNC_INSTRUCTION_EVAL_RENAME: { - OCC::SyncJournalFileRecord base; - if(ctx->current == LOCAL_REPLICA ) { - /* use the old name to find the "other" node */ - ctx->statedb->getFileRecordByInode(cur->inode, &base); - qCDebug(lcReconcile, "Finding opposite temp through inode %" PRIu64 ": %s", - cur->inode, base.isValid() ? "true":"false"); - } else { - ASSERT( ctx->current == REMOTE_REPLICA ); - ctx->statedb->getFileRecordByFileId(cur->file_id, &base); - qCDebug(lcReconcile, "Finding opposite temp through file ID %s: %s", - cur->file_id.constData(), base.isValid() ? "true":"false"); - } + // By default, the EVAL_RENAME decays into a NEW + cur->instruction = CSYNC_INSTRUCTION_NEW; + + bool processedRename = false; + auto renameCandidateProcessing = [&](const OCC::SyncJournalFileRecord &base) { + if (processedRename) + return; + if (!base.isValid()) + return; - if( base.isValid() ) { /* First, check that the file is NOT in our tree (another file with the same name was added) */ - csync_s::FileMap *our_tree = ctx->current == REMOTE_REPLICA ? &ctx->remote.files : &ctx->local.files; - if (our_tree->findFile(base._path)) { - qCDebug(lcReconcile, "Origin found in our tree : %s", base._path.constData()); + if (our_tree->findFile(base._path)) { + qCDebug(lcReconcile, "Origin found in our tree : %s", base._path.constData()); } else { - /* Find the temporar file in the other tree. + /* Find the potential rename source file in the other tree. * If the renamed file could not be found in the opposite tree, that is because it * is not longer existing there, maybe because it was renamed or deleted. * The journal is cleaned up later after propagation. */ other = other_tree->findFile(base._path); - qCDebug(lcReconcile, "Temporary opposite (%s) %s", - base._path.constData() , other ? "found": "not found" ); + qCDebug(lcReconcile, "Rename origin in other tree (%s) %s", + base._path.constData(), other ? "found" : "not found"); } if(!other) { - cur->instruction = CSYNC_INSTRUCTION_NEW; - } else if (other->instruction == CSYNC_INSTRUCTION_NONE - || other->instruction == CSYNC_INSTRUCTION_UPDATE_METADATA - || cur->type == CSYNC_FTW_TYPE_DIR) { + // Stick with the NEW + return; + } else if (other->instruction == CSYNC_INSTRUCTION_RENAME) { + // Some other EVAL_RENAME already claimed other. + // We do nothing: maybe a different candidate for + // other is found as well? + qCDebug(lcReconcile, "Other has already been renamed to %s", + other->rename_path.constData()); + } else if (cur->type == CSYNC_FTW_TYPE_DIR + // The local replica is reconciled first, so the remote tree would + // have either NONE or UPDATE_METADATA if the remote file is safe to + // move. + // In the remote replica, REMOVE is also valid (local has already + // been reconciled). NONE can still happen if the whole parent dir + // was set to REMOVE by the local reconcile. + || other->instruction == CSYNC_INSTRUCTION_NONE + || other->instruction == CSYNC_INSTRUCTION_UPDATE_METADATA + || other->instruction == CSYNC_INSTRUCTION_REMOVE) { + qCDebug(lcReconcile, "Switching %s to RENAME to %s", + other->path.constData(), cur->path.constData()); other->instruction = CSYNC_INSTRUCTION_RENAME; other->rename_path = cur->path; if( !cur->file_id.isEmpty() ) { @@ -193,24 +207,44 @@ static int _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx) { } other->inode = cur->inode; cur->instruction = CSYNC_INSTRUCTION_NONE; - } else if (other->instruction == CSYNC_INSTRUCTION_REMOVE) { - other->instruction = CSYNC_INSTRUCTION_RENAME; - other->rename_path = cur->path; + // We have consumed 'other': exit this loop to not consume another one. + processedRename = true; + } else if (our_tree->findFile(csync_rename_adjust_path(ctx, other->path)) == cur) { + // If we're here, that means that the other side's reconcile will be able + // to work against cur: The filename itself didn't change, only a parent + // directory was renamed! In that case it's safe to ignore the rename + // since the parent directory rename will already deal with it. - if( !cur->file_id.isEmpty() ) { - other->file_id = cur->file_id; - } - other->inode = cur->inode; + // Local: The remote reconcile will be able to deal with this. + // Remote: The local replica has already dealt with this. + // See the EVAL_RENAME case when other was found directly. + qCDebug(lcReconcile, "File in a renamed directory, other side's instruction: %d", + other->instruction); cur->instruction = CSYNC_INSTRUCTION_NONE; - } else if (other->instruction == CSYNC_INSTRUCTION_NEW) { - qCDebug(lcReconcile, "OOOO=> NEW detected in other tree!"); - cur->instruction = CSYNC_INSTRUCTION_CONFLICT; } else { - assert(other->type != CSYNC_FTW_TYPE_DIR); - cur->instruction = CSYNC_INSTRUCTION_NONE; - other->instruction = CSYNC_INSTRUCTION_SYNC; + // This can, for instance, happen when there was a local change in other + // and the instruction in the local tree is NEW while cur has EVAL_RENAME + // due to a remote move of the same file. In these scenarios we just + // want the instruction to stay NEW. + qCDebug(lcReconcile, "Other already has instruction %d", + other->instruction); } + }; + + if (ctx->current == LOCAL_REPLICA) { + /* use the old name to find the "other" node */ + OCC::SyncJournalFileRecord base; + qCDebug(lcReconcile, "Finding rename origin through inode %" PRIu64 "", + cur->inode); + ctx->statedb->getFileRecordByInode(cur->inode, &base); + renameCandidateProcessing(base); + } else { + ASSERT(ctx->current == REMOTE_REPLICA); + qCDebug(lcReconcile, "Finding rename origin through file ID %s", + cur->file_id.constData()); + ctx->statedb->getFileRecordsByFileId(cur->file_id, renameCandidateProcessing); } + break; } default: @@ -310,10 +344,19 @@ static int _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx) { break; case CSYNC_INSTRUCTION_IGNORE: cur->instruction = CSYNC_INSTRUCTION_IGNORE; - break; + break; default: break; } + // Ensure we're not leaving discovery-only instructions + // in place. This can happen, for instance, when other's + // instruction is EVAL_RENAME because the parent dir was renamed. + // NEW is safer than EVAL because it will end up with + // propagation unless it's changed by something, and EVAL and + // NEW are treated equivalently during reconcile. + if (cur->instruction == CSYNC_INSTRUCTION_EVAL) + cur->instruction = CSYNC_INSTRUCTION_NEW; + break; default: break; } diff --git a/src/csync/csync_update.cpp b/src/csync/csync_update.cpp index 0271b1c56..82be908e3 100644 --- a/src/csync/csync_update.cpp +++ b/src/csync/csync_update.cpp @@ -297,41 +297,60 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr f } else { /* Remote Replica Rename check */ - OCC::SyncJournalFileRecord base; - if(!ctx->statedb->getFileRecordByFileId(fs->file_id, &base)) { + fs->instruction = CSYNC_INSTRUCTION_NEW; + + bool done = false; + auto renameCandidateProcessing = [&](const OCC::SyncJournalFileRecord &base) { + if (done) + return; + if (!base.isValid()) + return; + + // Some things prohibit rename detection entirely. + // Since we don't do the same checks again in reconcile, we can't + // just skip the candidate, but have to give up completely. + if (base._type != fs->type) { + qCWarning(lcUpdate, "file types different, not a rename"); + done = true; + return; + } + if (fs->type != CSYNC_FTW_TYPE_DIR && base._etag != fs->etag) { + /* File with different etag, don't do a rename, but download the file again */ + qCWarning(lcUpdate, "file etag different, not a rename"); + done = true; + return; + } + + // Record directory renames + if (fs->type == CSYNC_FTW_TYPE_DIR) { + // If the same folder was already renamed by a different entry, + // skip to the next candidate + if (ctx->renames.folder_renamed_to.count(base._path) > 0) { + qCWarning(lcUpdate, "folder already has a rename entry, skipping"); + return; + } + csync_rename_record(ctx, base._path, fs->path); + } + + qCDebug(lcUpdate, "remote rename detected based on fileid %s --> %s", base._path.constData(), fs->path.constData()); + fs->instruction = CSYNC_INSTRUCTION_EVAL_RENAME; + done = true; + }; + + if (!ctx->statedb->getFileRecordsByFileId(fs->file_id, renameCandidateProcessing)) { ctx->status_code = CSYNC_STATUS_UNSUCCESSFUL; return -1; } - if (base.isValid()) { /* tmp existing at all */ - if (base._type != fs->type) { - qCWarning(lcUpdate, "file types different is not!"); - fs->instruction = CSYNC_INSTRUCTION_NEW; - goto out; - } - qCDebug(lcUpdate, "remote rename detected based on fileid %s --> %s", base._path.constData(), fs->path.constData()); - fs->instruction = CSYNC_INSTRUCTION_EVAL_RENAME; - if (fs->type == CSYNC_FTW_TYPE_DIR) { - csync_rename_record(ctx, base._path, fs->path); - } else { - if( base._etag != fs->etag ) { - /* CSYNC_LOG(CSYNC_LOG_PRIORITY_DEBUG, "ETags are different!"); */ - /* File with different etag, don't do a rename, but download the file again */ - fs->instruction = CSYNC_INSTRUCTION_NEW; - } - } - goto out; - } else { - /* file not found in statedb */ - fs->instruction = CSYNC_INSTRUCTION_NEW; - - if (fs->type == CSYNC_FTW_TYPE_DIR && ctx->current == REMOTE_REPLICA && ctx->callbacks.checkSelectiveSyncNewFolderHook) { - if (ctx->callbacks.checkSelectiveSyncNewFolderHook(ctx->callbacks.update_callback_userdata, fs->path, fs->remotePerm)) { - return 1; - } + if (fs->instruction == CSYNC_INSTRUCTION_NEW + && fs->type == CSYNC_FTW_TYPE_DIR + && ctx->current == REMOTE_REPLICA + && ctx->callbacks.checkSelectiveSyncNewFolderHook) { + if (ctx->callbacks.checkSelectiveSyncNewFolderHook(ctx->callbacks.update_callback_userdata, fs->path, fs->remotePerm)) { + return 1; } - goto out; } + goto out; } } diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 14235a49d..e529c86a9 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -46,6 +46,7 @@ owncloud_add_test(ExcludedFiles "") owncloud_add_test(FileSystem "") owncloud_add_test(Utility "") owncloud_add_test(SyncEngine "syncenginetestutils.h") +owncloud_add_test(SyncMove "syncenginetestutils.h") owncloud_add_test(SyncFileStatusTracker "syncenginetestutils.h") owncloud_add_test(ChunkingNg "syncenginetestutils.h") owncloud_add_test(UploadReset "syncenginetestutils.h") diff --git a/test/syncenginetestutils.h b/test/syncenginetestutils.h index 376b47496..e6d4a395e 100644 --- a/test/syncenginetestutils.h +++ b/test/syncenginetestutils.h @@ -161,12 +161,15 @@ public: FileInfo(const QString &name, qint64 size) : name{name}, isDir{false}, size{size} { } FileInfo(const QString &name, qint64 size, char contentChar) : name{name}, isDir{false}, size{size}, contentChar{contentChar} { } FileInfo(const QString &name, const std::initializer_list &children) : name{name} { - QString p = path(); - for (const auto &source : children) { - auto &dest = this->children[source.name] = source; - dest.parentPath = p; - dest.fixupParentPathRecursively(); - } + for (const auto &source : children) + addChild(source); + } + + void addChild(const FileInfo &info) + { + auto &dest = this->children[info.name] = info; + dest.parentPath = path(); + dest.fixupParentPathRecursively(); } void remove(const QString &relativePath) override { @@ -952,6 +955,11 @@ private: } else { QFile f{diskChild.filePath()}; f.open(QFile::ReadOnly); + auto content = f.read(1); + if (content.size() == 0) { + qWarning() << "Empty file at:" << diskChild.filePath(); + continue; + } char contentChar = f.read(1).at(0); templateFi.children.insert(diskChild.fileName(), FileInfo{diskChild.fileName(), diskChild.size(), contentChar}); } diff --git a/test/testsyncengine.cpp b/test/testsyncengine.cpp index 591ca653f..f1ed98941 100644 --- a/test/testsyncengine.cpp +++ b/test/testsyncengine.cpp @@ -141,98 +141,6 @@ private slots: QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); } - void testRemoteChangeInMovedFolder() { - // issue #5192 - FakeFolder fakeFolder{FileInfo{ QString(), { - FileInfo { QStringLiteral("folder"), { - FileInfo{ QStringLiteral("folderA"), { { QStringLiteral("file.txt"), 400 } } }, - QStringLiteral("folderB") - } - }}}}; - - QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); - - // Edit a file in a moved directory. - fakeFolder.remoteModifier().setContents("folder/folderA/file.txt", 'a'); - fakeFolder.remoteModifier().rename("folder/folderA", "folder/folderB/folderA"); - fakeFolder.syncOnce(); - QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); - auto oldState = fakeFolder.currentLocalState(); - QVERIFY(oldState.find("folder/folderB/folderA/file.txt")); - QVERIFY(!oldState.find("folder/folderA/file.txt")); - - // This sync should not remove the file - fakeFolder.syncOnce(); - QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); - QCOMPARE(fakeFolder.currentLocalState(), oldState); - - } - - void testSelectiveSyncModevFolder() { - // issue #5224 - FakeFolder fakeFolder{FileInfo{ QString(), { - FileInfo { QStringLiteral("parentFolder"), { - FileInfo{ QStringLiteral("subFolderA"), { { QStringLiteral("fileA.txt"), 400 } } }, - FileInfo{ QStringLiteral("subFolderB"), { { QStringLiteral("fileB.txt"), 400 } } } - } - }}}}; - - QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); - auto expectedServerState = fakeFolder.currentRemoteState(); - - // Remove subFolderA with selectiveSync: - fakeFolder.syncEngine().journal()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncBlackList, - {"parentFolder/subFolderA/"}); - fakeFolder.syncEngine().journal()->avoidReadFromDbOnNextSync(QByteArrayLiteral("parentFolder/subFolderA/")); - - fakeFolder.syncOnce(); - - { - // Nothing changed on the server - QCOMPARE(fakeFolder.currentRemoteState(), expectedServerState); - // The local state should not have subFolderA - auto remoteState = fakeFolder.currentRemoteState(); - remoteState.remove("parentFolder/subFolderA"); - QCOMPARE(fakeFolder.currentLocalState(), remoteState); - } - - // Rename parentFolder on the server - fakeFolder.remoteModifier().rename("parentFolder", "parentFolderRenamed"); - expectedServerState = fakeFolder.currentRemoteState(); - fakeFolder.syncOnce(); - - { - QCOMPARE(fakeFolder.currentRemoteState(), expectedServerState); - auto remoteState = fakeFolder.currentRemoteState(); - // The subFolderA should still be there on the server. - QVERIFY(remoteState.find("parentFolderRenamed/subFolderA/fileA.txt")); - // But not on the client because of the selective sync - remoteState.remove("parentFolderRenamed/subFolderA"); - QCOMPARE(fakeFolder.currentLocalState(), remoteState); - } - - // Rename it again, locally this time. - fakeFolder.localModifier().rename("parentFolderRenamed", "parentThirdName"); - fakeFolder.syncOnce(); - - { - auto remoteState = fakeFolder.currentRemoteState(); - // The subFolderA should still be there on the server. - QVERIFY(remoteState.find("parentThirdName/subFolderA/fileA.txt")); - // But not on the client because of the selective sync - remoteState.remove("parentThirdName/subFolderA"); - QCOMPARE(fakeFolder.currentLocalState(), remoteState); - - expectedServerState = fakeFolder.currentRemoteState(); - QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &))); - fakeFolder.syncOnce(); // This sync should do nothing - QCOMPARE(completeSpy.count(), 0); - - QCOMPARE(fakeFolder.currentRemoteState(), expectedServerState); - QCOMPARE(fakeFolder.currentLocalState(), remoteState); - } - } - void testSelectiveSyncBug() { // issue owncloud/enterprise#1965: files from selective-sync ignored // folders are uploaded anyway is some circumstances. @@ -536,84 +444,6 @@ private slots: QCOMPARE(n507, 3); } - void testLocalMove() - { - FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() }; - - int nPUT = 0; - int nDELETE = 0; - fakeFolder.setServerOverride([&](QNetworkAccessManager::Operation op, const QNetworkRequest &) { - if (op == QNetworkAccessManager::PutOperation) - ++nPUT; - if (op == QNetworkAccessManager::DeleteOperation) - ++nDELETE; - return nullptr; - }); - - // For directly editing the remote checksum - FileInfo &remoteInfo = fakeFolder.remoteModifier(); - - // Simple move causing a remote rename - fakeFolder.localModifier().rename("A/a1", "A/a1m"); - QVERIFY(fakeFolder.syncOnce()); - QCOMPARE(fakeFolder.currentLocalState(), remoteInfo); - QCOMPARE(nPUT, 0); - - // Move-and-change, causing a upload and delete - fakeFolder.localModifier().rename("A/a2", "A/a2m"); - fakeFolder.localModifier().appendByte("A/a2m"); - QVERIFY(fakeFolder.syncOnce()); - QCOMPARE(fakeFolder.currentLocalState(), remoteInfo); - QCOMPARE(nPUT, 1); - QCOMPARE(nDELETE, 1); - - // Move-and-change, mtime+content only - fakeFolder.localModifier().rename("B/b1", "B/b1m"); - fakeFolder.localModifier().setContents("B/b1m", 'C'); - QVERIFY(fakeFolder.syncOnce()); - QCOMPARE(fakeFolder.currentLocalState(), remoteInfo); - QCOMPARE(nPUT, 2); - QCOMPARE(nDELETE, 2); - - // Move-and-change, size+content only - auto mtime = fakeFolder.remoteModifier().find("B/b2")->lastModified; - fakeFolder.localModifier().rename("B/b2", "B/b2m"); - fakeFolder.localModifier().appendByte("B/b2m"); - fakeFolder.localModifier().setModTime("B/b2m", mtime); - QVERIFY(fakeFolder.syncOnce()); - QCOMPARE(fakeFolder.currentLocalState(), remoteInfo); - QCOMPARE(nPUT, 3); - QCOMPARE(nDELETE, 3); - - // Move-and-change, content only -- c1 has no checksum, so we fail to detect this! - mtime = fakeFolder.remoteModifier().find("C/c1")->lastModified; - fakeFolder.localModifier().rename("C/c1", "C/c1m"); - fakeFolder.localModifier().setContents("C/c1m", 'C'); - fakeFolder.localModifier().setModTime("C/c1m", mtime); - QVERIFY(fakeFolder.syncOnce()); - QCOMPARE(nPUT, 3); - QCOMPARE(nDELETE, 3); - QVERIFY(!(fakeFolder.currentLocalState() == remoteInfo)); - - // cleanup, and upload a file that will have a checksum in the db - fakeFolder.localModifier().remove("C/c1m"); - fakeFolder.localModifier().insert("C/c3"); - QVERIFY(fakeFolder.syncOnce()); - QCOMPARE(fakeFolder.currentLocalState(), remoteInfo); - QCOMPARE(nPUT, 4); - QCOMPARE(nDELETE, 4); - - // Move-and-change, content only, this time while having a checksum - mtime = fakeFolder.remoteModifier().find("C/c3")->lastModified; - fakeFolder.localModifier().rename("C/c3", "C/c3m"); - fakeFolder.localModifier().setContents("C/c3m", 'C'); - fakeFolder.localModifier().setModTime("C/c3m", mtime); - QVERIFY(fakeFolder.syncOnce()); - QCOMPARE(nPUT, 5); - QCOMPARE(nDELETE, 5); - QCOMPARE(fakeFolder.currentLocalState(), remoteInfo); - } - // Checks whether downloads with bad checksums are accepted void testChecksumValidation() { diff --git a/test/testsyncmove.cpp b/test/testsyncmove.cpp new file mode 100644 index 000000000..11b354ad4 --- /dev/null +++ b/test/testsyncmove.cpp @@ -0,0 +1,569 @@ +/* + * This software is in the public domain, furnished "as is", without technical + * support, and with no warranty, express or implied, as to its usefulness for + * any purpose. + * + */ + +#include +#include "syncenginetestutils.h" +#include + +using namespace OCC; + +SyncFileItemPtr findItem(const QSignalSpy &spy, const QString &path) +{ + for (const QList &args : spy) { + auto item = args[0].value(); + if (item->destination() == path) + return item; + } + return SyncFileItemPtr(new SyncFileItem); +} + +bool itemSuccessful(const QSignalSpy &spy, const QString &path, const csync_instructions_e instr) +{ + auto item = findItem(spy, path); + return item->_status == SyncFileItem::Success && item->_instruction == instr; +} + +bool itemConflict(const QSignalSpy &spy, const QString &path) +{ + auto item = findItem(spy, path); + return item->_status == SyncFileItem::Conflict && item->_instruction == CSYNC_INSTRUCTION_CONFLICT; +} + +bool itemSuccessfulMove(const QSignalSpy &spy, const QString &path) +{ + return itemSuccessful(spy, path, CSYNC_INSTRUCTION_RENAME); +} + +QStringList findConflicts(const FileInfo &dir) +{ + QStringList conflicts; + for (const auto &item : dir.children) { + if (item.name.contains("conflict")) { + conflicts.append(item.path()); + } + } + return conflicts; +} + +bool expectAndWipeConflict(FileModifier &local, FileInfo state, const QString path) +{ + PathComponents pathComponents(path); + auto base = state.find(pathComponents.parentDirComponents()); + if (!base) + return false; + for (const auto &item : base->children) { + if (item.name.startsWith(pathComponents.fileName()) && item.name.contains("_conflict")) { + local.remove(item.path()); + return true; + } + } + return false; +} + +class TestSyncMove : public QObject +{ + Q_OBJECT + +private slots: + void testRemoteChangeInMovedFolder() + { + // issue #5192 + FakeFolder fakeFolder{ FileInfo{ QString(), { FileInfo{ QStringLiteral("folder"), { FileInfo{ QStringLiteral("folderA"), { { QStringLiteral("file.txt"), 400 } } }, QStringLiteral("folderB") } } } } }; + + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + + // Edit a file in a moved directory. + fakeFolder.remoteModifier().setContents("folder/folderA/file.txt", 'a'); + fakeFolder.remoteModifier().rename("folder/folderA", "folder/folderB/folderA"); + fakeFolder.syncOnce(); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + auto oldState = fakeFolder.currentLocalState(); + QVERIFY(oldState.find("folder/folderB/folderA/file.txt")); + QVERIFY(!oldState.find("folder/folderA/file.txt")); + + // This sync should not remove the file + fakeFolder.syncOnce(); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(fakeFolder.currentLocalState(), oldState); + } + + void testSelectiveSyncMovedFolder() + { + // issue #5224 + FakeFolder fakeFolder{ FileInfo{ QString(), { FileInfo{ QStringLiteral("parentFolder"), { FileInfo{ QStringLiteral("subFolderA"), { { QStringLiteral("fileA.txt"), 400 } } }, FileInfo{ QStringLiteral("subFolderB"), { { QStringLiteral("fileB.txt"), 400 } } } } } } } }; + + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + auto expectedServerState = fakeFolder.currentRemoteState(); + + // Remove subFolderA with selectiveSync: + fakeFolder.syncEngine().journal()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncBlackList, + { "parentFolder/subFolderA/" }); + fakeFolder.syncEngine().journal()->avoidReadFromDbOnNextSync(QByteArrayLiteral("parentFolder/subFolderA/")); + + fakeFolder.syncOnce(); + + { + // Nothing changed on the server + QCOMPARE(fakeFolder.currentRemoteState(), expectedServerState); + // The local state should not have subFolderA + auto remoteState = fakeFolder.currentRemoteState(); + remoteState.remove("parentFolder/subFolderA"); + QCOMPARE(fakeFolder.currentLocalState(), remoteState); + } + + // Rename parentFolder on the server + fakeFolder.remoteModifier().rename("parentFolder", "parentFolderRenamed"); + expectedServerState = fakeFolder.currentRemoteState(); + fakeFolder.syncOnce(); + + { + QCOMPARE(fakeFolder.currentRemoteState(), expectedServerState); + auto remoteState = fakeFolder.currentRemoteState(); + // The subFolderA should still be there on the server. + QVERIFY(remoteState.find("parentFolderRenamed/subFolderA/fileA.txt")); + // But not on the client because of the selective sync + remoteState.remove("parentFolderRenamed/subFolderA"); + QCOMPARE(fakeFolder.currentLocalState(), remoteState); + } + + // Rename it again, locally this time. + fakeFolder.localModifier().rename("parentFolderRenamed", "parentThirdName"); + fakeFolder.syncOnce(); + + { + auto remoteState = fakeFolder.currentRemoteState(); + // The subFolderA should still be there on the server. + QVERIFY(remoteState.find("parentThirdName/subFolderA/fileA.txt")); + // But not on the client because of the selective sync + remoteState.remove("parentThirdName/subFolderA"); + QCOMPARE(fakeFolder.currentLocalState(), remoteState); + + expectedServerState = fakeFolder.currentRemoteState(); + QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &))); + fakeFolder.syncOnce(); // This sync should do nothing + QCOMPARE(completeSpy.count(), 0); + + QCOMPARE(fakeFolder.currentRemoteState(), expectedServerState); + QCOMPARE(fakeFolder.currentLocalState(), remoteState); + } + } + + void testLocalMoveDetection() + { + FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() }; + + int nPUT = 0; + int nDELETE = 0; + fakeFolder.setServerOverride([&](QNetworkAccessManager::Operation op, const QNetworkRequest &) { + if (op == QNetworkAccessManager::PutOperation) + ++nPUT; + if (op == QNetworkAccessManager::DeleteOperation) + ++nDELETE; + return nullptr; + }); + + // For directly editing the remote checksum + FileInfo &remoteInfo = fakeFolder.remoteModifier(); + + // Simple move causing a remote rename + fakeFolder.localModifier().rename("A/a1", "A/a1m"); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), remoteInfo); + QCOMPARE(nPUT, 0); + + // Move-and-change, causing a upload and delete + fakeFolder.localModifier().rename("A/a2", "A/a2m"); + fakeFolder.localModifier().appendByte("A/a2m"); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), remoteInfo); + QCOMPARE(nPUT, 1); + QCOMPARE(nDELETE, 1); + + // Move-and-change, mtime+content only + fakeFolder.localModifier().rename("B/b1", "B/b1m"); + fakeFolder.localModifier().setContents("B/b1m", 'C'); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), remoteInfo); + QCOMPARE(nPUT, 2); + QCOMPARE(nDELETE, 2); + + // Move-and-change, size+content only + auto mtime = fakeFolder.remoteModifier().find("B/b2")->lastModified; + fakeFolder.localModifier().rename("B/b2", "B/b2m"); + fakeFolder.localModifier().appendByte("B/b2m"); + fakeFolder.localModifier().setModTime("B/b2m", mtime); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), remoteInfo); + QCOMPARE(nPUT, 3); + QCOMPARE(nDELETE, 3); + + // Move-and-change, content only -- c1 has no checksum, so we fail to detect this! + // NOTE: This is an expected failure. + mtime = fakeFolder.remoteModifier().find("C/c1")->lastModified; + fakeFolder.localModifier().rename("C/c1", "C/c1m"); + fakeFolder.localModifier().setContents("C/c1m", 'C'); + fakeFolder.localModifier().setModTime("C/c1m", mtime); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(nPUT, 3); + QCOMPARE(nDELETE, 3); + QVERIFY(!(fakeFolder.currentLocalState() == remoteInfo)); + + // cleanup, and upload a file that will have a checksum in the db + fakeFolder.localModifier().remove("C/c1m"); + fakeFolder.localModifier().insert("C/c3"); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), remoteInfo); + QCOMPARE(nPUT, 4); + QCOMPARE(nDELETE, 4); + + // Move-and-change, content only, this time while having a checksum + mtime = fakeFolder.remoteModifier().find("C/c3")->lastModified; + fakeFolder.localModifier().rename("C/c3", "C/c3m"); + fakeFolder.localModifier().setContents("C/c3m", 'C'); + fakeFolder.localModifier().setModTime("C/c3m", mtime); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(nPUT, 5); + QCOMPARE(nDELETE, 5); + QCOMPARE(fakeFolder.currentLocalState(), remoteInfo); + } + + // If the same folder is shared in two different ways with the same + // user, the target user will see duplicate file ids. We need to make + // sure the move detection and sync still do the right thing in that + // case. + void testDuplicateFileId() + { + FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() }; + auto &remote = fakeFolder.remoteModifier(); + + remote.mkdir("A/W"); + remote.insert("A/W/w1"); + remote.mkdir("A/Q"); + + // Duplicate every entry in A under O/A + remote.mkdir("O"); + remote.children["O"].addChild(remote.children["A"]); + + // This already checks that the rename detection doesn't get + // horribly confused if we add new files that have the same + // fileid as existing ones + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + + int nGET = 0; + fakeFolder.setServerOverride([&](QNetworkAccessManager::Operation op, const QNetworkRequest &) { + if (op == QNetworkAccessManager::GetOperation) + ++nGET; + return nullptr; + }); + + // Try a remote file move + remote.rename("A/a1", "A/W/a1m"); + remote.rename("O/A/a1", "O/A/W/a1m"); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(nGET, 0); + + // And a remote directory move + remote.rename("A/W", "A/Q/W"); + remote.rename("O/A/W", "O/A/Q/W"); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(nGET, 0); + + // Partial file removal (in practice, A/a2 may be moved to O/a2, but we don't care) + remote.rename("O/A/a2", "O/a2"); + remote.remove("A/a2"); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(nGET, 0); + + // Local change plus remote move at the same time + fakeFolder.localModifier().appendByte("O/a2"); + remote.rename("O/a2", "O/a3"); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(nGET, 1); + } + + void testMovePropagation() + { + FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() }; + auto &local = fakeFolder.localModifier(); + auto &remote = fakeFolder.remoteModifier(); + + int nGET = 0; + int nPUT = 0; + int nMOVE = 0; + int nDELETE = 0; + fakeFolder.setServerOverride([&](QNetworkAccessManager::Operation op, const QNetworkRequest &req) { + if (op == QNetworkAccessManager::GetOperation) + ++nGET; + if (op == QNetworkAccessManager::PutOperation) + ++nPUT; + if (op == QNetworkAccessManager::DeleteOperation) + ++nDELETE; + if (req.attribute(QNetworkRequest::CustomVerbAttribute) == "MOVE") + ++nMOVE; + return nullptr; + }); + auto resetCounters = [&]() { + nGET = nPUT = nMOVE = nDELETE = 0; + }; + + // Move + { + resetCounters(); + local.rename("A/a1", "A/a1m"); + remote.rename("B/b1", "B/b1m"); + QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &))); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(nGET, 0); + QCOMPARE(nPUT, 0); + QCOMPARE(nMOVE, 1); + QCOMPARE(nDELETE, 0); + QVERIFY(itemSuccessfulMove(completeSpy, "A/a1m")); + QVERIFY(itemSuccessfulMove(completeSpy, "B/b1m")); + } + + // Touch+Move on same side + resetCounters(); + local.rename("A/a2", "A/a2m"); + local.setContents("A/a2m", 'A'); + remote.rename("B/b2", "B/b2m"); + remote.setContents("B/b2m", 'A'); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(nGET, 1); + QCOMPARE(nPUT, 1); + QCOMPARE(nMOVE, 0); + QCOMPARE(nDELETE, 1); + QCOMPARE(remote.find("A/a2m")->contentChar, 'A'); + QCOMPARE(remote.find("B/b2m")->contentChar, 'A'); + + // Touch+Move on opposite sides + resetCounters(); + local.rename("A/a1m", "A/a1m2"); + remote.setContents("A/a1m", 'B'); + remote.rename("B/b1m", "B/b1m2"); + local.setContents("B/b1m", 'B'); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(nGET, 2); + QCOMPARE(nPUT, 2); + QCOMPARE(nMOVE, 0); + QCOMPARE(nDELETE, 0); + // All these files existing afterwards is debatable. Should we propagate + // the rename in one direction and grab the new contents in the other? + // Currently there's no propagation job that would do that, and this does + // at least not lose data. + QCOMPARE(remote.find("A/a1m")->contentChar, 'B'); + QCOMPARE(remote.find("B/b1m")->contentChar, 'B'); + QCOMPARE(remote.find("A/a1m2")->contentChar, 'W'); + QCOMPARE(remote.find("B/b1m2")->contentChar, 'W'); + + // Touch+create on one side, move on the other + { + resetCounters(); + local.appendByte("A/a1m"); + local.insert("A/a1mt"); + remote.rename("A/a1m", "A/a1mt"); + remote.appendByte("B/b1m"); + remote.insert("B/b1mt"); + local.rename("B/b1m", "B/b1mt"); + QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &))); + QVERIFY(fakeFolder.syncOnce()); + QVERIFY(expectAndWipeConflict(local, fakeFolder.currentLocalState(), "A/a1mt")); + QVERIFY(expectAndWipeConflict(local, fakeFolder.currentLocalState(), "B/b1mt")); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(nGET, 3); + QCOMPARE(nPUT, 1); + QCOMPARE(nMOVE, 0); + QCOMPARE(nDELETE, 0); + QVERIFY(itemSuccessful(completeSpy, "A/a1m", CSYNC_INSTRUCTION_NEW)); + QVERIFY(itemSuccessful(completeSpy, "B/b1m", CSYNC_INSTRUCTION_NEW)); + QVERIFY(itemConflict(completeSpy, "A/a1mt")); + QVERIFY(itemConflict(completeSpy, "B/b1mt")); + } + + // Create new on one side, move to new on the other + { + resetCounters(); + local.insert("A/a1N", 13); + remote.rename("A/a1mt", "A/a1N"); + remote.insert("B/b1N", 13); + local.rename("B/b1mt", "B/b1N"); + QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &))); + QVERIFY(fakeFolder.syncOnce()); + QVERIFY(expectAndWipeConflict(local, fakeFolder.currentLocalState(), "A/a1N")); + QVERIFY(expectAndWipeConflict(local, fakeFolder.currentLocalState(), "B/b1N")); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(nGET, 2); + QCOMPARE(nPUT, 0); + QCOMPARE(nMOVE, 0); + QCOMPARE(nDELETE, 1); + QVERIFY(itemSuccessful(completeSpy, "A/a1mt", CSYNC_INSTRUCTION_REMOVE)); + QVERIFY(itemSuccessful(completeSpy, "B/b1mt", CSYNC_INSTRUCTION_REMOVE)); + QVERIFY(itemConflict(completeSpy, "A/a1N")); + QVERIFY(itemConflict(completeSpy, "B/b1N")); + } + + // Local move, remote move + resetCounters(); + local.rename("C/c1", "C/c1mL"); + remote.rename("C/c1", "C/c1mR"); + QVERIFY(fakeFolder.syncOnce()); + // end up with both files + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(nGET, 1); + QCOMPARE(nPUT, 1); + QCOMPARE(nMOVE, 0); + QCOMPARE(nDELETE, 0); + + // Rename/rename conflict on a folder + resetCounters(); + remote.rename("C", "CMR"); + local.rename("C", "CML"); + QVERIFY(fakeFolder.syncOnce()); + // End up with both folders + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(nGET, 3); // 3 files in C + QCOMPARE(nPUT, 3); + QCOMPARE(nMOVE, 0); + QCOMPARE(nDELETE, 0); + + // Folder move + { + resetCounters(); + local.rename("A", "AM"); + remote.rename("B", "BM"); + QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &))); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(nGET, 0); + QCOMPARE(nPUT, 0); + QCOMPARE(nMOVE, 1); + QCOMPARE(nDELETE, 0); + QVERIFY(itemSuccessfulMove(completeSpy, "AM")); + QVERIFY(itemSuccessfulMove(completeSpy, "BM")); + } + + // Folder move with contents touched on the same side + { + resetCounters(); + local.setContents("AM/a2m", 'C'); + local.rename("AM", "A2"); + remote.setContents("BM/b2m", 'C'); + remote.rename("BM", "B2"); + QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &))); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(nGET, 1); + QCOMPARE(nPUT, 1); + QCOMPARE(nMOVE, 1); + QCOMPARE(nDELETE, 0); + QCOMPARE(remote.find("A2/a2m")->contentChar, 'C'); + QCOMPARE(remote.find("B2/b2m")->contentChar, 'C'); + QVERIFY(itemSuccessfulMove(completeSpy, "A2")); + QVERIFY(itemSuccessfulMove(completeSpy, "B2")); + } + + // Folder rename with contents touched on the other tree + resetCounters(); + remote.setContents("A2/a2m", 'D'); + // setContents alone may not produce updated mtime if the test is fast + // and since we don't use checksums here, that matters. + remote.appendByte("A2/a2m"); + local.rename("A2", "A3"); + local.setContents("B2/b2m", 'D'); + local.appendByte("B2/b2m"); + remote.rename("B2", "B3"); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(nGET, 1); + QCOMPARE(nPUT, 1); + QCOMPARE(nMOVE, 1); + QCOMPARE(nDELETE, 0); + QCOMPARE(remote.find("A3/a2m")->contentChar, 'D'); + QCOMPARE(remote.find("B3/b2m")->contentChar, 'D'); + + // Folder rename with contents touched on both ends + resetCounters(); + remote.setContents("A3/a2m", 'R'); + remote.appendByte("A3/a2m"); + local.setContents("A3/a2m", 'L'); + local.appendByte("A3/a2m"); + local.appendByte("A3/a2m"); + local.rename("A3", "A4"); + remote.setContents("B3/b2m", 'R'); + remote.appendByte("B3/b2m"); + local.setContents("B3/b2m", 'L'); + local.appendByte("B3/b2m"); + local.appendByte("B3/b2m"); + remote.rename("B3", "B4"); + QVERIFY(fakeFolder.syncOnce()); + auto currentLocal = fakeFolder.currentLocalState(); + auto conflicts = findConflicts(currentLocal.children["A4"]); + QCOMPARE(conflicts.size(), 1); + for (auto c : conflicts) { + QCOMPARE(currentLocal.find(c)->contentChar, 'L'); + local.remove(c); + } + conflicts = findConflicts(currentLocal.children["B4"]); + QCOMPARE(conflicts.size(), 1); + for (auto c : conflicts) { + QCOMPARE(currentLocal.find(c)->contentChar, 'L'); + local.remove(c); + } + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(nGET, 2); + QCOMPARE(nPUT, 0); + QCOMPARE(nMOVE, 1); + QCOMPARE(nDELETE, 0); + QCOMPARE(remote.find("A4/a2m")->contentChar, 'R'); + QCOMPARE(remote.find("B4/b2m")->contentChar, 'R'); + + // Rename a folder and rename the contents at the same time + resetCounters(); + local.rename("A4/a2m", "A4/a2m2"); + local.rename("A4", "A5"); + remote.rename("B4/b2m", "B4/b2m2"); + remote.rename("B4", "B5"); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(nGET, 0); + QCOMPARE(nPUT, 0); + QCOMPARE(nMOVE, 2); + QCOMPARE(nDELETE, 0); + } + + // Check interaction of moves with file type changes + void testMoveAndTypeChange() + { + FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() }; + auto &local = fakeFolder.localModifier(); + auto &remote = fakeFolder.remoteModifier(); + + // Touch on one side, rename and mkdir on the other + { + local.appendByte("A/a1"); + remote.rename("A/a1", "A/a1mq"); + remote.mkdir("A/a1"); + remote.appendByte("B/b1"); + local.rename("B/b1", "B/b1mq"); + local.mkdir("B/b1"); + QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &))); + QVERIFY(fakeFolder.syncOnce()); + // BUG: This doesn't behave right + //QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + } + } +}; + +QTEST_GUILESS_MAIN(TestSyncMove) +#include "testsyncmove.moc" From c6bd3ab31ac5303baf6358c4af685e4e2537d010 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 17 Oct 2017 17:29:48 +0200 Subject: [PATCH 35/45] Sharing: remove the ShareManager::_jobContinuation It is growing indefinitively in case of error, causing a leak. Use a labda instead to pass the capture --- src/gui/sharemanager.cpp | 76 +++++++++++++--------------------------- src/gui/sharemanager.h | 3 -- 2 files changed, 24 insertions(+), 55 deletions(-) diff --git a/src/gui/sharemanager.cpp b/src/gui/sharemanager.cpp index 95a976451..4ff75d3c5 100644 --- a/src/gui/sharemanager.cpp +++ b/src/gui/sharemanager.cpp @@ -21,17 +21,6 @@ #include #include -namespace { -struct CreateShare -{ - QString path; - OCC::Share::ShareType shareType; - QString shareWith; - OCC::Share::Permissions permissions; -}; -} // anonymous namespace -Q_DECLARE_METATYPE(CreateShare) - namespace OCC { Share::Share(AccountPtr account, @@ -267,51 +256,34 @@ void ShareManager::createShare(const QString &path, const Share::Permissions permissions) { auto job = new OcsShareJob(_account); - - // Store values that we need for creating this share later. - CreateShare continuation; - continuation.path = path; - continuation.shareType = shareType; - continuation.shareWith = shareWith; - continuation.permissions = permissions; - _jobContinuation[job] = QVariant::fromValue(continuation); - - connect(job, &OcsShareJob::shareJobFinished, this, &ShareManager::slotCreateShare); connect(job, &OcsJob::ocsError, this, &ShareManager::slotOcsError); + connect(job, &OcsShareJob::shareJobFinished, this, + [=](const QJsonDocument &reply) { + // Find existing share permissions (if this was shared with us) + Share::Permissions existingPermissions = SharePermissionDefault; + foreach (const QJsonValue &element, reply.object()["ocs"].toObject()["data"].toArray()) { + auto map = element.toObject(); + if (map["file_target"] == path) + existingPermissions = Share::Permissions(map["permissions"].toInt()); + } + + // Limit the permissions we request for a share to the ones the item + // was shared with initially. + auto perm = permissions; + if (permissions == SharePermissionDefault) { + perm = existingPermissions; + } else if (existingPermissions != SharePermissionDefault) { + perm &= existingPermissions; + } + + OcsShareJob *job = new OcsShareJob(_account); + connect(job, &OcsShareJob::shareJobFinished, this, &ShareManager::slotShareCreated); + connect(job, &OcsJob::ocsError, this, &ShareManager::slotOcsError); + job->createShare(path, shareType, shareWith, permissions); + }); job->getSharedWithMe(); } -void ShareManager::slotCreateShare(const QJsonDocument &reply) -{ - if (!_jobContinuation.contains(sender())) - return; - - CreateShare cont = _jobContinuation[sender()].value(); - if (cont.path.isEmpty()) - return; - _jobContinuation.remove(sender()); - - // Find existing share permissions (if this was shared with us) - Share::Permissions existingPermissions = SharePermissionDefault; - foreach (const QJsonValue &element, reply.object()["ocs"].toObject()["data"].toArray()) { - auto map = element.toObject(); - if (map["file_target"] == cont.path) - existingPermissions = Share::Permissions(map["permissions"].toInt()); - } - - // Limit the permissions we request for a share to the ones the item - // was shared with initially. - if (cont.permissions == SharePermissionDefault) { - cont.permissions = existingPermissions; - } else if (existingPermissions != SharePermissionDefault) { - cont.permissions &= existingPermissions; - } - - OcsShareJob *job = new OcsShareJob(_account); - connect(job, &OcsShareJob::shareJobFinished, this, &ShareManager::slotShareCreated); - connect(job, &OcsJob::ocsError, this, &ShareManager::slotOcsError); - job->createShare(cont.path, cont.shareType, cont.shareWith, cont.permissions); -} void ShareManager::slotShareCreated(const QJsonDocument &reply) { diff --git a/src/gui/sharemanager.h b/src/gui/sharemanager.h index 8c361b732..971b8810b 100644 --- a/src/gui/sharemanager.h +++ b/src/gui/sharemanager.h @@ -293,13 +293,10 @@ private slots: void slotLinkShareCreated(const QJsonDocument &reply); void slotShareCreated(const QJsonDocument &reply); void slotOcsError(int statusCode, const QString &message); - void slotCreateShare(const QJsonDocument &reply); - private: QSharedPointer parseLinkShare(const QJsonObject &data); QSharedPointer parseShare(const QJsonObject &data); - QMap _jobContinuation; AccountPtr _account; }; } From 35d28294cd838027d9de0c5fc009329f5386d2b4 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Mon, 23 Oct 2017 14:03:45 +0200 Subject: [PATCH 36/45] SyncEngine: remove SyncEngine::syncItemDiscovered It is unused. --- src/libsync/syncengine.cpp | 3 --- src/libsync/syncengine.h | 2 -- 2 files changed, 5 deletions(-) diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index a54df4024..c66f5d444 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -571,7 +571,6 @@ int SyncEngine::treewalkFile(csync_file_stat_t *file, csync_file_stat_t *other, dir = SyncFileItem::None; // For directories, metadata-only updates will be done after all their files are propagated. if (!isDirectory) { - emit syncItemDiscovered(*item); // Update the database now already: New remote fileid or Etag or RemotePerm // Or for files that were detected as "resolved conflict". @@ -683,8 +682,6 @@ int SyncEngine::treewalkFile(csync_file_stat_t *file, csync_file_stat_t *other, } _syncItemMap.insert(key, item); - - emit syncItemDiscovered(*item); return re; } diff --git a/src/libsync/syncengine.h b/src/libsync/syncengine.h index 44c8ca7a2..9e3723c0d 100644 --- a/src/libsync/syncengine.h +++ b/src/libsync/syncengine.h @@ -105,8 +105,6 @@ signals: // During update, before reconcile void rootEtag(QString); - // before actual syncing (after update+reconcile) for each item - void syncItemDiscovered(const SyncFileItem &); // after the above signals. with the items that actually need propagating void aboutToPropagate(SyncFileItemVector &); From ee63b36ed366fee84ae4d8b72dac91e1c7db7146 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Mon, 23 Oct 2017 16:35:35 +0200 Subject: [PATCH 37/45] SyncFileStatusTracker: Detect changed in the shared flag ... even if the file is not changed. We get an UPDATE_METADATA in that case, so make sure we let the SyncFileStatusTracker know about it. That means we need to filter out UPDATE_METADATA in the other listeners of this signal. Issue #6098 --- src/gui/folder.cpp | 5 +++++ src/libsync/syncengine.cpp | 3 +++ test/testsyncengine.cpp | 2 +- test/testsyncfilestatustracker.cpp | 3 +++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp index c61c4ea68..8b7dcd149 100644 --- a/src/gui/folder.cpp +++ b/src/gui/folder.cpp @@ -841,6 +841,11 @@ void Folder::slotTransmissionProgress(const ProgressInfo &pi) // a item is completed: count the errors and forward to the ProgressDispatcher void Folder::slotItemCompleted(const SyncFileItemPtr &item) { + if (item->_instruction == CSYNC_INSTRUCTION_NONE || item->_instruction == CSYNC_INSTRUCTION_UPDATE_METADATA) { + // We only care about the updates that deserve to be shown in the UI + return; + } + // add new directories or remove gone away dirs to the watcher if (item->isDirectory() && item->_instruction == CSYNC_INSTRUCTION_NEW) { FolderMan::instance()->addMonitorPath(alias(), path() + item->_file); diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index c66f5d444..112587641 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -607,6 +607,9 @@ int SyncEngine::treewalkFile(csync_file_stat_t *file, csync_file_stat_t *other, } _journal->setFileRecordMetadata(item->toSyncJournalFileRecordWithInode(filePath)); + + // This might have changed the shared flag, so we must notify SyncFileStatusTracker for example + emit itemCompleted(item); } else { // The local tree is walked first and doesn't have all the info from the server. // Update only outdated data from the disk. diff --git a/test/testsyncengine.cpp b/test/testsyncengine.cpp index f1ed98941..be51d8bd7 100644 --- a/test/testsyncengine.cpp +++ b/test/testsyncengine.cpp @@ -16,7 +16,7 @@ bool itemDidComplete(const QSignalSpy &spy, const QString &path) for(const QList &args : spy) { auto item = args[0].value(); if (item->destination() == path) - return true; + return item->_instruction != CSYNC_INSTRUCTION_NONE && item->_instruction != CSYNC_INSTRUCTION_UPDATE_METADATA; } return false; } diff --git a/test/testsyncfilestatustracker.cpp b/test/testsyncfilestatustracker.cpp index ed828857d..bbc80f386 100644 --- a/test/testsyncfilestatustracker.cpp +++ b/test/testsyncfilestatustracker.cpp @@ -436,6 +436,8 @@ private slots: fakeFolder.remoteModifier().appendByte("S/s1"); fakeFolder.remoteModifier().insert("B/b3"); fakeFolder.remoteModifier().find("B/b3")->extraDavProperties = "0"; + fakeFolder.remoteModifier().find("A/a1")->isShared = true; // becomes shared + fakeFolder.remoteModifier().find("A", true); // change the etags of the parent StatusPushSpy statusSpy(fakeFolder.syncEngine()); @@ -458,6 +460,7 @@ private slots: QCOMPARE(statusSpy.statusOf("S/s1"), sharedUpToDateStatus); QCOMPARE(statusSpy.statusOf("B/b1").shared(), false); QCOMPARE(statusSpy.statusOf("B/b3"), sharedUpToDateStatus); + QCOMPARE(statusSpy.statusOf("A/a1"), sharedUpToDateStatus); QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); } From c36043a175b33fd957ff5c8b97f6eb58f8f3ab3a Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Mon, 23 Oct 2017 19:08:46 +0200 Subject: [PATCH 38/45] ShareDialog: trigger a sync for folder affected by a change of sharing This allow the sync engine to query the new metadata and update the overlay icons. Note: we also need to invalidate the etags because the server does not change the etag of parent directories that see their share-types changed. Issue #6098 --- src/gui/sharemanager.cpp | 38 ++++++++++++++++++++++++++++++++++++++ src/gui/sharemanager.h | 2 ++ 2 files changed, 40 insertions(+) diff --git a/src/gui/sharemanager.cpp b/src/gui/sharemanager.cpp index 4ff75d3c5..9901b47cf 100644 --- a/src/gui/sharemanager.cpp +++ b/src/gui/sharemanager.cpp @@ -15,6 +15,8 @@ #include "sharemanager.h" #include "ocssharejob.h" #include "account.h" +#include "folderman.h" +#include "accountstate.h" #include #include @@ -23,6 +25,31 @@ namespace OCC { +/** + * When a share is modified, we need to tell the folders so they can adjust overlay icons + */ +static void updateFolder(const AccountPtr &account, const QString &path) +{ + foreach (Folder *f, FolderMan::instance()->map()) { + if (f->accountState()->account() != account) + continue; + auto folderPath = f->remotePath(); + if (path.startsWith(folderPath) && (path == folderPath || folderPath.endsWith('/') || path[folderPath.size()] == '/')) { + // Workaround the fact that the server does not invalidate the etags of parent directories + // when something is shared. + auto relative = path.midRef(folderPath.size()); + if (relative.startsWith('/')) + relative = relative.mid(1); + f->journalDb()->avoidReadFromDbOnNextSync(relative.toString()); + + // Schedule a sync so it can update the remote permission flag and let the socket API + // know about the shared icon. + f->scheduleThisFolderSoon(); + } + } +} + + Share::Share(AccountPtr account, const QString &id, const QString &path, @@ -43,6 +70,11 @@ AccountPtr Share::account() const return _account; } +QString Share::path() const +{ + return _path; +} + QString Share::getId() const { return _id; @@ -88,6 +120,8 @@ void Share::deleteShare() void Share::slotDeleted() { emit shareDeleted(); + + updateFolder(_account, _path); } void Share::slotOcsError(int statusCode, const QString &message) @@ -247,6 +281,8 @@ void ShareManager::slotLinkShareCreated(const QJsonDocument &reply) QSharedPointer share(parseLinkShare(data)); emit linkShareCreated(share); + + updateFolder(_account, share->path()); } @@ -292,6 +328,8 @@ void ShareManager::slotShareCreated(const QJsonDocument &reply) QSharedPointer share(parseShare(data)); emit shareCreated(share); + + updateFolder(_account, share->path()); } void ShareManager::fetchShares(const QString &path) diff --git a/src/gui/sharemanager.h b/src/gui/sharemanager.h index 971b8810b..2a08babe3 100644 --- a/src/gui/sharemanager.h +++ b/src/gui/sharemanager.h @@ -64,6 +64,8 @@ public: */ AccountPtr account() const; + QString path() const; + /* * Get the id */ From 56e38e6f80a1c59679620f91b304f85677583220 Mon Sep 17 00:00:00 2001 From: Jocelyn Turcotte Date: Wed, 4 Oct 2017 13:49:42 +0200 Subject: [PATCH 39/45] Windows: Add sync folders to Explorer's navigation pane This is only the navigation pane, the SyncRootManager entries aren't handled yet. This follows the instructions from: https://msdn.microsoft.com/en-us/library/windows/desktop/dn889934%28v=vs.85%29.aspx Issue #5295 --- CMakeLists.txt | 3 + src/common/utility.h | 13 +++ src/common/utility_win.cpp | 167 ++++++++++++++++++++++++++++++- src/gui/CMakeLists.txt | 1 + src/gui/accountsettings.cpp | 3 + src/gui/folder.cpp | 7 ++ src/gui/folder.h | 6 ++ src/gui/folderman.cpp | 6 ++ src/gui/folderman.h | 3 + src/gui/navigationpanehelper.cpp | 133 ++++++++++++++++++++++++ src/gui/navigationpanehelper.h | 42 ++++++++ src/gui/owncloudsetupwizard.cpp | 2 + test/CMakeLists.txt | 1 + 13 files changed, 385 insertions(+), 2 deletions(-) create mode 100644 src/gui/navigationpanehelper.cpp create mode 100644 src/gui/navigationpanehelper.h diff --git a/CMakeLists.txt b/CMakeLists.txt index c2540f689..b61aa0ff8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -213,6 +213,9 @@ add_definitions(-D_UNICODE) if( WIN32 ) add_definitions( -D__USE_MINGW_ANSI_STDIO=1 ) add_definitions( -DNOMINMAX ) +# Get APIs from from Vista onwards. +add_definitions( -D_WIN32_WINNT=0x0600) +add_definitions( -DWINVER=0x0600) endif( WIN32 ) include(QtVersionAbstraction) diff --git a/src/common/utility.h b/src/common/utility.h index 9fc0a72d7..1f63302b7 100644 --- a/src/common/utility.h +++ b/src/common/utility.h @@ -28,8 +28,13 @@ #include #include #include +#include #include +#ifdef Q_OS_WIN +#include +#endif + class QSettings; namespace OCC { @@ -187,6 +192,14 @@ namespace Utility { * Experimental! Real feature planned for 2.5. */ OCSYNC_EXPORT bool shouldUploadConflictFiles(); + +#ifdef Q_OS_WIN + OCSYNC_EXPORT QVariant registryGetKeyValue(HKEY hRootKey, const QString &subKey, const QString &valueName); + OCSYNC_EXPORT bool registrySetKeyValue(HKEY hRootKey, const QString &subKey, const QString &valueName, DWORD type, const QVariant &value); + OCSYNC_EXPORT bool registryDeleteKeyTree(HKEY hRootKey, const QString &subKey); + OCSYNC_EXPORT bool registryDeleteKeyValue(HKEY hRootKey, const QString &subKey, const QString &valueName); + OCSYNC_EXPORT bool registryWalkSubKeys(HKEY hRootKey, const QString &subKey, const std::function &callback); +#endif } /** @} */ // \addtogroup diff --git a/src/common/utility_win.cpp b/src/common/utility_win.cpp index 5374b0986..e3e4234e8 100644 --- a/src/common/utility_win.cpp +++ b/src/common/utility_win.cpp @@ -16,8 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#define _WIN32_WINNT 0x0600 -#define WINVER 0x0600 +#include "asserts.h" #include #include #include @@ -93,4 +92,168 @@ static inline bool hasDarkSystray_private() return true; } +QVariant Utility::registryGetKeyValue(HKEY hRootKey, const QString &subKey, const QString &valueName) +{ + QVariant value; + + HKEY hKey; + + REGSAM sam = KEY_READ | KEY_WOW64_64KEY; + LONG result = RegOpenKeyEx(hRootKey, reinterpret_cast(subKey.utf16()), 0, sam, &hKey); + ASSERT(result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND); + if (result != ERROR_SUCCESS) + return value; + + DWORD type = 0, sizeInBytes = 0; + result = RegQueryValueEx(hKey, reinterpret_cast(valueName.utf16()), 0, &type, nullptr, &sizeInBytes); + ASSERT(result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND); + if (result == ERROR_SUCCESS) { + switch (type) { + case REG_DWORD: + DWORD dword; + Q_ASSERT(sizeInBytes == sizeof(dword)); + if (RegQueryValueEx(hKey, reinterpret_cast(valueName.utf16()), 0, &type, reinterpret_cast(&dword), &sizeInBytes) == ERROR_SUCCESS) { + value = int(dword); + } + break; + case REG_EXPAND_SZ: + case REG_SZ: { + QString string; + string.resize(sizeInBytes / sizeof(QChar)); + result = RegQueryValueEx(hKey, reinterpret_cast(valueName.utf16()), 0, &type, reinterpret_cast(string.data()), &sizeInBytes); + + if (result == ERROR_SUCCESS) { + int newCharSize = sizeInBytes / sizeof(QChar); + // From the doc: + // If the data has the REG_SZ, REG_MULTI_SZ or REG_EXPAND_SZ type, the string may not have been stored with + // the proper terminating null characters. Therefore, even if the function returns ERROR_SUCCESS, + // the application should ensure that the string is properly terminated before using it; otherwise, it may overwrite a buffer. + if (string.at(newCharSize - 1) == QChar('\0')) + string.resize(newCharSize - 1); + value = string; + } + break; + } + default: + Q_UNREACHABLE(); + } + } + ASSERT(result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND); + + RegCloseKey(hKey); + return value; +} + +bool Utility::registrySetKeyValue(HKEY hRootKey, const QString &subKey, const QString &valueName, DWORD type, const QVariant &value) +{ + HKEY hKey; + // KEY_WOW64_64KEY is necessary because CLSIDs are "Redirected and reflected only for CLSIDs that do not specify InprocServer32 or InprocHandler32." + // https://msdn.microsoft.com/en-us/library/windows/desktop/aa384253%28v=vs.85%29.aspx#redirected__shared__and_reflected_keys_under_wow64 + // This shouldn't be an issue in our case since we use shell32.dll as InprocServer32, so we could write those registry keys for both 32 and 64bit. + // FIXME: Not doing so at the moment means that explorer will show the cloud provider, but 32bit processes' open dialogs (like the ownCloud client itself) won't show it. + REGSAM sam = KEY_WRITE | KEY_WOW64_64KEY; + LONG result = RegCreateKeyEx(hRootKey, reinterpret_cast(subKey.utf16()), 0, nullptr, 0, sam, nullptr, &hKey, nullptr); + ASSERT(result == ERROR_SUCCESS); + if (result != ERROR_SUCCESS) + return false; + + result = -1; + switch (type) { + case REG_DWORD: { + DWORD dword = value.toInt(); + result = RegSetValueEx(hKey, reinterpret_cast(valueName.utf16()), 0, type, reinterpret_cast(&dword), sizeof(dword)); + break; + } + case REG_EXPAND_SZ: + case REG_SZ: { + QString string = value.toString(); + result = RegSetValueEx(hKey, reinterpret_cast(valueName.utf16()), 0, type, reinterpret_cast(string.constData()), (string.size() + 1) * sizeof(QChar)); + break; + } + default: + Q_UNREACHABLE(); + } + ASSERT(result == ERROR_SUCCESS); + + RegCloseKey(hKey); + return result == ERROR_SUCCESS; +} + +bool Utility::registryDeleteKeyTree(HKEY hRootKey, const QString &subKey) +{ + HKEY hKey; + REGSAM sam = DELETE | KEY_ENUMERATE_SUB_KEYS | KEY_QUERY_VALUE | KEY_SET_VALUE | KEY_WOW64_64KEY; + LONG result = RegOpenKeyEx(hRootKey, reinterpret_cast(subKey.utf16()), 0, sam, &hKey); + ASSERT(result == ERROR_SUCCESS); + if (result != ERROR_SUCCESS) + return false; + + result = RegDeleteTree(hKey, nullptr); + RegCloseKey(hKey); + ASSERT(result == ERROR_SUCCESS); + + result |= RegDeleteKeyEx(hRootKey, reinterpret_cast(subKey.utf16()), sam, 0); + ASSERT(result == ERROR_SUCCESS); + + return result == ERROR_SUCCESS; +} + +bool Utility::registryDeleteKeyValue(HKEY hRootKey, const QString &subKey, const QString &valueName) +{ + HKEY hKey; + REGSAM sam = KEY_WRITE | KEY_WOW64_64KEY; + LONG result = RegOpenKeyEx(hRootKey, reinterpret_cast(subKey.utf16()), 0, sam, &hKey); + ASSERT(result == ERROR_SUCCESS); + if (result != ERROR_SUCCESS) + return false; + + result = RegDeleteValue(hKey, reinterpret_cast(valueName.utf16())); + ASSERT(result == ERROR_SUCCESS); + + RegCloseKey(hKey); + return result == ERROR_SUCCESS; +} + +bool Utility::registryWalkSubKeys(HKEY hRootKey, const QString &subKey, const std::function &callback) +{ + HKEY hKey; + REGSAM sam = KEY_READ | KEY_WOW64_64KEY; + LONG result = RegOpenKeyEx(hRootKey, reinterpret_cast(subKey.utf16()), 0, sam, &hKey); + ASSERT(result == ERROR_SUCCESS); + if (result != ERROR_SUCCESS) + return false; + + DWORD maxSubKeyNameSize; + // Get the largest keyname size once instead of relying each call on ERROR_MORE_DATA. + result = RegQueryInfoKey(hKey, nullptr, nullptr, nullptr, nullptr, &maxSubKeyNameSize, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr); + ASSERT(result == ERROR_SUCCESS); + if (result != ERROR_SUCCESS) { + RegCloseKey(hKey); + return false; + } + + QString subKeyName; + subKeyName.reserve(maxSubKeyNameSize + 1); + + DWORD retCode = ERROR_SUCCESS; + for (DWORD i = 0; retCode == ERROR_SUCCESS; ++i) { + Q_ASSERT(unsigned(subKeyName.capacity()) > maxSubKeyNameSize); + // Make the previously reserved capacity official again. + subKeyName.resize(subKeyName.capacity()); + DWORD subKeyNameSize = subKeyName.size(); + retCode = RegEnumKeyEx(hKey, i, reinterpret_cast(subKeyName.data()), &subKeyNameSize, nullptr, nullptr, nullptr, nullptr); + + ASSERT(result == ERROR_SUCCESS || retCode == ERROR_NO_MORE_ITEMS); + if (retCode == ERROR_SUCCESS) { + // subKeyNameSize excludes the trailing \0 + subKeyName.resize(subKeyNameSize); + // Pass only the sub keyname, not the full path. + callback(hKey, subKeyName); + } + } + + RegCloseKey(hKey); + return retCode != ERROR_NO_MORE_ITEMS; +} + } // namespace OCC diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index 2ae957355..cee4cb457 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -57,6 +57,7 @@ set(client_SRCS ignorelisteditor.cpp lockwatcher.cpp logbrowser.cpp + navigationpanehelper.cpp networksettings.cpp ocsjob.cpp ocssharejob.cpp diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp index 23b287244..fd5a67148 100644 --- a/src/gui/accountsettings.cpp +++ b/src/gui/accountsettings.cpp @@ -401,6 +401,9 @@ void AccountSettings::slotFolderWizardAccepted() */ definition.ignoreHiddenFiles = folderMan->ignoreHiddenFiles(); + // FIXME: Make this depend on a checkbox in settings. + definition.navigationPaneClsid = QUuid::createUuid(); + auto selectiveSyncBlackList = folderWizard->property("selectiveSyncBlackList").toStringList(); folderMan->setSyncEnabled(true); diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp index 176a49323..544da3bf0 100644 --- a/src/gui/folder.cpp +++ b/src/gui/folder.cpp @@ -1075,6 +1075,12 @@ void FolderDefinition::save(QSettings &settings, const FolderDefinition &folder) settings.setValue(QLatin1String("targetPath"), folder.targetPath); settings.setValue(QLatin1String("paused"), folder.paused); settings.setValue(QLatin1String("ignoreHiddenFiles"), folder.ignoreHiddenFiles); + + // Happens only on Windows when the explorer integration is enabled. + if (!folder.navigationPaneClsid.isNull()) + settings.setValue(QLatin1String("navigationPaneClsid"), folder.navigationPaneClsid); + else + settings.remove(QLatin1String("navigationPaneClsid")); settings.endGroup(); } @@ -1088,6 +1094,7 @@ bool FolderDefinition::load(QSettings &settings, const QString &alias, folder->targetPath = settings.value(QLatin1String("targetPath")).toString(); folder->paused = settings.value(QLatin1String("paused")).toBool(); folder->ignoreHiddenFiles = settings.value(QLatin1String("ignoreHiddenFiles"), QVariant(true)).toBool(); + folder->navigationPaneClsid = settings.value(QLatin1String("navigationPaneClsid")).toUuid(); settings.endGroup(); // Old settings can contain paths with native separators. In the rest of the diff --git a/src/gui/folder.h b/src/gui/folder.h index 2e7f2a7c0..ac4954a06 100644 --- a/src/gui/folder.h +++ b/src/gui/folder.h @@ -27,6 +27,7 @@ #include #include +#include #include class QThread; @@ -64,6 +65,8 @@ public: bool paused; /// whether the folder syncs hidden files bool ignoreHiddenFiles; + /// The CLSID where this folder appears in registry for the Explorer navigation pane entry. + QUuid navigationPaneClsid; /// Saves the folder definition, creating a new settings group. static void save(QSettings &settings, const FolderDefinition &folder); @@ -135,6 +138,9 @@ public: */ QString remotePath() const; + void setNavigationPaneClsid(const QUuid &clsid) { _definition.navigationPaneClsid = clsid; } + QUuid navigationPaneClsid() const { return _definition.navigationPaneClsid; } + /** * remote folder path with server url */ diff --git a/src/gui/folderman.cpp b/src/gui/folderman.cpp index 517d5dc99..d4dd22035 100644 --- a/src/gui/folderman.cpp +++ b/src/gui/folderman.cpp @@ -49,6 +49,7 @@ FolderMan::FolderMan(QObject *parent) , _currentSyncFolder(0) , _syncEnabled(true) , _lockWatcher(new LockWatcher) + , _navigationPaneHelper(this) , _appRestartRequired(false) { ASSERT(!_instance); @@ -894,6 +895,9 @@ Folder *FolderMan::addFolder(AccountState *accountState, const FolderDefinition emit folderSyncStateChange(folder); emit folderListChanged(_folderMap); } + + _navigationPaneHelper.scheduleUpdateCloudStorageRegistry(); + return folder; } @@ -1003,6 +1007,8 @@ void FolderMan::removeFolder(Folder *f) delete f; } + _navigationPaneHelper.scheduleUpdateCloudStorageRegistry(); + emit folderListChanged(_folderMap); } diff --git a/src/gui/folderman.h b/src/gui/folderman.h index 002fb9b45..415118689 100644 --- a/src/gui/folderman.h +++ b/src/gui/folderman.h @@ -22,6 +22,7 @@ #include "folder.h" #include "folderwatcher.h" +#include "navigationpanehelper.h" #include "syncfileitem.h" class TestFolderMan; @@ -115,6 +116,7 @@ public: static QString unescapeAlias(const QString &); SocketApi *socketApi(); + NavigationPaneHelper &navigationPaneHelper() { return _navigationPaneHelper; } /** * Check if @a path is a valid path for a new folder considering the already sync'ed items. @@ -315,6 +317,7 @@ private: QTimer _startScheduledSyncTimer; QScopedPointer _socketApi; + NavigationPaneHelper _navigationPaneHelper; bool _appRestartRequired; diff --git a/src/gui/navigationpanehelper.cpp b/src/gui/navigationpanehelper.cpp new file mode 100644 index 000000000..c717727e9 --- /dev/null +++ b/src/gui/navigationpanehelper.cpp @@ -0,0 +1,133 @@ +/* + * Copyright (C) by Jocelyn Turcotte + * + * 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. + */ + +#include "navigationpanehelper.h" +#include "accountmanager.h" +#include "folderman.h" + +#include +#include + +namespace OCC { + +Q_LOGGING_CATEGORY(lcNavPane, "gui.folder.navigationpane", QtInfoMsg) + +NavigationPaneHelper::NavigationPaneHelper(FolderMan *folderMan) + : _folderMan(folderMan) +{ + _updateCloudStorageRegistryTimer.setSingleShot(true); + connect(&_updateCloudStorageRegistryTimer, &QTimer::timeout, this, &NavigationPaneHelper::updateCloudStorageRegistry); +} + +void NavigationPaneHelper::scheduleUpdateCloudStorageRegistry() +{ + // Schedule the update to happen a bit later to avoid doing the update multiple times in a row. + if (!_updateCloudStorageRegistryTimer.isActive()) + _updateCloudStorageRegistryTimer.start(500); +} + +void NavigationPaneHelper::updateCloudStorageRegistry() +{ + // Start by looking at every registered namespace extension for the sidebar, and look for an "ApplicationName" value + // that matches ours when we saved. + QVector entriesToRemove; +#ifdef Q_OS_WIN + Utility::registryWalkSubKeys( + HKEY_CURRENT_USER, + QStringLiteral("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Desktop\\NameSpace"), + [&entriesToRemove](HKEY key, const QString &subKey) { + QVariant appName = Utility::registryGetKeyValue(key, subKey, QStringLiteral("ApplicationName")); + if (appName.toString() == QLatin1String(APPLICATION_NAME)) { + QUuid clsid{ subKey }; + Q_ASSERT(!clsid.isNull()); + entriesToRemove.append(clsid); + } + }); +#endif + + // 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()) { + 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() % "Software\\Classes\\CLSID\\" % clsidStr; + QString namespacePath = QString() % "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Desktop\\NameSpace\\" % clsidStr; + + QString 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()->displayName(); + QString iconPath = QDir::toNativeSeparators(qApp->applicationFilePath()); + QString targetFolderPath = QDir::toNativeSeparators(folder->cleanPath()); + + qCInfo(lcNavPane) << "Explorer Cloud storage provider: saving path" << targetFolderPath << "to CLSID" << clsidStr; +#ifdef Q_OS_WIN + // Steps taken from: https://msdn.microsoft.com/en-us/library/windows/desktop/dn889934%28v=vs.85%29.aspx + // Step 1: Add your CLSID and name your extension + Utility::registrySetKeyValue(HKEY_CURRENT_USER, clsidPath, QString(), REG_SZ, title); + // Step 2: Set the image for your icon + Utility::registrySetKeyValue(HKEY_CURRENT_USER, clsidPath + QStringLiteral("\\DefaultIcon"), QString(), REG_SZ, iconPath); + // Step 3: Add your extension to the Navigation Pane and make it visible + Utility::registrySetKeyValue(HKEY_CURRENT_USER, clsidPath, QStringLiteral("System.IsPinnedToNameSpaceTree"), REG_DWORD, 0x1); + // Step 4: Set the location for your extension in the Navigation Pane + Utility::registrySetKeyValue(HKEY_CURRENT_USER, clsidPath, QStringLiteral("SortOrderIndex"), REG_DWORD, 0x41); + // Step 5: Provide the dll that hosts your extension. + Utility::registrySetKeyValue(HKEY_CURRENT_USER, clsidPath + QStringLiteral("\\InProcServer32"), QString(), REG_EXPAND_SZ, QStringLiteral("%systemroot%\\system32\\shell32.dll")); + // Step 6: Define the instance object + // Indicate that your namespace extension should function like other file folder structures in File Explorer. + Utility::registrySetKeyValue(HKEY_CURRENT_USER, clsidPath + QStringLiteral("\\Instance"), QStringLiteral("CLSID"), REG_SZ, QStringLiteral("{0E5AAE11-A475-4c5b-AB00-C66DE400274E}")); + // Step 7: Provide the file system attributes of the target folder + Utility::registrySetKeyValue(HKEY_CURRENT_USER, clsidPath + QStringLiteral("\\Instance\\InitPropertyBag"), QStringLiteral("Attributes"), REG_DWORD, 0x11); + // Step 8: Set the path for the sync root + Utility::registrySetKeyValue(HKEY_CURRENT_USER, clsidPath + QStringLiteral("\\Instance\\InitPropertyBag"), QStringLiteral("TargetFolderPath"), REG_SZ, targetFolderPath); + // Step 9: Set appropriate shell flags + Utility::registrySetKeyValue(HKEY_CURRENT_USER, clsidPath + QStringLiteral("\\ShellFolder"), QStringLiteral("FolderValueFlags"), REG_DWORD, 0x28); + // Step 10: Set the appropriate flags to control your shell behavior + Utility::registrySetKeyValue(HKEY_CURRENT_USER, clsidPath + QStringLiteral("\\ShellFolder"), QStringLiteral("Attributes"), REG_DWORD, 0xF080004D); + // Step 11: Register your extension in the namespace root + Utility::registrySetKeyValue(HKEY_CURRENT_USER, namespacePath, QString(), REG_SZ, title); + // Step 12: Hide your extension from the Desktop + Utility::registrySetKeyValue(HKEY_CURRENT_USER, QStringLiteral("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\HideDesktopIcons\\NewStartPanel"), clsidStr, REG_DWORD, 0x1); + + // For us, to later be able to iterate and find our own namespace entries and associated CLSID. + // Use the macro instead of the theme to make sure it matches with the uninstaller. + Utility::registrySetKeyValue(HKEY_CURRENT_USER, namespacePath, QStringLiteral("ApplicationName"), REG_SZ, QLatin1String(APPLICATION_NAME)); +#else + // This code path should only occur on Windows (the config will be false, and the checkbox invisible on other platforms). + // Add runtime checks rather than #ifdefing out the whole code to help catch breakages when developing on other platforms. + Q_ASSERT(false); +#endif + } + } + + // Then remove anything that isn't in our folder list anymore. + foreach (auto &clsid, entriesToRemove) { + QString clsidStr = clsid.toString(); + QString clsidPath = QString() % "Software\\Classes\\CLSID\\" % clsidStr; + QString namespacePath = QString() % "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Desktop\\NameSpace\\" % clsidStr; + + qCInfo(lcNavPane) << "Explorer Cloud storage provider: now unused, removing own CLSID" << clsidStr; +#ifdef Q_OS_WIN + Utility::registryDeleteKeyTree(HKEY_CURRENT_USER, clsidPath); + Utility::registryDeleteKeyTree(HKEY_CURRENT_USER, namespacePath); + Utility::registryDeleteKeyValue(HKEY_CURRENT_USER, QStringLiteral("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\HideDesktopIcons\\NewStartPanel"), clsidStr); +#endif + } +} + +} // namespace OCC diff --git a/src/gui/navigationpanehelper.h b/src/gui/navigationpanehelper.h new file mode 100644 index 000000000..62e75dd1e --- /dev/null +++ b/src/gui/navigationpanehelper.h @@ -0,0 +1,42 @@ +/* + * Copyright (C) by Jocelyn Turcotte + * + * 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. + */ + + +#ifndef NAVIGATIONPANEHELPER_H +#define NAVIGATIONPANEHELPER_H + +#include +#include + +namespace OCC { + +class FolderMan; + +class NavigationPaneHelper : public QObject +{ + Q_OBJECT +public: + NavigationPaneHelper(FolderMan *folderMan); + + void scheduleUpdateCloudStorageRegistry(); + +private: + void updateCloudStorageRegistry(); + + FolderMan *_folderMan; + QTimer _updateCloudStorageRegistryTimer; +}; + +} // namespace OCC +#endif // NAVIGATIONPANEHELPER_H diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp index 86a0c19ad..1e189d976 100644 --- a/src/gui/owncloudsetupwizard.cpp +++ b/src/gui/owncloudsetupwizard.cpp @@ -579,6 +579,8 @@ void OwncloudSetupWizard::slotAssistantFinished(int result) folderDefinition.localPath = localFolder; folderDefinition.targetPath = FolderDefinition::prepareTargetPath(_remoteFolder); folderDefinition.ignoreHiddenFiles = folderMan->ignoreHiddenFiles(); + // FIXME: Make this depend on a checkbox in settings. + folderDefinition.navigationPaneClsid = QUuid::createUuid(); auto f = folderMan->addFolder(account, folderDefinition); if (f) { diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 14235a49d..7327212ae 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -65,6 +65,7 @@ list(APPEND FolderMan_SRC ../src/gui/accountstate.cpp ) list(APPEND FolderMan_SRC ../src/gui/syncrunfilelog.cpp ) list(APPEND FolderMan_SRC ../src/gui/lockwatcher.cpp ) list(APPEND FolderMan_SRC ../src/gui/guiutility.cpp ) +list(APPEND FolderMan_SRC ../src/gui/navigationpanehelper.cpp ) list(APPEND FolderMan_SRC ${FolderWatcher_SRC}) list(APPEND FolderMan_SRC stub.cpp ) owncloud_add_test(FolderMan "${FolderMan_SRC}") From 10c695143899fe3b6bc4def0c26766042aa67960 Mon Sep 17 00:00:00 2001 From: Jocelyn Turcotte Date: Thu, 19 Oct 2017 16:37:51 +0200 Subject: [PATCH 40/45] Windows: Add a setting to enable/disable the explorer navigation pane integration Issue #5295 --- src/gui/accountsettings.cpp | 4 ++-- src/gui/generalsettings.cpp | 17 +++++++++++++++++ src/gui/generalsettings.h | 1 + src/gui/generalsettings.ui | 11 +++++++++++ src/gui/navigationpanehelper.cpp | 18 ++++++++++++++++++ src/gui/navigationpanehelper.h | 4 ++++ src/gui/owncloudsetupwizard.cpp | 4 ++-- src/libsync/configfile.cpp | 21 +++++++++++++++++++++ src/libsync/configfile.h | 3 +++ 9 files changed, 79 insertions(+), 4 deletions(-) diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp index fd5a67148..d1f6e1346 100644 --- a/src/gui/accountsettings.cpp +++ b/src/gui/accountsettings.cpp @@ -401,8 +401,8 @@ void AccountSettings::slotFolderWizardAccepted() */ definition.ignoreHiddenFiles = folderMan->ignoreHiddenFiles(); - // FIXME: Make this depend on a checkbox in settings. - definition.navigationPaneClsid = QUuid::createUuid(); + if (folderMan->navigationPaneHelper().showInExplorerNavigationPane()) + definition.navigationPaneClsid = QUuid::createUuid(); auto selectiveSyncBlackList = folderWizard->property("selectiveSyncBlackList").toStringList(); diff --git a/src/gui/generalsettings.cpp b/src/gui/generalsettings.cpp index 91d3a0c1f..69baaa84b 100644 --- a/src/gui/generalsettings.cpp +++ b/src/gui/generalsettings.cpp @@ -44,6 +44,7 @@ GeneralSettings::GeneralSettings(QWidget *parent) connect(_ui->desktopNotificationsCheckBox, &QAbstractButton::toggled, this, &GeneralSettings::slotToggleOptionalDesktopNotifications); + connect(_ui->showInExplorerNavigationPaneCheckBox, &QAbstractButton::toggled, this, &GeneralSettings::slotShowInExplorerNavigationPane); _ui->autostartCheckBox->setChecked(Utility::hasLaunchOnStartup(Theme::instance()->appName())); connect(_ui->autostartCheckBox, &QAbstractButton::toggled, this, &GeneralSettings::slotToggleLaunchOnStartup); @@ -73,6 +74,13 @@ GeneralSettings::GeneralSettings(QWidget *parent) _ui->crashreporterCheckBox->setVisible(false); #endif + // Hide on non-Windows, or WindowsVersion < 10. + // The condition should match the default value of ConfigFile::showInExplorerNavigationPane. +#ifdef Q_OS_WIN + if (QSysInfo::windowsVersion() < QSysInfo::WV_WINDOWS10) +#endif + _ui->showInExplorerNavigationPaneCheckBox->setVisible(false); + /* Set the left contents margin of the layout to zero to make the checkboxes * align properly vertically , fixes bug #3758 */ @@ -107,6 +115,7 @@ void GeneralSettings::loadMiscSettings() ConfigFile cfgFile; _ui->monoIconsCheckBox->setChecked(cfgFile.monoIcons()); _ui->desktopNotificationsCheckBox->setChecked(cfgFile.optionalDesktopNotifications()); + _ui->showInExplorerNavigationPaneCheckBox->setChecked(cfgFile.showInExplorerNavigationPane()); _ui->crashreporterCheckBox->setChecked(cfgFile.crashReporter()); auto newFolderLimit = cfgFile.newBigFolderSizeLimit(); _ui->newFolderLimitCheckBox->setChecked(newFolderLimit.first); @@ -162,6 +171,14 @@ void GeneralSettings::slotToggleOptionalDesktopNotifications(bool enable) cfgFile.setOptionalDesktopNotifications(enable); } +void GeneralSettings::slotShowInExplorerNavigationPane(bool checked) +{ + ConfigFile cfgFile; + cfgFile.setShowInExplorerNavigationPane(checked); + // Now update the registry with the change. + FolderMan::instance()->navigationPaneHelper().setShowInExplorerNavigationPane(checked); +} + void GeneralSettings::slotIgnoreFilesEditor() { if (_ignoreEditor.isNull()) { diff --git a/src/gui/generalsettings.h b/src/gui/generalsettings.h index 360e65167..4e92337e6 100644 --- a/src/gui/generalsettings.h +++ b/src/gui/generalsettings.h @@ -43,6 +43,7 @@ private slots: void saveMiscSettings(); void slotToggleLaunchOnStartup(bool); void slotToggleOptionalDesktopNotifications(bool); + void slotShowInExplorerNavigationPane(bool); void slotUpdateInfo(); void slotIgnoreFilesEditor(); void loadMiscSettings(); diff --git a/src/gui/generalsettings.ui b/src/gui/generalsettings.ui index 43d006fae..aacce23c2 100644 --- a/src/gui/generalsettings.ui +++ b/src/gui/generalsettings.ui @@ -218,6 +218,17 @@ + + + + + + Show sync folders in &Explorer's Navigation Pane + + + + + diff --git a/src/gui/navigationpanehelper.cpp b/src/gui/navigationpanehelper.cpp index c717727e9..47458bc4a 100644 --- a/src/gui/navigationpanehelper.cpp +++ b/src/gui/navigationpanehelper.cpp @@ -14,6 +14,7 @@ #include "navigationpanehelper.h" #include "accountmanager.h" +#include "configfile.h" #include "folderman.h" #include @@ -26,10 +27,27 @@ Q_LOGGING_CATEGORY(lcNavPane, "gui.folder.navigationpane", QtInfoMsg) NavigationPaneHelper::NavigationPaneHelper(FolderMan *folderMan) : _folderMan(folderMan) { + ConfigFile cfg; + _showInExplorerNavigationPane = cfg.showInExplorerNavigationPane(); + _updateCloudStorageRegistryTimer.setSingleShot(true); connect(&_updateCloudStorageRegistryTimer, &QTimer::timeout, this, &NavigationPaneHelper::updateCloudStorageRegistry); } +void NavigationPaneHelper::setShowInExplorerNavigationPane(bool 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()) + folder->setNavigationPaneClsid(show ? QUuid::createUuid() : QUuid()); + + scheduleUpdateCloudStorageRegistry(); +} + void NavigationPaneHelper::scheduleUpdateCloudStorageRegistry() { // Schedule the update to happen a bit later to avoid doing the update multiple times in a row. diff --git a/src/gui/navigationpanehelper.h b/src/gui/navigationpanehelper.h index 62e75dd1e..bb2510ddf 100644 --- a/src/gui/navigationpanehelper.h +++ b/src/gui/navigationpanehelper.h @@ -29,12 +29,16 @@ class NavigationPaneHelper : public QObject public: NavigationPaneHelper(FolderMan *folderMan); + bool showInExplorerNavigationPane() const { return _showInExplorerNavigationPane; } + void setShowInExplorerNavigationPane(bool show); + void scheduleUpdateCloudStorageRegistry(); private: void updateCloudStorageRegistry(); FolderMan *_folderMan; + bool _showInExplorerNavigationPane; QTimer _updateCloudStorageRegistryTimer; }; diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp index 1e189d976..ac57424e5 100644 --- a/src/gui/owncloudsetupwizard.cpp +++ b/src/gui/owncloudsetupwizard.cpp @@ -579,8 +579,8 @@ void OwncloudSetupWizard::slotAssistantFinished(int result) folderDefinition.localPath = localFolder; folderDefinition.targetPath = FolderDefinition::prepareTargetPath(_remoteFolder); folderDefinition.ignoreHiddenFiles = folderMan->ignoreHiddenFiles(); - // FIXME: Make this depend on a checkbox in settings. - folderDefinition.navigationPaneClsid = QUuid::createUuid(); + if (folderMan->navigationPaneHelper().showInExplorerNavigationPane()) + folderDefinition.navigationPaneClsid = QUuid::createUuid(); auto f = folderMan->addFolder(account, folderDefinition); if (f) { diff --git a/src/libsync/configfile.cpp b/src/libsync/configfile.cpp index dc7f31d25..6cb320a52 100644 --- a/src/libsync/configfile.cpp +++ b/src/libsync/configfile.cpp @@ -52,6 +52,7 @@ static const char monoIconsC[] = "monoIcons"; static const char promptDeleteC[] = "promptDeleteAllFiles"; static const char crashReporterC[] = "crashReporter"; static const char optionalDesktopNoficationsC[] = "optionalDesktopNotifications"; +static const char showInExplorerNavigationPaneC[] = "showInExplorerNavigationPane"; static const char skipUpdateCheckC[] = "skipUpdateCheck"; static const char updateCheckIntervalC[] = "updateCheckInterval"; static const char geometryC[] = "geometry"; @@ -124,6 +125,26 @@ bool ConfigFile::optionalDesktopNotifications() const return settings.value(QLatin1String(optionalDesktopNoficationsC), true).toBool(); } +bool ConfigFile::showInExplorerNavigationPane() const +{ + const bool defaultValue = +#ifdef Q_OS_WIN + QSysInfo::windowsVersion() >= QSysInfo::WV_WINDOWS10 +#else + false +#endif + ; + QSettings settings(configFile(), QSettings::IniFormat); + return settings.value(QLatin1String(showInExplorerNavigationPaneC), defaultValue).toBool(); +} + +void ConfigFile::setShowInExplorerNavigationPane(bool show) +{ + QSettings settings(configFile(), QSettings::IniFormat); + settings.setValue(QLatin1String(showInExplorerNavigationPaneC), show); + settings.sync(); +} + int ConfigFile::timeout() const { QSettings settings(configFile(), QSettings::IniFormat); diff --git a/src/libsync/configfile.h b/src/libsync/configfile.h index 4ef698623..27c015e8f 100644 --- a/src/libsync/configfile.h +++ b/src/libsync/configfile.h @@ -123,6 +123,9 @@ public: bool optionalDesktopNotifications() const; void setOptionalDesktopNotifications(bool show); + bool showInExplorerNavigationPane() const; + void setShowInExplorerNavigationPane(bool show); + int timeout() const; quint64 chunkSize() const; quint64 maxChunkSize() const; From d9f646831035b786c14a78688503610364b17b99 Mon Sep 17 00:00:00 2001 From: Jocelyn Turcotte Date: Fri, 20 Oct 2017 18:58:47 +0200 Subject: [PATCH 41/45] Windows: Remove navigation pane entries when uninstalling Issue #5295 --- cmake/modules/NSIS.template.in | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/cmake/modules/NSIS.template.in b/cmake/modules/NSIS.template.in index e281b511f..7c32b729f 100644 --- a/cmake/modules/NSIS.template.in +++ b/cmake/modules/NSIS.template.in @@ -603,6 +603,35 @@ Section Uninstall Abort $UNINSTALL_ABORT owncloud_installed: + ; Delete Navigation Pane entries added for Windows 10. + ; On 64bit Windows, the client will be writing to the 64bit registry. + ${If} ${RunningX64} + SetRegView 64 + ${EndIf} + StrCpy $0 0 + loop: + ; Look at every registered explorer namespace for HKCU and check if it was added by our application + ; (we write to a custom "ApplicationName" value there). + EnumRegKey $1 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace" $0 + StrCmp $1 "" done + + ReadRegStr $R0 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\$1" "ApplicationName" + StrCmp $R0 ${APPLICATION_NAME} deleteClsid + ; Increment the index when not deleting the enumerated key. + IntOp $0 $0 + 1 + goto loop + + deleteClsid: + DetailPrint "Removing Navigation Pane CLSID $1" + ; Should match FolderMan::updateCloudStorageRegistry + DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\$1" + DeleteRegKey HKCU "Software\Classes\CLSID\$1" + DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel" $1 + goto loop + done: + ; Go back to the 32bit registry. + SetRegView lastused + ;Delete registry keys. DeleteRegValue HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionBuild" DeleteRegValue HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionMajor" From 15af5878b61b73200c306d07aa78a044ca997db7 Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Wed, 25 Oct 2017 02:21:52 +0200 Subject: [PATCH 42/45] [tx-robot] updated from transifex --- mirall.desktop.in | 3 ++ translations/client_ca.ts | 84 ++++++++++++++++++------------------ translations/client_cs.ts | 84 ++++++++++++++++++------------------ translations/client_de.ts | 84 ++++++++++++++++++------------------ translations/client_el.ts | 84 ++++++++++++++++++------------------ translations/client_en.ts | 84 ++++++++++++++++++------------------ translations/client_es.ts | 84 ++++++++++++++++++------------------ translations/client_es_AR.ts | 84 ++++++++++++++++++------------------ translations/client_et.ts | 84 ++++++++++++++++++------------------ translations/client_eu.ts | 84 ++++++++++++++++++------------------ translations/client_fa.ts | 84 ++++++++++++++++++------------------ translations/client_fi.ts | 84 ++++++++++++++++++------------------ translations/client_fr.ts | 84 ++++++++++++++++++------------------ translations/client_gl.ts | 84 ++++++++++++++++++------------------ translations/client_hu.ts | 84 ++++++++++++++++++------------------ translations/client_it.ts | 84 ++++++++++++++++++------------------ translations/client_ja.ts | 84 ++++++++++++++++++------------------ translations/client_nb_NO.ts | 84 ++++++++++++++++++------------------ translations/client_nl.ts | 84 ++++++++++++++++++------------------ translations/client_pl.ts | 84 ++++++++++++++++++------------------ translations/client_pt.ts | 84 ++++++++++++++++++------------------ translations/client_pt_BR.ts | 84 ++++++++++++++++++------------------ translations/client_ru.ts | 84 ++++++++++++++++++------------------ translations/client_sk.ts | 84 ++++++++++++++++++------------------ translations/client_sl.ts | 84 ++++++++++++++++++------------------ translations/client_sr.ts | 84 ++++++++++++++++++------------------ translations/client_sv.ts | 84 ++++++++++++++++++------------------ translations/client_th.ts | 84 ++++++++++++++++++------------------ translations/client_tr.ts | 84 ++++++++++++++++++------------------ translations/client_uk.ts | 84 ++++++++++++++++++------------------ translations/client_zh_CN.ts | 84 ++++++++++++++++++------------------ translations/client_zh_TW.ts | 84 ++++++++++++++++++------------------ 32 files changed, 1305 insertions(+), 1302 deletions(-) diff --git a/mirall.desktop.in b/mirall.desktop.in index c54f11e7a..684ae8a2c 100644 --- a/mirall.desktop.in +++ b/mirall.desktop.in @@ -243,6 +243,9 @@ X-GNOME-Autostart-Delay=3 # Translations +# Translations + + # Translations Comment[oc]=@APPLICATION_NAME@ sincronizacion del client GenericName[oc]=Dorsièr de Sincronizacion diff --git a/translations/client_ca.ts b/translations/client_ca.ts index 83cf89439..d7806f684 100644 --- a/translations/client_ca.ts +++ b/translations/client_ca.ts @@ -746,26 +746,26 @@ Consulteu el registre per obtenir més informació. No s'ha pogut llegir el fitxer d'exclusió del sistema - + A new folder larger than %1 MB has been added: %2. S'ha afegit una carpeta de més de %1 MB: %2. - + A folder from an external storage has been added. S'ha afegit una carpeta d'una font d'emmagatzematge extern. - + Please go in the settings to select it if you wish to download it. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -773,46 +773,46 @@ If you decide to delete the files, they will be unavailable to you, unless you a - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - + Remove All Files? Esborra tots els fitxers? - + Remove all files Esborra tots els fitxers - + Keep files Mantén els fitxers - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? - + Backup detected Copia de seguretat detectada - + Normal Synchronisation Sincronització normal - + Keep Local Files as Conflict Manté els fitxers locals com a conflicte @@ -1914,144 +1914,144 @@ No és aconsellada usar-la. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">S'ha connectat correctament amb %1: %2 versió %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Ha fallat la connexió amb %1 a %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. S'ha esgotat el temps d'espera mentres es conectava a %1 a les %2. - + Trying to connect to %1 at %2... Intentant connectar amb %1 a %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. - + There was an invalid response to an authenticated webdav request - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. El servidor ha prohibit l'accés. Per verificar que teniu permisos, <a href="%1">cliqueu aquí</a> per accedir al servei amb el vostre navegador. - + Invalid URL URL incorrecte - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> La carpeta local %1 ja existeix, s'està configurant per sincronitzar.<br/><br/> - + Creating local sync folder %1... S'està creant la carpeta de sincronització local %1... - + ok correcte - + failed. ha fallat. - + Could not create local folder %1 No s'ha pogut crear la carpeta local %1 - + No remote folder specified! No heu especificat cap carpeta remota! - + Error: %1 Error: %1 - + creating folder on ownCloud: %1 creant la carpeta a ownCloud: %1 - + Remote folder %1 created successfully. La carpeta remota %1 s'ha creat correctament. - + The remote folder %1 already exists. Connecting it for syncing. La carpeta remota %1 ja existeix. S'hi està connectant per sincronitzar-les. - - + + The folder creation resulted in HTTP error code %1 La creació de la carpeta ha resultat en el codi d'error HTTP %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Ha fallat la creació de la carpeta perquè les credencials proporcionades són incorrectes!<br/>Aneu enrera i comproveu les credencials.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">La creació de la carpeta remota ha fallat, probablement perquè les credencials facilitades són incorrectes.</font><br/>Comproveu les vostres credencials.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. La creació de la carpeta remota %1 ha fallat amb l'error <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. S'ha establert una connexió de sincronització des de %1 a la carpeta remota %2. - + Successfully connected to %1! Connectat amb èxit a %1! - + Connection to %1 could not be established. Please check again. No s'ha pogut establir la connexió amb %1. Comproveu-ho de nou. - + Folder rename failed Ha fallat en canviar el nom de la carpeta - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. No es pot esborrar i restaurar la carpeta perquè una carpeta o un fitxer de dins està obert en un altre programa. Tanqueu la carpeta o el fitxer i intenteu-ho de nou o cancel·leu la configuració. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>la carpeta de sincronització %1 s'ha creat correctament!</b></font> diff --git a/translations/client_cs.ts b/translations/client_cs.ts index cfb6b5d5e..cf22fdb2e 100644 --- a/translations/client_cs.ts +++ b/translations/client_cs.ts @@ -744,25 +744,25 @@ Nezdařilo se přečtení systémového exclude souboru - + A new folder larger than %1 MB has been added: %2. Nová složka větší než %1 MB byla přidána: %2. - + A folder from an external storage has been added. Byla přidána složka z externího úložiště. - + Please go in the settings to select it if you wish to download it. Pokud to chcete stáhnout, běžte do nastavení a vyberte to. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -772,7 +772,7 @@ Tyto soubory budou smazány i ve vaší místní synchronizované složce a nebu Rozhodnete-li se soubory smazat, budou vám nedostupné, nejste-li jejich vlastníkem. - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. @@ -781,22 +781,22 @@ Jste si jisti, že chcete tyto akce synchronizovat se serverem? Pokud to byl omyl a chcete si soubory ponechat, budou opět synchronizovány ze serveru. - + Remove All Files? Odstranit všechny soubory? - + Remove all files Odstranit všechny soubory - + Keep files Ponechat soubory - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? @@ -805,17 +805,17 @@ Toto může být způsobeno obnovením zálohy na straně serveru. Pokračováním v synchronizaci způsobí přepsání všech vašich souborů staršími soubory z dřívějšího stavu. Přejete si ponechat své místní nejaktuálnější soubory jako konfliktní soubory? - + Backup detected Záloha nalezena - + Normal Synchronisation Normální synchronizace - + Keep Local Files as Conflict Ponechat místní soubory jako konflikt @@ -1917,144 +1917,144 @@ Nedoporučuje se jí používat. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Úspěšně připojeno k %1: %2 verze %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Selhalo spojení s %1 v %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Vypršení časového limitu při pokusu o připojení k %1 na %2. - + Trying to connect to %1 at %2... Pokouším se připojit k %1 na %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Ověřený požadavek na server byl přesměrován na '%1'. URL je špatně, server není správně nakonfigurován. - + There was an invalid response to an authenticated webdav request Byla obdržena nesprávná odpověď na ověřený webdav požadavek - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Přístup zamítnut serverem. Pro ověření správných přístupových práv <a href="%1">klikněte sem</a> a otevřete službu ve svém prohlížeči. - + Invalid URL Neplatná URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Místní synchronizovaný adresář %1 již existuje, nastavuji jej pro synchronizaci.<br/><br/> - + Creating local sync folder %1... Vytvářím místní adresář pro synchronizaci %1... - + ok OK - + failed. selhalo. - + Could not create local folder %1 Nelze vytvořit místní adresář %1 - + No remote folder specified! Není nastaven žádný vzdálený adresář! - + Error: %1 Chyba: %1 - + creating folder on ownCloud: %1 vytvářím adresář na ownCloudu: %1 - + Remote folder %1 created successfully. Vzdálený adresář %1 byl úspěšně vytvořen. - + The remote folder %1 already exists. Connecting it for syncing. Vzdálený adresář %1 již existuje. Spojuji jej pro synchronizaci. - - + + The folder creation resulted in HTTP error code %1 Vytvoření adresáře selhalo s HTTP chybou %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Vytvoření vzdáleného adresáře selhalo, pravděpodobně z důvodu neplatných přihlašovacích údajů.<br/>Vraťte se prosím zpět a zkontrolujte je.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Vytvoření vzdáleného adresáře selhalo, pravděpodobně z důvodu neplatných přihlašovacích údajů.</font><br/>Vraťte se prosím zpět a zkontrolujte je.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Vytváření vzdáleného adresáře %1 selhalo s chybou <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Bylo nastaveno synchronizované spojení z %1 do vzdáleného adresáře %2. - + Successfully connected to %1! Úspěšně spojeno s %1. - + Connection to %1 could not be established. Please check again. Spojení s %1 nelze navázat. Prosím zkuste to znovu. - + Folder rename failed Přejmenování adresáře selhalo - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Nelze odstranit a zazálohovat adresář, protože adresář nebo soubor v něm je otevřen v jiném programu. Prosím zavřete adresář nebo soubor a zkuste znovu nebo zrušte akci. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Místní synchronizovaný adresář %1 byl úspěšně vytvořen!</b></font> diff --git a/translations/client_de.ts b/translations/client_de.ts index b50b90063..71e42cd5a 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -744,26 +744,26 @@ Systemeigene Ausschlussdatei kann nicht gelesen werden - + A new folder larger than %1 MB has been added: %2. Ein neues Verzeichnis größer als %1 MB wurde hinzugefügt: %2. - + A folder from an external storage has been added. Ein Verzeichnis, von einem externen Speicher wurde hinzugefügt. - + Please go in the settings to select it if you wish to download it. Bitte wechseln Sie zu den Einstellungen, falls Sie das Verzeichnis herunterladen möchten. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -774,7 +774,7 @@ Wenn Sie sich dazu entscheiden, diese Dateien zu behalten, werden diese wieder z Wenn Sie sich zum Löschen der Dateien entscheiden, sind diese nicht mehr verfügbar, außer Sie sind der Eigentümer. - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. @@ -783,22 +783,22 @@ Sind Sie sich sicher, dass Sie diese Aktion mit Ihrem Server synchronisieren mö Falls dies ein Missgeschick war und Sie sich zum Behalten der Dateien entscheiden, werden diese wieder vom Server synchronisiert. - + Remove All Files? Alle Dateien löschen? - + Remove all files Lösche alle Dateien - + Keep files Dateien behalten - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? @@ -807,17 +807,17 @@ Der Grund dafür ist möglicherweise, dass auf dem Server ein Backup eingespielt Wenn diese Synchronisation fortgesetzt wird, werden Dateien eventuell von älteren Versionen überschrieben. Möchten Sie die neueren lokalen Dateien als Konflikt-Dateien behalten? - + Backup detected Backup erkannt - + Normal Synchronisation Normale Synchronisation - + Keep Local Files as Conflict Lokale Konfliktdateien behalten @@ -1918,144 +1918,144 @@ Es ist nicht ratsam, diese zu benutzen. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Erfolgreich mit %1 verbunden: %2 Version %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Die Verbindung zu %1 auf %2:<br/>%3 konnte nicht hergestellt werden - + Timeout while trying to connect to %1 at %2. Zeitüberschreitung beim Verbindungsversuch mit %1 unter %2. - + Trying to connect to %1 at %2... Verbindungsversuch mit %1 unter %2… - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Die Authentifizierungs-Anfrage an den Server wurde weitergeleitet an '%1'. Diese Adresse ist ungültig, der Server ist falsch konfiguriert. - + There was an invalid response to an authenticated webdav request Es gab eine ungültige Reaktion auf eine WebDav-Authentifizeriungs-Anfrage - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Zugang vom Server nicht erlaubt. <a href="%1">Klicken Sie hier</a> zum Zugriff auf den Dienst mithilfe Ihres Browsers, so dass Sie sicherstellen können, dass Ihr Zugang ordnungsgemäß funktioniert. - + Invalid URL Ungültige URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Lokaler Sync-Ordner %1 existiert bereits, aktiviere Synchronistation.<br/><br/> - + Creating local sync folder %1... Lokaler Synchronisations-Ordner %1 wird erstellt ... - + ok ok - + failed. fehlgeschlagen. - + Could not create local folder %1 Der lokale Ordner %1 konnte nicht angelegt werden - + No remote folder specified! Keinen entfernten Ordner angegeben! - + Error: %1 Fehler: %1 - + creating folder on ownCloud: %1 erstelle Ordner auf ownCloud: %1 - + Remote folder %1 created successfully. Remoteordner %1 erfolgreich erstellt. - + The remote folder %1 already exists. Connecting it for syncing. Der Ordner %1 ist auf dem Server bereits vorhanden. Verbinde zur Synchronisation. - - + + The folder creation resulted in HTTP error code %1 Das Erstellen des Verzeichnisses erzeugte den HTTP-Fehler-Code %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Die Remote-Ordner-Erstellung ist fehlgeschlagen, weil die angegebenen Zugangsdaten falsch sind. Bitte gehen Sie zurück und überprüfen Sie die Zugangsdaten. - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Die Remote-Ordner-Erstellung ist fehlgeschlagen, vermutlich sind die angegebenen Zugangsdaten falsch.</font><br/>Bitte gehen Sie zurück und überprüfen Sie Ihre Zugangsdaten.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Remote-Ordner %1 konnte mit folgendem Fehler nicht erstellt werden: <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Eine Synchronisationsverbindung für Ordner %1 zum entfernten Ordner %2 wurde eingerichtet. - + Successfully connected to %1! Erfolgreich verbunden mit %1! - + Connection to %1 could not be established. Please check again. Die Verbindung zu %1 konnte nicht hergestellt werden. Bitte prüfen Sie die Einstellungen erneut. - + Folder rename failed Ordner umbenennen fehlgeschlagen. - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Der Ordner kann nicht entfernt und gesichert werden, da der Ordner oder einer seiner Dateien in einem anderen Programm geöffnet ist. Bitte schließen Sie den Ordner oder die Datei oder beenden Sie die Installation. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Lokaler Sync-Ordner %1 erfolgreich erstellt!</b></font> diff --git a/translations/client_el.ts b/translations/client_el.ts index 01404c6d0..190d45644 100644 --- a/translations/client_el.ts +++ b/translations/client_el.ts @@ -744,26 +744,26 @@ Αδυναμία ανάγνωσης αρχείου αποκλεισμού συστήματος - + A new folder larger than %1 MB has been added: %2. Προστέθηκε ένας νέος φάκελος μεγαλύτερος από %1 MB: %2 - + A folder from an external storage has been added. Προστέθηκε ένας φάκελος από εξωτερικό αποθηκευτικό χώρο. - + Please go in the settings to select it if you wish to download it. Μεταβείτε στις ρυθμίσεις για να το επιλέξετε εάν επιθυμείτε να το κατεβάσετε. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -774,7 +774,7 @@ If you decide to delete the files, they will be unavailable to you, unless you a Εφόσον επιλέξετε να διαγράψετε τα αρχεία, δε θα είναι διαθέσιμα σε εσάς, εκτός εάν είστε ο ιδιοκτήτης τους. - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. @@ -783,22 +783,22 @@ If this was an accident and you decide to keep your files, they will be re-synce Αν αυτό ήταν ένα ατύχημα και αποφασίσατε να διατηρήσετε τα αρχεία σας, θα συγχρονιστούν εκ νέου από το διακομιστή. - + Remove All Files? Αφαίρεση Όλων των Αρχείων; - + Remove all files Αφαίρεση όλων των αρχείων - + Keep files Διατήρηση αρχείων - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? @@ -807,17 +807,17 @@ Continuing the sync as normal will cause all your files to be overwritten by an Η συνέχιση του συγχρονισμού κανονικά θα προκαλέσει την αντικατάσταση όλων των αρχείων σας από παλιότερο αρχείο σε προηγούμενη κατάσταση. Θέλετε να διατηρήσετε τα τοπικά σας πιο πρόσφατα αρχεία ως αρχεία σύγκρουσης; - + Backup detected Ανιχνεύθηκε αντίγραφο ασφαλείας - + Normal Synchronisation Κανονικός συγχρονισμός - + Keep Local Files as Conflict Διατήρηση τοπικών αρχείων ως Διένεξη @@ -1919,144 +1919,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Επιτυχής σύνδεση στο %1: %2 έκδοση %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Αποτυχία σύνδεσης με το %1 στο %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Λήξη χρονικού ορίου κατά τη σύνδεση σε %1 σε %2. - + Trying to connect to %1 at %2... Προσπάθεια σύνδεσης στο %1 για %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Η πιστοποιημένη αίτηση στον διακομιστή ανακατευθύνθηκε σε '%1'. Το URL είναι εσφαλμένο, ο διακομιστής δεν έχει διαμορφωθεί σωστά. - + There was an invalid response to an authenticated webdav request Υπήρξε μια άκυρη απόκριση σε μια πιστοποιημένη αίτηση - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Απαγόρευση πρόσβασης από τον διακομιστή. Για να επιβεβαιώσετε ότι έχετε δικαιώματα πρόσβασης, <a href="%1">πατήστε εδώ</a> για να προσπελάσετε την υπηρεσία με το πρόγραμμα πλοήγησής σας. - + Invalid URL Μη έγκυρη URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Ο τοπικός φάκελος συγχρονισμού %1 υπάρχει ήδη, ρύθμιση για συγχρονισμό.<br/><br/> - + Creating local sync folder %1... Δημιουργία τοπικού φακέλου συγχρονισμού %1... - + ok οκ - + failed. απέτυχε. - + Could not create local folder %1 Αδυναμία δημιουργίας τοπικού φακέλου %1 - + No remote folder specified! Δεν προσδιορίστηκε κανένας απομακρυσμένος φάκελος! - + Error: %1 Σφάλμα: %1 - + creating folder on ownCloud: %1 δημιουργία φακέλου στο ownCloud: %1 - + Remote folder %1 created successfully. Ο απομακρυσμένος φάκελος %1 δημιουργήθηκε με επιτυχία. - + The remote folder %1 already exists. Connecting it for syncing. Ο απομακρυσμένος φάκελος %1 υπάρχει ήδη. Θα συνδεθεί για συγχρονισμό. - - + + The folder creation resulted in HTTP error code %1 Η δημιουργία φακέλου είχε ως αποτέλεσμα τον κωδικό σφάλματος HTTP %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Η δημιουργία απομακρυσμένου φακέλλου απέτυχε επειδή τα διαπιστευτήρια είναι λάθος!<br/>Παρακαλώ επιστρέψετε και ελέγξετε τα διαπιστευτήριά σας.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Η δημιουργία απομακρυσμένου φακέλου απέτυχε, πιθανώς επειδή τα διαπιστευτήρια που δόθηκαν είναι λάθος.</font><br/>Παρακαλώ επιστρέψτε πίσω και ελέγξτε τα διαπιστευτήρια σας.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Η δημιουργία απομακρυσμένου φακέλου %1 απέτυχε με σφάλμα <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Μια σύνδεση συγχρονισμού από τον απομακρυσμένο κατάλογο %1 σε %2 έχει ρυθμιστεί. - + Successfully connected to %1! Επιτυχής σύνδεση με %1! - + Connection to %1 could not be established. Please check again. Αδυναμία σύνδεσης στον %1. Παρακαλώ ελέξτε ξανά. - + Folder rename failed Αποτυχία μετονομασίας φακέλου - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Αδυναμία αφαίρεσης και δημιουργίας αντιγράφου ασφαλείας του φακέλου διότι ο φάκελος ή ένα αρχείο του είναι ανοικτό από άλλο πρόγραμμα. Παρακαλώ κλείστε τον φάκελο ή το αρχείο και πατήστε επανάληψη ή ακυρώστε την ρύθμιση. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Επιτυχής δημιουργία τοπικού φακέλου %1 για συγχρονισμό!</b></font> diff --git a/translations/client_en.ts b/translations/client_en.ts index 0f01e5bd1..1fef5facb 100644 --- a/translations/client_en.ts +++ b/translations/client_en.ts @@ -773,24 +773,24 @@ - + A new folder larger than %1 MB has been added: %2. - + A folder from an external storage has been added. - + Please go in the settings to select it if you wish to download it. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -798,46 +798,46 @@ If you decide to delete the files, they will be unavailable to you, unless you a - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - + Remove All Files? - + Remove all files - + Keep files - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? - + Backup detected - + Normal Synchronisation - + Keep Local Files as Conflict @@ -1938,144 +1938,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. - + Trying to connect to %1 at %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. - + There was an invalid response to an authenticated webdav request - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - + Invalid URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> - + Creating local sync folder %1... - + ok - + failed. - + Could not create local folder %1 - + No remote folder specified! - + Error: %1 - + creating folder on ownCloud: %1 - + Remote folder %1 created successfully. - + The remote folder %1 already exists. Connecting it for syncing. - - + + The folder creation resulted in HTTP error code %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. - + Successfully connected to %1! - + Connection to %1 could not be established. Please check again. - + Folder rename failed - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> diff --git a/translations/client_es.ts b/translations/client_es.ts index fb9f0fc0b..496169b48 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -744,26 +744,26 @@ No se ha podido leer el archivo de exclusión del sistema - + A new folder larger than %1 MB has been added: %2. Una carpeta mayor de %1 MB ha sido añadida: %2. - + A folder from an external storage has been added. Una carpeta de almacenamiento externo ha sido añadida. - + Please go in the settings to select it if you wish to download it. Por favor vaya a opciones a seleccionarlo si desea descargar esto. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -774,7 +774,7 @@ Si decide mantener estos archivos, serán re-sincronizados con el servidor si Vd Si decide borrarlos, no serán visibles para Vd. a menos que sea usted el propietario. - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. 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. @@ -783,22 +783,22 @@ If this was an accident and you decide to keep your files, they will be re-synce Si ha sido un accidente, y decide mantener los archivos, serán re-sincronizados con el servidor. - + Remove All Files? ¿Eliminar todos los archivos? - + Remove all files Eliminar todos los archivos - + Keep files Conservar archivos - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? @@ -807,17 +807,17 @@ Esto puede deberse a que una copia de seguridad fue restaurada en el servidor. Si continua con la sincronización todos los archivos serán remplazados por su versión previa. ¿Desea mantener los archivos locales en su versión actual como archivos en conflicto? - + Backup detected Backup detectado - + Normal Synchronisation Sincronización Normal - + Keep Local Files as Conflict Mantener los archivos locales en caso de conflicto @@ -1918,144 +1918,144 @@ No se recomienda usarla. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Conectado con éxito a %1: versión %2 %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Fallo al conectar %1 a %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Tiempo de espera agotado mientras se intentaba conectar a %1 en %2 - + Trying to connect to %1 at %2... Intentando conectar a %1 desde %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. La petición autenticada al servidor ha sido redirigida a '%1'. La dirección URL es errónea, el servidor está mal configurado. - + There was an invalid response to an authenticated webdav request Ha habido una respuesta no válida a una solicitud autenticada de webdav - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Acceso denegado por el servidor. Para verificar que usted tiene acceso, <a href="%1">haga clic aquí</a> para acceder al servicio con su navegador. - + Invalid URL URL inválida. - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> La carpeta de sincronización local %1 ya existe, configurándola para la sincronización.<br/><br/> - + Creating local sync folder %1... Creando carpeta de sincronización local %1 - + ok bien - + failed. ha fallado. - + Could not create local folder %1 No se ha podido crear la carpeta local %1 - + No remote folder specified! ¡No se ha especificado ninguna carpeta remota! - + Error: %1 Error: %1 - + creating folder on ownCloud: %1 creando carpeta en ownCloud: %1 - + Remote folder %1 created successfully. Carpeta remota %1 creado correctamente. - + The remote folder %1 already exists. Connecting it for syncing. La carpeta remota %1 ya existe. Conectándola para sincronizacion. - - + + The folder creation resulted in HTTP error code %1 La creación de la carpeta ha producido el código de error HTTP %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> ¡La creación de la carpeta remota ha fallado debido a que las credenciales proporcionadas son incorrectas!<br/>Por favor, vuelva atrás y compruebe sus credenciales</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">La creación de la carpeta remota ha fallado, probablemente porque las credenciales proporcionadas son incorrectas.</font><br/>Por favor, vuelva atrás y compruebe sus credenciales.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Creación %1 de carpeta remota ha fallado con el error <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Se ha configarado una conexión de sincronización desde %1 al directorio remoto %2 - + Successfully connected to %1! ¡Conectado con éxito a %1! - + Connection to %1 could not be established. Please check again. No se ha podido establecer la conexión con %1. Por favor, compruébelo de nuevo. - + Folder rename failed Error al renombrar la carpeta - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. No se puede eliminar y respaldar la carpeta porque la misma o un fichero en ella está abierto por otro programa. Por favor, cierre la carpeta o el fichero y reintente, o cancele la instalación. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Carpeta de sincronización local %1 creada con éxito</b></font> diff --git a/translations/client_es_AR.ts b/translations/client_es_AR.ts index 7a5c9b71e..9b58e27c1 100644 --- a/translations/client_es_AR.ts +++ b/translations/client_es_AR.ts @@ -744,24 +744,24 @@ - + A new folder larger than %1 MB has been added: %2. - + A folder from an external storage has been added. - + Please go in the settings to select it if you wish to download it. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -769,46 +769,46 @@ If you decide to delete the files, they will be unavailable to you, unless you a - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - + Remove All Files? ¿Borrar todos los archivos? - + Remove all files Borrar todos los archivos - + Keep files Conservar archivos - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? - + Backup detected - + Normal Synchronisation Sincronizacón Normal. - + Keep Local Files as Conflict Mantener Archivos Locales como Conflicto @@ -1906,144 +1906,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Conectado a %1: versión de %2 %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Falló al conectarse a %1 en %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Tiempo excedido mientras se intentaba conectar a %1 desde %2. - + Trying to connect to %1 at %2... Intentando conectar a %1 en %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. - + There was an invalid response to an authenticated webdav request - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - + Invalid URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> El directorio de sincronización local %1 ya existe, configurándolo para la sincronización.<br/><br/> - + Creating local sync folder %1... - + ok aceptar - + failed. Error. - + Could not create local folder %1 No fue posible crear el directorio local %1 - + No remote folder specified! ¡No se ha especificado un directorio remoto! - + Error: %1 Error: %1 - + creating folder on ownCloud: %1 Creando carpeta en ownCloud: %1 - + Remote folder %1 created successfully. El directorio remoto %1 fue creado con éxito. - + The remote folder %1 already exists. Connecting it for syncing. El directorio remoto %1 ya existe. Estableciendo conexión para sincronizar. - - + + The folder creation resulted in HTTP error code %1 La creación del directorio resultó en un error HTTP con código de error %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> <p><font color="red">Error al crear el directorio remoto porque las credenciales provistas son incorrectas.</font><br/>Por favor, volvé atrás y verificá tus credenciales.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Error al crear el directorio remoto, probablemente porque las credenciales provistas son incorrectas.</font><br/>Por favor, volvé atrás y verificá tus credenciales.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Se prtodujo un error <tt>%2</tt> al crear el directorio remoto %1. - + A sync connection from %1 to remote directory %2 was set up. Fue creada una conexión de sincronización desde %1 al directorio remoto %2. - + Successfully connected to %1! Conectado con éxito a %1! - + Connection to %1 could not be established. Please check again. No fue posible establecer la conexión a %1. Por favor, intentalo nuevamente. - + Folder rename failed Error Al Renombrar Directorio - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Directorio local %1 creado</b></font> diff --git a/translations/client_et.ts b/translations/client_et.ts index c23eb664f..b358ae9e6 100644 --- a/translations/client_et.ts +++ b/translations/client_et.ts @@ -744,24 +744,24 @@ Süsteemi väljajätmiste faili lugemine ebaõnnestus - + A new folder larger than %1 MB has been added: %2. - + A folder from an external storage has been added. - + Please go in the settings to select it if you wish to download it. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -769,46 +769,46 @@ If you decide to delete the files, they will be unavailable to you, unless you a - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - + Remove All Files? Kustutada kõik failid? - + Remove all files Kustutada kõik failid - + Keep files Säilita failid - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? - + Backup detected Leiti varukoopia - + Normal Synchronisation Tavaline sünkroonimine - + Keep Local Files as Conflict @@ -1907,144 +1907,144 @@ Selle kasutamine pole soovitatav. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Edukalt ühendatud %1: %2 versioon %3 (4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Ühendumine ebaõnnestus %1 %2-st:<br/>%3 - + Timeout while trying to connect to %1 at %2. - + Trying to connect to %1 at %2... Püüan ühenduda %1 kohast %2 - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. - + There was an invalid response to an authenticated webdav request - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - + Invalid URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Kohalik kataloog %1 on juba olemas. Valmistan selle ette sünkroniseerimiseks. - + Creating local sync folder %1... Kohaliku kausta %1 sünkroonimise loomine ... - + ok ok - + failed. ebaõnnestus. - + Could not create local folder %1 Ei suuda tekitada kohalikku kataloogi %1 - + No remote folder specified! Ühtegi võrgukataloogi pole määratletud! - + Error: %1 Viga: %1 - + creating folder on ownCloud: %1 loon uue kataloogi ownCloudi: %1 - + Remote folder %1 created successfully. Eemalolev kaust %1 on loodud. - + The remote folder %1 already exists. Connecting it for syncing. Serveris on kataloog %1 juba olemas. Ühendan selle sünkroniseerimiseks. - - + + The folder creation resulted in HTTP error code %1 Kausta tekitamine lõppes HTTP veakoodiga %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Kataloogi loomine serverisse ebaõnnestus, kuna kasutajatõendid on valed!<br/>Palun kontrolli oma kasutajatunnust ja parooli.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Serveris oleva kataloogi tekitamine ebaõnnestus tõenäoliselt valede kasutajatunnuste tõttu.</font><br/>Palun mine tagasi ning kontrolli kasutajatunnust ning parooli.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Kataloogi %1 tekitamine serverisse ebaõnnestus veaga <tt>%2</tt> - + A sync connection from %1 to remote directory %2 was set up. Loodi sünkroniseerimisühendus kataloogist %1 serveri kataloogi %2 - + Successfully connected to %1! Edukalt ühendatud %1! - + Connection to %1 could not be established. Please check again. Ühenduse loomine %1 ebaõnnestus. Palun kontrolli uuesti. - + Folder rename failed Kataloogi ümbernimetamine ebaõnnestus - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Ei suuda eemaldada ning varundada kataloogi kuna kataloog või selles asuv fail on avatud mõne teise programmi poolt. Palun sulge kataloog või fail ning proovi uuesti või katkesta paigaldus. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Kohalik kataloog %1 edukalt loodud!</b></font> diff --git a/translations/client_eu.ts b/translations/client_eu.ts index bc51cc4f6..0d0c9bbb3 100644 --- a/translations/client_eu.ts +++ b/translations/client_eu.ts @@ -744,24 +744,24 @@ Ezin izan da sistemako baztertutakoen fitxategia irakurri - + A new folder larger than %1 MB has been added: %2. - + A folder from an external storage has been added. - + Please go in the settings to select it if you wish to download it. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -769,46 +769,46 @@ If you decide to delete the files, they will be unavailable to you, unless you a - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - + Remove All Files? Ezabatu Fitxategi Guztiak? - + Remove all files Ezabatu fitxategi guztiak - + Keep files Mantendu fitxategiak - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? - + Backup detected - + Normal Synchronisation - + Keep Local Files as Conflict @@ -1909,144 +1909,144 @@ Ez da gomendagarria erabltzea. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Konexioa ongi burutu da %1 zerbitzarian: %2 bertsioa %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Denbora iraungi da %1era %2n konektatzen saiatzean. - + Trying to connect to %1 at %2... %2 zerbitzarian dagoen %1 konektatzen... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. - + There was an invalid response to an authenticated webdav request - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - + Invalid URL Baliogabeko URLa - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Bertako %1 karpeta dagoeneko existitzen da, sinkronizaziorako prestatzen.<br/><br/> - + Creating local sync folder %1... Bertako %1 sinkronizazio karpeta sortzen... - + ok ados - + failed. huts egin du. - + Could not create local folder %1 Ezin da %1 karpeta lokala sortu - + No remote folder specified! Ez da urruneko karpeta zehaztu! - + Error: %1 Errorea: %1 - + creating folder on ownCloud: %1 ownClouden karpeta sortzen: %1 - + Remote folder %1 created successfully. Urruneko %1 karpeta ongi sortu da. - + The remote folder %1 already exists. Connecting it for syncing. Urruneko %1 karpeta dagoeneko existintzen da. Bertara konetatuko da sinkronizatzeko. - - + + The folder creation resulted in HTTP error code %1 Karpeta sortzeak HTTP %1 errore kodea igorri du - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Huts egin du urrutiko karpeta sortzen emandako kredintzialak ez direlako zuzenak!<br/> Egin atzera eta egiaztatu zure kredentzialak.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Urruneko karpeten sortzeak huts egin du ziuraski emandako kredentzialak gaizki daudelako.</font><br/>Mesedez atzera joan eta egiaztatu zure kredentzialak.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Urruneko %1 karpetaren sortzeak huts egin du <tt>%2</tt> errorearekin. - + A sync connection from %1 to remote directory %2 was set up. Sinkronizazio konexio bat konfiguratu da %1 karpetatik urruneko %2 karpetara. - + Successfully connected to %1! %1-era ongi konektatu da! - + Connection to %1 could not be established. Please check again. %1 konexioa ezin da ezarri. Mesedez egiaztatu berriz. - + Folder rename failed Karpetaren berrizendatzeak huts egin du - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Ezin da karpeta ezabatu eta kopia egin, karpeta edo barruko fitxategiren bat beste programa batean irekita dagoelako. Mesedez itxi karpeta edo fitxategia eta sakatu berrekin edo ezeztatu konfigurazioa. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Bertako sinkronizazio %1 karpeta ongi sortu da!</b></font> diff --git a/translations/client_fa.ts b/translations/client_fa.ts index 199737772..83e687602 100644 --- a/translations/client_fa.ts +++ b/translations/client_fa.ts @@ -744,24 +744,24 @@ - + A new folder larger than %1 MB has been added: %2. - + A folder from an external storage has been added. - + Please go in the settings to select it if you wish to download it. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -769,46 +769,46 @@ If you decide to delete the files, they will be unavailable to you, unless you a - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - + Remove All Files? حذف تمام فایل ها؟ - + Remove all files حذف تمام فایل ها - + Keep files نگه داشتن فایل ها - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? - + Backup detected - + Normal Synchronisation - + Keep Local Files as Conflict @@ -1906,144 +1906,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green"> با موفقیت متصل شده است به %1: %2 نسخه %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 ارتباط ناموفق با %1 در %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. - + Trying to connect to %1 at %2... تلاش برای اتصال %1 به %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. - + There was an invalid response to an authenticated webdav request - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - + Invalid URL آدرس نامعتبر - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> پوشه همگام سازی محلی %1 در حال حاضر موجود است، تنظیم آن برای همگام سازی. <br/><br/> - + Creating local sync folder %1... - + ok خوب - + failed. ناموفق. - + Could not create local folder %1 نمی تواند پوشه محلی ایجاد کند %1 - + No remote folder specified! - + Error: %1 خطا: %1 - + creating folder on ownCloud: %1 ایجاد کردن پوشه بر روی ownCloud: %1 - + Remote folder %1 created successfully. پوشه از راه دور %1 با موفقیت ایجاد شده است. - + The remote folder %1 already exists. Connecting it for syncing. در حال حاضر پوشه از راه دور %1 موجود است. برای همگام سازی به آن متصل شوید. - - + + The folder creation resulted in HTTP error code %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> ایجاد پوشه از راه دور ناموفق بود به علت اینکه اعتبارهای ارائه شده اشتباه هستند!<br/>لطفا اعتبارهای خودتان را بررسی کنید.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red"> ایجاد پوشه از راه دور ناموفق بود، شاید به علت اعتبارهایی که ارئه شده اند، اشتباه هستند.</font><br/> لطفا باز گردید و اعتبار خود را بررسی کنید.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. ایجاد پوشه از راه دور %1 ناموفق بود با خطا <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. یک اتصال همگام سازی از %1 تا %2 پوشه از راه دور راه اندازی شد. - + Successfully connected to %1! با موفقیت به %1 اتصال یافت! - + Connection to %1 could not be established. Please check again. اتصال به %1 نمی تواند مقرر باشد. لطفا دوباره بررسی کنید. - + Folder rename failed تغییر نام پوشه ناموفق بود - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b> پوشه همگام سازی محلی %1 با موفقیت ساخته شده است!</b></font> diff --git a/translations/client_fi.ts b/translations/client_fi.ts index 0e701795f..540e6c361 100644 --- a/translations/client_fi.ts +++ b/translations/client_fi.ts @@ -744,24 +744,24 @@ - + A new folder larger than %1 MB has been added: %2. - + A folder from an external storage has been added. - + Please go in the settings to select it if you wish to download it. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -769,46 +769,46 @@ If you decide to delete the files, they will be unavailable to you, unless you a - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - + Remove All Files? Poistetaanko kaikki tiedostot? - + Remove all files Poista kaikki tiedostot - + Keep files Säilytä tiedostot - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? - + Backup detected Varmuuskopio poistettu - + Normal Synchronisation Normaali synkronointi - + Keep Local Files as Conflict @@ -1909,144 +1909,144 @@ Osoitteen käyttäminen ei ole suositeltavaa. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Muodostettu yhteys onnistuneesti kohteeseen %1: %2 versio %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Yhteys %1iin osoitteessa %2 epäonnistui:<br/>%3 - + Timeout while trying to connect to %1 at %2. Aikakatkaisu yrittäessä yhteyttä kohteeseen %1 osoitteessa %2. - + Trying to connect to %1 at %2... Yritetään yhdistetää palvelimeen %1 portissa %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. - + There was an invalid response to an authenticated webdav request Todennettuun webdav-pyyntöön saatiin virheellinen vastaus - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Palvelin esti käyttämisen. Vahvista käyttöoikeutesi palvelimeen <a href="%1">napsauttamalla tästä</a> ja kirjaudu palveluun selaimella. - + Invalid URL Virheellinen verkko-osoite - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Paikallinen kansio %1 on jo olemassa, asetetaan se synkronoitavaksi.<br/><br/> - + Creating local sync folder %1... Luodaan paikallista synkronointikansiota %1... - + ok ok - + failed. epäonnistui. - + Could not create local folder %1 Paikalliskansion %1 luonti epäonnistui - + No remote folder specified! Etäkansiota ei määritelty! - + Error: %1 Virhe: %1 - + creating folder on ownCloud: %1 luodaan kansio ownCloudiin: %1 - + Remote folder %1 created successfully. Etäkansio %1 luotiin onnistuneesti. - + The remote folder %1 already exists. Connecting it for syncing. Etäkansio %1 on jo olemassa. Otetaan siihen yhteyttä tiedostojen täsmäystä varten. - - + + The folder creation resulted in HTTP error code %1 Kansion luonti aiheutti HTTP-virhekoodin %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Etäkansion luominen epäonnistui koska antamasi tunnus/salasana ei täsmää!<br/>Ole hyvä ja palaa tarkistamaan tunnus/salasana</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Pilvipalvelun etäkansion luominen ei onnistunut , koska tunnistautumistietosi ovat todennäköisesti väärin.</font><br/>Palaa takaisin ja tarkista käyttäjätunnus ja salasana.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Etäkansion %1 luonti epäonnistui, virhe <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Täsmäysyhteys kansiosta %1 etäkansioon %2 on asetettu. - + Successfully connected to %1! Yhteys kohteeseen %1 muodostettiin onnistuneesti! - + Connection to %1 could not be established. Please check again. Yhteyttä osoitteeseen %1 ei voitu muodostaa. Ole hyvä ja tarkista uudelleen. - + Folder rename failed Kansion nimen muuttaminen epäonnistui - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Paikallinen synkronointikansio %1 luotu onnistuneesti!</b></font> diff --git a/translations/client_fr.ts b/translations/client_fr.ts index 08a181014..4d58071ca 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -744,14 +744,14 @@ Impossible de lire le fichier d'exclusion du système - + A new folder larger than %1 MB has been added: %2. Un nouveau dossier de taille supérieure à %1 Mo a été ajouté : %2. - + A folder from an external storage has been added. Un nouveau dossier localisé sur un stockage externe a été ajouté. @@ -759,12 +759,12 @@ - + Please go in the settings to select it if you wish to download it. Merci d'aller dans les Paramètres pour indiquer si vous souhaitez le télécharger. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -775,7 +775,7 @@ Si vous décidez de conserver ces fichiers, ils seront synchronisés à nouveau Si vous décidez de supprimer ces fichiers, ils vous seront inaccessibles, sauf si vous en êtes le propriétaire. - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. 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. @@ -784,22 +784,22 @@ If this was an accident and you decide to keep your files, they will be re-synce S'il s'agissait d'un accident et que vous choisissiez de conserver vos fichiers, ils seront synchronisés à nouveau depuis le serveur. - + Remove All Files? Supprimer tous les fichiers ? - + Remove all files Supprimer tous les fichiers - + Keep files Conserver les fichiers - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? @@ -808,17 +808,17 @@ Cela peut être dû à une copie de sauvegarde restaurée sur le serveur. Continuer la synchronisation comme d'habitude fera en sorte que tous les fichiers soient remplacés par des fichiers plus vieux d'un état précédent. Voulez-vous conserver les versions les plus récentes de vos fichiers en tant que fichiers conflictuels ? - + Backup detected Sauvegarde détectée - + Normal Synchronisation Synchronisation normale - + Keep Local Files as Conflict Conserver les fichiers locaux comme Conflits @@ -1920,144 +1920,144 @@ Il est déconseillé de l'utiliser. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Connecté avec succès à %1 : %2 version %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Échec de la connexion à %1 sur %2 :<br/>%3 - + Timeout while trying to connect to %1 at %2. Délai d'attente dépassé lors de la connexion à %1 sur %2. - + Trying to connect to %1 at %2... Tentative de connexion à %1 sur %2 ... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. La requête d'authentification vers le serveur a été redirigée vers '%1'. L'URL est erronée, le serveur est mal configuré. - + There was an invalid response to an authenticated webdav request Une réponse non valide a été reçue suite à une requête WebDav authentifiée. - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Accès impossibe. Afin de vérifier l'accès au serveur, <a href="%1">cliquez ici</a> et connectez-vous au service avec votre navigateur web. - + Invalid URL URL invalide - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Le dossier de synchronisation local %1 existe déjà, configuration de la synchronisation.<br/><br/> - + Creating local sync folder %1... Création du dossier local de synchronisation %1... - + ok ok - + failed. échoué. - + Could not create local folder %1 Impossible de créer le dossier local %1 - + No remote folder specified! Aucun dossier distant spécifié ! - + Error: %1 Erreur : %1 - + creating folder on ownCloud: %1 création d'un dossier sur ownCloud : %1 - + Remote folder %1 created successfully. Le dossier distant %1 a été créé avec succès. - + The remote folder %1 already exists. Connecting it for syncing. Le dossier distant %1 existe déjà. Connexion. - - + + The folder creation resulted in HTTP error code %1 La création du dossier a généré le code d'erreur HTTP %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> La création du dossier distant a échoué car les identifiants de connexion sont erronés !<br/>Veuillez revenir en arrière et vérifier ces derniers.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">La création du dossier distant a échoué, probablement parce que les informations d'identification fournies sont fausses.</font><br/>Veuillez revenir en arrière et les vérifier.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. La création du dossier distant "%1" a échouée avec l'erreur <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Une synchronisation entre le dossier local %1 et le dossier distant %2 a été configurée. - + Successfully connected to %1! Connecté avec succès à %1 ! - + Connection to %1 could not be established. Please check again. La connexion à %1 n'a pu être établie. Veuillez réessayer. - + Folder rename failed Echec du renommage du dossier - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Impossible de supprimer et de sauvegarder le dossier parce que ce dossier ou un de ses fichiers est ouvert dans un autre programme. Veuillez fermer le dossier ou le fichier et ré-essayer, ou annuler l'installation. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Dossier de synchronisation local %1 créé avec succès !</b></font> diff --git a/translations/client_gl.ts b/translations/client_gl.ts index aeb8b2839..46f4bb47a 100644 --- a/translations/client_gl.ts +++ b/translations/client_gl.ts @@ -744,24 +744,24 @@ Non foi posíbel ler o ficheiro de exclusión do sistema - + A new folder larger than %1 MB has been added: %2. - + A folder from an external storage has been added. - + Please go in the settings to select it if you wish to download it. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -769,46 +769,46 @@ If you decide to delete the files, they will be unavailable to you, unless you a - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - + Remove All Files? Retirar todos os ficheiros? - + Remove all files Retirar todos os ficheiros - + Keep files Manter os ficheiros - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? - + Backup detected - + Normal Synchronisation - + Keep Local Files as Conflict @@ -1908,144 +1908,144 @@ Recomendámoslle que non o use. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Conectouse correctamente a %1: %2 versión %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Non foi posíbel conectar con %1 en %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Esgotouse o tempo tentando conectarse a %1 en %2... - + Trying to connect to %1 at %2... Tentando conectarse a %1 en %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. A solicitude autenticada no servidor foi redirixida a «%1», O URL é incorrecto, o servidor está mal configurado. - + There was an invalid response to an authenticated webdav request Deuse unha resposta incorrecta a unha solicitude de WebDAV autenticada - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Acceso prohibido polo servidor. Para comprobar que dispón do acceso axeitado, <a href="%1">prema aquí</a> para acceder ao servizo co seu navegador. - + Invalid URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> O cartafol de sincronización local %1 xa existe. Configurándoo para a sincronización.<br/><br/> - + Creating local sync folder %1... Creando un cartafol local de sincronización %1... - + ok aceptar - + failed. fallou. - + Could not create local folder %1 Non foi posíbel crear o cartafol local %1 - + No remote folder specified! Non foi especificado o cartafol remoto! - + Error: %1 Erro: %1 - + creating folder on ownCloud: %1 creando o cartafol en ownCloud: %1 - + Remote folder %1 created successfully. O cartafol remoto %1 creouse correctamente. - + The remote folder %1 already exists. Connecting it for syncing. O cartafol remoto %1 xa existe. Conectándoo para a sincronización. - - + + The folder creation resulted in HTTP error code %1 A creación do cartafol resultou nun código de erro HTTP %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> A creación do cartafol remoto fracasou por por de seren incorrectas as credenciais!<br/>Volva atrás e comprobe as súas credenciais.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">A creación do cartafol remoto fallou probabelmente debido a que as credenciais que se deron non foran as correctas.</font><br/>Volva atrás e comprobe as súas credenciais.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Produciuse un fallo ao crear o cartafol remoto %1 e dou o erro <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Estabeleceuse a conexión de sincronización de %1 ao directorio remoto %2. - + Successfully connected to %1! Conectou satisfactoriamente con %1 - + Connection to %1 could not be established. Please check again. Non foi posíbel estabelecer a conexión con %1. Compróbeo de novo. - + Folder rename failed Non foi posíbel renomear o cartafol - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Non é posíbel retirar e facer unha copia de seguranza do cartafol, xa que o cartafol ou un ficheiro está aberto noutro programa Peche o cartafol ou o ficheiro e ténteo de novo, ou cancele a acción. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>O cartafol local de sincronización %1 creouse correctamente!</b></font> diff --git a/translations/client_hu.ts b/translations/client_hu.ts index a60ba7548..619583905 100644 --- a/translations/client_hu.ts +++ b/translations/client_hu.ts @@ -744,24 +744,24 @@ - + A new folder larger than %1 MB has been added: %2. - + A folder from an external storage has been added. - + Please go in the settings to select it if you wish to download it. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -769,46 +769,46 @@ If you decide to delete the files, they will be unavailable to you, unless you a - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - + Remove All Files? Törli az összes fájlt? - + Remove all files Összes fájl eltávolítása - + Keep files Fájlok megtartása - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? - + Backup detected Biztonsági mentés észlelve - + Normal Synchronisation Normal szinkronizáció - + Keep Local Files as Conflict Helyi file-ok megtartása konfliktusként @@ -1906,144 +1906,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Sikeresen csatlakozott az %1-hoz: %2 verziószám %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. - + Trying to connect to %1 at %2... Próbál kapcsolódni az %1-hoz: %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. - + There was an invalid response to an authenticated webdav request - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - + Invalid URL Érvénytelen URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> A helyi %1 mappa már létezik, állítsa be a szinkronizálódását.<br/><br/> - + Creating local sync folder %1... - + ok ok - + failed. sikertelen. - + Could not create local folder %1 - + No remote folder specified! - + Error: %1 Hiba: %1 - + creating folder on ownCloud: %1 - + Remote folder %1 created successfully. %1 távoli nappa sikeresen létrehozva. - + The remote folder %1 already exists. Connecting it for syncing. A %1 távoli mappa már létezik. Csatlakoztassa a szinkronizációhoz. - - + + The folder creation resulted in HTTP error code %1 A könyvtár létrehozásakor keletkezett HTTP hibakód %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">A távoli mappa létrehozása sikertelen, valószínűleg mivel hibásak a megdott hitelesítési adatok.</font><br/>Lépjen vissza és ellenőrizze a belépési adatokat.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. A távoli %1 mappa létrehozása nem sikerült. Hibaüzenet: <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. A szinkronizációs kapcsolat a %1 és a %2 távoli mappa között létrejött. - + Successfully connected to %1! Sikeresen csatlakozva: %1! - + Connection to %1 could not be established. Please check again. A kapcsolat a %1 kiszolgálóhoz sikertelen. Ellenőrizze újra. - + Folder rename failed A mappa átnevezése nem sikerült - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Helyi %1 szinkronizációs mappa sikeresen létrehozva!</b></font> diff --git a/translations/client_it.ts b/translations/client_it.ts index 0a19057c6..53d37e6c6 100644 --- a/translations/client_it.ts +++ b/translations/client_it.ts @@ -744,14 +744,14 @@ Impossibile leggere il file di esclusione di sistema - + A new folder larger than %1 MB has been added: %2. Una nuova cartella più grande di %1 MB è stata aggiunta: %2. - + A folder from an external storage has been added. Una nuova cartella da un'archiviazione esterna è stata aggiunta. @@ -759,12 +759,12 @@ - + Please go in the settings to select it if you wish to download it. Vai nelle impostazioni e selezionala se vuoi scaricarla. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -772,29 +772,29 @@ If you decide to delete the files, they will be unavailable to you, unless you a - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - + Remove All Files? Vuoi rimuovere tutti i file? - + Remove all files Rimuovi tutti i file - + Keep files Mantieni i file - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? @@ -803,17 +803,17 @@ Ciò potrebbe verificarsi in seguito al ripristino di un backup sul server. Se continui normalmente la sincronizzazione provocherai la sovrascrittura di tutti i tuoi file con file più datati in uno stato precedente. Vuoi mantenere i tuoi file locali più recenti come file di conflitto? - + Backup detected Backup rilevato - + Normal Synchronisation Sincronizzazione normale - + Keep Local Files as Conflict Mantieni i file locali come conflitto @@ -1914,144 +1914,144 @@ Non è consigliabile utilizzarlo. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Connesso correttamente a %1: %2 versione %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Connessione a %1 su %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Tempo scaduto durante il tentativo di connessione a %1 su %2. - + Trying to connect to %1 at %2... Tentativo di connessione a %1 su %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. La richiesta autenticata al server è stata rediretta a '%1'. L'URL è errato, il server non è configurato correttamente. - + There was an invalid response to an authenticated webdav request Ricevuta una risposta non valida a una richiesta webdav autenticata. - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Accesso negato dal server. Per verificare di avere i permessi appropriati, <a href="%1">fai clic qui</a> per accedere al servizio con il tuo browser. - + Invalid URL URL non valido - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> La cartella di sincronizzazione locale %1 esiste già, impostata per la sincronizzazione.<br/><br/> - + Creating local sync folder %1... Creazione della cartella locale di sincronizzazione %1... - + ok ok - + failed. non riuscita. - + Could not create local folder %1 Impossibile creare la cartella locale %1 - + No remote folder specified! Nessuna cartella remota specificata! - + Error: %1 Errore: %1 - + creating folder on ownCloud: %1 creazione cartella su ownCloud: %1 - + Remote folder %1 created successfully. La cartella remota %1 è stata creata correttamente. - + The remote folder %1 already exists. Connecting it for syncing. La cartella remota %1 esiste già. Connessione in corso per la sincronizzazione - - + + The folder creation resulted in HTTP error code %1 La creazione della cartella ha restituito un codice di errore HTTP %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> La creazione della cartella remota non è riuscita poiché le credenziali fornite sono errate!<br/>Torna indietro e verifica le credenziali.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">La creazione della cartella remota non è riuscita probabilmente perché le credenziali fornite non sono corrette.</font><br/>Torna indietro e controlla le credenziali inserite.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Creazione della cartella remota %1 non riuscita con errore <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Una connessione di sincronizzazione da %1 alla cartella remota %2 è stata stabilita. - + Successfully connected to %1! Connesso con successo a %1! - + Connection to %1 could not be established. Please check again. La connessione a %1 non può essere stabilita. Prova ancora. - + Folder rename failed Rinomina della cartella non riuscita - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Impossibile rimuovere o creare una copia di sicurezza della cartella poiché la cartella o un file in essa contenuto è aperta in un altro programma. Chiudi la cartella o il file e premi Riprova o annulla la configurazione. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Cartella locale %1 creata correttamente!</b></font> diff --git a/translations/client_ja.ts b/translations/client_ja.ts index 6f7f0cbad..ffff1b8f3 100644 --- a/translations/client_ja.ts +++ b/translations/client_ja.ts @@ -744,26 +744,26 @@ システム上の除外ファイルを読み込めません - + A new folder larger than %1 MB has been added: %2. %1 MB より大きな新しいフォルダーが追加されました: %2 - + A folder from an external storage has been added. 外部ストレージからフォルダーが追加されました。 - + Please go in the settings to select it if you wish to download it. このフォルダーをダウンロードするには設定画面で選択してください。 - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -774,7 +774,7 @@ If you decide to delete the files, they will be unavailable to you, unless you a 「すべてのファイルを削除」を選択すると、あなたが所有者でない限り、ファイルは使用できなくなります。 - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. @@ -783,39 +783,39 @@ If this was an accident and you decide to keep your files, they will be re-synce 「ファイルを残す」を選択した場合、ファイルはサーバーから再同期されます。 - + Remove All Files? すべてのファイルを削除しますか? - + Remove all files すべてのファイルを削除 - + Keep files ファイルを残す - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? この同期により同期フォルダー '%1' のファイルが以前のものに戻されます。 これは、バックアップがサーバー上に復元されたためです。 通常と同じように同期を続けると、すべてのファイルが以前の状態の古いファイルによって上書きされます。最新のローカルファイルを競合ファイルとして保存しますか? - + Backup detected バックアップが検出されました - + Normal Synchronisation 正常同期 - + Keep Local Files as Conflict コンフリクト時にローカルファイルを保持 @@ -1915,144 +1915,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">正常に %1 へ接続されました:%2 バージョン %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 %2 の %1 に接続に失敗:<br/>%3 - + Timeout while trying to connect to %1 at %2. %2 の %1 へ接続を試みた際にタイムアウトしました。 - + Trying to connect to %1 at %2... %2 の %1 へ接続を試みています... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. サーバーへの認証リクエストは '%1' へリダイレクトされました。URLは不正です、サーバーの設定に誤りがあります。 - + There was an invalid response to an authenticated webdav request 認証された WebDav リクエストに不正な応答がありました - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. サーバーによってアクセスが拒否されています。適切なアクセス権があるか検証するには、<a href="%1">ここをクリック</a>してブラウザーでサービスにアクセスしてください。 - + Invalid URL 無効なURL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> ローカルの同期フォルダー %1 はすでに存在するため、同期の設定をしてください。<br/><br/> - + Creating local sync folder %1... ローカル同期フォルダー %1 を作成中... - + ok OK - + failed. 失敗。 - + Could not create local folder %1 ローカルフォルダー %1 を作成できませんでした - + No remote folder specified! リモートフォルダーが指定されていません! - + Error: %1 エラー: %1 - + creating folder on ownCloud: %1 ownCloud上にフォルダーを作成中: %1 - + Remote folder %1 created successfully. リモートフォルダー %1 は正常に生成されました。 - + The remote folder %1 already exists. Connecting it for syncing. リモートフォルダー %1 はすでに存在します。同期のために接続しています。 - - + + The folder creation resulted in HTTP error code %1 フォルダーの作成はHTTPのエラーコード %1 で終了しました - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> 指定された資格情報が間違っているため、リモートフォルダーの作成に失敗しました!<br/>前に戻って資格情報を確認してください。</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">おそらく資格情報が間違っているため、リモートフォルダーの作成に失敗しました。</font><br/>前に戻り、資格情報をチェックしてください。</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. リモートフォルダー %1 の作成がエラーで失敗しました。<tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. %1 からリモートディレクトリ %2 への同期接続を設定しました。 - + Successfully connected to %1! %1への接続に成功しました! - + Connection to %1 could not be established. Please check again. %1 への接続を確立できませんでした。もう一度確認してください。 - + Folder rename failed フォルダー名の変更に失敗しました。 - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. フォルダーまたはその中にあるファイルが他のプログラムで開かれているため、フォルダーの削除やバックアップができません。フォルダーまたはファイルを閉じてから再試行するか、セットアップをキャンセルしてください。 - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>ローカルの同期フォルダー %1 は正常に作成されました!</b></font> diff --git a/translations/client_nb_NO.ts b/translations/client_nb_NO.ts index 082be5917..3dcda3d38 100644 --- a/translations/client_nb_NO.ts +++ b/translations/client_nb_NO.ts @@ -744,25 +744,25 @@ Klarte ikke å lese systemets ekskluderingsfil - + A new folder larger than %1 MB has been added: %2. En ny mappe større enn %1 MB er blitt lagt til: %2. - + A folder from an external storage has been added. En mappe fra et eksternt lager er blitt lagt til. - + Please go in the settings to select it if you wish to download it. Gå til Innstillinger og velg den hvis du ønsker å laste den ned. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -773,7 +773,7 @@ Hvis du velger å beholde filene, vil de bli synkronisert tilbake til serveren h Hvis du velger å slette filene, blir de utilgjengelige for deg hvis du ikke er eieren av filen. - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. @@ -782,22 +782,22 @@ Er du sikker på at du ønsker å synkronisere denne handlingen med serveren? Hvis det var et uhell og du velger å beholde filene, vil de bli synkronisert tilbake fra serveren. - + Remove All Files? Fjerne alle filer? - + Remove all files Fjern alle filer - + Keep files Behold filer - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? @@ -806,17 +806,17 @@ Dette kan være fordi en backup ble gjenopprettet på serveren. Hvis synkroniseringen fortsetter som normalt, vil alle filene dine bli overskrevet av en eldre fil i en tidligere tilstand. Ønsker du å beholde dine ferskeste lokale filer som konflikt-filer? - + Backup detected Backup oppdaget - + Normal Synchronisation Normal synkronisering - + Keep Local Files as Conflict Behold lokale filer som konflikt @@ -1918,144 +1918,144 @@ Det er ikke tilrådelig å bruke den. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Vellykket oppkobling mot %1: %2 versjon %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Klarte ikke å koble til %1 på %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Tidsavbrudd ved oppkobling mot %1 på %2. - + Trying to connect to %1 at %2... Prøver å koble til %1 på %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Autentisert forespørsel til serveren ble omdirigert til '%1'. URL-en er ugyldig, serveren er feilkonfigurert. - + There was an invalid response to an authenticated webdav request Det kom et uventet svar fra en autentisert webdav-forespørsel. - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Tilgang forbudt av serveren. For å sjekke om du har gyldig tilgang, <a href="%1">klikk her</a> for å aksessere tjenesten med nettleseren din. - + Invalid URL Ugyldig URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Lokal synkroniseringsmappe %1 finnes allerede. Setter den opp for synkronisering.<br/><br/> - + Creating local sync folder %1... Oppretter lokal synkroniseringsmappe %1... - + ok ok - + failed. feilet. - + Could not create local folder %1 Klarte ikke å opprette lokal mappe %1 - + No remote folder specified! Ingen ekstern mappe spesifisert! - + Error: %1 Feil: %1 - + creating folder on ownCloud: %1 oppretter mappe på ownCloud: %1 - + Remote folder %1 created successfully. Ekstern mappe %1 ble opprettet. - + The remote folder %1 already exists. Connecting it for syncing. Ekstern mappe %1 finnes allerede. Kobler den til for synkronisering. - - + + The folder creation resulted in HTTP error code %1 Oppretting av mappe resulterte i HTTP-feilkode %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Oppretting av ekstern mappe feilet fordi påloggingsinformasjonen er feil!<br/>Gå tilbake og sjekk brukernavnet og passordet ditt.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Oppretting av ekstern mappe feilet, sannsynligvis fordi oppgitt påloggingsinformasjon er feil.</font><br/>Vennligst gå tilbake og sjekk ditt brukernavn og passord.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Oppretting av ekstern mappe %1 feilet med feil <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. En synkroniseringsforbindelse fra %1 til ekstern mappe %2 ble satt opp. - + Successfully connected to %1! Forbindelse til %1 opprettet! - + Connection to %1 could not be established. Please check again. Klarte ikke å etablere forbindelse til %1. Sjekk igjen. - + Folder rename failed Omdøping av mappe feilet - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Kan ikke fjerne og sikkerhetskopiere mappen fordi mappen eller en fil i mappen er åpen i et annet program. Lukk mappen eller filen og prøv igjen, eller avbryt oppsettet. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Oppretting av lokal synkroniseringsmappe %1 vellykket!</b></font> diff --git a/translations/client_nl.ts b/translations/client_nl.ts index d48e9dfd7..19278c7f7 100644 --- a/translations/client_nl.ts +++ b/translations/client_nl.ts @@ -744,26 +744,26 @@ Kon het systeem-uitsluitingsbestand niet lezen - + A new folder larger than %1 MB has been added: %2. Er is een nieuwe map groter dan %1 MB toegevoegd: %2. - + A folder from an external storage has been added. Er is een map op externe opslag toegevoegd. - + Please go in the settings to select it if you wish to download it. Ga naar de instellingen om het te selecteren als u deze wilt downloaden. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -774,7 +774,7 @@ Als u de bestanden wilt behouden, worden ze opnieuw gesynchroniseerd met de serv Als u de bestanden wilt verwijderen, worden ze niet beschikbaar, tenzij u de eigenaar bent. - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. @@ -782,22 +782,22 @@ If this was an accident and you decide to keep your files, they will be re-synce Als dit een ongelukje was en u de bestanden wilt behouden, worden ze opnieuw gesynchroniseerd met de server. - + Remove All Files? Verwijder alle bestanden? - + Remove all files Verwijder alle bestanden - + Keep files Bewaar bestanden - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? @@ -806,17 +806,17 @@ Dit kan komen doordat een backup is hersteld op de server. Doorgaan met deze synchronisatie overschrijft al uw bestanden door een eerdere versie. Wilt u uw lokale meer recente bestanden behouden als conflict bestanden? - + Backup detected Backup gedetecteerd - + Normal Synchronisation Normale synchronisatie - + Keep Local Files as Conflict Behoud lokale bestanden als conflict @@ -1923,144 +1923,144 @@ We adviseren deze site niet te gebruiken. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Succesvol verbonden met %1: %2 versie %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Kon geen verbinding maken met %1 op %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Time-out bij verbinden met %1 om %2. - + Trying to connect to %1 at %2... Probeer te verbinden met %1 om %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. De geauthentiseerde aanvraag voor de server werd omgeleid naar '%1'. De URL is onjuist, de server is verkeerd geconfigureerd. - + There was an invalid response to an authenticated webdav request Er was een ongeldig antwoord op een geauthenticeerde webdav opvraging - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Toegang door server verboden. Om te verifiëren dat u toegang mag hebben, <a href="%1">klik hier</a> om met uw browser toegang tot de service te krijgen. - + Invalid URL Ongeldige URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Lokale synch map %1 bestaat al, deze wordt ingesteld voor synchronisatie.<br/><br/> - + Creating local sync folder %1... Creëren lokale sync map %1... - + ok ok - + failed. mislukt. - + Could not create local folder %1 Kon lokale map %1 niet aanmaken - + No remote folder specified! Geen externe map opgegeven! - + Error: %1 Fout: %1 - + creating folder on ownCloud: %1 aanmaken map op ownCloud: %1 - + Remote folder %1 created successfully. Externe map %1 succesvol gecreërd. - + The remote folder %1 already exists. Connecting it for syncing. De remote map %1 bestaat al. Verbinden voor synchroniseren. - - + + The folder creation resulted in HTTP error code %1 Het aanmaken van de map resulteerde in HTTP foutcode %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Het aanmaken van de remote map is mislukt, waarschijnlijk omdat uw inloggegevens fout waren.<br/>Ga terug en controleer uw inloggegevens.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Het aanmaken van de remote map is mislukt, waarschijnlijk omdat uw inloggegevens fout waren.</font><br/>ga terug en controleer uw inloggevens.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Aanmaken van remote map %1 mislukt met fout <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Er is een sync verbinding van %1 naar remote directory %2 opgezet. - + Successfully connected to %1! Succesvol verbonden met %1! - + Connection to %1 could not be established. Please check again. Verbinding met %1 niet geslaagd. Probeer het nog eens. - + Folder rename failed Hernoemen map mislukt - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Kan de map niet verwijderen en backuppen, omdat de map of een bestand daarin, geopend is in een ander programma. Sluit de map of het bestand en drup op Opnieuw of annuleer de installatie. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Lokale synch map %1 is succesvol aangemaakt!</b></font> diff --git a/translations/client_pl.ts b/translations/client_pl.ts index ff56f3d7d..87c4acc6a 100644 --- a/translations/client_pl.ts +++ b/translations/client_pl.ts @@ -744,26 +744,26 @@ Nie można przeczytać pliku wyłączeń - + A new folder larger than %1 MB has been added: %2. Nowy folder większy niż %1MB został dodany: %2 - + A folder from an external storage has been added. Folder z pamięci zewnętrznej został dodany . - + Please go in the settings to select it if you wish to download it. Przejdź do ustawień żeby go zaznaczyć i pobrać. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -771,46 +771,46 @@ If you decide to delete the files, they will be unavailable to you, unless you a - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - + Remove All Files? Usunąć wszystkie pliki? - + Remove all files Usuń wszystkie pliki - + Keep files Pozostaw pliki - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? - + Backup detected Wykryto kopię zapasową. - + Normal Synchronisation Normalna synchronizacja. - + Keep Local Files as Conflict Zatrzymaj pliki lokalne i ustaw status konfliktu. @@ -1912,144 +1912,144 @@ Niezalecane jest jego użycie. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Udane połączenie z %1: %2 wersja %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Nie udało się połączyć do %1 w %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Upłynął czas podczas próby połączenia do %1 na %2. - + Trying to connect to %1 at %2... Próba połączenia z %1 w %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. - + There was an invalid response to an authenticated webdav request - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Dostęp zabroniony przez serwer. Aby sprawdzić, czy masz odpowiednie uprawnienia, kliknij <a href="%1">tutaj</a>, aby połączyć się z usługą poprzez przeglądarkę. - + Invalid URL Błędny adres url. - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Lokalny folder synchronizacji %1 już istnieje. Ustawiam go do synchronizacji.<br/><br/> - + Creating local sync folder %1... Tworzenie lokalnego folderu synchronizacji %1... - + ok OK - + failed. Błąd. - + Could not create local folder %1 Nie udało się utworzyć lokalnego folderu %1 - + No remote folder specified! Nie określono folderu zdalnego! - + Error: %1 Błąd: %1 - + creating folder on ownCloud: %1 tworzę folder na ownCloud: %1 - + Remote folder %1 created successfully. Zdalny folder %1 został utworzony pomyślnie. - + The remote folder %1 already exists. Connecting it for syncing. Zdalny folder %1 już istnieje. Podłączam go do synchronizowania. - - + + The folder creation resulted in HTTP error code %1 Tworzenie folderu spowodowało kod błędu HTTP %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Nie udało się utworzyć zdalnego folderu ponieważ podane dane dostępowe są nieprawidłowe!<br/>Wróć i sprawdź podane dane dostępowe.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Tworzenie folderu zdalnego nie powiodło się. Prawdopodobnie dostarczone poświadczenia są błędne.</font><br/>Wróć i sprawdź poświadczenia.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Tworzenie folderu zdalnego %1 nie powiodło się z powodu błędu <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Połączenie synchronizacji z %1 do katalogu zdalnego %2 zostało utworzone. - + Successfully connected to %1! Udane połączenie z %1! - + Connection to %1 could not be established. Please check again. Połączenie z %1 nie może być nawiązane. Sprawdź ponownie. - + Folder rename failed Zmiana nazwy folderu nie powiodła się - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Nie można usunąć i zarchiwizować folderu ponieważ znajdujący się w nim plik lub folder jest otwarty przez inny program. Proszę zamknąć folder lub plik albo kliknąć ponów lub anuluj setup. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Utworzenie lokalnego folderu synchronizowanego %1 zakończone pomyślnie!</b></font> diff --git a/translations/client_pt.ts b/translations/client_pt.ts index b588966e9..7773695ac 100644 --- a/translations/client_pt.ts +++ b/translations/client_pt.ts @@ -744,26 +744,26 @@ Não foi possível ler o ficheiro excluir do sistema - + A new folder larger than %1 MB has been added: %2. Foi adicionada uma nova pasta maior que %1 MB: %2. - + A folder from an external storage has been added. Foi adicionada uma pasta vinda de armazenamento externo. - + Please go in the settings to select it if you wish to download it. Por favor, vá às configurações para a selecionar se a desejar transferir. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -774,7 +774,7 @@ Se decidir manter os ficheiros, eles serão sincronizados novamento para o servi Se decidir apagar os ficheiros, eles ficaram indisponíveis para si, a não ser que seja o seu proprietário. - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. @@ -783,22 +783,22 @@ Tem a certeza que deseja sincronizar essas ações com o servidor? Se foi acidental e decidir manter os seus ficheiros, eles serão sincronizados novamente apartir do servidor. - + Remove All Files? Remover todos os ficheiros? - + Remove all files Remover todos os ficheiros - + Keep files Manter ficheiros - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? @@ -807,17 +807,17 @@ Isto pode ser porque um backup foi restaurado no servidor. Continuando a sincronização fará com que todos os seus ficheiros sejam substituídos por um ficheiro mais velho num estado anterior. Deseja manter os seus ficheiros locais mais recentes como ficheiros de conflito? - + Backup detected Detetada cópia de segurança - + Normal Synchronisation Sincronização Normal - + Keep Local Files as Conflict Manter Ficheiros Locais como Conflito @@ -1919,144 +1919,144 @@ Não é aconselhada a sua utilização. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Ligado com sucesso a %1: %2 - versão: %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Não foi possível ligar a %1 em %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Tempo expirou enquanto tentava ligar a %1 em %2. - + Trying to connect to %1 at %2... A tentar ligar a %1 em %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. O pedido de autenticação para o servidor foi redirecionado para '%1'. O URL é mau, o servidor está mal configurado. - + There was an invalid response to an authenticated webdav request Houve uma resposta inválida para o pedido de autenticação webdav - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Acesso proibido pelo servidor. Para verificar que tem o acesso adequado, <a href="%1">clique aqui</a> para aceder ao serviço com o seu navegador. - + Invalid URL URL inválido - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> A pasta de sincronização local %1 já existe, a configurar para sincronizar.<br/><br/> - + Creating local sync folder %1... A criar a pasta de sincronização local %1... - + ok ok - + failed. Falhou. - + Could not create local folder %1 Não foi possível criar a pasta local %1 - + No remote folder specified! Não foi indicada a pasta remota! - + Error: %1 Erro: %1 - + creating folder on ownCloud: %1 a criar a pasta na ownCloud: %1 - + Remote folder %1 created successfully. Criação da pasta remota %1 com sucesso! - + The remote folder %1 already exists. Connecting it for syncing. A pasta remota %1 já existe. Ligue-a para sincronizar. - - + + The folder creation resulted in HTTP error code %1 A criação da pasta resultou num erro HTTP com o código %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> A criação da pasta remota falhou, provavelmente por ter introduzido as credenciais erradas.<br/>Por favor, verifique as suas credenciais.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">A criação da pasta remota falhou, provavelmente por ter introduzido as credenciais erradas.</font><br/>Por favor, verifique as suas credenciais.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. A criação da pasta remota %1 falhou com o erro <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. A sincronização de %1 com a pasta remota %2 foi criada com sucesso. - + Successfully connected to %1! Conectado com sucesso a %1! - + Connection to %1 could not be established. Please check again. Não foi possível ligar a %1 . Por Favor verifique novamente. - + Folder rename failed Erro ao renomear a pasta - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Não é possível remover e fazer backup à pasta porque a pasta ou um ficheiro nesta está aberto em outro programa. Por favor, feche a pasta ou o ficheiro e clique novamente ou cancele a configuração. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Pasta de sincronização local %1 criada com sucesso!</b></font> diff --git a/translations/client_pt_BR.ts b/translations/client_pt_BR.ts index fe5d58d4e..bfa6701a2 100644 --- a/translations/client_pt_BR.ts +++ b/translations/client_pt_BR.ts @@ -744,26 +744,26 @@ Não foi possível ler o sistema de arquivo de exclusão - + A new folder larger than %1 MB has been added: %2. Uma nova pasta maior que %1 MB foi adicionada: %2 - + A folder from an external storage has been added. Uma pasta de um armazenamento externo foi adicionada. - + Please go in the settings to select it if you wish to download it. Por favor, vá nas configurações para selecioná-lo se você deseja baixá-lo. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -774,29 +774,29 @@ If you decide to delete the files, they will be unavailable to you, unless you a Se você decidir excluir os arquivos, eles não estarão disponíveis para você, a menos que você seja o proprietário. - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. Todos os arquivos na pasta de sincronização local '%1' foram excluídos. Essas exclusões serão sincronizadas com o servidor, tornando tais arquivos indisponíveis, a menos que 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 re-sincronizados a partir do servidor. - + Remove All Files? Deseja Remover Todos os Arquivos? - + Remove all files Remover todos os arquivos - + Keep files Manter arquivos - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? @@ -805,17 +805,17 @@ Isso pode ser porque um backup foi restaurado no servidor. Continuar a sincronização como normal fará com que todos os seus arquivos sejam substituídos por um arquivo antigo em um estado anterior. Deseja manter seus arquivos mais recentes locais como arquivos de conflito? - + Backup detected Backup detectado - + Normal Synchronisation Sincronização Normal - + Keep Local Files as Conflict Manter Arquivos Locais como Conflito @@ -1916,144 +1916,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Conectado com sucesso a %1: %2 versão %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Falha ao conectar a %1 em %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. O tempo expirou ao tentar contactar %1 e %2. - + Trying to connect to %1 at %2... Tentando conectar a %1 em %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. A solicitação de autenticação ao servidor foi direcionada para '%1'. A URL está errada, a configuração do servidor está errada. - + There was an invalid response to an authenticated webdav request Houve uma resposta inválida a um pedido de autenticação WebDAV - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Acesso proibido pelo servidor. Para verificar se você tem acesso adequado, <a href="%1">clique aqui</a> para acessar o serviço com o seu navegador. - + Invalid URL URL inválida - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Pasta local de sincronização %1 já existe, configurando para sincronização. <br/><br/> - + Creating local sync folder %1... Criação de pasta de sincronização local %1... - + ok ok - + failed. falhou. - + Could not create local folder %1 Não foi possível criar pasta local %1 - + No remote folder specified! Nenhuma pasta remota foi especificada! - + Error: %1 Erro: %1 - + creating folder on ownCloud: %1 criar pasta no ownCloud: %1 - + Remote folder %1 created successfully. Pasta remota %1 criada com sucesso. - + The remote folder %1 already exists. Connecting it for syncing. Pasta remota %1 já existe. Conectando para sincronizar. - - + + The folder creation resulted in HTTP error code %1 A criação da pasta resultou em um erro do código HTTP %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> A criação da pasta remota falhou porque as credenciais fornecidas estão erradas!<br/>Por favor, volte e verifique suas credenciais.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">A criação remota de pasta falhou provavelmente as causas da falha na criação da pasta remota são credenciais erradas</font><br/>Volte e verifique suas credenciais, por favor.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Falha na criação da pasta remota %1 com erro <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Uma conexão de sincronização de %1 para o diretório remoto %2 foi realizada. - + Successfully connected to %1! Conectado com sucesso a %1! - + Connection to %1 could not be established. Please check again. Conexão à %1 não foi estabelecida. Por favor, verifique novamente. - + Folder rename failed Falha no nome da pasta - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Não é possível remover e fazer backup da pasta porque a pasta ou um arquivo que está nesta pasta está aberto em outro programa. Por favor, feche a pasta ou arquivo e clique tentar novamente ou cancelar a operação. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Pasta de sincronização local %1 criada com sucesso!</b></font> diff --git a/translations/client_ru.ts b/translations/client_ru.ts index a2c7b59e1..be56d1769 100644 --- a/translations/client_ru.ts +++ b/translations/client_ru.ts @@ -744,26 +744,26 @@ Невозможно прочесть системный файл исключений - + A new folder larger than %1 MB has been added: %2. Был добавлен новый каталог размером более %1 МБ: %2. - + A folder from an external storage has been added. Добавлен каталог из внешнего хранилища. - + Please go in the settings to select it if you wish to download it. Пожалуйста, перейдите в настройки, чтобы выбрать его, если вы хотите его скачать. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -774,7 +774,7 @@ If you decide to delete the files, they will be unavailable to you, unless you a Если вы решили удалить файлы, они станут вам недоступны, крмое случая, когда вы сам владелец. - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. @@ -783,39 +783,39 @@ If this was an accident and you decide to keep your files, they will be re-synce Если это произошло случайно и вы решите сохранить файлы, они будут перезакачаны с сервера. - + Remove All Files? Удалить все файлы? - + Remove all files Удалить все файлы - + Keep files Сохранить файлы - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? Эта синхронизация собирается сбросить файлы в катлоге '%1' в более ранее состояние. Такое может случиться, если на сервере восстановлена резервная копия. Если продолжать синхронизацию как обычно, то ваши файлы будут перетёрты более старыми версиями. Хотите сохранить ваши локальные свежие файлы в качестве конфликтных? - + Backup detected Обнаружена резервная копия - + Normal Synchronisation Обычная синхронизация - + Keep Local Files as Conflict Сохранить локальные файлы как конфликтующие @@ -1916,144 +1916,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Успешное подключение к %1: %2 версия %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Не удалось подключиться к %1 в %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Превышено время ожидания соединения к %1 на %2. - + Trying to connect to %1 at %2... Попытка соединиться с %1 на %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Запрос авторизации с сервера перенаправлен на '%1'. Ссылка не верна, сервер не настроен. - + There was an invalid response to an authenticated webdav request Обнаружен не верный ответ на авторизованный запрос WebDAV - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Доступ запрещён сервером. Чтобы доказать, что у Вас есть права доступа, <a href="%1">нажмите здесь</a> для входа через Ваш браузер. - + Invalid URL Неверная ссылка - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Локальный каталог синхронизации %1 уже существует, используем его для синхронизации.<br/><br/> - + Creating local sync folder %1... Создание локальной папки синхронизации %1... - + ok ок - + failed. не удалось. - + Could not create local folder %1 Не удалось создать локальный каталог синхронизации %1 - + No remote folder specified! Не указан удалённый каталог! - + Error: %1 Ошибка: %1 - + creating folder on ownCloud: %1 создание каталога на ownCloud: %1 - + Remote folder %1 created successfully. Удалённый каталог %1 успешно создан. - + The remote folder %1 already exists. Connecting it for syncing. Удалённый каталог %1 уже существует. Подключение к нему для синхронизации. - - + + The folder creation resulted in HTTP error code %1 Создание каталога завершилось с HTTP-ошибкой %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Не удалось создать удаленный каталог, так как представленные параметры доступа неверны!<br/>Пожалуйста, вернитесь назад и проверьте учетные данные.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Не удалось создать удаленный каталог, возможно, указанные учетные данные неверны.</font><br/>Вернитесь назад и проверьте учетные данные.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Удаленный каталог %1 не создан из-за ошибки <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Установлено соединение синхронизации %1 к удалённому каталогу %2. - + Successfully connected to %1! Соединение с %1 установлено успешно! - + Connection to %1 could not be established. Please check again. Не удалось соединиться с %1. Попробуйте снова. - + Folder rename failed Ошибка переименования каталога - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Невозможно удалить каталог и создать его резервную копию, каталог или файл в ней открыт в другой программе. Закройте каталог или файл и нажмите "Повторить попытку", либо прервите мастер настройки. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Локальный каталог синхронизации %1 успешно создан!</b></font> diff --git a/translations/client_sk.ts b/translations/client_sk.ts index b682e615d..bb60fab4e 100644 --- a/translations/client_sk.ts +++ b/translations/client_sk.ts @@ -744,24 +744,24 @@ Nemožno čítať systémový exclude file - + A new folder larger than %1 MB has been added: %2. - + A folder from an external storage has been added. - + Please go in the settings to select it if you wish to download it. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -769,46 +769,46 @@ If you decide to delete the files, they will be unavailable to you, unless you a - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - + Remove All Files? Odstrániť všetky súbory? - + Remove all files Odstrániť všetky súbory - + Keep files Ponechať súbory - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? - + Backup detected Záloha je dostupná - + Normal Synchronisation Bežná synchronizácia - + Keep Local Files as Conflict Ponechať lokálne súbory ako konfliktné @@ -1908,144 +1908,144 @@ Nie je vhodné ju používať. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Úspešne pripojené k %1: %2 verzie %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Zlyhalo spojenie s %1 o %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Časový limit vypršal pri pokuse o pripojenie k %1 na %2. - + Trying to connect to %1 at %2... Pokúšam sa o pripojenie k %1 na %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Overená požiadavka na server bola presmerovaná na '%1'. URL je zlá, server nie je správne nakonfigurovaný. - + There was an invalid response to an authenticated webdav request Neplatná odpoveď na overenú webdav požiadavku - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Prístup zamietnutý serverom. Po overení správnych prístupových práv, <a href="%1">kliknite sem</a> a otvorte službu v svojom prezerači. - + Invalid URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Lokálny synchronizačný priečinok %1 už existuje, prebieha jeho nastavovanie pre synchronizáciu.<br/><br/> - + Creating local sync folder %1... Vytváranie lokálneho synchronizačného priečinka %1 ... - + ok v poriadku - + failed. neúspešné. - + Could not create local folder %1 Nemožno vytvoriť lokálny priečinok %1 - + No remote folder specified! Vzdialený priečinok nie je nastavený! - + Error: %1 Chyba: %1 - + creating folder on ownCloud: %1 vytváram priečinok v ownCloude: %1 - + Remote folder %1 created successfully. Vzdialený priečinok %1 bol úspešne vytvorený. - + The remote folder %1 already exists. Connecting it for syncing. Vzdialený priečinok %1 už existuje. Prebieha jeho pripájanie pre synchronizáciu. - - + + The folder creation resulted in HTTP error code %1 Vytváranie priečinka skončilo s HTTP chybovým kódom %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Proces vytvárania vzdialeného priečinka zlyhal, lebo použité prihlasovacie údaje nie sú správne!<br/>Prosím skontrolujte si vaše údaje a skúste to znovu.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Vytvorenie vzdialeného priečinka pravdepodobne zlyhalo kvôli nesprávnym prihlasovacím údajom.</font><br/>Prosím choďte späť a skontrolujte ich.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Vytvorenie vzdialeného priečinka %1 zlyhalo s chybou <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Synchronizačné spojenie z %1 do vzdialeného priečinka %2 bolo práve nastavené. - + Successfully connected to %1! Úspešne pripojené s %1! - + Connection to %1 could not be established. Please check again. Pripojenie k %1 nemohlo byť iniciované. Prosím skontrolujte to znovu. - + Folder rename failed Premenovanie priečinka zlyhalo - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Nemožno odstrániť a zazálohovať priečinok, pretože priečinok alebo súbor je otvorený v inom programe. Prosím zatvorte priečinok nebo súbor a skúste to znovu alebo zrušte akciu. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Lokálny synchronizačný priečinok %1 bol úspešne vytvorený!</b></font> diff --git a/translations/client_sl.ts b/translations/client_sl.ts index 95db575c0..b4816b3ae 100644 --- a/translations/client_sl.ts +++ b/translations/client_sl.ts @@ -744,26 +744,26 @@ Ni mogoče prebrati sistemske izločitvene datoteke - + A new folder larger than %1 MB has been added: %2. Dodana je nova mapa, ki presega %1 MB: %2. - + A folder from an external storage has been added. Dodana je mapa iz zunanje shrambe. - + Please go in the settings to select it if you wish to download it. Med nastavitvami jo lahko izberete in označite za prejem. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -774,7 +774,7 @@ V kolikor se odločite te datoteke ohraniti, in so na voljo ustrezna dovoljenja, Nasprotno, če potrdite izbris in niste lastnik datotek, te ne bodo več na voljo. - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. @@ -783,22 +783,22 @@ 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. - + Remove All Files? Ali naj bodo odstranjene vse datoteke? - + Remove all files Odstrani vse datoteke - + Keep files Ohrani datoteke - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? @@ -807,17 +807,17 @@ To se lahko zgodi, če je na strežniku na primer obnovljena varnostna kopija. Z nadaljevanjem usklajevanja bodo vse trenutne datoteke prepisane s starejšimi različicami. Ali želite ohraniti trenutne krajevne datoteke kot preimenovane datoteke v usklajevalnem sporu? - + Backup detected Varnostna kopija je zaznana - + Normal Synchronisation Običajno usklajevanje - + Keep Local Files as Conflict Ohrani krajevne datoteke kot datoteke v sporu @@ -1919,144 +1919,144 @@ Uporaba ni priporočljiva. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Uspešno vzpostavljena povezava z %1: %2 različica %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Povezava z %1 pri %2 je spodletela:<br/>%3 - + Timeout while trying to connect to %1 at %2. Prekinitev med poskusom povezave na %1 pri %2. - + Trying to connect to %1 at %2... Poteka poskus povezave z %1 na %2 ... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Zahteva za overitev s strežnikom je bila preusmerjena na '%1'. Naslov URL ni veljaven ali pa strežnik ni ustrezno nastavljen. - + There was an invalid response to an authenticated webdav request Prejet je neveljaven odziv na zahtevo overitve webdav - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Strežnik ne dovoli dostopa. Če želite preveriti, ali imate ustrezen dostop, <a href="%1">kliknite tu</a> za dostop do te storitve z brskalnikom. - + Invalid URL Neveljaven naslov URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Krajevna mapa %1 že obstaja. Nastavljena bo za usklajevanje.<br/><br/> - + Creating local sync folder %1... Ustvarjanje mape za krajevno usklajevanje %1 ... - + ok je v redu - + failed. je spodletelo. - + Could not create local folder %1 Krajevne mape %1 ni mogoče ustvariti. - + No remote folder specified! Ni navedenega oddaljenega strežnika! - + Error: %1 Napaka: %1 - + creating folder on ownCloud: %1 ustvarjanje mape v oblaku ownCloud: %1 - + Remote folder %1 created successfully. Oddaljena mapa %1 je uspešno ustvarjena. - + The remote folder %1 already exists. Connecting it for syncing. Oddaljena mapa %1 že obstaja. Vzpostavljena bo povezava za usklajevanje. - - + + The folder creation resulted in HTTP error code %1 Ustvarjanje mape je povzročilo napako HTTP %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Ustvarjanje mape na oddaljenem naslovu je spodletelo zaradi napačnih poveril. <br/>Vrnite se in preverite zahtevana gesla.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Ustvarjanje oddaljene mape je spodletelo. Najverjetneje je vzrok v neustreznih poverilih.</font><br/>Vrnite se na predhodno stran in jih preverite.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Ustvarjanje oddaljene mape %1 je spodletelo z napako <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Povezava za usklajevanje med %1 in oddaljeno mapo %2 je vzpostavljena. - + Successfully connected to %1! Povezava z %1 je uspešno vzpostavljena! - + Connection to %1 could not be established. Please check again. Povezave z %1 ni mogoče vzpostaviti. Preveriti je treba nastavitve. - + Folder rename failed Preimenovanje mape je spodletelo - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Mape ni mogoče odstraniti niti ni mogoče ustvariti varnostne kopije, saj je mapa oziroma dokument v njej odprt z drugim programom. Zaprite mapo/dokument ali prekinite namestitev. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Krajevno usklajena mapa %1 je uspešno ustvarjena!</b></font> diff --git a/translations/client_sr.ts b/translations/client_sr.ts index ed7179321..82506cba4 100644 --- a/translations/client_sr.ts +++ b/translations/client_sr.ts @@ -744,24 +744,24 @@ Не могу да прочитам системски списак за игнорисање - + A new folder larger than %1 MB has been added: %2. - + A folder from an external storage has been added. - + Please go in the settings to select it if you wish to download it. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -769,46 +769,46 @@ If you decide to delete the files, they will be unavailable to you, unless you a - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - + Remove All Files? Уклонити све фајлове? - + Remove all files Уклони све фајлове - + Keep files Остави фајлове - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? - + Backup detected - + Normal Synchronisation - + Keep Local Files as Conflict @@ -1908,144 +1908,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Успешно повезан са %1: %2 верзија %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Неуспешно повезивање са %1 на %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Време је истекло у покушају повезивања са %1 на %2. - + Trying to connect to %1 at %2... Покушавам да се повежем са %1 на %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Аутентификован захтев серверу је преусмерен на %1. УРЛ је лош, сервер је лоше подешен. - + There was an invalid response to an authenticated webdav request Добијен је неисправан одговор на аутентификовани ВебДАВ захтев - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Сервер није дозволио приступ. Да проверите имате ли исправан приступ, <a href="%1">кликните овде</a> да бисте приступили услузи из прегледача. - + Invalid URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Локална фасцикла %1 већ постоји. Одређујем је за синхронизацију.<br/><br/> - + Creating local sync folder %1... Правим локалну фасциклу синхронизације %1... - + ok у реду - + failed. неуспешно - + Could not create local folder %1 Не могу да направим локалну фасциклу %1 - + No remote folder specified! Није наведена удаљена фасцикла! - + Error: %1 Грешка: %1 - + creating folder on ownCloud: %1 правим фасциклу у облаку: % 1 - + Remote folder %1 created successfully. Удаљена фасцикла %1 је успешно направљена. - + The remote folder %1 already exists. Connecting it for syncing. Удаљена фасцикла %1 већ постоји. Повезујем се ради синхронизовања. - - + + The folder creation resulted in HTTP error code %1 Прављење фасцикле довело је до ХТТП грешке са кодом %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Прављење удаљене фасцикле није успело због погрешних акредитива!<br/>Идите назад и проверите ваше акредитиве.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Прављење удаљене фасцикле није успело због погрешних акредитива.</font><br/>Идите назад и проверите ваше акредитиве.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Прављење удаљене фасцикле %1 није успело због грешке <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Веза за синхронизацију %1 до удаљеног директоријума %2 је подешена. - + Successfully connected to %1! Успешно повезан са %1! - + Connection to %1 could not be established. Please check again. Не може се успоставити веза са %1. Проверите поново. - + Folder rename failed Преименовање није успело - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Не могу да уклоним и направим резервну копију фасцикле јер су фасцикла или фајл отворени у другом програму. Затворите фасциклу или фајл и покушајте поново или одустаните од подешавања. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Локална фасцикла за синхронизовање %1 је успешно направљена!</b></font> diff --git a/translations/client_sv.ts b/translations/client_sv.ts index 3fa7c8fa2..b13076f21 100644 --- a/translations/client_sv.ts +++ b/translations/client_sv.ts @@ -744,26 +744,26 @@ Kunde inte läsa systemets exkluderings-fil - + A new folder larger than %1 MB has been added: %2. En ny mapp större än %1 MB har lagts till: %2. - + A folder from an external storage has been added. En mapp från en extern lagringsyta har lagts till. - + Please go in the settings to select it if you wish to download it. Vänligen gå till inställningar och välj den om du önskar att ladda ner den. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -771,29 +771,29 @@ If you decide to delete the files, they will be unavailable to you, unless you a - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - + Remove All Files? Ta bort alla filer? - + Remove all files Ta bort alla filer - + Keep files Behåll filer - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? @@ -802,17 +802,17 @@ Detta kan vara för att en säkerhetskopia har återställts på servern. Om du fortsätter synkningen kommer alla dina filer återställas med en äldre version av filen. Vill du behålla dina nyare lokala filer som konfliktfiler? - + Backup detected Backup upptäckt - + Normal Synchronisation Normal synkronisation - + Keep Local Files as Conflict Behåll lokala filer som konflikt @@ -1914,144 +1914,144 @@ Det är inte lämpligt använda den. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Lyckades ansluta till %1: %2 version %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Misslyckades att ansluta till %1 vid %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Försök att ansluta till %1 på %2 tog för lång tid. - + Trying to connect to %1 at %2... Försöker ansluta till %1 på %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Den autentiserade begäran till servern omdirigerades till '%1'. Den URLen är ogiltig, server är felkonfigurerad. - + There was an invalid response to an authenticated webdav request Det kom ett ogiltigt svar på en autentiserad webdav-begäran - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Åtkomst förbjuden av servern. För att bekräfta att du har korrekta rättigheter, <a href="%1">klicka här</a> för att ansluta till tjänsten med din webb-läsare. - + Invalid URL Ogiltig URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Lokal synkmapp %1 finns redan, aktiverar den för synk.<br/><br/> - + Creating local sync folder %1... Skapar lokal synk-mapp %1... - + ok ok - + failed. misslyckades. - + Could not create local folder %1 Kunde inte skapa lokal mapp %1 - + No remote folder specified! Ingen fjärrmapp specificerad! - + Error: %1 Fel: %1 - + creating folder on ownCloud: %1 skapar mapp på ownCloud: %1 - + Remote folder %1 created successfully. Fjärrmapp %1 har skapats. - + The remote folder %1 already exists. Connecting it for syncing. Fjärrmappen %1 finns redan. Ansluter den för synkronisering. - - + + The folder creation resulted in HTTP error code %1 Skapande av mapp resulterade i HTTP felkod %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Det gick inte att skapa mappen efter som du inte har tillräckliga rättigheter!<br/>Vänligen återvänd och kontrollera dina rättigheter. - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Misslyckades skapa fjärrmappen, troligen p.g.a felaktiga inloggningsuppgifter.</font><br/>Kontrollera dina inloggningsuppgifter.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Misslyckades skapa fjärrmapp %1 med fel <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. En synkroniseringsanslutning från %1 till fjärrmappen %2 har skapats. - + Successfully connected to %1! Ansluten till %1! - + Connection to %1 could not be established. Please check again. Anslutningen till %1 kunde inte etableras. Var god kontrollera och försök igen. - + Folder rename failed Omdöpning av mapp misslyckades - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Kan inte ta bort och göra en säkerhetskopia av mappen på grund av att mappen eller en fil i den används av ett annat program. Vänligen stäng mappen eller filen och försök igen eller avbryt installationen. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Lokal synkmapp %1 skapad!</b></font> diff --git a/translations/client_th.ts b/translations/client_th.ts index b93df0bf3..6f0a5fcf3 100644 --- a/translations/client_th.ts +++ b/translations/client_th.ts @@ -744,26 +744,26 @@ ไม่สามารถอ่าน ยกเว้นไฟล์ระบบ - + A new folder larger than %1 MB has been added: %2. โฟลเดอร์ใหม่มีขนาดใหญ่กว่า %1 เมกะไบต์ ได้ถูกเพิ่ม: %2 - + A folder from an external storage has been added. โฟลเดอร์ที่มีพื้นที่จัดเก็บข้อมูลภายนอกได้ถูกเพิ่ม - + Please go in the settings to select it if you wish to download it. กรุณาไปในส่วนของการตั้งค่าเพื่อเลือก ถ้าคุณต้องการจะดาวน์โหลด - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -774,7 +774,7 @@ If you decide to delete the files, they will be unavailable to you, unless you a หากคุณตัดสินใจที่จะลบไฟล์ก็จะทำให้ไม่มีใครสามารถใช้งานโฟลเดอร์นี้ได้เพราะคุณเป็นเจ้าของ - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. @@ -784,22 +784,22 @@ If this was an accident and you decide to keep your files, they will be re-synce ถ้าเรื่องนี้เป็นอุบัติเหตุและคุณตัดสินใจที่จะเก็บไฟล์ของคุณ ไฟล์ของคุณก็จะถูกประสานข้อมูลใหม่อีกครั้ง - + Remove All Files? ลบไฟล์ทั้งหมด? - + Remove all files ลบไฟล์ทั้งหมด - + Keep files เก็บไฟล์เอาไว้ - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? @@ -808,17 +808,17 @@ Continuing the sync as normal will cause all your files to be overwritten by an ไฟล์ปัจจุบันของคุณทั้งหมดจะถูกเขียนทับด้วยไฟล์เก่า คุณต้องการเก็บไฟล์ไว้? - + Backup detected ตรวจพบการสำรองข้อมูล - + Normal Synchronisation ประสานข้อมูลปกติ - + Keep Local Files as Conflict เก็บไฟล์ต้นทางเป็นไฟล์ที่มีปัญหา @@ -1920,144 +1920,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">เชื่อมต่อกับ %1: %2 รุ่น %3 (%4) เสร็จเรียบร้อยแล้ว</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 ล้มเหลวในการเชื่อมต่อไปยัง %1 ที่ %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. หมดเวลาขณะที่พยายามเชื่อมต่อไปยัง %1 ที่ %2 - + Trying to connect to %1 at %2... กำลังพยายามเชื่อมต่อไปที่ %1 ที่ %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. คำขอการรับรองความถูกต้องไปยังเซิร์ฟเวอร์ที่ถูกเปลี่ยนเส้นทางไปยัง - + There was an invalid response to an authenticated webdav request มีการตอบสนองที่ไม่ถูกต้องที่จะร้องขอการรับรองความถูกต้องของ WebDAV - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. การเข้าถึงถูกระงับโดยเซิร์ฟเวอร์ เพื่อตรวจสอบว่าคุณมีการเข้าถึงที่เหมาะสม <a href="%1">คลิกที่นี่</a> เพื่อรเข้าถึงบริการกับเบราว์เซอร์ของคุณ - + Invalid URL URL ไม่ถูกต้อง - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> ประสานข้อมูลโฟลเดอร์ต้นทาง %1 มีอยู่แล้ว กรุณาตั้งค่าเพื่อถ่ายข้อมูล <br/<br/> - + Creating local sync folder %1... สร้างประสานข้อมูลโฟลเดอร์ต้นทาง %1... - + ok ตกลง - + failed. ล้มเหลว - + Could not create local folder %1 ไม่สามารถสร้างผสานข้อมูลโฟลเดอร์ต้นทาง %1... - + No remote folder specified! ไม่มีโฟลเดอร์รีโมทที่ระบุ! - + Error: %1 ข้อผิดพลาด: %1 - + creating folder on ownCloud: %1 กำลังสร้างโฟลเดอร์ใหม่บน ownCloud: %1 - + Remote folder %1 created successfully. โฟลเดอร์รีโมท %1 ถูกสร้างเรียบร้อยแล้ว - + The remote folder %1 already exists. Connecting it for syncing. โฟลเดอร์รีโมทมี %1 อยู่แล้ว กำลังเชื่อมต่อเพื่อถ่ายโอนข้อมูล - - + + The folder creation resulted in HTTP error code %1 การสร้างโฟลเดอร์ดังกล่าวส่งผลให้เกิดรหัสข้อผิดพลาด HTTP error code %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> สร้างโฟลเดอร์ระยะไกลล้มเหลวเนื่องจากมีข้อมูลผิดพลาด! - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">การสร้างโฟลเดอร์รีโมทล้มเหลว ซึ่งอาจมีสาเหตุมาจากการกรอกข้อมูลส่วนตัวเพื่อเข้าใช้งานไม่ถูกต้อง.</font><br/>กรุณาย้อนกลับไปแล้วตรวจสอบข้อมูลส่วนตัวของคุณอีกครั้ง.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. การสร้างโฟลเดอร์ระยะไกล %1 ล้มเหลวเนื่องข้อผิดพลาด <tt>%2</tt> - + A sync connection from %1 to remote directory %2 was set up. การเชื่อมต่อเผื่อประสานข้อมูลจาก %1 ไปที่ไดเร็กทอรี่ระยะไกล %2 ได้ถูกติดตั้งแล้ว - + Successfully connected to %1! เชื่อมต่อไปที่ %1! สำเร็จ - + Connection to %1 could not be established. Please check again. การเชื่อมต่อกับ %1 ไม่สามารถดำเนินการได้ กรุณาตรวจสอบอีกครั้ง - + Folder rename failed เปลี่ยนชื่อโฟลเดอร์ล้มเหลว - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. ไม่สามารถลบและสำรองข้อมูลโฟลเดอร์เพราะโฟลเดอร์หรือไฟล์ในนั้นจะเปิดในโปรแกรมอื่นอยู่ กรุณาปิดโฟลเดอร์หรือไฟล์และกดลองใหม่อีกครั้งหรือยกเลิกการติดตั้ง - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>ประสานข้อมูลโฟลเดอร์ต้นทาง %1 ได้ถูกสร้างขึ้นเรียบร้อยแล้ว!</b></font> diff --git a/translations/client_tr.ts b/translations/client_tr.ts index 6e7ddf9ad..49b9f5020 100644 --- a/translations/client_tr.ts +++ b/translations/client_tr.ts @@ -744,24 +744,24 @@ Sistem hariç tutulma dosyası okunamadı - + A new folder larger than %1 MB has been added: %2. - + A folder from an external storage has been added. - + Please go in the settings to select it if you wish to download it. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -769,46 +769,46 @@ If you decide to delete the files, they will be unavailable to you, unless you a - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - + Remove All Files? Tüm Dosyalar Kaldırılsın mı? - + Remove all files Tüm dosyaları kaldır - + Keep files Dosyaları koru - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? - + Backup detected Yedek bulundu - + Normal Synchronisation Normal Eşitleme - + Keep Local Files as Conflict Çakışma Durumunda Yerel Dosyaları Tut @@ -1909,144 +1909,144 @@ Kullanmanız önerilmez. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">%1 bağlantısı başarılı: %2 sürüm %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 %2 üzerinde %1 adresine bağlanılamadı:<br/>%3 - + Timeout while trying to connect to %1 at %2. %2 üzerinde %1 bağlantısı yapılırken zaman aşımı. - + Trying to connect to %1 at %2... %2 üzerinde %1 bağlantısı deneniyor... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Sunucuda giriş sırasında istek '%1' adresine yönlendirilmiş. Adres hatalı veya sunucu yanlış ayarlanmış. - + There was an invalid response to an authenticated webdav request Yetkilendirilmiş webdav isteği geçersiz bir cevap alındı - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Erişim sunucu tarafından yasaklandı. Geçerli erişime sahip olup olmadığınızı doğrulamak için hizmete web tarayıcınızla erişmek üzere <a href="%1">buraya tıklayın</a>. - + Invalid URL Geçersiz URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Yerel eşitleme klasörü %1 zaten mevcut, eşitlemek için ayarlanıyor.<br/><br/> - + Creating local sync folder %1... Yerel eşitleme klasörü %1 oluşturuluyor... - + ok tamam - + failed. başarısız. - + Could not create local folder %1 %1 yerel klasörü oluşturulamadı - + No remote folder specified! Uzak klasör belirtilmemiş! - + Error: %1 Hata: %1 - + creating folder on ownCloud: %1 ownCloud üzerinde klasör oluşturuluyor: %1 - + Remote folder %1 created successfully. %1 uzak klasörü başarıyla oluşturuldu. - + The remote folder %1 already exists. Connecting it for syncing. Uzak klasör %1 zaten mevcut. Eşitlemek için bağlanılıyor. - - + + The folder creation resulted in HTTP error code %1 Klasör oluşturma %1 HTTP hata kodu ile sonuçlandı - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Uzak klasör oluşturması, geçersiz kimlik bilgileri nedeniyle başarısız!<br/>Lütfen geri gidin ve bilgileri denetleyin.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Uzak klasör oluşturma muhtemelen hatalı kimlik bilgilerinden dolayı başarısız oldu.</font><br/>Lütfen geri gidip kimlik bilgilerini doğrulayın.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Uzak klasör %1 oluşturma işlemi <tt>%2</tt> hatası ile başarısız oldu. - + A sync connection from %1 to remote directory %2 was set up. %1 kaynaklı %2 uzak dizinine bir eşitleme bağlantısı ayarlandı. - + Successfully connected to %1! %1 bağlantısı başarılı! - + Connection to %1 could not be established. Please check again. %1 bağlantısı kurulamadı. Lütfen tekrar denetleyin. - + Folder rename failed Klasör adlandırma başarısız - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Klasör veya içerisindeki bir dosya farklı bir program içerisinde açık olduğundan, kaldırma ve yedekleme işlemi yapılamıyor. Lütfen klasör veya dosyayı kapatıp yeniden deneyin veya kurulumu iptal edin. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Yerel eşitleme klasörü %1 başarıyla oluşturuldu!</b></font> diff --git a/translations/client_uk.ts b/translations/client_uk.ts index 602a95007..776eab971 100644 --- a/translations/client_uk.ts +++ b/translations/client_uk.ts @@ -744,24 +744,24 @@ Неможливо прочитати виключений системний файл - + A new folder larger than %1 MB has been added: %2. - + A folder from an external storage has been added. - + Please go in the settings to select it if you wish to download it. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -769,46 +769,46 @@ If you decide to delete the files, they will be unavailable to you, unless you a - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - + Remove All Files? Видалити усі файли? - + Remove all files Видалити усі файли - + Keep files Зберегти файли - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? - + Backup detected Резервну копію знайдено - + Normal Synchronisation - + Keep Local Files as Conflict @@ -1907,144 +1907,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Успішно підключено до %1: %2 версія %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 Не вдалося з'єднатися з %1 в %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Перевищено час очікування з'єднання до %1 на %2. - + Trying to connect to %1 at %2... Спроба підключення до %1 на %2... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. Запит аутентифікації до серверу було переадресовано до '%1'. Поганий URL, сервер сконфігуровано неправильно. - + There was an invalid response to an authenticated webdav request Неправильна відповідь на автентифікований запит webdav - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Доступ заборонений сервером. Щоб довести, що у Вас є права доступу, <a href="%1">клікніть тут</a> для входу через Ваш браузер. - + Invalid URL Невірний URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Локальна тека синхронізації %1 вже існує, налаштування її для синхронізації.<br/><br/> - + Creating local sync folder %1... Створення локальної теки для синхронізації %1... - + ok ok - + failed. не вдалося. - + Could not create local folder %1 Не вдалося створити локальну теку $1 - + No remote folder specified! Не вказано віддалену теку! - + Error: %1 Помилка: %1 - + creating folder on ownCloud: %1 створення теки на ownCloud: %1 - + Remote folder %1 created successfully. Віддалена тека %1 успішно створена. - + The remote folder %1 already exists. Connecting it for syncing. Віддалена тека %1 вже існує. Під'єднання для синхронізації. - - + + The folder creation resulted in HTTP error code %1 Створення теки завершилось HTTP помилкою %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Створити віддалену теку не вдалося через невірно вказані облікові дані.<br/>Поверніться назад та перевірте облікові дані.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Створити віддалену теку не вдалося, можливо, через невірно вказані облікові дані.</font><br/>Будь ласка, поверніться назад та перевірте облікові дані.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Не вдалося створити віддалену теку %1 через помилку <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. З'єднання для синхронізації %1 з віддаленою текою %2 було встановлено. - + Successfully connected to %1! Успішно під'єднано до %1! - + Connection to %1 could not be established. Please check again. Підключення до %1 встановити не вдалося. Будь ласка, перевірте ще раз. - + Folder rename failed Не вдалося перейменувати теку - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Неможливо видалити теку та створити її резервну копію, оскільки тека або файли, що в ній розташовані, використовуються. Будь ласка, закрийте всі програми, що можуть використовувати цю теку та спробуйте ще раз, або скасуйте встановлення. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Локальна тека синхронізації %1 успішно створена!</b></font> diff --git a/translations/client_zh_CN.ts b/translations/client_zh_CN.ts index e002cd660..b8d9530f8 100644 --- a/translations/client_zh_CN.ts +++ b/translations/client_zh_CN.ts @@ -744,26 +744,26 @@ 无法读取系统排除的文件 - + A new folder larger than %1 MB has been added: %2. 一个大于 %1 MB 的新文件夹 %2 已被添加。 - + A folder from an external storage has been added. 一个来自外部存储的文件夹已被添加。 - + Please go in the settings to select it if you wish to download it. 如果您想下载,请到设置页面选择它。 - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -774,7 +774,7 @@ If you decide to delete the files, they will be unavailable to you, unless you a 如果您决定删除这些文件,它们将不再可用,除非您是其所有者。 - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. @@ -783,22 +783,22 @@ If this was an accident and you decide to keep your files, they will be re-synce 如果这是一个意外而您想要保留这些文件,他们会被重新从服务器同步过来。 - + Remove All Files? 删除所有文件? - + Remove all files 删除所有文件 - + Keep files 保持所有文件 - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? @@ -807,17 +807,17 @@ Continuing the sync as normal will cause all your files to be overwritten by an 继续正常同步将导致您全部文件被更早状态的旧文件覆盖。您想要保留冲突文件的本地最新版本吗? - + Backup detected 备份已删除 - + Normal Synchronisation 正常同步 - + Keep Local Files as Conflict 保留本地文件为冲突文件 @@ -1918,144 +1918,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">成功连接到 %1:%2 版本 %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 连接到 %1 (%2)失败:<br />%3 - + Timeout while trying to connect to %1 at %2. 连接到 %1 (%2) 时超时。 - + Trying to connect to %1 at %2... 尝试连接位于 %2 的 %1... - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. 被发送到服务器的认证请求被重定向到'%1'。此URL无效,服务器配置错误。 - + There was an invalid response to an authenticated webdav request 对于一个验证的 webdav 请求,有一个无效的响应 - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. 服务器拒绝了访问。<a href="%1">点击这里打开浏览器</a> 来确认您是否有权访问。 - + Invalid URL 无效URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> 本地同步文件夹 %1 已存在,将使用它来同步。<br/><br/> - + Creating local sync folder %1... 创建本地同步目录%1 - + ok 成功 - + failed. 失败 - + Could not create local folder %1 不能创建本地文件夹 %1 - + No remote folder specified! 未指定远程文件夹! - + Error: %1 错误:%1 - + creating folder on ownCloud: %1 在 ownCloud 创建文件夹:%1 - + Remote folder %1 created successfully. 远程目录%1成功创建。 - + The remote folder %1 already exists. Connecting it for syncing. 远程文件夹 %1 已存在。连接它以供同步。 - - + + The folder creation resulted in HTTP error code %1 创建文件夹出现 HTTP 错误代码 %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> 远程文件夹创建失败,因为提供的凭证有误!<br/>请返回并检查您的凭证。</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">远程文件夹创建失败,可能是由于提供的用户名密码不正确。</font><br/>请返回并检查它们。</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. 创建远程文件夹 %1 失败,错误为 <tt>%2</tt>。 - + A sync connection from %1 to remote directory %2 was set up. 已经设置了一个 %1 到远程文件夹 %2 的同步连接 - + Successfully connected to %1! 成功连接到了 %1! - + Connection to %1 could not be established. Please check again. 无法建立到 %1的链接,请稍后重试(这里“稍后”用对了,赞!)。 - + Folder rename failed 文件夹更名失败 - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. 无法移除和备份文件夹,由于文件夹或文件正在被另一程序占用。请关闭程序后重试,或取消安装。 - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>本地同步目录 %1 已成功创建</b></font> diff --git a/translations/client_zh_TW.ts b/translations/client_zh_TW.ts index 8c7fdf642..a3dddf6d7 100644 --- a/translations/client_zh_TW.ts +++ b/translations/client_zh_TW.ts @@ -744,24 +744,24 @@ 無法讀取系統的排除檔案 - + A new folder larger than %1 MB has been added: %2. - + A folder from an external storage has been added. - + Please go in the settings to select it if you wish to download it. - + All files in the sync folder '%1' folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to keep the files, they will be re-synced with the server if you have rights to do so. @@ -769,46 +769,46 @@ If you decide to delete the files, they will be unavailable to you, unless you a - + All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - + Remove All Files? 移除所有檔案? - + Remove all files 移除所有檔案 - + Keep files 保留檔案 - + This sync would reset the files to an earlier time in the sync folder '%1'. This might be because a backup was restored on the server. Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? - + Backup detected - + Normal Synchronisation - + Keep Local Files as Conflict @@ -1910,144 +1910,144 @@ It is not advisable to use it. OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">成功連線到 %1: %2 版本 %3 (%4)</font><br/><br/> - + Failed to connect to %1 at %2:<br/>%3 從 %2 連線到 %1 失敗:<br/>%3 - + Timeout while trying to connect to %1 at %2. 從 %2 嘗試連線到 %1 逾時。 - + Trying to connect to %1 at %2... 嘗試連線到%1從%2 - + The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. 伺服器要求的認證請求被導向 '%1',這個URL可能不安全,此伺服器可能設定有錯。 - + There was an invalid response to an authenticated webdav request 從webdav的認證要求中有無效的回傳值 - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. 從伺服器存取被拒絕。為了正確驗證您的存取資訊 <a href="%1">請點選這裡</a> 透過瀏覽器來存取服務 - + Invalid URL - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> 本地同步資料夾%1已存在, 將其設置為同步<br/><br/> - + Creating local sync folder %1... 建立本地同步資料夾 %1... - + ok ok - + failed. 失敗 - + Could not create local folder %1 無法建立本地資料夾 %1 - + No remote folder specified! 沒有指定遠端資料夾! - + Error: %1 錯誤: %1 - + creating folder on ownCloud: %1 在 ownCloud 建立資料夾: %1 - + Remote folder %1 created successfully. 遠端資料夾%1建立成功! - + The remote folder %1 already exists. Connecting it for syncing. 遠端資料夾%1已存在,連線同步中 - - + + The folder creation resulted in HTTP error code %1 在HTTP建立資料夾失敗, error code %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> 由於帳號或密碼錯誤,遠端資料夾建立失敗<br/>請檢查您的帳號密碼。</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">遠端資料夾建立失敗,也許是因為所提供的帳號密碼錯誤</font><br/>請重新檢查您的帳號密碼</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. 建立遠端資料夾%1發生錯誤<tt>%2</tt>失敗 - + A sync connection from %1 to remote directory %2 was set up. 從%1到遠端資料夾%2的連線已建立 - + Successfully connected to %1! 成功連接到 %1 ! - + Connection to %1 could not be established. Please check again. 無法建立連線%1, 請重新檢查 - + Folder rename failed 重新命名資料夾失敗 - + Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. 無法移除與備份此資料夾,因為有其他的程式正在使用其中的資料夾或者檔案。請關閉使用中的資料夾或檔案並重試或者取消設定。 - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>本地同步資料夾 %1 建立成功!</b></font> From e4612ca5d4cd6b585b741232feb4f856093a501b Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Thu, 26 Oct 2017 02:19:20 +0200 Subject: [PATCH 43/45] [tx-robot] updated from transifex --- mirall.desktop.in | 3 ++ translations/client_el.ts | 2 +- translations/client_fr.ts | 76 +++++++++++++++++++-------------------- 3 files changed, 42 insertions(+), 39 deletions(-) diff --git a/mirall.desktop.in b/mirall.desktop.in index 684ae8a2c..c81bfc976 100644 --- a/mirall.desktop.in +++ b/mirall.desktop.in @@ -246,6 +246,9 @@ X-GNOME-Autostart-Delay=3 # Translations +# Translations + + # Translations Comment[oc]=@APPLICATION_NAME@ sincronizacion del client GenericName[oc]=Dorsièr de Sincronizacion diff --git a/translations/client_el.ts b/translations/client_el.ts index 190d45644..4a96c688e 100644 --- a/translations/client_el.ts +++ b/translations/client_el.ts @@ -1420,7 +1420,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from Show warnings - + Εμφάνιση προειδοποιήσεων diff --git a/translations/client_fr.ts b/translations/client_fr.ts index 4d58071ca..c5e530c3d 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -1001,7 +1001,7 @@ Continuer la synchronisation comme d'habitude fera en sorte que tous les fi Reconciling changes - + Rapprochement des modifications @@ -1410,7 +1410,7 @@ L'option "Autoriser suppression" permet de ne pas bloquer la supp <no filter> - + <no filter> @@ -1474,7 +1474,7 @@ L'option "Autoriser suppression" permet de ne pas bloquer la supp &Capture debug messages - + &Capturer les messages de déboguage @@ -1701,7 +1701,7 @@ L'option "Autoriser suppression" permet de ne pas bloquer la supp Could not parse the JSON returned from the server: <br><em>%1</em> - + Impossible d'analyser le fichier JSON récupéré sur le serveur : <br><em>%1</em> @@ -2306,7 +2306,7 @@ Il est déconseillé de l'utiliser. Upload of %1 exceeds the quota for the folder - + Le téléversement de %1 amène un dépassement de quota pour le dossier @@ -2638,12 +2638,12 @@ Il est déconseillé de l'utiliser. Enter a name to create a new public link... - + Entrer un nom pour créer un nouveau lien public... &Create new - + &Créer un nouveau @@ -2658,7 +2658,7 @@ Il est déconseillé de l'utiliser. Link properties: - + Propriétés du lien : @@ -2694,32 +2694,32 @@ Il est déconseillé de l'utiliser. %1 link - + lien %1 Link shares have been disabled - + Les partages par lien ont été désactivés Create public link share - + Créer une lien de partage public Open link in browser - + Ouvrir le lien dans le navigateur Copy link to clipboard - + Copier le lien vers le presse-papier Copy link to clipboard (direct download) - + Copier le lien vers le presse-papier (téléchargement direct) @@ -2729,7 +2729,7 @@ Il est déconseillé de l'utiliser. Send link by email (direct download) - + Envoyer le lien par courriel (téléchargement direct) @@ -2762,22 +2762,22 @@ Il est déconseillé de l'utiliser. <html><head/><body><p>You can direct people to this shared file or folder <a href="private link menu"><span style=" text-decoration: underline; color:#0000ff;">by giving them a private link</span></a>.</p></body></html> - + <html><head/><body><p>Vous pouvez diriger quelqu'un vers ce fichier ou dossier partagé <a href="private link menu"><span style=" text-decoration: underline; color:#0000ff;">en lui adressant un lien privé</span></a>.</p></body></html> The item is not shared with any users or groups - + Cet élément n'est partagé avec aucun utilisateur ou groupe Open link in browser - + Ouvrir le lien dans le navigateur Copy link to clipboard - + Copier le lien vers le presse-papier @@ -2792,7 +2792,7 @@ Il est déconseillé de l'utiliser. I shared something with you - + J'ai partagé quelque chose avec vous @@ -2885,7 +2885,7 @@ Il est déconseillé de l'utiliser. I shared something with you - + J'ai partagé quelque chose avec vous @@ -2895,12 +2895,12 @@ Il est déconseillé de l'utiliser. Copy private link to clipboard - + Copier le lien privé vers le presse-papier Send private link by email... - + Envoyer le lien privé par courriel... @@ -3178,7 +3178,7 @@ Il est déconseillé de l'utiliser. %1 (skipped due to earlier error, trying again in %2) - + %1 (ignoré à cause d'une précédente erreur, nouvel essai dans %2) @@ -3188,12 +3188,12 @@ Il est déconseillé de l'utiliser. Folder hierarchy is too deep - + La hiérarchie du dossier est trop profonde Conflict: Server version downloaded, local copy renamed and not uploaded. - + Conflit : La version du serveur a été téléchargée, la version locale renommée et non téléversée. @@ -3204,7 +3204,7 @@ Il est déconseillé de l'utiliser. Unable to open or create the local sync database. Make sure you have write access in the sync folder. - + Impossible d'accéder ou de créer une base de données locale de synchronisation. Assurez vous de disposer des droits d'écriture dans le dossier de synchronisation. @@ -3219,12 +3219,12 @@ Il est déconseillé de l'utiliser. Disk space is low: Downloads that would reduce free space below %1 were skipped. - + L'espace disque est faible : les téléchargements qui amèneraient à réduire l'espace libre en dessous de %1 ont été ignorés. There is insufficient space available on the server for some uploads. - + Il n'y a pas suffisamment d’espace disponible sur le serveur pour certains téléversements. @@ -3314,7 +3314,7 @@ Il est déconseillé de l'utiliser. Unresolved conflict. - + conflit non résolu. @@ -3560,7 +3560,7 @@ Il est déconseillé de l'utiliser. Disconnected from some accounts - + Déconnecté de certains comptes @@ -3586,17 +3586,17 @@ Il est déconseillé de l'utiliser. Synchronization is paused - + La synchronisation est en pause Error during synchronization - + Erreur durant la synchronisation No sync folders configured - + Aucun dossier de synchronisation configuré @@ -3801,7 +3801,7 @@ Il est déconseillé de l'utiliser. Please switch to your browser to proceed. - + Merci de basculer vers votre navigateur pour poursuivre. @@ -3811,7 +3811,7 @@ Il est déconseillé de l'utiliser. Re-open Browser - + Redémarrez votre navigateur @@ -4138,12 +4138,12 @@ Il est déconseillé de l'utiliser. Could not open browser - + Impossible de démarrer le navigateur There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? - + Une erreur est survenue au lancement du navigateur pour visiter l'adresse %1. Il est possible qu'aucun navigateur par défaut ne soit configuré. From 17126de5c703e935d2de9285a880211f0a120e35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Weigert?= Date: Thu, 26 Oct 2017 18:44:38 +0200 Subject: [PATCH 44/45] APPLICATION_NAME may contain whitespace Need some quotes to survive in makensis. --- cmake/modules/NSIS.template.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/modules/NSIS.template.in b/cmake/modules/NSIS.template.in index 7c32b729f..9b52bf338 100644 --- a/cmake/modules/NSIS.template.in +++ b/cmake/modules/NSIS.template.in @@ -616,7 +616,7 @@ Section Uninstall StrCmp $1 "" done ReadRegStr $R0 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\$1" "ApplicationName" - StrCmp $R0 ${APPLICATION_NAME} deleteClsid + StrCmp $R0 "${APPLICATION_NAME}" deleteClsid ; Increment the index when not deleting the enumerated key. IntOp $0 $0 + 1 goto loop From 2d2ec2a57639c47f05d2534c5043b130a50fb673 Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Fri, 27 Oct 2017 02:20:55 +0200 Subject: [PATCH 45/45] [tx-robot] updated from transifex --- mirall.desktop.in | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mirall.desktop.in b/mirall.desktop.in index c81bfc976..1be43f5e5 100644 --- a/mirall.desktop.in +++ b/mirall.desktop.in @@ -249,6 +249,9 @@ X-GNOME-Autostart-Delay=3 # Translations +# Translations + + # Translations Comment[oc]=@APPLICATION_NAME@ sincronizacion del client GenericName[oc]=Dorsièr de Sincronizacion