Comparar commits

...

138 Commits

Autor SHA1 Mensagem Data
Markus Goetz 5ef7d174b8 Excludes: Use QRegularExpression for speedup WiP 2016-06-23 14:44:28 +02:00
Christian Kamm 7601783553 Fix Qt4 build 2016-06-22 15:47:33 +02:00
Christian Kamm c0b0bd5b63 owncloudcmd: Fix --exclude regression
It's ok if the system exclude file is missing when --exclude is
specified explicitly.
2016-06-22 15:30:20 +02:00
Jenkins for ownCloud 28d86cee17 [tx-robot] updated from transifex 2016-06-22 02:18:48 -04:00
ckamm 32bb8295a2 csync: Use the full file stat destructors (#4992)
* For csync_file_stat_t and csync_vio_file_stat_t
* Add original_name to the vio file stat destructor
2016-06-21 12:06:21 +02:00
Jocelyn Turcotte 5d71ad83ec Fix the Qt4 build
QSharedPointer::reset doesn't exist in Qt4.
2016-06-21 12:04:26 +02:00
Markus Goetz ab24980001 Merge pull request #4979 from jturcotte/2.2
Memory improvements during propagation
2016-06-21 10:00:41 +02:00
ckamm 07dea72c37 Setup csync logging earlier (#4991)
We were missing some csync related log output during startup.

Discovered in #4967
2016-06-21 09:58:53 +02:00
Jenkins for ownCloud a734be347b [tx-robot] updated from transifex 2016-06-21 02:18:36 -04:00
Daniel Molkentin 1443ddc7c9 This branch is headed towards 2.2.3 now 2016-06-20 17:42:19 +02:00
Klaas Freitag 191177ff22 excludes: Only log if the pattern was really logged. (#4989) 2016-06-20 15:50:20 +02:00
ckamm 43a2aec92b Performance: Don't redundantly add the same exclude files #4967 (#4988)
Excludes: Don't redundantly add the same exclude files #4967, Never accept duplicate exclude patterns #4967
2016-06-20 15:14:13 +02:00
Jenkins for ownCloud c848097c6b [tx-robot] updated from transifex 2016-06-20 02:18:29 -04:00
Jenkins for ownCloud 096e2cf233 [tx-robot] updated from transifex 2016-06-19 02:18:34 -04:00
Jenkins for ownCloud 7181aedb4b [tx-robot] updated from transifex 2016-06-18 02:18:33 -04:00
Jocelyn Turcotte edfd75949d Reduce the memory usage of the StopWatch during propagation
Use a QMap to avoid using a full hashtable for only a few entries, and
clear the QMap once we're done with the measuring. This saves a few
hundred bytes per job during propagation that would otherwise only be
freed at the end of the sync.
2016-06-17 19:20:53 +02:00
Jocelyn Turcotte 7fb134b4e0 Delete the ComputeChecksum object when the job is finished
Each object takes almost 1k and we don't need it once the propagation is
done.
2016-06-17 19:20:53 +02:00
Jocelyn Turcotte 87e3553c85 Prevent the sync protocol widget from over-using memory
During propagation, we create a line for each file, taking memory, but
we delete all lines passed 2000 right at the beginning of the next sync.
Since the user has little chances of being able to read past those 2000
lines in the log, we might as well keep it capped at 2000 also during
propagation to prevent it from eating memory.
2016-06-17 19:20:53 +02:00
Jocelyn Turcotte 6f3aaecb78 Fix a crash on if shutting down during propagation
The SyncRunFileLog owned by the Folder must be destroyed after the
SyncEngine since the SyncEngine will abort during destruction, resulting
in all jobs being aborted.

It's possible that this crash only happens with a debug build.
2016-06-17 19:20:52 +02:00
Markus Goetz 40e3653722 VERSION.cmake: This is 2.2.2 2016-06-17 10:31:30 +02:00
Jenkins for ownCloud 5a4f50a0ff [tx-robot] updated from transifex 2016-06-17 02:19:00 -04:00
Jocelyn Turcotte 3342ebfcc5 SocketAPI: Push new status of dirty files regardless when not synced (#4970)
The FolderWatcher inserts files to be marked as SYNC and we
currently assume that all file statuses will be updated by the
following sync. It's however possible that the FolderWatcher
notify us of a change that csync won't consider necessary to
propagate, in which case a new status wouldn't be pushed and
the file manager would continue showing this file as syncing.

Re-push the file status when emptying the dirty files list
before propagating to avoid this issue, most likely the OK
status.
2016-06-16 15:27:10 +02:00
Olivier Goffart b4900d60b7 Checksum speedup. (#4968)
No need to allocate (and initialize to 0) a 10 MiB buffer for each files, even
when most files are much smaller than that.
So make sure the buffer that we allocate is not bigger than the file size.
And Also 10 MiB is a bit big for a buffer. 500 KiB should be more than enough.
(Too big allocations can cause problem because of memory fragmentation and such)
2016-06-16 08:28:30 +02:00
Olivier Goffart 92309013da SyncEngine: make abort and closing more robust
We first need to set the abort flag to csync and then aborting the discovery
job, otherwise, the discovery thread could start a new job in the mean time.

We also need to make sure that the thread has existed before we destroy the
exclude list.
2016-06-16 08:26:33 +02:00
Jenkins for ownCloud 4895589e4d [tx-robot] updated from transifex 2016-06-16 02:18:46 -04:00
Jocelyn Turcotte 05d199881e Merge pull request #4971 from owncloud/fixAccountHandleSslErrorsCrash
Attempt to fix the Account::slotHandleSslErrors crash
2016-06-15 18:53:47 +02:00
Jocelyn Turcotte 147cf798a6 Attempt to fix the Account::slotHandleSslErrors crash
Events from the crash reporter suggest that the QNAM and its
child replies might get deleted before returning from this method
and the only possible cause we can see is that the inner event
loop has something to do with it.

Try keeping a ref on the QNAM while in this method to make sure
that it won't get deleted by the inner event loop.
2016-06-15 18:12:02 +02:00
Jocelyn Turcotte d40c56eda5 Account: Use smart pointers to hold its credentials and QNAM objects
Also make sure that both use QObject::deleteLater as their delete
function.
2016-06-15 18:12:01 +02:00
Olivier Goffart 6dade0b114 PropagateUpload: fix crash in PUTFileJob::slotTimeout
Same fix as in commit 60c101d9

From the crash reporter:

Crash
EXCEPTION_ACCESS_VIOLATION_READ at 0x4
qnetworkreply.cpp in QNetworkReply::request at line 476
propagateupload.cpp in OCC::PUTFileJob::slotTimeout at line 100
moc_abstractnetworkjob.cpp in OCC::AbstractNetworkJob::qt_static_metacall at line 98
qobject.cpp in QMetaObject::activate at line 3716
moc_qtimer.cpp in QTimer::timeout at line 192
qtimer.cpp in QTimer::timerEvent at line 247
qobject.cpp in QObject::event at line 1267
qapplication.cpp in QApplicationPrivate::notify_helper at line 3722
qapplication.cpp in QApplication::notify at line 3505
qcoreapplication.cpp in QCoreApplication::notifyInternal at line 932
2016-06-15 14:32:25 +02:00
Jenkins for ownCloud 5de44407bf [tx-robot] updated from transifex 2016-06-15 02:18:44 -04:00
Jenkins for ownCloud 2df741e456 [tx-robot] updated from transifex 2016-06-14 02:18:36 -04:00
Olivier Goffart 8b5f71f49e Fix docker build instruction for windows 2016-06-13 15:30:39 +02:00
Jenkins for ownCloud 77791ccb34 [tx-robot] updated from transifex 2016-06-13 02:18:35 -04:00
Jenkins for ownCloud a6e4f9939c [tx-robot] updated from transifex 2016-06-12 02:18:35 -04:00
Jenkins for ownCloud 523cdff1cf [tx-robot] updated from transifex 2016-06-11 02:18:33 -04:00
Jenkins for ownCloud c4d6277ce3 [tx-robot] updated from transifex 2016-06-10 02:18:39 -04:00
Jenkins for ownCloud 70196eb48c [tx-robot] updated from transifex 2016-06-09 02:26:12 -04:00
Jenkins for ownCloud 9b249716a3 [tx-robot] updated from transifex 2016-06-08 02:19:30 -04:00
Jürgen Weigert a4b46db91e Merge pull request #4949 from owncloud/jnweiger-tray-patch-patch-patch
Update accountsettings.cpp fixing the tray-patch
2016-06-07 15:59:53 +02:00
Jürgen Weigert ebc44fa494 Update accountsettings.cpp 2016-06-07 14:21:50 +02:00
ckamm 355a8a0a27 Workaround for Ubuntu 16.04 tray issue #4944 (#4947) 2016-06-07 11:48:25 +02:00
Jenkins for ownCloud ab050f9093 [tx-robot] updated from transifex 2016-06-07 02:19:44 -04:00
Jenkins for ownCloud bf9cffe4b3 [tx-robot] updated from transifex 2016-06-06 02:19:25 -04:00
Carla Schroder 43f727cf69 fix win install instructions: build path and docker image name (#4901) 2016-06-05 10:56:56 +02:00
Jenkins for ownCloud 256331fbaa [tx-robot] updated from transifex 2016-06-05 02:18:37 -04:00
Jenkins for ownCloud 32e6585ae6 [tx-robot] updated from transifex 2016-06-04 02:19:18 -04:00
Olivier Goffart d072e4a678 Fix compilation on windows 2016-06-03 13:28:53 +02:00
Olivier Goffart b99c8fe28b Folder: fix removing folder with escaped characters (#4943)
FolderDefinition::save and load escapes the alias. We also need to escape
it when we remove it.
New folder can't be created with alias that needs escaping, but old folder
from old config may still exist, and we must allow user to delete them.
2016-06-03 13:10:01 +02:00
Olivier Goffart 5a3120bd52 Folder: Ignore change from the watcher if the file has not changed its mtime or size (#4942)
For issue #4927:
On Windows 10, we get a notification after the sync is finished for file that were
just downloaded. The guard we have against our "own changes" are only working when
the sync is running and the OwncloudPropagator still alive.
2016-06-03 13:06:11 +02:00
Jenkins for ownCloud 9ea69be6ab [tx-robot] updated from transifex 2016-06-03 02:19:51 -04:00
Daniel Molkentin 801cb42d57 Merge pull request #4939 from owncloud/osx_filewatcher_fix
OS X filewatcher fix
2016-06-02 18:37:38 +02:00
Markus Goetz 51f8a59a9a OS X: White-list the folder watcher enums
I got syncs triggered for even opening a file by double clicking it in Finder
and having launched Preview.app (e.g. for JPEG files).
2016-06-02 18:20:07 +02:00
Daniel Molkentin ebbe5acf2b Merge pull request #4938 from owncloud/fix_4840
GUI: don't force the environment variable for high DPI on linux.
2016-06-02 18:13:25 +02:00
Olivier Goffart 6ccd9e872d GUI: don't force the environment variable for high DPI on linux.
Setting the Environment variable only for owncloud makes in inconsistant with
other Qt application running at the same time.

The users can still set it themself for the whole desktop if they wish.

Addresses #4840
2016-06-02 17:57:10 +02:00
Daniel Molkentin da69756bb0 Merge pull request #4935 from owncloud/fix_updater_memleak
Fix memleak in updater
2016-06-02 15:36:49 +02:00
Daniel Molkentin 1787da8a9d Fix memleak in updater 2016-06-02 15:03:52 +02:00
Giovanni Capuano f0f82d02ff Fix link to the binary packages in README.md 2016-06-02 14:55:48 +02:00
Jenkins for ownCloud ff20cd4d57 [tx-robot] updated from transifex 2016-06-02 02:19:35 -04:00
Jenkins for ownCloud 9ab812f89b [tx-robot] updated from transifex 2016-06-01 02:19:17 -04:00
Markus Goetz de82d8fcdb QNAM: Try to workaround missing Qt patches #4720 #3888 #4051
We try this on all platforms now so we have more consistent behaviour.
2016-05-31 10:26:52 +02:00
Stephen Colebrook af2b712dc6 Search results are filtered by server. Don't filter a second time.
Also allows searching on attributes other than displayname in ldap
configurations. Search results match web and mobile apps.
2016-05-31 09:46:52 +02:00
Markus Goetz a507558dee Connectivity: Reduce ETag job timeout to 60 sec #4275
Before it used the default job timeout
2016-05-31 09:35:47 +02:00
Jenkins for ownCloud e73c3199c0 [tx-robot] updated from transifex 2016-05-31 02:20:28 -04:00
Markus Goetz d88ab4653b Connectivity: Delete job on timeout #4275
This was not done if there was no reply
2016-05-30 18:15:41 +02:00
Klaas Freitag 9a2450c4c1 Update changelog for 2.2.1 2016-05-30 17:19:40 +02:00
Daniel Molkentin 3c1f5e662f Remove stray file 2016-05-30 12:05:22 +02:00
Daniel Molkentin 100ee69ddd Merge pull request #4923 from RobinGeuze/2.2
Fix Qt4 build
2016-05-30 11:50:50 +02:00
Robin Geuze d45d6ca9da Fix Qt4 build 2016-05-30 09:55:45 +02:00
Daniel Molkentin 2608c7007e Merge pull request #4922 from owncloud/fix_4840
Don't try to determine pixel ratio with Qt < 5.6.0
2016-05-30 09:20:50 +02:00
Jenkins for ownCloud 06a88ea9a4 [tx-robot] updated from transifex 2016-05-30 02:41:51 -04:00
Daniel Molkentin 0194ebb222 Don't try to determine pixel ratio with Qt < 5.6.0
This seems to be broken. Worst case users can still
set it manually

Addresses #4840
2016-05-30 08:27:57 +02:00
Jenkins for ownCloud dc654ac846 [tx-robot] updated from transifex 2016-05-29 02:18:52 -04:00
Jenkins for ownCloud 370fd5062c [tx-robot] updated from transifex 2016-05-28 02:19:09 -04:00
Daniel Molkentin 00d20b4a42 Merge pull request #4913 from owncloud/normalize_name_in_filestatus
Undo regression caused by 727e73d
2016-05-27 18:08:08 +02:00
Daniel Molkentin a2b238e2e5 Undo regression caused by 727e73d
normalization to NFC is still required. Mac OS API will not take
care of that by default.

Resolves #4884
2016-05-27 16:03:59 +02:00
ckamm 0e2c16e827 Certs: Re-ask for different cert after rejection #4898 (#4911)
Previously rejecting any kind of certificate meant that the user
was never asked again, even if the certificate changed.

Now we keep track of which certificates were rejected and ask again
if the ones mentioned in the ssl errors change.

mitmproxy is excellent for testing this.
2016-05-27 12:08:42 +02:00
ckamm b9fdae6d67 Progress: Don't count items without propagation jobs #4856 (#4910)
* Progress: Don't count dirs without propagation jobs #4856

These directory SyncFileItems are necessary for bookkeeping
but should not influence the progress display at all.

* Progress: Skip ignored files #4856
2016-05-27 10:52:00 +02:00
Jenkins for ownCloud c34115610e [tx-robot] updated from transifex 2016-05-27 02:19:21 -04:00
Olivier Goffart 275ad1e157 Utility: Better fix for the translation of minutes, seconds, ...
The plural was not translated because of QTBUG-3945. Work around it.
Issue #4855
2016-05-26 12:17:16 +02:00
Jenkins for ownCloud 1855950fa1 [tx-robot] updated from transifex 2016-05-26 02:33:30 -04:00
Olivier Goffart fff5c280b3 SyncEngine: cleanup setting isDirectory 2016-05-25 16:27:40 +02:00
Olivier Goffart e960b265a8 Merge remote-tracking branch '2.1' into 2.2 2016-05-25 16:23:58 +02:00
Olivier Goffart f6b35e5d58 SyncEngine: invalid the blacklist entry when the rename destination change
The problem in this case is if we rename the file "xxx" to "invalid\file".
The rename will fail because the new filename constains a slash, and it
will be blacklisted.
But then if the user re-rename the file to "valid_name", then we should
invalidate the blacklist entry and retry to upload. But we did not do
that because renaming don't change the mtime and we did not store the
rename target in the database

IL issue 558
2016-05-25 15:32:45 +02:00
Jenkins for ownCloud 1d93af5f64 [tx-robot] updated from transifex 2016-05-25 02:19:18 -04:00
Markus Goetz 75efa8b252 sqlite: Update bundled version to 3.13.0
For OS X and Windows.
2016-05-24 17:27:31 +02:00
Markus Goetz 009a0b03da Add ChangeLog for 2.2.1 2016-05-24 17:04:04 +02:00
Jenkins for ownCloud 8379a36a75 [tx-robot] updated from transifex 2016-05-24 07:40:14 -04:00
Daniel Molkentin 2f1a40ff7c Travis coverity: Enforce Ubuntu 14.04 env, fix repo 2016-05-24 11:30:03 +02:00
Daniel Molkentin c041ca6163 Fix pot. mem leak found by coverity (CID 96004) 2016-05-24 11:21:33 +02:00
Daniel Molkentin eacc0c8bd6 Fix pot. mem leak found by coverity (CID 12900) 2016-05-24 11:21:33 +02:00
Jenkins for ownCloud 171de99e00 [tx-robot] updated from transifex 2016-05-24 02:19:53 -04:00
ckamm bf02ccc1e8 Remember to upload files that are locked during a sync run (#4865)
See owncloud/enterprise#1342
2016-05-23 09:03:03 +02:00
Jenkins for ownCloud 7ba961c21a [tx-robot] updated from transifex 2016-05-23 02:19:05 -04:00
Jenkins for ownCloud cb7be78352 [tx-robot] updated from transifex 2016-05-22 02:19:13 -04:00
Jenkins for ownCloud 6cb194e0d5 [tx-robot] updated from transifex 2016-05-21 02:19:09 -04:00
Markus Goetz 552ba94c41 SyncEngine: Set isDirectory before syncItemDiscovered
(cherry picked from commit fc1933803e)
2016-05-20 17:00:22 +02:00
Markus Goetz fc1933803e SyncEngine: Set isDirectory before syncItemDiscovered 2016-05-20 16:58:44 +02:00
Markus Goetz 46e4ec3183 Checksums: Use SHA1 like in >=2.2 2016-05-20 16:31:47 +02:00
Olivier Goffart 03e3b3bf50 Upload: put the job in the active list while doing the checksum computation.
This fixes an issue in which too many jobs are started un parallel
while uploading many files, which could cause too much memory usage as the
chunks are stored in memory.

Probably the fix for #4611
2016-05-20 16:28:27 +02:00
Christian Kamm 9aed8dbce8 Checksums: Compute content checksum on download #4375
Cherry-picked from d6d35029
2016-05-20 16:06:30 +02:00
ckamm c6794cd338 Progress info: Reset between syncs #4856 (PR #4872) 2016-05-20 15:07:54 +02:00
Jenkins for ownCloud 65ec1b74d5 [tx-robot] updated from transifex 2016-05-20 02:19:16 -04:00
Jenkins for ownCloud 1a3c9a9c1a [tx-robot] updated from transifex 2016-05-19 02:19:20 -04:00
Markus Goetz a038c99232 Upload: Remove bandwidth quota debug message #4837 2016-05-18 16:18:13 +02:00
Olivier Goffart 30c8fa1c93 Utility: Fix translation of second, minute, hour
Issue #4855

A typo in the context string made the translation lookup fail.
But also the %Ln was not recognized as a plural form by transifex, so only
the singular was translated
2016-05-18 10:52:22 +02:00
Olivier Goffart 010649f997 FolderWizard: remove dead code and fix the alias
Remove a bunch of dead code.

And also set the root folder name properly since alias is gone.

Fix the warning:
QWizard::field: No such field 'alias'
2016-05-18 10:52:22 +02:00
Jenkins for ownCloud 597f2a4dfc [tx-robot] updated from transifex 2016-05-18 02:19:16 -04:00
Olivier Goffart cf1fe690a3 Shibboleth: Show the inspector if OWNCLOUD_SHIBBOLETH_DEBUG is set
Help to debug https://github.com/owncloud/enterprise/issues/1265
2016-05-17 12:29:20 +02:00
Jenkins for ownCloud 31b27bea38 [tx-robot] updated from transifex 2016-05-17 02:18:59 -04:00
Jenkins for ownCloud 04f99f3bd7 [tx-robot] updated from transifex 2016-05-15 02:19:07 -04:00
Jenkins for ownCloud fbf92ac239 [tx-robot] updated from transifex 2016-05-14 02:19:15 -04:00
hefee 669a72f0e1 A final release version number breaks this regex (#4835)
f.ex. a valid verson nr: 2.2.0
-> fist \d+ = 2
-> second \d+ = 2
-> the last \d+ = 0
-> .+ in not matching, because there is nothing to match
2016-05-13 16:55:11 +02:00
Jenkins for ownCloud 2f0e65d37c [tx-robot] updated from transifex 2016-05-13 02:25:05 -04:00
Olivier Goffart 5676685f58 SyncEngine: Add a compile option so we rename to restoring a move we don't have the permission to do
IL issue 550
2016-05-12 13:15:30 +02:00
Christian Kamm db9ccb40a4 Fix compile with strict C flags 2016-05-12 13:14:40 +02:00
Christian Kamm d4c15d2c38 Ignores: expand escapes #4568
(cherry picked from commit d7bd1300a8)
2016-05-12 11:53:17 +02:00
Hefee edb3759684 For tests we do not need a xserver running.
Use for tests QTEST_GUILESS_MAIN and QTEST_APPLESS_MAIN.
2016-05-12 11:34:21 +02:00
Christian Kamm 0f9c32452c Protocol: Increase width of timestamp column #4721
Since the font metrics aren't reliable on windows, we add some
extra space there.
2016-05-12 10:24:34 +02:00
Daniel Molkentin 45dd1d0acf Bump to 2.2.1 2016-05-12 09:58:12 +02:00
Daniel Molkentin 552af7b94d 2.2.0 final 2016-05-12 09:58:12 +02:00
Christian Kamm 8934979ba1 timeAgo test: Fix for qt4, clean up 2016-05-12 09:25:15 +02:00
Daniel Molkentin b3e16e0eb0 Merge pull request #4825 from owncloud/22-user-manual
[Doc] 2.2 user manual updates
2016-05-12 08:20:55 +02:00
Carla Schroder 7773380deb update file manager screenshot 2016-05-11 12:44:27 -07:00
Carla Schroder e22050a434 updates to 2.2 user manual 2016-05-11 12:37:40 -07:00
Daniel Molkentin 7b0231bfce Merge pull request #4821 from owncloud/notification_doc
Documentation draft to introduce notifications.
2016-05-11 21:16:35 +02:00
Jocelyn Turcotte edc58c045f Fix assert on restore after propagation (#4823)
The assert was there to make sure that this case wasn't happening
to eventually be properly tested. Remove the assert for now but this
codepath should eventually be unit tested using this specific situation.
2016-05-11 18:16:46 +02:00
Klaas Freitag 035058934f Documentation draft to introduce notifications.
Also added a screenshot.
2016-05-11 11:16:08 +02:00
Klaas Freitag 9b1f46e560 Fix exclude unit test, adopt to new Iface of isExcluded. 2016-05-10 16:46:08 +02:00
Klaas Freitag 9e7a8e619b Fix utility test: Pass a command name to do the version check. 2016-05-10 16:26:42 +02:00
Klaas Freitag 9c0cd2b13e Added Changelog for 2.2.0 2016-05-10 15:39:44 +02:00
Daniel Molkentin 58ad781bd4 Update binary submodule 2016-05-10 14:39:22 +02:00
Daniel Molkentin 9d6701ecbe Windows Shell Integration: Fix another spot where the pipe path was constructed manually 2016-05-10 13:49:14 +02:00
Daniel Molkentin d659c54798 Update binary sub module 2016-05-10 10:36:49 +02:00
Daniel Molkentin 0e9170cb36 Windows Shell Integration: Unify path lookups 2016-05-10 10:18:53 +02:00
Markus Goetz 8820bc1c17 Windows: Fix Share menu #4781 2016-05-09 14:37:46 +02:00
Jenkins for ownCloud 74f67c97a9 [tx-robot] updated from transifex 2016-05-09 02:19:15 -04:00
Jenkins for ownCloud fd96b482c5 [tx-robot] updated from transifex 2016-05-07 02:19:16 -04:00
Jocelyn Turcotte 727e73d640 [shell/windows] Fix the windows status push not working (#4784)
Since the windows implementation first does cache lookups using the
path string, directories need to be passed identically as through
RETRIEVE_FILE_STATUS.

Change the convention to never have a trailing slash for directories
in the protocol. This allows the convention to be applied without
having to access the disk (since we'd need to know if the path is
represented by a directory) and also matches the convention of the
rest of the sync engine. Individual file manager plugins are then
responsible of handling pushed paths as not ending with a trailing
slash.

This also:
- Moves the trailing slash removal logic from the SyncFileStatusTracker
  to the SocketApi class
- Remove the unneeded QString::normalized call in fileStatus, since
  this should already be done by the FolderWatcher and plugins
2016-05-06 12:32:01 +02:00
122 arquivos alterados com 17600 adições e 8061 exclusões
+10 -4
Ver Arquivo
@@ -1,15 +1,21 @@
sudo: required
language: cpp
services:
- docker
branches:
only:
- coverity_scan
before_install:
- sudo sh -c "echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/xUbuntu_12.04/ /' >> /etc/apt/sources.list.d/owncloud-client.list"
- sudo sh -c "echo 'deb-src http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/xUbuntu_12.04/ /' >> /etc/apt/sources.list.d/owncloud-client.list"
- wget http://download.opensuse.org/repositories/isv:ownCloud:desktop/xUbuntu_12.04/Release.key
- sudo sh -c "echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/Ubuntu_14.04/ /' >> /etc/apt/sources.list.d/owncloud-client.list"
- sudo sh -c "echo 'deb-src http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/Ubuntu_14.04/ /' >> /etc/apt/sources.list.d/owncloud-client.list"
- wget http://download.opensuse.org/repositories/isv:ownCloud:desktop/Ubuntu_14.04/Release.key
- sudo apt-key add - < Release.key
- sudo apt-get update
- sudo apt-get build-dep owncloud-client
- sudo apt-get -y build-dep owncloud-client
- checkout=$(git show-ref --head --hash head)
- cd ../
- wget https://scan.coverity.com/download/linux-64 --post-data "token=$token&project=owncloud%2Fmirall" -O coverity_tool.tgz
+12
Ver Arquivo
@@ -1,3 +1,4 @@
cmake_minimum_required(VERSION 2.6)
cmake_policy(VERSION 2.8.0)
@@ -125,6 +126,17 @@ if(OWNCLOUD_5XX_NO_BLACKLIST)
add_definitions(-DOWNCLOUD_5XX_NO_BLACKLIST=1)
endif()
# When this option is enabled, a rename that is not allowed will be renamed back
# do the original as a restoration step. Withut this option, the restoration will
# re-download the file instead.
# The default is off because we don't want to rename the files back behind the user's back
# Added for IL issue #550
option(OWNCLOUD_RESTORE_RENAME "OWNCLOUD_RESTORE_RENAME" OFF)
if(OWNCLOUD_RESTORE_RENAME)
add_definitions(-DOWNCLOUD_RESTORE_RENAME=1)
endif()
if(APPLE)
set( SOCKETAPI_TEAM_IDENTIFIER_PREFIX "" CACHE STRING "SocketApi prefix (including a following dot) that must match the codesign key's TeamIdentifier/Organizational Unit" )
endif()
+33
Ver Arquivo
@@ -1,5 +1,38 @@
ChangeLog
=========
version 2.2.1 (release 2016-05-xx)
* Fix out of memory error when too many uploads happen (#4611)
* Fix display errors in progress display (#4803 #4856)
* LockWatcher: Remember to upload files after they become unlocked (#4865)
* Fix overlay icons for files with umlauts (#4884)
* Certs: Re-ask for different cert after rejection (#4898, #4911)
* Progress: Don't count items without propagation jobs (#4856, #4910)
* Utility: Fix for the translation of minutes, second (#4855)
* SyncEngine: invalid the blacklist entry when the rename destination change
version 2.2.0 (release 2016-05-12)
* Overlay icons: Refactoring - mainly for performance improvements
* Improved error handling with Sync Journal on USB storages (#4632)
* Sharing Completion: Improved UI of completion in sharing from desktop. (#3737)
* Show server notifications on the client (#3733)
* Improved Speed with small files by dynamic parallel request count (#4529)
* LockWatcher: Make sure to sync files after apps released exclusive locks on Windows.
* Improved handling of Win32 file locks and network files
* Workaround Ubuntu 16.04 tray icon bug (#4693)
* Removed the Alias field from the folder definition (#4695)
* Improved netrc parser (#4691)
* Improved user notifications about ignored files and conflicts (#4761, #3222)
* Add warnings for old server versions (#4523)
* Enable tranportation checksums if the server supports based on server capabilities (#3735)
* Default Chunk-size changed to 10MB (#4354)
* Documentation Improvements, ie. about overlay icons
* Translation fixes
* Countless other bugfixes
* Sqlite Update to recent version
* Update of QtKeyChain to support Windows credential store
* Packaging of dolphin overlay icon module for bleeding edge distros
version 2.1.1 (release 2016-02-10)
* UI improvements for HiDPI screens, error messages, RTL languages
* Fix occurences of "Connection Closed" when a new unauthenticated TCP socket is used
+1 -1
Ver Arquivo
@@ -15,7 +15,7 @@ with your computer.
### Binary packages
* Refer to the download page http://owncloud.org/sync-clients/
* Refer to the download page https://owncloud.org/install/#install-clients
### Source code
+1 -1
Ver Arquivo
@@ -1,6 +1,6 @@
set( MIRALL_VERSION_MAJOR 2 )
set( MIRALL_VERSION_MINOR 2 )
set( MIRALL_VERSION_PATCH 0 )
set( MIRALL_VERSION_PATCH 3 )
set( MIRALL_VERSION_YEAR 2016 )
set( MIRALL_SOVERSION 0 )
+1 -1
Submodule binary updated: a56480559d...d27d472817
-5
Ver Arquivo
@@ -1,5 +0,0 @@
--- binary
+++ binary
@@ -1 +1 @@
-Subproject commit 1fb9ddfa9a9a1b4dbc447eee10dbed89172d968a
+Subproject commit 01d73965dc8b862d1b2310d3ef801c297b697ec7
+1
Ver Arquivo
@@ -39,6 +39,7 @@
#include <unistd.h>
#include <sys/types.h>
#include <config_csync.h>
#include "csync_exclude.h"
#ifdef __cplusplus
extern "C" {
+30 -5
Ver Arquivo
@@ -44,6 +44,18 @@
static
#endif
int _csync_exclude_add(c_strlist_t **inList, const char *string) {
size_t i = 0;
// We never want duplicates, so check whether the string is already
// in the list first.
if (*inList) {
for (i = 0; i < (*inList)->count; ++i) {
char *pattern = (*inList)->vector[i];
if (c_streq(pattern, string)) {
return 1;
}
}
}
return c_strlist_add_grow(inList, string);
}
@@ -139,8 +151,10 @@ int csync_exclude_load(const char *fname, c_strlist_t **list) {
buf[i] = '\0';
if (*entry != '#') {
const char *unescaped = csync_exclude_expand_escapes(entry);
CSYNC_LOG(CSYNC_LOG_PRIORITY_TRACE, "Adding entry: %s", unescaped);
rc = _csync_exclude_add(list, unescaped);
if( rc == 0 ) {
CSYNC_LOG(CSYNC_LOG_PRIORITY_TRACE, "Adding entry: %s", unescaped);
}
SAFE_FREE(unescaped);
if (rc < 0) {
goto out;
@@ -158,6 +172,7 @@ out:
return rc;
}
// See http://support.microsoft.com/kb/74496 and
// https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx
// Additionally, we ignore '$Recycle.Bin', see https://github.com/owncloud/client/issues/2955
@@ -193,7 +208,7 @@ bool csync_is_windows_reserved_word(const char* filename) {
return false;
}
static CSYNC_EXCLUDE_TYPE _csync_excluded_common(c_strlist_t *excludes, const char *path, int filetype, bool check_leading_dirs) {
static CSYNC_EXCLUDE_TYPE _csync_excluded_common(c_strlist_t *excludes, const char *path, int filetype, bool check_leading_dirs, csync_exclude_traversal_hook hook, void *hookUserData) {
size_t i = 0;
const char *bname = NULL;
size_t blen = 0;
@@ -286,6 +301,13 @@ static CSYNC_EXCLUDE_TYPE _csync_excluded_common(c_strlist_t *excludes, const ch
SAFE_FREE(conflict);
}
if (!check_leading_dirs && hook) {
//
match = hook(bname, filetype, hookUserData);
goto out;
}
if( ! excludes ) {
goto out;
}
@@ -318,6 +340,8 @@ static CSYNC_EXCLUDE_TYPE _csync_excluded_common(c_strlist_t *excludes, const ch
SAFE_FREE(path_split);
}
/* Loop over all exclude patterns and evaluate the given path */
for (i = 0; match == CSYNC_NOT_EXCLUDED && i < excludes->count; i++) {
bool match_dirs_only = false;
@@ -386,11 +410,12 @@ static CSYNC_EXCLUDE_TYPE _csync_excluded_common(c_strlist_t *excludes, const ch
return match;
}
CSYNC_EXCLUDE_TYPE csync_excluded_traversal(c_strlist_t *excludes, const char *path, int filetype) {
return _csync_excluded_common(excludes, path, filetype, false);
CSYNC_EXCLUDE_TYPE csync_excluded_traversal(c_strlist_t *excludes, const char *path, int filetype, csync_exclude_traversal_hook hook, void *hookUserData) {
// return ctx->callbacks.excluded_traversal_hook(path, filetype);
return _csync_excluded_common(excludes, path, filetype, false, hook, hookUserData);
}
CSYNC_EXCLUDE_TYPE csync_excluded_no_ctx(c_strlist_t *excludes, const char *path, int filetype) {
return _csync_excluded_common(excludes, path, filetype, true);
return _csync_excluded_common(excludes, path, filetype, true, 0, 0);
}
+8 -3
Ver Arquivo
@@ -21,6 +21,8 @@
#ifndef _CSYNC_EXCLUDE_H
#define _CSYNC_EXCLUDE_H
#include "std/c_string.h"
enum csync_exclude_type_e {
CSYNC_NOT_EXCLUDED = 0,
CSYNC_FILE_SILENTLY_EXCLUDED,
@@ -37,6 +39,10 @@ typedef enum csync_exclude_type_e CSYNC_EXCLUDE_TYPE;
int _csync_exclude_add(c_strlist_t **inList, const char *string);
#endif
// Hook from mirall
typedef CSYNC_EXCLUDE_TYPE (*csync_exclude_traversal_hook) (
const char *path, int filetype, void *userData);
/**
* @brief Load exclude list
*
@@ -62,7 +68,7 @@ int csync_exclude_load(const char *fname, c_strlist_t **list);
*
* @return 2 if excluded and needs cleanup, 1 if excluded, 0 if not.
*/
CSYNC_EXCLUDE_TYPE csync_excluded_traversal(c_strlist_t *excludes, const char *path, int filetype);
CSYNC_EXCLUDE_TYPE csync_excluded_traversal(c_strlist_t *excludes, const char *path, int filetype, csync_exclude_traversal_hook hook, void *hookUserData);
/**
* @brief csync_excluded_no_ctx
@@ -72,7 +78,6 @@ CSYNC_EXCLUDE_TYPE csync_excluded_traversal(c_strlist_t *excludes, const char *p
* @return
*/
CSYNC_EXCLUDE_TYPE csync_excluded_no_ctx(c_strlist_t *excludes, const char *path, int filetype);
#endif /* _CSYNC_EXCLUDE_H */
/**
* @brief Checks if filename is considered reserved by Windows
@@ -81,5 +86,5 @@ CSYNC_EXCLUDE_TYPE csync_excluded_no_ctx(c_strlist_t *excludes, const char *path
*/
bool csync_is_windows_reserved_word(const char *file_name);
#endif /* _CSYNC_EXCLUDE_H */
/* vim: set ft=c.doxygen ts=8 sw=2 et cindent: */
+4
Ver Arquivo
@@ -101,6 +101,10 @@ struct csync_s {
csync_checksum_hook checksum_hook;
void *checksum_userdata;
/* Hook for the QRegExp based exclude checker */
csync_exclude_traversal_hook excluded_traversal_hook;
void *excluded_traversal_userdata;
} callbacks;
c_strlist_t *excludes;
+3 -3
Ver Arquivo
@@ -466,13 +466,13 @@ int csync_statedb_get_below_path( CSYNC *ctx, const char *path ) {
/* Check for exclusion from the tree.
* Note that this is only a safety net in case the ignore list changes
* without a full remote discovery being triggered. */
CSYNC_EXCLUDE_TYPE excluded = csync_excluded_traversal(ctx->excludes, st->path, st->type);
CSYNC_EXCLUDE_TYPE excluded = csync_excluded_traversal(ctx->excludes, st->path, st->type, ctx->callbacks.excluded_traversal_hook, ctx->callbacks.excluded_traversal_userdata);
if (excluded != CSYNC_NOT_EXCLUDED) {
CSYNC_LOG(CSYNC_LOG_PRIORITY_TRACE, "%s excluded (%d)", st->path, excluded);
if (excluded == CSYNC_FILE_EXCLUDE_AND_REMOVE
|| excluded == CSYNC_FILE_SILENTLY_EXCLUDED) {
SAFE_FREE(st);
csync_file_stat_free(st);
continue;
}
@@ -481,7 +481,7 @@ int csync_statedb_get_below_path( CSYNC *ctx, const char *path ) {
/* store into result list. */
if (c_rbtree_insert(ctx->remote.tree, (void *) st) < 0) {
SAFE_FREE(st);
csync_file_stat_free(st);
ctx->status_code = CSYNC_STATUS_TREE_ERROR;
break;
}
+10 -9
Ver Arquivo
@@ -203,7 +203,7 @@ static int _csync_detect_update(CSYNC *ctx, const char *file,
excluded =CSYNC_FILE_EXCLUDE_STAT_FAILED;
} else {
/* Check if file is excluded */
excluded = csync_excluded_traversal(ctx->excludes, path, type);
excluded = csync_excluded_traversal(ctx->excludes, path, type, ctx->callbacks.excluded_traversal_hook, ctx->callbacks.excluded_traversal_userdata);
}
if( excluded == CSYNC_NOT_EXCLUDED ) {
@@ -269,7 +269,8 @@ static int _csync_detect_update(CSYNC *ctx, const char *file,
tmp = csync_statedb_get_stat_by_hash(ctx, h);
if(_last_db_return_error(ctx)) {
SAFE_FREE(st);
csync_file_stat_free(st);
csync_file_stat_free(tmp);
ctx->status_code = CSYNC_STATUS_UNSUCCESSFUL;
return -1;
}
@@ -356,7 +357,7 @@ static int _csync_detect_update(CSYNC *ctx, const char *file,
enum csync_vio_file_type_e tmp_vio_type = CSYNC_VIO_FILE_TYPE_UNKNOWN;
/* tmp might point to malloc mem, so free it here before reusing tmp */
SAFE_FREE(tmp);
csync_file_stat_free(tmp);
/* check if it's a file and has been renamed */
if (ctx->current == LOCAL_REPLICA) {
@@ -365,7 +366,7 @@ static int _csync_detect_update(CSYNC *ctx, const char *file,
tmp = csync_statedb_get_stat_by_inode(ctx, fs->inode);
if(_last_db_return_error(ctx)) {
SAFE_FREE(st);
csync_file_stat_free(st);
ctx->status_code = CSYNC_STATUS_UNSUCCESSFUL;
return -1;
}
@@ -421,7 +422,7 @@ static int _csync_detect_update(CSYNC *ctx, const char *file,
tmp = csync_statedb_get_stat_by_file_id(ctx, fs->file_id);
if(_last_db_return_error(ctx)) {
SAFE_FREE(st);
csync_file_stat_free(st);
ctx->status_code = CSYNC_STATUS_UNSUCCESSFUL;
return -1;
}
@@ -450,7 +451,7 @@ static int _csync_detect_update(CSYNC *ctx, const char *file,
if (fs->type == CSYNC_VIO_FILE_TYPE_DIRECTORY && ctx->current == REMOTE_REPLICA && ctx->callbacks.checkSelectiveSyncNewFolderHook) {
if (ctx->callbacks.checkSelectiveSyncNewFolderHook(ctx->callbacks.update_callback_userdata, path)) {
SAFE_FREE(st);
csync_file_stat_free(st);
return 1;
}
}
@@ -460,7 +461,7 @@ static int _csync_detect_update(CSYNC *ctx, const char *file,
}
} else {
CSYNC_LOG(CSYNC_LOG_PRIORITY_DEBUG, "Unable to open statedb" );
SAFE_FREE(st);
csync_file_stat_free(st);
ctx->status_code = CSYNC_STATUS_UNSUCCESSFUL;
return -1;
}
@@ -522,14 +523,14 @@ out:
switch (ctx->current) {
case LOCAL_REPLICA:
if (c_rbtree_insert(ctx->local.tree, (void *) st) < 0) {
SAFE_FREE(st);
csync_file_stat_free(st);
ctx->status_code = CSYNC_STATUS_TREE_ERROR;
return -1;
}
break;
case REMOTE_REPLICA:
if (c_rbtree_insert(ctx->remote.tree, (void *) st) < 0) {
SAFE_FREE(st);
csync_file_stat_free(st);
ctx->status_code = CSYNC_STATUS_TREE_ERROR;
return -1;
}
+1
Ver Arquivo
@@ -56,6 +56,7 @@ void csync_vio_file_stat_destroy(csync_vio_file_stat_t *file_stat) {
SAFE_FREE(file_stat->directDownloadUrl);
SAFE_FREE(file_stat->directDownloadCookies);
SAFE_FREE(file_stat->name);
SAFE_FREE(file_stat->original_name);
SAFE_FREE(file_stat);
}
+1 -1
Ver Arquivo
@@ -141,7 +141,7 @@ csync_vio_file_stat_t *csync_vio_local_readdir(csync_vio_handle_t *dhandle) {
return file_stat;
err:
SAFE_FREE(file_stat);
csync_vio_file_stat_destroy(file_stat);
return NULL;
}
+4 -4
Ver Arquivo
@@ -159,8 +159,8 @@ In order to make setup simple, you can use the provided Dockerfile to build your
1. Assuming you are in the root of the ownCloud Client's source tree, you can
build an image from this Dockerfile like this::
cd admin/win32/docker
docker build . -t ownCloud-client-win32:<version>
cd admin/win/docker
docker build . -t owncloud-client-win32:<version>
Replace ``<version>`` by the version of the client you are building, e.g.
|version| for the release of the client that this document describes.
@@ -174,8 +174,8 @@ In order to make setup simple, you can use the provided Dockerfile to build your
2. From within the source tree Run the docker instance::
docker run ownCloud-client-win32:<version> -v "$PWD:/home/jenkins/client" \
admin/win32/docker/build.sh $(id -u)
docker run -v "$PWD:/home/user/client" owncloud-client-win32:<version> \
/home/user/client/admin/win/docker/build.sh client/ $(id -u)
It will run the build, create an NSIS based installer, as well as run tests.
You will find the resulting binary in an newly created ``build-win32`` subfolder.
+2 -2
Ver Arquivo
@@ -41,7 +41,7 @@ master_doc = 'index'
# General information about the project.
project = u'ownCloud Client Manual'
copyright = u'2013, The ownCloud developers'
copyright = u'2013-2016, The ownCloud developers'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
@@ -250,7 +250,7 @@ texinfo_documents = [
epub_title = u'ownCloud Client Manual'
epub_author = u'The ownCloud developers'
epub_publisher = u'The ownCloud developers'
epub_copyright = u'2013, The ownCloud developers'
epub_copyright = u'2013-2016, The ownCloud developers'
# The language of the text. It defaults to the language option
# or en if the language is not set.
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 86 KiB

Depois

Largura:  |  Altura:  |  Tamanho: 52 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 82 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 49 KiB

Depois

Largura:  |  Altura:  |  Tamanho: 58 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 58 KiB

Depois

Largura:  |  Altura:  |  Tamanho: 224 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 23 KiB

Depois

Largura:  |  Altura:  |  Tamanho: 20 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 24 KiB

Depois

Largura:  |  Altura:  |  Tamanho: 34 KiB

+3 -3
Ver Arquivo
@@ -4,16 +4,16 @@ ownCloud Desktop Client Manual
==============================
.. toctree::
:maxdepth: 3
:maxdepth: 2
introduction
installing
navigating
advancedusage
autoupdate
building
architecture
troubleshooting
faq
glossary
glossary
+12 -16
Ver Arquivo
@@ -12,26 +12,22 @@ Desktop Sync client enables you to:
Your files are always automatically synchronized between your ownCloud server
and local PC.
.. note:: Because of various technical issues, desktop sync clients older than
1.7 will not allowed to connect and sync with the ownCloud 8.1+ server. It
is highly recommended to keep your client updated.
Because of various technical issues, desktop sync clients older than 1.7 will
not allowed to connect and sync with the ownCloud 8.1+ server. It is highly
recommended to keep your client updated.
Improvements and New Features
-----------------------------
The 2.1 release of the ownCloud desktop sync client has many new features and
The 2.2 release of the ownCloud desktop sync client has many new features and
improvements. (See the `complete changelog
<https://owncloud.org/changelog/desktop/>`_.)
* Improved appearance on HiDPI screens
* Improved error messages
* Several fixes/improvements to the sharing dialog
* Several fixes/improvements to the server activity tab
* Allow changeable upload chunk size in owncloud.cfg
* Forget password on explicit sign-out
* Windows: Fix deleting and replacing of read-only files
* Share with internal ownCloud users from your desktop
* Separate views for server activity, sync activity, and errors
* Don't re-upload *eml-files if size and checksum are unchanged
* Improved upload/download progress indicator
* Show server notifications on the client
* Improved sync speed
* Improved handling of Win32 file locks and network files
* Improved user notifications about ignored files and conflicts
* Add warnings for old server versions
* Update of QtKeyChain to support Windows credential store
* Packaging of dolphin overlay icon module for bleeding edge distros
+29 -22
Ver Arquivo
@@ -62,6 +62,7 @@ This menu provides the following options:
* Recent Changes, showing latest activities
* Settings
* Help menu
* Pause synchronizations
* An option to log in or log out of all of your accounts at once
* Quit ownCloud, logging out and closing the client
@@ -83,7 +84,7 @@ have the following features:
* Connection status, showing which ownCloud server you are connected to, and
your ownCloud username.
* An **Account** button, which contains a dropdown menu with **Add New**,
**Log In/Log Out**, and **Remove**.
**Log Out**, and **Remove**.
* Used and available space on the server.
* Current synchronization status.
* **Add Folder Sync Connection** button, which is active only when you have
@@ -93,26 +94,17 @@ The little button with three dots (the overflow menu) that sits to the right of
the sync status bar offers four additional options:
* Open Folder
* Choose What to Sync
* Choose What to Sync (This appears only when your file tree is collapsed, and
expands the file tree)
* Pause Sync / Resume Sync
* Remove folder sync connection
**Open Folder** opens a file explorer window displaying the client-side folder
that is being synced.
**Choose What to Sync** opens the folder sync tree view. Use this to sync all
or only some of the folders in the folder tree.
**Open Folder** opens your local ownCloud sync folder.
**Pause Sync** pauses sync operations without making any changes to your
account. It will continue to update file and folder lists, without
downloading or updating files. To stop all sync activity use **Remove Sync**.
**Resume Sync** resumes sync operations.
**Remove Sync** removes the sync connection without removing the account. This
stops all sync activity, including file and folder list updates. If you want to
synchronize the folder tree again then click the **Add Folder Sync Connection**
button, and re-select the folder tree that you want to sync.
downloading or updating files. To stop all sync activity use **Remove
Folder Sync Connection**.
.. figure:: images/client-7.png
:alt: Extra options for sync operations
@@ -125,12 +117,10 @@ button, and re-select the folder tree that you want to sync.
Adding New Accounts
^^^^^^^^^^^^^^^^^^^
You may configure multiple ownCloud accounts in your desktop sync client.
Simply
You may configure multiple ownCloud accounts in your desktop sync client. Simply
click the **Account** > **Add New** button on any account tab to add a new
account, and then follow the account creation wizard. The new account will
appear as a new tab in the settings dialog, where you can adjust its settings
at
appear as a new tab in the settings dialog, where you can adjust its settings at
any time. Use **Account** > **Remove** to delete accounts.
File Manager Overlay Icons
@@ -175,9 +165,7 @@ the ``owncloud-client-nautilus`` plugin.) You can create share links, and share
with internal ownCloud users the same way as in your ownCloud Web interface.
.. figure:: images/mac-share.png
:alt: Sync client integration in Finder on Mac OS X.
*Shared ownCloud files in Finder on Mac OS X*
:alt: Sync client integration in Windows Explorer.
Right-click your systray icon, hover over the account you want to use, and
left-click "Open folder [folder name] to quickly enter your local ownCloud
@@ -206,6 +194,25 @@ such as files not synced.
.. figure:: images/client-8.png
:alt: Activity windows logs all server and client activities.
Server Notifications
--------------------
Starting with version 2.2.0, the client will display notifications from your
ownCloud server that require manual interaction by you. For example, when a
user on a remote ownCloud creates a new Federated share for you, you can accept
it from your desktop client.
The desktop client automatically checks for available notifications
automatically on a regular basis. Notifications are displayed in the Server
Activity tab, and if you have **Show Desktop Notifications** enabled (General
tab) you'll also see a systray notification.
.. figure:: images/client12.png
:alt: Activity window with notification.
This also displays notifications sent to users by the ownCloud admin via the
Announcements app.
General Window
--------------
+208 -4
Ver Arquivo
@@ -11,11 +11,215 @@ X-GNOME-Autostart-Delay=3
# Translations
Comment[sq]=Klient njëkohësimesh @APPLICATION_NAME@ për desktop
GenericName[sq]=Njëkohësim Dosjesh
Name[sq]=Klient njëkohësimesh @APPLICATION_NAME@ për desktop
Icon[sq]=@APPLICATION_EXECUTABLE@
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
Icon[oc]=@APPLICATION_EXECUTABLE@
Comment[ar]=@APPLICATION_NAME@ زبون مزامنة مكتبي
GenericName[ar]=مزامنة المجلد
Name[ar]=@APPLICATION_NAME@ زبون مزامنة مكتبي
Icon[ar]=@APPLICATION_EXECUTABLE@
Comment[ca]=Client de sincronització d'escriptori @APPLICATION_NAME@
GenericName[ca]=Sincronització de carpetes
Name[ca]=Client de sincronització d'escriptori @APPLICATION_NAME@
Icon[ca]=@APPLICATION_EXECUTABLE@
Comment[da]=@APPLICATION_NAME@ skrivebordsklient til synkronisering
GenericName[da]=Mappesynkronisering
Name[da]=@APPLICATION_NAME@ skrivebordsklient til synk
Icon[da]=@APPLICATION_EXECUTABLE@
Comment[de]=@APPLICATION_NAME@ Desktop-Synchronisationsclient
GenericName[de]=Ordner-Synchronisation
Name[de]=@APPLICATION_NAME@ Desktop-Synchronisationsclient
Icon[de]=@APPLICATION_EXECUTABLE@
Comment[ja_JP]=@APPLICATION_NAME@ デスクトップ同期クライアント
GenericName[ja_JP]=フォルダ同期
Name[ja_JP]=@APPLICATION_NAME@ デスクトップ同期クライアント
Icon[ja_JP]=@APPLICATION_EXECUTABLE@
Comment[en_GB]=@APPLICATION_NAME@ desktop synchronisation client
GenericName[en_GB]=Folder Sync
Name[en_GB]=@APPLICATION_NAME@ desktop sync client
Icon[en_GB]=@APPLICATION_EXECUTABLE@
Comment[es]=@APPLICATION_NAME@ cliente de sincronización de escritorio
GenericName[es]=Sincronización de carpeta
Name[es]=@APPLICATION_NAME@ cliente de sincronización de escritorio
Icon[es]=@APPLICATION_EXECUTABLE@
Comment[de_DE]=@APPLICATION_NAME@ Desktop-Synchronisationsclient
GenericName[de_DE]=Ordner-Synchronisation
Name[de_DE]=@APPLICATION_NAME@ Desktop-Synchronisationsclient
Icon[de_DE]=@APPLICATION_EXECUTABLE@
Comment[bg_BG]=@APPLICATION_NAME@ клиент за десктоп синхронизация
GenericName[bg_BG]=Синхронизиране на папката
Name[bg_BG]=@APPLICATION_NAME@ клиент десктоп синхронизация
Icon[bg_BG]=@APPLICATION_EXECUTABLE@
Comment[fr]=@APPLICATION_NAME@ synchronisation du client
GenericName[fr]=Dossier de Synchronisation
Name[fr]=@APPLICATION_NAME@ synchronisation du client
Icon[fr]=@APPLICATION_EXECUTABLE@
Comment[he]=@APPLICATION_NAME@ לקוח סנכון שולחן עבודה
GenericName[he]=סנכון תיקייה
Name[he]=@APPLICATION_NAME@ לקוח סנכרון שולחן עבודה
Icon[he]=@APPLICATION_EXECUTABLE@
Comment[id]=Klien sinkronisasi desktop @APPLICATION_NAME@
GenericName[id]=Folder Sync
Name[id]=Klien sync desktop @APPLICATION_NAME@
Icon[id]=@APPLICATION_EXECUTABLE@
Comment[is]=@APPLICATION_NAME@ skjáborðsforrit samstillingar
GenericName[is]=Samstilling möppu
Name[is]=@APPLICATION_NAME@ skjáborðsforrit samstillingar
Icon[is]=@APPLICATION_EXECUTABLE@
Comment[it]=Client di sincronizzazione del desktop di @APPLICATION_NAME@
GenericName[it]=Sincronizzazione cartella
Name[it]=Client di sincronizzazione del desktop di @APPLICATION_NAME@
Icon[it]=@APPLICATION_EXECUTABLE@
Comment[ko]=@APPLICATION_NAME@ 데스크톱 동기화 클라이언트
GenericName[ko]=폴더 동기화
Name[ko]=@APPLICATION_NAME@ 데스크톱 동기화 클라이언트
Comment[hu_HU]=@APPLICATION_NAME@ asztali szinkronizációs kliens
GenericName[hu_HU]=Könyvtár szinkronizálás
Name[hu_HU]=@APPLICATION_NAME@ asztali szinkr. kliens
Icon[hu_HU]=@APPLICATION_EXECUTABLE@
Comment[nl]=@APPLICATION_NAME@ desktop synchronisatie client
GenericName[nl]=Mappen sync
Name[nl]=@APPLICATION_NAME@ desktop sync client
Icon[nl]=@APPLICATION_EXECUTABLE@
Icon[pl]=@APPLICATION_EXECUTABLE@
Comment[pt_BR]=@APPLICATION_NAME@ cliente de sincronização do computador
GenericName[pt_BR]=Sincronização de Pasta
Name[pt_BR]=@APPLICATION_NAME@ cliente de sincronização de desktop
Icon[pt_BR]=@APPLICATION_EXECUTABLE@
Comment[cs_CZ]=@APPLICATION_NAME@ počítačový synchronizační klient
GenericName[cs_CZ]=Synchronizace adresáře
Name[cs_CZ]=@APPLICATION_NAME@ počítačový synchronizační klient
Icon[cs_CZ]=@APPLICATION_EXECUTABLE@
Comment[ru]=Настольный клиент синхронизации @НАЗВАНИЕ_ПРИЛОЖЕНИЯ@
GenericName[ru]=Синхронизация папки
Name[ru]=Настольный клиент синхронизации @НАЗВАНИЕ_ПРИЛОЖЕНИЯ@
Icon[ru]=@ВЫПОЛНЯЕМОЕ_ПРИЛОЖЕНИЕ@
Comment[sl]=@APPLICATION_NAME@ Program za usklajevanje datotek z namizjem
GenericName[sl]=Usklajevanje map
Name[sl]=@APPLICATION_NAME@ Program za usklajevanje datotek z namizjem
Icon[sl]=@APPLICATION_EXECUTABLE@
Comment[sq]=Klient njëkohësimesh @APPLICATION_NAME@ për desktop
GenericName[sq]=Njëkohësim Dosjesh
Name[sq]=Klient njëkohësimesh @APPLICATION_NAME@ për desktop
Icon[sq]=@APPLICATION_EXECUTABLE@
Comment[sv]=@APPLICATION_NAME@ desktop synkroniseringsklient
GenericName[sv]=Mappsynk
Name[sv]=@APPLICATION_NAME@ desktop synk-klient
Icon[sv]=@APPLICATION_EXECUTABLE@
Comment[tr]=@APPLICATION_NAME@ masaüstü senkronizasyon istemcisi
GenericName[tr]=Dosya Senkronizasyonu
Name[tr]=@APPLICATION_NAME@ masaüstü senkronizasyon istemcisi
Icon[tr]=@APPLICATION_EXECUTABLE@
Comment[uk]=Настільний клієнт синхронізації @APPLICATION_NAME@
GenericName[uk]=Синхронізація теки
Name[uk]=Настільний клієнт синхронізації @APPLICATION_NAME@
Icon[uk]=@APPLICATION_EXECUTABLE@
Comment[ro]=@APPLICATION_NAME@ client de sincronizare pe desktop
GenericName[ro]=Sincronizare director
Name[ro]=@APPLICATION_NAME@ client de sincronizare pe desktop
Icon[ro]=@APPLICATION_EXECUTABLE@
Comment[zh_CN]=@APPLICATION_NAME@ 桌面同步客户端
GenericName[zh_CN]=文件夹同步
Name[zh_CN]=@APPLICATION_NAME@ 桌面同步客户端
Icon[zh_CN]=@APPLICATION_EXECUTABLE@
GenericName[zh_TW]=資料夾同步
Comment[pt_PT]=@APPLICATION_NAME@ - Cliente de Sincronização para PC
GenericName[pt_PT]=Sincronizar Pasta
Name[pt_PT]=@APPLICATION_NAME@ - Cliente de Sincronização para PC
Icon[pt_PT]=@APPLICATION_EXECUTABLE@
Comment[lb]=@APPLICATION_NAME@ Desktop Synchronisatioun Client
GenericName[lb]=Dossier Dync
Name[lb]=@APPLICATION_NAME@ Desktop Sync Client
Icon[lb]=@APPLICATION_EXECUTABLE@
Comment[th_TH]=@APPLICATION_NAME@ ไคลเอนต์ประสานข้อมูลเดสก์ท็อป
GenericName[th_TH]=ประสานข้อมูลโฟลเดอร์
Name[th_TH]= @APPLICATION_NAME@ ไคลเอนต์ประสานข้อมูลเดสก์ท็อป
Icon[th_TH]=@APPLICATION_EXECUTABLE@
@@ -36,8 +36,7 @@ using namespace std;
OCClientInterface::ContextMenuInfo OCClientInterface::FetchInfo()
{
auto pipename = std::wstring(L"\\\\.\\pipe\\");
pipename += L"ownCloud";
auto pipename = CommunicationSocket::DefaultPipePath();
CommunicationSocket socket;
if (!WaitNamedPipe(pipename.data(), PIPE_TIMEOUT)) {
@@ -72,8 +71,7 @@ OCClientInterface::ContextMenuInfo OCClientInterface::FetchInfo()
void OCClientInterface::ShareObject(const std::wstring &path)
{
auto pipename = std::wstring(L"\\\\.\\pipe\\");
pipename += L"ownCloud";
auto pipename = CommunicationSocket::DefaultPipePath();
CommunicationSocket socket;
if (!WaitNamedPipe(pipename.data(), PIPE_TIMEOUT)) {
@@ -24,11 +24,31 @@
#include <fstream>
#define BUFSIZE 1024
#define DEFAULT_BUFLEN 4096
using namespace std;
#define DEFAULT_BUFLEN 4096
namespace {
std::wstring getUserName() {
DWORD len = DEFAULT_BUFLEN;
TCHAR buf[DEFAULT_BUFLEN];
if (GetUserName(buf, &len)) {
return std::wstring(&buf[0], len);
} else {
return std::wstring();
}
}
}
std::wstring CommunicationSocket::DefaultPipePath()
{
auto pipename = std::wstring(L"\\\\.\\pipe\\");
pipename += L"ownCloud\\";
pipename += getUserName();
return pipename;
}
CommunicationSocket::CommunicationSocket()
: _pipe(INVALID_HANDLE_VALUE)
@@ -26,6 +26,8 @@
class __declspec(dllexport) CommunicationSocket
{
public:
static std::wstring DefaultPipePath();
CommunicationSocket();
~CommunicationSocket();
@@ -43,4 +45,4 @@ private:
bool _connected;
};
#endif
#endif
@@ -31,25 +31,10 @@
using namespace std;
#define BUFSIZE 512
std::wstring getUserName() {
DWORD len = BUFSIZE;
TCHAR buf[BUFSIZE];
if (GetUserName(buf, &len)) {
return std::wstring(&buf[0], len);
} else {
return std::wstring();
}
}
// This code is run in a thread
void RemotePathChecker::workerThreadLoop()
{
auto pipename = std::wstring(L"\\\\.\\pipe\\");
pipename += L"ownCloud\\";
pipename += getUserName();
auto pipename = CommunicationSocket::DefaultPipePath();
bool connected = false;
CommunicationSocket socket;
std::unordered_set<std::wstring> asked;
+3 -7
Ver Arquivo
@@ -28,16 +28,12 @@
* \return string PEM
*/
string x509ToString(BIO *o) {
int len = 0;
BUF_MEM *bptr;
void* data;
string ret = "";
BIO_get_mem_ptr(o, &bptr);
len = bptr->length;
data = calloc(len+10, sizeof(char));
int len = bptr->length;
void* data = calloc(len+10, sizeof(char));
BIO_read(o, data, len);
ret = strdup((char*)data);
string ret = std::string(static_cast<char*>(data));
free(data);
return ret;
+9430 -1907
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+1478 -23
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+14 -3
Ver Arquivo
@@ -443,16 +443,27 @@ restart_sync:
QObject::connect(&engine, SIGNAL(finished(bool)), &app, SLOT(quit()));
QObject::connect(&engine, SIGNAL(transmissionProgress(ProgressInfo)), &cmd, SLOT(transmissionProgressSlot()));
// Exclude lists
engine.excludedFiles().addExcludeFilePath(ConfigFile::excludeFileFromSystem());
if( QFile::exists(options.exclude) )
bool hasUserExcludeFile = !options.exclude.isEmpty();
QString systemExcludeFile = ConfigFile::excludeFileFromSystem();
// Always try to load the user-provided exclude list if one is specified
if ( hasUserExcludeFile ) {
engine.excludedFiles().addExcludeFilePath(options.exclude);
}
// Load the system list if available, or if there's no user-provided list
if ( !hasUserExcludeFile || QFile::exists(systemExcludeFile) ) {
engine.excludedFiles().addExcludeFilePath(systemExcludeFile);
}
if (!engine.excludedFiles().reloadExcludes()) {
// Always make sure at least one list has been loaded
qFatal("Cannot load system exclude list or list supplied via --exclude");
return EXIT_FAILURE;
}
// Have to be done async, else, an error before exec() does not terminate the event loop.
QMetaObject::invokeMethod(&engine, "startSync", Qt::QueuedConnection);
+7 -1
Ver Arquivo
@@ -159,7 +159,13 @@ void AccountSettings::createAccountToolbox()
void AccountSettings::slotOpenAccountWizard()
{
if (QSystemTrayIcon::isSystemTrayAvailable()) {
if (
#if QT_VERSION > QT_VERSION_CHECK(5, 0, 0)
qgetenv("QT_QPA_PLATFORMTHEME") == "appmenu-qt5" ||
// We can't call isSystemTrayAvailable with appmenu-qt5 because it breaks the systemtray
// (issue #4693, #4944)
#endif
QSystemTrayIcon::isSystemTrayAvailable()) {
topLevelWidget()->close();
}
#ifdef Q_OS_MAC
+4 -2
Ver Arquivo
@@ -190,7 +190,8 @@ void AccountState::checkConnectivity()
} else {
// Check the server and then the auth.
#ifdef Q_OS_WIN
// Let's try this for all OS and see if it fixes the Qt issues we have on Linux #4720 #3888 #4051
//#ifdef Q_OS_WIN
// There seems to be a bug in Qt on Windows where QNAM sometimes stops
// working correctly after the computer woke up from sleep. See #2895 #2899
// and #2973.
@@ -201,7 +202,7 @@ void AccountState::checkConnectivity()
// If we don't reset the ssl config a second CheckServerJob can produce a
// ssl config that does not have a sensible certificate chain.
account()->setSslConfiguration(QSslConfiguration());
#endif
//#endif
conValidator->checkServerAndAuth();
}
}
@@ -209,6 +210,7 @@ void AccountState::checkConnectivity()
void AccountState::slotConnectionValidatorResult(ConnectionValidator::Status status, const QStringList& errors)
{
if (isSignedOut()) {
qDebug() << "Signed out, ignoring" << connectionStatusString(status) << _account->url().toString();
return;
}
+12
Ver Arquivo
@@ -139,6 +139,7 @@ Application::Application(int &argc, char **argv) :
setupTranslations();
// Setup global excludes
qDebug() << "Loading global exclude list";
ConfigFile cfg;
ExcludedFiles& excludes = ExcludedFiles::instance();
excludes.addExcludeFilePath( cfg.excludeFile(ConfigFile::SystemScope) );
@@ -335,6 +336,14 @@ void Application::slotownCloudWizardDone( int res )
}
}
static void csyncLogCatcher(int /*verbosity*/,
const char */*function*/,
const char *buffer,
void */*userdata*/)
{
Logger::instance()->csyncLog( QString::fromUtf8(buffer) );
}
void Application::setupLogging()
{
// might be called from second instance
@@ -350,6 +359,9 @@ void Application::setupLogging()
.arg(property("ui_lang").toString())
.arg(_theme->version());
// Setup CSYNC logging to forward to our own logger
csync_set_log_callback( csyncLogCatcher );
csync_set_log_level( Logger::instance()->isNoop() ? 0 : 11 );
}
void Application::slotUseMonoIconsChanged(bool)
+6 -1
Ver Arquivo
@@ -38,7 +38,12 @@ namespace OCC
class UserAgentWebPage : public QWebPage {
public:
UserAgentWebPage(QObject *parent) : QWebPage(parent) {}
UserAgentWebPage(QObject *parent) : QWebPage(parent)
{
if (!qgetenv("OWNCLOUD_SHIBBOLETH_DEBUG").isEmpty()) {
settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);
}
}
QString userAgentForUrl(const QUrl &url ) const {
return QWebPage::userAgentForUrl(url) + " " + Utility::userAgentString();
}
+22 -25
Ver Arquivo
@@ -46,14 +46,6 @@
namespace OCC {
static void csyncLogCatcher(int /*verbosity*/,
const char */*function*/,
const char *buffer,
void */*userdata*/)
{
Logger::instance()->csyncLog( QString::fromUtf8(buffer) );
}
Folder::Folder(const FolderDefinition& definition,
AccountState* accountState,
@@ -121,6 +113,8 @@ Folder::Folder(const FolderDefinition& definition,
Folder::~Folder()
{
// Reset then engine first as it will abort and try to access members of the Folder
_engine.reset();
}
void Folder::checkLocalPath()
@@ -320,6 +314,7 @@ void Folder::slotRunEtagJob()
// sync if it's different.
_requestEtagJob = new RequestEtagJob(account, remotePath(), this);
_requestEtagJob->setTimeout(60*1000);
// check if the etag is different
QObject::connect(_requestEtagJob, SIGNAL(etagRetreived(QString)), this, SLOT(etagRetreived(QString)));
FolderMan::instance()->slotScheduleETagJob(alias(), _requestEtagJob);
@@ -578,19 +573,10 @@ int Folder::slotWipeErrorBlacklist()
void Folder::slotWatchedPathChanged(const QString& path)
{
// When no sync is running or it's in the prepare phase, we can
// always schedule a new sync.
if (! _engine->isSyncRunning() || _syncResult.status() == SyncResult::SyncPrepare) {
emit watchedFileChangedExternally(path);
emit scheduleToSync(this);
return;
}
// 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.
bool ownChange = false;
#ifdef Q_OS_MAC
Q_UNUSED(path)
// On OSX the folder watcher does not report changes done by our
@@ -600,14 +586,23 @@ void Folder::slotWatchedPathChanged(const QString& path)
const auto maxNotificationDelay = 15*1000;
qint64 time = _engine->timeSinceFileTouched(path);
if (time != -1 && time < maxNotificationDelay) {
ownChange = true;
return;
}
#endif
if (! ownChange) {
emit watchedFileChangedExternally(path);
emit scheduleToSync(this);
// Check that the mtime actually changed.
if (path.startsWith(this->path())) {
auto relativePath = path.mid(this->path().size());
auto record = _journal.getFileRecord(relativePath);
if (record.isValid() && !FileSystem::fileChanged(path, record._fileSize,
Utility::qDateTimeToTime_t(record._modtime))) {
qDebug() << "Ignoring spurious notification for file" << relativePath;
return; // probably a spurious notification
}
}
emit watchedFileChangedExternally(path);
emit scheduleToSync(this);
}
void Folder::slotThreadTreeWalkResult(const SyncFileItemVector& items)
@@ -630,7 +625,7 @@ void Folder::removeFromSettings() const
{
auto settings = _accountState->settings();
settings->beginGroup(QLatin1String("Folders"));
settings->remove(_definition.alias);
settings->remove(FolderMan::escapeAlias(_definition.alias));
}
bool Folder::isFileExcludedAbsolute(const QString& fullPath) const
@@ -694,6 +689,10 @@ void Folder::wipe()
bool Folder::setIgnoredFiles()
{
// Note: Doing this on each sync run and on Folder construction is
// unnecessary, because _engine->excludedFiles() persists between
// sync runs. This is not a big problem because ExcludedFiles maintains
// a QSet of files to load.
ConfigFile cfg;
QString systemList = cfg.excludeFile(ConfigFile::SystemScope);
if( QFile::exists(systemList) ) {
@@ -725,8 +724,6 @@ void Folder::startSync(const QStringList &pathList)
if (proxyDirty()) {
setProxyDirty(false);
}
csync_set_log_callback( csyncLogCatcher );
csync_set_log_level( Logger::instance()->isNoop() ? 0 : 11 );
if (isBusy()) {
qCritical() << "* ERROR csync is still running and new sync requested.";
@@ -915,7 +912,7 @@ void Folder::slotFolderDiscovered(bool, QString folderName)
// and hand the result over to the progress dispatcher.
void Folder::slotTransmissionProgress(const ProgressInfo &pi)
{
if( !pi.hasStarted() ) {
if( !pi.isUpdatingEstimates() ) {
// this is the beginning of a sync, set the warning level to 0
_syncResult.setWarnCount(0);
}
+15 -1
Ver Arquivo
@@ -51,6 +51,14 @@ static void callback(
Q_UNUSED(eventFlags)
Q_UNUSED(eventIds)
const FSEventStreamEventFlags c_interestingFlags
= kFSEventStreamEventFlagItemCreated // for new folder/file
| kFSEventStreamEventFlagItemRemoved // for rm
| kFSEventStreamEventFlagItemInodeMetaMod // for mtime change
| kFSEventStreamEventFlagItemRenamed // also coming for moves to trash in finder
| kFSEventStreamEventFlagItemModified; // for content change
//We ignore other flags, e.g. for owner change, xattr change, Finder label change etc
qDebug() << "FolderWatcherPrivate::callback by OS X";
QStringList paths;
@@ -62,8 +70,14 @@ static void callback(
CFIndex pathLength = CFStringGetLength(path);
qstring.resize(pathLength);
CFStringGetCharacters(path, CFRangeMake(0, pathLength), reinterpret_cast<UniChar *>(qstring.data()));
QString fn = qstring.normalized(QString::NormalizationForm_C);
paths.append(qstring.normalized(QString::NormalizationForm_C));
if (!(eventFlags[i] & c_interestingFlags)) {
qDebug() << "Ignoring non-content changes for" << fn;
continue;
}
paths.append(fn);
}
reinterpret_cast<FolderWatcherPrivate*>(clientCallBackInfo)->doNotifyParent(paths);
+6 -17
Ver Arquivo
@@ -68,13 +68,6 @@ FolderWizardLocalPath::FolderWizardLocalPath()
_ui.localFolderLineEdit->setText( QDir::toNativeSeparators( defaultPath ) );
_ui.localFolderLineEdit->setToolTip(tr("Enter the path to the local folder."));
QString newAlias = Theme::instance()->appName();
int count = 0;
while (FolderMan::instance()->folder(newAlias)) {
// There is already a folder configured with this name and folder names need to be unique
newAlias = Theme::instance()->appName() + QString::number(++count);
}
_ui.warnLabel->setTextFormat(Qt::RichText);
_ui.warnLabel->hide();
}
@@ -135,14 +128,6 @@ void FolderWizardLocalPath::slotChooseLocalFolder()
if (!dir.isEmpty()) {
// set the last directory component name as alias
_ui.localFolderLineEdit->setText(QDir::toNativeSeparators(dir));
QDir pickedDir(dir);
QString newAlias = pickedDir.dirName();
int count = 0;
while (FolderMan::instance()->folder(newAlias)) {
// There is already a folder configured with this name and folder names need to be unique
newAlias = pickedDir.dirName() + QString::number(++count);
}
}
emit completeChanged();
}
@@ -503,11 +488,13 @@ FolderWizardSelectiveSync::~FolderWizardSelectiveSync()
void FolderWizardSelectiveSync::initializePage()
{
QString alias = wizard()->field(QLatin1String("alias")).toString();
QString targetPath = wizard()->property("targetPath").toString();
if (targetPath.startsWith('/')) {
targetPath = targetPath.mid(1);
}
QString alias = QFileInfo(targetPath).fileName();
if (alias.isEmpty())
alias = Theme::instance()->appName();
_treeView->setFolderInfo(targetPath, alias);
QWizardPage::initializePage();
}
@@ -520,8 +507,10 @@ bool FolderWizardSelectiveSync::validatePage()
void FolderWizardSelectiveSync::cleanupPage()
{
QString alias = wizard()->field(QLatin1String("alias")).toString();
QString targetPath = wizard()->property("targetPath").toString();
QString alias = QFileInfo(targetPath).fileName();
if (alias.isEmpty())
alias = Theme::instance()->appName();
_treeView->setFolderInfo(targetPath, alias);
QWizardPage::cleanupPage();
}
-8
Ver Arquivo
@@ -161,12 +161,4 @@ void GeneralSettings::slotIgnoreFilesEditor()
}
}
void GeneralSettings::slotOpenAccountWizard()
{
if (QSystemTrayIcon::isSystemTrayAvailable()) {
topLevelWidget()->close();
}
OwncloudSetupWizard::runWizard(qApp, SLOT(slotownCloudWizardDone(int)), 0);
}
} // namespace OCC
-1
Ver Arquivo
@@ -44,7 +44,6 @@ private slots:
void slotToggleOptionalDesktopNotifications(bool);
void slotUpdateInfo();
void slotIgnoreFilesEditor();
void slotOpenAccountWizard();
private:
void loadMiscSettings();
+6 -5
Ver Arquivo
@@ -47,18 +47,19 @@ int main(int argc, char **argv)
{
Q_INIT_RESOURCE(client);
#ifndef Q_OS_MAC
#ifdef Q_OS_WIN
// If the font size ratio is set on Windows, we need to
// enable the auto pixelRatio in Qt since we don't
// want to use sizes relative to the font size everywhere.
// This is automatic on OS X, but opt-in on Windows and Linux
// https://doc-snapshots.qt.io/qt5-5.6/highdpi.html#qt-support
#if QT_VERSION < QT_VERSION_CHECK(5, 6, 0)
qputenv("QT_DEVICE_PIXEL_RATIO", "auto");
#else
// We do not define it on linux so the behaviour is kept the same
// as other Qt apps in the desktop environment. (which may or may
// not set this envoronment variable)
#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1");
#endif
#endif // !Q_OS_MAC
#endif // !Q_OS_WIN
#ifdef Q_OS_MAC
Mac::CocoaInitializer cocoaInit; // RIIA
+1 -1
Ver Arquivo
@@ -685,7 +685,7 @@ void ownCloudGui::slotUpdateProgress(const QString &folder, const ProgressInfo&
slotRebuildRecentMenus();
}
if (progress.hasStarted()
if (progress.isUpdatingEstimates()
&& progress.completedFiles() >= progress.totalFiles()
&& progress._currentDiscoveredFolder.isEmpty()) {
QTimer::singleShot(2000, this, SLOT(slotDisplayIdle()));
+1 -1
Ver Arquivo
@@ -173,7 +173,7 @@ void OwncloudSetupWizard::slotNoOwnCloudFoundAuth(QNetworkReply *reply)
// Allow the credentials dialog to pop up again for the same URL.
// Maybe the user just clicked 'Cancel' by accident or changed his mind.
_ocWizard->account()->resetSslCertErrorState();
_ocWizard->account()->resetRejectedCertificates();
}
void OwncloudSetupWizard::slotNoOwnCloudFoundAuthTimeout(const QUrl&url)
+17 -12
Ver Arquivo
@@ -57,9 +57,15 @@ ProtocolWidget::ProtocolWidget(QWidget *parent) :
header << tr("Action");
header << tr("Size");
int timestampColumnExtra = 0;
#ifdef Q_OS_WIN
timestampColumnExtra = 20; // font metrics are broken on Windows, see #4721
#endif
_ui->_treeWidget->setHeaderLabels( header );
int timestampColumnWidth =
_ui->_treeWidget->fontMetrics().width(timeString(QDateTime::currentDateTime()));
_ui->_treeWidget->fontMetrics().width(timeString(QDateTime::currentDateTime()))
+ timestampColumnExtra;
_ui->_treeWidget->setColumnWidth(0, timestampColumnWidth);
_ui->_treeWidget->setColumnWidth(1, 180);
_ui->_treeWidget->setColumnCount(5);
@@ -84,7 +90,8 @@ ProtocolWidget::ProtocolWidget(QWidget *parent) :
_issueItemView->setHeaderLabels( header );
timestampColumnWidth =
ActivityItemDelegate::rowHeight() // icon
+ _issueItemView->fontMetrics().width(timeString(QDateTime::currentDateTime()));
+ _issueItemView->fontMetrics().width(timeString(QDateTime::currentDateTime()))
+ timestampColumnExtra;
_issueItemView->setColumnWidth(0, timestampColumnWidth);
_issueItemView->setColumnWidth(1, 180);
_issueItemView->setColumnCount(4);
@@ -114,17 +121,9 @@ void ProtocolWidget::hideEvent(QHideEvent *ev)
void ProtocolWidget::cleanItems(const QString& folder)
{
int itemCnt = _ui->_treeWidget->topLevelItemCount();
// Limit the number of items
while(itemCnt > 2000) {
delete _ui->_treeWidget->takeTopLevelItem(itemCnt - 1);
itemCnt--;
}
// The issue list is a state, clear it and let the next sync fill it
// with ignored files and propagation errors.
itemCnt = _issueItemView->topLevelItemCount();
int itemCnt = _issueItemView->topLevelItemCount();
for( int cnt = itemCnt-1; cnt >=0 ; cnt-- ) {
QTreeWidgetItem *item = _issueItemView->topLevelItem(cnt);
QString itemFolder = item->data(2, Qt::UserRole).toString();
@@ -212,7 +211,7 @@ QTreeWidgetItem* ProtocolWidget::createCompletedTreewidgetItem(const QString& fo
void ProtocolWidget::slotProgressInfo( const QString& folder, const ProgressInfo& progress )
{
if( !progress.hasStarted() ) {
if( !progress.isUpdatingEstimates() ) {
// The sync is restarting, clean the old items
cleanItems(folder);
} else if (progress.completedFiles() >= progress.totalFiles()) {
@@ -232,6 +231,12 @@ void ProtocolWidget::slotItemCompleted(const QString &folder, const SyncFileItem
_issueItemView->insertTopLevelItem(0, line);
emit issueItemCountUpdated(_issueItemView->topLevelItemCount());
} else {
// Limit the number of items
int itemCnt = _ui->_treeWidget->topLevelItemCount();
while(itemCnt > 2000) {
delete _ui->_treeWidget->takeTopLevelItem(itemCnt - 1);
itemCnt--;
}
_ui->_treeWidget->insertTopLevelItem(0, line);
}
}
+1 -3
Ver Arquivo
@@ -72,9 +72,7 @@ ShareUserGroupWidget::ShareUserGroupWidget(AccountPtr account,
_completer->setModel(_completerModel);
_completer->setCaseSensitivity(Qt::CaseInsensitive);
#if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)
_completer->setFilterMode(Qt::MatchContains);
#endif
_completer->setCompletionMode(QCompleter::UnfilteredPopupCompletion);
_ui->shareeLineEdit->setCompleter(_completer);
_manager = new ShareManager(_account, this);
+19 -7
Ver Arquivo
@@ -56,6 +56,13 @@
// The second number should be changed when there are new features.
#define MIRALL_SOCKET_API_VERSION "1.0"
static inline QString removeTrailingSlash(QString path)
{
Q_ASSERT(path.endsWith(QLatin1Char('/')));
path.truncate(path.length()-1);
return path;
}
namespace OCC {
#define DEBUG qDebug() << "SocketApi: "
@@ -142,7 +149,7 @@ void SocketApi::slotNewConnection()
foreach( Folder *f, FolderMan::instance()->map() ) {
if (f->canSync()) {
QString message = buildRegisterPathMessage(f->path());
QString message = buildRegisterPathMessage(removeTrailingSlash(f->path()));
sendMessage(socket, message);
}
}
@@ -189,7 +196,7 @@ void SocketApi::slotRegisterPath( const QString& alias )
Folder *f = FolderMan::instance()->folder(alias);
if (f) {
QString message = buildRegisterPathMessage(f->path());
QString message = buildRegisterPathMessage(removeTrailingSlash(f->path()));
foreach(QIODevice *socket, _listeners) {
sendMessage(socket, message);
}
@@ -205,7 +212,7 @@ void SocketApi::slotUnregisterPath( const QString& alias )
Folder *f = FolderMan::instance()->folder(alias);
if (f)
broadcastMessage(QLatin1String("UNREGISTER_PATH"), f->path(), QString::null, true );
broadcastMessage(QLatin1String("UNREGISTER_PATH"), removeTrailingSlash(f->path()), QString::null, true );
_registeredAliases.remove(alias);
}
@@ -225,10 +232,11 @@ void SocketApi::slotUpdateFolderView(Folder *f)
f->syncResult().status() == SyncResult::Error ||
f->syncResult().status() == SyncResult::SetupError ) {
broadcastMessage(QLatin1String("STATUS"), f->path() ,
QString rootPath = removeTrailingSlash(f->path());
broadcastMessage(QLatin1String("STATUS"), rootPath,
f->syncEngine().syncFileStatusTracker().fileStatus("").toSocketAPIString());
broadcastMessage(QLatin1String("UPDATE_VIEW"), f->path() );
broadcastMessage(QLatin1String("UPDATE_VIEW"), rootPath);
} else {
qDebug() << "Not sending UPDATE_VIEW for" << f->alias() << "because status() is" << f->syncResult().status();
}
@@ -302,8 +310,12 @@ void SocketApi::command_RETRIEVE_FILE_STATUS(const QString& argument, QIODevice*
// this can happen in offline mode e.g.: nothing to worry about
statusString = QLatin1String("NOP");
} else {
const QString file = QDir::cleanPath(argument).mid(syncFolder->cleanPath().length()+1);
SyncFileStatus fileStatus = syncFolder->syncEngine().syncFileStatusTracker().fileStatus(file);
QString relativePath = QDir::cleanPath(argument).mid(syncFolder->cleanPath().length()+1);
if( relativePath.endsWith(QLatin1Char('/')) ) {
relativePath.truncate(relativePath.length()-1);
qWarning() << "Removed trailing slash for directory: " << relativePath << "Status pushes won't have one.";
}
SyncFileStatus fileStatus = syncFolder->syncEngine().syncFileStatusTracker().fileStatus(relativePath);
statusString = fileStatus.toSocketAPIString();
}
+2
Ver Arquivo
@@ -218,6 +218,7 @@ void OCUpdater::slotVersionInfoArrived()
{
_timeoutWatchdog->stop();
QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
reply->deleteLater();
if( reply->error() != QNetworkReply::NoError ) {
qDebug() << "Failed to reach version check url: " << reply->errorString();
return;
@@ -258,6 +259,7 @@ void NSISUpdater::slotWriteFile()
void NSISUpdater::slotDownloadFinished()
{
QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
reply->deleteLater();
if (reply->error() != QNetworkReply::NoError) {
setDownloadState(DownloadFailed);
return;
+1
Ver Arquivo
@@ -242,6 +242,7 @@ void AbstractNetworkJob::slotTimeout()
reply()->abort();
} else {
qDebug() << Q_FUNC_INFO << this << "Timeout reply was NULL";
deleteLater();
}
}
+45 -31
Ver Arquivo
@@ -38,9 +38,6 @@ namespace OCC {
Account::Account(QObject *parent)
: QObject(parent)
, _capabilities(QVariantMap())
, _am(0)
, _credentials(0)
, _treatSslErrorsAsFailure(false)
, _davPath( Theme::instance()->webDavPath() )
, _wasMigrated(false)
{
@@ -56,8 +53,6 @@ AccountPtr Account::create()
Account::~Account()
{
delete _credentials;
delete _am;
}
QString Account::davPath() const
@@ -118,14 +113,14 @@ bool Account::changed(AccountPtr other, bool ignoreUrlProtocol) const
changes = (_url == other->_url);
}
changes |= _credentials->changed(other->_credentials);
changes |= _credentials->changed(other->credentials());
return changes;
}
AbstractCredentials *Account::credentials() const
{
return _credentials;
return _credentials.data();
}
void Account::setCredentials(AbstractCredentials *cred)
@@ -136,29 +131,27 @@ void Account::setCredentials(AbstractCredentials *cred)
jar = _am->cookieJar();
jar->setParent(0);
_am->deleteLater();
}
if (_credentials) {
credentials()->deleteLater();
_am = QSharedPointer<QNetworkAccessManager>();
}
// The order for these two is important! Reading the credential's
// settings accesses the account as well as account->_credentials
_credentials = cred;
// settings accesses the account as well as account->_credentials,
// so deleteLater must be used.
_credentials = QSharedPointer<AbstractCredentials>(cred, &QObject::deleteLater);
cred->setAccount(this);
_am = _credentials->getQNAM();
_am = QSharedPointer<QNetworkAccessManager>(_credentials->getQNAM(), &QObject::deleteLater);
if (jar) {
_am->setCookieJar(jar);
}
connect(_am, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
connect(_am.data(), SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
SLOT(slotHandleSslErrors(QNetworkReply*,QList<QSslError>)));
connect(_am, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
connect(_am.data(), SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
connect(_credentials, SIGNAL(fetched()),
connect(_credentials.data(), SIGNAL(fetched()),
SLOT(slotCredentialsFetched()));
connect(_credentials, SIGNAL(asked()),
connect(_credentials.data(), SIGNAL(asked()),
SLOT(slotCredentialsAsked()));
}
@@ -197,18 +190,21 @@ void Account::resetNetworkAccessManager()
qDebug() << "Resetting QNAM";
QNetworkCookieJar* jar = _am->cookieJar();
_am->deleteLater();
_am = _credentials->getQNAM();
// Use a QSharedPointer to allow locking the life of the QNAM on the stack.
// Make it call deleteLater to make sure that we can return to any QNAM stack frames safely.
_am = QSharedPointer<QNetworkAccessManager>(_credentials->getQNAM(), &QObject::deleteLater);
_am->setCookieJar(jar); // takes ownership of the old cookie jar
connect(_am, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
connect(_am.data(), SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
SLOT(slotHandleSslErrors(QNetworkReply*,QList<QSslError>)));
connect(_am, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
connect(_am.data(), SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
}
QNetworkAccessManager *Account::networkAccessManager()
{
return _am;
return _am.data();
}
QNetworkReply *Account::headRequest(const QString &relPath)
@@ -329,9 +325,9 @@ void Account::addApprovedCerts(const QList<QSslCertificate> certs)
_approvedCerts += certs;
}
void Account::resetSslCertErrorState()
void Account::resetRejectedCertificates()
{
_treatSslErrorsAsFailure = false;
_rejectedCertificates.clear();
}
void Account::setSslErrorHandler(AbstractSslErrorHandler *handler)
@@ -412,8 +408,15 @@ void Account::slotHandleSslErrors(QNetworkReply *reply , QList<QSslError> errors
<< error.errorString() << "("<< error.error() << ")" << "\n";
}
if( _treatSslErrorsAsFailure ) {
// User decided once not to trust. Honor this decision.
bool allPreviouslyRejected = true;
foreach (const QSslError &error, errors) {
if (!_rejectedCertificates.contains(error.certificate())) {
allPreviouslyRejected = false;
}
}
// If all certs have previously been rejected by the user, don't ask again.
if( allPreviouslyRejected ) {
qDebug() << out << "Certs not trusted by user decision, returning.";
return;
}
@@ -424,6 +427,12 @@ void Account::slotHandleSslErrors(QNetworkReply *reply , QList<QSslError> errors
return;
}
// SslDialogErrorHandler::handleErrors will run an event loop that might execute
// the deleteLater() of the QNAM before we have the chance of unwinding our stack.
// Keep a ref here on our stackframe to make sure that it doesn't get deleted before
// handleErrors returns.
QSharedPointer<QNetworkAccessManager> qnamLock = _am;
if (_sslErrorHandler->handleErrors(errors, reply->sslConfiguration(), &approvedCerts, sharedFromThis())) {
QSslSocket::addDefaultCaCertificates(approvedCerts);
addApprovedCerts(approvedCerts);
@@ -436,7 +445,12 @@ void Account::slotHandleSslErrors(QNetworkReply *reply , QList<QSslError> errors
// certificate changes.
reply->ignoreSslErrors(errors);
} else {
_treatSslErrorsAsFailure = true;
// Mark all involved certificates as rejected, so we don't ask the user again.
foreach (const QSslError &error, errors) {
if (!_rejectedCertificates.contains(error.certificate())) {
_rejectedCertificates.append(error.certificate());
}
}
// if during normal operation, a new certificate was MITM'ed, and the user does not
// ACK it, the running request must be aborted and the QNAM must be reset, to not
// treat the new cert as granted. See bug #3283
@@ -448,12 +462,12 @@ void Account::slotHandleSslErrors(QNetworkReply *reply , QList<QSslError> errors
void Account::slotCredentialsFetched()
{
emit credentialsFetched(_credentials);
emit credentialsFetched(_credentials.data());
}
void Account::slotCredentialsAsked()
{
emit credentialsAsked(_credentials);
emit credentialsAsked(_credentials.data());
}
void Account::handleInvalidCredentials()
+7 -4
Ver Arquivo
@@ -133,7 +133,7 @@ public:
// Usually when a user explicitly rejects a certificate we don't
// ask again. After this call, a dialog will again be shown when
// the next unknown certificate is encountered.
void resetSslCertErrorState();
void resetRejectedCertificates();
// pluggable handler
void setSslErrorHandler(AbstractSslErrorHandler *handler);
@@ -214,9 +214,12 @@ private:
QString _serverVersion;
QScopedPointer<AbstractSslErrorHandler> _sslErrorHandler;
QuotaInfo *_quotaInfo;
QNetworkAccessManager *_am;
AbstractCredentials* _credentials;
bool _treatSslErrorsAsFailure;
QSharedPointer<QNetworkAccessManager> _am;
QSharedPointer<AbstractCredentials> _credentials;
/// Certificates that were explicitly rejected by the user
QList<QSslCertificate> _rejectedCertificates;
static QString _configFileName;
QByteArray _pemCertificate;
QString _pemPrivateKey;
+71
Ver Arquivo
@@ -610,6 +610,74 @@ void DiscoveryJob::remote_vio_closedir_hook (csync_vio_handle_t *dhandle, void
}
}
static QString convertToRegexpSyntax(char *exclude)
{
//QString::fromUtf8(exclude);
QString s;
for (unsigned int i = 0; i < strlen(exclude); i++) {
char &c = exclude[i];
if (c == '*') s += ".*";
else if (c == '.') s += "\\.";
else if (c == '$') s += "\\$";
else if (c == '?') s += ".";
else s += c;
// FIXME: [ ] { } ( ) etc
}
qDebug() << s;
return s;
}
CSYNC_EXCLUDE_TYPE DiscoveryJob::excluded_traversal_hook (const char *path, int filetype, void *userdata)
{
DiscoveryJob *discoveryJob = static_cast<DiscoveryJob*>(userdata);
// FIXME: csync_e
// FIXME file match vs directory match?
qDebug() << discoveryJob->_exclude_traversel_regexp_exclude.isValid() << path << discoveryJob->_exclude_traversel_regexp_exclude.errorString();
if (discoveryJob->_exclude_traversel_regexp_exclude.pattern().length() == 0) {
// env QT_ENABLE_REGEXP_JIT 1
discoveryJob->_exclude_traversel_regexp_exclude.setPatternOptions(QRegularExpression::OptimizeOnFirstUsageOption);
discoveryJob->_exclude_traversel_regexp_exclude_and_remove.setPatternOptions(QRegularExpression::OptimizeOnFirstUsageOption);
QString _exclude_traversel_regexp_exclude;
QString _exclude_traversel_regexp_exclude_and_remove;
for (unsigned int i = 0; i < discoveryJob->_csync_ctx->excludes->count; i++) {
char *exclude = discoveryJob->_csync_ctx->excludes->vector[i];
QString *builderToUse = & _exclude_traversel_regexp_exclude;
if (exclude[0] == '\n') continue; // empty line
if (exclude[0] == '\r') continue; // empty line
if (exclude[0] == ']'){
exclude++;
builderToUse = &_exclude_traversel_regexp_exclude_and_remove;
}
if (builderToUse->size() > 0) {
builderToUse->append("|");
}
builderToUse->append(convertToRegexpSyntax(exclude));
}
qDebug() << _exclude_traversel_regexp_exclude;
qDebug() << _exclude_traversel_regexp_exclude_and_remove;
discoveryJob->_exclude_traversel_regexp_exclude.setPattern(_exclude_traversel_regexp_exclude);
discoveryJob->_exclude_traversel_regexp_exclude_and_remove.setPattern(_exclude_traversel_regexp_exclude_and_remove);
}
QString p = QString::fromUtf8(path);
if (discoveryJob->_exclude_traversel_regexp_exclude.match(p).hasMatch()) {
qDebug() << "WOULD EXCLUDE";
return CSYNC_FILE_EXCLUDE_LIST;
}
// FIXME
if (discoveryJob->_exclude_traversel_regexp_exclude_and_remove.match(p).hasMatch()) {
qDebug() << "WOULD EXCLUDE AND REMOVE";
return CSYNC_FILE_EXCLUDE_AND_REMOVE;
}
// FIXME
return CSYNC_NOT_EXCLUDED;
}
void DiscoveryJob::start() {
_selectiveSyncBlackList.sort();
_selectiveSyncWhiteList.sort();
@@ -623,6 +691,9 @@ void DiscoveryJob::start() {
_csync_ctx->callbacks.remote_closedir_hook = remote_vio_closedir_hook;
_csync_ctx->callbacks.vio_userdata = this;
_csync_ctx->callbacks.excluded_traversal_hook = excluded_traversal_hook;
_csync_ctx->callbacks.excluded_traversal_userdata = this;
csync_set_log_callback(_log_callback);
csync_set_log_level(_log_level);
csync_set_log_userdata(_log_userdata);
+5
Ver Arquivo
@@ -23,6 +23,7 @@
#include <QMutex>
#include <QWaitCondition>
#include <QLinkedList>
#include <QRegularExpression>
namespace OCC {
@@ -182,6 +183,10 @@ class DiscoveryJob : public QObject {
QMutex _vioMutex;
QWaitCondition _vioWaitCondition;
QRegularExpression _exclude_traversel_regexp_exclude;
QRegularExpression _exclude_traversel_regexp_exclude_and_remove;
static CSYNC_EXCLUDE_TYPE excluded_traversal_hook (const char *path, int filetype, void *userdata);
public:
explicit DiscoveryJob(CSYNC *ctx, QObject* parent = 0)
+1 -1
Ver Arquivo
@@ -42,7 +42,7 @@ ExcludedFiles& ExcludedFiles::instance()
void ExcludedFiles::addExcludeFilePath(const QString& path)
{
_excludeFiles.append(path);
_excludeFiles.insert(path);
}
bool ExcludedFiles::reloadExcludes()
+3 -2
Ver Arquivo
@@ -16,7 +16,8 @@
#include "owncloudlib.h"
#include <QObject>
#include <QStringList>
#include <QSet>
#include <QString>
extern "C" {
#include "std/c_string.h"
@@ -66,7 +67,7 @@ private:
// This is a pointer to the csync exclude list, its is owned by this class
// but the pointer can be in a csync_context so that it can itself also query the list.
c_strlist_t** _excludesPtr;
QStringList _excludeFiles;
QSet<QString> _excludeFiles;
};
} // namespace OCC
+8 -8
Ver Arquivo
@@ -496,16 +496,16 @@ QString FileSystem::fileSystemForPath(const QString & path)
}
#endif
#define BUFSIZE 1024*1024*10
#define BUFSIZE qint64(500*1024) // 500 KiB
static QByteArray readToCrypto( const QString& filename, QCryptographicHash::Algorithm algo )
{
const qint64 bufSize = BUFSIZE;
QByteArray buf(bufSize,0);
QFile file(filename);
const qint64 bufSize = qMin(BUFSIZE, file.size() + 1);
QByteArray buf(bufSize, Qt::Uninitialized);
QByteArray arr;
QCryptographicHash crypto( algo );
QFile file(filename);
if (file.open(QIODevice::ReadOnly)) {
qint64 size;
while (!file.atEnd()) {
@@ -532,11 +532,11 @@ QByteArray FileSystem::calcSha1( const QString& filename )
#ifdef ZLIB_FOUND
QByteArray FileSystem::calcAdler32( const QString& filename )
{
unsigned int adler = adler32(0L, Z_NULL, 0);
const qint64 bufSize = BUFSIZE;
QByteArray buf(bufSize, 0);
QFile file(filename);
const qint64 bufSize = qMin(BUFSIZE, file.size() + 1);
QByteArray buf(bufSize, Qt::Uninitialized);
unsigned int adler = adler32(0L, Z_NULL, 0);
if (file.open(QIODevice::ReadOnly)) {
qint64 size;
while (!file.atEnd()) {
+3 -3
Ver Arquivo
@@ -111,9 +111,9 @@ bool OWNCLOUDSYNC_EXPORT rename(const QString& originFileName,
*
* @return true if the file's mtime or size are not what is expected.
*/
bool fileChanged(const QString& fileName,
qint64 previousSize,
time_t previousMtime);
bool OWNCLOUDSYNC_EXPORT fileChanged(const QString& fileName,
qint64 previousSize,
time_t previousMtime);
/**
* @brief Like !fileChanged() but with verbose logging if the file *did* change.
+7 -1
Ver Arquivo
@@ -297,7 +297,12 @@ public:
QAtomicInt _abortRequested; // boolean set by the main thread to abort.
/* The list of currently active jobs */
/** The list of currently active jobs.
This list contains the jobs that are currently using ressources and is used purely to
know how many jobs there is currently running for the scheduler.
Jobs add themself to the list when they do an assynchronous operation.
Jobs can be several time on the list (example, when several chunks are uploaded in parallel)
*/
QList<PropagateItemJob*> _activeJobList;
/** We detected that another sync is required after this one */
@@ -383,6 +388,7 @@ private:
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
// access to signals which are protected in Qt4
friend class PropagateDownloadFileQNAM;
friend class PropagateUploadFileQNAM;
#endif
};
+56 -10
Ver Arquivo
@@ -127,27 +127,65 @@ void ProgressDispatcher::setProgressInfo(const QString& folder, const ProgressIn
emit progressInfo( folder, progress );
}
void ProgressInfo::start()
ProgressInfo::ProgressInfo()
{
connect(&_updateEstimatesTimer, SIGNAL(timeout()), SLOT(updateEstimates()));
reset();
}
void ProgressInfo::reset()
{
_currentItems.clear();
_currentDiscoveredFolder.clear();
_sizeProgress = Progress();
_fileProgress = Progress();
_totalSizeOfCompletedJobs = 0;
_maxBytesPerSecond = 100000.0;
_maxFilesPerSecond = 2.0;
_updateEstimatesTimer.stop();
}
void ProgressInfo::startEstimateUpdates()
{
_updateEstimatesTimer.start(1000);
}
bool ProgressInfo::hasStarted() const
bool ProgressInfo::isUpdatingEstimates() const
{
return _updateEstimatesTimer.isActive();
}
static bool shouldCountProgress(const SyncFileItem &item)
{
const auto instruction = item._instruction;
// Don't worry about directories that won't have propagation
// jobs associated with them.
if (item._isDirectory
&& (instruction == CSYNC_INSTRUCTION_NONE
|| instruction == CSYNC_INSTRUCTION_SYNC
|| instruction == CSYNC_INSTRUCTION_CONFLICT)) {
return false;
}
// Skip any ignored or error files, we do nothing with them.
if (instruction == CSYNC_INSTRUCTION_IGNORE
|| instruction == CSYNC_INSTRUCTION_ERROR) {
return false;
}
return true;
}
void ProgressInfo::adjustTotalsForFile(const SyncFileItem &item)
{
if (!item._isDirectory) {
_fileProgress._total++;
if (isSizeDependent(item)) {
_sizeProgress._total += item._size;
}
} else if (item._instruction != CSYNC_INSTRUCTION_NONE) {
// Added or removed directories certainly count.
_fileProgress._total++;
if (!shouldCountProgress(item)) {
return;
}
_fileProgress._total += item._affectedItems;
if (isSizeDependent(item)) {
_sizeProgress._total += item._size;
}
}
@@ -178,6 +216,10 @@ quint64 ProgressInfo::completedSize() const
void ProgressInfo::setProgressComplete(const SyncFileItem &item)
{
if (!shouldCountProgress(item)) {
return;
}
_currentItems.remove(item._file);
_fileProgress.setCompleted(_fileProgress._completed + item._affectedItems);
if (ProgressInfo::isSizeDependent(item)) {
@@ -189,6 +231,10 @@ void ProgressInfo::setProgressComplete(const SyncFileItem &item)
void ProgressInfo::setProgressItem(const SyncFileItem &item, quint64 completed)
{
if (!shouldCountProgress(item)) {
return;
}
_currentItems[item._file]._item = item;
_currentItems[item._file]._progress._total = item._size;
_currentItems[item._file]._progress.setCompleted(completed);
+10 -10
Ver Arquivo
@@ -37,27 +37,27 @@ class OWNCLOUDSYNC_EXPORT ProgressInfo : public QObject
{
Q_OBJECT
public:
ProgressInfo()
: _totalSizeOfCompletedJobs(0)
, _maxFilesPerSecond(2.0)
, _maxBytesPerSecond(100000.0)
{}
ProgressInfo();
/** Resets for a new sync run.
*/
void reset();
/**
* Called when propagation starts.
*
* hasStarted() will return true afterwards.
* isUpdatingEstimates() will return true afterwards.
*/
void start();
void startEstimateUpdates();
/**
* Returns true when propagation has started (start() was called).
* Returns true when startEstimateUpdates() was called.
*
* This is used when the SyncEngine wants to indicate a new sync
* is about to start via the transmissionProgress() signal. The
* first ProgressInfo will have hasStarted() == false.
* first ProgressInfo will have isUpdatingEstimates() == false.
*/
bool hasStarted() const;
bool isUpdatingEstimates() const;
/**
* Increase the file and size totals by the amount indicated in item.
-1
Ver Arquivo
@@ -654,7 +654,6 @@ static void preserveGroupOwnership(const QString& fileName, const QFileInfo& fi)
}
} // end namespace
void PropagateDownloadFileQNAM::transmissionChecksumValidated(const QByteArray &checksumType, const QByteArray &checksum)
{
const auto theContentChecksumType = contentChecksumType();
+23 -5
Ver Arquivo
@@ -97,7 +97,9 @@ void PUTFileJob::start() {
}
void PUTFileJob::slotTimeout() {
qDebug() << "Timeout" << reply()->request().url();
qDebug() << "Timeout" << (reply() ? reply()->request().url() : path());
if (!reply())
return;
_errorString = tr("Connection Timeout");
reply()->abort();
}
@@ -209,8 +211,6 @@ void PropagateUploadFileQNAM::slotComputeContentChecksum()
return;
}
_propagator->_activeJobList.removeOne(this);
const QString filePath = _propagator->getFilePath(_item->_file);
// remember the modtime before checksumming to be able to detect a file
@@ -234,6 +234,8 @@ void PropagateUploadFileQNAM::slotComputeContentChecksum()
connect(computeChecksum, SIGNAL(done(QByteArray,QByteArray)),
SLOT(slotComputeTransmissionChecksum(QByteArray,QByteArray)));
connect(computeChecksum, SIGNAL(done(QByteArray,QByteArray)),
computeChecksum, SLOT(deleteLater()));
computeChecksum->start(filePath);
}
@@ -268,12 +270,18 @@ void PropagateUploadFileQNAM::slotComputeTransmissionChecksum(const QByteArray&
connect(computeChecksum, SIGNAL(done(QByteArray,QByteArray)),
SLOT(slotStartUpload(QByteArray,QByteArray)));
connect(computeChecksum, SIGNAL(done(QByteArray,QByteArray)),
computeChecksum, SLOT(deleteLater()));
const QString filePath = _propagator->getFilePath(_item->_file);
computeChecksum->start(filePath);
}
void PropagateUploadFileQNAM::slotStartUpload(const QByteArray& transmissionChecksumType, const QByteArray& transmissionChecksum)
{
// Remove ourselfs from the list of active job, before any posible call to done()
// When we start chunks, we will add it again, once for every chunks.
_propagator->_activeJobList.removeOne(this);
_transmissionChecksum = transmissionChecksum;
_transmissionChecksumType = transmissionChecksumType;
@@ -398,7 +406,7 @@ qint64 UploadDevice::readData(char* data, qint64 maxlen) {
if (isBandwidthLimited()) {
maxlen = qMin(maxlen, _bandwidthQuota);
if (maxlen <= 0) { // no quota
qDebug() << "no quota";
//qDebug() << "no quota";
return 0;
}
_bandwidthQuota -= maxlen;
@@ -544,8 +552,16 @@ void PropagateUploadFileQNAM::startNextChunk()
_transmissionChecksumType, _transmissionChecksum);
}
if (! device->prepareAndOpen(_propagator->getFilePath(_item->_file), chunkStart, currentChunkSize)) {
const QString fileName = _propagator->getFilePath(_item->_file);
if (! device->prepareAndOpen(fileName, chunkStart, currentChunkSize)) {
qDebug() << "ERR: Could not prepare upload device: " << device->errorString();
// If the file is currently locked, we want to retry the sync
// when it becomes available again.
if (FileSystem::isFileLocked(fileName)) {
emit _propagator->seenLockedFile(fileName);
}
// Soft error because this is likely caused by the user modifying his files while syncing
abortWithError( SyncFileItem::SoftError, device->errorString() );
delete device;
@@ -763,6 +779,8 @@ void PropagateUploadFileQNAM::slotPutFinished()
<< _stopWatch.durationOfLap(QLatin1String("ContentChecksum"))
<< _stopWatch.durationOfLap(QLatin1String("TransmissionChecksum"))
<< _item->_requestDuration;
// The job might stay alive for the whole sync, release this tiny bit of memory.
_stopWatch.reset();
finalize(*_item);
}
+24 -10
Ver Arquivo
@@ -101,10 +101,10 @@ SyncEngine::SyncEngine(AccountPtr account, const QString& localPath,
SyncEngine::~SyncEngine()
{
abort();
_excludedFiles.reset();
csync_destroy(_csync_ctx);
_thread.quit();
_thread.wait();
_excludedFiles.reset();
csync_destroy(_csync_ctx);
}
//Convert an error code from csync to a user readable string.
@@ -203,6 +203,12 @@ QString SyncEngine::csyncErrorToString(CSYNC_STATUS err)
}
/**
* Check if the item is in the blacklist.
* If it should not be sync'ed because of the blacklist, update the item with the error instruction
* and proper error message, and return true.
* If the item is not in the blacklist, or the blacklist is stale, return false.
*/
bool SyncEngine::checkErrorBlacklisting( SyncFileItem &item )
{
if( !_journal ) {
@@ -234,6 +240,9 @@ bool SyncEngine::checkErrorBlacklisting( SyncFileItem &item )
} else if( item._modtime != entry._lastTryModtime ) {
qDebug() << item._file << " is blacklisted, but has changed mtime!";
return false;
} else if( item._renameTarget != entry._renameTarget) {
qDebug() << item._file << " is blacklisted, but rename target changed from" << entry._renameTarget;
return false;
}
} else if( item._direction == SyncFileItem::Down ) {
// download, check the etag.
@@ -539,10 +548,10 @@ int SyncEngine::treewalkFile( TREE_WALK_FILE *file, bool remote )
bool directoryEtagUpdate = isDirectory && file->should_update_metadata;
bool localMetadataUpdate = !remote && file->should_update_metadata;
if (!directoryEtagUpdate) {
item->_isDirectory = isDirectory;
if (localMetadataUpdate) {
// Hack, we want a local metadata update to happen, but only if the
// remote tree doesn't ask us to do some kind of propagation.
item->_isDirectory = isDirectory;
_syncItemMap.insert(key, item);
}
emit syncItemDiscovered(*item);
@@ -571,7 +580,7 @@ int SyncEngine::treewalkFile( TREE_WALK_FILE *file, bool remote )
// An upload of an existing file means that the file was left unchanged on the server
// This counts as a NONE for detecting if all the files on the server were changed
_hasNoneFiles = true;
} else if (!item->_isDirectory) {
} else if (!isDirectory) {
if (std::difftime(file->modtime, file->other.modtime) < 0) {
// We are going back on time
_backInTimeFiles++;
@@ -673,6 +682,8 @@ void SyncEngine::startSync()
_syncRunning = true;
_anotherSyncNeeded = false;
_progressInfo->reset();
if (!QDir(_localPath).exists()) {
// No _tr, it should only occur in non-mirall
emit csyncError("Unable to find local sync folder.");
@@ -909,7 +920,7 @@ void SyncEngine::slotDiscoveryJobFinished(int discoveryResult)
emit aboutToPropagate(_syncedItems);
// it's important to do this before ProgressInfo::start(), to announce start of new sync
emit transmissionProgress(*_progressInfo);
_progressInfo->start();
_progressInfo->startEstimateUpdates();
// post update phase script: allow to tweak stuff by a custom script in debug mode.
if( !qgetenv("OWNCLOUD_POST_UPDATE_SCRIPT").isEmpty() ) {
@@ -1244,15 +1255,18 @@ void SyncEngine::checkForPermission()
}
}
#if 0 /* We don't like the idea of renaming behind user's back, as the user may be working with the files */
if (!sourceOK && !destinationOK) {
#ifdef OWNCLOUD_RESTORE_RENAME /* We don't like the idea of renaming behind user's back, as the user may be working with the files */
if (!sourceOK && (!destinationOK || isRename)
// (not for directory because that's more complicated with the contents that needs to be adjusted)
&& !(*it)->_isDirectory) {
// Both the source and the destination won't allow move. Move back to the original
std::swap((*it)->_file, (*it)->_renameTarget);
(*it)->_direction = SyncFileItem::Down;
(*it)->_errorString = tr("Move not allowed, item restored");
(*it)->_isRestoration = true;
qDebug() << "checkForPermission: MOVING BACK" << (*it)->_file;
// in case something does wrong, we will not do it next time
_journal->avoidRenamesOnNextSync((*it)->_file);
} else
#endif
if (!sourceOK || !destinationOK) {
@@ -1365,13 +1379,13 @@ AccountPtr SyncEngine::account() const
void SyncEngine::abort()
{
// Sets a flag for the update phase
csync_request_abort(_csync_ctx);
qDebug() << Q_FUNC_INFO << _discoveryMainThread;
// Aborts the discovery phase job
if (_discoveryMainThread) {
_discoveryMainThread->abort();
}
// Sets a flag for the update phase
csync_request_abort(_csync_ctx);
// For the propagator
if(_propagator) {
_propagator->abort();
+30 -33
Ver Arquivo
@@ -76,7 +76,6 @@ SyncFileStatusTracker::SyncFileStatusTracker(SyncEngine *syncEngine)
SLOT(slotAboutToPropagate(SyncFileItemVector&)));
connect(syncEngine, SIGNAL(itemCompleted(const SyncFileItem&, const PropagatorJob&)),
SLOT(slotItemCompleted(const SyncFileItem&)));
connect(syncEngine, SIGNAL(started()), SLOT(slotClearDirtyPaths()));
connect(syncEngine, SIGNAL(started()), SLOT(slotSyncEngineRunningChanged()));
connect(syncEngine, SIGNAL(finished(bool)), SLOT(slotSyncEngineRunningChanged()));
}
@@ -92,15 +91,13 @@ SyncFileItem SyncFileStatusTracker::rootSyncFileItem()
return fakeRootItem;
}
SyncFileStatus SyncFileStatusTracker::fileStatus(const QString& systemFileName)
SyncFileStatus SyncFileStatusTracker::fileStatus(const QString& relativePath)
{
QString fileName = systemFileName.normalized(QString::NormalizationForm_C);
if( fileName.endsWith(QLatin1Char('/')) ) {
fileName.truncate(fileName.length()-1);
qDebug() << "Removed trailing slash: " << fileName;
}
// normalization is required for OS X to match file names properly
QString normalizedRelativePath = relativePath.normalized(QString::NormalizationForm_C);
Q_ASSERT(!normalizedRelativePath.endsWith(QLatin1Char('/')));
if( fileName.isEmpty() ) {
if (normalizedRelativePath.isEmpty()) {
// This is the root sync folder, it doesn't have an entry in the database and won't be walked by csync, so create one manually.
return syncFileItemStatus(rootSyncFileItem());
}
@@ -111,22 +108,22 @@ SyncFileStatus SyncFileStatusTracker::fileStatus(const QString& systemFileName)
// update the exclude list at runtime and doing it statically here removes
// our ability to notify changes through the fileStatusChanged signal,
// it's an acceptable compromize to treat all exclude types the same.
if( _syncEngine->excludedFiles().isExcluded(_syncEngine->localPath() + fileName,
if( _syncEngine->excludedFiles().isExcluded(_syncEngine->localPath() + normalizedRelativePath,
_syncEngine->localPath(),
_syncEngine->ignoreHiddenFiles()) ) {
return SyncFileStatus(SyncFileStatus::StatusWarning);
}
if ( _dirtyPaths.contains(fileName) )
if ( _dirtyPaths.contains(normalizedRelativePath) )
return SyncFileStatus::StatusSync;
SyncFileItem* item = _syncEngine->findSyncItem(fileName);
SyncFileItem* item = _syncEngine->findSyncItem(normalizedRelativePath);
if (item) {
return syncFileItemStatus(*item);
}
// If we're not currently syncing that file, look it up in the database to know if it's shared
SyncJournalFileRecord rec = _syncEngine->journal()->getFileRecord(fileName);
SyncJournalFileRecord rec = _syncEngine->journal()->getFileRecord(normalizedRelativePath);
if (rec.isValid()) {
return syncFileItemStatus(rec.toSyncFileItem());
}
@@ -158,9 +155,18 @@ void SyncFileStatusTracker::slotAboutToPropagate(SyncFileItemVector& items)
} else if (showWarningInSocketApi(*item)) {
_syncProblems[item->_file] = SyncFileStatus::StatusWarning;
}
emit fileStatusChanged(getSystemDestination(*item), syncFileItemStatus(*item));
_dirtyPaths.remove(item->destination());
emit fileStatusChanged(getSystemDestination(item->destination()), syncFileItemStatus(*item));
}
// Some metadata status won't trigger files to be synced, make sure that we
// push the OK status for dirty files that don't need to be propagated.
// Swap into a copy since fileStatus() reads _dirtyPaths to determine the status
QSet<QString> oldDirtyPaths;
std::swap(_dirtyPaths, oldDirtyPaths);
for (auto it = oldDirtyPaths.begin(); it != oldDirtyPaths.end(); ++it)
emit fileStatusChanged(getSystemDestination(*it), fileStatus(*it));
// Make sure to push any status that might have been resolved indirectly since the last sync
// (like an error file being deleted from disk)
for (auto it = _syncProblems.begin(); it != _syncProblems.end(); ++it)
@@ -170,7 +176,7 @@ void SyncFileStatusTracker::slotAboutToPropagate(SyncFileItemVector& items)
SyncFileStatus::SyncFileStatusTag severity = it->second;
if (severity == SyncFileStatus::StatusError)
invalidateParentPaths(path);
emit fileStatusChanged(_syncEngine->localPath() + path, fileStatus(path));
emit fileStatusChanged(getSystemDestination(path), fileStatus(path));
}
}
@@ -184,11 +190,10 @@ void SyncFileStatusTracker::slotItemCompleted(const SyncFileItem &item)
} else if (showWarningInSocketApi(item)) {
_syncProblems[item._file] = SyncFileStatus::StatusWarning;
} else {
// There is currently no situation where an error status set during discovery/update is fixed by propagation.
Q_ASSERT(_syncProblems.find(item._file) == _syncProblems.end());
_syncProblems.erase(item._file);
}
emit fileStatusChanged(getSystemDestination(item), syncFileItemStatus(item));
emit fileStatusChanged(getSystemDestination(item.destination()), syncFileItemStatus(item));
}
void SyncFileStatusTracker::slotSyncEngineRunningChanged()
@@ -196,13 +201,6 @@ void SyncFileStatusTracker::slotSyncEngineRunningChanged()
emit fileStatusChanged(_syncEngine->localPath(), syncFileItemStatus(rootSyncFileItem()));
}
void SyncFileStatusTracker::slotClearDirtyPaths()
{
// We just assume that during a sync all dirty statuses will be resolved
// one way or the other.
_dirtyPaths.clear();
}
SyncFileStatus SyncFileStatusTracker::syncFileItemStatus(const SyncFileItem& item)
{
// Hack to know if the item was taken from the sync engine (Sync), or from the database (UpToDate)
@@ -236,20 +234,19 @@ void SyncFileStatusTracker::invalidateParentPaths(const QString& path)
QStringList splitPath = path.split('/', QString::SkipEmptyParts);
for (int i = 0; i < splitPath.size(); ++i) {
QString parentPath = QStringList(splitPath.mid(0, i)).join(QLatin1String("/"));
emit fileStatusChanged(_syncEngine->localPath() + parentPath, fileStatus(parentPath));
emit fileStatusChanged(getSystemDestination(parentPath), fileStatus(parentPath));
}
}
QString SyncFileStatusTracker::getSystemDestination(const SyncFileItem& item)
QString SyncFileStatusTracker::getSystemDestination(const QString& relativePath)
{
QString systemFileName = _syncEngine->localPath() + item.destination();
// the trailing slash for directories must be appended as the filenames coming in
// from the plugins have that too. Otherwise the matching entry item is not found
// in the plugin.
if( item._type == SyncFileItem::Type::Directory ) {
systemFileName += QLatin1Char('/');
QString systemPath = _syncEngine->localPath() + relativePath;
// SyncEngine::localPath() has a trailing slash, make sure to remove it if the
// destination is empty.
if( systemPath.endsWith(QLatin1Char('/')) ) {
systemPath.truncate(systemPath.length()-1);
}
return systemFileName;
return systemPath;
}
}
+2 -3
Ver Arquivo
@@ -35,7 +35,7 @@ class OWNCLOUDSYNC_EXPORT SyncFileStatusTracker : public QObject
Q_OBJECT
public:
explicit SyncFileStatusTracker(SyncEngine* syncEngine);
SyncFileStatus fileStatus(const QString& systemFileName);
SyncFileStatus fileStatus(const QString& relativePath);
public slots:
void slotPathTouched(const QString& fileName);
@@ -47,14 +47,13 @@ private slots:
void slotAboutToPropagate(SyncFileItemVector& items);
void slotItemCompleted(const SyncFileItem& item);
void slotSyncEngineRunningChanged();
void slotClearDirtyPaths();
private:
SyncFileStatus syncFileItemStatus(const SyncFileItem& item);
SyncFileItem rootSyncFileItem();
void invalidateParentPaths(const QString& path);
QString getSystemDestination(const SyncFileItem& syncEnginePath);
QString getSystemDestination(const QString& relativePath);
SyncEngine* _syncEngine;
+15 -4
Ver Arquivo
@@ -409,7 +409,7 @@ bool SyncJournalDb::checkConnect()
_deleteFileRecordRecursively.reset(new SqlQuery(_db));
_deleteFileRecordRecursively->prepare("DELETE FROM metadata WHERE path LIKE(?||'/%')");
QString sql( "SELECT lastTryEtag, lastTryModtime, retrycount, errorstring, lastTryTime, ignoreDuration "
QString sql( "SELECT lastTryEtag, lastTryModtime, retrycount, errorstring, lastTryTime, ignoreDuration, renameTarget "
"FROM blacklist WHERE path=?1");
if( Utility::fsCasePreserving() ) {
// if the file system is case preserving we have to check the blacklist
@@ -421,8 +421,8 @@ bool SyncJournalDb::checkConnect()
_setErrorBlacklistQuery.reset(new SqlQuery(_db));
_setErrorBlacklistQuery->prepare("INSERT OR REPLACE INTO blacklist "
"(path, lastTryEtag, lastTryModtime, retrycount, errorstring, lastTryTime, ignoreDuration) "
"VALUES ( ?1, ?2, ?3, ?4, ?5, ?6, ?7)");
"(path, lastTryEtag, lastTryModtime, retrycount, errorstring, lastTryTime, ignoreDuration, renameTarget) "
"VALUES ( ?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8)");
_getSelectiveSyncListQuery.reset(new SqlQuery(_db));
_getSelectiveSyncListQuery->prepare("SELECT path FROM selectivesync WHERE type=?1");
@@ -612,6 +612,15 @@ bool SyncJournalDb::updateErrorBlacklistTableStructure()
}
commitInternal("update database structure: add lastTryTime, ignoreDuration cols");
}
if( columns.indexOf(QLatin1String("renameTarget")) == -1 ) {
SqlQuery query(_db);
query.prepare("ALTER TABLE blacklist ADD COLUMN renameTarget VARCHAR(4096);");
if( !query.exec() ) {
sqlFail("updateBlacklistTableStructure: Add renameTarget", query);
re = false;
}
commitInternal("update database structure: add lastTryTime, ignoreDuration cols");
}
SqlQuery query(_db);
query.prepare("CREATE INDEX IF NOT EXISTS blacklist_index ON blacklist(path collate nocase);");
@@ -1224,6 +1233,7 @@ SyncJournalErrorBlacklistRecord SyncJournalDb::errorBlacklistEntry( const QStrin
entry._errorString = _getErrorBlacklistQuery->stringValue(3);
entry._lastTryTime = _getErrorBlacklistQuery->int64Value(4);
entry._ignoreDuration = _getErrorBlacklistQuery->int64Value(5);
entry._renameTarget = _getErrorBlacklistQuery->stringValue(6);
entry._file = file;
}
_getErrorBlacklistQuery->reset_and_clear_bindings();
@@ -1335,13 +1345,14 @@ void SyncJournalDb::updateErrorBlacklistEntry( const SyncJournalErrorBlacklistRe
_setErrorBlacklistQuery->bindValue(5, item._errorString);
_setErrorBlacklistQuery->bindValue(6, QString::number(item._lastTryTime));
_setErrorBlacklistQuery->bindValue(7, QString::number(item._ignoreDuration));
_setErrorBlacklistQuery->bindValue(8, item._renameTarget);
if( !_setErrorBlacklistQuery->exec() ) {
QString bug = _setErrorBlacklistQuery->error();
qDebug() << "SQL exec blacklistitem insert or replace failed: "<< bug;
}
qDebug() << "set blacklist entry for " << item._file << item._retryCount
<< item._errorString << item._lastTryTime << item._ignoreDuration
<< item._lastTryModtime << item._lastTryEtag;
<< item._lastTryModtime << item._lastTryEtag << item._renameTarget ;
_setErrorBlacklistQuery->reset_and_clear_bindings();
}
+1
Ver Arquivo
@@ -151,6 +151,7 @@ SyncJournalErrorBlacklistRecord SyncJournalErrorBlacklistRecord::update(
// The factor of 5 feels natural: 25s, 2 min, 10 min, ~1h, ~5h, ~24h
entry._ignoreDuration = old._ignoreDuration * 5;
entry._file = item._file;
entry._renameTarget = item._renameTarget;
if( item._httpErrorCode == 403 ) {
qDebug() << "Probably firewall error: " << item._httpErrorCode << ", blacklisting up to 1h only";
+1
Ver Arquivo
@@ -89,6 +89,7 @@ public:
time_t _ignoreDuration;
QString _file;
QString _renameTarget;
bool isValid() const;
+12 -7
Ver Arquivo
@@ -306,17 +306,22 @@ namespace {
QString description(quint64 value) const
{
return QCoreApplication::translate(
"Utiliy", name, 0, QCoreApplication::UnicodeUTF8,
"Utility", name, 0, QCoreApplication::UnicodeUTF8,
value);
}
};
// QTBUG-3945 and issue #4855: QT_TRANSLATE_NOOP does not work with plural form because lupdate
// limitation unless we fake more arguments
// (it must be in the form ("context", "source", "comment", n)
#undef QT_TRANSLATE_NOOP
#define QT_TRANSLATE_NOOP(ctx, str, ...) str
Q_DECL_CONSTEXPR Period periods[] = {
{ QT_TRANSLATE_NOOP("Utility", "%Ln year(s)") , 365*24*3600*1000LL },
{ QT_TRANSLATE_NOOP("Utility", "%Ln month(s)") , 30*24*3600*1000LL },
{ QT_TRANSLATE_NOOP("Utility", "%Ln day(s)") , 24*3600*1000LL },
{ QT_TRANSLATE_NOOP("Utility", "%Ln hour(s)") , 3600*1000LL },
{ QT_TRANSLATE_NOOP("Utility", "%Ln minute(s)") , 60*1000LL },
{ QT_TRANSLATE_NOOP("Utility", "%Ln second(s)") , 1000LL },
{ QT_TRANSLATE_NOOP("Utility", "%n year(s)" , 0, _) , 365*24*3600*1000LL },
{ QT_TRANSLATE_NOOP("Utility", "%n month(s)", 0, _) , 30*24*3600*1000LL },
{ QT_TRANSLATE_NOOP("Utility", "%n day(s)", 0, _) , 24*3600*1000LL },
{ QT_TRANSLATE_NOOP("Utility", "%n hour(s)", 0, _) , 3600*1000LL },
{ QT_TRANSLATE_NOOP("Utility", "%n minute(s)", 0, _) , 60*1000LL },
{ QT_TRANSLATE_NOOP("Utility", "%n second(s)", 0, _ ), 1000LL },
{ 0, 0 }
};
} // anonymous namespace
+2 -2
Ver Arquivo
@@ -20,7 +20,7 @@
#include <QByteArray>
#include <QDateTime>
#include <QElapsedTimer>
#include <QHash>
#include <QMap>
namespace OCC {
@@ -121,7 +121,7 @@ namespace Utility
class OWNCLOUDSYNC_EXPORT StopWatch {
private:
QHash<QString, quint64> _lapTimes;
QMap<QString, quint64> _lapTimes;
QDateTime _startTime;
QElapsedTimer _timer;
public:
+1 -1
Ver Arquivo
@@ -11,7 +11,7 @@ macro(owncloud_add_test test_class additional_cpp)
string(TOLOWER "${OWNCLOUD_TEST_CLASS}" OWNCLOUD_TEST_CLASS_LOWERCASE)
add_executable(${OWNCLOUD_TEST_CLASS}Test test${OWNCLOUD_TEST_CLASS_LOWERCASE}.cpp ${additional_cpp})
qt5_use_modules(${OWNCLOUD_TEST_CLASS}Test Test Sql Xml Network Gui Widgets)
qt5_use_modules(${OWNCLOUD_TEST_CLASS}Test Test Sql Xml Network)
target_link_libraries(${OWNCLOUD_TEST_CLASS}Test
updater
+6 -1
Ver Arquivo
@@ -150,5 +150,10 @@ using namespace OCC;
}
};
QTEST_MAIN(TestChecksumValidator)
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
QTEST_MAIN(TestChecksumValidator)
#else
QTEST_GUILESS_MAIN(TestChecksumValidator)
#endif
#include "testchecksumvalidator.moc"
+1 -1
Ver Arquivo
@@ -100,5 +100,5 @@ private slots:
};
QTEST_MAIN(TestConcatUrl)
QTEST_APPLESS_MAIN(TestConcatUrl)
#include "testconcaturl.moc"
+1 -1
Ver Arquivo
@@ -85,5 +85,5 @@ private slots:
};
QTEST_MAIN(TestCSyncSqlite)
QTEST_APPLESS_MAIN(TestCSyncSqlite)
#include "testcsyncsqlite.moc"
+12 -11
Ver Arquivo
@@ -26,24 +26,25 @@ private slots:
bool excludeHidden = true;
bool keepHidden = false;
QVERIFY(!excluded.isExcluded("/a/b", "b", keepHidden));
QVERIFY(!excluded.isExcluded("/a/b~", "b~", keepHidden));
QVERIFY(!excluded.isExcluded("/a/.b", ".b", keepHidden));
QVERIFY(excluded.isExcluded("/a/.b", ".b", excludeHidden));
bool x = excluded.isExcluded("/a/b", "/a", keepHidden);
QVERIFY(!excluded.isExcluded("/a/b", "/a", keepHidden));
QVERIFY(!excluded.isExcluded("/a/b~", "/a", keepHidden));
QVERIFY(!excluded.isExcluded("/a/.b", "/a", keepHidden));
QVERIFY(excluded.isExcluded("/a/.b", "/a", excludeHidden));
QString path(BIN_PATH);
path.append("/sync-exclude.lst");
excluded.addExcludeFilePath(path);
excluded.reloadExcludes();
QVERIFY(!excluded.isExcluded("/a/b", "b", keepHidden));
QVERIFY(excluded.isExcluded("/a/b~", "b~", keepHidden));
QVERIFY(!excluded.isExcluded("/a/.b", ".b", keepHidden));
QVERIFY(excluded.isExcluded("/a/.Trashes", ".Trashes", keepHidden));
QVERIFY(excluded.isExcluded("/a/foo_conflict-bar", "foo_conflict-bar", keepHidden));
QVERIFY(excluded.isExcluded("/a/.b", ".b", excludeHidden));
QVERIFY(!excluded.isExcluded("/a/b", "/a", keepHidden));
QVERIFY(excluded.isExcluded("/a/b~", "/a", keepHidden));
QVERIFY(!excluded.isExcluded("/a/.b", "/a", keepHidden));
QVERIFY(excluded.isExcluded("/a/.Trashes", "/a", keepHidden));
QVERIFY(excluded.isExcluded("/a/foo_conflict-bar", "/a", keepHidden));
QVERIFY(excluded.isExcluded("/a/.b", "/a", excludeHidden));
}
};
QTEST_MAIN(TestExcludedFiles)
QTEST_APPLESS_MAIN(TestExcludedFiles)
#include "testexcludedfiles.moc"
+1 -1
Ver Arquivo
@@ -87,5 +87,5 @@ private slots:
};
QTEST_MAIN(TestFileSystem)
QTEST_APPLESS_MAIN(TestFileSystem)
#include "testfilesystem.moc"
+1 -1
Ver Arquivo
@@ -41,5 +41,5 @@ private slots:
};
QTEST_MAIN(TestFolder)
QTEST_APPLESS_MAIN(TestFolder)
#include "testfolder.moc"
+1 -1
Ver Arquivo
@@ -118,5 +118,5 @@ private slots:
}
};
QTEST_MAIN(TestFolderMan)
QTEST_APPLESS_MAIN(TestFolderMan)
#include "testfolderman.moc"
+6 -1
Ver Arquivo
@@ -170,5 +170,10 @@ private slots:
}
};
QTEST_MAIN(TestFolderWatcher)
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
QTEST_MAIN(TestFolderWatcher)
#else
QTEST_GUILESS_MAIN(TestFolderWatcher)
#endif
#include "testfolderwatcher.moc"
+1 -1
Ver Arquivo
@@ -69,5 +69,5 @@ private slots:
}
};
QTEST_MAIN(TestInotifyWatcher)
QTEST_APPLESS_MAIN(TestInotifyWatcher)
#include "testinotifywatcher.moc"
+1 -1
Ver Arquivo
@@ -72,5 +72,5 @@ private slots:
}
};
QTEST_MAIN(TestNetrcParser)
QTEST_APPLESS_MAIN(TestNetrcParser)
#include "testnetrcparser.moc"
+1 -1
Ver Arquivo
@@ -78,5 +78,5 @@ private slots:
}
};
QTEST_MAIN(TestOwncloudPropagator)
QTEST_APPLESS_MAIN(TestOwncloudPropagator)
#include "testowncloudpropagator.moc"
+1 -1
Ver Arquivo
@@ -149,5 +149,5 @@ private:
SqlDatabase _db;
};
QTEST_MAIN(TestOwnSql)
QTEST_APPLESS_MAIN(TestOwnSql)
#include "testownsql.moc"
+1 -1
Ver Arquivo
@@ -65,5 +65,5 @@ private slots:
}
};
QTEST_MAIN(TestSyncFileItem)
QTEST_APPLESS_MAIN(TestSyncFileItem)
#include "testsyncfileitem.moc"
+1 -1
Ver Arquivo
@@ -171,5 +171,5 @@ private:
SyncJournalDb _db;
};
QTEST_MAIN(TestSyncJournalDB)
QTEST_APPLESS_MAIN(TestSyncJournalDB)
#include "testsyncjournaldb.moc"
+1 -1
Ver Arquivo
@@ -30,5 +30,5 @@ private slots:
};
QTEST_MAIN(TestUpdater)
QTEST_APPLESS_MAIN(TestUpdater)
#include "testupdater.moc"
+10 -15
Ver Arquivo
@@ -121,11 +121,13 @@ private slots:
// Current requires an X-Server
return;
}
QString ver = versionOfInstalledBinary(BIN_PATH);
// pass the binary name owncloud to the next call. This brakes branding,
// but branding is not supposed to work with this.
QString ver = versionOfInstalledBinary(BIN_PATH+QLatin1String("/owncloud"));
qDebug() << "Version of installed ownCloud Binary: " << ver;
QVERIFY( !ver.isEmpty());
QRegExp rx( "ownCloud version \\d+\\.\\d+\\.\\d+.+" );
QRegExp rx( "ownCloud version \\d+\\.\\d+\\.\\d+.*" );
QVERIFY( rx.exactMatch(ver));
} else {
QVERIFY( versionOfInstalledBinary().isEmpty());
@@ -134,36 +136,29 @@ private slots:
void testTimeAgo()
{
// Both times in local time
// Both times in same timezone
QDateTime d1 = QDateTime::fromString("2015-01-24T09:20:30+01:00", Qt::ISODate);
QDateTime d2 = QDateTime::fromString("2015-01-23T09:20:30+01:00", Qt::ISODate);
QString s = timeAgoInWords(d2, d1);
QCOMPARE(s, QLatin1String("1 day(s) ago"));
//
// Different timezones
QDateTime earlyTS = QDateTime::fromString("2015-01-24T09:20:30+01:00", Qt::ISODate);
earlyTS.setTimeSpec(Qt::UTC);
QDateTime laterTS = earlyTS.toOffsetFromUtc(3600);
laterTS.setTimeSpec(Qt::UTC);
QDateTime laterTS = QDateTime::fromString("2015-01-24T09:20:30-01:00", Qt::ISODate);
s = timeAgoInWords(earlyTS, laterTS);
QCOMPARE(s, QLatin1String("1 hour(s) ago"));
QCOMPARE(s, QLatin1String("2 hour(s) ago"));
// 'Now' in whatever timezone
earlyTS = QDateTime::currentDateTime();
laterTS.setTimeSpec(Qt::LocalTime);
laterTS.setTimeZone( QTimeZone("Pacific/Easter") );
laterTS = earlyTS;
s = timeAgoInWords(earlyTS, laterTS );
QCOMPARE(s, QLatin1String("now"));
earlyTS = earlyTS.addSecs(-6);
s = timeAgoInWords(earlyTS, laterTS );
QCOMPARE(s, QLatin1String("Less than a minute ago"));
}
};
QTEST_MAIN(TestUtility)
QTEST_APPLESS_MAIN(TestUtility)
#include "testutility.moc"
+6 -1
Ver Arquivo
@@ -441,5 +441,10 @@ private slots:
};
QTEST_MAIN(TestXmlParse)
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
QTEST_MAIN(TestXmlParse)
#else
QTEST_GUILESS_MAIN(TestXmlParse)
#endif
#include "testxmlparse.moc"
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+170 -170
Ver Arquivo
@@ -110,8 +110,8 @@
</message>
<message>
<location filename="../src/gui/accountsettings.ui" line="180"/>
<location filename="../src/gui/accountsettings.cpp" line="346"/>
<location filename="../src/gui/accountsettings.cpp" line="684"/>
<location filename="../src/gui/accountsettings.cpp" line="352"/>
<location filename="../src/gui/accountsettings.cpp" line="690"/>
<source>Cancel</source>
<translation>Abbrechen</translation>
</message>
@@ -141,148 +141,148 @@
<translation>Benutzerkonto</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="215"/>
<location filename="../src/gui/accountsettings.cpp" line="221"/>
<source>Choose what to sync</source>
<translation>Zu synchronisierende Elemente auswählen</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="223"/>
<location filename="../src/gui/accountsettings.cpp" line="229"/>
<source>Remove folder sync connection</source>
<translation>Ordner Synchronisation entfernen</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="288"/>
<location filename="../src/gui/accountsettings.cpp" line="294"/>
<source>Folder creation failed</source>
<translation>Ordner anlegen fehlgeschlagen</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="289"/>
<location filename="../src/gui/accountsettings.cpp" line="295"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Konnte lokalen Ordner &lt;i&gt;%1&lt;/i&gt; nicht anlegen.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="339"/>
<location filename="../src/gui/accountsettings.cpp" line="345"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Bestätigen Sie die Löschung der Ordner Sychronisation</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="345"/>
<location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>Remove Folder Sync Connection</source>
<translation>Ordner Synchronisation entfernen</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="427"/>
<location filename="../src/gui/accountsettings.cpp" line="433"/>
<source>Sync Running</source>
<translation>Synchronisation läuft</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="428"/>
<location filename="../src/gui/accountsettings.cpp" line="434"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>Die Synchronisation läuft gerade.&lt;br/&gt;Wollen Sie sie beenden?</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="495"/>
<location filename="../src/gui/accountsettings.cpp" line="501"/>
<source>%1 in use</source>
<translation>%1 wird verwendet</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="515"/>
<location filename="../src/gui/accountsettings.cpp" line="521"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 als &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="521"/>
<location filename="../src/gui/accountsettings.cpp" line="527"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>Die Serververision %1 ist al und nicht unterstützt! Fortfahren auf eigenes Risiko.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="523"/>
<location filename="../src/gui/accountsettings.cpp" line="529"/>
<source>Connected to %1.</source>
<translation>Verbunden mit %1.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="525"/>
<location filename="../src/gui/accountsettings.cpp" line="531"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>Server %1 ist derzeit nicht verfügbar.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="527"/>
<location filename="../src/gui/accountsettings.cpp" line="533"/>
<source>Signed out from %1.</source>
<translation>Abgemeldet von %1.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="529"/>
<location filename="../src/gui/accountsettings.cpp" line="535"/>
<source>No connection to %1 at %2.</source>
<translation>Keine Verbindung zu %1 auf %2</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="552"/>
<location filename="../src/gui/accountsettings.cpp" line="558"/>
<source>Log in</source>
<translation>Einloggen</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="636"/>
<location filename="../src/gui/accountsettings.cpp" line="642"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Einige neue Ordner konnten nicht synchronisiert werden, da sie zu groß sind:</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="676"/>
<location filename="../src/gui/accountsettings.cpp" line="682"/>
<source>Confirm Account Removal</source>
<translation>Konto wirklich entfernen?</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="677"/>
<location filename="../src/gui/accountsettings.cpp" line="683"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Wollen Sie wirklich die Verbindung zum Konto &lt;i&gt;%1&lt;/i&gt; lösen?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Anmerkung:&lt;/b&gt; Dieser Vorgang wird &lt;b&gt;keine&lt;/b&gt; Dateien löschen.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="683"/>
<location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>Remove connection</source>
<translation>Verbindung entfernen</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="211"/>
<location filename="../src/gui/accountsettings.cpp" line="217"/>
<source>Open folder</source>
<translation>Ordner öffnen</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="145"/>
<location filename="../src/gui/accountsettings.cpp" line="554"/>
<location filename="../src/gui/accountsettings.cpp" line="560"/>
<source>Log out</source>
<translation>Abmelden</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="220"/>
<location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Resume sync</source>
<translation>Synchronisation fortsetzen</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="220"/>
<location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Pause sync</source>
<translation>Synchronisation pausieren</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="340"/>
<location filename="../src/gui/accountsettings.cpp" line="346"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Möchten Sie wirklich die Synchronisation des Ordners &lt;i&gt;%1&lt;/i&gt; stoppen?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Anmerkung:&lt;/b&gt; Dies wird &lt;b&gt;keine&lt;/b&gt; Dateien löschen.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="482"/>
<location filename="../src/gui/accountsettings.cpp" line="488"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) von %2 Serverkapazität verwendet. Einige Ordner, einschließlich über das Netzwerk verbundene oder freigegebene Ordner oder geteilte ordner können unterschiedliche Beschränkungen aufweisen. </translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="483"/>
<location filename="../src/gui/accountsettings.cpp" line="489"/>
<source>%1 of %2 in use</source>
<translation>%1 von %2 Serverkapazität verwendet</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="492"/>
<location filename="../src/gui/accountsettings.cpp" line="498"/>
<source>Currently there is no storage usage information available.</source>
<translation>Derzeit sind keine Speichernutzungsinformationen verfügbar.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="535"/>
<location filename="../src/gui/accountsettings.cpp" line="541"/>
<source>No %1 connection configured.</source>
<translation>Keine %1-Verbindung konfiguriert.</translation>
</message>
@@ -579,118 +579,118 @@
<context>
<name>OCC::Folder</name>
<message>
<location filename="../src/gui/folder.cpp" line="135"/>
<location filename="../src/gui/folder.cpp" line="129"/>
<source>Local folder %1 does not exist.</source>
<translation>Lokales Verzeichnis %1 existiert nicht.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="138"/>
<location filename="../src/gui/folder.cpp" line="132"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 sollte ein Ordner sein, ist es aber nicht.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="141"/>
<location filename="../src/gui/folder.cpp" line="135"/>
<source>%1 is not readable.</source>
<translation>%1 ist nicht lesbar.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="386"/>
<location filename="../src/gui/folder.cpp" line="381"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="496"/>
<location filename="../src/gui/folder.cpp" line="491"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 wurde gelöscht.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="503"/>
<location filename="../src/gui/folder.cpp" line="498"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 wurde heruntergeladen.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="510"/>
<location filename="../src/gui/folder.cpp" line="505"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 wurde aktualisiert.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="517"/>
<location filename="../src/gui/folder.cpp" line="512"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 wurde in %2 umbenannt.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="524"/>
<location filename="../src/gui/folder.cpp" line="519"/>
<source>%1 has been moved to %2.</source>
<translation>%1 wurde in %2 verschoben.</translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="494"/>
<location filename="../src/gui/folder.cpp" line="489"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation><numerusform>%1 und %n andere Datei wurde gelöscht.</numerusform><numerusform>%1 und %n andere Dateien wurden gelöscht.</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="501"/>
<location filename="../src/gui/folder.cpp" line="496"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation><numerusform>%1 und %n andere Datei wurde heruntergeladen.</numerusform><numerusform>%1 und %n andere Dateien wurden heruntergeladen.</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="508"/>
<location filename="../src/gui/folder.cpp" line="503"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation><numerusform>%1 und %n andere Datei wurde aktualisiert.</numerusform><numerusform>%1 und %n andere Dateien wurden aktualisiert.</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="515"/>
<location filename="../src/gui/folder.cpp" line="510"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation><numerusform>%1 wurde in %2 umbenannt und %n andere Datei wurde umbenannt.</numerusform><numerusform>%1 wurde in %2 umbenannt und %n andere Dateien wurden umbenannt.</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="522"/>
<location filename="../src/gui/folder.cpp" line="517"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation><numerusform>%1 wurde in %2 verschoben und %n andere Datei wurde verschoben.</numerusform><numerusform>%1 wurde in %2 verschoben und %n andere Dateien wurden verschoben.</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="529"/>
<location filename="../src/gui/folder.cpp" line="524"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation><numerusform>%1 und %n andere Datei haben Konflikte beim Abgleichen.</numerusform><numerusform>%1 und %n andere Dateien haben Konflikte beim Abgleichen.</numerusform></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="531"/>
<location filename="../src/gui/folder.cpp" line="526"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation>Es gab einen Konflikt bei der Synchronisierung von %1. Bitte prüfen Sie die Konfliktdatei!</translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="536"/>
<location filename="../src/gui/folder.cpp" line="531"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation><numerusform>%1 und %n weitere Datei konnten aufgrund von Fehlern nicht synchronisiert werden. Schauen Sie in das Protokoll für Details.</numerusform><numerusform>%1 und %n weitere Dateien konnten aufgrund von Fehlern nicht synchronisiert werden. Schauen Sie in das Protokoll für Details.</numerusform></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="538"/>
<location filename="../src/gui/folder.cpp" line="533"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 konnte aufgrund eines Fehlers nicht synchronisiert werden. Schauen Sie in das Protokoll für Details.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="544"/>
<location filename="../src/gui/folder.cpp" line="539"/>
<source>Sync Activity</source>
<translation>Synchronisierungsaktivität</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="750"/>
<location filename="../src/gui/folder.cpp" line="747"/>
<source>Could not read system exclude file</source>
<translation>Systemeigene Ausschlussdatei kann nicht gelesen werden</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="961"/>
<location filename="../src/gui/folder.cpp" line="958"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>Ein neue Order größer als %1 MB wurde hinzugefügt: %2. Bitte besuchen Sie die Einstellungen, falls sie ihn herunterladen wollen.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="979"/>
<location filename="../src/gui/folder.cpp" line="976"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -699,22 +699,22 @@ Die Ursache ist, dass der Ordner entweder neu konfiguriert wurde, oder weil alle
Sind Sie sicher, dass Sie diese Operation durchführen möchten?</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="983"/>
<location filename="../src/gui/folder.cpp" line="980"/>
<source>Remove All Files?</source>
<translation>Alle Dateien löschen?</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="985"/>
<location filename="../src/gui/folder.cpp" line="982"/>
<source>Remove all files</source>
<translation>Lösche alle Dateien</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="986"/>
<location filename="../src/gui/folder.cpp" line="983"/>
<source>Keep files</source>
<translation>Dateien behalten</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1004"/>
<location filename="../src/gui/folder.cpp" line="1001"/>
<source>This sync would reset the files to an erlier 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?</source>
@@ -723,17 +723,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 Dateien als Konflikt-Dateien behalten?</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1009"/>
<location filename="../src/gui/folder.cpp" line="1006"/>
<source>Backup detected</source>
<translation>Backup erkannt</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1011"/>
<location filename="../src/gui/folder.cpp" line="1008"/>
<source>Normal Synchronisation</source>
<translation>Normale Synchronisation</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1012"/>
<location filename="../src/gui/folder.cpp" line="1009"/>
<source>Keep Local Files as Conflict</source>
<translation>Lokale Konfliktdateien behalten</translation>
</message>
@@ -1000,12 +1000,12 @@ Wenn diese Synchronisation fortgesetzt wird, werden Dateien eventuell von älter
<context>
<name>OCC::FolderWizard</name>
<message>
<location filename="../src/gui/folderwizard.cpp" line="553"/>
<location filename="../src/gui/folderwizard.cpp" line="542"/>
<source>Add Folder Sync Connection</source>
<translation>Ordner Synchronisation hinzufügen</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="555"/>
<location filename="../src/gui/folderwizard.cpp" line="544"/>
<source>Add Sync Connection</source>
<translation>Ordner Synchronisation hinzufügen</translation>
</message>
@@ -1023,7 +1023,7 @@ Wenn diese Synchronisation fortgesetzt wird, werden Dateien eventuell von älter
<translation>Pfad zum lokalen Verzeichnis eingeben</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="133"/>
<location filename="../src/gui/folderwizard.cpp" line="126"/>
<source>Select the source folder</source>
<translation>Den Quellordner wählen</translation>
</message>
@@ -1031,52 +1031,52 @@ Wenn diese Synchronisation fortgesetzt wird, werden Dateien eventuell von älter
<context>
<name>OCC::FolderWizardRemotePath</name>
<message>
<location filename="../src/gui/folderwizard.cpp" line="191"/>
<location filename="../src/gui/folderwizard.cpp" line="176"/>
<source>Create Remote Folder</source>
<translation>Entfernten Ordner erstellen</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="192"/>
<location filename="../src/gui/folderwizard.cpp" line="177"/>
<source>Enter the name of the new folder to be created below &apos;%1&apos;:</source>
<translation>Geben Sie den Namen des neuen, unter &apos;%1&apos; zu erstellenden Ordners ein: </translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="221"/>
<location filename="../src/gui/folderwizard.cpp" line="206"/>
<source>Folder was successfully created on %1.</source>
<translation>Order erfolgreich auf %1 erstellt.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="232"/>
<location filename="../src/gui/folderwizard.cpp" line="217"/>
<source>Authentication failed accessing %1</source>
<translation>Beim Zugriff auf %1 ist die Authentifizierung fehlgeschlagen</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="234"/>
<location filename="../src/gui/folderwizard.cpp" line="219"/>
<source>Failed to create the folder on %1. Please check manually.</source>
<translation>Die Erstellung des Ordners auf %1 ist fehlgeschlagen. Bitte prüfen Sie dies manuell.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="241"/>
<location filename="../src/gui/folderwizard.cpp" line="226"/>
<source>Failed to list a folder. Error: %1</source>
<translation>Konnte Ordner nicht listen. Fehler: %1</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="322"/>
<location filename="../src/gui/folderwizard.cpp" line="307"/>
<source>Choose this to sync the entire account</source>
<translation>Wählen Sie dies, um das gesamte Konto zu synchronisieren</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="451"/>
<location filename="../src/gui/folderwizard.cpp" line="436"/>
<source>This folder is already being synced.</source>
<translation>Dieser Ordner wird bereits synchronisiert.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="453"/>
<location filename="../src/gui/folderwizard.cpp" line="438"/>
<source>You are already syncing &lt;i&gt;%1&lt;/i&gt;, which is a parent folder of &lt;i&gt;%2&lt;/i&gt;.</source>
<translation>Sie synchronisieren bereits &lt;i&gt;%1&lt;/i&gt;, das ein übergeordneten Ordner von &lt;i&gt;%2&lt;/i&gt; ist.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="457"/>
<location filename="../src/gui/folderwizard.cpp" line="442"/>
<source>You are already syncing all your files. Syncing another folder is &lt;b&gt;not&lt;/b&gt; supported. If you want to sync multiple folders, please remove the currently configured root folder sync.</source>
<translation>Sie synchronisieren bereits alle Ihre Dateien. Die Synchronisation anderer Verzeichnisse wird &lt;b&gt;nicht&lt;/b&gt; unterstützt. Wenn Sie mehrere Ordner synchronisieren möchten, entfernen Sie bitte das aktuell konfigurierte Wurzelverzeichnis zur Synchronisation.</translation>
</message>
@@ -1084,7 +1084,7 @@ Wenn diese Synchronisation fortgesetzt wird, werden Dateien eventuell von älter
<context>
<name>OCC::FolderWizardSelectiveSync</name>
<message>
<location filename="../src/gui/folderwizard.cpp" line="495"/>
<location filename="../src/gui/folderwizard.cpp" line="480"/>
<source>Choose What to Sync: You can optionally deselect remote subfolders you do not wish to synchronize.</source>
<translation>Zu synchronisierende Elemente auswählen: Sie können optional Unterordner des Servers abwählen, die nicht synchronisiert werden sollen.</translation>
</message>
@@ -1379,27 +1379,27 @@ Objekte, bei denen Löschen erlaubt ist, werden gelöscht, wenn sie die Löschun
<context>
<name>OCC::NSISUpdater</name>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="329"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="331"/>
<source>New Version Available</source>
<translation>Eine neue Version ist verfügbar.</translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="335"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="337"/>
<source>&lt;p&gt;A new version of the %1 Client is available.&lt;/p&gt;&lt;p&gt;&lt;b&gt;%2&lt;/b&gt; is available for download. The installed version is %3.&lt;/p&gt;</source>
<translation>&lt;p&gt;Eine neue Version des %1 - Klients ist verfügbar.&lt;/p&gt;&lt;p&gt;&lt;b&gt;%2&lt;/b&gt; steht zum Herunterladen bereit. Die installierte Version ist %3.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="348"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="350"/>
<source>Skip this version</source>
<translation>Diese Version auslassen</translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="349"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="351"/>
<source>Skip this time</source>
<translation>Dieses Mal überspringen</translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="350"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="352"/>
<source>Get update</source>
<translation>Update durchführen</translation>
</message>
@@ -1900,7 +1900,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="101"/>
<location filename="../src/libsync/propagateupload.cpp" line="103"/>
<source>Connection Timeout</source>
<translation>Zeitüberschreitung der Verbindung</translation>
</message>
@@ -1908,7 +1908,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::PollJob</name>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="158"/>
<location filename="../src/libsync/propagateupload.cpp" line="160"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>Ungültige JSON-Antwort von der Poll-URL</translation>
</message>
@@ -1954,17 +1954,17 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<translation>Die heruntergeladene Datei ist leer, obwohl der Server %1 als Größe übermittelt hat.</translation>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="694"/>
<location filename="../src/libsync/propagatedownload.cpp" line="693"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>Die Datei %1 kann aufgrund eines Konfliktes mit dem lokalen Dateinamen nicht gespeichert geladen werden!</translation>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="742"/>
<location filename="../src/libsync/propagatedownload.cpp" line="741"/>
<source>File has changed since discovery</source>
<translation>Datei ist seit der Entdeckung geändert worden</translation>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="792"/>
<location filename="../src/libsync/propagatedownload.cpp" line="791"/>
<source>Error writing metadata to the database</source>
<translation>Fehler beim Schreiben der Metadaten in die Datenbank</translation>
</message>
@@ -2098,48 +2098,48 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="289"/>
<location filename="../src/libsync/propagateupload.cpp" line="297"/>
<source>File Removed</source>
<translation>Datei gelöscht</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="301"/>
<location filename="../src/libsync/propagateupload.cpp" line="309"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>Lokale Datei hat sich während der Synchronisation geändert. Die Synchronisation wird wiederaufgenommen.</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="313"/>
<location filename="../src/libsync/propagateupload.cpp" line="694"/>
<location filename="../src/libsync/propagateupload.cpp" line="321"/>
<location filename="../src/libsync/propagateupload.cpp" line="710"/>
<source>Local file changed during sync.</source>
<translation>Eine lokale Datei wurde während der Synchronisation geändert.</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="621"/>
<location filename="../src/libsync/propagateupload.cpp" line="637"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>Auftragsabbruch beim Rücksetzen der HTTP-Verbindung mit QT &lt; 5.4.2 wird erzwungen.</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="629"/>
<location filename="../src/libsync/propagateupload.cpp" line="645"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>Die Datei wurde von einer Nur-Lese-Freigabe lokal bearbeitet. Die Datei wurde wiederhergestellt und Ihre Bearbeitung ist in der Konflikte-Datei.</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="660"/>
<location filename="../src/libsync/propagateupload.cpp" line="676"/>
<source>Poll URL missing</source>
<translation>Poll-URL fehlt</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="683"/>
<location filename="../src/libsync/propagateupload.cpp" line="699"/>
<source>The local file was removed during sync.</source>
<translation>Die lokale Datei wurde während der Synchronisation gelöscht.</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="709"/>
<location filename="../src/libsync/propagateupload.cpp" line="725"/>
<source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
<translation>Der Server hat den letzten Block nicht bestätigt. (Der E-Tag war nicht vorhanden)</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="782"/>
<location filename="../src/libsync/propagateupload.cpp" line="800"/>
<source>Error writing metadata to the database</source>
<translation>Fehler beim Schreiben der Metadaten in die Datenbank</translation>
</message>
@@ -2182,17 +2182,17 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<translation>Größe</translation>
</message>
<message>
<location filename="../src/gui/protocolwidget.cpp" line="72"/>
<location filename="../src/gui/protocolwidget.cpp" line="78"/>
<source>Local sync protocol</source>
<translation>Lokales Sychronisationsprotokoll</translation>
</message>
<message>
<location filename="../src/gui/protocolwidget.cpp" line="74"/>
<location filename="../src/gui/protocolwidget.cpp" line="80"/>
<source>Copy</source>
<translation>Kopieren</translation>
</message>
<message>
<location filename="../src/gui/protocolwidget.cpp" line="75"/>
<location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Aktivitätsliste in die Zwischenablage kopieren.</translation>
</message>
@@ -2479,7 +2479,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<translation>Mit Benutzern oder Gruppen teilen</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="226"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
<source>No results for &apos;%1&apos;</source>
<translation>Keine Ergebnisse für &apos;%1&apos;</translation>
</message>
@@ -2512,17 +2512,17 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<translation>...</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="302"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
<source>create</source>
<translation>erstellen</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="305"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>change</source>
<translation>Ändern</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="308"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>delete</source>
<translation>löschen</translation>
</message>
@@ -2543,17 +2543,17 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="74"/>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
<source>%1 - Authenticate</source>
<translation>%1 - Authentifikation</translation>
</message>
<message>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="80"/>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
<source>Reauthentication required</source>
<translation>Erneute Authentifizierung erforderlich</translation>
</message>
<message>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="80"/>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Ihre Sitzung ist abgelaufen. Sie müssen sich zur weiteren Nutzung des Clients neu Anmelden.</translation>
</message>
@@ -2561,7 +2561,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Via %1 teilen</translation>
@@ -2855,23 +2855,23 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<translation>Fehler beim Lesen eines Ordners.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="431"/>
<location filename="../src/libsync/syncengine.cpp" line="440"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation>Datei wird ignoriert, weil sie versteckt ist.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="690"/>
<location filename="../src/libsync/syncengine.cpp" line="701"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>Nur %1 sind verfügbar. Zum Beginnen werden mindestens %2 benötigt.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1121"/>
<location filename="../src/libsync/syncengine.cpp" line="1132"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>Nicht erlaubt, da Sie keine Rechte zur Erstellung von Unterordnern haben</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1128"/>
<location filename="../src/libsync/syncengine.cpp" line="1139"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation>Nicht erlaubt, da Sie keine Rechte zum Hinzufügen von Dateien in diesen Ordner haben</translation>
</message>
@@ -2891,7 +2891,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<translation>Abbruch durch den Benutzer</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="425"/>
<location filename="../src/libsync/syncengine.cpp" line="434"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>Dateiname enthält Zeichen die nicht auf allen Betriebssystemen dargestellt werden können.</translation>
</message>
@@ -2931,109 +2931,109 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<translation>Ein interner Fehler mit der Fehlernummer %1 ist aufgetreten.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="254"/>
<location filename="../src/libsync/syncengine.cpp" line="263"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>Das Element ist aufgrund vorheriger Fehler nicht synchronisiert: %1</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="419"/>
<location filename="../src/libsync/syncengine.cpp" line="428"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Symbolische Verknüpfungen werden bei der Synchronisation nicht unterstützt.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="422"/>
<location filename="../src/libsync/syncengine.cpp" line="431"/>
<source>File is listed on the ignore list.</source>
<translation>Die Datei ist in der Ignorierliste geführt.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="428"/>
<location filename="../src/libsync/syncengine.cpp" line="437"/>
<source>Filename is too long.</source>
<translation>Der Dateiname ist zu lang.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="437"/>
<location filename="../src/libsync/syncengine.cpp" line="446"/>
<source>Stat failed.</source>
<translation>Stat fehlgeschlagen.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="464"/>
<location filename="../src/libsync/syncengine.cpp" line="473"/>
<source>Filename encoding is not valid</source>
<translation>Dateikodierung ist ungültig</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="635"/>
<location filename="../src/libsync/syncengine.cpp" line="644"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Ungültige Zeichenm bitte benennen Sie &quot;%1&quot; um</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="724"/>
<location filename="../src/libsync/syncengine.cpp" line="735"/>
<source>Unable to initialize a sync journal.</source>
<translation>Synchronisationsbericht konnte nicht initialisiert werden.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="743"/>
<location filename="../src/libsync/syncengine.cpp" line="754"/>
<source>Unable to read the blacklist from the local database</source>
<translation>Fehler beim Einlesen der Blacklist aus der lokalen Datenbank</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="776"/>
<location filename="../src/libsync/syncengine.cpp" line="787"/>
<source>Unable to read from the sync journal.</source>
<translation>Fehler beim Einlesen des Synchronisierungsprotokolls.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="822"/>
<location filename="../src/libsync/syncengine.cpp" line="833"/>
<source>Cannot open the sync journal</source>
<translation>Synchronisationsbericht kann nicht geöffnet werden</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="876"/>
<location filename="../src/libsync/syncengine.cpp" line="887"/>
<source>File name contains at least one invalid character</source>
<translation>Der Dateiname enthält mindestens ein ungültiges Zeichen</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1080"/>
<location filename="../src/libsync/syncengine.cpp" line="1087"/>
<location filename="../src/libsync/syncengine.cpp" line="1091"/>
<location filename="../src/libsync/syncengine.cpp" line="1098"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Aufgrund der »Zu synchronisierende Elemente auswählen«-Sperrliste ignoriert</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1106"/>
<location filename="../src/libsync/syncengine.cpp" line="1117"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>Nicht erlaubt, da Sie keine Rechte zur Erstellung von Unterordnern haben</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1148"/>
<location filename="../src/libsync/syncengine.cpp" line="1159"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Das Hochladen dieser Datei ist nicht erlaubt, da die Datei auf dem Server schreibgeschützt ist, Wiederherstellung</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1165"/>
<location filename="../src/libsync/syncengine.cpp" line="1185"/>
<location filename="../src/libsync/syncengine.cpp" line="1176"/>
<location filename="../src/libsync/syncengine.cpp" line="1196"/>
<source>Not allowed to remove, restoring</source>
<translation>Löschen nicht erlaubt, Wiederherstellung</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1198"/>
<location filename="../src/libsync/syncengine.cpp" line="1209"/>
<source>Local files and share folder removed.</source>
<translation>Lokale Dateien und Freigabeordner wurden entfernt.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1253"/>
<location filename="../src/libsync/syncengine.cpp" line="1265"/>
<source>Move not allowed, item restored</source>
<translation>Verschieben nicht erlaubt, Element wiederhergestellt</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1262"/>
<location filename="../src/libsync/syncengine.cpp" line="1276"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Verschieben nicht erlaubt, da %1 schreibgeschützt ist</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1263"/>
<location filename="../src/libsync/syncengine.cpp" line="1277"/>
<source>the destination</source>
<translation>Das Ziel</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1263"/>
<location filename="../src/libsync/syncengine.cpp" line="1277"/>
<source>the source</source>
<translation>Die Quelle</translation>
</message>
@@ -3499,7 +3499,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>QApplication</name>
<message>
<location filename="../src/gui/application.cpp" line="581"/>
<location filename="../src/gui/application.cpp" line="593"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation>QT_LAYOUT_DIRECTION</translation>
</message>
@@ -3507,37 +3507,37 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>QObject</name>
<message>
<location filename="../src/libsync/utility.cpp" line="468"/>
<location filename="../src/libsync/utility.cpp" line="473"/>
<source>in the future</source>
<translation>in der Zukunft</translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="464"/>
<location filename="../src/libsync/utility.cpp" line="469"/>
<source>%n day(s) ago</source>
<translation><numerusform>vor %n Tage(n)</numerusform><numerusform>vor %n Tage(n)</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="472"/>
<location filename="../src/libsync/utility.cpp" line="477"/>
<source>%n hour(s) ago</source>
<translation><numerusform>vor %n Stunde(n)</numerusform><numerusform>vor %n Stunde(n)</numerusform></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="477"/>
<location filename="../src/libsync/utility.cpp" line="482"/>
<source>now</source>
<translation>jetzt</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="479"/>
<location filename="../src/libsync/utility.cpp" line="484"/>
<source>Less than a minute ago</source>
<translation>vor weniger als einer Minute</translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="482"/>
<location filename="../src/libsync/utility.cpp" line="487"/>
<source>%n minute(s) ago</source>
<translation><numerusform>vor %n Minute(n)</numerusform><numerusform>vor %n Minute(n)</numerusform></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="485"/>
<location filename="../src/libsync/utility.cpp" line="490"/>
<source>Some time ago</source>
<translation>vor einiger Zeit</translation>
</message>
@@ -3564,38 +3564,38 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="314"/>
<source>%Ln year(s)</source>
<translation>%Ln Jahr(e)</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="315"/>
<source>%Ln month(s)</source>
<translation>%Ln Monat(e)</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="316"/>
<source>%Ln day(s)</source>
<translation>%Ln Tag(e)</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="317"/>
<source>%Ln hour(s)</source>
<translation>%Ln Stunde(n)</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="318"/>
<source>%Ln minute(s)</source>
<translation>%Ln Minute(n)</translation>
</message>
<message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="319"/>
<source>%Ln second(s)</source>
<translation>%Ln Sekunde(n)</translation>
<source>%n year(s)</source>
<translation><numerusform>%n Jahr</numerusform><numerusform>%n Jahre</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n month(s)</source>
<translation><numerusform>%n Monat</numerusform><numerusform>%n Monate</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="321"/>
<source>%n day(s)</source>
<translation><numerusform>%n Tag</numerusform><numerusform>%n Tage</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="322"/>
<source>%n hour(s)</source>
<translation><numerusform>%n Stunde</numerusform><numerusform>%n Stunden</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="323"/>
<source>%n minute(s)</source>
<translation><numerusform>%n Minute</numerusform><numerusform>%n Minuten</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="324"/>
<source>%n second(s)</source>
<translation><numerusform>%n Sekunde</numerusform><numerusform>%n Sekunden</numerusform></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="343"/>
<location filename="../src/libsync/utility.cpp" line="348"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
+170 -170
Ver Arquivo
@@ -110,8 +110,8 @@
</message>
<message>
<location filename="../src/gui/accountsettings.ui" line="180"/>
<location filename="../src/gui/accountsettings.cpp" line="346"/>
<location filename="../src/gui/accountsettings.cpp" line="684"/>
<location filename="../src/gui/accountsettings.cpp" line="352"/>
<location filename="../src/gui/accountsettings.cpp" line="690"/>
<source>Cancel</source>
<translation>Άκυρο</translation>
</message>
@@ -141,148 +141,148 @@
<translation>Λογαριασμός</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="215"/>
<location filename="../src/gui/accountsettings.cpp" line="221"/>
<source>Choose what to sync</source>
<translation>Επιλέξτε τι θα συγχρονιστεί</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="223"/>
<location filename="../src/gui/accountsettings.cpp" line="229"/>
<source>Remove folder sync connection</source>
<translation>Αφαίρεση σύνδεσης συγχρονισμού φακέλου</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="288"/>
<location filename="../src/gui/accountsettings.cpp" line="294"/>
<source>Folder creation failed</source>
<translation>Αποτυχία αφαίρεσης φακέλου</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="289"/>
<location filename="../src/gui/accountsettings.cpp" line="295"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Αδυναμία δημιουργίας τοπικού φακέλου &lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="339"/>
<location filename="../src/gui/accountsettings.cpp" line="345"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Επιβεβαίωση αφαίρεσης σύνδεσης συγχρονισμού φακέλου</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="345"/>
<location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>Remove Folder Sync Connection</source>
<translation>Αφαίρεση σύνδεσης συγχρονισμού φακέλου</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="427"/>
<location filename="../src/gui/accountsettings.cpp" line="433"/>
<source>Sync Running</source>
<translation>Εκτελείται Συγχρονισμός </translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="428"/>
<location filename="../src/gui/accountsettings.cpp" line="434"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>Η λειτουργία συγχρονισμού εκτελείται.&lt;br/&gt; Θέλετε να την τερματίσετε;</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="495"/>
<location filename="../src/gui/accountsettings.cpp" line="501"/>
<source>%1 in use</source>
<translation>%1 σε χρήση</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="515"/>
<location filename="../src/gui/accountsettings.cpp" line="521"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 ως &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="521"/>
<location filename="../src/gui/accountsettings.cpp" line="527"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="523"/>
<location filename="../src/gui/accountsettings.cpp" line="529"/>
<source>Connected to %1.</source>
<translation>Συνδεδεμένο με %1.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="525"/>
<location filename="../src/gui/accountsettings.cpp" line="531"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>Ο διακομιστής %1 δεν είναι διαθέσιμος προσωρινά.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="527"/>
<location filename="../src/gui/accountsettings.cpp" line="533"/>
<source>Signed out from %1.</source>
<translation>Αποσυνδέθηκε από %1.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="529"/>
<location filename="../src/gui/accountsettings.cpp" line="535"/>
<source>No connection to %1 at %2.</source>
<translation>Δεν υπάρχει σύνδεση με το %1 στο %2.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="552"/>
<location filename="../src/gui/accountsettings.cpp" line="558"/>
<source>Log in</source>
<translation>Είσοδος</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="636"/>
<location filename="../src/gui/accountsettings.cpp" line="642"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Υπάρχουν νέοι φάκελοι που δεν συγχρονίστηκαν καθώς είναι πολύ μεγάλοι:</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="676"/>
<location filename="../src/gui/accountsettings.cpp" line="682"/>
<source>Confirm Account Removal</source>
<translation>Επιβεβαίωση Αφαίρεσης Λογαριασμού</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="677"/>
<location filename="../src/gui/accountsettings.cpp" line="683"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Θέλετε πραγματικά να αφαιρέσετε τη σύνδεση με το λογαριασμό &lt;i&gt;%1&lt;/i&gt;;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Σημείωση:&lt;/b&gt; Αυτό &lt;b&gt;δεν&lt;/b&gt; θα διαγράψει κανένα αρχείο.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="683"/>
<location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>Remove connection</source>
<translation>Αφαίρεση σύνδεσης</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="211"/>
<location filename="../src/gui/accountsettings.cpp" line="217"/>
<source>Open folder</source>
<translation>Άνοιγμα φακέλου</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="145"/>
<location filename="../src/gui/accountsettings.cpp" line="554"/>
<location filename="../src/gui/accountsettings.cpp" line="560"/>
<source>Log out</source>
<translation>Αποσύνδεση</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="220"/>
<location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Resume sync</source>
<translation>Συνέχιση συγχρονισμού</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="220"/>
<location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Pause sync</source>
<translation>Παύση συγχρονισμού</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="340"/>
<location filename="../src/gui/accountsettings.cpp" line="346"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Θέλετε πραγματικά να σταματήσετε το συγχρονισμό του φακέλου &lt;i&gt;%1&lt;/i&gt;;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Σημείωση:&lt;/b&gt; Αυτό &lt;b&gt;δεν&lt;/b&gt; θα διαγράψει κανένα αρχείο.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="482"/>
<location filename="../src/gui/accountsettings.cpp" line="488"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) από %2 σε χρήση. Μερικοί φάκελοι, συμπεριλαμβανομένων των δικτυακών ή των κοινόχρηστων μπορεί να έχουν διαφορετικά όρια.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="483"/>
<location filename="../src/gui/accountsettings.cpp" line="489"/>
<source>%1 of %2 in use</source>
<translation>%1 από %2 σε χρήση</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="492"/>
<location filename="../src/gui/accountsettings.cpp" line="498"/>
<source>Currently there is no storage usage information available.</source>
<translation>Προς το παρόν δεν υπάρχουν πληροφορίες χρήσης χώρου αποθήκευσης διαθέσιμες.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="535"/>
<location filename="../src/gui/accountsettings.cpp" line="541"/>
<source>No %1 connection configured.</source>
<translation>Δεν έχει ρυθμιστεί σύνδεση με το %1.</translation>
</message>
@@ -579,119 +579,119 @@
<context>
<name>OCC::Folder</name>
<message>
<location filename="../src/gui/folder.cpp" line="135"/>
<location filename="../src/gui/folder.cpp" line="129"/>
<source>Local folder %1 does not exist.</source>
<translation>Δεν υπάρχει ο τοπικός φάκελος %1.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="138"/>
<location filename="../src/gui/folder.cpp" line="132"/>
<source>%1 should be a folder but is not.</source>
<translation>Το %1 θα έπρεπε να είναι φάκελος αλλά δεν είναι.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="141"/>
<location filename="../src/gui/folder.cpp" line="135"/>
<source>%1 is not readable.</source>
<translation> Το %1 δεν είναι αναγνώσιμο. </translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="386"/>
<location filename="../src/gui/folder.cpp" line="381"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="496"/>
<location filename="../src/gui/folder.cpp" line="491"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>Το %1 αφαιρέθηκε.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="503"/>
<location filename="../src/gui/folder.cpp" line="498"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>Το %1 έχει ληφθεί.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="510"/>
<location filename="../src/gui/folder.cpp" line="505"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>Το %1 έχει ενημερωθεί.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="517"/>
<location filename="../src/gui/folder.cpp" line="512"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>Το %1 έχει μετονομαστεί σε %2.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="524"/>
<location filename="../src/gui/folder.cpp" line="519"/>
<source>%1 has been moved to %2.</source>
<translation>Το %1 έχει μετακινηθεί στο %2.</translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="494"/>
<location filename="../src/gui/folder.cpp" line="489"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="501"/>
<location filename="../src/gui/folder.cpp" line="496"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="508"/>
<location filename="../src/gui/folder.cpp" line="503"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="515"/>
<location filename="../src/gui/folder.cpp" line="510"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="522"/>
<location filename="../src/gui/folder.cpp" line="517"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="529"/>
<location filename="../src/gui/folder.cpp" line="524"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="531"/>
<location filename="../src/gui/folder.cpp" line="526"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="536"/>
<location filename="../src/gui/folder.cpp" line="531"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="538"/>
<location filename="../src/gui/folder.cpp" line="533"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 δεν ήταν δυνατό να συγχρονιστεί εξαιτίας ενός σφάλματος. Δείτε το αρχείο καταγραφής για λεπτομέρειες.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="544"/>
<location filename="../src/gui/folder.cpp" line="539"/>
<source>Sync Activity</source>
<translation>Δραστηριότητα Συγχρονισμού</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="750"/>
<location filename="../src/gui/folder.cpp" line="747"/>
<source>Could not read system exclude file</source>
<translation>Αδυναμία ανάγνωσης αρχείου αποκλεισμού συστήματος</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="961"/>
<location filename="../src/gui/folder.cpp" line="958"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>Ένας νέος φάκελος μεγαλύτερος από %1 MB έχει προστεθεί: %2.
Παρακαλούμε πηγαίνετε στις ρυθμίσεις για να επιλέξετε αν επιθυμείτε να τον κατεβάσετε.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="979"/>
<location filename="../src/gui/folder.cpp" line="976"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -700,39 +700,39 @@ Are you sure you want to perform this operation?</source>
Είστε σίγουροι ότι θέλετε να εκτελέσετε αυτή τη λειτουργία;</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="983"/>
<location filename="../src/gui/folder.cpp" line="980"/>
<source>Remove All Files?</source>
<translation>Αφαίρεση Όλων των Αρχείων;</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="985"/>
<location filename="../src/gui/folder.cpp" line="982"/>
<source>Remove all files</source>
<translation>Αφαίρεση όλων των αρχείων</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="986"/>
<location filename="../src/gui/folder.cpp" line="983"/>
<source>Keep files</source>
<translation>Διατήρηση αρχείων</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1004"/>
<location filename="../src/gui/folder.cpp" line="1001"/>
<source>This sync would reset the files to an erlier 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?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1009"/>
<location filename="../src/gui/folder.cpp" line="1006"/>
<source>Backup detected</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1011"/>
<location filename="../src/gui/folder.cpp" line="1008"/>
<source>Normal Synchronisation</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1012"/>
<location filename="../src/gui/folder.cpp" line="1009"/>
<source>Keep Local Files as Conflict</source>
<translation type="unfinished"/>
</message>
@@ -999,12 +999,12 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderWizard</name>
<message>
<location filename="../src/gui/folderwizard.cpp" line="553"/>
<location filename="../src/gui/folderwizard.cpp" line="542"/>
<source>Add Folder Sync Connection</source>
<translation>Προσθήκη Σύνδεσης Συγχρονισμού Φακέλου</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="555"/>
<location filename="../src/gui/folderwizard.cpp" line="544"/>
<source>Add Sync Connection</source>
<translation>Προσθήκη Σύνδεσης Συγχρονισμού</translation>
</message>
@@ -1022,7 +1022,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<translation>Εισάγετε τη διαδρομή προς τον τοπικό φάκελο.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="133"/>
<location filename="../src/gui/folderwizard.cpp" line="126"/>
<source>Select the source folder</source>
<translation>Επιλογή του φακέλου προέλευσης</translation>
</message>
@@ -1030,52 +1030,52 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderWizardRemotePath</name>
<message>
<location filename="../src/gui/folderwizard.cpp" line="191"/>
<location filename="../src/gui/folderwizard.cpp" line="176"/>
<source>Create Remote Folder</source>
<translation>Δημιουργία Απομακρυσμένου Φακέλου</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="192"/>
<location filename="../src/gui/folderwizard.cpp" line="177"/>
<source>Enter the name of the new folder to be created below &apos;%1&apos;:</source>
<translation>Εισάγετε το όνομα του νέου φακέλου που θα δημιουργηθεί παρακάτω &apos;%1&apos;:</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="221"/>
<location filename="../src/gui/folderwizard.cpp" line="206"/>
<source>Folder was successfully created on %1.</source>
<translation>Επιτυχής δημιουργία φακέλου στο %1.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="232"/>
<location filename="../src/gui/folderwizard.cpp" line="217"/>
<source>Authentication failed accessing %1</source>
<translation>Η πιστοποίηση απέτυχε κατά την πρόσβαση %1</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="234"/>
<location filename="../src/gui/folderwizard.cpp" line="219"/>
<source>Failed to create the folder on %1. Please check manually.</source>
<translation>Αποτυχία δημιουργίας φακέλου στο %1. Παρακαλώ ελέγξτε χειροκίνητα.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="241"/>
<location filename="../src/gui/folderwizard.cpp" line="226"/>
<source>Failed to list a folder. Error: %1</source>
<translation>Αδυναμία εμφάνισης ενός φακέλου. Σφάλμα: %1</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="322"/>
<location filename="../src/gui/folderwizard.cpp" line="307"/>
<source>Choose this to sync the entire account</source>
<translation>Επιλέξτε να συγχρονίσετε ολόκληρο το λογαριασμό</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="451"/>
<location filename="../src/gui/folderwizard.cpp" line="436"/>
<source>This folder is already being synced.</source>
<translation>Αυτός ο φάκελος συγχρονίζεται ήδη.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="453"/>
<location filename="../src/gui/folderwizard.cpp" line="438"/>
<source>You are already syncing &lt;i&gt;%1&lt;/i&gt;, which is a parent folder of &lt;i&gt;%2&lt;/i&gt;.</source>
<translation>Ο φάκελος &lt;i&gt;%1&lt;/i&gt;, ο οποίος είναι γονεϊκός φάκελος του &lt;i&gt;%2&lt;/i&gt;, συγχρονίζεται ήδη.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="457"/>
<location filename="../src/gui/folderwizard.cpp" line="442"/>
<source>You are already syncing all your files. Syncing another folder is &lt;b&gt;not&lt;/b&gt; supported. If you want to sync multiple folders, please remove the currently configured root folder sync.</source>
<translation>Συγχρονίζετε ήδη όλα σας τα αρχεία. Ο συγχρονισμός ενός ακόμα φακέλου &lt;b&gt;δεν&lt;/b&gt; υποστηρίζεται. Εάν θέλετε να συγχρονίσετε πολλαπλούς φακέλους, παρακαλώ αφαιρέστε την τρέχουσα ρύθμιση συχρονισμού του βασικού φακέλου.</translation>
</message>
@@ -1083,7 +1083,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderWizardSelectiveSync</name>
<message>
<location filename="../src/gui/folderwizard.cpp" line="495"/>
<location filename="../src/gui/folderwizard.cpp" line="480"/>
<source>Choose What to Sync: You can optionally deselect remote subfolders you do not wish to synchronize.</source>
<translation>Επιλέξτε Τι θα Συγχρονιστεί: Μπορείτε προαιρετικά να καταργήστε την επιλογή υποφακέλων που δεν επιθυμείτε να συγχρονίσετε.</translation>
</message>
@@ -1378,27 +1378,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::NSISUpdater</name>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="329"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="331"/>
<source>New Version Available</source>
<translation>Νέα Έκδοση Διαθέσιμη </translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="335"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="337"/>
<source>&lt;p&gt;A new version of the %1 Client is available.&lt;/p&gt;&lt;p&gt;&lt;b&gt;%2&lt;/b&gt; is available for download. The installed version is %3.&lt;/p&gt;</source>
<translation>&lt;p&gt;Μια νέα έκδοση του %1 Δέκτη είναι διαθέσιμη.&lt;/p&gt;&lt;p&gt;&lt;b&gt;%2&lt;/b&gt; είναι διαθέσιμη για λήψη. Η εγκατεστημένη έκδοση είναι %3.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="348"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="350"/>
<source>Skip this version</source>
<translation>Παράλειψη αυτής της έκδοσης</translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="349"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="351"/>
<source>Skip this time</source>
<translation>Παράλειψη αυτή τη φορά</translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="350"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="352"/>
<source>Get update</source>
<translation>Λήψη ενημέρωσης</translation>
</message>
@@ -1900,7 +1900,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PUTFileJob</name>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="101"/>
<location filename="../src/libsync/propagateupload.cpp" line="103"/>
<source>Connection Timeout</source>
<translation>Λήξη Χρόνου Αναμονής Σύνδεσης</translation>
</message>
@@ -1908,7 +1908,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PollJob</name>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="158"/>
<location filename="../src/libsync/propagateupload.cpp" line="160"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>Λανθασμένη απάντηση JSON από την ιστοσελίδα poll</translation>
</message>
@@ -1954,17 +1954,17 @@ It is not advisable to use it.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="694"/>
<location filename="../src/libsync/propagatedownload.cpp" line="693"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>Το αρχείο %1 δεν είναι δυνατό να αποθηκευτεί λόγω διένεξης με το όνομα ενός τοπικού ονόματος αρχείου!</translation>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="742"/>
<location filename="../src/libsync/propagatedownload.cpp" line="741"/>
<source>File has changed since discovery</source>
<translation>Το αρχείο έχει αλλάξει από όταν ανακαλύφθηκε</translation>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="792"/>
<location filename="../src/libsync/propagatedownload.cpp" line="791"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2098,48 +2098,48 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="289"/>
<location filename="../src/libsync/propagateupload.cpp" line="297"/>
<source>File Removed</source>
<translation>Το αρχείο αφαιρέθηκε</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="301"/>
<location filename="../src/libsync/propagateupload.cpp" line="309"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>Το τοπικό αρχείο τροποποιήθηκε κατά τη διάρκεια του συγχρονισμού. Θα συγχρονιστεί πάλι.</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="313"/>
<location filename="../src/libsync/propagateupload.cpp" line="694"/>
<location filename="../src/libsync/propagateupload.cpp" line="321"/>
<location filename="../src/libsync/propagateupload.cpp" line="710"/>
<source>Local file changed during sync.</source>
<translation>Το τοπικό αρχείο τροποποιήθηκε κατά τον συγχρονισμό.</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="621"/>
<location filename="../src/libsync/propagateupload.cpp" line="637"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>Εξαναγκασμός ακύρωσης εργασίας στην επαναφορά σύνδεσης HTTP με Qt &lt; 5.4.2</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="629"/>
<location filename="../src/libsync/propagateupload.cpp" line="645"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>Το αρχείο υπέστη επεξεργασία τοπικά αλλά είναι τμήμα ενός διαμοιρασμένου καταλόγου μόνο για ανάγνωση. Επαναφέρθηκε και το επεξεργασμένο βρίσκεται στο αρχείο συγκρούσεων.</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="660"/>
<location filename="../src/libsync/propagateupload.cpp" line="676"/>
<source>Poll URL missing</source>
<translation>Η διεύθυνση poll URL λείπει</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="683"/>
<location filename="../src/libsync/propagateupload.cpp" line="699"/>
<source>The local file was removed during sync.</source>
<translation>Το τοπικό αρχείο αφαιρέθηκε κατά το συγχρονισμό.</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="709"/>
<location filename="../src/libsync/propagateupload.cpp" line="725"/>
<source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
<translation>Ο διακομιστής δεν αναγνώρισε το τελευταίο τμήμα. (Δεν υπήρχε e-tag)</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="782"/>
<location filename="../src/libsync/propagateupload.cpp" line="800"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2182,17 +2182,17 @@ It is not advisable to use it.</source>
<translation>Μέγεθος</translation>
</message>
<message>
<location filename="../src/gui/protocolwidget.cpp" line="72"/>
<location filename="../src/gui/protocolwidget.cpp" line="78"/>
<source>Local sync protocol</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/protocolwidget.cpp" line="74"/>
<location filename="../src/gui/protocolwidget.cpp" line="80"/>
<source>Copy</source>
<translation>Αντιγραφή</translation>
</message>
<message>
<location filename="../src/gui/protocolwidget.cpp" line="75"/>
<location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Αντιγραφή της λίστας δραστηριότητας στο πρόχειρο.</translation>
</message>
@@ -2479,7 +2479,7 @@ It is not advisable to use it.</source>
<translation>Διαμοιρασμός με χρήστες ή ομάδες ...</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="226"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
<source>No results for &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
@@ -2512,17 +2512,17 @@ It is not advisable to use it.</source>
<translation>...</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="302"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
<source>create</source>
<translation>δημιουργία</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="305"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>change</source>
<translation>αλλαγή</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="308"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>delete</source>
<translation>διαγραφή</translation>
</message>
@@ -2543,17 +2543,17 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="74"/>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
<source>%1 - Authenticate</source>
<translation>%1 - Πιστοποίηση</translation>
</message>
<message>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="80"/>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
<source>Reauthentication required</source>
<translation>Απαιτείται επανάληψη πιστοποίησης</translation>
</message>
<message>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="80"/>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Η συνεδρία σας έληξε. Πρέπει να εισέλθετε ξανά για να συνεχίσετε να χρησιμοποιείτε το πρόγραμμα.</translation>
</message>
@@ -2561,7 +2561,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Διαμοιρασμός με %1</translation>
@@ -2855,23 +2855,23 @@ It is not advisable to use it.</source>
<translation>Σφάλμα κατά την ανάγνωση του φακέλου.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="431"/>
<location filename="../src/libsync/syncengine.cpp" line="440"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="690"/>
<location filename="../src/libsync/syncengine.cpp" line="701"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>Μόνο %1 είναι διαθέσιμα, απαιτούνται τουλάχιστον %2 για την εκκίνηση</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1121"/>
<location filename="../src/libsync/syncengine.cpp" line="1132"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>Δεν επιτρέπεται επειδή δεν έχετε δικαιώματα να προσθέσετε γονικό κατάλογο</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1128"/>
<location filename="../src/libsync/syncengine.cpp" line="1139"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation>Δεν επιτρέπεται επειδή δεν έχετε δικαιώματα να προσθέσετε αρχεία σε αυτόν τον φάκελο</translation>
</message>
@@ -2891,7 +2891,7 @@ It is not advisable to use it.</source>
<translation>Ματαιώθηκε από το χρήστη</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="425"/>
<location filename="../src/libsync/syncengine.cpp" line="434"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>Το όνομα αρχείου περιέχει χαρακτήρες που δεν μπορούν να συγχρονιστούν σε όλα τα συστήματα.</translation>
</message>
@@ -2931,109 +2931,109 @@ It is not advisable to use it.</source>
<translation>Προέκυψε ένα εσωτερικό σφάλμα με αριθμό %1.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="254"/>
<location filename="../src/libsync/syncengine.cpp" line="263"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>Το αντικείμενο δεν είναι συγχρονισμένο λόγω προηγούμενων σφαλμάτων: %1</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="419"/>
<location filename="../src/libsync/syncengine.cpp" line="428"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Οι συμβολικού σύνδεσμοι δεν υποστηρίζονται για το συγχρονισμό.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="422"/>
<location filename="../src/libsync/syncengine.cpp" line="431"/>
<source>File is listed on the ignore list.</source>
<translation>Το αρχείο περιέχεται στη λίστα αρχείων προς αγνόηση.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="428"/>
<location filename="../src/libsync/syncengine.cpp" line="437"/>
<source>Filename is too long.</source>
<translation>Το όνομα αρχείου είνια πολύ μεγάλο.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="437"/>
<location filename="../src/libsync/syncengine.cpp" line="446"/>
<source>Stat failed.</source>
<translation>Απέτυχε.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="464"/>
<location filename="../src/libsync/syncengine.cpp" line="473"/>
<source>Filename encoding is not valid</source>
<translation>Η κωδικοποίηση του ονόματος αρχείου δεν είναι έγκυρη</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="635"/>
<location filename="../src/libsync/syncengine.cpp" line="644"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Μη έγκυροι χαρακτήρες, παρακαλώ μετονομάστε το &quot;%1&quot;</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="724"/>
<location filename="../src/libsync/syncengine.cpp" line="735"/>
<source>Unable to initialize a sync journal.</source>
<translation>Αδυναμία προετοιμασίας αρχείου συγχρονισμού.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="743"/>
<location filename="../src/libsync/syncengine.cpp" line="754"/>
<source>Unable to read the blacklist from the local database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="776"/>
<location filename="../src/libsync/syncengine.cpp" line="787"/>
<source>Unable to read from the sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="822"/>
<location filename="../src/libsync/syncengine.cpp" line="833"/>
<source>Cannot open the sync journal</source>
<translation>Αδυναμία ανοίγματος του αρχείου συγχρονισμού</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="876"/>
<location filename="../src/libsync/syncengine.cpp" line="887"/>
<source>File name contains at least one invalid character</source>
<translation>Το όνομα αρχείου περιέχει έναν τουλάχιστον μη έγκυρο χαρακτήρα</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1080"/>
<location filename="../src/libsync/syncengine.cpp" line="1087"/>
<location filename="../src/libsync/syncengine.cpp" line="1091"/>
<location filename="../src/libsync/syncengine.cpp" line="1098"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Αγνοήθηκε εξαιτίας της μαύρης λίστας &quot;διάλεξε τι να συγχρονιστεί&quot;</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1106"/>
<location filename="../src/libsync/syncengine.cpp" line="1117"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>Δεν επιτρέπεται επειδή δεν έχετε δικαιώματα να προσθέσετε υποφακέλους σε αυτό τον φάκελο</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1148"/>
<location filename="../src/libsync/syncengine.cpp" line="1159"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Δεν επιτρέπεται να μεταφορτώσετε αυτό το αρχείο επειδή είναι μόνο για ανάγνωση στο διακομιστή, αποκατάσταση σε εξέλιξη</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1165"/>
<location filename="../src/libsync/syncengine.cpp" line="1185"/>
<location filename="../src/libsync/syncengine.cpp" line="1176"/>
<location filename="../src/libsync/syncengine.cpp" line="1196"/>
<source>Not allowed to remove, restoring</source>
<translation>Δεν επιτρέπεται η αφαίρεση, αποκατάσταση σε εξέλιξη</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1198"/>
<location filename="../src/libsync/syncengine.cpp" line="1209"/>
<source>Local files and share folder removed.</source>
<translation>Οι τοπικοί φάκελοι και ο φάκελος κοινής χρήσης αφαιρέθηκαν.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1253"/>
<location filename="../src/libsync/syncengine.cpp" line="1265"/>
<source>Move not allowed, item restored</source>
<translation>Η μετακίνηση δεν επιτρέπεται, το αντικείμενο αποκαταστάθηκε</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1262"/>
<location filename="../src/libsync/syncengine.cpp" line="1276"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Η μετακίνηση δεν επιτρέπεται επειδή το %1 είναι μόνο για ανάγνωση</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1263"/>
<location filename="../src/libsync/syncengine.cpp" line="1277"/>
<source>the destination</source>
<translation>ο προορισμός</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1263"/>
<location filename="../src/libsync/syncengine.cpp" line="1277"/>
<source>the source</source>
<translation>η προέλευση</translation>
</message>
@@ -3499,7 +3499,7 @@ It is not advisable to use it.</source>
<context>
<name>QApplication</name>
<message>
<location filename="../src/gui/application.cpp" line="581"/>
<location filename="../src/gui/application.cpp" line="593"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation type="unfinished"/>
</message>
@@ -3507,37 +3507,37 @@ It is not advisable to use it.</source>
<context>
<name>QObject</name>
<message>
<location filename="../src/libsync/utility.cpp" line="468"/>
<location filename="../src/libsync/utility.cpp" line="473"/>
<source>in the future</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="464"/>
<location filename="../src/libsync/utility.cpp" line="469"/>
<source>%n day(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="472"/>
<location filename="../src/libsync/utility.cpp" line="477"/>
<source>%n hour(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="477"/>
<location filename="../src/libsync/utility.cpp" line="482"/>
<source>now</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="479"/>
<location filename="../src/libsync/utility.cpp" line="484"/>
<source>Less than a minute ago</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="482"/>
<location filename="../src/libsync/utility.cpp" line="487"/>
<source>%n minute(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="485"/>
<location filename="../src/libsync/utility.cpp" line="490"/>
<source>Some time ago</source>
<translation type="unfinished"/>
</message>
@@ -3564,38 +3564,38 @@ It is not advisable to use it.</source>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="314"/>
<source>%Ln year(s)</source>
<translation>%Ln έτος(η)</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="315"/>
<source>%Ln month(s)</source>
<translation>%Ln μήνας(ες)</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="316"/>
<source>%Ln day(s)</source>
<translation>%Ln ημέρα(ες)</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="317"/>
<source>%Ln hour(s)</source>
<translation>%Ln ώρα(ες)</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="318"/>
<source>%Ln minute(s)</source>
<translation>%Ln λεπτό(ά)</translation>
</message>
<message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="319"/>
<source>%Ln second(s)</source>
<translation>%Ln δευτερόλεπτο(α)</translation>
<source>%n year(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n month(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="321"/>
<source>%n day(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="322"/>
<source>%n hour(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="323"/>
<source>%n minute(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="324"/>
<source>%n second(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="343"/>
<location filename="../src/libsync/utility.cpp" line="348"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
+188 -170
Ver Arquivo
@@ -112,8 +112,8 @@
</message>
<message>
<location filename="../src/gui/accountsettings.ui" line="180"/>
<location filename="../src/gui/accountsettings.cpp" line="346"/>
<location filename="../src/gui/accountsettings.cpp" line="684"/>
<location filename="../src/gui/accountsettings.cpp" line="352"/>
<location filename="../src/gui/accountsettings.cpp" line="690"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -143,148 +143,148 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="215"/>
<location filename="../src/gui/accountsettings.cpp" line="221"/>
<source>Choose what to sync</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="223"/>
<location filename="../src/gui/accountsettings.cpp" line="229"/>
<source>Remove folder sync connection</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="288"/>
<location filename="../src/gui/accountsettings.cpp" line="294"/>
<source>Folder creation failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="289"/>
<location filename="../src/gui/accountsettings.cpp" line="295"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="339"/>
<location filename="../src/gui/accountsettings.cpp" line="345"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="345"/>
<location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>Remove Folder Sync Connection</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="427"/>
<location filename="../src/gui/accountsettings.cpp" line="433"/>
<source>Sync Running</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="428"/>
<location filename="../src/gui/accountsettings.cpp" line="434"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="495"/>
<location filename="../src/gui/accountsettings.cpp" line="501"/>
<source>%1 in use</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="515"/>
<location filename="../src/gui/accountsettings.cpp" line="521"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="521"/>
<location filename="../src/gui/accountsettings.cpp" line="527"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="523"/>
<location filename="../src/gui/accountsettings.cpp" line="529"/>
<source>Connected to %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="525"/>
<location filename="../src/gui/accountsettings.cpp" line="531"/>
<source>Server %1 is temporarily unavailable.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="527"/>
<location filename="../src/gui/accountsettings.cpp" line="533"/>
<source>Signed out from %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="529"/>
<location filename="../src/gui/accountsettings.cpp" line="535"/>
<source>No connection to %1 at %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="552"/>
<location filename="../src/gui/accountsettings.cpp" line="558"/>
<source>Log in</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="636"/>
<location filename="../src/gui/accountsettings.cpp" line="642"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="676"/>
<location filename="../src/gui/accountsettings.cpp" line="682"/>
<source>Confirm Account Removal</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="677"/>
<location filename="../src/gui/accountsettings.cpp" line="683"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="683"/>
<location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>Remove connection</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="211"/>
<location filename="../src/gui/accountsettings.cpp" line="217"/>
<source>Open folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="145"/>
<location filename="../src/gui/accountsettings.cpp" line="554"/>
<location filename="../src/gui/accountsettings.cpp" line="560"/>
<source>Log out</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="220"/>
<location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Resume sync</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="220"/>
<location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Pause sync</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="340"/>
<location filename="../src/gui/accountsettings.cpp" line="346"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="482"/>
<location filename="../src/gui/accountsettings.cpp" line="488"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="483"/>
<location filename="../src/gui/accountsettings.cpp" line="489"/>
<source>%1 of %2 in use</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="492"/>
<location filename="../src/gui/accountsettings.cpp" line="498"/>
<source>Currently there is no storage usage information available.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="535"/>
<location filename="../src/gui/accountsettings.cpp" line="541"/>
<source>No %1 connection configured.</source>
<translation type="unfinished"></translation>
</message>
@@ -587,57 +587,57 @@
<context>
<name>OCC::Folder</name>
<message>
<location filename="../src/gui/folder.cpp" line="135"/>
<location filename="../src/gui/folder.cpp" line="129"/>
<source>Local folder %1 does not exist.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="138"/>
<location filename="../src/gui/folder.cpp" line="132"/>
<source>%1 should be a folder but is not.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="141"/>
<location filename="../src/gui/folder.cpp" line="135"/>
<source>%1 is not readable.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="386"/>
<location filename="../src/gui/folder.cpp" line="381"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="496"/>
<location filename="../src/gui/folder.cpp" line="491"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="503"/>
<location filename="../src/gui/folder.cpp" line="498"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="510"/>
<location filename="../src/gui/folder.cpp" line="505"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="517"/>
<location filename="../src/gui/folder.cpp" line="512"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="524"/>
<location filename="../src/gui/folder.cpp" line="519"/>
<source>%1 has been moved to %2.</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="494"/>
<location filename="../src/gui/folder.cpp" line="489"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -645,7 +645,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="501"/>
<location filename="../src/gui/folder.cpp" line="496"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -653,7 +653,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="508"/>
<location filename="../src/gui/folder.cpp" line="503"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -661,7 +661,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="515"/>
<location filename="../src/gui/folder.cpp" line="510"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -669,7 +669,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="522"/>
<location filename="../src/gui/folder.cpp" line="517"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -677,7 +677,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="529"/>
<location filename="../src/gui/folder.cpp" line="524"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -685,12 +685,12 @@
</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="531"/>
<location filename="../src/gui/folder.cpp" line="526"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="536"/>
<location filename="../src/gui/folder.cpp" line="531"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -698,67 +698,67 @@
</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="538"/>
<location filename="../src/gui/folder.cpp" line="533"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="544"/>
<location filename="../src/gui/folder.cpp" line="539"/>
<source>Sync Activity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="750"/>
<location filename="../src/gui/folder.cpp" line="747"/>
<source>Could not read system exclude file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="961"/>
<location filename="../src/gui/folder.cpp" line="958"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="979"/>
<location filename="../src/gui/folder.cpp" line="976"/>
<source>This sync would remove all the files in the sync folder &apos;%1&apos;.
This might be because the folder was silently reconfigured, or that all the files were manually removed.
Are you sure you want to perform this operation?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="983"/>
<location filename="../src/gui/folder.cpp" line="980"/>
<source>Remove All Files?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="985"/>
<location filename="../src/gui/folder.cpp" line="982"/>
<source>Remove all files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="986"/>
<location filename="../src/gui/folder.cpp" line="983"/>
<source>Keep files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1004"/>
<location filename="../src/gui/folder.cpp" line="1001"/>
<source>This sync would reset the files to an erlier time in the sync folder &apos;%1&apos;.
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?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1009"/>
<location filename="../src/gui/folder.cpp" line="1006"/>
<source>Backup detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1011"/>
<location filename="../src/gui/folder.cpp" line="1008"/>
<source>Normal Synchronisation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1012"/>
<location filename="../src/gui/folder.cpp" line="1009"/>
<source>Keep Local Files as Conflict</source>
<translation type="unfinished"></translation>
</message>
@@ -1028,12 +1028,12 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderWizard</name>
<message>
<location filename="../src/gui/folderwizard.cpp" line="553"/>
<location filename="../src/gui/folderwizard.cpp" line="542"/>
<source>Add Folder Sync Connection</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="555"/>
<location filename="../src/gui/folderwizard.cpp" line="544"/>
<source>Add Sync Connection</source>
<translation type="unfinished"></translation>
</message>
@@ -1051,7 +1051,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="133"/>
<location filename="../src/gui/folderwizard.cpp" line="126"/>
<source>Select the source folder</source>
<translation type="unfinished"></translation>
</message>
@@ -1059,52 +1059,52 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderWizardRemotePath</name>
<message>
<location filename="../src/gui/folderwizard.cpp" line="191"/>
<location filename="../src/gui/folderwizard.cpp" line="176"/>
<source>Create Remote Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="192"/>
<location filename="../src/gui/folderwizard.cpp" line="177"/>
<source>Enter the name of the new folder to be created below &apos;%1&apos;:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="221"/>
<location filename="../src/gui/folderwizard.cpp" line="206"/>
<source>Folder was successfully created on %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="232"/>
<location filename="../src/gui/folderwizard.cpp" line="217"/>
<source>Authentication failed accessing %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="234"/>
<location filename="../src/gui/folderwizard.cpp" line="219"/>
<source>Failed to create the folder on %1. Please check manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="241"/>
<location filename="../src/gui/folderwizard.cpp" line="226"/>
<source>Failed to list a folder. Error: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="322"/>
<location filename="../src/gui/folderwizard.cpp" line="307"/>
<source>Choose this to sync the entire account</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="451"/>
<location filename="../src/gui/folderwizard.cpp" line="436"/>
<source>This folder is already being synced.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="453"/>
<location filename="../src/gui/folderwizard.cpp" line="438"/>
<source>You are already syncing &lt;i&gt;%1&lt;/i&gt;, which is a parent folder of &lt;i&gt;%2&lt;/i&gt;.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="457"/>
<location filename="../src/gui/folderwizard.cpp" line="442"/>
<source>You are already syncing all your files. Syncing another folder is &lt;b&gt;not&lt;/b&gt; supported. If you want to sync multiple folders, please remove the currently configured root folder sync.</source>
<translation type="unfinished"></translation>
</message>
@@ -1112,7 +1112,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderWizardSelectiveSync</name>
<message>
<location filename="../src/gui/folderwizard.cpp" line="495"/>
<location filename="../src/gui/folderwizard.cpp" line="480"/>
<source>Choose What to Sync: You can optionally deselect remote subfolders you do not wish to synchronize.</source>
<translation type="unfinished"></translation>
</message>
@@ -1401,27 +1401,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::NSISUpdater</name>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="329"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="331"/>
<source>New Version Available</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="335"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="337"/>
<source>&lt;p&gt;A new version of the %1 Client is available.&lt;/p&gt;&lt;p&gt;&lt;b&gt;%2&lt;/b&gt; is available for download. The installed version is %3.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="348"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="350"/>
<source>Skip this version</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="349"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="351"/>
<source>Skip this time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="350"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="352"/>
<source>Get update</source>
<translation type="unfinished"></translation>
</message>
@@ -1921,7 +1921,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PUTFileJob</name>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="101"/>
<location filename="../src/libsync/propagateupload.cpp" line="103"/>
<source>Connection Timeout</source>
<translation type="unfinished"></translation>
</message>
@@ -1929,7 +1929,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PollJob</name>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="158"/>
<location filename="../src/libsync/propagateupload.cpp" line="160"/>
<source>Invalid JSON reply from the poll URL</source>
<translation type="unfinished"></translation>
</message>
@@ -1975,17 +1975,17 @@ It is not advisable to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="694"/>
<location filename="../src/libsync/propagatedownload.cpp" line="693"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="742"/>
<location filename="../src/libsync/propagatedownload.cpp" line="741"/>
<source>File has changed since discovery</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="792"/>
<location filename="../src/libsync/propagatedownload.cpp" line="791"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"></translation>
</message>
@@ -2119,48 +2119,48 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="289"/>
<location filename="../src/libsync/propagateupload.cpp" line="297"/>
<source>File Removed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="301"/>
<location filename="../src/libsync/propagateupload.cpp" line="309"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="313"/>
<location filename="../src/libsync/propagateupload.cpp" line="694"/>
<location filename="../src/libsync/propagateupload.cpp" line="321"/>
<location filename="../src/libsync/propagateupload.cpp" line="710"/>
<source>Local file changed during sync.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="621"/>
<location filename="../src/libsync/propagateupload.cpp" line="637"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="629"/>
<location filename="../src/libsync/propagateupload.cpp" line="645"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="660"/>
<location filename="../src/libsync/propagateupload.cpp" line="676"/>
<source>Poll URL missing</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="683"/>
<location filename="../src/libsync/propagateupload.cpp" line="699"/>
<source>The local file was removed during sync.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="709"/>
<location filename="../src/libsync/propagateupload.cpp" line="725"/>
<source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="782"/>
<location filename="../src/libsync/propagateupload.cpp" line="800"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"></translation>
</message>
@@ -2203,17 +2203,17 @@ It is not advisable to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/protocolwidget.cpp" line="72"/>
<location filename="../src/gui/protocolwidget.cpp" line="78"/>
<source>Local sync protocol</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/protocolwidget.cpp" line="74"/>
<location filename="../src/gui/protocolwidget.cpp" line="80"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/protocolwidget.cpp" line="75"/>
<location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy the activity list to the clipboard.</source>
<translation type="unfinished"></translation>
</message>
@@ -2500,7 +2500,7 @@ It is not advisable to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="226"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
<source>No results for &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
@@ -2533,17 +2533,17 @@ It is not advisable to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="302"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
<source>create</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="305"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>change</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="308"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>delete</source>
<translation type="unfinished"></translation>
</message>
@@ -2564,17 +2564,17 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="74"/>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
<source>%1 - Authenticate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="80"/>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
<source>Reauthentication required</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="80"/>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation type="unfinished"></translation>
</message>
@@ -2582,7 +2582,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation type="unfinished"></translation>
@@ -2874,23 +2874,23 @@ It is not advisable to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="431"/>
<location filename="../src/libsync/syncengine.cpp" line="440"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="690"/>
<location filename="../src/libsync/syncengine.cpp" line="701"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1121"/>
<location filename="../src/libsync/syncengine.cpp" line="1132"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1128"/>
<location filename="../src/libsync/syncengine.cpp" line="1139"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation type="unfinished"></translation>
</message>
@@ -2910,7 +2910,7 @@ It is not advisable to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="425"/>
<location filename="../src/libsync/syncengine.cpp" line="434"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation type="unfinished"></translation>
</message>
@@ -2950,109 +2950,109 @@ It is not advisable to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="254"/>
<location filename="../src/libsync/syncengine.cpp" line="263"/>
<source>The item is not synced because of previous errors: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="419"/>
<location filename="../src/libsync/syncengine.cpp" line="428"/>
<source>Symbolic links are not supported in syncing.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="422"/>
<location filename="../src/libsync/syncengine.cpp" line="431"/>
<source>File is listed on the ignore list.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="428"/>
<location filename="../src/libsync/syncengine.cpp" line="437"/>
<source>Filename is too long.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="437"/>
<location filename="../src/libsync/syncengine.cpp" line="446"/>
<source>Stat failed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="464"/>
<location filename="../src/libsync/syncengine.cpp" line="473"/>
<source>Filename encoding is not valid</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="635"/>
<location filename="../src/libsync/syncengine.cpp" line="644"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="724"/>
<location filename="../src/libsync/syncengine.cpp" line="735"/>
<source>Unable to initialize a sync journal.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="743"/>
<location filename="../src/libsync/syncengine.cpp" line="754"/>
<source>Unable to read the blacklist from the local database</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="776"/>
<location filename="../src/libsync/syncengine.cpp" line="787"/>
<source>Unable to read from the sync journal.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="822"/>
<location filename="../src/libsync/syncengine.cpp" line="833"/>
<source>Cannot open the sync journal</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="876"/>
<location filename="../src/libsync/syncengine.cpp" line="887"/>
<source>File name contains at least one invalid character</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1080"/>
<location filename="../src/libsync/syncengine.cpp" line="1087"/>
<location filename="../src/libsync/syncengine.cpp" line="1091"/>
<location filename="../src/libsync/syncengine.cpp" line="1098"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1106"/>
<location filename="../src/libsync/syncengine.cpp" line="1117"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1148"/>
<location filename="../src/libsync/syncengine.cpp" line="1159"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1165"/>
<location filename="../src/libsync/syncengine.cpp" line="1185"/>
<location filename="../src/libsync/syncengine.cpp" line="1176"/>
<location filename="../src/libsync/syncengine.cpp" line="1196"/>
<source>Not allowed to remove, restoring</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1198"/>
<location filename="../src/libsync/syncengine.cpp" line="1209"/>
<source>Local files and share folder removed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1253"/>
<location filename="../src/libsync/syncengine.cpp" line="1265"/>
<source>Move not allowed, item restored</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1262"/>
<location filename="../src/libsync/syncengine.cpp" line="1276"/>
<source>Move not allowed because %1 is read-only</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1263"/>
<location filename="../src/libsync/syncengine.cpp" line="1277"/>
<source>the destination</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1263"/>
<location filename="../src/libsync/syncengine.cpp" line="1277"/>
<source>the source</source>
<translation type="unfinished"></translation>
</message>
@@ -3518,7 +3518,7 @@ It is not advisable to use it.</source>
<context>
<name>QApplication</name>
<message>
<location filename="../src/gui/application.cpp" line="581"/>
<location filename="../src/gui/application.cpp" line="593"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation type="unfinished"></translation>
</message>
@@ -3526,12 +3526,12 @@ It is not advisable to use it.</source>
<context>
<name>QObject</name>
<message>
<location filename="../src/libsync/utility.cpp" line="468"/>
<location filename="../src/libsync/utility.cpp" line="473"/>
<source>in the future</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="464"/>
<location filename="../src/libsync/utility.cpp" line="469"/>
<source>%n day(s) ago</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -3539,7 +3539,7 @@ It is not advisable to use it.</source>
</translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="472"/>
<location filename="../src/libsync/utility.cpp" line="477"/>
<source>%n hour(s) ago</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -3547,17 +3547,17 @@ It is not advisable to use it.</source>
</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="477"/>
<location filename="../src/libsync/utility.cpp" line="482"/>
<source>now</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="479"/>
<location filename="../src/libsync/utility.cpp" line="484"/>
<source>Less than a minute ago</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="482"/>
<location filename="../src/libsync/utility.cpp" line="487"/>
<source>%n minute(s) ago</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -3565,7 +3565,7 @@ It is not advisable to use it.</source>
</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="485"/>
<location filename="../src/libsync/utility.cpp" line="490"/>
<source>Some time ago</source>
<translation type="unfinished"></translation>
</message>
@@ -3592,38 +3592,56 @@ It is not advisable to use it.</source>
<source>%L1 B</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="314"/>
<source>%Ln year(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="315"/>
<source>%Ln month(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="316"/>
<source>%Ln day(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="317"/>
<source>%Ln hour(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="318"/>
<source>%Ln minute(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="319"/>
<source>%Ln second(s)</source>
<translation type="unfinished"></translation>
<source>%n year(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n month(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="321"/>
<source>%n day(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="322"/>
<source>%n hour(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="323"/>
<source>%n minute(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="324"/>
<source>%n second(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="343"/>
<location filename="../src/libsync/utility.cpp" line="348"/>
<source>%1 %2</source>
<translation type="unfinished"></translation>
</message>
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+170 -170
Ver Arquivo
@@ -110,8 +110,8 @@
</message>
<message>
<location filename="../src/gui/accountsettings.ui" line="180"/>
<location filename="../src/gui/accountsettings.cpp" line="346"/>
<location filename="../src/gui/accountsettings.cpp" line="684"/>
<location filename="../src/gui/accountsettings.cpp" line="352"/>
<location filename="../src/gui/accountsettings.cpp" line="690"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
@@ -141,148 +141,148 @@
<translation>Cuenta</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="215"/>
<location filename="../src/gui/accountsettings.cpp" line="221"/>
<source>Choose what to sync</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="223"/>
<location filename="../src/gui/accountsettings.cpp" line="229"/>
<source>Remove folder sync connection</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="288"/>
<location filename="../src/gui/accountsettings.cpp" line="294"/>
<source>Folder creation failed</source>
<translation>Falló la creacion de la carpeta</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="289"/>
<location filename="../src/gui/accountsettings.cpp" line="295"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;No pudó ser creada la carpeta local &lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="339"/>
<location filename="../src/gui/accountsettings.cpp" line="345"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="345"/>
<location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>Remove Folder Sync Connection</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="427"/>
<location filename="../src/gui/accountsettings.cpp" line="433"/>
<source>Sync Running</source>
<translation>Sincronización en curso</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="428"/>
<location filename="../src/gui/accountsettings.cpp" line="434"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>La sincronización está en curso.&lt;br/&gt;¿Querés interrumpirla?</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="495"/>
<location filename="../src/gui/accountsettings.cpp" line="501"/>
<source>%1 in use</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="515"/>
<location filename="../src/gui/accountsettings.cpp" line="521"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 de &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="521"/>
<location filename="../src/gui/accountsettings.cpp" line="527"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="523"/>
<location filename="../src/gui/accountsettings.cpp" line="529"/>
<source>Connected to %1.</source>
<translation>Conectado a %1</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="525"/>
<location filename="../src/gui/accountsettings.cpp" line="531"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>El servidor %1 esta temporalmente sin conexión</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="527"/>
<location filename="../src/gui/accountsettings.cpp" line="533"/>
<source>Signed out from %1.</source>
<translation>Registrado desde %1.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="529"/>
<location filename="../src/gui/accountsettings.cpp" line="535"/>
<source>No connection to %1 at %2.</source>
<translation>Sin conexión a %1 desde %2.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="552"/>
<location filename="../src/gui/accountsettings.cpp" line="558"/>
<source>Log in</source>
<translation>Iniciar sesión</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="636"/>
<location filename="../src/gui/accountsettings.cpp" line="642"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="676"/>
<location filename="../src/gui/accountsettings.cpp" line="682"/>
<source>Confirm Account Removal</source>
<translation>Confirmar la eliminación de la cuenta</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="677"/>
<location filename="../src/gui/accountsettings.cpp" line="683"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="683"/>
<location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>Remove connection</source>
<translation>Eliminar conexión</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="211"/>
<location filename="../src/gui/accountsettings.cpp" line="217"/>
<source>Open folder</source>
<translation>Abrir carpeta</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="145"/>
<location filename="../src/gui/accountsettings.cpp" line="554"/>
<location filename="../src/gui/accountsettings.cpp" line="560"/>
<source>Log out</source>
<translation>Cerrar la sesión</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="220"/>
<location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Resume sync</source>
<translation>Reanudar sincronización</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="220"/>
<location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Pause sync</source>
<translation>Pausar sincronización</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="340"/>
<location filename="../src/gui/accountsettings.cpp" line="346"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Realmente quieres detener la sincronización de la carpeta &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Nota:&lt;/b&gt; Esto &lt;b&gt;no&lt;/b&gt; eliminara ningun archivo.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="482"/>
<location filename="../src/gui/accountsettings.cpp" line="488"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="483"/>
<location filename="../src/gui/accountsettings.cpp" line="489"/>
<source>%1 of %2 in use</source>
<translation>%1 de %2 en uso</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="492"/>
<location filename="../src/gui/accountsettings.cpp" line="498"/>
<source>Currently there is no storage usage information available.</source>
<translation>Actualmente no hay información disponible acerca del uso del almacenamiento.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="535"/>
<location filename="../src/gui/accountsettings.cpp" line="541"/>
<source>No %1 connection configured.</source>
<translation>No hay ninguna conexión de %1 configurada.</translation>
</message>
@@ -579,157 +579,157 @@
<context>
<name>OCC::Folder</name>
<message>
<location filename="../src/gui/folder.cpp" line="135"/>
<location filename="../src/gui/folder.cpp" line="129"/>
<source>Local folder %1 does not exist.</source>
<translation>El directorio local %1 no existe.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="138"/>
<location filename="../src/gui/folder.cpp" line="132"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 debé ser una carpeta pero no lo es.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="141"/>
<location filename="../src/gui/folder.cpp" line="135"/>
<source>%1 is not readable.</source>
<translation>No se puede leer %1.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="386"/>
<location filename="../src/gui/folder.cpp" line="381"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="496"/>
<location filename="../src/gui/folder.cpp" line="491"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 ha sido eliminado.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="503"/>
<location filename="../src/gui/folder.cpp" line="498"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 ha sido descargado.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="510"/>
<location filename="../src/gui/folder.cpp" line="505"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 ha sido actualizado</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="517"/>
<location filename="../src/gui/folder.cpp" line="512"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="524"/>
<location filename="../src/gui/folder.cpp" line="519"/>
<source>%1 has been moved to %2.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="494"/>
<location filename="../src/gui/folder.cpp" line="489"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="501"/>
<location filename="../src/gui/folder.cpp" line="496"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="508"/>
<location filename="../src/gui/folder.cpp" line="503"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="515"/>
<location filename="../src/gui/folder.cpp" line="510"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="522"/>
<location filename="../src/gui/folder.cpp" line="517"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="529"/>
<location filename="../src/gui/folder.cpp" line="524"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="531"/>
<location filename="../src/gui/folder.cpp" line="526"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="536"/>
<location filename="../src/gui/folder.cpp" line="531"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="538"/>
<location filename="../src/gui/folder.cpp" line="533"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="544"/>
<location filename="../src/gui/folder.cpp" line="539"/>
<source>Sync Activity</source>
<translation>Actividad de Sync</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="750"/>
<location filename="../src/gui/folder.cpp" line="747"/>
<source>Could not read system exclude file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="961"/>
<location filename="../src/gui/folder.cpp" line="958"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="979"/>
<location filename="../src/gui/folder.cpp" line="976"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the files were manually removed.
Are you sure you want to perform this operation?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="983"/>
<location filename="../src/gui/folder.cpp" line="980"/>
<source>Remove All Files?</source>
<translation>¿Borrar todos los archivos?</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="985"/>
<location filename="../src/gui/folder.cpp" line="982"/>
<source>Remove all files</source>
<translation>Borrar todos los archivos</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="986"/>
<location filename="../src/gui/folder.cpp" line="983"/>
<source>Keep files</source>
<translation>Conservar archivos</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1004"/>
<location filename="../src/gui/folder.cpp" line="1001"/>
<source>This sync would reset the files to an erlier 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?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1009"/>
<location filename="../src/gui/folder.cpp" line="1006"/>
<source>Backup detected</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1011"/>
<location filename="../src/gui/folder.cpp" line="1008"/>
<source>Normal Synchronisation</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1012"/>
<location filename="../src/gui/folder.cpp" line="1009"/>
<source>Keep Local Files as Conflict</source>
<translation type="unfinished"/>
</message>
@@ -996,12 +996,12 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderWizard</name>
<message>
<location filename="../src/gui/folderwizard.cpp" line="553"/>
<location filename="../src/gui/folderwizard.cpp" line="542"/>
<source>Add Folder Sync Connection</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="555"/>
<location filename="../src/gui/folderwizard.cpp" line="544"/>
<source>Add Sync Connection</source>
<translation type="unfinished"/>
</message>
@@ -1019,7 +1019,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<translation>Ingrese el path al directorio local.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="133"/>
<location filename="../src/gui/folderwizard.cpp" line="126"/>
<source>Select the source folder</source>
<translation>Seleccioná el directorio origen</translation>
</message>
@@ -1027,52 +1027,52 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderWizardRemotePath</name>
<message>
<location filename="../src/gui/folderwizard.cpp" line="191"/>
<location filename="../src/gui/folderwizard.cpp" line="176"/>
<source>Create Remote Folder</source>
<translation>Crear carpeta remota</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="192"/>
<location filename="../src/gui/folderwizard.cpp" line="177"/>
<source>Enter the name of the new folder to be created below &apos;%1&apos;:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="221"/>
<location filename="../src/gui/folderwizard.cpp" line="206"/>
<source>Folder was successfully created on %1.</source>
<translation>El directorio fue creado con éxito en %1.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="232"/>
<location filename="../src/gui/folderwizard.cpp" line="217"/>
<source>Authentication failed accessing %1</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="234"/>
<location filename="../src/gui/folderwizard.cpp" line="219"/>
<source>Failed to create the folder on %1. Please check manually.</source>
<translation>Fallo al crear el directorio en %1. Por favor chequee manualmente.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="241"/>
<location filename="../src/gui/folderwizard.cpp" line="226"/>
<source>Failed to list a folder. Error: %1</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="322"/>
<location filename="../src/gui/folderwizard.cpp" line="307"/>
<source>Choose this to sync the entire account</source>
<translation>Seleccioná acá para sincronizar la cuenta completa</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="451"/>
<location filename="../src/gui/folderwizard.cpp" line="436"/>
<source>This folder is already being synced.</source>
<translation>Este folder ya está siendo sincronizado.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="453"/>
<location filename="../src/gui/folderwizard.cpp" line="438"/>
<source>You are already syncing &lt;i&gt;%1&lt;/i&gt;, which is a parent folder of &lt;i&gt;%2&lt;/i&gt;.</source>
<translation>Ya estás sincronizando &lt;i&gt;%1&lt;/i&gt;, el cual es el directorio de &lt;i&gt;%2&lt;/i&gt;.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="457"/>
<location filename="../src/gui/folderwizard.cpp" line="442"/>
<source>You are already syncing all your files. Syncing another folder is &lt;b&gt;not&lt;/b&gt; supported. If you want to sync multiple folders, please remove the currently configured root folder sync.</source>
<translation type="unfinished"/>
</message>
@@ -1080,7 +1080,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderWizardSelectiveSync</name>
<message>
<location filename="../src/gui/folderwizard.cpp" line="495"/>
<location filename="../src/gui/folderwizard.cpp" line="480"/>
<source>Choose What to Sync: You can optionally deselect remote subfolders you do not wish to synchronize.</source>
<translation type="unfinished"/>
</message>
@@ -1369,27 +1369,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::NSISUpdater</name>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="329"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="331"/>
<source>New Version Available</source>
<translation>Nueva versión disponible</translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="335"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="337"/>
<source>&lt;p&gt;A new version of the %1 Client is available.&lt;/p&gt;&lt;p&gt;&lt;b&gt;%2&lt;/b&gt; is available for download. The installed version is %3.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="348"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="350"/>
<source>Skip this version</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="349"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="351"/>
<source>Skip this time</source>
<translation>Saltear esta vez</translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="350"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="352"/>
<source>Get update</source>
<translation>Obtener actualización</translation>
</message>
@@ -1889,7 +1889,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PUTFileJob</name>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="101"/>
<location filename="../src/libsync/propagateupload.cpp" line="103"/>
<source>Connection Timeout</source>
<translation type="unfinished"/>
</message>
@@ -1897,7 +1897,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PollJob</name>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="158"/>
<location filename="../src/libsync/propagateupload.cpp" line="160"/>
<source>Invalid JSON reply from the poll URL</source>
<translation type="unfinished"/>
</message>
@@ -1943,17 +1943,17 @@ It is not advisable to use it.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="694"/>
<location filename="../src/libsync/propagatedownload.cpp" line="693"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="742"/>
<location filename="../src/libsync/propagatedownload.cpp" line="741"/>
<source>File has changed since discovery</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="792"/>
<location filename="../src/libsync/propagatedownload.cpp" line="791"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2087,48 +2087,48 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="289"/>
<location filename="../src/libsync/propagateupload.cpp" line="297"/>
<source>File Removed</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="301"/>
<location filename="../src/libsync/propagateupload.cpp" line="309"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="313"/>
<location filename="../src/libsync/propagateupload.cpp" line="694"/>
<location filename="../src/libsync/propagateupload.cpp" line="321"/>
<location filename="../src/libsync/propagateupload.cpp" line="710"/>
<source>Local file changed during sync.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="621"/>
<location filename="../src/libsync/propagateupload.cpp" line="637"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="629"/>
<location filename="../src/libsync/propagateupload.cpp" line="645"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="660"/>
<location filename="../src/libsync/propagateupload.cpp" line="676"/>
<source>Poll URL missing</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="683"/>
<location filename="../src/libsync/propagateupload.cpp" line="699"/>
<source>The local file was removed during sync.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="709"/>
<location filename="../src/libsync/propagateupload.cpp" line="725"/>
<source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="782"/>
<location filename="../src/libsync/propagateupload.cpp" line="800"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2171,17 +2171,17 @@ It is not advisable to use it.</source>
<translation>Tamaño</translation>
</message>
<message>
<location filename="../src/gui/protocolwidget.cpp" line="72"/>
<location filename="../src/gui/protocolwidget.cpp" line="78"/>
<source>Local sync protocol</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/protocolwidget.cpp" line="74"/>
<location filename="../src/gui/protocolwidget.cpp" line="80"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
<location filename="../src/gui/protocolwidget.cpp" line="75"/>
<location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copiar la lista de actividades al portapapeles.</translation>
</message>
@@ -2468,7 +2468,7 @@ It is not advisable to use it.</source>
<translation>Compartir con usuario o grupo ...</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="226"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
<source>No results for &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
@@ -2501,17 +2501,17 @@ It is not advisable to use it.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="302"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
<source>create</source>
<translation>crear</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="305"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>change</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="308"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>delete</source>
<translation>borrar</translation>
</message>
@@ -2532,17 +2532,17 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="74"/>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
<source>%1 - Authenticate</source>
<translation>%1 - Autenticarse</translation>
</message>
<message>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="80"/>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
<source>Reauthentication required</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="80"/>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation type="unfinished"/>
</message>
@@ -2550,7 +2550,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation type="unfinished"/>
@@ -2842,23 +2842,23 @@ It is not advisable to use it.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="431"/>
<location filename="../src/libsync/syncengine.cpp" line="440"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="690"/>
<location filename="../src/libsync/syncengine.cpp" line="701"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1121"/>
<location filename="../src/libsync/syncengine.cpp" line="1132"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1128"/>
<location filename="../src/libsync/syncengine.cpp" line="1139"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation type="unfinished"/>
</message>
@@ -2878,7 +2878,7 @@ It is not advisable to use it.</source>
<translation>Interrumpido por el usuario</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="425"/>
<location filename="../src/libsync/syncengine.cpp" line="434"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation type="unfinished"/>
</message>
@@ -2918,109 +2918,109 @@ It is not advisable to use it.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="254"/>
<location filename="../src/libsync/syncengine.cpp" line="263"/>
<source>The item is not synced because of previous errors: %1</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="419"/>
<location filename="../src/libsync/syncengine.cpp" line="428"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Los vínculos simbólicos no está soportados al sincronizar.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="422"/>
<location filename="../src/libsync/syncengine.cpp" line="431"/>
<source>File is listed on the ignore list.</source>
<translation>El archivo está en la lista de ignorados.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="428"/>
<location filename="../src/libsync/syncengine.cpp" line="437"/>
<source>Filename is too long.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="437"/>
<location filename="../src/libsync/syncengine.cpp" line="446"/>
<source>Stat failed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="464"/>
<location filename="../src/libsync/syncengine.cpp" line="473"/>
<source>Filename encoding is not valid</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="635"/>
<location filename="../src/libsync/syncengine.cpp" line="644"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="724"/>
<location filename="../src/libsync/syncengine.cpp" line="735"/>
<source>Unable to initialize a sync journal.</source>
<translation>Imposible inicializar un diario de sincronización.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="743"/>
<location filename="../src/libsync/syncengine.cpp" line="754"/>
<source>Unable to read the blacklist from the local database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="776"/>
<location filename="../src/libsync/syncengine.cpp" line="787"/>
<source>Unable to read from the sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="822"/>
<location filename="../src/libsync/syncengine.cpp" line="833"/>
<source>Cannot open the sync journal</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="876"/>
<location filename="../src/libsync/syncengine.cpp" line="887"/>
<source>File name contains at least one invalid character</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1080"/>
<location filename="../src/libsync/syncengine.cpp" line="1087"/>
<location filename="../src/libsync/syncengine.cpp" line="1091"/>
<location filename="../src/libsync/syncengine.cpp" line="1098"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1106"/>
<location filename="../src/libsync/syncengine.cpp" line="1117"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1148"/>
<location filename="../src/libsync/syncengine.cpp" line="1159"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1165"/>
<location filename="../src/libsync/syncengine.cpp" line="1185"/>
<location filename="../src/libsync/syncengine.cpp" line="1176"/>
<location filename="../src/libsync/syncengine.cpp" line="1196"/>
<source>Not allowed to remove, restoring</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1198"/>
<location filename="../src/libsync/syncengine.cpp" line="1209"/>
<source>Local files and share folder removed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1253"/>
<location filename="../src/libsync/syncengine.cpp" line="1265"/>
<source>Move not allowed, item restored</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1262"/>
<location filename="../src/libsync/syncengine.cpp" line="1276"/>
<source>Move not allowed because %1 is read-only</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1263"/>
<location filename="../src/libsync/syncengine.cpp" line="1277"/>
<source>the destination</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1263"/>
<location filename="../src/libsync/syncengine.cpp" line="1277"/>
<source>the source</source>
<translation type="unfinished"/>
</message>
@@ -3487,7 +3487,7 @@ It is not advisable to use it.</source>
<context>
<name>QApplication</name>
<message>
<location filename="../src/gui/application.cpp" line="581"/>
<location filename="../src/gui/application.cpp" line="593"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation type="unfinished"/>
</message>
@@ -3495,37 +3495,37 @@ It is not advisable to use it.</source>
<context>
<name>QObject</name>
<message>
<location filename="../src/libsync/utility.cpp" line="468"/>
<location filename="../src/libsync/utility.cpp" line="473"/>
<source>in the future</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="464"/>
<location filename="../src/libsync/utility.cpp" line="469"/>
<source>%n day(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="472"/>
<location filename="../src/libsync/utility.cpp" line="477"/>
<source>%n hour(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="477"/>
<location filename="../src/libsync/utility.cpp" line="482"/>
<source>now</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="479"/>
<location filename="../src/libsync/utility.cpp" line="484"/>
<source>Less than a minute ago</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="482"/>
<location filename="../src/libsync/utility.cpp" line="487"/>
<source>%n minute(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="485"/>
<location filename="../src/libsync/utility.cpp" line="490"/>
<source>Some time ago</source>
<translation type="unfinished"/>
</message>
@@ -3552,38 +3552,38 @@ It is not advisable to use it.</source>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="314"/>
<source>%Ln year(s)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="315"/>
<source>%Ln month(s)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="316"/>
<source>%Ln day(s)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="317"/>
<source>%Ln hour(s)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="318"/>
<source>%Ln minute(s)</source>
<translation type="unfinished"/>
</message>
<message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="319"/>
<source>%Ln second(s)</source>
<translation>%Ln segundo(s)</translation>
<source>%n year(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n month(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="321"/>
<source>%n day(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="322"/>
<source>%n hour(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="323"/>
<source>%n minute(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="324"/>
<source>%n second(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="343"/>
<location filename="../src/libsync/utility.cpp" line="348"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
+170 -170
Ver Arquivo
@@ -110,8 +110,8 @@
</message>
<message>
<location filename="../src/gui/accountsettings.ui" line="180"/>
<location filename="../src/gui/accountsettings.cpp" line="346"/>
<location filename="../src/gui/accountsettings.cpp" line="684"/>
<location filename="../src/gui/accountsettings.cpp" line="352"/>
<location filename="../src/gui/accountsettings.cpp" line="690"/>
<source>Cancel</source>
<translation>Loobu</translation>
</message>
@@ -141,148 +141,148 @@
<translation>Konto</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="215"/>
<location filename="../src/gui/accountsettings.cpp" line="221"/>
<source>Choose what to sync</source>
<translation>Vali, mida sünkroniseerida</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="223"/>
<location filename="../src/gui/accountsettings.cpp" line="229"/>
<source>Remove folder sync connection</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="288"/>
<location filename="../src/gui/accountsettings.cpp" line="294"/>
<source>Folder creation failed</source>
<translation>Kausta loomine ebaõnnestus</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="289"/>
<location filename="../src/gui/accountsettings.cpp" line="295"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="339"/>
<location filename="../src/gui/accountsettings.cpp" line="345"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="345"/>
<location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>Remove Folder Sync Connection</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="427"/>
<location filename="../src/gui/accountsettings.cpp" line="433"/>
<source>Sync Running</source>
<translation>Sünkroniseerimine on käimas</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="428"/>
<location filename="../src/gui/accountsettings.cpp" line="434"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>Sünkroniseerimine on käimas.&lt;br/&gt;Kas sa soovid seda lõpetada?</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="495"/>
<location filename="../src/gui/accountsettings.cpp" line="501"/>
<source>%1 in use</source>
<translation>%1 kasutusel</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="515"/>
<location filename="../src/gui/accountsettings.cpp" line="521"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 as &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="521"/>
<location filename="../src/gui/accountsettings.cpp" line="527"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="523"/>
<location filename="../src/gui/accountsettings.cpp" line="529"/>
<source>Connected to %1.</source>
<translation>Ühendatud %1</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="525"/>
<location filename="../src/gui/accountsettings.cpp" line="531"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>Server %1 pole ajutiselt saadaval.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="527"/>
<location filename="../src/gui/accountsettings.cpp" line="533"/>
<source>Signed out from %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="529"/>
<location filename="../src/gui/accountsettings.cpp" line="535"/>
<source>No connection to %1 at %2.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="552"/>
<location filename="../src/gui/accountsettings.cpp" line="558"/>
<source>Log in</source>
<translation>Logi sisse</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="636"/>
<location filename="../src/gui/accountsettings.cpp" line="642"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="676"/>
<location filename="../src/gui/accountsettings.cpp" line="682"/>
<source>Confirm Account Removal</source>
<translation>Kinnita konto eemaldamine</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="677"/>
<location filename="../src/gui/accountsettings.cpp" line="683"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="683"/>
<location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>Remove connection</source>
<translation>Eemalda ühendus</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="211"/>
<location filename="../src/gui/accountsettings.cpp" line="217"/>
<source>Open folder</source>
<translation>Ava kaust</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="145"/>
<location filename="../src/gui/accountsettings.cpp" line="554"/>
<location filename="../src/gui/accountsettings.cpp" line="560"/>
<source>Log out</source>
<translation>Logi välja</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="220"/>
<location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Resume sync</source>
<translation>Taasta sünroonimist</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="220"/>
<location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Pause sync</source>
<translation>Peata sünkroonimine</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="340"/>
<location filename="../src/gui/accountsettings.cpp" line="346"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="482"/>
<location filename="../src/gui/accountsettings.cpp" line="488"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="483"/>
<location filename="../src/gui/accountsettings.cpp" line="489"/>
<source>%1 of %2 in use</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="492"/>
<location filename="../src/gui/accountsettings.cpp" line="498"/>
<source>Currently there is no storage usage information available.</source>
<translation>Hetkel pole mahu kasutuse info saadaval.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="535"/>
<location filename="../src/gui/accountsettings.cpp" line="541"/>
<source>No %1 connection configured.</source>
<translation>Ühtegi %1 ühendust pole seadistatud.</translation>
</message>
@@ -579,157 +579,157 @@
<context>
<name>OCC::Folder</name>
<message>
<location filename="../src/gui/folder.cpp" line="135"/>
<location filename="../src/gui/folder.cpp" line="129"/>
<source>Local folder %1 does not exist.</source>
<translation>Kohalikku kausta %1 pole olemas.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="138"/>
<location filename="../src/gui/folder.cpp" line="132"/>
<source>%1 should be a folder but is not.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="141"/>
<location filename="../src/gui/folder.cpp" line="135"/>
<source>%1 is not readable.</source>
<translation>%1 pole loetav.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="386"/>
<location filename="../src/gui/folder.cpp" line="381"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="496"/>
<location filename="../src/gui/folder.cpp" line="491"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 on eemaldatud.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="503"/>
<location filename="../src/gui/folder.cpp" line="498"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 on alla laaditud.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="510"/>
<location filename="../src/gui/folder.cpp" line="505"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 on uuendatud.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="517"/>
<location filename="../src/gui/folder.cpp" line="512"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 on ümber nimetatud %2.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="524"/>
<location filename="../src/gui/folder.cpp" line="519"/>
<source>%1 has been moved to %2.</source>
<translation>%1 on tõstetud %2.</translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="494"/>
<location filename="../src/gui/folder.cpp" line="489"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="501"/>
<location filename="../src/gui/folder.cpp" line="496"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="508"/>
<location filename="../src/gui/folder.cpp" line="503"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="515"/>
<location filename="../src/gui/folder.cpp" line="510"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="522"/>
<location filename="../src/gui/folder.cpp" line="517"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="529"/>
<location filename="../src/gui/folder.cpp" line="524"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="531"/>
<location filename="../src/gui/folder.cpp" line="526"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="536"/>
<location filename="../src/gui/folder.cpp" line="531"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="538"/>
<location filename="../src/gui/folder.cpp" line="533"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 sünkroniseerimine ebaõnnestus tõrke tõttu. Lisainfot vaata logist.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="544"/>
<location filename="../src/gui/folder.cpp" line="539"/>
<source>Sync Activity</source>
<translation>Sünkroniseerimise tegevus</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="750"/>
<location filename="../src/gui/folder.cpp" line="747"/>
<source>Could not read system exclude file</source>
<translation>Süsteemi väljajätmiste faili lugemine ebaõnnestus</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="961"/>
<location filename="../src/gui/folder.cpp" line="958"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="979"/>
<location filename="../src/gui/folder.cpp" line="976"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the files were manually removed.
Are you sure you want to perform this operation?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="983"/>
<location filename="../src/gui/folder.cpp" line="980"/>
<source>Remove All Files?</source>
<translation>Kustutada kõik failid?</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="985"/>
<location filename="../src/gui/folder.cpp" line="982"/>
<source>Remove all files</source>
<translation>Kustutada kõik failid</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="986"/>
<location filename="../src/gui/folder.cpp" line="983"/>
<source>Keep files</source>
<translation>Säilita failid</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1004"/>
<location filename="../src/gui/folder.cpp" line="1001"/>
<source>This sync would reset the files to an erlier 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?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1009"/>
<location filename="../src/gui/folder.cpp" line="1006"/>
<source>Backup detected</source>
<translation>Leiti varukoopia</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1011"/>
<location filename="../src/gui/folder.cpp" line="1008"/>
<source>Normal Synchronisation</source>
<translation>Tavaline sünkroonimine</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1012"/>
<location filename="../src/gui/folder.cpp" line="1009"/>
<source>Keep Local Files as Conflict</source>
<translation type="unfinished"/>
</message>
@@ -996,12 +996,12 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderWizard</name>
<message>
<location filename="../src/gui/folderwizard.cpp" line="553"/>
<location filename="../src/gui/folderwizard.cpp" line="542"/>
<source>Add Folder Sync Connection</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="555"/>
<location filename="../src/gui/folderwizard.cpp" line="544"/>
<source>Add Sync Connection</source>
<translation type="unfinished"/>
</message>
@@ -1019,7 +1019,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<translation>Sisesta otsingutee kohaliku kataloogini.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="133"/>
<location filename="../src/gui/folderwizard.cpp" line="126"/>
<source>Select the source folder</source>
<translation>Vali algne kaust</translation>
</message>
@@ -1027,52 +1027,52 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderWizardRemotePath</name>
<message>
<location filename="../src/gui/folderwizard.cpp" line="191"/>
<location filename="../src/gui/folderwizard.cpp" line="176"/>
<source>Create Remote Folder</source>
<translation>Loo kaugkaust</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="192"/>
<location filename="../src/gui/folderwizard.cpp" line="177"/>
<source>Enter the name of the new folder to be created below &apos;%1&apos;:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="221"/>
<location filename="../src/gui/folderwizard.cpp" line="206"/>
<source>Folder was successfully created on %1.</source>
<translation>%1 - kaust on loodud.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="232"/>
<location filename="../src/gui/folderwizard.cpp" line="217"/>
<source>Authentication failed accessing %1</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="234"/>
<location filename="../src/gui/folderwizard.cpp" line="219"/>
<source>Failed to create the folder on %1. Please check manually.</source>
<translation>Kausta loomine ebaõnnestus - %1. Palun kontrolli käsitsi.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="241"/>
<location filename="../src/gui/folderwizard.cpp" line="226"/>
<source>Failed to list a folder. Error: %1</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="322"/>
<location filename="../src/gui/folderwizard.cpp" line="307"/>
<source>Choose this to sync the entire account</source>
<translation>Vali see sünkroniseering tervele kontole</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="451"/>
<location filename="../src/gui/folderwizard.cpp" line="436"/>
<source>This folder is already being synced.</source>
<translation>Seda kataloogi juba sünkroniseeritakse.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="453"/>
<location filename="../src/gui/folderwizard.cpp" line="438"/>
<source>You are already syncing &lt;i&gt;%1&lt;/i&gt;, which is a parent folder of &lt;i&gt;%2&lt;/i&gt;.</source>
<translation>Sa juba sünkroniseerid &lt;i&gt;%1&lt;/i&gt;, mis on &lt;i&gt;%2&lt;/i&gt; ülemkataloog.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="457"/>
<location filename="../src/gui/folderwizard.cpp" line="442"/>
<source>You are already syncing all your files. Syncing another folder is &lt;b&gt;not&lt;/b&gt; supported. If you want to sync multiple folders, please remove the currently configured root folder sync.</source>
<translation>Sa juba sünkroniseerid kõiki oma faile. Teise kataloogi sünkroniseering &lt;b&gt;ei ole&lt;/b&gt; toetatud. Kui soovid sünkroniseerida mitut kataloogi, palun eemalda hektel seadistatud sünkroniseeritav juurkataloog.</translation>
</message>
@@ -1080,7 +1080,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderWizardSelectiveSync</name>
<message>
<location filename="../src/gui/folderwizard.cpp" line="495"/>
<location filename="../src/gui/folderwizard.cpp" line="480"/>
<source>Choose What to Sync: You can optionally deselect remote subfolders you do not wish to synchronize.</source>
<translation type="unfinished"/>
</message>
@@ -1369,27 +1369,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::NSISUpdater</name>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="329"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="331"/>
<source>New Version Available</source>
<translation>Saadaval on uuem versioon</translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="335"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="337"/>
<source>&lt;p&gt;A new version of the %1 Client is available.&lt;/p&gt;&lt;p&gt;&lt;b&gt;%2&lt;/b&gt; is available for download. The installed version is %3.&lt;/p&gt;</source>
<translation>&lt;p&gt;Uus versioon %1 kliendist on saadaval.&lt;/p&gt;&lt;p&gt;&lt;b&gt;%2&lt;/b&gt; on saadaval alla laadimiseks. Paigaldatud on versioon %3.&lt;p&gt;</translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="348"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="350"/>
<source>Skip this version</source>
<translation>Jäta see versioon vahele</translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="349"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="351"/>
<source>Skip this time</source>
<translation>Jäta seekord vahele</translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="350"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="352"/>
<source>Get update</source>
<translation>Hangi uuendus</translation>
</message>
@@ -1890,7 +1890,7 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="101"/>
<location filename="../src/libsync/propagateupload.cpp" line="103"/>
<source>Connection Timeout</source>
<translation>Ühenduse aegumine</translation>
</message>
@@ -1898,7 +1898,7 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::PollJob</name>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="158"/>
<location filename="../src/libsync/propagateupload.cpp" line="160"/>
<source>Invalid JSON reply from the poll URL</source>
<translation type="unfinished"/>
</message>
@@ -1944,17 +1944,17 @@ Selle kasutamine pole soovitatav.</translation>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="694"/>
<location filename="../src/libsync/propagatedownload.cpp" line="693"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>Faili %1 ei saa salvestada kuna on nime konflikt kohaliku failiga!</translation>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="742"/>
<location filename="../src/libsync/propagatedownload.cpp" line="741"/>
<source>File has changed since discovery</source>
<translation>Faili on pärast avastamist muudetud</translation>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="792"/>
<location filename="../src/libsync/propagatedownload.cpp" line="791"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2088,48 +2088,48 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="289"/>
<location filename="../src/libsync/propagateupload.cpp" line="297"/>
<source>File Removed</source>
<translation>Fail eemaldatud</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="301"/>
<location filename="../src/libsync/propagateupload.cpp" line="309"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>Kohalik fail muutus sünkroniseeringu käigus. See taastakse.</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="313"/>
<location filename="../src/libsync/propagateupload.cpp" line="694"/>
<location filename="../src/libsync/propagateupload.cpp" line="321"/>
<location filename="../src/libsync/propagateupload.cpp" line="710"/>
<source>Local file changed during sync.</source>
<translation>Kohalik fail muutus sünkroniseeringu käigus.</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="621"/>
<location filename="../src/libsync/propagateupload.cpp" line="637"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="629"/>
<location filename="../src/libsync/propagateupload.cpp" line="645"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>Faili on lokaalselt muudetud, kuid see on osa kirjutamisõiguseta jagamisest. See on taastatud ning sinu muudatus on konfliktses failis.</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="660"/>
<location filename="../src/libsync/propagateupload.cpp" line="676"/>
<source>Poll URL missing</source>
<translation>Küsitluse URL puudub</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="683"/>
<location filename="../src/libsync/propagateupload.cpp" line="699"/>
<source>The local file was removed during sync.</source>
<translation>Kohalik fail on eemaldatud sünkroniseeringu käigus.</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="709"/>
<location filename="../src/libsync/propagateupload.cpp" line="725"/>
<source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="782"/>
<location filename="../src/libsync/propagateupload.cpp" line="800"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2172,17 +2172,17 @@ Selle kasutamine pole soovitatav.</translation>
<translation>Suurus</translation>
</message>
<message>
<location filename="../src/gui/protocolwidget.cpp" line="72"/>
<location filename="../src/gui/protocolwidget.cpp" line="78"/>
<source>Local sync protocol</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/protocolwidget.cpp" line="74"/>
<location filename="../src/gui/protocolwidget.cpp" line="80"/>
<source>Copy</source>
<translation>Kopeeri</translation>
</message>
<message>
<location filename="../src/gui/protocolwidget.cpp" line="75"/>
<location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopeeri tegevuste nimistu puhvrisse.</translation>
</message>
@@ -2469,7 +2469,7 @@ Selle kasutamine pole soovitatav.</translation>
<translation>Jaga kasutajate või gruppidega ...</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="226"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
<source>No results for &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
@@ -2502,17 +2502,17 @@ Selle kasutamine pole soovitatav.</translation>
<translation>...</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="302"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
<source>create</source>
<translation>loo</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="305"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>change</source>
<translation>muuda</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="308"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>delete</source>
<translation>kustuta</translation>
</message>
@@ -2533,17 +2533,17 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="74"/>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
<source>%1 - Authenticate</source>
<translation>%1 - autentimine</translation>
</message>
<message>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="80"/>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
<source>Reauthentication required</source>
<translation>Vajalik on uuesti autentimine</translation>
</message>
<message>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="80"/>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Sinu sessioon on aegunud. Sa pead kliendi kasutamiseks uuesti sisse logima.</translation>
</message>
@@ -2551,7 +2551,7 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Jagatud kasutajaga %1</translation>
@@ -2845,23 +2845,23 @@ Selle kasutamine pole soovitatav.</translation>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="431"/>
<location filename="../src/libsync/syncengine.cpp" line="440"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="690"/>
<location filename="../src/libsync/syncengine.cpp" line="701"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1121"/>
<location filename="../src/libsync/syncengine.cpp" line="1132"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1128"/>
<location filename="../src/libsync/syncengine.cpp" line="1139"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation type="unfinished"/>
</message>
@@ -2881,7 +2881,7 @@ Selle kasutamine pole soovitatav.</translation>
<translation>Kasutaja poolt tühistatud</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="425"/>
<location filename="../src/libsync/syncengine.cpp" line="434"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation type="unfinished"/>
</message>
@@ -2921,109 +2921,109 @@ Selle kasutamine pole soovitatav.</translation>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="254"/>
<location filename="../src/libsync/syncengine.cpp" line="263"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>Üksust ei sünkroniseeritud eelnenud vigade tõttu: %1</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="419"/>
<location filename="../src/libsync/syncengine.cpp" line="428"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Sümboolsed lingid ei ole sünkroniseerimisel toetatud.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="422"/>
<location filename="../src/libsync/syncengine.cpp" line="431"/>
<source>File is listed on the ignore list.</source>
<translation>Fail on märgitud ignoreeritavate nimistus.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="428"/>
<location filename="../src/libsync/syncengine.cpp" line="437"/>
<source>Filename is too long.</source>
<translation>Faili nimi on liiga pikk.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="437"/>
<location filename="../src/libsync/syncengine.cpp" line="446"/>
<source>Stat failed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="464"/>
<location filename="../src/libsync/syncengine.cpp" line="473"/>
<source>Filename encoding is not valid</source>
<translation>Failinime kodeering pole kehtiv</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="635"/>
<location filename="../src/libsync/syncengine.cpp" line="644"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="724"/>
<location filename="../src/libsync/syncengine.cpp" line="735"/>
<source>Unable to initialize a sync journal.</source>
<translation>Ei suuda lähtestada sünkroniseeringu zurnaali.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="743"/>
<location filename="../src/libsync/syncengine.cpp" line="754"/>
<source>Unable to read the blacklist from the local database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="776"/>
<location filename="../src/libsync/syncengine.cpp" line="787"/>
<source>Unable to read from the sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="822"/>
<location filename="../src/libsync/syncengine.cpp" line="833"/>
<source>Cannot open the sync journal</source>
<translation>Ei suuda avada sünkroniseeringu zurnaali</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="876"/>
<location filename="../src/libsync/syncengine.cpp" line="887"/>
<source>File name contains at least one invalid character</source>
<translation>Faili nimesonvähemalt üks keelatud märk</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1080"/>
<location filename="../src/libsync/syncengine.cpp" line="1087"/>
<location filename="../src/libsync/syncengine.cpp" line="1091"/>
<location filename="../src/libsync/syncengine.cpp" line="1098"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>&quot;Vali, mida sünkroniseerida&quot; musta nimekirja tõttu vahele jäetud</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1106"/>
<location filename="../src/libsync/syncengine.cpp" line="1117"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1148"/>
<location filename="../src/libsync/syncengine.cpp" line="1159"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Pole lubatud üles laadida, kuna tegemist on ainult-loetava serveriga, taastan</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1165"/>
<location filename="../src/libsync/syncengine.cpp" line="1185"/>
<location filename="../src/libsync/syncengine.cpp" line="1176"/>
<location filename="../src/libsync/syncengine.cpp" line="1196"/>
<source>Not allowed to remove, restoring</source>
<translation>Eemaldamine pole lubatud, taastan</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1198"/>
<location filename="../src/libsync/syncengine.cpp" line="1209"/>
<source>Local files and share folder removed.</source>
<translation>Kohalikud failid ja jagatud kaustad eemaldatud.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1253"/>
<location filename="../src/libsync/syncengine.cpp" line="1265"/>
<source>Move not allowed, item restored</source>
<translation>Liigutamine pole lubatud, üksus taastatud</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1262"/>
<location filename="../src/libsync/syncengine.cpp" line="1276"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Liigutamien pole võimalik kuna %1 on ainult lugemiseks</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1263"/>
<location filename="../src/libsync/syncengine.cpp" line="1277"/>
<source>the destination</source>
<translation>sihtkoht</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1263"/>
<location filename="../src/libsync/syncengine.cpp" line="1277"/>
<source>the source</source>
<translation>allikas</translation>
</message>
@@ -3489,7 +3489,7 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>QApplication</name>
<message>
<location filename="../src/gui/application.cpp" line="581"/>
<location filename="../src/gui/application.cpp" line="593"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation type="unfinished"/>
</message>
@@ -3497,37 +3497,37 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>QObject</name>
<message>
<location filename="../src/libsync/utility.cpp" line="468"/>
<location filename="../src/libsync/utility.cpp" line="473"/>
<source>in the future</source>
<translation>tulevikus</translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="464"/>
<location filename="../src/libsync/utility.cpp" line="469"/>
<source>%n day(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="472"/>
<location filename="../src/libsync/utility.cpp" line="477"/>
<source>%n hour(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="477"/>
<location filename="../src/libsync/utility.cpp" line="482"/>
<source>now</source>
<translation>kohe</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="479"/>
<location filename="../src/libsync/utility.cpp" line="484"/>
<source>Less than a minute ago</source>
<translation>Vähem kui minut tagasi</translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="482"/>
<location filename="../src/libsync/utility.cpp" line="487"/>
<source>%n minute(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="485"/>
<location filename="../src/libsync/utility.cpp" line="490"/>
<source>Some time ago</source>
<translation>Mõni aeg tagasi</translation>
</message>
@@ -3554,38 +3554,38 @@ Selle kasutamine pole soovitatav.</translation>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="314"/>
<source>%Ln year(s)</source>
<translation>%Ln aasta(t)</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="315"/>
<source>%Ln month(s)</source>
<translation>%Ln kuu(d)</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="316"/>
<source>%Ln day(s)</source>
<translation>%Ln päeva(a)</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="317"/>
<source>%Ln hour(s)</source>
<translation>%Ln tund(i)</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="318"/>
<source>%Ln minute(s)</source>
<translation>%Ln minut(it)</translation>
</message>
<message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="319"/>
<source>%Ln second(s)</source>
<translation>%Ln sekund(it)</translation>
<source>%n year(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n month(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="321"/>
<source>%n day(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="322"/>
<source>%n hour(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="323"/>
<source>%n minute(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="324"/>
<source>%n second(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="343"/>
<location filename="../src/libsync/utility.cpp" line="348"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
+170 -170
Ver Arquivo
@@ -110,8 +110,8 @@
</message>
<message>
<location filename="../src/gui/accountsettings.ui" line="180"/>
<location filename="../src/gui/accountsettings.cpp" line="346"/>
<location filename="../src/gui/accountsettings.cpp" line="684"/>
<location filename="../src/gui/accountsettings.cpp" line="352"/>
<location filename="../src/gui/accountsettings.cpp" line="690"/>
<source>Cancel</source>
<translation>Ezeztatu</translation>
</message>
@@ -141,148 +141,148 @@
<translation>Kontua</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="215"/>
<location filename="../src/gui/accountsettings.cpp" line="221"/>
<source>Choose what to sync</source>
<translation>Hautatu zer sinkronizatu</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="223"/>
<location filename="../src/gui/accountsettings.cpp" line="229"/>
<source>Remove folder sync connection</source>
<translation>Ezabatu karpeta honen konexioa</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="288"/>
<location filename="../src/gui/accountsettings.cpp" line="294"/>
<source>Folder creation failed</source>
<translation>Karpeta sortzeak huts egin du</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="289"/>
<location filename="../src/gui/accountsettings.cpp" line="295"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Ezin izan da &lt;i&gt;%1&lt;/i&gt; bertako karpeta sortu.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="339"/>
<location filename="../src/gui/accountsettings.cpp" line="345"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Baieztatu Karpetaren Konexioaren Ezabatzea</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="345"/>
<location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>Remove Folder Sync Connection</source>
<translation>Ezabatu Karpeta Honen Konexioa</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="427"/>
<location filename="../src/gui/accountsettings.cpp" line="433"/>
<source>Sync Running</source>
<translation>Sinkronizazioa martxan da</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="428"/>
<location filename="../src/gui/accountsettings.cpp" line="434"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>Sinkronizazio martxan da.&lt;br/&gt;Bukatu nahi al duzu?</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="495"/>
<location filename="../src/gui/accountsettings.cpp" line="501"/>
<source>%1 in use</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="515"/>
<location filename="../src/gui/accountsettings.cpp" line="521"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="521"/>
<location filename="../src/gui/accountsettings.cpp" line="527"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="523"/>
<location filename="../src/gui/accountsettings.cpp" line="529"/>
<source>Connected to %1.</source>
<translation>%1ra konektatuta.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="525"/>
<location filename="../src/gui/accountsettings.cpp" line="531"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>%1 zerbitzaria ez dago orain eskuragarri</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="527"/>
<location filename="../src/gui/accountsettings.cpp" line="533"/>
<source>Signed out from %1.</source>
<translation>%1etik saioa itxita.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="529"/>
<location filename="../src/gui/accountsettings.cpp" line="535"/>
<source>No connection to %1 at %2.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="552"/>
<location filename="../src/gui/accountsettings.cpp" line="558"/>
<source>Log in</source>
<translation>Hasi saioa</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="636"/>
<location filename="../src/gui/accountsettings.cpp" line="642"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Sinkronizatuko ez diren oso handiak diren karpeta berriak daude:</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="676"/>
<location filename="../src/gui/accountsettings.cpp" line="682"/>
<source>Confirm Account Removal</source>
<translation>Baieztatu Kontuaren Ezabatzea</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="677"/>
<location filename="../src/gui/accountsettings.cpp" line="683"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="683"/>
<location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>Remove connection</source>
<translation>Ezabatu konexioa</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="211"/>
<location filename="../src/gui/accountsettings.cpp" line="217"/>
<source>Open folder</source>
<translation>Ireki karpeta</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="145"/>
<location filename="../src/gui/accountsettings.cpp" line="554"/>
<location filename="../src/gui/accountsettings.cpp" line="560"/>
<source>Log out</source>
<translation>Saioa bukatu</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="220"/>
<location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Resume sync</source>
<translation>Berrekin sinkronizazioa</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="220"/>
<location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Pause sync</source>
<translation>Gelditu sinkronizazioa</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="340"/>
<location filename="../src/gui/accountsettings.cpp" line="346"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="482"/>
<location filename="../src/gui/accountsettings.cpp" line="488"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="483"/>
<location filename="../src/gui/accountsettings.cpp" line="489"/>
<source>%1 of %2 in use</source>
<translation>%2tik %1 erabilita</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="492"/>
<location filename="../src/gui/accountsettings.cpp" line="498"/>
<source>Currently there is no storage usage information available.</source>
<translation>Orain ez dago eskuragarri biltegiratze erabileraren informazioa.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="535"/>
<location filename="../src/gui/accountsettings.cpp" line="541"/>
<source>No %1 connection configured.</source>
<translation>Ez dago %1 konexiorik konfiguratuta.</translation>
</message>
@@ -579,157 +579,157 @@
<context>
<name>OCC::Folder</name>
<message>
<location filename="../src/gui/folder.cpp" line="135"/>
<location filename="../src/gui/folder.cpp" line="129"/>
<source>Local folder %1 does not exist.</source>
<translation>Bertako %1 karpeta ez da existitzen.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="138"/>
<location filename="../src/gui/folder.cpp" line="132"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 karpeta bat izan behar zen baina ez da.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="141"/>
<location filename="../src/gui/folder.cpp" line="135"/>
<source>%1 is not readable.</source>
<translation>%1 ezin da irakurri.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="386"/>
<location filename="../src/gui/folder.cpp" line="381"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="496"/>
<location filename="../src/gui/folder.cpp" line="491"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 ezabatua izan da.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="503"/>
<location filename="../src/gui/folder.cpp" line="498"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 deskargatu da.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="510"/>
<location filename="../src/gui/folder.cpp" line="505"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 kargatu da.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="517"/>
<location filename="../src/gui/folder.cpp" line="512"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 %2-(e)ra berrizendatu da.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="524"/>
<location filename="../src/gui/folder.cpp" line="519"/>
<source>%1 has been moved to %2.</source>
<translation>%1 %2-(e)ra mugitu da.</translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="494"/>
<location filename="../src/gui/folder.cpp" line="489"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="501"/>
<location filename="../src/gui/folder.cpp" line="496"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="508"/>
<location filename="../src/gui/folder.cpp" line="503"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="515"/>
<location filename="../src/gui/folder.cpp" line="510"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="522"/>
<location filename="../src/gui/folder.cpp" line="517"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="529"/>
<location filename="../src/gui/folder.cpp" line="524"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="531"/>
<location filename="../src/gui/folder.cpp" line="526"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="536"/>
<location filename="../src/gui/folder.cpp" line="531"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="538"/>
<location filename="../src/gui/folder.cpp" line="533"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 ezin izan da sinkronizatu akats bat dela eta. Ikusi egunerkoa zehaztapen gehiago izateko.</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="544"/>
<location filename="../src/gui/folder.cpp" line="539"/>
<source>Sync Activity</source>
<translation>Sinkronizazio Jarduerak</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="750"/>
<location filename="../src/gui/folder.cpp" line="747"/>
<source>Could not read system exclude file</source>
<translation>Ezin izan da sistemako baztertutakoen fitxategia irakurri</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="961"/>
<location filename="../src/gui/folder.cpp" line="958"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="979"/>
<location filename="../src/gui/folder.cpp" line="976"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the files were manually removed.
Are you sure you want to perform this operation?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="983"/>
<location filename="../src/gui/folder.cpp" line="980"/>
<source>Remove All Files?</source>
<translation>Ezabatu Fitxategi Guztiak?</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="985"/>
<location filename="../src/gui/folder.cpp" line="982"/>
<source>Remove all files</source>
<translation>Ezabatu fitxategi guztiak</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="986"/>
<location filename="../src/gui/folder.cpp" line="983"/>
<source>Keep files</source>
<translation>Mantendu fitxategiak</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1004"/>
<location filename="../src/gui/folder.cpp" line="1001"/>
<source>This sync would reset the files to an erlier 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?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1009"/>
<location filename="../src/gui/folder.cpp" line="1006"/>
<source>Backup detected</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1011"/>
<location filename="../src/gui/folder.cpp" line="1008"/>
<source>Normal Synchronisation</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="1012"/>
<location filename="../src/gui/folder.cpp" line="1009"/>
<source>Keep Local Files as Conflict</source>
<translation type="unfinished"/>
</message>
@@ -996,12 +996,12 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderWizard</name>
<message>
<location filename="../src/gui/folderwizard.cpp" line="553"/>
<location filename="../src/gui/folderwizard.cpp" line="542"/>
<source>Add Folder Sync Connection</source>
<translation>Gehitu Karpeta Sinkronizatzeko Konexioa</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="555"/>
<location filename="../src/gui/folderwizard.cpp" line="544"/>
<source>Add Sync Connection</source>
<translation>Gehitu Sinkronizazio Konexioa</translation>
</message>
@@ -1019,7 +1019,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<translation>Sartu bertako karpeta berriaren bidea:</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="133"/>
<location filename="../src/gui/folderwizard.cpp" line="126"/>
<source>Select the source folder</source>
<translation>Hautatu jatorrizko karpeta</translation>
</message>
@@ -1027,52 +1027,52 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderWizardRemotePath</name>
<message>
<location filename="../src/gui/folderwizard.cpp" line="191"/>
<location filename="../src/gui/folderwizard.cpp" line="176"/>
<source>Create Remote Folder</source>
<translation>Sortu Urruneko Karpeta</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="192"/>
<location filename="../src/gui/folderwizard.cpp" line="177"/>
<source>Enter the name of the new folder to be created below &apos;%1&apos;:</source>
<translation>Sartu behean sortuko den karpeta berriaren izena &apos;%1&apos;:</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="221"/>
<location filename="../src/gui/folderwizard.cpp" line="206"/>
<source>Folder was successfully created on %1.</source>
<translation>%1-en karpeta ongi sortu da.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="232"/>
<location filename="../src/gui/folderwizard.cpp" line="217"/>
<source>Authentication failed accessing %1</source>
<translation>Autentikazioak huts egin du %1en sartzean</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="234"/>
<location filename="../src/gui/folderwizard.cpp" line="219"/>
<source>Failed to create the folder on %1. Please check manually.</source>
<translation>Huts egin du %1-(e)an karpeta sortzen. Egiaztatu eskuz.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="241"/>
<location filename="../src/gui/folderwizard.cpp" line="226"/>
<source>Failed to list a folder. Error: %1</source>
<translation>Karpetaren zerrenda lortzeak huts egin du: Error: %1</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="322"/>
<location filename="../src/gui/folderwizard.cpp" line="307"/>
<source>Choose this to sync the entire account</source>
<translation>Hautatu hau kontu osoa sinkronizatzeko</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="451"/>
<location filename="../src/gui/folderwizard.cpp" line="436"/>
<source>This folder is already being synced.</source>
<translation>Karpeta hau dagoeneko sinkronizatzen ari da.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="453"/>
<location filename="../src/gui/folderwizard.cpp" line="438"/>
<source>You are already syncing &lt;i&gt;%1&lt;/i&gt;, which is a parent folder of &lt;i&gt;%2&lt;/i&gt;.</source>
<translation>Dagoeneko &lt;i&gt;%1&lt;/i&gt; sinkronizatzen ari zara, &lt;i&gt;%2&lt;/i&gt;-ren guraso karpeta dena.</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="457"/>
<location filename="../src/gui/folderwizard.cpp" line="442"/>
<source>You are already syncing all your files. Syncing another folder is &lt;b&gt;not&lt;/b&gt; supported. If you want to sync multiple folders, please remove the currently configured root folder sync.</source>
<translation>Dagoeneko fitxategi guztiak sinkronizatzen ari zara. &lt;b&gt;Ezin&lt;b&gt; da sinkronizatu beste karpeta bat. Hainbat karpeta batera sinkronizatu nahi baduzu ezaba ezazu orain konfiguratuta duzun sinkronizazio karpeta nagusia.</translation>
</message>
@@ -1080,7 +1080,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderWizardSelectiveSync</name>
<message>
<location filename="../src/gui/folderwizard.cpp" line="495"/>
<location filename="../src/gui/folderwizard.cpp" line="480"/>
<source>Choose What to Sync: You can optionally deselect remote subfolders you do not wish to synchronize.</source>
<translation>Hautatu zer nahi duzun sinkronizatzea: Sinkronizatu nahi ez dituzun urruneko azpikarpetak desmarkatu ditzazkezu.</translation>
</message>
@@ -1375,27 +1375,27 @@ Ezabatzeko baimena duten itemak ezabatuko dira hauek karpeta bat ezabatzea uzten
<context>
<name>OCC::NSISUpdater</name>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="329"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="331"/>
<source>New Version Available</source>
<translation>Bertsio berria eskuragarri</translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="335"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="337"/>
<source>&lt;p&gt;A new version of the %1 Client is available.&lt;/p&gt;&lt;p&gt;&lt;b&gt;%2&lt;/b&gt; is available for download. The installed version is %3.&lt;/p&gt;</source>
<translation>&lt;p&gt; %1 bezeroaren bertsio berri bat eskuragarri dago.&lt;/p&gt;&lt;p&gt;&lt;b&gt;%2&lt;/b&gt;deskargatzeko prest dago. Instalatuta dagoen bersioa %3 da.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="348"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="350"/>
<source>Skip this version</source>
<translation>Ez eguneratu bertsio hau</translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="349"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="351"/>
<source>Skip this time</source>
<translation>Utzi aldi honetan</translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="350"/>
<location filename="../src/gui/updater/ocupdater.cpp" line="352"/>
<source>Get update</source>
<translation>Eskuratu eguneraketa</translation>
</message>
@@ -1896,7 +1896,7 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="101"/>
<location filename="../src/libsync/propagateupload.cpp" line="103"/>
<source>Connection Timeout</source>
<translation>Konexioa denboraz kanpo</translation>
</message>
@@ -1904,7 +1904,7 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::PollJob</name>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="158"/>
<location filename="../src/libsync/propagateupload.cpp" line="160"/>
<source>Invalid JSON reply from the poll URL</source>
<translation type="unfinished"/>
</message>
@@ -1950,17 +1950,17 @@ Ez da gomendagarria erabltzea.</translation>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="694"/>
<location filename="../src/libsync/propagatedownload.cpp" line="693"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="742"/>
<location filename="../src/libsync/propagatedownload.cpp" line="741"/>
<source>File has changed since discovery</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="792"/>
<location filename="../src/libsync/propagatedownload.cpp" line="791"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2094,48 +2094,48 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="289"/>
<location filename="../src/libsync/propagateupload.cpp" line="297"/>
<source>File Removed</source>
<translation>Fitxategia Ezabatua</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="301"/>
<location filename="../src/libsync/propagateupload.cpp" line="309"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="313"/>
<location filename="../src/libsync/propagateupload.cpp" line="694"/>
<location filename="../src/libsync/propagateupload.cpp" line="321"/>
<location filename="../src/libsync/propagateupload.cpp" line="710"/>
<source>Local file changed during sync.</source>
<translation>Fitxategi lokala aldatu da sinkronizazioan.</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="621"/>
<location filename="../src/libsync/propagateupload.cpp" line="637"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="629"/>
<location filename="../src/libsync/propagateupload.cpp" line="645"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="660"/>
<location filename="../src/libsync/propagateupload.cpp" line="676"/>
<source>Poll URL missing</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="683"/>
<location filename="../src/libsync/propagateupload.cpp" line="699"/>
<source>The local file was removed during sync.</source>
<translation>Fitxategi lokala ezabatu da sinkronizazioan.</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="709"/>
<location filename="../src/libsync/propagateupload.cpp" line="725"/>
<source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="782"/>
<location filename="../src/libsync/propagateupload.cpp" line="800"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2178,17 +2178,17 @@ Ez da gomendagarria erabltzea.</translation>
<translation>Tamaina</translation>
</message>
<message>
<location filename="../src/gui/protocolwidget.cpp" line="72"/>
<location filename="../src/gui/protocolwidget.cpp" line="78"/>
<source>Local sync protocol</source>
<translation>Bertako sinkronizazio protokolo</translation>
</message>
<message>
<location filename="../src/gui/protocolwidget.cpp" line="74"/>
<location filename="../src/gui/protocolwidget.cpp" line="80"/>
<source>Copy</source>
<translation>Kopiatu</translation>
</message>
<message>
<location filename="../src/gui/protocolwidget.cpp" line="75"/>
<location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopiatu jarduera zerrenda arbelara.</translation>
</message>
@@ -2475,7 +2475,7 @@ Ez da gomendagarria erabltzea.</translation>
<translation>Elkarbanatu erabiltzaile edo taldearekin...</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="226"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
<source>No results for &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
@@ -2508,17 +2508,17 @@ Ez da gomendagarria erabltzea.</translation>
<translation>...</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="302"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
<source>create</source>
<translation>sortu</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="305"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>change</source>
<translation>aldatu</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="308"/>
<location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>delete</source>
<translation>ezabatu</translation>
</message>
@@ -2539,17 +2539,17 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="74"/>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
<source>%1 - Authenticate</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="80"/>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
<source>Reauthentication required</source>
<translation>Berautentikatzea beharrezkoa</translation>
</message>
<message>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="80"/>
<location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation type="unfinished"/>
</message>
@@ -2557,7 +2557,7 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation type="unfinished"/>
@@ -2849,23 +2849,23 @@ Ez da gomendagarria erabltzea.</translation>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="431"/>
<location filename="../src/libsync/syncengine.cpp" line="440"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="690"/>
<location filename="../src/libsync/syncengine.cpp" line="701"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1121"/>
<location filename="../src/libsync/syncengine.cpp" line="1132"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1128"/>
<location filename="../src/libsync/syncengine.cpp" line="1139"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation type="unfinished"/>
</message>
@@ -2885,7 +2885,7 @@ Ez da gomendagarria erabltzea.</translation>
<translation>Erabiltzaileak bertan behera utzita</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="425"/>
<location filename="../src/libsync/syncengine.cpp" line="434"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation type="unfinished"/>
</message>
@@ -2925,109 +2925,109 @@ Ez da gomendagarria erabltzea.</translation>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="254"/>
<location filename="../src/libsync/syncengine.cpp" line="263"/>
<source>The item is not synced because of previous errors: %1</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="419"/>
<location filename="../src/libsync/syncengine.cpp" line="428"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Esteka sinbolikoak ezin dira sinkronizatu.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="422"/>
<location filename="../src/libsync/syncengine.cpp" line="431"/>
<source>File is listed on the ignore list.</source>
<translation>Fitxategia baztertutakoen zerrendan dago.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="428"/>
<location filename="../src/libsync/syncengine.cpp" line="437"/>
<source>Filename is too long.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="437"/>
<location filename="../src/libsync/syncengine.cpp" line="446"/>
<source>Stat failed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="464"/>
<location filename="../src/libsync/syncengine.cpp" line="473"/>
<source>Filename encoding is not valid</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="635"/>
<location filename="../src/libsync/syncengine.cpp" line="644"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="724"/>
<location filename="../src/libsync/syncengine.cpp" line="735"/>
<source>Unable to initialize a sync journal.</source>
<translation>Ezin izan da sinkronizazio egunerokoa hasieratu.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="743"/>
<location filename="../src/libsync/syncengine.cpp" line="754"/>
<source>Unable to read the blacklist from the local database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="776"/>
<location filename="../src/libsync/syncengine.cpp" line="787"/>
<source>Unable to read from the sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="822"/>
<location filename="../src/libsync/syncengine.cpp" line="833"/>
<source>Cannot open the sync journal</source>
<translation>Ezin da sinkronizazio egunerokoa ireki</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="876"/>
<location filename="../src/libsync/syncengine.cpp" line="887"/>
<source>File name contains at least one invalid character</source>
<translation>Fitxategi izenak behintzat baliogabeko karaktere bat du</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1080"/>
<location filename="../src/libsync/syncengine.cpp" line="1087"/>
<location filename="../src/libsync/syncengine.cpp" line="1091"/>
<location filename="../src/libsync/syncengine.cpp" line="1098"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1106"/>
<location filename="../src/libsync/syncengine.cpp" line="1117"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1148"/>
<location filename="../src/libsync/syncengine.cpp" line="1159"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1165"/>
<location filename="../src/libsync/syncengine.cpp" line="1185"/>
<location filename="../src/libsync/syncengine.cpp" line="1176"/>
<location filename="../src/libsync/syncengine.cpp" line="1196"/>
<source>Not allowed to remove, restoring</source>
<translation>Ezabatzeko baimenik gabe, berrezartzen</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1198"/>
<location filename="../src/libsync/syncengine.cpp" line="1209"/>
<source>Local files and share folder removed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1253"/>
<location filename="../src/libsync/syncengine.cpp" line="1265"/>
<source>Move not allowed, item restored</source>
<translation>Mugitzea ez dago baimenduta, elementua berrezarri da</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1262"/>
<location filename="../src/libsync/syncengine.cpp" line="1276"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Mugitzea ez dago baimenduta %1 irakurtzeko bakarrik delako</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1263"/>
<location filename="../src/libsync/syncengine.cpp" line="1277"/>
<source>the destination</source>
<translation>helburua</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1263"/>
<location filename="../src/libsync/syncengine.cpp" line="1277"/>
<source>the source</source>
<translation>jatorria</translation>
</message>
@@ -3493,7 +3493,7 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>QApplication</name>
<message>
<location filename="../src/gui/application.cpp" line="581"/>
<location filename="../src/gui/application.cpp" line="593"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation type="unfinished"/>
</message>
@@ -3501,37 +3501,37 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>QObject</name>
<message>
<location filename="../src/libsync/utility.cpp" line="468"/>
<location filename="../src/libsync/utility.cpp" line="473"/>
<source>in the future</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="464"/>
<location filename="../src/libsync/utility.cpp" line="469"/>
<source>%n day(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="472"/>
<location filename="../src/libsync/utility.cpp" line="477"/>
<source>%n hour(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="477"/>
<location filename="../src/libsync/utility.cpp" line="482"/>
<source>now</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="479"/>
<location filename="../src/libsync/utility.cpp" line="484"/>
<source>Less than a minute ago</source>
<translation>Orain dela minutu bat baino gutxiago</translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="482"/>
<location filename="../src/libsync/utility.cpp" line="487"/>
<source>%n minute(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="485"/>
<location filename="../src/libsync/utility.cpp" line="490"/>
<source>Some time ago</source>
<translation type="unfinished"/>
</message>
@@ -3558,38 +3558,38 @@ Ez da gomendagarria erabltzea.</translation>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="314"/>
<source>%Ln year(s)</source>
<translation>%Ln urte</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="315"/>
<source>%Ln month(s)</source>
<translation>%Ln hilabete</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="316"/>
<source>%Ln day(s)</source>
<translation>%Ln egun</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="317"/>
<source>%Ln hour(s)</source>
<translation>%Ln ordu</translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="318"/>
<source>%Ln minute(s)</source>
<translation>%Ln minutu</translation>
</message>
<message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="319"/>
<source>%Ln second(s)</source>
<translation>%Ln segundu</translation>
<source>%n year(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n month(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="321"/>
<source>%n day(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="322"/>
<source>%n hour(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="323"/>
<source>%n minute(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/libsync/utility.cpp" line="324"/>
<source>%n second(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/libsync/utility.cpp" line="343"/>
<location filename="../src/libsync/utility.cpp" line="348"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>

Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff Mostrar Mais