mirror of
https://github.com/nextcloud/desktop.git
synced 2024-11-24 22:15:57 +03:00
Merge branch 'master' into upstream/pr/6674
This commit is contained in:
commit
f3529e3dd7
73 changed files with 15507 additions and 4062 deletions
13
.github/issue_template.md
vendored
13
.github/issue_template.md
vendored
|
@ -1,4 +1,3 @@
|
|||
# Create a bug report to help us improve
|
||||
<!---
|
||||
Please try to only report a bug if it happens with the latest version
|
||||
The latest version can be seen by checking https://download.nextcloud.com/desktop/
|
||||
|
@ -26,7 +25,7 @@ OS language:
|
|||
|
||||
Qt version used by client package (Linux only, see also Settings dialog):
|
||||
|
||||
Client package (From ownCloud or distro) (Linux only):
|
||||
Client package (From Nextcloud or distro) (Linux only):
|
||||
|
||||
Installation path of client:
|
||||
|
||||
|
@ -44,7 +43,7 @@ Database:
|
|||
|
||||
PHP version:
|
||||
|
||||
ownCloud version:
|
||||
Nextcloud version:
|
||||
|
||||
Storage backend (external storage):
|
||||
|
||||
|
@ -55,11 +54,11 @@ logs.
|
|||
|
||||
```Template for output < 10 lines```
|
||||
|
||||
1. Client logfile: Output of `owncloud --logwindow` or `owncloud --logfile log.txt`
|
||||
(On Windows using `cmd.exe`, you might need to first `cd` into the ownCloud directory)
|
||||
(See also http://doc.owncloud.org/desktop/2.2/troubleshooting.html#client-logfile )
|
||||
1. Client logfile: Output of `nextcloud --logwindow` or `nextcloud --logfile log.txt`
|
||||
(On Windows using `cmd.exe`, you might need to first `cd` into the Nextcloud directory)
|
||||
(See also https://docs.nextcloud.com/desktop/2.3/troubleshooting.html#log-files)
|
||||
|
||||
2. Web server error log:
|
||||
|
||||
3. Server logfile: ownCloud log (data/owncloud.log):
|
||||
3. Server logfile: nextcloud log (data/nextcloud.log):
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,6 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[ca]=@APPLICATION_NAME@ client de sincronització d'escriptori
|
||||
Icon[ca]=@APPLICATION_EXECUTABLE@
|
||||
Icon[ca]=@APPLICATION_ICON_NAME@
|
||||
Name[ca]=@APPLICATION_NAME@ client de sincro d'escriptori
|
||||
GenericName[ca]=Directori de sincronització
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -198,7 +198,7 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
|
||||
# Translations
|
||||
Comment[cs_CZ]=@APPLICATION_NAME@ desktopový synchronizační klient
|
||||
Icon[cs_CZ]=@APPLICATION_EXECUTABLE@
|
||||
Name[cs_CZ]=@APPLICATION_NAME@ desktopový synchronizační klient
|
||||
Comment[cs_CZ]=@APPLICATION_NAME@ synchronizační klient pro desktop
|
||||
Icon[cs_CZ]=@NAZEV_IKONY_APLIKACE@
|
||||
Name[cs_CZ]=@APPLICATION_NAME@ synchronizační klient pro desktop
|
||||
GenericName[cs_CZ]=Synchronizace složek
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,6 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[de]=@APPLICATION_NAME@ Client zur Desktop-Synchronisation
|
||||
Icon[de]=@APPLICATION_EXECUTABLE@
|
||||
Icon[de]=@APPLICATION_ICON_NAME@
|
||||
Name[de]=@APPLICATION_NAME@ Client zur Desktop-Synchronisation
|
||||
GenericName[de]=Synchronisationsordner
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,5 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[en_GB]=@APPLICATION_NAME@ desktop synchronisation client
|
||||
Icon[en_GB]=@APPLICATION_EXECUTABLE@
|
||||
Name[en_GB]=@APPLICATION_NAME@ desktop sync client
|
||||
GenericName[en_GB]=Folder Sync
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,5 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[es_CL]=@APPLICATION_NAME@ Cliente de sincronización de escritorio
|
||||
Icon[es_CL]=@APPLICATION_EXECUTABLE@
|
||||
Name[es_CL]=@APPLICATION_NAME@ Cliente de sincronización de escritorio
|
||||
GenericName[es_CL]=Sincronización de carpeta
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,5 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[es_CO]=@APPLICATION_NAME@ Cliente de sincronización de escritorio
|
||||
Icon[es_CO]=@APPLICATION_EXECUTABLE@
|
||||
Name[es_CO]=@APPLICATION_NAME@ Cliente de sincronización de escritorio
|
||||
GenericName[es_CO]=Sincronización de carpeta
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,5 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[es_CR]=@APPLICATION_NAME@ Cliente de sincronización de escritorio
|
||||
Icon[es_CR]=@APPLICATION_EXECUTABLE@
|
||||
Name[es_CR]=@APPLICATION_NAME@ Cliente de sincronización de escritorio
|
||||
GenericName[es_CR]=Sincronización de carpeta
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,5 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[es_DO]=@APPLICATION_NAME@ Cliente de sincronización de escritorio
|
||||
Icon[es_DO]=@APPLICATION_EXECUTABLE@
|
||||
Name[es_DO]=@APPLICATION_NAME@ Cliente de sincronización de escritorio
|
||||
GenericName[es_DO]=Sincronización de carpeta
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,5 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[es_EC]=@APPLICATION_NAME@ Cliente de sincronización de escritorio
|
||||
Icon[es_EC]=@APPLICATION_EXECUTABLE@
|
||||
Name[es_EC]=@APPLICATION_NAME@ Cliente de sincronización de escritorio
|
||||
GenericName[es_EC]=Sincronización de carpeta
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,5 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[es_GT]=@APPLICATION_NAME@ Cliente de sincronización de escritorio
|
||||
Icon[es_GT]=@APPLICATION_EXECUTABLE@
|
||||
Name[es_GT]=@APPLICATION_NAME@ Cliente de sincronización de escritorio
|
||||
GenericName[es_GT]=Sincronización de carpeta
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,5 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[es_MX]=@APPLICATION_NAME@ Cliente de sincronización de escritorio
|
||||
Icon[es_MX]=@APPLICATION_EXECUTABLE@
|
||||
Name[es_MX]=@APPLICATION_NAME@ Cliente de sincronización de escritorio
|
||||
GenericName[es_MX]=Sincronización de carpeta
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,5 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[es_SV]=@APPLICATION_NAME@ Cliente de sincronización de escritorio
|
||||
Icon[es_SV]=@APPLICATION_EXECUTABLE@
|
||||
Name[es_SV]=@APPLICATION_NAME@ Cliente de sincronización de escritorio
|
||||
GenericName[es_SV]=Sincronización de carpeta
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,6 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[es]=Cliente de sincronización de escritorio @APPLICATION_NAME@
|
||||
Icon[es]=@APPLICATION_EXECUTABLE@
|
||||
Icon[es]=@APPLICATION_ICON_NAME@
|
||||
Name[es]=Cliente de sincronización de escritorio @APPLICATION_NAME@
|
||||
GenericName[es]=Sincronización de carpetas
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -198,7 +198,7 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
|
||||
# Translations
|
||||
Comment[fr]=Client desktop de synchronisation @APPLICATION_NAME@
|
||||
Icon[fr]=@APPLICATION_EXECUTABLE@
|
||||
Comment[fr]=Client de synchronisation @APPLICATION_NAME@ desktop
|
||||
Icon[fr]=@APPLICATION_ICON_NAME@
|
||||
Name[fr]=Client desktop de synchronisation @APPLICATION_NAME@
|
||||
GenericName[fr]=Synchronisation du dossier
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,5 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[he]=@APPLICATION_NAME@ לקוח סנכרון לשולחן העבודה
|
||||
Icon[he]=@APPLICATION_EXECUTABLE@
|
||||
Name[he]=@APPLICATION_NAME@ לקוח סנכרון לשולחן העבודה
|
||||
GenericName[he]=סנכרון תיקיות
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,6 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[is]=@APPLICATION_NAME@ forrit til samstillingar við tölvu
|
||||
Icon[is]=@APPLICATION_EXECUTABLE@
|
||||
Icon[is]=@APPLICATION_ICON_NAME@
|
||||
Name[is]=@APPLICATION_NAME@ forrit til samstillingar við tölvu
|
||||
GenericName[is]=Samstilling á möppum
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,6 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[it]=Client di sincronizzazione desktop di @APPLICATION_NAME@
|
||||
Icon[it]=@APPLICATION_EXECUTABLE@
|
||||
Icon[it]=@APPLICATION_ICON_NAME@
|
||||
Name[it]=Client di sincronizzazione desktop di @APPLICATION_NAME@
|
||||
GenericName[it]=Sincronizzazione cartelle
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,5 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[ja_JP]=@APPLICATION_NAME@ デスクトップ同期クライアント
|
||||
Icon[ja_JP]=@APPLICATION_EXECUTABLE@
|
||||
Name[ja_JP]=@APPLICATION_NAME@ デスクトップ同期クライアント
|
||||
GenericName[ja_JP]=フォルダーを同期する
|
||||
|
|
204
.tx/nextcloud.client-desktop/lt_LT_translation
Normal file
204
.tx/nextcloud.client-desktop/lt_LT_translation
Normal file
|
@ -0,0 +1,204 @@
|
|||
[Desktop Entry]
|
||||
Categories=Utility;X-SuSE-SyncUtility;
|
||||
Type=Application
|
||||
Exec=@APPLICATION_EXECUTABLE@
|
||||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# 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
|
||||
|
||||
|
||||
# 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
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
Comment[lt_LT]=@APPLICATION_NAME@ darbalaukio sinchronizavimo kliento programa
|
||||
Icon[lt_LT]=@APPLICATION_ICON_NAME@
|
||||
Name[lt_LT]=@APPLICATION_NAME@ darbalaukio sinchronizavimo kliento programa
|
||||
GenericName[lt_LT]=Aplankų sinchronizavimas
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,6 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[lv]=@APPLICATION_NAME@ darbavirsmas sinhronizešanas klients
|
||||
Icon[lv]=@APPLICATION_EXECUTABLE@
|
||||
Icon[lv]=@APPLICATION_ICON_NAME@
|
||||
Name[lv]=@APPLICATION_NAME@ darbavirsmas sinhronizešanas klients
|
||||
GenericName[lv]=Mapju Sinhronizēšana
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,5 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[nb_NO]=@APPLICATION_NAME@ klient for synkroinisering
|
||||
Icon[nb_NO]=@APPLICATION_EXECUTABLE@
|
||||
Name[nb_NO]=@APPLICATION_NAME@ klient for synkroinisering
|
||||
GenericName[nb_NO]=Mappe synkroinisering
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,6 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[nl]=@APPLICATION_NAME@ desktopsynchronisatieclient
|
||||
Icon[nl]=@APPLICATION_EXECUTABLE@
|
||||
Icon[nl]=@APPLICATION_ICON_NAME@
|
||||
Name[nl]=@APPLICATION_NAME@ desktop sync client
|
||||
GenericName[nl]=Map synchronisatie
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,6 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[pl]=@APPLICATION_NAME@ desktopowy klient synchronizacji
|
||||
Icon[pl]=@APPLICATION_EXECUTABLE@
|
||||
Icon[pl]=@APPLICATION_ICON_NAME@
|
||||
Name[pl]=@APPLICATION_NAME@ desktopowy klient synchronizacji
|
||||
GenericName[pl]=Katalog synchronizacji
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,6 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[pt_BR]=@APPLICATION_NAME@ cliente de sincronização desktop
|
||||
Icon[pt_BR]=@APPLICATION_EXECUTABLE@
|
||||
Icon[pt_BR]=@APPLICATION_ICON_NAME@
|
||||
Name[pt_BR]=@APPLICATION_NAME@ cliente de sincronização desktop
|
||||
GenericName[pt_BR]=Sincronizar Pasta
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,5 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[pt_PT]=@APPLICATION_NAME@ - Cliente de Sincronização da Área de Trabalho
|
||||
Icon[pt_PT]=@APPLICATION_EXECUTABLE@
|
||||
Name[pt_PT]=@APPLICATION_NAME@ - Cliente de Sincronização da Área de Trabalho
|
||||
GenericName[pt_PT]=Sincronização de Pasta
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,6 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[ru]=Клиент синхронизации @APPLICATION_NAME@ для ПК
|
||||
Icon[ru]=@APPLICATION_EXECUTABLE@
|
||||
Icon[ru]=@APPLICATION_ICON_NAME@
|
||||
Name[ru]=@APPLICATION_NAME@ клиент для ПК
|
||||
GenericName[ru]=Синхронизация папок
|
||||
|
|
204
.tx/nextcloud.client-desktop/sk_translation
Normal file
204
.tx/nextcloud.client-desktop/sk_translation
Normal file
|
@ -0,0 +1,204 @@
|
|||
[Desktop Entry]
|
||||
Categories=Utility;X-SuSE-SyncUtility;
|
||||
Type=Application
|
||||
Exec=@APPLICATION_EXECUTABLE@
|
||||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# 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
|
||||
|
||||
|
||||
# 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
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
Comment[sk_SK]=@APPLICATION_NAME@ Synchronizačný klient pre PC
|
||||
Icon[sk_SK]=@APPLICATION_ICON_NAME@
|
||||
Name[sk_SK]=@APPLICATION_NAME@ Synchronizačný klient pre PC
|
||||
GenericName[sk_SK]=Synchnonizácia priečinka
|
204
.tx/nextcloud.client-desktop/sl_translation
Normal file
204
.tx/nextcloud.client-desktop/sl_translation
Normal file
|
@ -0,0 +1,204 @@
|
|||
[Desktop Entry]
|
||||
Categories=Utility;X-SuSE-SyncUtility;
|
||||
Type=Application
|
||||
Exec=@APPLICATION_EXECUTABLE@
|
||||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# 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
|
||||
|
||||
|
||||
# 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
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
Comment[sl]=@APPLICATION_NAME@ odjemalec za usklajevanje
|
||||
Icon[sl]=@APPLICATION_ICON_NAME@
|
||||
Name[sl]=@APPLICATION_NAME@ odjemalec za usklajevanje
|
||||
GenericName[sl]=Usklajevanje map
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,6 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[sr]=@APPLICATION_NAME@ десктоп клијент за синхронизацију
|
||||
Icon[sr]=@APPLICATION_EXECUTABLE@
|
||||
Icon[sr]=@APPLICATION_ICON_NAME@
|
||||
Name[sr]=@APPLICATION_NAME@ десктоп клијент за синхронизацију
|
||||
GenericName[sr]=Синхронизација фасцикли
|
||||
|
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,6 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[tr]=@APPLICATION_NAME@ masaüstü eşitleme istemcisi
|
||||
Icon[tr]=@APPLICATION_EXECUTABLE@
|
||||
Icon[tr]=@APPLICATION_ICON_NAME@
|
||||
Name[tr]=@APPLICATION_NAME@ masaüstü eşiteme istemcisi
|
||||
GenericName[tr]=Klasör Eşitleme
|
||||
|
|
204
.tx/nextcloud.client-desktop/zh_CN_translation
Normal file
204
.tx/nextcloud.client-desktop/zh_CN_translation
Normal file
|
@ -0,0 +1,204 @@
|
|||
[Desktop Entry]
|
||||
Categories=Utility;X-SuSE-SyncUtility;
|
||||
Type=Application
|
||||
Exec=@APPLICATION_EXECUTABLE@
|
||||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# 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
|
||||
|
||||
|
||||
# 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
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
Comment[zh_CN]=@APPLICATION_NAME@ 桌面同步客户端
|
||||
Icon[zh_CN]=@APPLICATION_ICON_NAME@
|
||||
Name[zh_CN]=@APPLICATION_NAME@ 桌面同步客户端
|
||||
GenericName[zh_CN]=文件夹同步
|
|
@ -5,7 +5,7 @@ Exec=@APPLICATION_EXECUTABLE@
|
|||
Name=@APPLICATION_NAME@ desktop sync client
|
||||
Comment=@APPLICATION_NAME@ desktop synchronization client
|
||||
GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Icon=@APPLICATION_ICON_NAME@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
@ -199,6 +199,5 @@ X-GNOME-Autostart-Delay=3
|
|||
|
||||
# Translations
|
||||
Comment[zh_TW]=@APPLICATION_NAME@ 桌面同步客戶端
|
||||
Icon[zh_TW]=@APPLICATION_EXECUTABLE@
|
||||
Name[zh_TW]=@APPLICATION_NAME@ 桌面同步客戶端
|
||||
GenericName[zh_TW]=資料夾同步
|
||||
|
|
|
@ -32,7 +32,7 @@ you want to install system wide you could use `/usr/local` or `/opt/nextcloud/`.
|
|||
##### Linux
|
||||
|
||||
```
|
||||
$ cmake "-GVisual Studio 15 2017 Win64" .. -DCMAKE_INSTALL_PREFIX=path-to-install-folder/ -DCMAKE_BUILD_TYPE=Debug -DNO_SHIBBOLETH=1 -DQTKEYCHAIN_LIBRARY=/path-to-qt5keychain-folder/lib64/libqt5keychain.so -DQTKEYCHAIN_INCLUDE_DIR=/path-to-qt5keychain-folder/include/qt5keychain/ -DOPENSSL_ROOT_DIR=/path-to-openssl-folder/ -DOPENSSL_INCLUDE_DIR=path-to-openssl-folder/include -DOPENSSL_LIBRARIES=path-to-openssl-folder/lib
|
||||
$ cmake .. -DCMAKE_INSTALL_PREFIX=path-to-install-folder/ -DCMAKE_BUILD_TYPE=Debug -DNO_SHIBBOLETH=1 -DQTKEYCHAIN_LIBRARY=/path-to-qt5keychain-folder/lib64/libqt5keychain.so -DQTKEYCHAIN_INCLUDE_DIR=/path-to-qt5keychain-folder/include/qt5keychain/ -DOPENSSL_ROOT_DIR=/path-to-openssl-folder/ -DOPENSSL_INCLUDE_DIR=path-to-openssl-folder/include -DOPENSSL_LIBRARIES=path-to-openssl-folder/lib
|
||||
$ make install
|
||||
```
|
||||
|
||||
|
|
|
@ -24,7 +24,9 @@ The other options are:
|
|||
``--logflush``
|
||||
Clears (flushes) the log file after each write action.
|
||||
|
||||
``--logdebug``
|
||||
Also output debug-level messages in the log (equivalent to setting the env var QT_LOGGING_RULES="qt.*=true;*.debug=true").
|
||||
)
|
||||
|
||||
``--confdir`` `<dirname>`
|
||||
Uses the specified configuration directory.
|
||||
|
||||
|
||||
|
|
2
src/3rdparty/qtmacgoodies
vendored
2
src/3rdparty/qtmacgoodies
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 4ffbff5d5fca7332f6390ddc2fe74cd29e8675f8
|
||||
Subproject commit ebc7ec6f681c0ae52c9443dbf63c4d1224bf3aec
|
8853
src/3rdparty/sqlite3/sqlite3.c
vendored
8853
src/3rdparty/sqlite3/sqlite3.c
vendored
File diff suppressed because it is too large
Load diff
275
src/3rdparty/sqlite3/sqlite3.h
vendored
275
src/3rdparty/sqlite3/sqlite3.h
vendored
|
@ -123,9 +123,9 @@ extern "C" {
|
|||
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
||||
** [sqlite_version()] and [sqlite_source_id()].
|
||||
*/
|
||||
#define SQLITE_VERSION "3.23.1"
|
||||
#define SQLITE_VERSION_NUMBER 3023001
|
||||
#define SQLITE_SOURCE_ID "2018-04-10 17:39:29 4bb2294022060e61de7da5c227a69ccd846ba330e31626ebcd59a94efd148b3b"
|
||||
#define SQLITE_VERSION "3.24.0"
|
||||
#define SQLITE_VERSION_NUMBER 3024000
|
||||
#define SQLITE_SOURCE_ID "2018-06-04 19:24:41 c7ee0833225bfd8c5ec2f9bf62b97c4e04d03bd9566366d5221ac8fb199a87ca"
|
||||
|
||||
/*
|
||||
** CAPI3REF: Run-Time Library Version Numbers
|
||||
|
@ -504,6 +504,7 @@ SQLITE_API int sqlite3_exec(
|
|||
#define SQLITE_IOERR_COMMIT_ATOMIC (SQLITE_IOERR | (30<<8))
|
||||
#define SQLITE_IOERR_ROLLBACK_ATOMIC (SQLITE_IOERR | (31<<8))
|
||||
#define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8))
|
||||
#define SQLITE_LOCKED_VTAB (SQLITE_LOCKED | (2<<8))
|
||||
#define SQLITE_BUSY_RECOVERY (SQLITE_BUSY | (1<<8))
|
||||
#define SQLITE_BUSY_SNAPSHOT (SQLITE_BUSY | (2<<8))
|
||||
#define SQLITE_CANTOPEN_NOTEMPDIR (SQLITE_CANTOPEN | (1<<8))
|
||||
|
@ -511,6 +512,7 @@ SQLITE_API int sqlite3_exec(
|
|||
#define SQLITE_CANTOPEN_FULLPATH (SQLITE_CANTOPEN | (3<<8))
|
||||
#define SQLITE_CANTOPEN_CONVPATH (SQLITE_CANTOPEN | (4<<8))
|
||||
#define SQLITE_CORRUPT_VTAB (SQLITE_CORRUPT | (1<<8))
|
||||
#define SQLITE_CORRUPT_SEQUENCE (SQLITE_CORRUPT | (2<<8))
|
||||
#define SQLITE_READONLY_RECOVERY (SQLITE_READONLY | (1<<8))
|
||||
#define SQLITE_READONLY_CANTLOCK (SQLITE_READONLY | (2<<8))
|
||||
#define SQLITE_READONLY_ROLLBACK (SQLITE_READONLY | (3<<8))
|
||||
|
@ -1930,6 +1932,22 @@ struct sqlite3_mem_methods {
|
|||
** I/O required to support statement rollback.
|
||||
** The default value for this setting is controlled by the
|
||||
** [SQLITE_STMTJRNL_SPILL] compile-time option.
|
||||
**
|
||||
** [[SQLITE_CONFIG_SORTERREF_SIZE]]
|
||||
** <dt>SQLITE_CONFIG_SORTERREF_SIZE
|
||||
** <dd>The SQLITE_CONFIG_SORTERREF_SIZE option accepts a single parameter
|
||||
** of type (int) - the new value of the sorter-reference size threshold.
|
||||
** Usually, when SQLite uses an external sort to order records according
|
||||
** to an ORDER BY clause, all fields required by the caller are present in the
|
||||
** sorted records. However, if SQLite determines based on the declared type
|
||||
** of a table column that its values are likely to be very large - larger
|
||||
** than the configured sorter-reference size threshold - then a reference
|
||||
** is stored in each sorted record and the required column values loaded
|
||||
** from the database as records are returned in sorted order. The default
|
||||
** value for this option is to never use this optimization. Specifying a
|
||||
** negative value for this option restores the default behaviour.
|
||||
** This option is only available if SQLite is compiled with the
|
||||
** [SQLITE_ENABLE_SORTER_REFERENCES] compile-time option.
|
||||
** </dl>
|
||||
*/
|
||||
#define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */
|
||||
|
@ -1959,6 +1977,7 @@ struct sqlite3_mem_methods {
|
|||
#define SQLITE_CONFIG_PMASZ 25 /* unsigned int szPma */
|
||||
#define SQLITE_CONFIG_STMTJRNL_SPILL 26 /* int nByte */
|
||||
#define SQLITE_CONFIG_SMALL_MALLOC 27 /* boolean */
|
||||
#define SQLITE_CONFIG_SORTERREF_SIZE 28 /* int nByte */
|
||||
|
||||
/*
|
||||
** CAPI3REF: Database Connection Configuration Options
|
||||
|
@ -2095,6 +2114,21 @@ struct sqlite3_mem_methods {
|
|||
** 0 or 1 to indicate whether output-for-triggers has been disabled - 0 if
|
||||
** it is not disabled, 1 if it is.
|
||||
** </dd>
|
||||
**
|
||||
** <dt>SQLITE_DBCONFIG_RESET_DATABASE</dt>
|
||||
** <dd> Set the SQLITE_DBCONFIG_RESET_DATABASE flag and then run
|
||||
** [VACUUM] in order to reset a database back to an empty database
|
||||
** with no schema and no content. The following process works even for
|
||||
** a badly corrupted database file:
|
||||
** <ol>
|
||||
** <li> sqlite3_db_config(db, SQLITE_DBCONFIG_RESET_DATABASE, 1, 0);
|
||||
** <li> [sqlite3_exec](db, "[VACUUM]", 0, 0, 0);
|
||||
** <li> sqlite3_db_config(db, SQLITE_DBCONFIG_RESET_DATABASE, 0, 0);
|
||||
** </ol>
|
||||
** Because resetting a database is destructive and irreversible, the
|
||||
** process requires the use of this obscure API and multiple steps to help
|
||||
** ensure that it does not happen by accident.
|
||||
** </dd>
|
||||
** </dl>
|
||||
*/
|
||||
#define SQLITE_DBCONFIG_MAINDBNAME 1000 /* const char* */
|
||||
|
@ -2106,7 +2140,8 @@ struct sqlite3_mem_methods {
|
|||
#define SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE 1006 /* int int* */
|
||||
#define SQLITE_DBCONFIG_ENABLE_QPSG 1007 /* int int* */
|
||||
#define SQLITE_DBCONFIG_TRIGGER_EQP 1008 /* int int* */
|
||||
#define SQLITE_DBCONFIG_MAX 1008 /* Largest DBCONFIG */
|
||||
#define SQLITE_DBCONFIG_RESET_DATABASE 1009 /* int int* */
|
||||
#define SQLITE_DBCONFIG_MAX 1009 /* Largest DBCONFIG */
|
||||
|
||||
/*
|
||||
** CAPI3REF: Enable Or Disable Extended Result Codes
|
||||
|
@ -5492,6 +5527,41 @@ SQLITE_API SQLITE_EXTERN char *sqlite3_temp_directory;
|
|||
*/
|
||||
SQLITE_API SQLITE_EXTERN char *sqlite3_data_directory;
|
||||
|
||||
/*
|
||||
** CAPI3REF: Win32 Specific Interface
|
||||
**
|
||||
** These interfaces are available only on Windows. The
|
||||
** [sqlite3_win32_set_directory] interface is used to set the value associated
|
||||
** with the [sqlite3_temp_directory] or [sqlite3_data_directory] variable, to
|
||||
** zValue, depending on the value of the type parameter. The zValue parameter
|
||||
** should be NULL to cause the previous value to be freed via [sqlite3_free];
|
||||
** a non-NULL value will be copied into memory obtained from [sqlite3_malloc]
|
||||
** prior to being used. The [sqlite3_win32_set_directory] interface returns
|
||||
** [SQLITE_OK] to indicate success, [SQLITE_ERROR] if the type is unsupported,
|
||||
** or [SQLITE_NOMEM] if memory could not be allocated. The value of the
|
||||
** [sqlite3_data_directory] variable is intended to act as a replacement for
|
||||
** the current directory on the sub-platforms of Win32 where that concept is
|
||||
** not present, e.g. WinRT and UWP. The [sqlite3_win32_set_directory8] and
|
||||
** [sqlite3_win32_set_directory16] interfaces behave exactly the same as the
|
||||
** sqlite3_win32_set_directory interface except the string parameter must be
|
||||
** UTF-8 or UTF-16, respectively.
|
||||
*/
|
||||
SQLITE_API int sqlite3_win32_set_directory(
|
||||
unsigned long type, /* Identifier for directory being set or reset */
|
||||
void *zValue /* New value for directory being set or reset */
|
||||
);
|
||||
SQLITE_API int sqlite3_win32_set_directory8(unsigned long type, const char *zValue);
|
||||
SQLITE_API int sqlite3_win32_set_directory16(unsigned long type, const void *zValue);
|
||||
|
||||
/*
|
||||
** CAPI3REF: Win32 Directory Types
|
||||
**
|
||||
** These macros are only available on Windows. They define the allowed values
|
||||
** for the type argument to the [sqlite3_win32_set_directory] interface.
|
||||
*/
|
||||
#define SQLITE_WIN32_DATA_DIRECTORY_TYPE 1
|
||||
#define SQLITE_WIN32_TEMP_DIRECTORY_TYPE 2
|
||||
|
||||
/*
|
||||
** CAPI3REF: Test For Auto-Commit Mode
|
||||
** KEYWORDS: {autocommit mode}
|
||||
|
@ -6224,6 +6294,10 @@ struct sqlite3_index_info {
|
|||
|
||||
/*
|
||||
** CAPI3REF: Virtual Table Scan Flags
|
||||
**
|
||||
** Virtual table implementations are allowed to set the
|
||||
** [sqlite3_index_info].idxFlags field to some combination of
|
||||
** these bits.
|
||||
*/
|
||||
#define SQLITE_INDEX_SCAN_UNIQUE 1 /* Scan visits at most 1 row */
|
||||
|
||||
|
@ -6999,7 +7073,7 @@ SQLITE_API int sqlite3_test_control(int op, ...);
|
|||
#define SQLITE_TESTCTRL_ALWAYS 13
|
||||
#define SQLITE_TESTCTRL_RESERVE 14
|
||||
#define SQLITE_TESTCTRL_OPTIMIZATIONS 15
|
||||
#define SQLITE_TESTCTRL_ISKEYWORD 16
|
||||
#define SQLITE_TESTCTRL_ISKEYWORD 16 /* NOT USED */
|
||||
#define SQLITE_TESTCTRL_SCRATCHMALLOC 17 /* NOT USED */
|
||||
#define SQLITE_TESTCTRL_LOCALTIME_FAULT 18
|
||||
#define SQLITE_TESTCTRL_EXPLAIN_STMT 19 /* NOT USED */
|
||||
|
@ -7013,6 +7087,189 @@ SQLITE_API int sqlite3_test_control(int op, ...);
|
|||
#define SQLITE_TESTCTRL_PARSER_COVERAGE 26
|
||||
#define SQLITE_TESTCTRL_LAST 26 /* Largest TESTCTRL */
|
||||
|
||||
/*
|
||||
** CAPI3REF: SQL Keyword Checking
|
||||
**
|
||||
** These routines provide access to the set of SQL language keywords
|
||||
** recognized by SQLite. Applications can uses these routines to determine
|
||||
** whether or not a specific identifier needs to be escaped (for example,
|
||||
** by enclosing in double-quotes) so as not to confuse the parser.
|
||||
**
|
||||
** The sqlite3_keyword_count() interface returns the number of distinct
|
||||
** keywords understood by SQLite.
|
||||
**
|
||||
** The sqlite3_keyword_name(N,Z,L) interface finds the N-th keyword and
|
||||
** makes *Z point to that keyword expressed as UTF8 and writes the number
|
||||
** of bytes in the keyword into *L. The string that *Z points to is not
|
||||
** zero-terminated. The sqlite3_keyword_name(N,Z,L) routine returns
|
||||
** SQLITE_OK if N is within bounds and SQLITE_ERROR if not. If either Z
|
||||
** or L are NULL or invalid pointers then calls to
|
||||
** sqlite3_keyword_name(N,Z,L) result in undefined behavior.
|
||||
**
|
||||
** The sqlite3_keyword_check(Z,L) interface checks to see whether or not
|
||||
** the L-byte UTF8 identifier that Z points to is a keyword, returning non-zero
|
||||
** if it is and zero if not.
|
||||
**
|
||||
** The parser used by SQLite is forgiving. It is often possible to use
|
||||
** a keyword as an identifier as long as such use does not result in a
|
||||
** parsing ambiguity. For example, the statement
|
||||
** "CREATE TABLE BEGIN(REPLACE,PRAGMA,END);" is accepted by SQLite, and
|
||||
** creates a new table named "BEGIN" with three columns named
|
||||
** "REPLACE", "PRAGMA", and "END". Nevertheless, best practice is to avoid
|
||||
** using keywords as identifiers. Common techniques used to avoid keyword
|
||||
** name collisions include:
|
||||
** <ul>
|
||||
** <li> Put all identifier names inside double-quotes. This is the official
|
||||
** SQL way to escape identifier names.
|
||||
** <li> Put identifier names inside [...]. This is not standard SQL,
|
||||
** but it is what SQL Server does and so lots of programmers use this
|
||||
** technique.
|
||||
** <li> Begin every identifier with the letter "Z" as no SQL keywords start
|
||||
** with "Z".
|
||||
** <li> Include a digit somewhere in every identifier name.
|
||||
** </ul>
|
||||
**
|
||||
** Note that the number of keywords understood by SQLite can depend on
|
||||
** compile-time options. For example, "VACUUM" is not a keyword if
|
||||
** SQLite is compiled with the [-DSQLITE_OMIT_VACUUM] option. Also,
|
||||
** new keywords may be added to future releases of SQLite.
|
||||
*/
|
||||
SQLITE_API int sqlite3_keyword_count(void);
|
||||
SQLITE_API int sqlite3_keyword_name(int,const char**,int*);
|
||||
SQLITE_API int sqlite3_keyword_check(const char*,int);
|
||||
|
||||
/*
|
||||
** CAPI3REF: Dynamic String Object
|
||||
** KEYWORDS: {dynamic string}
|
||||
**
|
||||
** An instance of the sqlite3_str object contains a dynamically-sized
|
||||
** string under construction.
|
||||
**
|
||||
** The lifecycle of an sqlite3_str object is as follows:
|
||||
** <ol>
|
||||
** <li> ^The sqlite3_str object is created using [sqlite3_str_new()].
|
||||
** <li> ^Text is appended to the sqlite3_str object using various
|
||||
** methods, such as [sqlite3_str_appendf()].
|
||||
** <li> ^The sqlite3_str object is destroyed and the string it created
|
||||
** is returned using the [sqlite3_str_finish()] interface.
|
||||
** </ol>
|
||||
*/
|
||||
typedef struct sqlite3_str sqlite3_str;
|
||||
|
||||
/*
|
||||
** CAPI3REF: Create A New Dynamic String Object
|
||||
** CONSTRUCTOR: sqlite3_str
|
||||
**
|
||||
** ^The [sqlite3_str_new(D)] interface allocates and initializes
|
||||
** a new [sqlite3_str] object. To avoid memory leaks, the object returned by
|
||||
** [sqlite3_str_new()] must be freed by a subsequent call to
|
||||
** [sqlite3_str_finish(X)].
|
||||
**
|
||||
** ^The [sqlite3_str_new(D)] interface always returns a pointer to a
|
||||
** valid [sqlite3_str] object, though in the event of an out-of-memory
|
||||
** error the returned object might be a special singleton that will
|
||||
** silently reject new text, always return SQLITE_NOMEM from
|
||||
** [sqlite3_str_errcode()], always return 0 for
|
||||
** [sqlite3_str_length()], and always return NULL from
|
||||
** [sqlite3_str_finish(X)]. It is always safe to use the value
|
||||
** returned by [sqlite3_str_new(D)] as the sqlite3_str parameter
|
||||
** to any of the other [sqlite3_str] methods.
|
||||
**
|
||||
** The D parameter to [sqlite3_str_new(D)] may be NULL. If the
|
||||
** D parameter in [sqlite3_str_new(D)] is not NULL, then the maximum
|
||||
** length of the string contained in the [sqlite3_str] object will be
|
||||
** the value set for [sqlite3_limit](D,[SQLITE_LIMIT_LENGTH]) instead
|
||||
** of [SQLITE_MAX_LENGTH].
|
||||
*/
|
||||
SQLITE_API sqlite3_str *sqlite3_str_new(sqlite3*);
|
||||
|
||||
/*
|
||||
** CAPI3REF: Finalize A Dynamic String
|
||||
** DESTRUCTOR: sqlite3_str
|
||||
**
|
||||
** ^The [sqlite3_str_finish(X)] interface destroys the sqlite3_str object X
|
||||
** and returns a pointer to a memory buffer obtained from [sqlite3_malloc64()]
|
||||
** that contains the constructed string. The calling application should
|
||||
** pass the returned value to [sqlite3_free()] to avoid a memory leak.
|
||||
** ^The [sqlite3_str_finish(X)] interface may return a NULL pointer if any
|
||||
** errors were encountered during construction of the string. ^The
|
||||
** [sqlite3_str_finish(X)] interface will also return a NULL pointer if the
|
||||
** string in [sqlite3_str] object X is zero bytes long.
|
||||
*/
|
||||
SQLITE_API char *sqlite3_str_finish(sqlite3_str*);
|
||||
|
||||
/*
|
||||
** CAPI3REF: Add Content To A Dynamic String
|
||||
** METHOD: sqlite3_str
|
||||
**
|
||||
** These interfaces add content to an sqlite3_str object previously obtained
|
||||
** from [sqlite3_str_new()].
|
||||
**
|
||||
** ^The [sqlite3_str_appendf(X,F,...)] and
|
||||
** [sqlite3_str_vappendf(X,F,V)] interfaces uses the [built-in printf]
|
||||
** functionality of SQLite to append formatted text onto the end of
|
||||
** [sqlite3_str] object X.
|
||||
**
|
||||
** ^The [sqlite3_str_append(X,S,N)] method appends exactly N bytes from string S
|
||||
** onto the end of the [sqlite3_str] object X. N must be non-negative.
|
||||
** S must contain at least N non-zero bytes of content. To append a
|
||||
** zero-terminated string in its entirety, use the [sqlite3_str_appendall()]
|
||||
** method instead.
|
||||
**
|
||||
** ^The [sqlite3_str_appendall(X,S)] method appends the complete content of
|
||||
** zero-terminated string S onto the end of [sqlite3_str] object X.
|
||||
**
|
||||
** ^The [sqlite3_str_appendchar(X,N,C)] method appends N copies of the
|
||||
** single-byte character C onto the end of [sqlite3_str] object X.
|
||||
** ^This method can be used, for example, to add whitespace indentation.
|
||||
**
|
||||
** ^The [sqlite3_str_reset(X)] method resets the string under construction
|
||||
** inside [sqlite3_str] object X back to zero bytes in length.
|
||||
**
|
||||
** These methods do not return a result code. ^If an error occurs, that fact
|
||||
** is recorded in the [sqlite3_str] object and can be recovered by a
|
||||
** subsequent call to [sqlite3_str_errcode(X)].
|
||||
*/
|
||||
SQLITE_API void sqlite3_str_appendf(sqlite3_str*, const char *zFormat, ...);
|
||||
SQLITE_API void sqlite3_str_vappendf(sqlite3_str*, const char *zFormat, va_list);
|
||||
SQLITE_API void sqlite3_str_append(sqlite3_str*, const char *zIn, int N);
|
||||
SQLITE_API void sqlite3_str_appendall(sqlite3_str*, const char *zIn);
|
||||
SQLITE_API void sqlite3_str_appendchar(sqlite3_str*, int N, char C);
|
||||
SQLITE_API void sqlite3_str_reset(sqlite3_str*);
|
||||
|
||||
/*
|
||||
** CAPI3REF: Status Of A Dynamic String
|
||||
** METHOD: sqlite3_str
|
||||
**
|
||||
** These interfaces return the current status of an [sqlite3_str] object.
|
||||
**
|
||||
** ^If any prior errors have occurred while constructing the dynamic string
|
||||
** in sqlite3_str X, then the [sqlite3_str_errcode(X)] method will return
|
||||
** an appropriate error code. ^The [sqlite3_str_errcode(X)] method returns
|
||||
** [SQLITE_NOMEM] following any out-of-memory error, or
|
||||
** [SQLITE_TOOBIG] if the size of the dynamic string exceeds
|
||||
** [SQLITE_MAX_LENGTH], or [SQLITE_OK] if there have been no errors.
|
||||
**
|
||||
** ^The [sqlite3_str_length(X)] method returns the current length, in bytes,
|
||||
** of the dynamic string under construction in [sqlite3_str] object X.
|
||||
** ^The length returned by [sqlite3_str_length(X)] does not include the
|
||||
** zero-termination byte.
|
||||
**
|
||||
** ^The [sqlite3_str_value(X)] method returns a pointer to the current
|
||||
** content of the dynamic string under construction in X. The value
|
||||
** returned by [sqlite3_str_value(X)] is managed by the sqlite3_str object X
|
||||
** and might be freed or altered by any subsequent method on the same
|
||||
** [sqlite3_str] object. Applications must not used the pointer returned
|
||||
** [sqlite3_str_value(X)] after any subsequent method call on the same
|
||||
** object. ^Applications may change the content of the string returned
|
||||
** by [sqlite3_str_value(X)] as long as they do not write into any bytes
|
||||
** outside the range of 0 to [sqlite3_str_length(X)] and do not read or
|
||||
** write any byte after any subsequent sqlite3_str method call.
|
||||
*/
|
||||
SQLITE_API int sqlite3_str_errcode(sqlite3_str*);
|
||||
SQLITE_API int sqlite3_str_length(sqlite3_str*);
|
||||
SQLITE_API char *sqlite3_str_value(sqlite3_str*);
|
||||
|
||||
/*
|
||||
** CAPI3REF: SQLite Runtime Status
|
||||
**
|
||||
|
@ -8282,11 +8539,11 @@ SQLITE_API int sqlite3_vtab_on_conflict(sqlite3 *);
|
|||
** method of a [virtual table], then it returns true if and only if the
|
||||
** column is being fetched as part of an UPDATE operation during which the
|
||||
** column value will not change. Applications might use this to substitute
|
||||
** a lighter-weight value to return that the corresponding [xUpdate] method
|
||||
** understands as a "no-change" value.
|
||||
** a return value that is less expensive to compute and that the corresponding
|
||||
** [xUpdate] method understands as a "no-change" value.
|
||||
**
|
||||
** If the [xColumn] method calls sqlite3_vtab_nochange() and finds that
|
||||
** the column is not changed by the UPDATE statement, they the xColumn
|
||||
** the column is not changed by the UPDATE statement, then the xColumn
|
||||
** method can optionally return without setting a result, without calling
|
||||
** any of the [sqlite3_result_int|sqlite3_result_xxxxx() interfaces].
|
||||
** In that case, [sqlite3_value_nochange(X)] will return true for the
|
||||
|
@ -8781,7 +9038,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_recover(sqlite3 *db, const c
|
|||
** been a prior call to [sqlite3_deserialize(D,S,...)] with the same
|
||||
** values of D and S.
|
||||
** The size of the database is written into *P even if the
|
||||
** SQLITE_SERIALIZE_NOCOPY bit is set but no contigious copy
|
||||
** SQLITE_SERIALIZE_NOCOPY bit is set but no contiguous copy
|
||||
** of the database exists.
|
||||
**
|
||||
** A call to sqlite3_serialize(D,S,P,F) might return NULL even if the
|
||||
|
|
|
@ -602,7 +602,7 @@ void SyncJournalDb::close()
|
|||
commitTransaction();
|
||||
|
||||
_db.close();
|
||||
_avoidReadFromDbOnNextSyncFilter.clear();
|
||||
clearEtagStorageFilter();
|
||||
_metadataTableIsEmpty = false;
|
||||
}
|
||||
|
||||
|
@ -824,10 +824,10 @@ bool SyncJournalDb::setFileRecord(const SyncJournalFileRecord &_record)
|
|||
SyncJournalFileRecord record = _record;
|
||||
QMutexLocker locker(&_mutex);
|
||||
|
||||
if (!_avoidReadFromDbOnNextSyncFilter.isEmpty()) {
|
||||
if (!_etagStorageFilter.isEmpty()) {
|
||||
// If we are a directory that should not be read from db next time, don't write the etag
|
||||
QByteArray prefix = record._path + "/";
|
||||
foreach (const QByteArray &it, _avoidReadFromDbOnNextSyncFilter) {
|
||||
foreach (const QByteArray &it, _etagStorageFilter) {
|
||||
if (it.startsWith(prefix)) {
|
||||
qCInfo(lcDb) << "Filtered writing the etag of" << prefix << "because it is a prefix of" << it;
|
||||
record._etag = "_invalid_";
|
||||
|
@ -1816,7 +1816,12 @@ void SyncJournalDb::avoidReadFromDbOnNextSync(const QByteArray &fileName)
|
|||
// Prevent future overwrite of the etags of this folder and all
|
||||
// parent folders for this sync
|
||||
argument.append('/');
|
||||
_avoidReadFromDbOnNextSyncFilter.append(argument);
|
||||
_etagStorageFilter.append(argument);
|
||||
}
|
||||
|
||||
void SyncJournalDb::clearEtagStorageFilter()
|
||||
{
|
||||
_etagStorageFilter.clear();
|
||||
}
|
||||
|
||||
void SyncJournalDb::forceRemoteDiscoveryNextSync()
|
||||
|
|
|
@ -178,10 +178,18 @@ public:
|
|||
* Since folders in the selective sync list will not be rediscovered (csync_ftw,
|
||||
* _csync_detect_update skip them), the _invalid_ marker will stay. And any
|
||||
* child items in the db will be ignored when reading a remote tree from the database.
|
||||
*
|
||||
* Any setFileRecord() call to affected directories before the next sync run will be
|
||||
* adjusted to retain the invalid etag via _etagStorageFilter.
|
||||
*/
|
||||
void avoidReadFromDbOnNextSync(const QString &fileName) { avoidReadFromDbOnNextSync(fileName.toUtf8()); }
|
||||
void avoidReadFromDbOnNextSync(const QByteArray &fileName);
|
||||
|
||||
/**
|
||||
* Wipe _etagStorageFilter. Also done implicitly on close().
|
||||
*/
|
||||
void clearEtagStorageFilter();
|
||||
|
||||
/**
|
||||
* Ensures full remote discovery happens on the next sync.
|
||||
*
|
||||
|
@ -295,13 +303,20 @@ private:
|
|||
SqlQuery _setConflictRecordQuery;
|
||||
SqlQuery _deleteConflictRecordQuery;
|
||||
|
||||
/* This is the list of paths we called avoidReadFromDbOnNextSync on.
|
||||
* It means that they should not be written to the DB in any case since doing
|
||||
* that would write the etag and would void the purpose of avoidReadFromDbOnNextSync
|
||||
/* Storing etags to these folders, or their parent folders, is filtered out.
|
||||
*
|
||||
* When avoidReadFromDbOnNextSync() is called some etags to _invalid_ in the
|
||||
* database. If this is done during a sync run, a later propagation job might
|
||||
* undo that by writing the correct etag to the database instead. This filter
|
||||
* will prevent this write and instead guarantee the _invalid_ etag stays in
|
||||
* place.
|
||||
*
|
||||
* The list is cleared on close() (end of sync run) and explicitly with
|
||||
* clearEtagStorageFilter() (start of sync run).
|
||||
*
|
||||
* The contained paths have a trailing /.
|
||||
*/
|
||||
QList<QByteArray> _avoidReadFromDbOnNextSyncFilter;
|
||||
QList<QByteArray> _etagStorageFilter;
|
||||
|
||||
/** The journal mode to use for the db.
|
||||
*
|
||||
|
|
|
@ -166,7 +166,7 @@ static void _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx)
|
|||
/* First, check that the file is NOT in our tree (another file with the same name was added) */
|
||||
if (our_tree->findFile(basePath)) {
|
||||
other = nullptr;
|
||||
qCDebug(lcReconcile, "Origin found in our tree : %s", basePath.constData());
|
||||
qCInfo(lcReconcile, "Origin found in our tree : %s", basePath.constData());
|
||||
} else {
|
||||
/* Find the potential rename source file in the other tree.
|
||||
* If the renamed file could not be found in the opposite tree, that is because it
|
||||
|
@ -174,7 +174,7 @@ static void _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx)
|
|||
* The journal is cleaned up later after propagation.
|
||||
*/
|
||||
other = other_tree->findFile(basePath);
|
||||
qCDebug(lcReconcile, "Rename origin in other tree (%s) %s",
|
||||
qCInfo(lcReconcile, "Rename origin in other tree (%s) %s",
|
||||
basePath.constData(), other ? "found" : "not found");
|
||||
}
|
||||
|
||||
|
@ -185,7 +185,7 @@ static void _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx)
|
|||
// Some other EVAL_RENAME already claimed other.
|
||||
// We do nothing: maybe a different candidate for
|
||||
// other is found as well?
|
||||
qCDebug(lcReconcile, "Other has already been renamed to %s",
|
||||
qCInfo(lcReconcile, "Other has already been renamed to %s",
|
||||
other->rename_path.constData());
|
||||
} else if (cur->type == ItemTypeDirectory
|
||||
// The local replica is reconciled first, so the remote tree would
|
||||
|
@ -197,7 +197,7 @@ static void _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx)
|
|||
|| other->instruction == CSYNC_INSTRUCTION_NONE
|
||||
|| other->instruction == CSYNC_INSTRUCTION_UPDATE_METADATA
|
||||
|| other->instruction == CSYNC_INSTRUCTION_REMOVE) {
|
||||
qCDebug(lcReconcile, "Switching %s to RENAME to %s",
|
||||
qCInfo(lcReconcile, "Switching %s to RENAME to %s",
|
||||
other->path.constData(), cur->path.constData());
|
||||
other->instruction = CSYNC_INSTRUCTION_RENAME;
|
||||
other->rename_path = cur->path;
|
||||
|
@ -217,7 +217,7 @@ static void _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx)
|
|||
// Local: The remote reconcile will be able to deal with this.
|
||||
// Remote: The local replica has already dealt with this.
|
||||
// See the EVAL_RENAME case when other was found directly.
|
||||
qCDebug(lcReconcile, "File in a renamed directory, other side's instruction: %d",
|
||||
qCInfo(lcReconcile, "File in a renamed directory, other side's instruction: %d",
|
||||
other->instruction);
|
||||
cur->instruction = CSYNC_INSTRUCTION_NONE;
|
||||
} else {
|
||||
|
@ -225,7 +225,7 @@ static void _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx)
|
|||
// and the instruction in the local tree is NEW while cur has EVAL_RENAME
|
||||
// due to a remote move of the same file. In these scenarios we just
|
||||
// want the instruction to stay NEW.
|
||||
qCDebug(lcReconcile, "Other already has instruction %d",
|
||||
qCInfo(lcReconcile, "Other already has instruction %d",
|
||||
other->instruction);
|
||||
}
|
||||
};
|
||||
|
@ -233,7 +233,7 @@ static void _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx)
|
|||
if (ctx->current == LOCAL_REPLICA) {
|
||||
/* use the old name to find the "other" node */
|
||||
OCC::SyncJournalFileRecord base;
|
||||
qCDebug(lcReconcile, "Finding rename origin through inode %" PRIu64 "",
|
||||
qCInfo(lcReconcile, "Finding rename origin through inode %" PRIu64 "",
|
||||
cur->inode);
|
||||
ctx->statedb->getFileRecordByInode(cur->inode, &base);
|
||||
renameCandidateProcessing(base._path);
|
||||
|
@ -246,7 +246,7 @@ static void _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx)
|
|||
// line.
|
||||
auto basePath = csync_rename_adjust_full_path_source(ctx, cur->path);
|
||||
if (basePath != cur->path) {
|
||||
qCDebug(lcReconcile, "Trying rename origin by csync_rename mapping %s",
|
||||
qCInfo(lcReconcile, "Trying rename origin by csync_rename mapping %s",
|
||||
basePath.constData());
|
||||
// We go through getFileRecordsByFileId to ensure the basePath
|
||||
// computed in this way also has the expected fileid.
|
||||
|
@ -259,7 +259,7 @@ static void _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx)
|
|||
|
||||
// Also feed all the other files with the same fileid if necessary
|
||||
if (!processedRename) {
|
||||
qCDebug(lcReconcile, "Finding rename origin through file ID %s",
|
||||
qCInfo(lcReconcile, "Finding rename origin through file ID %s",
|
||||
cur->file_id.constData());
|
||||
ctx->statedb->getFileRecordsByFileId(cur->file_id,
|
||||
[&](const OCC::SyncJournalFileRecord &base) { renameCandidateProcessing(base._path); });
|
||||
|
|
|
@ -125,12 +125,12 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> f
|
|||
* This code should probably be in csync_exclude, but it does not have the fs parameter.
|
||||
* Keep it here for now */
|
||||
if (ctx->ignore_hidden_files && (fs->is_hidden)) {
|
||||
qCDebug(lcUpdate, "file excluded because it is a hidden file: %s", fs->path.constData());
|
||||
qCInfo(lcUpdate, "file excluded because it is a hidden file: %s", fs->path.constData());
|
||||
excluded = CSYNC_FILE_EXCLUDE_HIDDEN;
|
||||
}
|
||||
} else {
|
||||
/* File is ignored because it's matched by a user- or system exclude pattern. */
|
||||
qCDebug(lcUpdate, "%s excluded (%d)", fs->path.constData(), excluded);
|
||||
qCInfo(lcUpdate, "%s excluded (%d)", fs->path.constData(), excluded);
|
||||
if (excluded == CSYNC_FILE_EXCLUDE_AND_REMOVE) {
|
||||
return 1;
|
||||
}
|
||||
|
@ -155,7 +155,7 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> f
|
|||
*/
|
||||
QTextEncoder encoder(localCodec, QTextCodec::ConvertInvalidToNull);
|
||||
if (encoder.fromUnicode(QString::fromUtf8(fs->path)).contains('\0')) {
|
||||
qCDebug(lcUpdate, "cannot encode %s to local encoding %d",
|
||||
qCInfo(lcUpdate, "cannot encode %s to local encoding %d",
|
||||
fs->path.constData(), localCodec->mibEnum());
|
||||
excluded = CSYNC_FILE_EXCLUDE_CANNOT_ENCODE;
|
||||
}
|
||||
|
@ -163,7 +163,7 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> f
|
|||
|
||||
if (fs->type == ItemTypeFile ) {
|
||||
if (fs->modtime == 0) {
|
||||
qCDebug(lcUpdate, "file: %s - mtime is zero!", fs->path.constData());
|
||||
qCInfo(lcUpdate, "file: %s - mtime is zero!", fs->path.constData());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -245,7 +245,7 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> f
|
|||
checksumIdentical = fs->checksumHeader == base._checksumHeader;
|
||||
}
|
||||
if (checksumIdentical) {
|
||||
qCDebug(lcUpdate, "NOTE: Checksums are identical, file did not actually change: %s", fs->path.constData());
|
||||
qCInfo(lcUpdate, "NOTE: Checksums are identical, file did not actually change: %s", fs->path.constData());
|
||||
fs->instruction = CSYNC_INSTRUCTION_UPDATE_METADATA;
|
||||
goto out;
|
||||
}
|
||||
|
@ -269,7 +269,7 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> f
|
|||
* The metadata comparison ensure that we fetch all the file id or permission when
|
||||
* upgrading owncloud
|
||||
*/
|
||||
qCDebug(lcUpdate, "Reading from database: %s", fs->path.constData());
|
||||
qCInfo(lcUpdate, "Reading from database: %s", fs->path.constData());
|
||||
ctx->remote.read_from_db = true;
|
||||
}
|
||||
/* If it was remembered in the db that the remote dir has ignored files, store
|
||||
|
@ -280,7 +280,7 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> f
|
|||
}
|
||||
if (metadata_differ) {
|
||||
/* file id or permissions has changed. Which means we need to update them in the DB. */
|
||||
qCDebug(lcUpdate, "Need to update metadata for: %s", fs->path.constData());
|
||||
qCInfo(lcUpdate, "Need to update metadata for: %s", fs->path.constData());
|
||||
fs->instruction = CSYNC_INSTRUCTION_UPDATE_METADATA;
|
||||
} else {
|
||||
fs->instruction = CSYNC_INSTRUCTION_NONE;
|
||||
|
@ -288,7 +288,7 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> f
|
|||
} else {
|
||||
/* check if it's a file and has been renamed */
|
||||
if (ctx->current == LOCAL_REPLICA) {
|
||||
qCDebug(lcUpdate, "Checking for rename based on inode # %" PRId64 "", (uint64_t) fs->inode);
|
||||
qCInfo(lcUpdate, "Checking for rename based on inode # %" PRId64 "", (uint64_t) fs->inode);
|
||||
|
||||
OCC::SyncJournalFileRecord base;
|
||||
if(!ctx->statedb->getFileRecordByInode(fs->inode, &base)) {
|
||||
|
@ -315,13 +315,13 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> f
|
|||
_rel_to_abs(ctx, fs->path), base._checksumHeader,
|
||||
ctx->callbacks.checksum_userdata);
|
||||
if (!fs->checksumHeader.isEmpty()) {
|
||||
qCDebug(lcUpdate, "checking checksum of potential rename %s %s <-> %s", fs->path.constData(), fs->checksumHeader.constData(), base._checksumHeader.constData());
|
||||
qCInfo(lcUpdate, "checking checksum of potential rename %s %s <-> %s", fs->path.constData(), fs->checksumHeader.constData(), base._checksumHeader.constData());
|
||||
isRename = fs->checksumHeader == base._checksumHeader;
|
||||
}
|
||||
}
|
||||
|
||||
if (isRename) {
|
||||
qCDebug(lcUpdate, "pot rename detected based on inode # %" PRId64 "", (uint64_t) fs->inode);
|
||||
qCInfo(lcUpdate, "pot rename detected based on inode # %" PRId64 "", (uint64_t) fs->inode);
|
||||
/* inode found so the file has been renamed */
|
||||
fs->instruction = CSYNC_INSTRUCTION_EVAL_RENAME;
|
||||
if (fs->type == ItemTypeDirectory) {
|
||||
|
@ -331,6 +331,8 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> f
|
|||
goto out;
|
||||
|
||||
} else {
|
||||
qCInfo(lcUpdate, "Checking for rename based on fileid %s", fs->file_id.constData());
|
||||
|
||||
/* Remote Replica Rename check */
|
||||
fs->instruction = CSYNC_INSTRUCTION_NEW;
|
||||
|
||||
|
@ -376,7 +378,8 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> f
|
|||
return;
|
||||
}
|
||||
|
||||
qCDebug(lcUpdate, "remote rename detected based on fileid %s --> %s", qPrintable(base._path), qPrintable(fs->path.constData()));
|
||||
qCInfo(lcUpdate, "remote rename detected based on fileid %s --> %s", base._path.constData(), fs->path.constData());
|
||||
|
||||
fs->instruction = CSYNC_INSTRUCTION_EVAL_RENAME;
|
||||
done = true;
|
||||
};
|
||||
|
@ -484,11 +487,11 @@ int csync_walker(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> fs) {
|
|||
}
|
||||
break;
|
||||
case ItemTypeSoftLink:
|
||||
qCDebug(lcUpdate, "symlink: %s - not supported", fs->path.constData());
|
||||
qCInfo(lcUpdate, "symlink: %s - not supported", fs->path.constData());
|
||||
break;
|
||||
default:
|
||||
qCInfo(lcUpdate, "item: %s - item type %d not iterated", fs->path.constData(), fs->type);
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
|
||||
rc = _csync_detect_update(ctx, std::move(fs));
|
||||
|
@ -511,7 +514,7 @@ static bool fill_tree_from_db(CSYNC *ctx, const char *uri)
|
|||
* their correct etags again and we don't run into this case.
|
||||
*/
|
||||
if (rec._etag == "_invalid_") {
|
||||
qCDebug(lcUpdate, "%s selective sync excluded", rec._path.constData());
|
||||
qCInfo(lcUpdate, "%s selective sync excluded", rec._path.constData());
|
||||
skipbase = rec._path;
|
||||
skipbase += '/';
|
||||
return;
|
||||
|
@ -757,7 +760,7 @@ int csync_ftw(CSYNC *ctx, const char *uri, csync_walker_fn fn,
|
|||
}
|
||||
|
||||
csync_vio_closedir(ctx, dh);
|
||||
qCDebug(lcUpdate, " <= Closing walk for %s with read_from_db %d", uri, read_from_db);
|
||||
qCInfo(lcUpdate, " <= Closing walk for %s with read_from_db %d", uri, read_from_db);
|
||||
|
||||
return rc;
|
||||
|
||||
|
|
|
@ -335,10 +335,10 @@ void AccountState::slotInvalidCredentials()
|
|||
|
||||
if (account()->credentials()->ready()) {
|
||||
account()->credentials()->invalidateToken();
|
||||
if (auto creds = qobject_cast<HttpCredentials *>(account()->credentials())) {
|
||||
if (creds->refreshAccessToken())
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (auto creds = qobject_cast<HttpCredentials *>(account()->credentials())) {
|
||||
if (creds->refreshAccessToken())
|
||||
return;
|
||||
}
|
||||
account()->credentials()->askFromUser();
|
||||
}
|
||||
|
|
|
@ -71,7 +71,7 @@ namespace {
|
|||
" --logexpire <hours> : removes logs older than <hours> hours.\n"
|
||||
" (to be used with --logdir)\n"
|
||||
" --logflush : flush the log file after every write.\n"
|
||||
" --logdebug : also output debug-level messages in the log (equivalent to setting the env var QT_LOGGING_RULES=\"qt.*=true;*.debug=true\").\n"
|
||||
" --logdebug : also output debug-level messages in the log.\n"
|
||||
" --confdir <dirname> : Use the given configuration folder.\n";
|
||||
|
||||
QString applicationTrPath()
|
||||
|
|
|
@ -62,21 +62,16 @@ const char propertyAccountC[] = "oc_account";
|
|||
ownCloudGui::ownCloudGui(Application *parent)
|
||||
: QObject(parent)
|
||||
, _tray(0)
|
||||
,
|
||||
#if defined(Q_OS_MAC)
|
||||
_settingsDialog(new SettingsDialogMac(this))
|
||||
,
|
||||
, _settingsDialog(new SettingsDialogMac(this))
|
||||
#else
|
||||
_settingsDialog(new SettingsDialog(this))
|
||||
,
|
||||
, _settingsDialog(new SettingsDialog(this))
|
||||
#endif
|
||||
_logBrowser(0)
|
||||
, _contextMenuVisibleOsx(false)
|
||||
, _logBrowser(0)
|
||||
#ifdef WITH_LIBCLOUDPROVIDERS
|
||||
, _bus(QDBusConnection::sessionBus())
|
||||
#endif
|
||||
, _recentActionsMenu(0)
|
||||
, _qdbusmenuWorkaround(false)
|
||||
, _app(parent)
|
||||
{
|
||||
_tray = new Systray();
|
||||
|
@ -154,7 +149,7 @@ void ownCloudGui::slotOpenSettingsDialog()
|
|||
|
||||
void ownCloudGui::slotTrayClicked(QSystemTrayIcon::ActivationReason reason)
|
||||
{
|
||||
if (_qdbusmenuWorkaround) {
|
||||
if (_workaroundFakeDoubleClick) {
|
||||
static QElapsedTimer last_click;
|
||||
if (last_click.isValid() && last_click.elapsed() < 200) {
|
||||
return;
|
||||
|
@ -439,17 +434,19 @@ void ownCloudGui::addAccountContextMenu(AccountStatePtr accountState, QMenu *men
|
|||
|
||||
void ownCloudGui::slotContextMenuAboutToShow()
|
||||
{
|
||||
// For some reason on OS X _contextMenu->isVisible returns always false
|
||||
_contextMenuVisibleOsx = true;
|
||||
_contextMenuVisibleManual = true;
|
||||
|
||||
// Update icon in sys tray, as it might change depending on the context menu state
|
||||
slotComputeOverallSyncStatus();
|
||||
|
||||
if (!_workaroundNoAboutToShowUpdate) {
|
||||
updateContextMenu();
|
||||
}
|
||||
}
|
||||
|
||||
void ownCloudGui::slotContextMenuAboutToHide()
|
||||
{
|
||||
// For some reason on OS X _contextMenu->isVisible returns always false
|
||||
_contextMenuVisibleOsx = false;
|
||||
_contextMenuVisibleManual = false;
|
||||
|
||||
// Update icon in sys tray, as it might change depending on the context menu state
|
||||
slotComputeOverallSyncStatus();
|
||||
|
@ -457,11 +454,11 @@ void ownCloudGui::slotContextMenuAboutToHide()
|
|||
|
||||
bool ownCloudGui::contextMenuVisible() const
|
||||
{
|
||||
#ifdef Q_OS_MAC
|
||||
return _contextMenuVisibleOsx;
|
||||
#else
|
||||
// On some platforms isVisible doesn't work and always returns false,
|
||||
// elsewhere aboutToHide is unreliable.
|
||||
if (_workaroundManualVisibility)
|
||||
return _contextMenuVisibleManual;
|
||||
return _contextMenu->isVisible();
|
||||
#endif
|
||||
}
|
||||
|
||||
static bool minimalTrayMenu()
|
||||
|
@ -484,12 +481,36 @@ static bool updateWhileVisible()
|
|||
}
|
||||
}
|
||||
|
||||
static QByteArray forceQDBusTrayWorkaround()
|
||||
static QByteArray envForceQDBusTrayWorkaround()
|
||||
{
|
||||
static QByteArray var = qgetenv("OWNCLOUD_FORCE_QDBUS_TRAY_WORKAROUND");
|
||||
return var;
|
||||
}
|
||||
|
||||
static QByteArray envForceWorkaroundShowAndHideTray()
|
||||
{
|
||||
static QByteArray var = qgetenv("OWNCLOUD_FORCE_TRAY_SHOW_HIDE");
|
||||
return var;
|
||||
}
|
||||
|
||||
static QByteArray envForceWorkaroundNoAboutToShowUpdate()
|
||||
{
|
||||
static QByteArray var = qgetenv("OWNCLOUD_FORCE_TRAY_NO_ABOUT_TO_SHOW");
|
||||
return var;
|
||||
}
|
||||
|
||||
static QByteArray envForceWorkaroundFakeDoubleClick()
|
||||
{
|
||||
static QByteArray var = qgetenv("OWNCLOUD_FORCE_TRAY_FAKE_DOUBLE_CLICK");
|
||||
return var;
|
||||
}
|
||||
|
||||
static QByteArray envForceWorkaroundManualVisibility()
|
||||
{
|
||||
static QByteArray var = qgetenv("OWNCLOUD_FORCE_TRAY_MANUAL_VISIBILITY");
|
||||
return var;
|
||||
}
|
||||
|
||||
void ownCloudGui::setupContextMenu()
|
||||
{
|
||||
if (_contextMenu) {
|
||||
|
@ -512,51 +533,65 @@ void ownCloudGui::setupContextMenu()
|
|||
return;
|
||||
}
|
||||
|
||||
// Enables workarounds for bugs introduced in Qt 5.5.0
|
||||
// In particular QTBUG-47863 #3672 (tray menu fails to update and
|
||||
// becomes unresponsive) and QTBUG-48068 #3722 (click signal is
|
||||
// emitted several times)
|
||||
// The Qt version check intentionally uses 5.0.0 (where platformMenu()
|
||||
// was introduced) instead of 5.5.0 to avoid issues where the Qt
|
||||
// version used to build is different from the one used at runtime.
|
||||
// If we build with 5.6.1 or newer, we can skip this because the
|
||||
// bugs should be fixed there.
|
||||
#ifdef Q_OS_LINUX
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)) && (QT_VERSION < QT_VERSION_CHECK(5, 6, 0))
|
||||
if (qVersion() == QByteArray("5.5.0")) {
|
||||
QObject *platformMenu = reinterpret_cast<QObject *>(_tray->contextMenu()->platformMenu());
|
||||
if (platformMenu
|
||||
&& platformMenu->metaObject()->className() == QLatin1String("QDBusPlatformMenu")) {
|
||||
_qdbusmenuWorkaround = true;
|
||||
qCWarning(lcApplication) << "Enabled QDBusPlatformMenu workaround";
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
auto applyEnvVariable = [](bool *sw, const QByteArray &value) {
|
||||
if (value == "1")
|
||||
*sw = true;
|
||||
if (value == "0")
|
||||
*sw = false;
|
||||
};
|
||||
|
||||
if (forceQDBusTrayWorkaround() == "1") {
|
||||
_qdbusmenuWorkaround = true;
|
||||
} else if (forceQDBusTrayWorkaround() == "0") {
|
||||
_qdbusmenuWorkaround = false;
|
||||
// This is an old compound flag that people might still depend on
|
||||
bool qdbusmenuWorkarounds = false;
|
||||
applyEnvVariable(&qdbusmenuWorkarounds, envForceQDBusTrayWorkaround());
|
||||
if (qdbusmenuWorkarounds) {
|
||||
_workaroundFakeDoubleClick = true;
|
||||
_workaroundNoAboutToShowUpdate = true;
|
||||
_workaroundShowAndHideTray = true;
|
||||
}
|
||||
|
||||
// When the qdbusmenuWorkaround is necessary, we can't do on-demand updates
|
||||
// because the workaround is to hide and show the tray icon.
|
||||
if (_qdbusmenuWorkaround) {
|
||||
connect(&_workaroundBatchTrayUpdate, &QTimer::timeout, this, &ownCloudGui::updateContextMenu);
|
||||
_workaroundBatchTrayUpdate.setInterval(30 * 1000);
|
||||
_workaroundBatchTrayUpdate.setSingleShot(true);
|
||||
} else {
|
||||
// Update the context menu whenever we're about to show it
|
||||
// to the user.
|
||||
#ifdef Q_OS_MAC
|
||||
// https://bugreports.qt.io/browse/QTBUG-54633
|
||||
connect(_contextMenu.data(), SIGNAL(aboutToShow()), SLOT(slotContextMenuAboutToShow()));
|
||||
connect(_contextMenu.data(), SIGNAL(aboutToHide()), SLOT(slotContextMenuAboutToHide()));
|
||||
#else
|
||||
connect(_contextMenu.data(), &QMenu::aboutToShow, this, &ownCloudGui::updateContextMenu);
|
||||
// https://bugreports.qt.io/browse/QTBUG-54633
|
||||
_workaroundNoAboutToShowUpdate = true;
|
||||
_workaroundManualVisibility = true;
|
||||
#endif
|
||||
|
||||
#ifdef Q_OS_LINUX
|
||||
// For KDE sessions if the platform plugin is missing,
|
||||
// neither aboutToShow() updates nor the isVisible() call
|
||||
// work. At least aboutToHide is reliable.
|
||||
// https://github.com/owncloud/client/issues/6545
|
||||
static QByteArray xdgCurrentDesktop = qgetenv("XDG_CURRENT_DESKTOP");
|
||||
static QByteArray desktopSession = qgetenv("DESKTOP_SESSION");
|
||||
bool isKde =
|
||||
xdgCurrentDesktop.contains("KDE")
|
||||
|| desktopSession.contains("plasma")
|
||||
|| desktopSession.contains("kde");
|
||||
QObject *platformMenu = reinterpret_cast<QObject *>(_tray->contextMenu()->platformMenu());
|
||||
if (isKde && platformMenu && platformMenu->metaObject()->className() == QLatin1String("QDBusPlatformMenu")) {
|
||||
_workaroundManualVisibility = true;
|
||||
_workaroundNoAboutToShowUpdate = true;
|
||||
}
|
||||
#endif
|
||||
|
||||
applyEnvVariable(&_workaroundNoAboutToShowUpdate, envForceWorkaroundNoAboutToShowUpdate());
|
||||
applyEnvVariable(&_workaroundFakeDoubleClick, envForceWorkaroundFakeDoubleClick());
|
||||
applyEnvVariable(&_workaroundShowAndHideTray, envForceWorkaroundShowAndHideTray());
|
||||
applyEnvVariable(&_workaroundManualVisibility, envForceWorkaroundManualVisibility());
|
||||
|
||||
qCInfo(lcApplication) << "Tray menu workarounds:"
|
||||
<< "noabouttoshow:" << _workaroundNoAboutToShowUpdate
|
||||
<< "fakedoubleclick:" << _workaroundFakeDoubleClick
|
||||
<< "showhide:" << _workaroundShowAndHideTray
|
||||
<< "manualvisibility:" << _workaroundManualVisibility;
|
||||
|
||||
|
||||
connect(&_delayedTrayUpdateTimer, &QTimer::timeout, this, &ownCloudGui::updateContextMenu);
|
||||
_delayedTrayUpdateTimer.setInterval(2 * 1000);
|
||||
_delayedTrayUpdateTimer.setSingleShot(true);
|
||||
|
||||
connect(_contextMenu.data(), SIGNAL(aboutToShow()), SLOT(slotContextMenuAboutToShow()));
|
||||
// unfortunately aboutToHide is unreliable, it seems to work on OSX though
|
||||
connect(_contextMenu.data(), SIGNAL(aboutToHide()), SLOT(slotContextMenuAboutToHide()));
|
||||
|
||||
// Populate the context menu now.
|
||||
updateContextMenu();
|
||||
|
@ -568,13 +603,21 @@ void ownCloudGui::updateContextMenu()
|
|||
return;
|
||||
}
|
||||
|
||||
if (_qdbusmenuWorkaround) {
|
||||
// If it's visible, we can't update live, and it won't be updated lazily: reschedule
|
||||
if (contextMenuVisible() && !updateWhileVisible() && _workaroundNoAboutToShowUpdate) {
|
||||
if (!_delayedTrayUpdateTimer.isActive()) {
|
||||
_delayedTrayUpdateTimer.start();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (_workaroundShowAndHideTray) {
|
||||
// To make tray menu updates work with these bugs (see setupContextMenu)
|
||||
// we need to hide and show the tray icon. We don't want to do that
|
||||
// while it's visible!
|
||||
if (contextMenuVisible()) {
|
||||
if (!_workaroundBatchTrayUpdate.isActive()) {
|
||||
_workaroundBatchTrayUpdate.start();
|
||||
if (!_delayedTrayUpdateTimer.isActive()) {
|
||||
_delayedTrayUpdateTimer.start();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -667,35 +710,30 @@ void ownCloudGui::updateContextMenu()
|
|||
}
|
||||
_contextMenu->addAction(_actionQuit);
|
||||
|
||||
if (_qdbusmenuWorkaround) {
|
||||
if (_workaroundShowAndHideTray) {
|
||||
_tray->show();
|
||||
}
|
||||
}
|
||||
|
||||
void ownCloudGui::updateContextMenuNeeded()
|
||||
{
|
||||
// For the workaround case updating while visible is impossible. Instead
|
||||
// occasionally update the menu when it's invisible.
|
||||
if (_qdbusmenuWorkaround) {
|
||||
if (!_workaroundBatchTrayUpdate.isActive()) {
|
||||
_workaroundBatchTrayUpdate.start();
|
||||
}
|
||||
// if it's visible and we can update live: update now
|
||||
if (contextMenuVisible() && updateWhileVisible()) {
|
||||
// Note: don't update while visible on OSX
|
||||
// https://bugreports.qt.io/browse/QTBUG-54845
|
||||
updateContextMenu();
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
// https://bugreports.qt.io/browse/QTBUG-54845
|
||||
// We cannot update on demand or while visible -> update when invisible.
|
||||
if (!contextMenuVisible()) {
|
||||
updateContextMenu();
|
||||
// if we can't lazily update: update later
|
||||
if (_workaroundNoAboutToShowUpdate) {
|
||||
// Note: don't update immediately even in the invisible case
|
||||
// as that can lead to extremely frequent menu updates
|
||||
if (!_delayedTrayUpdateTimer.isActive()) {
|
||||
_delayedTrayUpdateTimer.start();
|
||||
}
|
||||
return;
|
||||
}
|
||||
#else
|
||||
if (updateWhileVisible() && contextMenuVisible())
|
||||
updateContextMenu();
|
||||
#endif
|
||||
|
||||
// If no update was done here, we might update it on-demand due to
|
||||
// the aboutToShow() signal.
|
||||
}
|
||||
|
||||
void ownCloudGui::slotShowTrayMessage(const QString &title, const QString &msg)
|
||||
|
|
|
@ -140,9 +140,11 @@ private:
|
|||
// tray's menu
|
||||
QScopedPointer<QMenu> _contextMenu;
|
||||
|
||||
// Manually tracking whether the context menu is visible, but only works
|
||||
// on OSX because aboutToHide is not reliable everywhere.
|
||||
bool _contextMenuVisibleOsx;
|
||||
// Manually tracking whether the context menu is visible via aboutToShow
|
||||
// and aboutToHide. Unfortunately aboutToHide isn't reliable everywhere
|
||||
// so this only gets used with _workaroundManualVisibility (when the tray's
|
||||
// isVisible() is unreliable)
|
||||
bool _contextMenuVisibleManual = false;
|
||||
|
||||
#ifdef WITH_LIBCLOUDPROVIDERS
|
||||
QDBusConnection _bus;
|
||||
|
@ -150,8 +152,11 @@ private:
|
|||
|
||||
QMenu *_recentActionsMenu;
|
||||
QVector<QMenu *> _accountMenus;
|
||||
bool _qdbusmenuWorkaround;
|
||||
QTimer _workaroundBatchTrayUpdate;
|
||||
bool _workaroundShowAndHideTray = false;
|
||||
bool _workaroundNoAboutToShowUpdate = false;
|
||||
bool _workaroundFakeDoubleClick = false;
|
||||
bool _workaroundManualVisibility = false;
|
||||
QTimer _delayedTrayUpdateTimer;
|
||||
QMap<QString, QPointer<ShareDialog>> _shareDialogs;
|
||||
|
||||
QAction *_actionNewAccountWizard;
|
||||
|
|
|
@ -87,6 +87,7 @@ ShareUserGroupWidget::ShareUserGroupWidget(AccountPtr account,
|
|||
connect(_manager, &ShareManager::shareCreated, this, &ShareUserGroupWidget::getShares);
|
||||
connect(_manager, &ShareManager::serverError, this, &ShareUserGroupWidget::displayError);
|
||||
connect(_ui->shareeLineEdit, &QLineEdit::returnPressed, this, &ShareUserGroupWidget::slotLineEditReturn);
|
||||
connect(_ui->confirmShare, &QPushButton::clicked, this, &ShareUserGroupWidget::slotLineEditReturn);
|
||||
//TODO connect(_ui->privateLinkText, &QLabel::linkActivated, this, &ShareUserGroupWidget::slotPrivateLinkShare);
|
||||
|
||||
// By making the next two QueuedConnections we can override
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
// This file is generated by kxml_compiler from occinfo.xml.
|
||||
// All changes you do to this file will be lost.
|
||||
|
||||
#include "updateinfo.h"
|
||||
#include "updater.h"
|
||||
|
@ -83,24 +82,6 @@ UpdateInfo UpdateInfo::parseElement(const QDomElement &element, bool *ok)
|
|||
return result;
|
||||
}
|
||||
|
||||
void UpdateInfo::writeElement(QXmlStreamWriter &xml)
|
||||
{
|
||||
xml.writeStartElement(QLatin1String("owncloudclient"));
|
||||
if (!version().isEmpty()) {
|
||||
xml.writeTextElement(QLatin1String("version"), version());
|
||||
}
|
||||
if (!versionString().isEmpty()) {
|
||||
xml.writeTextElement(QLatin1String("versionstring"), versionString());
|
||||
}
|
||||
if (!web().isEmpty()) {
|
||||
xml.writeTextElement(QLatin1String("web"), web());
|
||||
}
|
||||
if (!downloadUrl().isEmpty()) {
|
||||
xml.writeTextElement(QLatin1String("downloadurl"), web());
|
||||
}
|
||||
xml.writeEndElement();
|
||||
}
|
||||
|
||||
UpdateInfo UpdateInfo::parseFile(const QString &filename, bool *ok)
|
||||
{
|
||||
QFile file(filename);
|
||||
|
@ -149,23 +130,4 @@ UpdateInfo UpdateInfo::parseString(const QString &xml, bool *ok)
|
|||
return c;
|
||||
}
|
||||
|
||||
bool UpdateInfo::writeFile(const QString &filename)
|
||||
{
|
||||
QFile file(filename);
|
||||
if (!file.open(QIODevice::WriteOnly)) {
|
||||
qCCritical(lcUpdater) << "Unable to open file '" << filename << "'";
|
||||
return false;
|
||||
}
|
||||
|
||||
QXmlStreamWriter xml(&file);
|
||||
xml.setAutoFormatting(true);
|
||||
xml.setAutoFormattingIndent(2);
|
||||
xml.writeStartDocument(QLatin1String("1.0"));
|
||||
writeElement(xml);
|
||||
xml.writeEndDocument();
|
||||
file.close();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace OCC
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
// This file is generated by kxml_compiler from occinfo.xml.
|
||||
// All changes you do to this file will be lost.
|
||||
#ifndef UPDATEINFO_H
|
||||
#define UPDATEINFO_H
|
||||
|
||||
|
@ -24,10 +23,8 @@ public:
|
|||
Parse XML object from DOM element.
|
||||
*/
|
||||
static UpdateInfo parseElement(const QDomElement &element, bool *ok);
|
||||
void writeElement(QXmlStreamWriter &xml);
|
||||
static UpdateInfo parseFile(const QString &filename, bool *ok);
|
||||
static UpdateInfo parseString(const QString &xml, bool *ok);
|
||||
bool writeFile(const QString &filename);
|
||||
|
||||
private:
|
||||
QString mVersion;
|
||||
|
|
|
@ -390,10 +390,9 @@ QByteArray decryptStringSymmetric(const QByteArray& key, const QByteArray& data)
|
|||
return result;
|
||||
}
|
||||
|
||||
QByteArray privateKeyToPem(const QSslKey key) {
|
||||
QByteArray privateKeyToPem(const QByteArray key) {
|
||||
BIO *privateKeyBio = BIO_new(BIO_s_mem());
|
||||
QByteArray privateKeyPem = key.toPem();
|
||||
BIO_write(privateKeyBio, privateKeyPem.constData(), privateKeyPem.size());
|
||||
BIO_write(privateKeyBio, key.constData(), key.size());
|
||||
EVP_PKEY *pkey = PEM_read_bio_PrivateKey(privateKeyBio, NULL, NULL, NULL);
|
||||
|
||||
BIO *pemBio = BIO_new(BIO_s_mem());
|
||||
|
@ -694,7 +693,8 @@ void ClientSideEncryption::privateKeyFetched(Job *incoming) {
|
|||
return;
|
||||
}
|
||||
|
||||
_privateKey = QSslKey(readJob->binaryData(), QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey);
|
||||
//_privateKey = QSslKey(readJob->binaryData(), QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey);
|
||||
_privateKey = readJob->binaryData();
|
||||
|
||||
if (_privateKey.isNull()) {
|
||||
getPrivateKeyFromServer();
|
||||
|
@ -723,7 +723,7 @@ void ClientSideEncryption::mnemonicKeyFetched(QKeychain::Job *incoming) {
|
|||
if (readJob->error() != NoError || readJob->textData().length() == 0) {
|
||||
_certificate = QSslCertificate();
|
||||
_publicKey = QSslKey();
|
||||
_privateKey = QSslKey();
|
||||
_privateKey = QByteArray();
|
||||
getPublicKeyFromServer();
|
||||
return;
|
||||
}
|
||||
|
@ -745,7 +745,7 @@ void ClientSideEncryption::writePrivateKey() {
|
|||
WritePasswordJob *job = new WritePasswordJob(Theme::instance()->appName());
|
||||
job->setInsecureFallback(false);
|
||||
job->setKey(kck);
|
||||
job->setBinaryData(_privateKey.toPem());
|
||||
job->setBinaryData(_privateKey);
|
||||
connect(job, &WritePasswordJob::finished, [this](Job *incoming) {
|
||||
Q_UNUSED(incoming);
|
||||
qCInfo(lcCse()) << "Private key stored in keychain";
|
||||
|
@ -791,7 +791,7 @@ void ClientSideEncryption::writeMnemonic() {
|
|||
|
||||
void ClientSideEncryption::forgetSensitiveData()
|
||||
{
|
||||
_privateKey = QSslKey();
|
||||
_privateKey = QByteArray();
|
||||
_certificate = QSslCertificate();
|
||||
_publicKey = QSslKey();
|
||||
_mnemonic = QString();
|
||||
|
@ -859,7 +859,8 @@ void ClientSideEncryption::generateKeyPair()
|
|||
return;
|
||||
}
|
||||
QByteArray key = BIO2ByteArray(privKey);
|
||||
_privateKey = QSslKey(key, QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey);
|
||||
//_privateKey = QSslKey(key, QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey);
|
||||
_privateKey = key;
|
||||
|
||||
qCInfo(lcCse()) << "Keys generated correctly, sending to server.";
|
||||
generateCSR(localKeyPair);
|
||||
|
@ -1025,9 +1026,10 @@ void ClientSideEncryption::decryptPrivateKey(const QByteArray &key) {
|
|||
qCInfo(lcCse()) << "Generated key:" << pass;
|
||||
|
||||
QByteArray privateKey = EncryptionHelper::decryptPrivateKey(pass, key2);
|
||||
_privateKey = QSslKey(privateKey, QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey);
|
||||
//_privateKey = QSslKey(privateKey, QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey);
|
||||
_privateKey = privateKey;
|
||||
|
||||
qCInfo(lcCse()) << "Private key: " << _privateKey.toPem();
|
||||
qCInfo(lcCse()) << "Private key: " << _privateKey;
|
||||
|
||||
if (!_privateKey.isNull()) {
|
||||
writePrivateKey();
|
||||
|
@ -1037,7 +1039,7 @@ void ClientSideEncryption::decryptPrivateKey(const QByteArray &key) {
|
|||
}
|
||||
} else {
|
||||
_mnemonic = QString();
|
||||
_privateKey = QSslKey();
|
||||
_privateKey = QByteArray();
|
||||
qCInfo(lcCse()) << "Cancelled";
|
||||
break;
|
||||
}
|
||||
|
@ -1226,7 +1228,7 @@ QByteArray FolderMetadata::encryptMetadataKey(const QByteArray& data) const {
|
|||
QByteArray FolderMetadata::decryptMetadataKey(const QByteArray& encryptedMetadata) const
|
||||
{
|
||||
BIO *privateKeyBio = BIO_new(BIO_s_mem());
|
||||
QByteArray privateKeyPem = _account->e2e()->_privateKey.toPem();
|
||||
QByteArray privateKeyPem = _account->e2e()->_privateKey;
|
||||
BIO_write(privateKeyBio, privateKeyPem.constData(), privateKeyPem.size());
|
||||
EVP_PKEY *key = PEM_read_bio_PrivateKey(privateKeyBio, NULL, NULL, NULL);
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@ namespace EncryptionHelper {
|
|||
const QByteArray& data
|
||||
);
|
||||
|
||||
QByteArray privateKeyToPem(const QSslKey key);
|
||||
QByteArray privateKeyToPem(const QByteArray key);
|
||||
|
||||
//TODO: change those two EVP_PKEY into QSslKey.
|
||||
QByteArray encryptStringAsymmetric(
|
||||
|
@ -122,7 +122,8 @@ private:
|
|||
QMap<QString, bool> _folder2encryptedStatus;
|
||||
|
||||
public:
|
||||
QSslKey _privateKey;
|
||||
//QSslKey _privateKey;
|
||||
QByteArray _privateKey;
|
||||
QSslKey _publicKey;
|
||||
QSslCertificate _certificate;
|
||||
QString _mnemonic;
|
||||
|
|
|
@ -149,6 +149,7 @@ void GETFileJob::newReplyHook(QNetworkReply *reply)
|
|||
|
||||
connect(reply, &QNetworkReply::metaDataChanged, this, &GETFileJob::slotMetaDataChanged);
|
||||
connect(reply, &QIODevice::readyRead, this, &GETFileJob::slotReadyRead);
|
||||
connect(reply, &QNetworkReply::finished, this, &GETFileJob::slotReadyRead);
|
||||
connect(reply, &QNetworkReply::downloadProgress, this, &GETFileJob::downloadProgress);
|
||||
}
|
||||
|
||||
|
|
|
@ -837,6 +837,11 @@ void SyncEngine::startSync()
|
|||
// database creation error!
|
||||
}
|
||||
|
||||
// Functionality like selective sync might have set up etag storage
|
||||
// filtering via avoidReadFromDbOnNextSync(). This *is* the next sync, so
|
||||
// undo the filter to allow this sync to retrieve and store the correct etags.
|
||||
_journal->clearEtagStorageFilter();
|
||||
|
||||
_csync_ctx->upload_conflict_files = _account->capabilities().uploadConflictFiles();
|
||||
_excludedFiles->setExcludeConflictFiles(!_account->capabilities().uploadConflictFiles());
|
||||
|
||||
|
|
|
@ -728,9 +728,18 @@ public:
|
|||
setAttribute(QNetworkRequest::HttpStatusCodeAttribute, _httpErrorCode);
|
||||
setError(InternalServerError, "Internal Server Fake Error");
|
||||
emit metaDataChanged();
|
||||
emit readyRead();
|
||||
// finishing can come strictly after readyRead was called
|
||||
QTimer::singleShot(5, this, &FakeErrorReply::slotSetFinished);
|
||||
}
|
||||
|
||||
public slots:
|
||||
void slotSetFinished() {
|
||||
setFinished(true);
|
||||
emit finished();
|
||||
}
|
||||
|
||||
public:
|
||||
void abort() override { }
|
||||
qint64 readData(char *, qint64) override { return 0; }
|
||||
|
||||
|
|
|
@ -255,7 +255,8 @@ private slots:
|
|||
} else if(item->_file == "Y/Z/d3") {
|
||||
QVERIFY(item->_status != SyncFileItem::Success);
|
||||
}
|
||||
QVERIFY(item->_file != "Y/Z/d9"); // we should have aborted the sync before d9 starts
|
||||
// We do not know about the other files - maybe the sync was aborted,
|
||||
// maybe they finished before the error caused the abort.
|
||||
}
|
||||
}
|
||||
|
||||
|
|
4193
translations/client_bg.ts
Normal file
4193
translations/client_bg.ts
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -388,7 +388,7 @@
|
|||
<message>
|
||||
<location filename="../src/gui/accountstate.cpp" line="138"/>
|
||||
<source>Asking Credentials</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ερώτηση πιστοποιητικών</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/accountstate.cpp" line="140"/>
|
||||
|
|
|
@ -388,7 +388,7 @@
|
|||
<message>
|
||||
<location filename="../src/gui/accountstate.cpp" line="138"/>
|
||||
<source>Asking Credentials</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Kysytään tilitietoja</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/accountstate.cpp" line="140"/>
|
||||
|
@ -1389,7 +1389,7 @@ Kohteet, joiden poisto on sallittu, poistetaan, jos ne estävät kansion poistam
|
|||
<message>
|
||||
<location filename="../src/gui/issueswidget.ui" line="20"/>
|
||||
<source>List of issues</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Lista ongelmista</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/issueswidget.ui" line="34"/>
|
||||
|
@ -1426,7 +1426,7 @@ Kohteet, joiden poisto on sallittu, poistetaan, jos ne estävät kansion poistam
|
|||
<message>
|
||||
<location filename="../src/gui/issueswidget.ui" line="155"/>
|
||||
<source>Copy the issues list to the clipboard.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Kopioi ongelmalista leikepöydälle.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/issueswidget.ui" line="158"/>
|
||||
|
@ -1446,7 +1446,7 @@ Kohteet, joiden poisto on sallittu, poistetaan, jos ne estävät kansion poistam
|
|||
<message>
|
||||
<location filename="../src/gui/issueswidget.cpp" line="84"/>
|
||||
<source>Issue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ongelma</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -1878,7 +1878,7 @@ for additional privileges during the process.</source>
|
|||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudoauthcredspage.cpp" line="44"/>
|
||||
<source>Login in your browser</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Kirjaudu selaimellasi</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
|
|
@ -2082,7 +2082,7 @@ Il est déconseillé de l'utiliser.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudwizard.cpp" line="93"/>
|
||||
<source>Skip folders configuration</source>
|
||||
<translation>Passer outre la configuration des dossiers</translation>
|
||||
<translation>Ignorer la configuration des dossiers</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
|
|
@ -2005,7 +2005,7 @@ It is not advisable to use it.</source>
|
|||
<message>
|
||||
<location filename="../src/gui/owncloudsetupwizard.cpp" line="526"/>
|
||||
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
|
||||
<translation>A %1 távoli mappa már létezik. Csatlakoztassa a szinkronizációhoz.</translation>
|
||||
<translation>A %1 távoli mappa már létezik. Csatlakoztasd a szinkronizációhoz!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudsetupwizard.cpp" line="528"/>
|
||||
|
@ -3673,7 +3673,7 @@ It is not advisable to use it.</source>
|
|||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="710"/>
|
||||
<source>New account...</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Új fiók...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="728"/>
|
||||
|
|
|
@ -3653,7 +3653,7 @@ Ekki er mælt með því að hún sé notuð.
|
|||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="360"/>
|
||||
<source>Resume all folders</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Halda áfram með allar möppur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="365"/>
|
||||
|
@ -3663,12 +3663,12 @@ Ekki er mælt með því að hún sé notuð.
|
|||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="599"/>
|
||||
<source>Resume all synchronization</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Halda áfram með alla samstillingu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="601"/>
|
||||
<source>Resume synchronization</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Halda áfram með samstillingu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="609"/>
|
||||
|
|
|
@ -335,7 +335,7 @@
|
|||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="605"/>
|
||||
<source>%1 of %2 in use</source>
|
||||
<translation>%1% di %2 in uso</translation>
|
||||
<translation>%1 di %2 in uso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="614"/>
|
||||
|
|
4207
translations/client_lt_LT.ts
Normal file
4207
translations/client_lt_LT.ts
Normal file
File diff suppressed because it is too large
Load diff
|
@ -768,7 +768,10 @@
|
|||
These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore.
|
||||
If you decide to keep the files, they will be re-synced with the server if you have rights to do so.
|
||||
If you decide to delete the files, they will be unavailable to you, unless you are the owner.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Alle bestanden in de syncmap '%1' werden verwijderd van de server.
|
||||
Deze verwijderingen worden gesynchroniseerd naar uw lokale syncmap, waardoor deze bestanden niet meer beschikbaar zijn, tenzij u het recht hebt om ze te herstellen.
|
||||
Als u de bestanden wilt behouden, worden ze opnieuw gesynchroniseerd met de server als u die autorisatie hebt.
|
||||
Als u de bestanden wilt verwijderen, worden ze niet beschikbaar, tenzij u de eigenaar bent.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folder.cpp" line="932"/>
|
||||
|
@ -2758,7 +2761,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/sharelinkwidget.cpp" line="521"/>
|
||||
<source><p>Do you really want to delete the public link share <i>%1</i>?</p><p>Note: This action cannot be undone.</p></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><p>Wil je echt de openbare deellink <i>%1</i> verwijderen?</p><p>let op: Dit kan niet ongedaan worden gemaakt.</p></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharelinkwidget.cpp" line="528"/>
|
||||
|
@ -2774,7 +2777,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/sharelinkwidget.cpp" line="254"/>
|
||||
<source>Delete link share</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Verwijder deellink</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharelinkwidget.cpp" line="459"/>
|
||||
|
@ -2802,12 +2805,12 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/shareusergroupwidget.ui" line="108"/>
|
||||
<source><html><head/><body><p>You can direct people to this shared file or folder <a href="private link menu"><span style=" text-decoration: underline; color:#0000ff;">by giving them a private link</span></a>.</p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><html><head/><body><p>Je kunt mensen naar dit gedeelde bestand of deze gedeeld map sturen <a href="private link menu"><span style=" text-decoration: underline; color:#0000ff;">door ze een privé-link te geven</span></a>.</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/shareusergroupwidget.cpp" line="186"/>
|
||||
<source>The item is not shared with any users or groups</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Dit wordt niet gedeeld met enige gebruikers of groepen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/shareusergroupwidget.cpp" line="235"/>
|
||||
|
@ -3218,7 +3221,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="264"/>
|
||||
<source>%1 (skipped due to earlier error, trying again in %2)</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>%1 (overgeslagen wegens een eerdere fout, probeer opnieuw over %2)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="474"/>
|
||||
|
@ -3228,7 +3231,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="477"/>
|
||||
<source>Folder hierarchy is too deep</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Mappenhiërarchie is te diep</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="493"/>
|
||||
|
@ -3244,7 +3247,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="812"/>
|
||||
<source>Unable to open or create the local sync database. Make sure you have write access in the sync folder.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Kon de lokale sync-database niet openen of aanmaken. Zorg ervoor dat je schrijf-toegang hebt in de sync-map</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="1290"/>
|
||||
|
@ -3259,12 +3262,12 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="1600"/>
|
||||
<source>Disk space is low: Downloads that would reduce free space below %1 were skipped.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Schijfruimte laa: Downloads die de vrije ruimte tot onder %1 zouden reduceren, zijn overgeslagen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="1607"/>
|
||||
<source>There is insufficient space available on the server for some uploads.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Onvoldoende schijfruimte op de server voor sommige uploads.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="167"/>
|
||||
|
@ -3354,7 +3357,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="480"/>
|
||||
<source>The filename cannot be encoded on your file system.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>De bestandsnaam kan je bestandssysteem niet worden gecodeerd.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="489"/>
|
||||
|
@ -3641,12 +3644,12 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="314"/>
|
||||
<source>No sync folders configured</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Geen syncmappen geconfigureerd</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="360"/>
|
||||
<source>Resume all folders</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Doorgaan met alle mappen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="365"/>
|
||||
|
@ -3656,12 +3659,12 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="599"/>
|
||||
<source>Resume all synchronization</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Doorgaan met alle synchronisaties</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="601"/>
|
||||
<source>Resume synchronization</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Doorgaan met synchronisatie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="609"/>
|
||||
|
@ -3846,12 +3849,12 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudoauthcredspage.ui" line="36"/>
|
||||
<source>Please switch to your browser to proceed.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Schakel om naar je browser om door te gaan.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudoauthcredspage.ui" line="46"/>
|
||||
<source>An error occured while connecting. Please try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Er trad een verbindingsfout op. Probeer nogmaals.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudoauthcredspage.ui" line="56"/>
|
||||
|
@ -4188,7 +4191,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/guiutility.cpp" line="34"/>
|
||||
<source>There was an error when launching the browser to go to URL %1. Maybe no default browser is configured?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Er trad een fout op bij het starten van de browser om naar URL %1 te gaan. Misschien is er geen standaardbrowser geconfigureerd?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/guiutility.cpp" line="55"/>
|
||||
|
|
|
@ -2063,7 +2063,7 @@ Não é aconselhável usá-la.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/owncloudsetupwizard.cpp" line="586"/>
|
||||
<source>Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup.</source>
|
||||
<translation>Não é possível remover e fazer backup da pasta porque a pasta ou um arquivo estão abertos em outro programa. Por favor, feche a pasta ou arquivo e tente novamente ou cancele a operação.</translation>
|
||||
<translation>Não é possível remover e fazer backup da pasta porque a pasta ou um arquivo estão abertos em outro programa. Feche a pasta ou arquivo e tente novamente ou cancele a operação.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudsetupwizard.cpp" line="631"/>
|
||||
|
@ -3941,7 +3941,7 @@ Não é aconselhável usá-la.</translation>
|
|||
<message numerus="yes">
|
||||
<location filename="../src/common/utility.cpp" line="456"/>
|
||||
<source>%n minute(s) ago</source>
|
||||
<translation><numerusform>%n minuto atrás</numerusform><numerusform>%n minutos atrás</numerusform></translation>
|
||||
<translation><numerusform>%n minuto(s) atrás</numerusform><numerusform>%n minuto(s) atrás</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/common/utility.cpp" line="459"/>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
<message>
|
||||
<location filename="../src/gui/folderwizardsourcepage.ui" line="44"/>
|
||||
<source>&Choose...</source>
|
||||
<translation>&Izberi ...</translation>
|
||||
<translation>&Izbor ...</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -27,7 +27,7 @@
|
|||
<message>
|
||||
<location filename="../src/gui/folderwizardtargetpage.ui" line="131"/>
|
||||
<source>Select a remote destination folder</source>
|
||||
<translation>Izberite oddaljeno ciljno mapo.</translation>
|
||||
<translation>Izbor oddaljene ciljne mape</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderwizardtargetpage.ui" line="143"/>
|
||||
|
@ -153,12 +153,12 @@
|
|||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="195"/>
|
||||
<source>Add new</source>
|
||||
<translation>Dodaj novo</translation>
|
||||
<translation>Dodaj nov račun</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="203"/>
|
||||
<source>Remove</source>
|
||||
<translation>Odstrani</translation>
|
||||
<translation>Odstrani račun</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="207"/>
|
||||
|
@ -183,7 +183,7 @@
|
|||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="316"/>
|
||||
<source>Remove folder sync connection</source>
|
||||
<translation>Odstrani povezavo mape usklajevanja</translation>
|
||||
<translation>Odstrani povezavo za usklajevanje mape</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="387"/>
|
||||
|
@ -203,7 +203,7 @@
|
|||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="445"/>
|
||||
<source>Remove Folder Sync Connection</source>
|
||||
<translation>Odstrani povezavo usklajevanja mape</translation>
|
||||
<translation>Odstrani povezavo za usklajevanje mape</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="527"/>
|
||||
|
@ -233,7 +233,7 @@
|
|||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="652"/>
|
||||
<source>Connected to %1.</source>
|
||||
<translation>Povezano z %1.</translation>
|
||||
<translation>Vzpostavljena je povezava z %1.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="654"/>
|
||||
|
@ -243,7 +243,7 @@
|
|||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="656"/>
|
||||
<source>Server %1 is currently in maintenance mode.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Strežnik %1 je trenutno v načinu vzdrževanja.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="658"/>
|
||||
|
@ -253,7 +253,7 @@
|
|||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="667"/>
|
||||
<source>Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Poteka pridobitev overitve prek brskalnika. <a href='%1'>Kliknite</a> to za ponovno odpiranje brskalnika.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="671"/>
|
||||
|
@ -263,7 +263,7 @@
|
|||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="674"/>
|
||||
<source>No connection to %1 at %2.</source>
|
||||
<translation>Ni povezave z %1 pri %2.</translation>
|
||||
<translation>S strežnikom %1 ni vzpostavljene povezave (%2).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="698"/>
|
||||
|
@ -288,12 +288,12 @@
|
|||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="834"/>
|
||||
<source>Confirm Account Removal</source>
|
||||
<translation>Potrdi odstranitev računa</translation>
|
||||
<translation>Potrdi odstranjevanje računa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="835"/>
|
||||
<source><p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p></source>
|
||||
<translation><p>Ali res želite odstraniti povezavo z računom <i>%1</i>?</p><p><b>Opomba:</b> S tem <b>ne bo</b> izbrisana nobena datoteka.</p></translation>
|
||||
<translation><p>Ali res želite odstraniti povezavo z računom <i>%1</i>?</p><p><b>Opomba:</b> odstranitev ovezave <b>ne izbriše</b> nobene datoteke.</p></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="841"/>
|
||||
|
@ -310,7 +310,7 @@
|
|||
<location filename="../src/gui/accountsettings.cpp" line="199"/>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="700"/>
|
||||
<source>Log out</source>
|
||||
<translation>Odjava</translation>
|
||||
<translation>Odjavi račun</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/accountsettings.cpp" line="313"/>
|
||||
|
@ -425,13 +425,13 @@
|
|||
<message>
|
||||
<location filename="../src/gui/activitywidget.cpp" line="571"/>
|
||||
<source>Not Synced</source>
|
||||
<translation>Ni usklajeno</translation>
|
||||
<translation>Neusklajeno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/activitywidget.cpp" line="574"/>
|
||||
<source>Not Synced (%1)</source>
|
||||
<extracomment>%1 is the number of not synced files.</extracomment>
|
||||
<translation>Ni usklajeno (%1)</translation>
|
||||
<translation>Neusklajeno ( %1 )</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/activitywidget.cpp" line="606"/>
|
||||
|
@ -768,7 +768,10 @@
|
|||
These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore.
|
||||
If you decide to keep the files, they will be re-synced with the server if you have rights to do so.
|
||||
If you decide to delete the files, they will be unavailable to you, unless you are the owner.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Vse datoteke v usklajevani mapi »%1« so bile na strežniku izbrisane.
|
||||
Sprememba bo usklajena tudi s krajevno mapo na disku, zato bodo te datoteke, če ni ustreznih dovoljenj za obnovitev, izgubljene.
|
||||
V kolikor se odločite datoteke ohraniti in so na voljo ustrezna dovoljenja, bodo te spet usklajene s strežnikom.
|
||||
Nasprotno, če potrdite izbris in niste lastnik datotek, te ne bodo več na voljo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folder.cpp" line="932"/>
|
||||
|
@ -829,7 +832,7 @@ Z nadaljevanjem usklajevanja bodo vse trenutne datoteke prepisane s starejšimi
|
|||
<message>
|
||||
<location filename="../src/gui/folderman.cpp" line="312"/>
|
||||
<source>An old sync journal '%1' was found, but could not be removed. Please make sure that no application is currently using it.</source>
|
||||
<translation>Obstaja starejši dnevnik usklajevanja '%1', vendar ga ni mogoče odstraniti. Preverite, ali je datoteka v uporabi.</translation>
|
||||
<translation>Obstaja star dnevnik usklajevanja »%1«, ki pa ga ni mogoče odstraniti. Preverite, ali je datoteka morda v uporabi.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderman.cpp" line="1054"/>
|
||||
|
@ -854,7 +857,7 @@ Z nadaljevanjem usklajevanja bodo vse trenutne datoteke prepisane s starejšimi
|
|||
<message>
|
||||
<location filename="../src/gui/folderman.cpp" line="1271"/>
|
||||
<source>Preparing for sync.</source>
|
||||
<translation>Poteka priprava za usklajevanje.</translation>
|
||||
<translation>Poteka priprava na usklajevanje.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderman.cpp" line="1274"/>
|
||||
|
@ -942,7 +945,7 @@ Z nadaljevanjem usklajevanja bodo vse trenutne datoteke prepisane s starejšimi
|
|||
<message>
|
||||
<location filename="../src/gui/folderstatusdelegate.cpp" line="249"/>
|
||||
<source>Synchronizing with local folder</source>
|
||||
<translation>Poteka usklajevanje s krajevno mapo</translation>
|
||||
<translation>Datoteke so usklajene v krajevni mapi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderstatusdelegate.cpp" line="296"/>
|
||||
|
@ -1230,7 +1233,7 @@ Z nadaljevanjem usklajevanja bodo vse trenutne datoteke prepisane s starejšimi
|
|||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="171"/>
|
||||
<source>Ask for confirmation before synchronizing folders larger than</source>
|
||||
<translation>Vprašaj za potrditev pred usklajevanjem map, večjih kot</translation>
|
||||
<translation>Zahtevaj potrditev pred usklajevanjem map, večjih od</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="191"/>
|
||||
|
@ -1261,7 +1264,7 @@ Z nadaljevanjem usklajevanja bodo vse trenutne datoteke prepisane s starejšimi
|
|||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="147"/>
|
||||
<source>Edit &Ignored Files</source>
|
||||
<translation>Uredi &prezrte datoteke</translation>
|
||||
<translation>Uredi &neusklajevane datoteke</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="232"/>
|
||||
|
@ -1272,7 +1275,7 @@ Z nadaljevanjem usklajevanja bodo vse trenutne datoteke prepisane s starejšimi
|
|||
<location filename="../src/gui/generalsettings.ui" line="53"/>
|
||||
<location filename="../src/gui/generalsettings.ui" line="65"/>
|
||||
<source>About</source>
|
||||
<translation>O programu...</translation>
|
||||
<translation>O programu ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="75"/>
|
||||
|
@ -1313,22 +1316,22 @@ Z nadaljevanjem usklajevanja bodo vse trenutne datoteke prepisane s starejšimi
|
|||
<message>
|
||||
<location filename="../src/gui/ignorelisteditor.ui" line="14"/>
|
||||
<source>Ignored Files Editor</source>
|
||||
<translation>Urejevalnik prezrtih datotek</translation>
|
||||
<translation>Urejevalnik neusklajevanih datotek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/ignorelisteditor.ui" line="20"/>
|
||||
<source>Global Ignore Settings</source>
|
||||
<translation>Splošne nastavitve prezrtih datotek</translation>
|
||||
<translation>Splošne nastavitve neusklajevanih datotek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/ignorelisteditor.ui" line="26"/>
|
||||
<source>Sync hidden files</source>
|
||||
<translation>Uskladi tudi skrite datoteke</translation>
|
||||
<translation>Usklajuj tudi skrite datoteke</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/ignorelisteditor.ui" line="36"/>
|
||||
<source>Files Ignored by Patterns</source>
|
||||
<translation>Datoteke, prezrte po vzorcu</translation>
|
||||
<translation>Maske neusklajevanih datotek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/ignorelisteditor.ui" line="55"/>
|
||||
|
@ -1338,7 +1341,7 @@ Z nadaljevanjem usklajevanja bodo vse trenutne datoteke prepisane s starejšimi
|
|||
<message>
|
||||
<location filename="../src/gui/ignorelisteditor.ui" line="75"/>
|
||||
<source>Pattern</source>
|
||||
<translation>Vzorec</translation>
|
||||
<translation>Maska</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/ignorelisteditor.ui" line="80"/>
|
||||
|
@ -1355,9 +1358,9 @@ Z nadaljevanjem usklajevanja bodo vse trenutne datoteke prepisane s starejšimi
|
|||
<source>Files or folders matching a pattern will not be synchronized.
|
||||
|
||||
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
|
||||
<translation>Datoteke in mape, ki so skladne z vzorcem, ne bodo usklajevane.
|
||||
<translation>Datoteke in mape, ki so skladne z masko, ne bodo usklajevane.
|
||||
|
||||
Predmeti na mestu, kjer je brisanje dovoljeno, bodo izbisani, v kolikor zaradi njih brisanje mape ni mogoče. Možnost je uporabna pri metapodatkih.</translation>
|
||||
Predmeti v mapah, ki jih je dovoljeno izbrisati, bodo odstranjeni, če preprečujejo brisanje mape. Možnost je uporabna pri odstranjevanju metapodatkov.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/ignorelisteditor.cpp" line="117"/>
|
||||
|
@ -1372,12 +1375,12 @@ Predmeti na mestu, kjer je brisanje dovoljeno, bodo izbisani, v kolikor zaradi n
|
|||
<message>
|
||||
<location filename="../src/gui/ignorelisteditor.cpp" line="145"/>
|
||||
<source>Add Ignore Pattern</source>
|
||||
<translation>Dodaj vzorec za izpuščanje</translation>
|
||||
<translation>Dodaj masko za neusklajevanje</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/ignorelisteditor.cpp" line="146"/>
|
||||
<source>Add a new ignore pattern:</source>
|
||||
<translation>Dodaj nov vzorec za izpuščanje:</translation>
|
||||
<translation>Dodaj novo masko za neusklajevanje:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
|
||||
|
@ -1422,7 +1425,7 @@ Predmeti na mestu, kjer je brisanje dovoljeno, bodo izbisani, v kolikor zaradi n
|
|||
<message>
|
||||
<location filename="../src/gui/issueswidget.ui" line="83"/>
|
||||
<source>Show ignored files</source>
|
||||
<translation>Pokaži prezrte datoteke</translation>
|
||||
<translation>Pokaži neusklajevane datoteke</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/issueswidget.ui" line="133"/>
|
||||
|
@ -1475,7 +1478,7 @@ Predmeti na mestu, kjer je brisanje dovoljeno, bodo izbisani, v kolikor zaradi n
|
|||
<message>
|
||||
<location filename="../src/gui/logbrowser.cpp" line="89"/>
|
||||
<source>&Capture debug messages</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>&Zajemi sporočila razhroščevanja</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/logbrowser.cpp" line="101"/>
|
||||
|
@ -1599,7 +1602,7 @@ Predmeti na mestu, kjer je brisanje dovoljeno, bodo izbisani, v kolikor zaradi n
|
|||
<message>
|
||||
<location filename="../src/gui/networksettings.ui" line="190"/>
|
||||
<source>Download Bandwidth</source>
|
||||
<translation>Pasovna širina prejemanja</translation>
|
||||
<translation>Hitrost prejemanja</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/networksettings.ui" line="196"/>
|
||||
|
@ -1611,24 +1614,24 @@ Predmeti na mestu, kjer je brisanje dovoljeno, bodo izbisani, v kolikor zaradi n
|
|||
<location filename="../src/gui/networksettings.ui" line="241"/>
|
||||
<location filename="../src/gui/networksettings.ui" line="320"/>
|
||||
<source>KBytes/s</source>
|
||||
<translation>KBajtov/s</translation>
|
||||
<translation>kbajtov/s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/networksettings.ui" line="203"/>
|
||||
<location filename="../src/gui/networksettings.ui" line="292"/>
|
||||
<source>No limit</source>
|
||||
<translation>Ni omejitve</translation>
|
||||
<translation>Brez omejitve</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/networksettings.ui" line="250"/>
|
||||
<location filename="../src/gui/networksettings.ui" line="282"/>
|
||||
<source>Limit to 3/4 of estimated bandwidth</source>
|
||||
<translation>Omeji prenos na 3/4 ocenjene pasovne širine</translation>
|
||||
<translation>Omeji prenos na 3/4 ocenjene hitrosti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/networksettings.ui" line="269"/>
|
||||
<source>Upload Bandwidth</source>
|
||||
<translation>Pasovna širina pošiljanja</translation>
|
||||
<translation>Hitrost pošiljanja</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/networksettings.ui" line="253"/>
|
||||
|
@ -1692,7 +1695,7 @@ Predmeti na mestu, kjer je brisanje dovoljeno, bodo izbisani, v kolikor zaradi n
|
|||
<message>
|
||||
<location filename="../src/gui/creds/oauth.cpp" line="112"/>
|
||||
<source>Error returned from the server: <em>%1</em></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>S strežnika je prejet odziv o napaki: <em>%1</em></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/creds/oauth.cpp" line="115"/>
|
||||
|
@ -1712,7 +1715,7 @@ Predmeti na mestu, kjer je brisanje dovoljeno, bodo izbisani, v kolikor zaradi n
|
|||
<message>
|
||||
<location filename="../src/gui/creds/oauth.cpp" line="125"/>
|
||||
<source><h1>Login Error</h1><p>%1</p></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><h1>Napaka prijave</h1><p>%1</p></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/creds/oauth.cpp" line="131"/>
|
||||
|
@ -1885,7 +1888,7 @@ zahteva skrbniška dovoljenja za dokončanje opravila.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudoauthcredspage.cpp" line="44"/>
|
||||
<source>Login in your browser</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Prijava v brskalniku</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -1963,7 +1966,7 @@ Uporaba ni priporočljiva.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
|
||||
<source>The server reported the following error:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Strežnik je vrnil napako:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudsetupwizard.cpp" line="452"/>
|
||||
|
@ -2060,7 +2063,7 @@ Uporaba ni priporočljiva.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/owncloudsetupwizard.cpp" line="586"/>
|
||||
<source>Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup.</source>
|
||||
<translation>Mape ni mogoče odstraniti niti ni mogoče ustvariti varnostne kopije, saj je mapa oziroma dokument v njej odprt z drugim programom. Zaprite mapo/dokument ali prekinite namestitev.</translation>
|
||||
<translation>Mape ni mogoče odstraniti niti ni mogoče ustvariti varnostne kopije, ker je mapa, oziroma dokument v njej, odprt v drugem programu. Zaprite mapo oziroma dokument, ali pa prekinite namestitev.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudsetupwizard.cpp" line="631"/>
|
||||
|
@ -2125,7 +2128,7 @@ Uporaba ni priporočljiva.</translation>
|
|||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="459"/>
|
||||
<source>The download would reduce free local disk space below the limit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Prejem predmetov bi zmanjšal prostor na krajevnem disku pod omejitev.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="463"/>
|
||||
|
@ -2209,12 +2212,12 @@ Uporaba ni priporočljiva.</translation>
|
|||
<message>
|
||||
<location filename="../src/libsync/propagatorjobs.cpp" line="101"/>
|
||||
<source>Could not remove folder '%1'</source>
|
||||
<translation>Ni mogoče odstraniti mape '%1'</translation>
|
||||
<translation>Mape »%1« ni mogoče odstraniti.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatorjobs.cpp" line="120"/>
|
||||
<source>Could not remove %1 because of a local file name clash</source>
|
||||
<translation>Ni mogoče odstraniti %1 zaradi neskladja s krajevnim imenom datoteke</translation>
|
||||
<translation>Predmeta »%1« ni mogoče odstraniti zaradi neskladja s krajevnim imenom datoteke.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -2312,7 +2315,7 @@ Uporaba ni priporočljiva.</translation>
|
|||
<location filename="../src/libsync/propagateupload.cpp" line="186"/>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="549"/>
|
||||
<source>Upload of %1 exceeds the quota for the folder</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Pošiljanje %1 preseže omejitev, določeno za mapo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="622"/>
|
||||
|
@ -2770,7 +2773,7 @@ Uporaba ni priporočljiva.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/sharelinkwidget.cpp" line="254"/>
|
||||
<source>Delete link share</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Izbriši povezavo za souporabo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharelinkwidget.cpp" line="459"/>
|
||||
|
@ -2931,12 +2934,12 @@ Uporaba ni priporočljiva.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="567"/>
|
||||
<source>Copy private link to clipboard</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Kopiraj zasebno povezavo v odložišče</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="568"/>
|
||||
<source>Send private link by email...</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Pošlji zasebno povezavo po elektronski pošti ...</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -3219,12 +3222,12 @@ Uporaba ni priporočljiva.</translation>
|
|||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="474"/>
|
||||
<source>File/Folder is ignored because it's hidden.</source>
|
||||
<translation>Datoteka/Mapa je prezrta, ker je skrita.</translation>
|
||||
<translation>Datoteka/Mapa ni usklajevana, ker je skrita.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="477"/>
|
||||
<source>Folder hierarchy is too deep</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Zaznano je preveliko število ravni map</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="493"/>
|
||||
|
@ -3320,7 +3323,7 @@ Uporaba ni priporočljiva.</translation>
|
|||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="446"/>
|
||||
<source>File is listed on the ignore list.</source>
|
||||
<translation>Datoteka je na seznamu prezrtih datotek.</translation>
|
||||
<translation>Datoteka je na seznamu neusklajevanih datotek.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="450"/>
|
||||
|
@ -3396,7 +3399,7 @@ Uporaba ni priporočljiva.</translation>
|
|||
<location filename="../src/libsync/syncengine.cpp" line="1216"/>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="1256"/>
|
||||
<source>Ignored because of the "choose what to sync" blacklist</source>
|
||||
<translation>Prezrto, ker je predmet označen na črni listi za usklajevanje</translation>
|
||||
<translation>Predmet ni usklajevan, ker je na »črnem seznamu datotek« za usklajevanje</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="1275"/>
|
||||
|
@ -3461,7 +3464,7 @@ Uporaba ni priporočljiva.</translation>
|
|||
<message>
|
||||
<location filename="../src/libsync/theme.cpp" line="315"/>
|
||||
<source><p>Version %1. For more information please visit <a href='%2'>%3</a>.</p></source>
|
||||
<translation><p>Različica %1. Za več podrobnosti si oglejte <a href='%2'>%3</a>.</p></translation>
|
||||
<translation><p>Različica %1. Podrobnosti so na voljo na spletišču <a href='%2'>%3</a>.</p></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/theme.cpp" line="320"/>
|
||||
|
@ -3642,7 +3645,7 @@ Uporaba ni priporočljiva.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="360"/>
|
||||
<source>Resume all folders</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Nadaljuj z usklajevanjem vseh map</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="365"/>
|
||||
|
@ -3652,12 +3655,12 @@ Uporaba ni priporočljiva.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="599"/>
|
||||
<source>Resume all synchronization</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Nadaljuj z vsemi usklajevanji</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="601"/>
|
||||
<source>Resume synchronization</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Nadaljuj z usklajevanjem</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="609"/>
|
||||
|
@ -3731,7 +3734,7 @@ Uporaba ni priporočljiva.</translation>
|
|||
<message>
|
||||
<location filename="../src/libsync/owncloudtheme.cpp" line="46"/>
|
||||
<source><p>Version %2. For more information visit <a href="%3">https://%4</a></p><p>For known issues and help, please visit: <a href="https://central.owncloud.org/c/desktop-client">https://central.owncloud.org</a></p><p><small>By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.</small></p><p>Copyright ownCloud GmbH</p><p>Licensed under the GNU General Public License (GPL) Version 2.0<br/>ownCloud and the ownCloud Logo are registered trademarks of ownCloud GmbH in the United States, other countries, or both.</p></source>
|
||||
<translation><p>Različica %2. Več podrobnosti je mogoče najti na <a href="%3">https://%4</a></p><p>Znane težave in pomoč je na voljo na povezavi <a href="https://central.owncloud.org/c/desktop-client">https://central.owncloud.org</a>.</p><p><small>Avtorstvo: Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt in drugi.</small></p><p>Avtorske pravice ownCloud GmbH</p><p>Programski paket je objavljen z dovoljenjem GNU General Public License (GPL), različice 2.0.<br/>Znamka in logotip ownCloud sta blagovni znamki družbe ownCloud GmbH v Združenih državah, drugih državah ali obojih.</p></translation>
|
||||
<translation><p>Različica %2. Podrobnosti so na voljo na spletišču <a href="%3">https://%4</a></p><p>Pomoč za znane težave je na voljo na povezavi <a href="https://central.owncloud.org/c/desktop-client">https://central.owncloud.org</a>.</p><p><small>Avtorstvo: Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt in drugi.</small></p><p>Avtorske pravice ownCloud GmbH</p><p>Programski paket je objavljen z dovoljenjem GNU General Public License (GPL), različice 2.0.<br/>Znamka in logotip ownCloud sta blagovni znamki družbe ownCloud GmbH v Združenih državah, drugih državah ali obojih.</p></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -3770,7 +3773,7 @@ Uporaba ni priporočljiva.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="301"/>
|
||||
<source>Ask for confirmation before synchroni&zing folders larger than</source>
|
||||
<translation>Vprašaj za potrditev pred usklajevan&jem map, večjih kot</translation>
|
||||
<translation>Zahtevaj potrditev pred usklajevan&jem map, večjih od</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
|
||||
|
@ -3967,7 +3970,7 @@ Uporaba ni priporočljiva.</translation>
|
|||
<message>
|
||||
<location filename="../src/common/utility.cpp" line="138"/>
|
||||
<source>%L1 KB</source>
|
||||
<translation>%L1 KB</translation>
|
||||
<translation>%L1 kb</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/common/utility.cpp" line="141"/>
|
||||
|
@ -4061,7 +4064,7 @@ Uporaba ni priporočljiva.</translation>
|
|||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
|
||||
<source>Ignored</source>
|
||||
<translation>Prezrto</translation>
|
||||
<translation>Neusklajeno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
|
||||
|
@ -4146,7 +4149,7 @@ Uporaba ni priporočljiva.</translation>
|
|||
<message>
|
||||
<location filename="../src/libsync/theme.cpp" line="72"/>
|
||||
<source>Sync Success, some files were ignored.</source>
|
||||
<translation>Usklajevanje je končano, ostajajo pa nerešene težave s posameznimi datotekami.</translation>
|
||||
<translation>Usklajevanje je končano, nekatere datoteke niso bile usklajene.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/theme.cpp" line="75"/>
|
||||
|
|
|
@ -388,7 +388,7 @@
|
|||
<message>
|
||||
<location filename="../src/gui/accountstate.cpp" line="138"/>
|
||||
<source>Asking Credentials</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Frågar efter inloggningsuppgifter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/accountstate.cpp" line="140"/>
|
||||
|
@ -768,14 +768,19 @@
|
|||
These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore.
|
||||
If you decide to keep the files, they will be re-synced with the server if you have rights to do so.
|
||||
If you decide to delete the files, they will be unavailable to you, unless you are the owner.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Alla filer i den synkade mappen '%1' raderades på servern.
|
||||
Dessa raderingar kommer att synkroniseras till din lokalt synkade mapp och göra filerna otillgängliga, om du inte har möjlighet att återställa.
|
||||
Om du vill behålla dessa filer kommer dom att synkroniseras till servern på nytt, om du har rättighet att göra det.
|
||||
Om du raderar filerna kommer dom att vara otillgängliga för dig, om du inte är ägaren.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folder.cpp" line="932"/>
|
||||
<source>All the files in your local sync folder '%1' were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored.
|
||||
Are you sure you want to sync those actions with the server?
|
||||
If this was an accident and you decide to keep your files, they will be re-synced from the server.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Alla filer i din lokalt synkade mappen '%1' raderades. Dessa raderingar kommer att synkroniseras med servern och göra filerna otillgängliga, om dom inte återställs.
|
||||
Är du säker på att du vill synka ändringarna till servern?
|
||||
Om detta var ett misstag och du vill behålla dina filer, kommer dom att synkroniseras på nytt från servern.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folder.cpp" line="936"/>
|
||||
|
@ -995,7 +1000,7 @@ Om du fortsätter synkningen kommer alla dina filer återställas med en äldre
|
|||
<message>
|
||||
<location filename="../src/gui/folderstatusmodel.cpp" line="884"/>
|
||||
<source>Reconciling changes</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>slå ihop förärändringar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderstatusmodel.cpp" line="919"/>
|
||||
|
@ -1425,7 +1430,7 @@ Objekt som tillåter radering kommer tas bort om de förhindrar en mapp att tas
|
|||
<message>
|
||||
<location filename="../src/gui/issueswidget.ui" line="133"/>
|
||||
<source>There were too many issues. Not all will be visible here.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Det var för många problem. Alla kommer inte att vara synliga här.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/issueswidget.ui" line="155"/>
|
||||
|
@ -1695,7 +1700,7 @@ Objekt som tillåter radering kommer tas bort om de förhindrar en mapp att tas
|
|||
<message>
|
||||
<location filename="../src/gui/creds/oauth.cpp" line="115"/>
|
||||
<source>There was an error accessing the 'token' endpoint: <br><em>%1</em></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Fel uppstod vid åtkomst till 'token' endpoint: <br><em>%1</em></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/creds/oauth.cpp" line="118"/>
|
||||
|
@ -2289,7 +2294,7 @@ Det är inte lämpligt använda den.</translation>
|
|||
<message>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="175"/>
|
||||
<source>File %1 cannot be uploaded because another file with the same name, differing only in case, exists</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Fil %1 kan inte laddas upp eftersom en annan fil med samma namn, där endast stora/små bokstäver skiljer sig, existerar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="291"/>
|
||||
|
@ -2747,12 +2752,12 @@ Det är inte lämpligt använda den.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
|
||||
<source>Confirm Link Share Deletion</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Bekräfta radering av delad länk</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharelinkwidget.cpp" line="521"/>
|
||||
<source><p>Do you really want to delete the public link share <i>%1</i>?</p><p>Note: This action cannot be undone.</p></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><p>Vill du verkligen radera den publikt delade länken <i>%1</i>?</p><p>Obs: Den här åtgärden kan inte ångras.</p></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharelinkwidget.cpp" line="528"/>
|
||||
|
@ -2768,7 +2773,7 @@ Det är inte lämpligt använda den.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/sharelinkwidget.cpp" line="254"/>
|
||||
<source>Delete link share</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Radera delad länk</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharelinkwidget.cpp" line="459"/>
|
||||
|
@ -2796,12 +2801,12 @@ Det är inte lämpligt använda den.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/shareusergroupwidget.ui" line="108"/>
|
||||
<source><html><head/><body><p>You can direct people to this shared file or folder <a href="private link menu"><span style=" text-decoration: underline; color:#0000ff;">by giving them a private link</span></a>.</p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><html><head/><body><p>Du kan hänvisa till den delade filen eller mappen <a href="private link menu"><span style=" text-decoration: underline; color:#0000ff;">genom att ge en privat länk</span></a>.</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/shareusergroupwidget.cpp" line="186"/>
|
||||
<source>The item is not shared with any users or groups</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Objektet delas inte med några användare eller grupper</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/shareusergroupwidget.cpp" line="235"/>
|
||||
|
@ -3348,7 +3353,7 @@ Det är inte lämpligt använda den.</translation>
|
|||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="480"/>
|
||||
<source>The filename cannot be encoded on your file system.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Filnamnet kan inte kodas på ditt filsystem.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="489"/>
|
||||
|
@ -3599,7 +3604,7 @@ Det är inte lämpligt använda den.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="240"/>
|
||||
<source>Disconnected from some accounts</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Nedkopplad från vissa konton</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="251"/>
|
||||
|
@ -3625,7 +3630,7 @@ Det är inte lämpligt använda den.</translation>
|
|||
<location filename="../src/gui/owncloudgui.cpp" line="273"/>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="304"/>
|
||||
<source>Synchronization is paused</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Synkroniseringen är pausad</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="306"/>
|
||||
|
@ -3640,7 +3645,7 @@ Det är inte lämpligt använda den.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="360"/>
|
||||
<source>Resume all folders</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Återuppta alla mappar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="365"/>
|
||||
|
@ -3650,12 +3655,12 @@ Det är inte lämpligt använda den.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="599"/>
|
||||
<source>Resume all synchronization</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Återuppta all synkronisering</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="601"/>
|
||||
<source>Resume synchronization</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Återuppta synkronisering</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="609"/>
|
||||
|
|
|
@ -415,7 +415,7 @@
|
|||
<location filename="../src/gui/activitywidget.cpp" line="515"/>
|
||||
<location filename="../src/gui/activitywidget.cpp" line="563"/>
|
||||
<source>Server Activity</source>
|
||||
<translation>Sunucu Etkinliği</translation>
|
||||
<translation>Sunucu İşlemleri</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/activitywidget.cpp" line="522"/>
|
||||
|
@ -436,12 +436,12 @@
|
|||
<message>
|
||||
<location filename="../src/gui/activitywidget.cpp" line="606"/>
|
||||
<source>The server activity list has been copied to the clipboard.</source>
|
||||
<translation>Sunucu etkinliği listesi panoya kopyalandı.</translation>
|
||||
<translation>Sunucu işlemleri listesi panoya kopyalandı.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/activitywidget.cpp" line="610"/>
|
||||
<source>The sync activity list has been copied to the clipboard.</source>
|
||||
<translation>Eşitleme etkinliği listesi panoya kopyalandı.</translation>
|
||||
<translation>Eşitleme işlemi listesi panoya kopyalandı.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/activitywidget.cpp" line="613"/>
|
||||
|
@ -481,7 +481,7 @@
|
|||
<message>
|
||||
<location filename="../src/gui/activitywidget.cpp" line="88"/>
|
||||
<source>Copy the activity list to the clipboard.</source>
|
||||
<translation>Etkinlik listesini panoya kopyala.</translation>
|
||||
<translation>İşlem listesini panoya kopyala.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/activitywidget.cpp" line="135"/>
|
||||
|
@ -736,7 +736,7 @@
|
|||
<message>
|
||||
<location filename="../src/gui/folder.cpp" line="414"/>
|
||||
<source>Sync Activity</source>
|
||||
<translation>Eşitleme Etkinliği</translation>
|
||||
<translation>Eşitleme İşlemi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folder.cpp" line="640"/>
|
||||
|
@ -2526,7 +2526,7 @@ Kullanmanız önerilmez.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/settingsdialog.cpp" line="109"/>
|
||||
<source>Activity</source>
|
||||
<translation>Etkinlik</translation>
|
||||
<translation>İşlem</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/settingsdialog.cpp" line="118"/>
|
||||
|
@ -2554,7 +2554,7 @@ Kullanmanız önerilmez.</translation>
|
|||
<message>
|
||||
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
|
||||
<source>Activity</source>
|
||||
<translation>Etkinlik</translation>
|
||||
<translation>İşlem</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
|
||||
|
|
|
@ -768,7 +768,10 @@
|
|||
These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore.
|
||||
If you decide to keep the files, they will be re-synced with the server if you have rights to do so.
|
||||
If you decide to delete the files, they will be unavailable to you, unless you are the owner.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>服务器已经删除“%1”同步文件夹中的所有文件。
|
||||
这些删除将同步到您的本地同步文件夹,除非您有权恢复,否则这些文件将不可用。
|
||||
如果你决定保留这些文件,它们将重新同步到服务器如果你有权限的话。
|
||||
如果你决定删除这些文件,除非你是所有者否则它们将不可用。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folder.cpp" line="932"/>
|
||||
|
@ -1698,12 +1701,12 @@ Items where deletion is allowed will be deleted if they prevent a directory from
|
|||
<message>
|
||||
<location filename="../src/gui/creds/oauth.cpp" line="115"/>
|
||||
<source>There was an error accessing the 'token' endpoint: <br><em>%1</em></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>访问“token”端时出错:<br><em>%1</em></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/creds/oauth.cpp" line="118"/>
|
||||
<source>Could not parse the JSON returned from the server: <br><em>%1</em></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>无法解析从服务器返回的JSON信息:<br><em>%1</em></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/creds/oauth.cpp" line="121"/>
|
||||
|
@ -1718,7 +1721,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
|
|||
<message>
|
||||
<location filename="../src/gui/creds/oauth.cpp" line="131"/>
|
||||
<source><h1>Wrong user</h1><p>You logged-in with user <em>%1</em>, but must login with user <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in as user %2</p></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><h1>错误的用户</h1><p>你必须登录用户<em>%2</em>,但你登录了用户<em>%1</em>。<br>请在另一个标签中注销%3,然后<a href='%4'>点击这里</a>登录用户%2</p></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -2124,7 +2127,7 @@ It is not advisable to use it.</source>
|
|||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="459"/>
|
||||
<source>The download would reduce free local disk space below the limit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>下载将减少低于限制的空闲本地磁盘空间</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="463"/>
|
||||
|
@ -2753,7 +2756,7 @@ It is not advisable to use it.</source>
|
|||
<message>
|
||||
<location filename="../src/gui/sharelinkwidget.cpp" line="521"/>
|
||||
<source><p>Do you really want to delete the public link share <i>%1</i>?</p><p>Note: This action cannot be undone.</p></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><p>你真的想删除公开共享链接 <i>%1</i>?注意: 此操作无法撤销.</p></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharelinkwidget.cpp" line="528"/>
|
||||
|
@ -2797,7 +2800,7 @@ It is not advisable to use it.</source>
|
|||
<message>
|
||||
<location filename="../src/gui/shareusergroupwidget.ui" line="108"/>
|
||||
<source><html><head/><body><p>You can direct people to this shared file or folder <a href="private link menu"><span style=" text-decoration: underline; color:#0000ff;">by giving them a private link</span></a>.</p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><html><head/><body><p>您可以通过为其提供私有链接来引导人们访问 <a href="private link menu"><span style=" text-decoration: underline; color:#0000ff;">共享的文件或文件夹</span></a>。</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/shareusergroupwidget.cpp" line="186"/>
|
||||
|
@ -3641,7 +3644,7 @@ It is not advisable to use it.</source>
|
|||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="360"/>
|
||||
<source>Resume all folders</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>恢复所有文件夹</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="365"/>
|
||||
|
@ -3651,12 +3654,12 @@ It is not advisable to use it.</source>
|
|||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="599"/>
|
||||
<source>Resume all synchronization</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>恢复所有同步</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="601"/>
|
||||
<source>Resume synchronization</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>恢复同步</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="609"/>
|
||||
|
|
Loading…
Reference in a new issue