summaryrefslogtreecommitdiffstats
path: root/apps/files
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files')
-rw-r--r--apps/files/js/fileactions.js2
-rw-r--r--apps/files/l10n/ar.js6
-rw-r--r--apps/files/l10n/ar.json6
-rw-r--r--apps/files/l10n/ast.js3
-rw-r--r--apps/files/l10n/ast.json3
-rw-r--r--apps/files/l10n/ca.js3
-rw-r--r--apps/files/l10n/ca.json3
-rw-r--r--apps/files/l10n/cs.js33
-rw-r--r--apps/files/l10n/cs.json33
-rw-r--r--apps/files/l10n/da.js3
-rw-r--r--apps/files/l10n/da.json3
-rw-r--r--apps/files/l10n/de.js28
-rw-r--r--apps/files/l10n/de.json28
-rw-r--r--apps/files/l10n/de_DE.js24
-rw-r--r--apps/files/l10n/de_DE.json24
-rw-r--r--apps/files/l10n/el.js33
-rw-r--r--apps/files/l10n/el.json33
-rw-r--r--apps/files/l10n/en_GB.js6
-rw-r--r--apps/files/l10n/en_GB.json6
-rw-r--r--apps/files/l10n/es.js3
-rw-r--r--apps/files/l10n/es.json3
-rw-r--r--apps/files/l10n/es_MX.js3
-rw-r--r--apps/files/l10n/es_MX.json3
-rw-r--r--apps/files/l10n/eu.js3
-rw-r--r--apps/files/l10n/eu.json3
-rw-r--r--apps/files/l10n/fi.js25
-rw-r--r--apps/files/l10n/fi.json25
-rw-r--r--apps/files/l10n/fr.js3
-rw-r--r--apps/files/l10n/fr.json3
-rw-r--r--apps/files/l10n/ga.js24
-rw-r--r--apps/files/l10n/ga.json24
-rw-r--r--apps/files/l10n/gl.js6
-rw-r--r--apps/files/l10n/gl.json6
-rw-r--r--apps/files/l10n/it.js3
-rw-r--r--apps/files/l10n/it.json3
-rw-r--r--apps/files/l10n/ja.js3
-rw-r--r--apps/files/l10n/ja.json3
-rw-r--r--apps/files/l10n/ko.js3
-rw-r--r--apps/files/l10n/ko.json3
-rw-r--r--apps/files/l10n/nb.js3
-rw-r--r--apps/files/l10n/nb.json3
-rw-r--r--apps/files/l10n/pl.js3
-rw-r--r--apps/files/l10n/pl.json3
-rw-r--r--apps/files/l10n/pt_BR.js24
-rw-r--r--apps/files/l10n/pt_BR.json24
-rw-r--r--apps/files/l10n/ru.js3
-rw-r--r--apps/files/l10n/ru.json3
-rw-r--r--apps/files/l10n/sk.js3
-rw-r--r--apps/files/l10n/sk.json3
-rw-r--r--apps/files/l10n/sl.js2
-rw-r--r--apps/files/l10n/sl.json2
-rw-r--r--apps/files/l10n/sr.js3
-rw-r--r--apps/files/l10n/sr.json3
-rw-r--r--apps/files/l10n/sv.js6
-rw-r--r--apps/files/l10n/sv.json6
-rw-r--r--apps/files/l10n/tr.js3
-rw-r--r--apps/files/l10n/tr.json3
-rw-r--r--apps/files/l10n/uk.js3
-rw-r--r--apps/files/l10n/uk.json3
-rw-r--r--apps/files/l10n/zh_CN.js3
-rw-r--r--apps/files/l10n/zh_CN.json3
-rw-r--r--apps/files/l10n/zh_HK.js6
-rw-r--r--apps/files/l10n/zh_HK.json6
-rw-r--r--apps/files/l10n/zh_TW.js6
-rw-r--r--apps/files/l10n/zh_TW.json6
-rw-r--r--apps/files/lib/AppInfo/Application.php7
-rw-r--r--apps/files/src/actions/deleteAction.ts2
-rw-r--r--apps/files/src/actions/downloadAction.spec.ts4
-rw-r--r--apps/files/src/actions/downloadAction.ts11
-rw-r--r--apps/files/src/actions/editLocallyAction.spec.ts43
-rw-r--r--apps/files/src/actions/editLocallyAction.ts57
-rw-r--r--apps/files/src/actions/favoriteAction.ts2
-rw-r--r--apps/files/src/actions/moveOrCopyActionUtils.ts8
-rw-r--r--apps/files/src/actions/sidebarAction.ts2
-rw-r--r--apps/files/src/components/BreadCrumbs.vue1
-rw-r--r--apps/files/src/components/DragAndDropNotice.vue2
-rw-r--r--apps/files/src/components/FileEntry.vue4
-rw-r--r--apps/files/src/components/FileEntry/FileEntryActions.vue43
-rw-r--r--apps/files/src/components/FileEntry/FileEntryCheckbox.vue11
-rw-r--r--apps/files/src/components/FileEntry/FileEntryName.vue60
-rw-r--r--apps/files/src/components/FileEntryMixin.ts44
-rw-r--r--apps/files/src/components/FileListFilters.vue10
-rw-r--r--apps/files/src/components/FilesListTableHeader.vue2
-rw-r--r--apps/files/src/components/FilesListTableHeaderActions.vue24
-rw-r--r--apps/files/src/components/FilesListVirtual.vue18
-rw-r--r--apps/files/src/components/NavigationQuota.vue2
-rw-r--r--apps/files/src/components/TransferOwnershipDialogue.vue2
-rw-r--r--apps/files/src/components/VirtualList.vue2
-rw-r--r--apps/files/src/logger.ts (renamed from apps/files/src/logger.js)0
-rw-r--r--apps/files/src/newMenu/newTemplatesFolder.ts6
-rw-r--r--apps/files/src/services/DropService.ts2
-rw-r--r--apps/files/src/services/DropServiceUtils.ts2
-rw-r--r--apps/files/src/services/Files.ts15
-rw-r--r--apps/files/src/services/Recent.ts14
-rw-r--r--apps/files/src/services/ServiceWorker.js2
-rw-r--r--apps/files/src/store/filters.ts2
-rw-r--r--apps/files/src/views/FilesList.vue82
-rw-r--r--apps/files/src/views/Navigation.vue4
-rw-r--r--apps/files/src/views/Sidebar.vue2
-rw-r--r--apps/files/src/views/TemplatePicker.vue8
-rw-r--r--apps/files/templates/fileexists.html35
101 files changed, 788 insertions, 315 deletions
diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js
index 93d342ed391..579040d8d60 100644
--- a/apps/files/js/fileactions.js
+++ b/apps/files/js/fileactions.js
@@ -722,7 +722,7 @@
});
}
- if (!/Android|iPhone|iPad|iPod/i.test(navigator.userAgent)) {
+ if (!/Android|iPhone|iPad|iPod/i.test(navigator.userAgent) && !!window.oc_current_user) {
this.registerAction({
name: 'EditLocally',
displayName: function(context) {
diff --git a/apps/files/l10n/ar.js b/apps/files/l10n/ar.js
index 4a0da1eb8e7..690a06039fa 100644
--- a/apps/files/l10n/ar.js
+++ b/apps/files/l10n/ar.js
@@ -217,6 +217,7 @@ OC.L10N.register(
"Could not refresh storage stats" : "تعذر تحديث حالة التخزين",
"Your storage is full, files can not be updated or synced anymore!" : "مساحتك التخزينية ممتلئة, لا يمكن تحديث ملفاتك أو مزامنتها بعد الآن !",
"Create" : "إنشاء",
+ "This name is already in use." : "هذا الاسم سبق استعماله.",
"Fill template fields" : "قُم بملء حقول القالب",
"Submitting fields…" : "إرسال الحقول ...",
"Submit" : "إرسال ",
@@ -275,16 +276,17 @@ OC.L10N.register(
"Creating file" : "إنشاء ملف",
"Blank" : "فارغ",
"Unable to create new file from template" : "تعذر إنشاء الملف الجديد من القالب",
+ "Deletion cancelled" : "تمّ إلغاء الحذف",
"Delete permanently" : "حذف بشكل دائم",
"Delete and unshare" : "إحذِف و الغٍ المشاركات ",
"Leave these shares" : "مغادرة هاتين المشاركتين",
"Disconnect storages" : "فصل وحدات تخزين",
"Delete files" : "حذف الملفات",
"Delete folders" : "حذف مجلدين",
- "You are about to delete {count} items." : "أنت على وشك حذف {count} عنصر.",
+ "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["أنت على وشك أن تحذف نهائياً {count} عنصراً","أنت على وشك أن تحذف نهائياً {count} عنصراً","أنت على وشك أن تحذف نهائياً {count} عنصراً","أنت على وشك أن تحذف نهائياً {count} عناصر","أنت على وشك أن تحذف نهائياً {count} عناصر","أنت على وشك أن تحذف نهائياً {count} عنصراً"],
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["أنت على وشك أن تحذف {count} عنصراً","أنت على وشك أن تحذف {count} عنصراً","أنت على وشك أن تحذف {count} عنصراً","أنت على وشك أن تحذف {count} عناصر","أنت على وشك أن تحذف {count} عناصر","أنت على وشك أن تحذف {count} عنصراً"],
"Confirm deletion" : "أكِّد على الحذف",
"Cancel" : "الغاء",
- "Deletion cancelled" : "تمّ إلغاء الحذف",
"Destination is not a folder" : "المَقصَد ليس مُجلّداً",
"This file/folder is already in that directory" : "هذا الملف/المجلد موجود سلفاً في ذلك المجلد",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "لا يمكنك نقل ملف/مجلد إلى نفسه أو إلى مجلد فرعي منه",
diff --git a/apps/files/l10n/ar.json b/apps/files/l10n/ar.json
index 649b8de14b6..7ce28a353d5 100644
--- a/apps/files/l10n/ar.json
+++ b/apps/files/l10n/ar.json
@@ -215,6 +215,7 @@
"Could not refresh storage stats" : "تعذر تحديث حالة التخزين",
"Your storage is full, files can not be updated or synced anymore!" : "مساحتك التخزينية ممتلئة, لا يمكن تحديث ملفاتك أو مزامنتها بعد الآن !",
"Create" : "إنشاء",
+ "This name is already in use." : "هذا الاسم سبق استعماله.",
"Fill template fields" : "قُم بملء حقول القالب",
"Submitting fields…" : "إرسال الحقول ...",
"Submit" : "إرسال ",
@@ -273,16 +274,17 @@
"Creating file" : "إنشاء ملف",
"Blank" : "فارغ",
"Unable to create new file from template" : "تعذر إنشاء الملف الجديد من القالب",
+ "Deletion cancelled" : "تمّ إلغاء الحذف",
"Delete permanently" : "حذف بشكل دائم",
"Delete and unshare" : "إحذِف و الغٍ المشاركات ",
"Leave these shares" : "مغادرة هاتين المشاركتين",
"Disconnect storages" : "فصل وحدات تخزين",
"Delete files" : "حذف الملفات",
"Delete folders" : "حذف مجلدين",
- "You are about to delete {count} items." : "أنت على وشك حذف {count} عنصر.",
+ "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["أنت على وشك أن تحذف نهائياً {count} عنصراً","أنت على وشك أن تحذف نهائياً {count} عنصراً","أنت على وشك أن تحذف نهائياً {count} عنصراً","أنت على وشك أن تحذف نهائياً {count} عناصر","أنت على وشك أن تحذف نهائياً {count} عناصر","أنت على وشك أن تحذف نهائياً {count} عنصراً"],
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["أنت على وشك أن تحذف {count} عنصراً","أنت على وشك أن تحذف {count} عنصراً","أنت على وشك أن تحذف {count} عنصراً","أنت على وشك أن تحذف {count} عناصر","أنت على وشك أن تحذف {count} عناصر","أنت على وشك أن تحذف {count} عنصراً"],
"Confirm deletion" : "أكِّد على الحذف",
"Cancel" : "الغاء",
- "Deletion cancelled" : "تمّ إلغاء الحذف",
"Destination is not a folder" : "المَقصَد ليس مُجلّداً",
"This file/folder is already in that directory" : "هذا الملف/المجلد موجود سلفاً في ذلك المجلد",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "لا يمكنك نقل ملف/مجلد إلى نفسه أو إلى مجلد فرعي منه",
diff --git a/apps/files/l10n/ast.js b/apps/files/l10n/ast.js
index ef14c60a02e..58ff32bb58c 100644
--- a/apps/files/l10n/ast.js
+++ b/apps/files/l10n/ast.js
@@ -261,16 +261,15 @@ OC.L10N.register(
"Creating file" : "Creando'l ficheru",
"Blank" : "Baleru",
"Unable to create new file from template" : "Nun ye posible crear un ficheru dende una plantía",
+ "Deletion cancelled" : "Anulóse'l desaniciu",
"Delete permanently" : "Desaniciar permanentemente",
"Delete and unshare" : "Desaniciar y dexar de compartir",
"Leave these shares" : "Dexar estes comparticiones",
"Disconnect storages" : "Desconectar los almacenamientos",
"Delete files" : "Desaniciar los ficheros",
"Delete folders" : "Desaniciar les carpetes",
- "You are about to delete {count} items." : "Tas a piques de desaniciar {count} elementos.",
"Confirm deletion" : "Confirmar el desaniciu",
"Cancel" : "Encaboxar",
- "Deletion cancelled" : "Anulóse'l desaniciu",
"Destination is not a folder" : "El destín nun ye una carpeta",
"This file/folder is already in that directory" : "Esti ficheru o esta carpeta yá ta nel direutoriu",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Nun pues mover un ficheru/carpeta a sigo mesma o la mesma socarpeta de la mesma carpeta",
diff --git a/apps/files/l10n/ast.json b/apps/files/l10n/ast.json
index 5d8b5ec4302..ab106e7026a 100644
--- a/apps/files/l10n/ast.json
+++ b/apps/files/l10n/ast.json
@@ -259,16 +259,15 @@
"Creating file" : "Creando'l ficheru",
"Blank" : "Baleru",
"Unable to create new file from template" : "Nun ye posible crear un ficheru dende una plantía",
+ "Deletion cancelled" : "Anulóse'l desaniciu",
"Delete permanently" : "Desaniciar permanentemente",
"Delete and unshare" : "Desaniciar y dexar de compartir",
"Leave these shares" : "Dexar estes comparticiones",
"Disconnect storages" : "Desconectar los almacenamientos",
"Delete files" : "Desaniciar los ficheros",
"Delete folders" : "Desaniciar les carpetes",
- "You are about to delete {count} items." : "Tas a piques de desaniciar {count} elementos.",
"Confirm deletion" : "Confirmar el desaniciu",
"Cancel" : "Encaboxar",
- "Deletion cancelled" : "Anulóse'l desaniciu",
"Destination is not a folder" : "El destín nun ye una carpeta",
"This file/folder is already in that directory" : "Esti ficheru o esta carpeta yá ta nel direutoriu",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Nun pues mover un ficheru/carpeta a sigo mesma o la mesma socarpeta de la mesma carpeta",
diff --git a/apps/files/l10n/ca.js b/apps/files/l10n/ca.js
index 2b0613a03d2..3ddf470d28c 100644
--- a/apps/files/l10n/ca.js
+++ b/apps/files/l10n/ca.js
@@ -263,16 +263,15 @@ OC.L10N.register(
"Creating file" : "S'està creant el fitxer",
"Blank" : "En blanc",
"Unable to create new file from template" : "No s'ha pogut crear el fitxer a partir de la plantilla",
+ "Deletion cancelled" : "S'ha cancel·lat la supressió",
"Delete permanently" : "Suprimeix permanentment",
"Delete and unshare" : "Suprimeix i deixa de compartir",
"Leave these shares" : "Abandona aquests elements compartits",
"Disconnect storages" : "Desconnecta els emmagatzematges",
"Delete files" : "Suprimeix els fitxers",
"Delete folders" : "Suprimeix les carpetes",
- "You are about to delete {count} items." : "Esteu a punt de suprimir {count} elements.",
"Confirm deletion" : "Confirma la supressió",
"Cancel" : "Cancel·la",
- "Deletion cancelled" : "S'ha cancel·lat la supressió",
"Destination is not a folder" : "La destinació no és una carpeta",
"This file/folder is already in that directory" : "Aquest fitxer o carpeta ja existeix en aquesta carpeta",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "No podeu moure un fitxer o carpeta a la mateixa carpeta o a una subcarpeta de la mateixa carpeta",
diff --git a/apps/files/l10n/ca.json b/apps/files/l10n/ca.json
index 213c6f204ef..2cac5462b40 100644
--- a/apps/files/l10n/ca.json
+++ b/apps/files/l10n/ca.json
@@ -261,16 +261,15 @@
"Creating file" : "S'està creant el fitxer",
"Blank" : "En blanc",
"Unable to create new file from template" : "No s'ha pogut crear el fitxer a partir de la plantilla",
+ "Deletion cancelled" : "S'ha cancel·lat la supressió",
"Delete permanently" : "Suprimeix permanentment",
"Delete and unshare" : "Suprimeix i deixa de compartir",
"Leave these shares" : "Abandona aquests elements compartits",
"Disconnect storages" : "Desconnecta els emmagatzematges",
"Delete files" : "Suprimeix els fitxers",
"Delete folders" : "Suprimeix les carpetes",
- "You are about to delete {count} items." : "Esteu a punt de suprimir {count} elements.",
"Confirm deletion" : "Confirma la supressió",
"Cancel" : "Cancel·la",
- "Deletion cancelled" : "S'ha cancel·lat la supressió",
"Destination is not a folder" : "La destinació no és una carpeta",
"This file/folder is already in that directory" : "Aquest fitxer o carpeta ja existeix en aquesta carpeta",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "No podeu moure un fitxer o carpeta a la mateixa carpeta o a una subcarpeta de la mateixa carpeta",
diff --git a/apps/files/l10n/cs.js b/apps/files/l10n/cs.js
index cab80c03348..1e44f7225f7 100644
--- a/apps/files/l10n/cs.js
+++ b/apps/files/l10n/cs.js
@@ -157,10 +157,16 @@ OC.L10N.register(
"A file or folder has been <strong>changed</strong>" : "Soubor nebo složka byla <strong>změněna</strong>",
"A favorite file or folder has been <strong>changed</strong>" : "Oblíbený soubor nebo složka byla <strong>změněna</strong>",
"Upload (max. %s)" : "Nahrát (max. %s)",
+ "Files compatibility" : "Kompatibilita souborů",
+ "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Umožňuje omezit názvy souborů aby bylo zajištěno, že soubory bude možné synchronizovat se všemi klienty. Ve výchozím stavu jsou povoleny veškeré názvy souborů, splňující standard POSIX (např. Linux nebo macOS).",
+ "Enforce Windows compatibility" : "Vynutit kompatibilitu s Windows",
+ "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Toto bude blokovat použití názvů souborů, které nejsou platné na strojích s Windows, jako je použití vyhrazených názvů nebo speciálních znaků. Ale nevynutí kompatibilitu v případě rozlišování malých/VELKÝCH písmen.",
"Accept" : "Přijmout",
"Reject" : "Odmítnout",
"Incoming ownership transfer from {user}" : "Příchozí převedení vlastnictví od {user}",
"Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "Chcete přijmout {path}?\n\nPozn.: Proces převedení může trvat až hodinu po přijmutí.",
+ "Ownership transfer denied" : "Převedení vlastnictví odepřeno",
+ "Your ownership transfer of {path} was denied by {user}." : "Převedení vašeho vlastnictví {path} bylo odepřeno {user}.",
"Ownership transfer failed" : "Převedení vlastnictví se nezdařilo",
"Your ownership transfer of {path} to {user} failed." : "Převedení vlastnictví {path} od vás na {user} se nezdařilo.",
"The ownership transfer of {path} from {user} failed." : "Převedení vlastnictví {path} od {user} se nezdařilo.",
@@ -168,6 +174,7 @@ OC.L10N.register(
"Your ownership transfer of {path} to {user} has completed." : "Převedení vámi vlastněného {path} na {user} dokončeno.",
"The ownership transfer of {path} from {user} has completed." : "Převedení vlastnictví {path} od {user} dokončeno.",
"in %s" : "v %s",
+ "Transferred from %1$s on %2$s" : "Převedeno z %1$s na %2$s",
"File Management" : "Správa souboru",
"Current directory path" : "Stávající popis umístění složky",
"Reload current directory" : "Znovu načíst stávající složku",
@@ -184,6 +191,8 @@ OC.L10N.register(
"Folder name" : "Název složky",
"This node is unavailable" : "Tento uzel není k dispozici",
"Download file {name}" : "Stáhnout soubor {name}",
+ "Another entry with the same name already exists." : "Už existuje jiná položka se stejným názvem.",
+ "Invalid filename." : "Neplatný název souboru.",
"Renamed \"{oldName}\" to \"{newName}\"" : "Přejmenováno „{oldName}“ na „{newName}",
"Could not rename \"{oldName}\", it does not exist any more" : "Není možné přejmenovat „{oldName}“ – už neexistuje",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Název „{newtName}“ je už použitý ve složce „{dir}“. Zvolte jiný název.",
@@ -201,11 +210,16 @@ OC.L10N.register(
"Column headers with buttons are sortable." : "Podle těch sloupců, které mají v záhlaví tlačítko, je možné řadit.",
"This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Seznam není vykreslen celý z důvodu nároků na výkon. Soubory budou dokreslovány, jak se budete posouvat seznamem.",
"File not found" : "Soubor nenalezen",
+ "Storage information" : "Informace o úložišti",
+ "Storage quota" : "Kvóta úložiště",
"{usedQuotaByte} used" : "{usedQuotaByte} využito",
"{relative}% used" : "{relative}% využito",
"Could not refresh storage stats" : "Nedaří se znovu načíst statistiky úložiště",
"Your storage is full, files can not be updated or synced anymore!" : "Vaše úložiště je plné – soubory už proto nelze aktualizovat ani synchronizovat!",
"Create" : "Vytvořit",
+ "This name is already in use." : "Tento název už je využíván.",
+ "Fill template fields" : "Vyplňte kolonky šablony",
+ "Submitting fields…" : "Odesílání kolonek…",
"Submit" : "Odeslat",
"Transfer ownership of a file or folder" : "Převést vlastnictví souboru či složky",
"Choose file or folder to transfer" : "Zvolte soubor nebo složku k převedení",
@@ -231,9 +245,11 @@ OC.L10N.register(
"Shared" : "Sdíleno",
"Switch to list view" : "Přepnout do zobrazení v seznamu",
"Switch to grid view" : "Přepnout do zobrazení v mřížce",
+ "Upload was cancelled by user" : "Odeslání bylo zrušeno uživatelem",
"Error during upload: {message}" : "Chyba při nahrávání: {message}",
"Error during upload, status code {status}" : "Chyba při nahrávání – stavový kód {status}",
"Unknown error during upload" : "Neznámá chyba při nahrávání",
+ "Filter filenames…" : "Filtrovat názvy souborů…",
"Views" : "Zobrazení",
"Files settings" : "Nastavení pro Soubory",
"File cannot be accessed" : "K souboru se nedaří přistoupit",
@@ -250,7 +266,7 @@ OC.L10N.register(
"WebDAV URL" : "WebDAV URL",
"Copy to clipboard" : "Zkopírovat do schránky",
"Use this address to access your Files via WebDAV" : "Tuto adresu použijte pro přístup k vašim souborům prostřednictvím protokolu WebDAV",
- "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Pokud jste zapnuli 2FA, je třeba kliknutím sem vytvořit a použít nové heslo pro aplikaci.",
+ "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Pokud jste zapnuli 2FA (dvoufaktorovou autentizaci), je třeba kliknutím sem vytvořit a použít nové heslo pro aplikaci.",
"Clipboard is not available" : "Schránka není k dispozici",
"WebDAV URL copied to clipboard" : "WebDAV URL zkopírována do schránky",
"Unable to change the favourite state of the file" : "Nedaří se změnit stav „oblíbené“ souboru",
@@ -260,16 +276,15 @@ OC.L10N.register(
"Creating file" : "Vytváření souboru",
"Blank" : "Prázdný",
"Unable to create new file from template" : "Nedaří se vytvořit soubor ze šablony",
+ "Deletion cancelled" : "Mazání zrušeno",
"Delete permanently" : "Nevratně smazat",
"Delete and unshare" : "Smazat a zrušit sdílení",
"Leave these shares" : "Ponechat tato sdílení",
"Disconnect storages" : "Odpojit úložiště",
"Delete files" : "Smazat soubory",
"Delete folders" : "Smazat složky",
- "You are about to delete {count} items." : "Chystáte se smazat {count} položek.",
"Confirm deletion" : "Potvrdit smazání",
"Cancel" : "Storno",
- "Deletion cancelled" : "Mazání zrušeno",
"Destination is not a folder" : "Cíl není složka",
"This file/folder is already in that directory" : "V oné složce se už daný soubor/složka nachází",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Není možné přesunout soubor/složku do sebe samé nebo do své vlastní podložky",
@@ -290,8 +305,15 @@ OC.L10N.register(
"Today" : "Dnes",
"Last 7 days" : "Uplynulých 7 dnů",
"Last 30 days" : "Uplynulých 30 dnů",
+ "This year ({year})" : "Tento rok ({year})",
+ "Last year ({year})" : "Minulý rok ({year})",
"Documents" : "Dokumenty",
+ "Spreadsheets" : "Tabulky",
+ "Presentations" : "Prezentace",
+ "PDFs" : "PDF dokumenty",
"Folders" : "Složky",
+ "Audio" : "Zvuk",
+ "Pictures and images" : "Fotky a obrázky",
"Videos" : "Videa",
"Created new folder \"{name}\"" : "Vytvořena nová složka „{name}“",
"Unable to initialize the templates directory" : "Nepodařilo se vytvořit složku pro šablony",
@@ -318,6 +340,11 @@ OC.L10N.register(
"_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 soubor a {folderCount} složka","1 soubor a {folderCount} složky","1 soubor a {folderCount} složek","1 soubor a {folderCount} složky"],
"_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} soubor a 1 složka","{fileCount} soubory a 1 složka","{fileCount} souborů a 1 složka","{fileCount} soubory a 1 složka"],
"{fileCount} files and {folderCount} folders" : "{fileCount} souborů a {folderCount} složek",
+ "Filename must not be empty." : "Je třeba vyplnit název souboru.",
+ "\"{char}\" is not allowed inside a filename." : "„{char}“ není v názvu souboru možné použít.",
+ "\"{segment}\" is a reserved name and not allowed for filenames." : "„{segment}“ je vyhrazeným názvem a není povoleno k použití pro názvy souborů.",
+ "\"{extension}\" is not an allowed filetype." : "„{extension}“ není povoleným typem souboru.",
+ "Filenames must not end with \"{extension}\"." : "Je třeba, aby názvy souborů nekončily na „{extension}“.",
"List of favorites files and folders." : "Seznam oblíbených souborů a složek.",
"No favorites yet" : "Zatím nic oblíbeného",
"Files and folders you mark as favorite will show up here" : "Zde budou zobrazeny soubory a složky, které označíte jako oblíbené",
diff --git a/apps/files/l10n/cs.json b/apps/files/l10n/cs.json
index e9d3b1c7b7e..5dd10944288 100644
--- a/apps/files/l10n/cs.json
+++ b/apps/files/l10n/cs.json
@@ -155,10 +155,16 @@
"A file or folder has been <strong>changed</strong>" : "Soubor nebo složka byla <strong>změněna</strong>",
"A favorite file or folder has been <strong>changed</strong>" : "Oblíbený soubor nebo složka byla <strong>změněna</strong>",
"Upload (max. %s)" : "Nahrát (max. %s)",
+ "Files compatibility" : "Kompatibilita souborů",
+ "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Umožňuje omezit názvy souborů aby bylo zajištěno, že soubory bude možné synchronizovat se všemi klienty. Ve výchozím stavu jsou povoleny veškeré názvy souborů, splňující standard POSIX (např. Linux nebo macOS).",
+ "Enforce Windows compatibility" : "Vynutit kompatibilitu s Windows",
+ "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Toto bude blokovat použití názvů souborů, které nejsou platné na strojích s Windows, jako je použití vyhrazených názvů nebo speciálních znaků. Ale nevynutí kompatibilitu v případě rozlišování malých/VELKÝCH písmen.",
"Accept" : "Přijmout",
"Reject" : "Odmítnout",
"Incoming ownership transfer from {user}" : "Příchozí převedení vlastnictví od {user}",
"Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "Chcete přijmout {path}?\n\nPozn.: Proces převedení může trvat až hodinu po přijmutí.",
+ "Ownership transfer denied" : "Převedení vlastnictví odepřeno",
+ "Your ownership transfer of {path} was denied by {user}." : "Převedení vašeho vlastnictví {path} bylo odepřeno {user}.",
"Ownership transfer failed" : "Převedení vlastnictví se nezdařilo",
"Your ownership transfer of {path} to {user} failed." : "Převedení vlastnictví {path} od vás na {user} se nezdařilo.",
"The ownership transfer of {path} from {user} failed." : "Převedení vlastnictví {path} od {user} se nezdařilo.",
@@ -166,6 +172,7 @@
"Your ownership transfer of {path} to {user} has completed." : "Převedení vámi vlastněného {path} na {user} dokončeno.",
"The ownership transfer of {path} from {user} has completed." : "Převedení vlastnictví {path} od {user} dokončeno.",
"in %s" : "v %s",
+ "Transferred from %1$s on %2$s" : "Převedeno z %1$s na %2$s",
"File Management" : "Správa souboru",
"Current directory path" : "Stávající popis umístění složky",
"Reload current directory" : "Znovu načíst stávající složku",
@@ -182,6 +189,8 @@
"Folder name" : "Název složky",
"This node is unavailable" : "Tento uzel není k dispozici",
"Download file {name}" : "Stáhnout soubor {name}",
+ "Another entry with the same name already exists." : "Už existuje jiná položka se stejným názvem.",
+ "Invalid filename." : "Neplatný název souboru.",
"Renamed \"{oldName}\" to \"{newName}\"" : "Přejmenováno „{oldName}“ na „{newName}",
"Could not rename \"{oldName}\", it does not exist any more" : "Není možné přejmenovat „{oldName}“ – už neexistuje",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Název „{newtName}“ je už použitý ve složce „{dir}“. Zvolte jiný název.",
@@ -199,11 +208,16 @@
"Column headers with buttons are sortable." : "Podle těch sloupců, které mají v záhlaví tlačítko, je možné řadit.",
"This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Seznam není vykreslen celý z důvodu nároků na výkon. Soubory budou dokreslovány, jak se budete posouvat seznamem.",
"File not found" : "Soubor nenalezen",
+ "Storage information" : "Informace o úložišti",
+ "Storage quota" : "Kvóta úložiště",
"{usedQuotaByte} used" : "{usedQuotaByte} využito",
"{relative}% used" : "{relative}% využito",
"Could not refresh storage stats" : "Nedaří se znovu načíst statistiky úložiště",
"Your storage is full, files can not be updated or synced anymore!" : "Vaše úložiště je plné – soubory už proto nelze aktualizovat ani synchronizovat!",
"Create" : "Vytvořit",
+ "This name is already in use." : "Tento název už je využíván.",
+ "Fill template fields" : "Vyplňte kolonky šablony",
+ "Submitting fields…" : "Odesílání kolonek…",
"Submit" : "Odeslat",
"Transfer ownership of a file or folder" : "Převést vlastnictví souboru či složky",
"Choose file or folder to transfer" : "Zvolte soubor nebo složku k převedení",
@@ -229,9 +243,11 @@
"Shared" : "Sdíleno",
"Switch to list view" : "Přepnout do zobrazení v seznamu",
"Switch to grid view" : "Přepnout do zobrazení v mřížce",
+ "Upload was cancelled by user" : "Odeslání bylo zrušeno uživatelem",
"Error during upload: {message}" : "Chyba při nahrávání: {message}",
"Error during upload, status code {status}" : "Chyba při nahrávání – stavový kód {status}",
"Unknown error during upload" : "Neznámá chyba při nahrávání",
+ "Filter filenames…" : "Filtrovat názvy souborů…",
"Views" : "Zobrazení",
"Files settings" : "Nastavení pro Soubory",
"File cannot be accessed" : "K souboru se nedaří přistoupit",
@@ -248,7 +264,7 @@
"WebDAV URL" : "WebDAV URL",
"Copy to clipboard" : "Zkopírovat do schránky",
"Use this address to access your Files via WebDAV" : "Tuto adresu použijte pro přístup k vašim souborům prostřednictvím protokolu WebDAV",
- "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Pokud jste zapnuli 2FA, je třeba kliknutím sem vytvořit a použít nové heslo pro aplikaci.",
+ "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Pokud jste zapnuli 2FA (dvoufaktorovou autentizaci), je třeba kliknutím sem vytvořit a použít nové heslo pro aplikaci.",
"Clipboard is not available" : "Schránka není k dispozici",
"WebDAV URL copied to clipboard" : "WebDAV URL zkopírována do schránky",
"Unable to change the favourite state of the file" : "Nedaří se změnit stav „oblíbené“ souboru",
@@ -258,16 +274,15 @@
"Creating file" : "Vytváření souboru",
"Blank" : "Prázdný",
"Unable to create new file from template" : "Nedaří se vytvořit soubor ze šablony",
+ "Deletion cancelled" : "Mazání zrušeno",
"Delete permanently" : "Nevratně smazat",
"Delete and unshare" : "Smazat a zrušit sdílení",
"Leave these shares" : "Ponechat tato sdílení",
"Disconnect storages" : "Odpojit úložiště",
"Delete files" : "Smazat soubory",
"Delete folders" : "Smazat složky",
- "You are about to delete {count} items." : "Chystáte se smazat {count} položek.",
"Confirm deletion" : "Potvrdit smazání",
"Cancel" : "Storno",
- "Deletion cancelled" : "Mazání zrušeno",
"Destination is not a folder" : "Cíl není složka",
"This file/folder is already in that directory" : "V oné složce se už daný soubor/složka nachází",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Není možné přesunout soubor/složku do sebe samé nebo do své vlastní podložky",
@@ -288,8 +303,15 @@
"Today" : "Dnes",
"Last 7 days" : "Uplynulých 7 dnů",
"Last 30 days" : "Uplynulých 30 dnů",
+ "This year ({year})" : "Tento rok ({year})",
+ "Last year ({year})" : "Minulý rok ({year})",
"Documents" : "Dokumenty",
+ "Spreadsheets" : "Tabulky",
+ "Presentations" : "Prezentace",
+ "PDFs" : "PDF dokumenty",
"Folders" : "Složky",
+ "Audio" : "Zvuk",
+ "Pictures and images" : "Fotky a obrázky",
"Videos" : "Videa",
"Created new folder \"{name}\"" : "Vytvořena nová složka „{name}“",
"Unable to initialize the templates directory" : "Nepodařilo se vytvořit složku pro šablony",
@@ -316,6 +338,11 @@
"_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 soubor a {folderCount} složka","1 soubor a {folderCount} složky","1 soubor a {folderCount} složek","1 soubor a {folderCount} složky"],
"_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} soubor a 1 složka","{fileCount} soubory a 1 složka","{fileCount} souborů a 1 složka","{fileCount} soubory a 1 složka"],
"{fileCount} files and {folderCount} folders" : "{fileCount} souborů a {folderCount} složek",
+ "Filename must not be empty." : "Je třeba vyplnit název souboru.",
+ "\"{char}\" is not allowed inside a filename." : "„{char}“ není v názvu souboru možné použít.",
+ "\"{segment}\" is a reserved name and not allowed for filenames." : "„{segment}“ je vyhrazeným názvem a není povoleno k použití pro názvy souborů.",
+ "\"{extension}\" is not an allowed filetype." : "„{extension}“ není povoleným typem souboru.",
+ "Filenames must not end with \"{extension}\"." : "Je třeba, aby názvy souborů nekončily na „{extension}“.",
"List of favorites files and folders." : "Seznam oblíbených souborů a složek.",
"No favorites yet" : "Zatím nic oblíbeného",
"Files and folders you mark as favorite will show up here" : "Zde budou zobrazeny soubory a složky, které označíte jako oblíbené",
diff --git a/apps/files/l10n/da.js b/apps/files/l10n/da.js
index 161ecab4ae1..5a93b3e535c 100644
--- a/apps/files/l10n/da.js
+++ b/apps/files/l10n/da.js
@@ -261,16 +261,15 @@ OC.L10N.register(
"Creating file" : "Opretter fil",
"Blank" : "Tom",
"Unable to create new file from template" : "Kan ikke oprette ny fil fra skabelonen",
+ "Deletion cancelled" : "Sletning annulleret",
"Delete permanently" : "Slet permanent",
"Delete and unshare" : "Slet og fjern deling",
"Leave these shares" : "Forlad disse delinger",
"Disconnect storages" : "Frakobl lagerne",
"Delete files" : "Slet filer",
"Delete folders" : "Slet mapper",
- "You are about to delete {count} items." : "Du er ved at slette {count} elementer.",
"Confirm deletion" : "Bekræft sletning",
"Cancel" : "annuller",
- "Deletion cancelled" : "Sletning annulleret",
"Destination is not a folder" : "Destinationen er ikke en mappe",
"This file/folder is already in that directory" : "Filen/mappen er allerede i denne mappe",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Du kan ikke flytte en fil/mappe ind i sig selv, eller til en mappe inden i sig selv",
diff --git a/apps/files/l10n/da.json b/apps/files/l10n/da.json
index 8293a10f164..4e4f94afe61 100644
--- a/apps/files/l10n/da.json
+++ b/apps/files/l10n/da.json
@@ -259,16 +259,15 @@
"Creating file" : "Opretter fil",
"Blank" : "Tom",
"Unable to create new file from template" : "Kan ikke oprette ny fil fra skabelonen",
+ "Deletion cancelled" : "Sletning annulleret",
"Delete permanently" : "Slet permanent",
"Delete and unshare" : "Slet og fjern deling",
"Leave these shares" : "Forlad disse delinger",
"Disconnect storages" : "Frakobl lagerne",
"Delete files" : "Slet filer",
"Delete folders" : "Slet mapper",
- "You are about to delete {count} items." : "Du er ved at slette {count} elementer.",
"Confirm deletion" : "Bekræft sletning",
"Cancel" : "annuller",
- "Deletion cancelled" : "Sletning annulleret",
"Destination is not a folder" : "Destinationen er ikke en mappe",
"This file/folder is already in that directory" : "Filen/mappen er allerede i denne mappe",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Du kan ikke flytte en fil/mappe ind i sig selv, eller til en mappe inden i sig selv",
diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js
index 5034340d1bb..1e464a88627 100644
--- a/apps/files/l10n/de.js
+++ b/apps/files/l10n/de.js
@@ -157,6 +157,10 @@ OC.L10N.register(
"A file or folder has been <strong>changed</strong>" : "Eine Datei oder ein Ordner wurde <strong>geändert</strong>",
"A favorite file or folder has been <strong>changed</strong>" : "Eine favorisierte Datei oder ein Ordner wurde <strong>geändert</strong>",
"Upload (max. %s)" : "Hochladen (max. %s)",
+ "Files compatibility" : "Dateikompatibilität",
+ "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Ermöglicht die Einschränkung von Dateinamen, um sicherzustellen, dass Dateien mit allen Clients synchronisiert werden können. Standardmäßig sind alle unter POSIX (z. B. Linux oder macOS) gültigen Dateinamen zulässig.",
+ "Enforce Windows compatibility" : "Windows-Kompatibilität erzwingen",
+ "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Dadurch werden Dateinamen blockiert, die auf Windows-Systemen unzulässig sind, z. B. reservierte Namen oder Sonderzeichen. Die Kompatibilität der Groß-/Kleinschreibung wird dadurch jedoch nicht erzwungen.",
"Accept" : "Akzeptieren",
"Reject" : "Ablehnen",
"Incoming ownership transfer from {user}" : "Eingehende Besitzübertragung von {user}",
@@ -187,6 +191,8 @@ OC.L10N.register(
"Folder name" : "Ordnername",
"This node is unavailable" : "Dieser Knoten ist nicht verfügbar.",
"Download file {name}" : "Datei {name} herunterladen",
+ "Another entry with the same name already exists." : "Ein anderer Eintrag mit diesem Namen existiert bereits.",
+ "Invalid filename." : "Ungültiger Dateiname.",
"Renamed \"{oldName}\" to \"{newName}\"" : "\"{oldName}\" in \"{newName}\" umbenannt",
"Could not rename \"{oldName}\", it does not exist any more" : "\"{oldName}\" konnte nicht umbenannt werden, da es nicht mehr existiert.",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Der Name \"{newName}“ wird bereits im Ordner \"{dir}“ verwendet. Bitte wähle einen anderen Namen.",
@@ -204,11 +210,16 @@ OC.L10N.register(
"Column headers with buttons are sortable." : "Spaltenüberschriften mit Schaltflächen sind sortierbar.",
"This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Diese Liste wird aus Performance-Gründen nicht vollständig angezeigt. Die Dateien werden angezeigt, wenn du durch die Liste navigierst.",
"File not found" : "Datei nicht gefunden",
+ "Storage information" : "Speicherinformation",
+ "Storage quota" : "Speicherkontingent",
"{usedQuotaByte} used" : "{usedQuotaByte} verwendet",
"{relative}% used" : "{relative}% verwendet",
"Could not refresh storage stats" : "Die Speicherstatistik konnte nicht aktualisiert werden",
"Your storage is full, files can not be updated or synced anymore!" : "Dein Speicher ist voll, daher können keine Dateien mehr aktualisiert oder synchronisiert werden!",
"Create" : "Erstellen",
+ "This name is already in use." : "Dieser Name wird bereits verwendet.",
+ "Fill template fields" : "Vorlagenfelder ausfüllen",
+ "Submitting fields…" : "Felder werden übermittelt…",
"Submit" : "Übermitteln",
"Transfer ownership of a file or folder" : "Besitz einer Datei oder eines Ordners übertragen",
"Choose file or folder to transfer" : "Datei oder Ordner zur Übertragung auswählen",
@@ -238,6 +249,7 @@ OC.L10N.register(
"Error during upload: {message}" : "Fehler beim Hochladen: {message}",
"Error during upload, status code {status}" : "Fehler beim Hochladen, Statuscode {status}",
"Unknown error during upload" : "unbekannte Fehler während des Hochladens",
+ "Filter filenames…" : "Dateinamen filtern…",
"Views" : "Ansichten",
"Files settings" : "Dateien-Einstellungen",
"File cannot be accessed" : "Auf die Datei kann nicht zugegriffen werden",
@@ -264,16 +276,17 @@ OC.L10N.register(
"Creating file" : "Datei erstellen",
"Blank" : "Leer",
"Unable to create new file from template" : "Neue Datei konnte nicht aus Vorlage erstellt werden",
+ "Deletion cancelled" : "Löschen abgebrochen",
"Delete permanently" : "Endgültig löschen",
"Delete and unshare" : "Löschen und nicht mehr teilen",
"Leave these shares" : "Diese Freigaben verlassen",
"Disconnect storages" : "Speicher trennen",
"Delete files" : "Dateien löschen",
"Delete folders" : "Ordner löschen",
- "You are about to delete {count} items." : "Du bist dabei, {count} Elemente zu löschen.",
+ "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["Sie sind dabei, {count} Element endgültig zu löschen","Sie sind dabei, {count} Elemente endgültig zu löschen"],
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["Sie sind dabei, {count} Element zu löschen","Sie sind dabei, {count} Elemente zu löschen"],
"Confirm deletion" : "Löschen bestätigen",
"Cancel" : "Abbrechen",
- "Deletion cancelled" : "Löschen abgebrochen",
"Destination is not a folder" : "Ziel ist kein Ordner",
"This file/folder is already in that directory" : "Diese Datei oder Ordner ist bereits in diesem Verzeichnis vorhanden",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Eine Datei oder ein Ordner kann nicht auf sich selbst oder in einen Unterordner von sich selbst verschoben werden.",
@@ -294,9 +307,15 @@ OC.L10N.register(
"Today" : "Heute",
"Last 7 days" : "Die letzten 7 Tage",
"Last 30 days" : "Die letzten 30 Tage",
+ "This year ({year})" : "Dieses Jahr ({year})",
+ "Last year ({year})" : "Letztes Jahr ({year})",
"Documents" : "Dokumente",
+ "Spreadsheets" : "Tabellenkalkulationen",
+ "Presentations" : "Präsentationen",
+ "PDFs" : "PDFs",
"Folders" : "Ordner",
"Audio" : "Audio",
+ "Pictures and images" : "Bilder und Abbildungen",
"Videos" : "Videos",
"Created new folder \"{name}\"" : "Neuer Ordner \"{name}\" wurde erstellt",
"Unable to initialize the templates directory" : "Der Vorlagenordner konnte nicht initialisiert werden",
@@ -323,6 +342,11 @@ OC.L10N.register(
"_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 Datei und {folderCount} Ordner","1 Datei und {folderCount} Ordner"],
"_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} Datei und 1 Ordner","{fileCount} Dateien und 1 Ordner"],
"{fileCount} files and {folderCount} folders" : "{fileCount} Dateien und {folderCount} Ordner",
+ "Filename must not be empty." : "Dateiname darf nicht leer sein.",
+ "\"{char}\" is not allowed inside a filename." : "\"{char}“ ist innerhalb eines Dateinamens nicht zulässig.",
+ "\"{segment}\" is a reserved name and not allowed for filenames." : "\"{segment}\" ist ein reservierter Name und für Dateinamen nicht zulässig.",
+ "\"{extension}\" is not an allowed filetype." : "\"{extension}\" ist kein zulässiger Dateityp.",
+ "Filenames must not end with \"{extension}\"." : "Dateinamen dürfen nicht mit \"{extension}\" enden.",
"List of favorites files and folders." : "Liste der favorisierten Ordner und Dateien",
"No favorites yet" : "Noch keine Favoriten vorhanden",
"Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die als Favoriten markiert werden, erscheinen hier",
diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json
index 8cb2f25e859..499d2fb15ae 100644
--- a/apps/files/l10n/de.json
+++ b/apps/files/l10n/de.json
@@ -155,6 +155,10 @@
"A file or folder has been <strong>changed</strong>" : "Eine Datei oder ein Ordner wurde <strong>geändert</strong>",
"A favorite file or folder has been <strong>changed</strong>" : "Eine favorisierte Datei oder ein Ordner wurde <strong>geändert</strong>",
"Upload (max. %s)" : "Hochladen (max. %s)",
+ "Files compatibility" : "Dateikompatibilität",
+ "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Ermöglicht die Einschränkung von Dateinamen, um sicherzustellen, dass Dateien mit allen Clients synchronisiert werden können. Standardmäßig sind alle unter POSIX (z. B. Linux oder macOS) gültigen Dateinamen zulässig.",
+ "Enforce Windows compatibility" : "Windows-Kompatibilität erzwingen",
+ "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Dadurch werden Dateinamen blockiert, die auf Windows-Systemen unzulässig sind, z. B. reservierte Namen oder Sonderzeichen. Die Kompatibilität der Groß-/Kleinschreibung wird dadurch jedoch nicht erzwungen.",
"Accept" : "Akzeptieren",
"Reject" : "Ablehnen",
"Incoming ownership transfer from {user}" : "Eingehende Besitzübertragung von {user}",
@@ -185,6 +189,8 @@
"Folder name" : "Ordnername",
"This node is unavailable" : "Dieser Knoten ist nicht verfügbar.",
"Download file {name}" : "Datei {name} herunterladen",
+ "Another entry with the same name already exists." : "Ein anderer Eintrag mit diesem Namen existiert bereits.",
+ "Invalid filename." : "Ungültiger Dateiname.",
"Renamed \"{oldName}\" to \"{newName}\"" : "\"{oldName}\" in \"{newName}\" umbenannt",
"Could not rename \"{oldName}\", it does not exist any more" : "\"{oldName}\" konnte nicht umbenannt werden, da es nicht mehr existiert.",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Der Name \"{newName}“ wird bereits im Ordner \"{dir}“ verwendet. Bitte wähle einen anderen Namen.",
@@ -202,11 +208,16 @@
"Column headers with buttons are sortable." : "Spaltenüberschriften mit Schaltflächen sind sortierbar.",
"This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Diese Liste wird aus Performance-Gründen nicht vollständig angezeigt. Die Dateien werden angezeigt, wenn du durch die Liste navigierst.",
"File not found" : "Datei nicht gefunden",
+ "Storage information" : "Speicherinformation",
+ "Storage quota" : "Speicherkontingent",
"{usedQuotaByte} used" : "{usedQuotaByte} verwendet",
"{relative}% used" : "{relative}% verwendet",
"Could not refresh storage stats" : "Die Speicherstatistik konnte nicht aktualisiert werden",
"Your storage is full, files can not be updated or synced anymore!" : "Dein Speicher ist voll, daher können keine Dateien mehr aktualisiert oder synchronisiert werden!",
"Create" : "Erstellen",
+ "This name is already in use." : "Dieser Name wird bereits verwendet.",
+ "Fill template fields" : "Vorlagenfelder ausfüllen",
+ "Submitting fields…" : "Felder werden übermittelt…",
"Submit" : "Übermitteln",
"Transfer ownership of a file or folder" : "Besitz einer Datei oder eines Ordners übertragen",
"Choose file or folder to transfer" : "Datei oder Ordner zur Übertragung auswählen",
@@ -236,6 +247,7 @@
"Error during upload: {message}" : "Fehler beim Hochladen: {message}",
"Error during upload, status code {status}" : "Fehler beim Hochladen, Statuscode {status}",
"Unknown error during upload" : "unbekannte Fehler während des Hochladens",
+ "Filter filenames…" : "Dateinamen filtern…",
"Views" : "Ansichten",
"Files settings" : "Dateien-Einstellungen",
"File cannot be accessed" : "Auf die Datei kann nicht zugegriffen werden",
@@ -262,16 +274,17 @@
"Creating file" : "Datei erstellen",
"Blank" : "Leer",
"Unable to create new file from template" : "Neue Datei konnte nicht aus Vorlage erstellt werden",
+ "Deletion cancelled" : "Löschen abgebrochen",
"Delete permanently" : "Endgültig löschen",
"Delete and unshare" : "Löschen und nicht mehr teilen",
"Leave these shares" : "Diese Freigaben verlassen",
"Disconnect storages" : "Speicher trennen",
"Delete files" : "Dateien löschen",
"Delete folders" : "Ordner löschen",
- "You are about to delete {count} items." : "Du bist dabei, {count} Elemente zu löschen.",
+ "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["Sie sind dabei, {count} Element endgültig zu löschen","Sie sind dabei, {count} Elemente endgültig zu löschen"],
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["Sie sind dabei, {count} Element zu löschen","Sie sind dabei, {count} Elemente zu löschen"],
"Confirm deletion" : "Löschen bestätigen",
"Cancel" : "Abbrechen",
- "Deletion cancelled" : "Löschen abgebrochen",
"Destination is not a folder" : "Ziel ist kein Ordner",
"This file/folder is already in that directory" : "Diese Datei oder Ordner ist bereits in diesem Verzeichnis vorhanden",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Eine Datei oder ein Ordner kann nicht auf sich selbst oder in einen Unterordner von sich selbst verschoben werden.",
@@ -292,9 +305,15 @@
"Today" : "Heute",
"Last 7 days" : "Die letzten 7 Tage",
"Last 30 days" : "Die letzten 30 Tage",
+ "This year ({year})" : "Dieses Jahr ({year})",
+ "Last year ({year})" : "Letztes Jahr ({year})",
"Documents" : "Dokumente",
+ "Spreadsheets" : "Tabellenkalkulationen",
+ "Presentations" : "Präsentationen",
+ "PDFs" : "PDFs",
"Folders" : "Ordner",
"Audio" : "Audio",
+ "Pictures and images" : "Bilder und Abbildungen",
"Videos" : "Videos",
"Created new folder \"{name}\"" : "Neuer Ordner \"{name}\" wurde erstellt",
"Unable to initialize the templates directory" : "Der Vorlagenordner konnte nicht initialisiert werden",
@@ -321,6 +340,11 @@
"_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 Datei und {folderCount} Ordner","1 Datei und {folderCount} Ordner"],
"_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} Datei und 1 Ordner","{fileCount} Dateien und 1 Ordner"],
"{fileCount} files and {folderCount} folders" : "{fileCount} Dateien und {folderCount} Ordner",
+ "Filename must not be empty." : "Dateiname darf nicht leer sein.",
+ "\"{char}\" is not allowed inside a filename." : "\"{char}“ ist innerhalb eines Dateinamens nicht zulässig.",
+ "\"{segment}\" is a reserved name and not allowed for filenames." : "\"{segment}\" ist ein reservierter Name und für Dateinamen nicht zulässig.",
+ "\"{extension}\" is not an allowed filetype." : "\"{extension}\" ist kein zulässiger Dateityp.",
+ "Filenames must not end with \"{extension}\"." : "Dateinamen dürfen nicht mit \"{extension}\" enden.",
"List of favorites files and folders." : "Liste der favorisierten Ordner und Dateien",
"No favorites yet" : "Noch keine Favoriten vorhanden",
"Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die als Favoriten markiert werden, erscheinen hier",
diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js
index 664831f8560..e1a4a6891bc 100644
--- a/apps/files/l10n/de_DE.js
+++ b/apps/files/l10n/de_DE.js
@@ -191,6 +191,8 @@ OC.L10N.register(
"Folder name" : "Ordnername",
"This node is unavailable" : "Dieser Knoten ist nicht verfügbar",
"Download file {name}" : "Datei {name} herunterladen",
+ "Another entry with the same name already exists." : "Ein anderer Eintrag mit diesem Namen existiert bereits.",
+ "Invalid filename." : "Ungültiger Dateiname.",
"Renamed \"{oldName}\" to \"{newName}\"" : "\"{oldName}\" in \"{newName}\" umbenannt",
"Could not rename \"{oldName}\", it does not exist any more" : "\"{oldName}\" konnte nicht umbenannt werden, da es nicht mehr existiert",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Der Name \"{newName}“ wird bereits im Ordner \"{dir}“ verwendet. Bitte wählen Sie einen anderen Namen.",
@@ -208,11 +210,16 @@ OC.L10N.register(
"Column headers with buttons are sortable." : "Spaltenüberschriften mit Schaltflächen sind sortierbar.",
"This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Diese Liste ist aus Performance-Gründen nicht vollständig gerendert. Die Dateien werden gerendert, wenn Sie durch die Liste navigieren.",
"File not found" : "Datei nicht gefunden",
+ "Storage information" : "Speicherinformation",
+ "Storage quota" : "Speicherkontingent",
"{usedQuotaByte} used" : "{usedQuotaByte} verwendet",
"{relative}% used" : "{relative}% verwendet",
"Could not refresh storage stats" : "Die Speicherstatistik konnte nicht aktualisiert werden",
"Your storage is full, files can not be updated or synced anymore!" : "Ihr Speicher ist voll, daher können keine Dateien mehr aktualisiert oder synchronisiert werden!",
"Create" : "Erstellen",
+ "This name is already in use." : "Dieser Name wird bereits verwendet.",
+ "Fill template fields" : "Vorlagenfelder ausfüllen",
+ "Submitting fields…" : "Felder werden übermittelt…",
"Submit" : "Übermitteln",
"Transfer ownership of a file or folder" : "Besitz einer Datei oder eines Ordners übertragen",
"Choose file or folder to transfer" : "Datei oder Ordner zur Übertragung auswählen",
@@ -242,6 +249,7 @@ OC.L10N.register(
"Error during upload: {message}" : "Fehler beim Hochladen: {message}",
"Error during upload, status code {status}" : "Fehler beim Hochladen, Statuscode {status}",
"Unknown error during upload" : "Unbekannter Fehler beim Hochladen",
+ "Filter filenames…" : "Dateinamen filtern…",
"Views" : "Ansichten",
"Files settings" : "Dateien-Einstellungen",
"File cannot be accessed" : "Auf die Datei kann nicht zugegriffen werden",
@@ -268,16 +276,17 @@ OC.L10N.register(
"Creating file" : "Datei erstellen",
"Blank" : "Leer",
"Unable to create new file from template" : "Neue Datei kann nicht aus Vorlage erstellt werden",
+ "Deletion cancelled" : "Löschen abgebrochen",
"Delete permanently" : "Endgültig löschen",
"Delete and unshare" : "Löschen und nicht mehr teilen",
"Leave these shares" : "Diese Freigaben verlassen",
"Disconnect storages" : "Speicher trennen",
"Delete files" : "Dateien löschen",
"Delete folders" : "Ordner löschen",
- "You are about to delete {count} items." : "Sie sind dabei, {count} Elemente zu löschen.",
+ "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["Sie sind dabei, {count} Element endgültig zu löschen","Sie sind dabei, {count} Elemente endgültig zu löschen"],
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["Sie sind dabei, {count} Element zu löschen","Sie sind dabei, {count} Elemente zu löschen"],
"Confirm deletion" : "Löschen bestätigen",
"Cancel" : "Abbrechen",
- "Deletion cancelled" : "Löschen abgebrochen",
"Destination is not a folder" : "Ziel ist kein Ordner",
"This file/folder is already in that directory" : "Diese Datei oder Ordner ist bereits in diesem Verzeichnis vorhanden",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Eine Datei oder ein Ordner kann nicht auf sich selbst oder in einen Unterordner von sich selbst verschoben werden",
@@ -298,9 +307,15 @@ OC.L10N.register(
"Today" : "Heute",
"Last 7 days" : "Die letzten 7 Tage",
"Last 30 days" : "Die letzten 30 Tage",
+ "This year ({year})" : "Dieses Jahr ({year})",
+ "Last year ({year})" : "Letztes Jahr ({year})",
"Documents" : "Dokumente",
+ "Spreadsheets" : "Tabellenkalkulationen",
+ "Presentations" : "Präsentationen",
+ "PDFs" : "PDFs",
"Folders" : "Ordner",
"Audio" : "Audio",
+ "Pictures and images" : "Bilder und Abbildungen",
"Videos" : "Videos",
"Created new folder \"{name}\"" : "Neuer Ordner \"{name}\" wurde erstellt",
"Unable to initialize the templates directory" : "Der Vorlagenordner kann nicht initialisiert werden",
@@ -327,6 +342,11 @@ OC.L10N.register(
"_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 Datei und {folderCount} Ordner","1 Datei und {folderCount} Ordner"],
"_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} Datei und 1 Ordner","{fileCount} Dateien und 1 Ordner"],
"{fileCount} files and {folderCount} folders" : "{fileCount} Dateien und {folderCount} Ordner",
+ "Filename must not be empty." : "Dateiname darf nicht leer sein.",
+ "\"{char}\" is not allowed inside a filename." : "\"{char}“ ist innerhalb eines Dateinamens nicht zulässig.",
+ "\"{segment}\" is a reserved name and not allowed for filenames." : "\"{segment}\" ist ein reservierter Name und für Dateinamen nicht zulässig.",
+ "\"{extension}\" is not an allowed filetype." : "\"{extension}\" ist kein zulässiger Dateityp.",
+ "Filenames must not end with \"{extension}\"." : "Dateinamen dürfen nicht mit \"{extension}\" enden.",
"List of favorites files and folders." : "Liste der favorisierten Ordner und Dateien.",
"No favorites yet" : "Noch keine Favoriten vorhanden",
"Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die Sie als Favoriten kennzeichnen, werden hier erscheinen",
diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json
index 36439cd6fc2..89b0f363460 100644
--- a/apps/files/l10n/de_DE.json
+++ b/apps/files/l10n/de_DE.json
@@ -189,6 +189,8 @@
"Folder name" : "Ordnername",
"This node is unavailable" : "Dieser Knoten ist nicht verfügbar",
"Download file {name}" : "Datei {name} herunterladen",
+ "Another entry with the same name already exists." : "Ein anderer Eintrag mit diesem Namen existiert bereits.",
+ "Invalid filename." : "Ungültiger Dateiname.",
"Renamed \"{oldName}\" to \"{newName}\"" : "\"{oldName}\" in \"{newName}\" umbenannt",
"Could not rename \"{oldName}\", it does not exist any more" : "\"{oldName}\" konnte nicht umbenannt werden, da es nicht mehr existiert",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Der Name \"{newName}“ wird bereits im Ordner \"{dir}“ verwendet. Bitte wählen Sie einen anderen Namen.",
@@ -206,11 +208,16 @@
"Column headers with buttons are sortable." : "Spaltenüberschriften mit Schaltflächen sind sortierbar.",
"This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Diese Liste ist aus Performance-Gründen nicht vollständig gerendert. Die Dateien werden gerendert, wenn Sie durch die Liste navigieren.",
"File not found" : "Datei nicht gefunden",
+ "Storage information" : "Speicherinformation",
+ "Storage quota" : "Speicherkontingent",
"{usedQuotaByte} used" : "{usedQuotaByte} verwendet",
"{relative}% used" : "{relative}% verwendet",
"Could not refresh storage stats" : "Die Speicherstatistik konnte nicht aktualisiert werden",
"Your storage is full, files can not be updated or synced anymore!" : "Ihr Speicher ist voll, daher können keine Dateien mehr aktualisiert oder synchronisiert werden!",
"Create" : "Erstellen",
+ "This name is already in use." : "Dieser Name wird bereits verwendet.",
+ "Fill template fields" : "Vorlagenfelder ausfüllen",
+ "Submitting fields…" : "Felder werden übermittelt…",
"Submit" : "Übermitteln",
"Transfer ownership of a file or folder" : "Besitz einer Datei oder eines Ordners übertragen",
"Choose file or folder to transfer" : "Datei oder Ordner zur Übertragung auswählen",
@@ -240,6 +247,7 @@
"Error during upload: {message}" : "Fehler beim Hochladen: {message}",
"Error during upload, status code {status}" : "Fehler beim Hochladen, Statuscode {status}",
"Unknown error during upload" : "Unbekannter Fehler beim Hochladen",
+ "Filter filenames…" : "Dateinamen filtern…",
"Views" : "Ansichten",
"Files settings" : "Dateien-Einstellungen",
"File cannot be accessed" : "Auf die Datei kann nicht zugegriffen werden",
@@ -266,16 +274,17 @@
"Creating file" : "Datei erstellen",
"Blank" : "Leer",
"Unable to create new file from template" : "Neue Datei kann nicht aus Vorlage erstellt werden",
+ "Deletion cancelled" : "Löschen abgebrochen",
"Delete permanently" : "Endgültig löschen",
"Delete and unshare" : "Löschen und nicht mehr teilen",
"Leave these shares" : "Diese Freigaben verlassen",
"Disconnect storages" : "Speicher trennen",
"Delete files" : "Dateien löschen",
"Delete folders" : "Ordner löschen",
- "You are about to delete {count} items." : "Sie sind dabei, {count} Elemente zu löschen.",
+ "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["Sie sind dabei, {count} Element endgültig zu löschen","Sie sind dabei, {count} Elemente endgültig zu löschen"],
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["Sie sind dabei, {count} Element zu löschen","Sie sind dabei, {count} Elemente zu löschen"],
"Confirm deletion" : "Löschen bestätigen",
"Cancel" : "Abbrechen",
- "Deletion cancelled" : "Löschen abgebrochen",
"Destination is not a folder" : "Ziel ist kein Ordner",
"This file/folder is already in that directory" : "Diese Datei oder Ordner ist bereits in diesem Verzeichnis vorhanden",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Eine Datei oder ein Ordner kann nicht auf sich selbst oder in einen Unterordner von sich selbst verschoben werden",
@@ -296,9 +305,15 @@
"Today" : "Heute",
"Last 7 days" : "Die letzten 7 Tage",
"Last 30 days" : "Die letzten 30 Tage",
+ "This year ({year})" : "Dieses Jahr ({year})",
+ "Last year ({year})" : "Letztes Jahr ({year})",
"Documents" : "Dokumente",
+ "Spreadsheets" : "Tabellenkalkulationen",
+ "Presentations" : "Präsentationen",
+ "PDFs" : "PDFs",
"Folders" : "Ordner",
"Audio" : "Audio",
+ "Pictures and images" : "Bilder und Abbildungen",
"Videos" : "Videos",
"Created new folder \"{name}\"" : "Neuer Ordner \"{name}\" wurde erstellt",
"Unable to initialize the templates directory" : "Der Vorlagenordner kann nicht initialisiert werden",
@@ -325,6 +340,11 @@
"_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 Datei und {folderCount} Ordner","1 Datei und {folderCount} Ordner"],
"_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} Datei und 1 Ordner","{fileCount} Dateien und 1 Ordner"],
"{fileCount} files and {folderCount} folders" : "{fileCount} Dateien und {folderCount} Ordner",
+ "Filename must not be empty." : "Dateiname darf nicht leer sein.",
+ "\"{char}\" is not allowed inside a filename." : "\"{char}“ ist innerhalb eines Dateinamens nicht zulässig.",
+ "\"{segment}\" is a reserved name and not allowed for filenames." : "\"{segment}\" ist ein reservierter Name und für Dateinamen nicht zulässig.",
+ "\"{extension}\" is not an allowed filetype." : "\"{extension}\" ist kein zulässiger Dateityp.",
+ "Filenames must not end with \"{extension}\"." : "Dateinamen dürfen nicht mit \"{extension}\" enden.",
"List of favorites files and folders." : "Liste der favorisierten Ordner und Dateien.",
"No favorites yet" : "Noch keine Favoriten vorhanden",
"Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die Sie als Favoriten kennzeichnen, werden hier erscheinen",
diff --git a/apps/files/l10n/el.js b/apps/files/l10n/el.js
index a96ec99c051..bc31354a3bb 100644
--- a/apps/files/l10n/el.js
+++ b/apps/files/l10n/el.js
@@ -156,10 +156,14 @@ OC.L10N.register(
"A file or folder has been <strong>changed</strong>" : "Ένα αρχείο ή κατάλογος έχουν <strong>αλλάξει</strong>",
"A favorite file or folder has been <strong>changed</strong>" : "Ένα αγαπημένο αρχείο ή φάκελός σας έχει <strong>τροποποιηθεί</strong>.",
"Upload (max. %s)" : "Μεταφόρτωση (max. %s)",
+ "Enforce Windows compatibility" : "Επιβολή συμβατότητας με Windows",
+ "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Αυτό θα αποκλείσει ονόματα αρχείων που δεν είναι έγκυρα σε συστήματα Windows, όπως η χρήση δεσμευμένων ονομάτων ή ειδικών χαρακτήρων. Αλλά αυτό δεν θα επιβάλει τη συμμόρφωση ως προς την διάκριση πεζών-κεφαλαίων.",
"Accept" : "Αποδοχή",
"Reject" : "Απόρριψη",
"Incoming ownership transfer from {user}" : "Εισερχόμενη μεταβίβαση κυριότητας από τον {user}",
"Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "Δέχεστε την διαδρομή {path}?\n\nΣημείωση: Η διαδικασία μεταφοράς μπορεί να διαρκέσει πάνω από μία ώρα.",
+ "Ownership transfer denied" : "Η μεταφορά κυριότητας απορρίφθηκε",
+ "Your ownership transfer of {path} was denied by {user}." : "Η μεταφορά της κυριότητας του {path} απορρίφθηκε από τον χρήστη {user}.",
"Ownership transfer failed" : "Η μεταφορά κυριότητας απέτυχε",
"Your ownership transfer of {path} to {user} failed." : "Η μεταφορά κυριότητας σας του {path} στον {user} απέτυχε.",
"The ownership transfer of {path} from {user} failed." : "Η μεταφορά κυριότητας του {path} από {user} απέτυχε.",
@@ -167,6 +171,7 @@ OC.L10N.register(
"Your ownership transfer of {path} to {user} has completed." : "Η μεταφορά κυριότητας σας του {path} στον {user} ολοκληρώθηκε.",
"The ownership transfer of {path} from {user} has completed." : "Η μεταφορά κυριότητας του {path} στον {user} ολοκληρώθηκε.",
"in %s" : "σε %s",
+ "Transferred from %1$s on %2$s" : "Μεταβιβάστηκε από %1$s σε %2$s",
"File Management" : "Διαχείριση αρχείων",
"Current directory path" : "Τρέχουσα διαδρομή καταλόγου",
"Reload current directory" : "Επαναφόρτωση τρέχοντος καταλόγου",
@@ -176,11 +181,15 @@ OC.L10N.register(
"You don’t have permission to upload or create files here" : "Δεν έχετε δικαιώματα μεταφόρτωσης ή δημιουργίας αρχείων εδώ",
"\"{displayName}\" action executed successfully" : "Η ενέργεια του/της \"{displayName}\" εκτελέστηκε επιτυχώς",
"\"{displayName}\" action failed" : "Η ενέργεια του \"{displayName}\" απέτυχε",
+ "Toggle selection for file \"{displayName}\"" : "Εναλλαγή επιλογής για το αρχείο \"{displayName}\"",
+ "Toggle selection for folder \"{displayName}\"" : "Εναλλαγή επιλογής για τον φάκελο \"{displayName}\"",
"Rename file" : "Μετονομασία αρχείου",
"Filename" : "Όνομα αρχείου",
"Folder name" : "Όνομα φακέλου",
"This node is unavailable" : "Αυτός ο κόμβος δεν είναι διαθέσιμος",
"Download file {name}" : "Λήψη αρχείου {name}",
+ "Another entry with the same name already exists." : "Μια άλλη καταχώρηση με το ίδιο όνομα υπάρχει ήδη.",
+ "Invalid filename." : "Μη έγκυρο όνομα αρχείου",
"Renamed \"{oldName}\" to \"{newName}\"" : "Μετονομασία του \"{oldName}\" σε \"{newName}\"",
"Could not rename \"{oldName}\", it does not exist any more" : "Δεν ήταν δυνατή η μετονομασία του \"{oldName}\", δεν υπάρχει πλέον",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Το όνομα \"{newName}\" χρησιμοποιείται ήδη στον φάκελο \"{dir}\". Παρακαλώ επιλέξτε ένα διαφορετικό όνομα.",
@@ -188,19 +197,23 @@ OC.L10N.register(
"Clear filter" : "Εκκαθάριση φίλτρου",
"Type" : "Τύπος",
"Active filters" : "Ενεργά φίλτρα",
+ "Remove filter" : "Αφαίρεση φίλτρου",
"Total rows summary" : "Συνολική σύνοψη γραμμών",
"Toggle selection for all files and folders" : "Εναλλαγή επιλογής για όλα τα αρχεία και τους φακέλους",
"\"{displayName}\" failed on some elements " : "\"{displayName}\" απέτυχε σε ορισμένα στοιχεία",
"\"{displayName}\" batch action executed successfully" : "Η μαζική ενέργεια του/της \"{displayName}\" εκτελέστηκε επιτυχώς",
+ "{count} selected" : "{count} έχουν επιλεγεί",
"List of files and folders." : "Λίστα αρχείων και φακέλων.",
"Column headers with buttons are sortable." : "Οι επικεφαλίδες στηλών με κουμπιά είναι ταξινομήσιμες.",
"This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Η λίστα αυτή δεν εμφανίζεται πλήρως για λόγους απόδοσης. Τα αρχεία θα εμφανίζονται καθώς πλοηγείστε στη λίστα.",
"File not found" : "Δε βρέθηκε το αρχείο",
+ "Storage information" : "Πληροφορίες αποθήκευσης",
"{usedQuotaByte} used" : "{usedQuotaByte} χρησιμοποιείται",
"{relative}% used" : "{relative}% χρησιμοποιείται",
"Could not refresh storage stats" : "Δεν ήταν δυνατή η ανανέωση των στατιστικών αποθήκευσης",
"Your storage is full, files can not be updated or synced anymore!" : "Ο αποθηκευτικός σας χώρος είναι γεμάτος, τα αρχεία δεν μπορούν να ενημερωθούν ή να συγχρονιστούν πια!",
"Create" : "Δημιουργία",
+ "This name is already in use." : "Αυτό το όνομα χρησιμοποιείται ήδη.",
"Submit" : "Υποβολή",
"Transfer ownership of a file or folder" : "Μεταβίβαση κυριότητας αρχείου ή φακέλου",
"Choose file or folder to transfer" : "Επιλέξτε αρχείο ή φάκελο για μεταφορά",
@@ -226,9 +239,11 @@ OC.L10N.register(
"Shared" : "Κοινόχρηστα",
"Switch to list view" : "Αλλαγή σε προβολή λίστας",
"Switch to grid view" : "Εναλλαγή σε προβολή πλέγματος",
+ "Upload was cancelled by user" : "Η μεταφόρτωση ακυρώθηκε από τον χρήστη",
"Error during upload: {message}" : "Σφάλμα κατά τη μεταφόρτωση: {message}",
"Error during upload, status code {status}" : "Σφάλμα κατά τη μεταφόρτωση, κωδικός κατάστασης {status}",
"Unknown error during upload" : "Άγνωστο σφάλμα κατά τη μεταφόρτωση",
+ "Filter filenames…" : "Φιλτράρετε τα ονόματα αρχείων...",
"Views" : "Προβολές",
"Files settings" : "Ρυθμίσεις αρχείων",
"File cannot be accessed" : "Δεν είναι δυνατή η πρόσβαση στο αρχείο",
@@ -254,6 +269,7 @@ OC.L10N.register(
"Creating file" : "Δημιουργία αρχείου",
"Blank" : "Κενό",
"Unable to create new file from template" : "Δεν είναι δυνατή η δημιουργία νέου αρχείου από το πρότυπο",
+ "Deletion cancelled" : "Διαγραφή ακυρώθηκε",
"Delete permanently" : "Διαγραφή οριστικά",
"Delete and unshare" : "Διαγραφή και κατάργηση κοινής χρήσης",
"Leave these shares" : "Αποχώρηση από αυτά τα κοινόχρηστα",
@@ -261,7 +277,6 @@ OC.L10N.register(
"Delete folders" : "Διαγραφή φακέλων",
"Confirm deletion" : "Επιβεβαίωση διαγραφής",
"Cancel" : "Ακύρωση",
- "Deletion cancelled" : "Διαγραφή ακυρώθηκε",
"Destination is not a folder" : "Ο προορισμός δεν είναι φάκελος",
"This file/folder is already in that directory" : "Αυτό το αρχείο/φάκελος βρίσκεται ήδη σε αυτόν τον κατάλογο",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Δεν μπορείτε να μετακινήσετε ένα αρχείο/φάκελο στον εαυτό του ή σε έναν υποφάκελο του ίδιου του φακέλου.",
@@ -279,6 +294,11 @@ OC.L10N.register(
"Open folder {displayName}" : "Άνοιγμα φακέλου {displayName}",
"Open in Files" : "Άνοιγμα στα Αρχεία",
"Open details" : "Άνοιγμα λεπτομερειών",
+ "Today" : "Σήμερα",
+ "Last 7 days" : "Τελευταίες 7 ημέρες",
+ "Last 30 days" : "Τελευταίες 30 ημέρες",
+ "This year ({year})" : "Αυτό το έτος ({year})",
+ "Last year ({year})" : "Το περασμένο έτος ({year})",
"Documents" : "Έγγραφα",
"Audio" : "Ήχος",
"Videos" : "Βίντεο",
@@ -291,12 +311,22 @@ OC.L10N.register(
"One of the dropped files could not be processed" : "Ένα από τα αρχεία που ελήφθησαν δεν μπόρεσε να επεξεργαστεί",
"Some files could not be uploaded" : "Μερικά αρχεία δεν μπόρεσαν να μεταφορτωθούν",
"Files uploaded successfully" : "Τα αρχεία μεταφορτώθηκαν επιτυχώς",
+ "No files to process" : "Δεν υπάρχουν αρχεία προς επεξεργασία",
+ "Some files could not be copied" : "Ορισμένα αρχεία δεν μπόρεσαν να αντιγραφούν",
"Some files could not be moved" : "Αδυναμία μετακίνησης μερικών αρχείων",
+ "Files copied successfully" : "Τα αρχεία αντιγράφηκαν επιτυχώς",
+ "Files moved successfully" : "Τα αρχεία μετακινήθηκαν επιτυχώς",
+ "Upload cancelled" : "Η μεταφόρτωση ακυρώθηκε",
"_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} φάκελος","{folderCount} φακέλοι"],
"_{fileCount} file_::_{fileCount} files_" : ["{fileCount} αρχείο","{fileCount} αρχεία"],
"_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 αρχείο και {folderCount} φάκελος","1 αρχείο και {folderCount} φακέλοι"],
"_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} αρχείο και 1 φάκελος","{fileCount} αρχεία και 1 φάκελος"],
"{fileCount} files and {folderCount} folders" : "{fileCount} αρχεία και {folderCount} φακέλοι",
+ "Filename must not be empty." : "Το όνομα αρχείου δεν πρέπει να είναι κενό.",
+ "\"{char}\" is not allowed inside a filename." : "\"{char}\" δεν επιτρέπεται μέσα σε όνομα αρχείου.",
+ "\"{segment}\" is a reserved name and not allowed for filenames." : "\"{segment}\" είναι δεσμευμένο όνομα και δεν επιτρέπεται για ονόματα αρχείων.",
+ "\"{extension}\" is not an allowed filetype." : "\"{extension}\" δεν είναι επιτρεπτός τύπος αρχείου.",
+ "Filenames must not end with \"{extension}\"." : "Τα ονόματα αρχείων δεν πρέπει να τελειώνουν με \"{extension}\".",
"List of favorites files and folders." : "Λίστα αγαπημένων αρχείων και φακέλων.",
"No favorites yet" : "Κανένα αγαπημένο ακόμα",
"Files and folders you mark as favorite will show up here" : "Τα αρχεία και οι φάκελοι που σημειώνονται ως αγαπημένα θα εμφανιστούν εδώ",
@@ -349,6 +379,7 @@ OC.L10N.register(
"Name cannot be empty" : "Το όνομα δεν μπορεί να είναι κενό",
"Another entry with the same name already exists" : "Υπάρχει ήδη μια άλλη καταχώρηση με το ίδιο όνομα",
"A file or folder with that name already exists." : "Υπάρχει ήδη ένα αρχείο ή φάκελος με αυτό το όνομα.",
+ "Invalid file name" : "Μη έγκυρο όνομα αρχείου",
"The files is locked" : "Το αρχείο είναι κλειδωμένο"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/el.json b/apps/files/l10n/el.json
index 64174279f87..e0f16d64c64 100644
--- a/apps/files/l10n/el.json
+++ b/apps/files/l10n/el.json
@@ -154,10 +154,14 @@
"A file or folder has been <strong>changed</strong>" : "Ένα αρχείο ή κατάλογος έχουν <strong>αλλάξει</strong>",
"A favorite file or folder has been <strong>changed</strong>" : "Ένα αγαπημένο αρχείο ή φάκελός σας έχει <strong>τροποποιηθεί</strong>.",
"Upload (max. %s)" : "Μεταφόρτωση (max. %s)",
+ "Enforce Windows compatibility" : "Επιβολή συμβατότητας με Windows",
+ "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Αυτό θα αποκλείσει ονόματα αρχείων που δεν είναι έγκυρα σε συστήματα Windows, όπως η χρήση δεσμευμένων ονομάτων ή ειδικών χαρακτήρων. Αλλά αυτό δεν θα επιβάλει τη συμμόρφωση ως προς την διάκριση πεζών-κεφαλαίων.",
"Accept" : "Αποδοχή",
"Reject" : "Απόρριψη",
"Incoming ownership transfer from {user}" : "Εισερχόμενη μεταβίβαση κυριότητας από τον {user}",
"Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "Δέχεστε την διαδρομή {path}?\n\nΣημείωση: Η διαδικασία μεταφοράς μπορεί να διαρκέσει πάνω από μία ώρα.",
+ "Ownership transfer denied" : "Η μεταφορά κυριότητας απορρίφθηκε",
+ "Your ownership transfer of {path} was denied by {user}." : "Η μεταφορά της κυριότητας του {path} απορρίφθηκε από τον χρήστη {user}.",
"Ownership transfer failed" : "Η μεταφορά κυριότητας απέτυχε",
"Your ownership transfer of {path} to {user} failed." : "Η μεταφορά κυριότητας σας του {path} στον {user} απέτυχε.",
"The ownership transfer of {path} from {user} failed." : "Η μεταφορά κυριότητας του {path} από {user} απέτυχε.",
@@ -165,6 +169,7 @@
"Your ownership transfer of {path} to {user} has completed." : "Η μεταφορά κυριότητας σας του {path} στον {user} ολοκληρώθηκε.",
"The ownership transfer of {path} from {user} has completed." : "Η μεταφορά κυριότητας του {path} στον {user} ολοκληρώθηκε.",
"in %s" : "σε %s",
+ "Transferred from %1$s on %2$s" : "Μεταβιβάστηκε από %1$s σε %2$s",
"File Management" : "Διαχείριση αρχείων",
"Current directory path" : "Τρέχουσα διαδρομή καταλόγου",
"Reload current directory" : "Επαναφόρτωση τρέχοντος καταλόγου",
@@ -174,11 +179,15 @@
"You don’t have permission to upload or create files here" : "Δεν έχετε δικαιώματα μεταφόρτωσης ή δημιουργίας αρχείων εδώ",
"\"{displayName}\" action executed successfully" : "Η ενέργεια του/της \"{displayName}\" εκτελέστηκε επιτυχώς",
"\"{displayName}\" action failed" : "Η ενέργεια του \"{displayName}\" απέτυχε",
+ "Toggle selection for file \"{displayName}\"" : "Εναλλαγή επιλογής για το αρχείο \"{displayName}\"",
+ "Toggle selection for folder \"{displayName}\"" : "Εναλλαγή επιλογής για τον φάκελο \"{displayName}\"",
"Rename file" : "Μετονομασία αρχείου",
"Filename" : "Όνομα αρχείου",
"Folder name" : "Όνομα φακέλου",
"This node is unavailable" : "Αυτός ο κόμβος δεν είναι διαθέσιμος",
"Download file {name}" : "Λήψη αρχείου {name}",
+ "Another entry with the same name already exists." : "Μια άλλη καταχώρηση με το ίδιο όνομα υπάρχει ήδη.",
+ "Invalid filename." : "Μη έγκυρο όνομα αρχείου",
"Renamed \"{oldName}\" to \"{newName}\"" : "Μετονομασία του \"{oldName}\" σε \"{newName}\"",
"Could not rename \"{oldName}\", it does not exist any more" : "Δεν ήταν δυνατή η μετονομασία του \"{oldName}\", δεν υπάρχει πλέον",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Το όνομα \"{newName}\" χρησιμοποιείται ήδη στον φάκελο \"{dir}\". Παρακαλώ επιλέξτε ένα διαφορετικό όνομα.",
@@ -186,19 +195,23 @@
"Clear filter" : "Εκκαθάριση φίλτρου",
"Type" : "Τύπος",
"Active filters" : "Ενεργά φίλτρα",
+ "Remove filter" : "Αφαίρεση φίλτρου",
"Total rows summary" : "Συνολική σύνοψη γραμμών",
"Toggle selection for all files and folders" : "Εναλλαγή επιλογής για όλα τα αρχεία και τους φακέλους",
"\"{displayName}\" failed on some elements " : "\"{displayName}\" απέτυχε σε ορισμένα στοιχεία",
"\"{displayName}\" batch action executed successfully" : "Η μαζική ενέργεια του/της \"{displayName}\" εκτελέστηκε επιτυχώς",
+ "{count} selected" : "{count} έχουν επιλεγεί",
"List of files and folders." : "Λίστα αρχείων και φακέλων.",
"Column headers with buttons are sortable." : "Οι επικεφαλίδες στηλών με κουμπιά είναι ταξινομήσιμες.",
"This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Η λίστα αυτή δεν εμφανίζεται πλήρως για λόγους απόδοσης. Τα αρχεία θα εμφανίζονται καθώς πλοηγείστε στη λίστα.",
"File not found" : "Δε βρέθηκε το αρχείο",
+ "Storage information" : "Πληροφορίες αποθήκευσης",
"{usedQuotaByte} used" : "{usedQuotaByte} χρησιμοποιείται",
"{relative}% used" : "{relative}% χρησιμοποιείται",
"Could not refresh storage stats" : "Δεν ήταν δυνατή η ανανέωση των στατιστικών αποθήκευσης",
"Your storage is full, files can not be updated or synced anymore!" : "Ο αποθηκευτικός σας χώρος είναι γεμάτος, τα αρχεία δεν μπορούν να ενημερωθούν ή να συγχρονιστούν πια!",
"Create" : "Δημιουργία",
+ "This name is already in use." : "Αυτό το όνομα χρησιμοποιείται ήδη.",
"Submit" : "Υποβολή",
"Transfer ownership of a file or folder" : "Μεταβίβαση κυριότητας αρχείου ή φακέλου",
"Choose file or folder to transfer" : "Επιλέξτε αρχείο ή φάκελο για μεταφορά",
@@ -224,9 +237,11 @@
"Shared" : "Κοινόχρηστα",
"Switch to list view" : "Αλλαγή σε προβολή λίστας",
"Switch to grid view" : "Εναλλαγή σε προβολή πλέγματος",
+ "Upload was cancelled by user" : "Η μεταφόρτωση ακυρώθηκε από τον χρήστη",
"Error during upload: {message}" : "Σφάλμα κατά τη μεταφόρτωση: {message}",
"Error during upload, status code {status}" : "Σφάλμα κατά τη μεταφόρτωση, κωδικός κατάστασης {status}",
"Unknown error during upload" : "Άγνωστο σφάλμα κατά τη μεταφόρτωση",
+ "Filter filenames…" : "Φιλτράρετε τα ονόματα αρχείων...",
"Views" : "Προβολές",
"Files settings" : "Ρυθμίσεις αρχείων",
"File cannot be accessed" : "Δεν είναι δυνατή η πρόσβαση στο αρχείο",
@@ -252,6 +267,7 @@
"Creating file" : "Δημιουργία αρχείου",
"Blank" : "Κενό",
"Unable to create new file from template" : "Δεν είναι δυνατή η δημιουργία νέου αρχείου από το πρότυπο",
+ "Deletion cancelled" : "Διαγραφή ακυρώθηκε",
"Delete permanently" : "Διαγραφή οριστικά",
"Delete and unshare" : "Διαγραφή και κατάργηση κοινής χρήσης",
"Leave these shares" : "Αποχώρηση από αυτά τα κοινόχρηστα",
@@ -259,7 +275,6 @@
"Delete folders" : "Διαγραφή φακέλων",
"Confirm deletion" : "Επιβεβαίωση διαγραφής",
"Cancel" : "Ακύρωση",
- "Deletion cancelled" : "Διαγραφή ακυρώθηκε",
"Destination is not a folder" : "Ο προορισμός δεν είναι φάκελος",
"This file/folder is already in that directory" : "Αυτό το αρχείο/φάκελος βρίσκεται ήδη σε αυτόν τον κατάλογο",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Δεν μπορείτε να μετακινήσετε ένα αρχείο/φάκελο στον εαυτό του ή σε έναν υποφάκελο του ίδιου του φακέλου.",
@@ -277,6 +292,11 @@
"Open folder {displayName}" : "Άνοιγμα φακέλου {displayName}",
"Open in Files" : "Άνοιγμα στα Αρχεία",
"Open details" : "Άνοιγμα λεπτομερειών",
+ "Today" : "Σήμερα",
+ "Last 7 days" : "Τελευταίες 7 ημέρες",
+ "Last 30 days" : "Τελευταίες 30 ημέρες",
+ "This year ({year})" : "Αυτό το έτος ({year})",
+ "Last year ({year})" : "Το περασμένο έτος ({year})",
"Documents" : "Έγγραφα",
"Audio" : "Ήχος",
"Videos" : "Βίντεο",
@@ -289,12 +309,22 @@
"One of the dropped files could not be processed" : "Ένα από τα αρχεία που ελήφθησαν δεν μπόρεσε να επεξεργαστεί",
"Some files could not be uploaded" : "Μερικά αρχεία δεν μπόρεσαν να μεταφορτωθούν",
"Files uploaded successfully" : "Τα αρχεία μεταφορτώθηκαν επιτυχώς",
+ "No files to process" : "Δεν υπάρχουν αρχεία προς επεξεργασία",
+ "Some files could not be copied" : "Ορισμένα αρχεία δεν μπόρεσαν να αντιγραφούν",
"Some files could not be moved" : "Αδυναμία μετακίνησης μερικών αρχείων",
+ "Files copied successfully" : "Τα αρχεία αντιγράφηκαν επιτυχώς",
+ "Files moved successfully" : "Τα αρχεία μετακινήθηκαν επιτυχώς",
+ "Upload cancelled" : "Η μεταφόρτωση ακυρώθηκε",
"_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} φάκελος","{folderCount} φακέλοι"],
"_{fileCount} file_::_{fileCount} files_" : ["{fileCount} αρχείο","{fileCount} αρχεία"],
"_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 αρχείο και {folderCount} φάκελος","1 αρχείο και {folderCount} φακέλοι"],
"_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} αρχείο και 1 φάκελος","{fileCount} αρχεία και 1 φάκελος"],
"{fileCount} files and {folderCount} folders" : "{fileCount} αρχεία και {folderCount} φακέλοι",
+ "Filename must not be empty." : "Το όνομα αρχείου δεν πρέπει να είναι κενό.",
+ "\"{char}\" is not allowed inside a filename." : "\"{char}\" δεν επιτρέπεται μέσα σε όνομα αρχείου.",
+ "\"{segment}\" is a reserved name and not allowed for filenames." : "\"{segment}\" είναι δεσμευμένο όνομα και δεν επιτρέπεται για ονόματα αρχείων.",
+ "\"{extension}\" is not an allowed filetype." : "\"{extension}\" δεν είναι επιτρεπτός τύπος αρχείου.",
+ "Filenames must not end with \"{extension}\"." : "Τα ονόματα αρχείων δεν πρέπει να τελειώνουν με \"{extension}\".",
"List of favorites files and folders." : "Λίστα αγαπημένων αρχείων και φακέλων.",
"No favorites yet" : "Κανένα αγαπημένο ακόμα",
"Files and folders you mark as favorite will show up here" : "Τα αρχεία και οι φάκελοι που σημειώνονται ως αγαπημένα θα εμφανιστούν εδώ",
@@ -347,6 +377,7 @@
"Name cannot be empty" : "Το όνομα δεν μπορεί να είναι κενό",
"Another entry with the same name already exists" : "Υπάρχει ήδη μια άλλη καταχώρηση με το ίδιο όνομα",
"A file or folder with that name already exists." : "Υπάρχει ήδη ένα αρχείο ή φάκελος με αυτό το όνομα.",
+ "Invalid file name" : "Μη έγκυρο όνομα αρχείου",
"The files is locked" : "Το αρχείο είναι κλειδωμένο"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/en_GB.js b/apps/files/l10n/en_GB.js
index 7b143308e9f..1b0cb7ec7eb 100644
--- a/apps/files/l10n/en_GB.js
+++ b/apps/files/l10n/en_GB.js
@@ -217,6 +217,7 @@ OC.L10N.register(
"Could not refresh storage stats" : "Could not refresh storage stats",
"Your storage is full, files can not be updated or synced anymore!" : "Your storage is full, files can not be updated or synced anymore!",
"Create" : "Create",
+ "This name is already in use." : "This name is already in use.",
"Fill template fields" : "Fill template fields",
"Submitting fields…" : "Submitting fields…",
"Submit" : "Submit",
@@ -275,16 +276,17 @@ OC.L10N.register(
"Creating file" : "Creating file",
"Blank" : "Blank",
"Unable to create new file from template" : "Unable to create new file from template",
+ "Deletion cancelled" : "Deletion cancelled",
"Delete permanently" : "Delete permanently",
"Delete and unshare" : "Delete and unshare",
"Leave these shares" : "Leave these shares",
"Disconnect storages" : "Disconnect storages",
"Delete files" : "Delete files",
"Delete folders" : "Delete folders",
- "You are about to delete {count} items." : "You are about to delete {count} items.",
+ "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["You are about to permanently delete {count} item","You are about to permanently delete {count} items"],
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["You are about to delete {count} item","You are about to delete {count} items"],
"Confirm deletion" : "Confirm deletion",
"Cancel" : "Cancel",
- "Deletion cancelled" : "Deletion cancelled",
"Destination is not a folder" : "Destination is not a folder",
"This file/folder is already in that directory" : "This file/folder is already in that directory",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "You cannot move a file/folder onto itself or into a subfolder of itself",
diff --git a/apps/files/l10n/en_GB.json b/apps/files/l10n/en_GB.json
index b855595f443..25ec308eb01 100644
--- a/apps/files/l10n/en_GB.json
+++ b/apps/files/l10n/en_GB.json
@@ -215,6 +215,7 @@
"Could not refresh storage stats" : "Could not refresh storage stats",
"Your storage is full, files can not be updated or synced anymore!" : "Your storage is full, files can not be updated or synced anymore!",
"Create" : "Create",
+ "This name is already in use." : "This name is already in use.",
"Fill template fields" : "Fill template fields",
"Submitting fields…" : "Submitting fields…",
"Submit" : "Submit",
@@ -273,16 +274,17 @@
"Creating file" : "Creating file",
"Blank" : "Blank",
"Unable to create new file from template" : "Unable to create new file from template",
+ "Deletion cancelled" : "Deletion cancelled",
"Delete permanently" : "Delete permanently",
"Delete and unshare" : "Delete and unshare",
"Leave these shares" : "Leave these shares",
"Disconnect storages" : "Disconnect storages",
"Delete files" : "Delete files",
"Delete folders" : "Delete folders",
- "You are about to delete {count} items." : "You are about to delete {count} items.",
+ "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["You are about to permanently delete {count} item","You are about to permanently delete {count} items"],
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["You are about to delete {count} item","You are about to delete {count} items"],
"Confirm deletion" : "Confirm deletion",
"Cancel" : "Cancel",
- "Deletion cancelled" : "Deletion cancelled",
"Destination is not a folder" : "Destination is not a folder",
"This file/folder is already in that directory" : "This file/folder is already in that directory",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "You cannot move a file/folder onto itself or into a subfolder of itself",
diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js
index ddb208dd7e3..0481a403e41 100644
--- a/apps/files/l10n/es.js
+++ b/apps/files/l10n/es.js
@@ -261,16 +261,15 @@ OC.L10N.register(
"Creating file" : "Creando el archivo",
"Blank" : "Vacío",
"Unable to create new file from template" : "No se ha podido crear un nuevo archivo desde la plantilla",
+ "Deletion cancelled" : "Eliminación cancelada",
"Delete permanently" : "Eliminar de forma permanente",
"Delete and unshare" : "Eliminar y dejar de compartir",
"Leave these shares" : "Abandonar estos recursos compartidos",
"Disconnect storages" : "Desconectar almacenamientos",
"Delete files" : "Eliminar archivos",
"Delete folders" : "Eliminar carpetas",
- "You are about to delete {count} items." : "Está a punto de eliminar {count} ítems.",
"Confirm deletion" : "Confirmar eliminación",
"Cancel" : "Cancelar",
- "Deletion cancelled" : "Eliminación cancelada",
"Destination is not a folder" : "El destino no es una carpeta",
"This file/folder is already in that directory" : "Este archivo/carpeta ya está en ese directorio",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "No puede mover un archivo/carpeta a sí mismo o a una sub-carpeta de sí mismo",
diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json
index feab249c420..0ae5bf1a09f 100644
--- a/apps/files/l10n/es.json
+++ b/apps/files/l10n/es.json
@@ -259,16 +259,15 @@
"Creating file" : "Creando el archivo",
"Blank" : "Vacío",
"Unable to create new file from template" : "No se ha podido crear un nuevo archivo desde la plantilla",
+ "Deletion cancelled" : "Eliminación cancelada",
"Delete permanently" : "Eliminar de forma permanente",
"Delete and unshare" : "Eliminar y dejar de compartir",
"Leave these shares" : "Abandonar estos recursos compartidos",
"Disconnect storages" : "Desconectar almacenamientos",
"Delete files" : "Eliminar archivos",
"Delete folders" : "Eliminar carpetas",
- "You are about to delete {count} items." : "Está a punto de eliminar {count} ítems.",
"Confirm deletion" : "Confirmar eliminación",
"Cancel" : "Cancelar",
- "Deletion cancelled" : "Eliminación cancelada",
"Destination is not a folder" : "El destino no es una carpeta",
"This file/folder is already in that directory" : "Este archivo/carpeta ya está en ese directorio",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "No puede mover un archivo/carpeta a sí mismo o a una sub-carpeta de sí mismo",
diff --git a/apps/files/l10n/es_MX.js b/apps/files/l10n/es_MX.js
index 0e30b3cfc48..b8ad5893801 100644
--- a/apps/files/l10n/es_MX.js
+++ b/apps/files/l10n/es_MX.js
@@ -264,16 +264,15 @@ OC.L10N.register(
"Creating file" : "Creando el archivo",
"Blank" : "Vacío",
"Unable to create new file from template" : "No se ha podido crear un nuevo archivo desde la plantilla",
+ "Deletion cancelled" : "Eliminación cancelada",
"Delete permanently" : "Borrar permanentemente",
"Delete and unshare" : "Eliminar y dejar de compartir",
"Leave these shares" : "Dejar estos recursos compartidos",
"Disconnect storages" : "Desconectar almacenamientos",
"Delete files" : "Eliminar archivos",
"Delete folders" : "Eliminar carpetas",
- "You are about to delete {count} items." : "Está a punto de eliminar {count} ítems.",
"Confirm deletion" : "Confirmar eliminación",
"Cancel" : "Cancelar",
- "Deletion cancelled" : "Eliminación cancelada",
"Destination is not a folder" : "El destino no es una carpeta",
"This file/folder is already in that directory" : "Este archivo/carpeta ya está en ese directorio",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "No puede mover un archivo/carpeta a sí mismo o a una subcarpeta de sí mismo",
diff --git a/apps/files/l10n/es_MX.json b/apps/files/l10n/es_MX.json
index aaa61a0c792..8d8adec1c4f 100644
--- a/apps/files/l10n/es_MX.json
+++ b/apps/files/l10n/es_MX.json
@@ -262,16 +262,15 @@
"Creating file" : "Creando el archivo",
"Blank" : "Vacío",
"Unable to create new file from template" : "No se ha podido crear un nuevo archivo desde la plantilla",
+ "Deletion cancelled" : "Eliminación cancelada",
"Delete permanently" : "Borrar permanentemente",
"Delete and unshare" : "Eliminar y dejar de compartir",
"Leave these shares" : "Dejar estos recursos compartidos",
"Disconnect storages" : "Desconectar almacenamientos",
"Delete files" : "Eliminar archivos",
"Delete folders" : "Eliminar carpetas",
- "You are about to delete {count} items." : "Está a punto de eliminar {count} ítems.",
"Confirm deletion" : "Confirmar eliminación",
"Cancel" : "Cancelar",
- "Deletion cancelled" : "Eliminación cancelada",
"Destination is not a folder" : "El destino no es una carpeta",
"This file/folder is already in that directory" : "Este archivo/carpeta ya está en ese directorio",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "No puede mover un archivo/carpeta a sí mismo o a una subcarpeta de sí mismo",
diff --git a/apps/files/l10n/eu.js b/apps/files/l10n/eu.js
index 6dbd4c50fd1..ba4c4789db7 100644
--- a/apps/files/l10n/eu.js
+++ b/apps/files/l10n/eu.js
@@ -264,16 +264,15 @@ OC.L10N.register(
"Creating file" : "Fitxategia sortzen",
"Blank" : "Hutsik",
"Unable to create new file from template" : "Ezin da fitxategi berria sortu txantiloitik",
+ "Deletion cancelled" : "Ezabatzea bertan behera utzi da",
"Delete permanently" : "Ezabatu betirako",
"Delete and unshare" : "Ezabatu eta kendu partekatzea",
"Leave these shares" : "Utzi partekatze hauek",
"Disconnect storages" : "Deskonektatu biltegiak",
"Delete files" : "Ezabatu fitxategiak",
"Delete folders" : "Ezabatu karpetak",
- "You are about to delete {count} items." : "{count} elementu ezabatzera zoaz.",
"Confirm deletion" : "Berretsi ezabaketa",
"Cancel" : "Utzi",
- "Deletion cancelled" : "Ezabatzea bertan behera utzi da",
"Destination is not a folder" : "Helburua ez da karpeta bat",
"This file/folder is already in that directory" : "Fitxategi/karpeta hau dagoeneko karpeta horretan dago",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Ezin duzu fitxategi/karpeta bat berera edo bere azpikarpeta batera mugitu",
diff --git a/apps/files/l10n/eu.json b/apps/files/l10n/eu.json
index be5865e33aa..41105c076f8 100644
--- a/apps/files/l10n/eu.json
+++ b/apps/files/l10n/eu.json
@@ -262,16 +262,15 @@
"Creating file" : "Fitxategia sortzen",
"Blank" : "Hutsik",
"Unable to create new file from template" : "Ezin da fitxategi berria sortu txantiloitik",
+ "Deletion cancelled" : "Ezabatzea bertan behera utzi da",
"Delete permanently" : "Ezabatu betirako",
"Delete and unshare" : "Ezabatu eta kendu partekatzea",
"Leave these shares" : "Utzi partekatze hauek",
"Disconnect storages" : "Deskonektatu biltegiak",
"Delete files" : "Ezabatu fitxategiak",
"Delete folders" : "Ezabatu karpetak",
- "You are about to delete {count} items." : "{count} elementu ezabatzera zoaz.",
"Confirm deletion" : "Berretsi ezabaketa",
"Cancel" : "Utzi",
- "Deletion cancelled" : "Ezabatzea bertan behera utzi da",
"Destination is not a folder" : "Helburua ez da karpeta bat",
"This file/folder is already in that directory" : "Fitxategi/karpeta hau dagoeneko karpeta horretan dago",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Ezin duzu fitxategi/karpeta bat berera edo bere azpikarpeta batera mugitu",
diff --git a/apps/files/l10n/fi.js b/apps/files/l10n/fi.js
index 7444137df28..1d00cf71e03 100644
--- a/apps/files/l10n/fi.js
+++ b/apps/files/l10n/fi.js
@@ -180,12 +180,16 @@ OC.L10N.register(
"Filename" : "Tiedostonimi",
"Folder name" : "Kansion nimi",
"Download file {name}" : "Lataa tiedosto {name}",
+ "Invalid filename." : "Epäkelpo tiedostonimi.",
"Renamed \"{oldName}\" to \"{newName}\"" : "Kohteen \"{oldName}\" uudeksi nimeksi asetettiin \"{newName}\"",
"Could not rename \"{oldName}\", it does not exist any more" : "Kohdetta \"{oldName}\" ei voitu nimetä uudelleen, koska sitä ei ole enää olemassa",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Nimi \"{newName}\" on jo käytössä kansiossa \"{dir}\". Valitse toinen nimi.",
"Could not rename \"{oldName}\"" : "Ei voitu nimetä uudelleen \"{oldName}\"",
"Clear filter" : "Tyhjennä suodatin",
"Type" : "Tyyppi",
+ "Active filters" : "Aktiiviset suodattimet",
+ "Remove filter" : "Poista suodatin",
+ "\"{displayName}\" batch action executed successfully" : "\"{displayName}\" massatoiminto suoritettu",
"{count} selected" : "{count} valittu",
"List of files and folders." : "Luettelo tiedostoista ja kansioista.",
"Column headers with buttons are sortable." : "Painikkeilla varustetut sarakeotsikot ovat järjestettävissä.",
@@ -196,6 +200,7 @@ OC.L10N.register(
"Could not refresh storage stats" : "Tallennustilan tilastoja ei voitu päivittää",
"Your storage is full, files can not be updated or synced anymore!" : "Tallennustila on loppu, tiedostoja ei voi enää päivittää tai synkronoida!",
"Create" : "Luo",
+ "This name is already in use." : "Tämä nimi on jo käytössä.",
"Submit" : "Lähetä",
"Transfer ownership of a file or folder" : "Siirrä tiedoston tai kansion omistajuus",
"Choose file or folder to transfer" : "Valitse siirrettävä tiedosto tai kansio",
@@ -221,9 +226,11 @@ OC.L10N.register(
"Shared" : "Jaettu",
"Switch to list view" : "Vaihda taulukkonäkymään",
"Switch to grid view" : "Vaihda ruudukkonäkymään",
+ "Upload was cancelled by user" : "Käyttäjä peruutti latauksen",
"Error during upload: {message}" : "Virhe lähettäessä: {message}",
"Error during upload, status code {status}" : "Virhe lähettäessä, tilakoodi {status}",
"Unknown error during upload" : "Tuntematon virhe lähettämisen aikana",
+ "Filter filenames…" : "Suodata tiedostonimiä...",
"Views" : "Näkymät",
"Files settings" : "Tiedostojen asetukset",
"File cannot be accessed" : "Tiedostoa ei voi käyttää",
@@ -250,14 +257,14 @@ OC.L10N.register(
"Creating file" : "Luodaan tiedostoa",
"Blank" : "Tyhjä",
"Unable to create new file from template" : "Uutta tiedostoa mallipohjasta ei voi luoda",
+ "Deletion cancelled" : "Poistaminen peruttu",
"Delete permanently" : "Poista pysyvästi",
"Delete and unshare" : "Poista ja lopeta jakaminen",
"Delete files" : "Poista tiedostot",
"Delete folders" : "Poista kansio",
- "You are about to delete {count} items." : "Olet aikeissa poistaa {count} kohdetta.",
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["Olet poistamassa {count} kohteen","Olet poistamassa {count} kohdetta"],
"Confirm deletion" : "Vahvista poistaminen",
"Cancel" : "Peruuta",
- "Deletion cancelled" : "Poistaminen peruttu",
"Destination is not a folder" : "Kohde ei ole kansio",
"This file/folder is already in that directory" : "Tämä tiedosto/kansio on jo kyseisessä kansiossa",
"(copy)" : "(kopioi)",
@@ -268,6 +275,7 @@ OC.L10N.register(
"Choose destination" : "Valitse kohde",
"Copy to {target}" : "Kopioi kohteeseen {target}",
"Move to {target}" : "Siirrä kohteeseen {target}",
+ "Cancelled move or copy operation" : "Siirto- tai kopiointitoiminto peruttu",
"Move or copy operation failed" : "Siirto- tai kopiointitoiminto epäonnistui",
"Open folder {displayName}" : "Avaa kansio {displayName}",
"Open in Files" : "Avaa tiedostosovelluksessa",
@@ -275,9 +283,15 @@ OC.L10N.register(
"Today" : "Tänään",
"Last 7 days" : "Edelliset 7 päivää",
"Last 30 days" : "Edelliset 30 päivää",
+ "This year ({year})" : "Tämä vuosi ({year})",
+ "Last year ({year})" : "Viime vuosi ({year})",
"Documents" : "Asiakirjat",
+ "Spreadsheets" : "Laskentataulukot",
+ "Presentations" : "Esitykset",
+ "PDFs" : "PDF-tiedostot",
"Folders" : "Kansiot",
"Audio" : "Ääni",
+ "Pictures and images" : "Kuvat ja valokuvat",
"Videos" : "Videot",
"Created new folder \"{name}\"" : "Luotu uusi kansio \"{name}\"",
"Unable to initialize the templates directory" : "Mallipohjien kansiota ei voitu alustaa",
@@ -286,6 +300,7 @@ OC.L10N.register(
"New template folder" : "Uusi mallipohjien kansio",
"In folder" : "Kansiossa",
"Search in folder: {folder}" : "Etsi kansiosta: {folder}",
+ "One of the dropped files could not be processed" : "Yhtä pudotetuista tiedostoista ei voitu prosessoida",
"Your browser does not support the Filesystem API. Directories will not be uploaded" : "Selaimesi ei tue Filesystem API -rajapintaa. Kansioita ei lähetetä",
"No files to upload" : "Ei lähetettäviä tiedostoja",
"Unable to create the directory {directory}" : "Kansiota {directory} ei voi luoda",
@@ -296,11 +311,14 @@ OC.L10N.register(
"Some files could not be moved" : "Joitain tiedostoja ei voitu siirtää",
"Files copied successfully" : "Tiedostot kopioitu onnistuneesti",
"Files moved successfully" : "Tiedostot siirretty onnistuneesti",
+ "Upload cancelled" : "Lataus peruutettu",
"_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} kansio","{folderCount} kansiota"],
"_{fileCount} file_::_{fileCount} files_" : ["{fileCount} tiedosto","{fileCount} tiedostoa"],
"_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 tiedosto ja {folderCount} kansio","1 tiedosto ja {folderCount} kansiota"],
"_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} tiedosto ja 1 kansio","{fileCount} tiedostoa ja 1 kansio"],
"{fileCount} files and {folderCount} folders" : "{fileCount} tiedostoa ja {folderCount} kansiota",
+ "Filename must not be empty." : "Tiedostonimi ei voi olla tyhjä.",
+ "\"{extension}\" is not an allowed filetype." : "\"{extension}\" ei ole sallitttu tiedostotyyppi.",
"List of favorites files and folders." : "Luettelo suosikkitiedostoista ja -kansioista.",
"No favorites yet" : "Ei vielä suosikkeja",
"Files and folders you mark as favorite will show up here" : "Suosikeiksi merkitsemäsi tiedostot ja kansiot näkyvät täällä",
@@ -351,6 +369,7 @@ OC.L10N.register(
"Name cannot be empty" : "Nimi ei voi olla tyhjä",
"Another entry with the same name already exists" : "Toinen tietue samalla nimellä on jo olemassa",
"A file or folder with that name already exists." : "Tiedosto tai kansio tällä nimellä on jo olemassa.",
- "Invalid file name" : "Virheellinen tiedostonimi"
+ "Invalid file name" : "Virheellinen tiedostonimi",
+ "The files is locked" : "Tiedosto on lukittu"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/fi.json b/apps/files/l10n/fi.json
index 21d71936ec8..1e8b0a49ddd 100644
--- a/apps/files/l10n/fi.json
+++ b/apps/files/l10n/fi.json
@@ -178,12 +178,16 @@
"Filename" : "Tiedostonimi",
"Folder name" : "Kansion nimi",
"Download file {name}" : "Lataa tiedosto {name}",
+ "Invalid filename." : "Epäkelpo tiedostonimi.",
"Renamed \"{oldName}\" to \"{newName}\"" : "Kohteen \"{oldName}\" uudeksi nimeksi asetettiin \"{newName}\"",
"Could not rename \"{oldName}\", it does not exist any more" : "Kohdetta \"{oldName}\" ei voitu nimetä uudelleen, koska sitä ei ole enää olemassa",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Nimi \"{newName}\" on jo käytössä kansiossa \"{dir}\". Valitse toinen nimi.",
"Could not rename \"{oldName}\"" : "Ei voitu nimetä uudelleen \"{oldName}\"",
"Clear filter" : "Tyhjennä suodatin",
"Type" : "Tyyppi",
+ "Active filters" : "Aktiiviset suodattimet",
+ "Remove filter" : "Poista suodatin",
+ "\"{displayName}\" batch action executed successfully" : "\"{displayName}\" massatoiminto suoritettu",
"{count} selected" : "{count} valittu",
"List of files and folders." : "Luettelo tiedostoista ja kansioista.",
"Column headers with buttons are sortable." : "Painikkeilla varustetut sarakeotsikot ovat järjestettävissä.",
@@ -194,6 +198,7 @@
"Could not refresh storage stats" : "Tallennustilan tilastoja ei voitu päivittää",
"Your storage is full, files can not be updated or synced anymore!" : "Tallennustila on loppu, tiedostoja ei voi enää päivittää tai synkronoida!",
"Create" : "Luo",
+ "This name is already in use." : "Tämä nimi on jo käytössä.",
"Submit" : "Lähetä",
"Transfer ownership of a file or folder" : "Siirrä tiedoston tai kansion omistajuus",
"Choose file or folder to transfer" : "Valitse siirrettävä tiedosto tai kansio",
@@ -219,9 +224,11 @@
"Shared" : "Jaettu",
"Switch to list view" : "Vaihda taulukkonäkymään",
"Switch to grid view" : "Vaihda ruudukkonäkymään",
+ "Upload was cancelled by user" : "Käyttäjä peruutti latauksen",
"Error during upload: {message}" : "Virhe lähettäessä: {message}",
"Error during upload, status code {status}" : "Virhe lähettäessä, tilakoodi {status}",
"Unknown error during upload" : "Tuntematon virhe lähettämisen aikana",
+ "Filter filenames…" : "Suodata tiedostonimiä...",
"Views" : "Näkymät",
"Files settings" : "Tiedostojen asetukset",
"File cannot be accessed" : "Tiedostoa ei voi käyttää",
@@ -248,14 +255,14 @@
"Creating file" : "Luodaan tiedostoa",
"Blank" : "Tyhjä",
"Unable to create new file from template" : "Uutta tiedostoa mallipohjasta ei voi luoda",
+ "Deletion cancelled" : "Poistaminen peruttu",
"Delete permanently" : "Poista pysyvästi",
"Delete and unshare" : "Poista ja lopeta jakaminen",
"Delete files" : "Poista tiedostot",
"Delete folders" : "Poista kansio",
- "You are about to delete {count} items." : "Olet aikeissa poistaa {count} kohdetta.",
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["Olet poistamassa {count} kohteen","Olet poistamassa {count} kohdetta"],
"Confirm deletion" : "Vahvista poistaminen",
"Cancel" : "Peruuta",
- "Deletion cancelled" : "Poistaminen peruttu",
"Destination is not a folder" : "Kohde ei ole kansio",
"This file/folder is already in that directory" : "Tämä tiedosto/kansio on jo kyseisessä kansiossa",
"(copy)" : "(kopioi)",
@@ -266,6 +273,7 @@
"Choose destination" : "Valitse kohde",
"Copy to {target}" : "Kopioi kohteeseen {target}",
"Move to {target}" : "Siirrä kohteeseen {target}",
+ "Cancelled move or copy operation" : "Siirto- tai kopiointitoiminto peruttu",
"Move or copy operation failed" : "Siirto- tai kopiointitoiminto epäonnistui",
"Open folder {displayName}" : "Avaa kansio {displayName}",
"Open in Files" : "Avaa tiedostosovelluksessa",
@@ -273,9 +281,15 @@
"Today" : "Tänään",
"Last 7 days" : "Edelliset 7 päivää",
"Last 30 days" : "Edelliset 30 päivää",
+ "This year ({year})" : "Tämä vuosi ({year})",
+ "Last year ({year})" : "Viime vuosi ({year})",
"Documents" : "Asiakirjat",
+ "Spreadsheets" : "Laskentataulukot",
+ "Presentations" : "Esitykset",
+ "PDFs" : "PDF-tiedostot",
"Folders" : "Kansiot",
"Audio" : "Ääni",
+ "Pictures and images" : "Kuvat ja valokuvat",
"Videos" : "Videot",
"Created new folder \"{name}\"" : "Luotu uusi kansio \"{name}\"",
"Unable to initialize the templates directory" : "Mallipohjien kansiota ei voitu alustaa",
@@ -284,6 +298,7 @@
"New template folder" : "Uusi mallipohjien kansio",
"In folder" : "Kansiossa",
"Search in folder: {folder}" : "Etsi kansiosta: {folder}",
+ "One of the dropped files could not be processed" : "Yhtä pudotetuista tiedostoista ei voitu prosessoida",
"Your browser does not support the Filesystem API. Directories will not be uploaded" : "Selaimesi ei tue Filesystem API -rajapintaa. Kansioita ei lähetetä",
"No files to upload" : "Ei lähetettäviä tiedostoja",
"Unable to create the directory {directory}" : "Kansiota {directory} ei voi luoda",
@@ -294,11 +309,14 @@
"Some files could not be moved" : "Joitain tiedostoja ei voitu siirtää",
"Files copied successfully" : "Tiedostot kopioitu onnistuneesti",
"Files moved successfully" : "Tiedostot siirretty onnistuneesti",
+ "Upload cancelled" : "Lataus peruutettu",
"_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} kansio","{folderCount} kansiota"],
"_{fileCount} file_::_{fileCount} files_" : ["{fileCount} tiedosto","{fileCount} tiedostoa"],
"_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 tiedosto ja {folderCount} kansio","1 tiedosto ja {folderCount} kansiota"],
"_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} tiedosto ja 1 kansio","{fileCount} tiedostoa ja 1 kansio"],
"{fileCount} files and {folderCount} folders" : "{fileCount} tiedostoa ja {folderCount} kansiota",
+ "Filename must not be empty." : "Tiedostonimi ei voi olla tyhjä.",
+ "\"{extension}\" is not an allowed filetype." : "\"{extension}\" ei ole sallitttu tiedostotyyppi.",
"List of favorites files and folders." : "Luettelo suosikkitiedostoista ja -kansioista.",
"No favorites yet" : "Ei vielä suosikkeja",
"Files and folders you mark as favorite will show up here" : "Suosikeiksi merkitsemäsi tiedostot ja kansiot näkyvät täällä",
@@ -349,6 +367,7 @@
"Name cannot be empty" : "Nimi ei voi olla tyhjä",
"Another entry with the same name already exists" : "Toinen tietue samalla nimellä on jo olemassa",
"A file or folder with that name already exists." : "Tiedosto tai kansio tällä nimellä on jo olemassa.",
- "Invalid file name" : "Virheellinen tiedostonimi"
+ "Invalid file name" : "Virheellinen tiedostonimi",
+ "The files is locked" : "Tiedosto on lukittu"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js
index 46853531f4f..106c49f7e5b 100644
--- a/apps/files/l10n/fr.js
+++ b/apps/files/l10n/fr.js
@@ -264,16 +264,15 @@ OC.L10N.register(
"Creating file" : "Créer un fichier",
"Blank" : "Vide",
"Unable to create new file from template" : "Impossible de créer un nouveau fichier à partir du modèle",
+ "Deletion cancelled" : "Suppression annulée",
"Delete permanently" : "Supprimer définitivement",
"Delete and unshare" : "Supprimer et ne plus partager",
"Leave these shares" : "Quitter ces partages",
"Disconnect storages" : "Déconnecter les supports de stockage",
"Delete files" : "Supprimer les fichiers",
"Delete folders" : "Supprimer les dossiers",
- "You are about to delete {count} items." : "Vous êtes sur le point de supprimer {count} éléments.",
"Confirm deletion" : "Confirmer la suppression",
"Cancel" : "Annuler",
- "Deletion cancelled" : "Suppression annulée",
"Destination is not a folder" : "La destination n'est pas un dossier",
"This file/folder is already in that directory" : "Ce fichier/dossier se trouve déjà dans ce dossier",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Vous ne pouvez pas déplacer un fichier/dossier sur lui-même ou dans un sous-dossier de celui-ci",
diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json
index 431be11c97d..91de30bdaa6 100644
--- a/apps/files/l10n/fr.json
+++ b/apps/files/l10n/fr.json
@@ -262,16 +262,15 @@
"Creating file" : "Créer un fichier",
"Blank" : "Vide",
"Unable to create new file from template" : "Impossible de créer un nouveau fichier à partir du modèle",
+ "Deletion cancelled" : "Suppression annulée",
"Delete permanently" : "Supprimer définitivement",
"Delete and unshare" : "Supprimer et ne plus partager",
"Leave these shares" : "Quitter ces partages",
"Disconnect storages" : "Déconnecter les supports de stockage",
"Delete files" : "Supprimer les fichiers",
"Delete folders" : "Supprimer les dossiers",
- "You are about to delete {count} items." : "Vous êtes sur le point de supprimer {count} éléments.",
"Confirm deletion" : "Confirmer la suppression",
"Cancel" : "Annuler",
- "Deletion cancelled" : "Suppression annulée",
"Destination is not a folder" : "La destination n'est pas un dossier",
"This file/folder is already in that directory" : "Ce fichier/dossier se trouve déjà dans ce dossier",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Vous ne pouvez pas déplacer un fichier/dossier sur lui-même ou dans un sous-dossier de celui-ci",
diff --git a/apps/files/l10n/ga.js b/apps/files/l10n/ga.js
index 853609e6e57..b1b3953b9f6 100644
--- a/apps/files/l10n/ga.js
+++ b/apps/files/l10n/ga.js
@@ -191,6 +191,8 @@ OC.L10N.register(
"Folder name" : "Ainm fillteáin",
"This node is unavailable" : "Níl an nód seo ar fáil",
"Download file {name}" : "Íoslódáil an comhad {name}",
+ "Another entry with the same name already exists." : "Tá iontráil eile leis an ainm céanna ann cheana féin.",
+ "Invalid filename." : "Ainm comhaid neamhbhailí.",
"Renamed \"{oldName}\" to \"{newName}\"" : "Athainmnithe \"{oldName}\" go \"{newName}\"",
"Could not rename \"{oldName}\", it does not exist any more" : "Níorbh fhéidir \"{oldName}\" a athainmniú, níl sé ann a thuilleadh",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Tá an t-ainm \"{newName}\" in úsáid cheana féin san fhillteán \"{dir}\". Roghnaigh ainm eile le do thoil.",
@@ -208,11 +210,16 @@ OC.L10N.register(
"Column headers with buttons are sortable." : "Is féidir ceanntásca colún le cnaipí a shórtáil.",
"This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Níl an liosta seo le fáil go hiomlán ar chúiseanna feidhmíochta. Déanfar na comhaid a rindreáil agus tú ag dul tríd an liosta.",
"File not found" : "Comhad gan aimsiú",
+ "Storage information" : "Faisnéis stórála",
+ "Storage quota" : "Cuóta stórála",
"{usedQuotaByte} used" : "{usedQuotaByte} úsáidte",
"{relative}% used" : "{relative}% in úsáid",
"Could not refresh storage stats" : "Níorbh fhéidir na staitisticí stórála a athnuachan",
"Your storage is full, files can not be updated or synced anymore!" : "Tá do stóras lán, ní féidir comhaid a nuashonrú ná a shioncronú a thuilleadh!",
"Create" : "Cruthaigh",
+ "This name is already in use." : "Tá an t-ainm seo in úsáid cheana féin.",
+ "Fill template fields" : "Líon réimsí teimpléid",
+ "Submitting fields…" : "Réimsí á gcur isteach…",
"Submit" : "Cuir isteach",
"Transfer ownership of a file or folder" : "Aistrigh úinéireacht comhaid nó fillteáin",
"Choose file or folder to transfer" : "Roghnaigh comhad nó fillteán le haistriú",
@@ -242,6 +249,7 @@ OC.L10N.register(
"Error during upload: {message}" : "Earráid le linn uaslódála: {message}",
"Error during upload, status code {status}" : "Earráid le linn uaslódála, cód stádais {status}",
"Unknown error during upload" : "Earráid anaithnid le linn uaslódála",
+ "Filter filenames…" : "Scag ainmneacha comhaid…",
"Views" : "Radhairc",
"Files settings" : "Socruithe comhaid",
"File cannot be accessed" : "Ní féidir an comhad a rochtain",
@@ -268,16 +276,17 @@ OC.L10N.register(
"Creating file" : "Comhad a chruthú",
"Blank" : "Bán",
"Unable to create new file from template" : "Ní féidir comhad nua a chruthú ón teimpléad",
+ "Deletion cancelled" : "Scriosadh cealaithe",
"Delete permanently" : "Scrios go buan",
"Delete and unshare" : "Scrios agus díroinnte",
"Leave these shares" : "Fág na scaireanna seo",
"Disconnect storages" : "Déan stórais a dhícheangal",
"Delete files" : "Scrios comhaid",
"Delete folders" : "Scrios fillteáin",
- "You are about to delete {count} items." : "Tá tú ar tí {count} mír a scriosadh.",
+ "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["Tá tú ar tí {count} mír a scriosadh go buan","Tá tú ar tí {count} mír a scriosadh go buan","Tá tú ar tí {count} mír a scriosadh go buan","Tá tú ar tí {count} mír a scriosadh go buan","Tá tú ar tí {count} mír a scriosadh go buan"],
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["Tá tú ar tí {count} mír a scriosadh","Tá tú ar tí {count} mír a scriosadh","Tá tú ar tí {count} mír a scriosadh","Tá tú ar tí {count} mír a scriosadh","Tá tú ar tí {count} mír a scriosadh"],
"Confirm deletion" : "Deimhnigh scriosadh",
"Cancel" : "Cealaigh",
- "Deletion cancelled" : "Scriosadh cealaithe",
"Destination is not a folder" : "Ní fillteán é ceann scríbe",
"This file/folder is already in that directory" : "Tá an comhad/fillteán seo san eolaire sin cheana féin",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Ní féidir leat comhad/fillteán a bhogadh isteach ann féin nó isteach i bhfofhillteán de féin",
@@ -298,9 +307,15 @@ OC.L10N.register(
"Today" : "Inniu",
"Last 7 days" : "7 lá seo caite",
"Last 30 days" : "30 lá anuas",
+ "This year ({year})" : "i mbliana ({year})",
+ "Last year ({year})" : "An bhliain seo caite {year}",
"Documents" : "Doiciméid",
+ "Spreadsheets" : "Scarbhileoga",
+ "Presentations" : "Cur i láthair",
+ "PDFs" : "PDFs",
"Folders" : "Fillteáin",
"Audio" : "Fuaime",
+ "Pictures and images" : "Pictiúir agus íomhánna",
"Videos" : "Físeáin",
"Created new folder \"{name}\"" : "Cruthaíodh fillteán nua \"{name}\"",
"Unable to initialize the templates directory" : "Ní féidir eolaire na dteimpléad a thúsú",
@@ -327,6 +342,11 @@ OC.L10N.register(
"_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 chomhad agus {folderCount} fillteán","1 chomhad agus {folderCount} fillteáin","1 chomhad agus {folderCount} fillteáin","1 chomhad agus {folderCount} fillteáin","1 chomhad agus {folderCount} fillteáin"],
"_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} comhad agus 1 fillteán","{fileCount} comhaid agus 1 fillteán","{fileCount} comhaid agus 1 fillteán","{fileCount} comhaid agus 1 fillteán","{fileCount} comhaid agus 1 fillteán"],
"{fileCount} files and {folderCount} folders" : "comhaid {fileCount} agus fillteáin {folderCount}",
+ "Filename must not be empty." : "Ní ceadmhach ainm an chomhaid a bheith folamh.",
+ "\"{char}\" is not allowed inside a filename." : "Ní cheadaítear \"{char}\" taobh istigh d'ainm comhaid.",
+ "\"{segment}\" is a reserved name and not allowed for filenames." : "Is ainm forchoimeádta é \"{segment}\" agus ní cheadaítear é d'ainmneacha comhaid.",
+ "\"{extension}\" is not an allowed filetype." : "Ní cineál comhaid ceadaithe é \"{extension}\".",
+ "Filenames must not end with \"{extension}\"." : "Níor cheart go gcríochnaíonn comhaid chomhad le \"{extension}\".",
"List of favorites files and folders." : "Liosta de na comhaid is ansa leat agus fillteáin.",
"No favorites yet" : "Níl aon cheanáin go fóill",
"Files and folders you mark as favorite will show up here" : "Taispeánfar comhaid agus fillteáin a mharcálann tú mar is fearr leat anseo",
diff --git a/apps/files/l10n/ga.json b/apps/files/l10n/ga.json
index 3fa8ba8f8e9..4a7d2f64a3a 100644
--- a/apps/files/l10n/ga.json
+++ b/apps/files/l10n/ga.json
@@ -189,6 +189,8 @@
"Folder name" : "Ainm fillteáin",
"This node is unavailable" : "Níl an nód seo ar fáil",
"Download file {name}" : "Íoslódáil an comhad {name}",
+ "Another entry with the same name already exists." : "Tá iontráil eile leis an ainm céanna ann cheana féin.",
+ "Invalid filename." : "Ainm comhaid neamhbhailí.",
"Renamed \"{oldName}\" to \"{newName}\"" : "Athainmnithe \"{oldName}\" go \"{newName}\"",
"Could not rename \"{oldName}\", it does not exist any more" : "Níorbh fhéidir \"{oldName}\" a athainmniú, níl sé ann a thuilleadh",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Tá an t-ainm \"{newName}\" in úsáid cheana féin san fhillteán \"{dir}\". Roghnaigh ainm eile le do thoil.",
@@ -206,11 +208,16 @@
"Column headers with buttons are sortable." : "Is féidir ceanntásca colún le cnaipí a shórtáil.",
"This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Níl an liosta seo le fáil go hiomlán ar chúiseanna feidhmíochta. Déanfar na comhaid a rindreáil agus tú ag dul tríd an liosta.",
"File not found" : "Comhad gan aimsiú",
+ "Storage information" : "Faisnéis stórála",
+ "Storage quota" : "Cuóta stórála",
"{usedQuotaByte} used" : "{usedQuotaByte} úsáidte",
"{relative}% used" : "{relative}% in úsáid",
"Could not refresh storage stats" : "Níorbh fhéidir na staitisticí stórála a athnuachan",
"Your storage is full, files can not be updated or synced anymore!" : "Tá do stóras lán, ní féidir comhaid a nuashonrú ná a shioncronú a thuilleadh!",
"Create" : "Cruthaigh",
+ "This name is already in use." : "Tá an t-ainm seo in úsáid cheana féin.",
+ "Fill template fields" : "Líon réimsí teimpléid",
+ "Submitting fields…" : "Réimsí á gcur isteach…",
"Submit" : "Cuir isteach",
"Transfer ownership of a file or folder" : "Aistrigh úinéireacht comhaid nó fillteáin",
"Choose file or folder to transfer" : "Roghnaigh comhad nó fillteán le haistriú",
@@ -240,6 +247,7 @@
"Error during upload: {message}" : "Earráid le linn uaslódála: {message}",
"Error during upload, status code {status}" : "Earráid le linn uaslódála, cód stádais {status}",
"Unknown error during upload" : "Earráid anaithnid le linn uaslódála",
+ "Filter filenames…" : "Scag ainmneacha comhaid…",
"Views" : "Radhairc",
"Files settings" : "Socruithe comhaid",
"File cannot be accessed" : "Ní féidir an comhad a rochtain",
@@ -266,16 +274,17 @@
"Creating file" : "Comhad a chruthú",
"Blank" : "Bán",
"Unable to create new file from template" : "Ní féidir comhad nua a chruthú ón teimpléad",
+ "Deletion cancelled" : "Scriosadh cealaithe",
"Delete permanently" : "Scrios go buan",
"Delete and unshare" : "Scrios agus díroinnte",
"Leave these shares" : "Fág na scaireanna seo",
"Disconnect storages" : "Déan stórais a dhícheangal",
"Delete files" : "Scrios comhaid",
"Delete folders" : "Scrios fillteáin",
- "You are about to delete {count} items." : "Tá tú ar tí {count} mír a scriosadh.",
+ "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["Tá tú ar tí {count} mír a scriosadh go buan","Tá tú ar tí {count} mír a scriosadh go buan","Tá tú ar tí {count} mír a scriosadh go buan","Tá tú ar tí {count} mír a scriosadh go buan","Tá tú ar tí {count} mír a scriosadh go buan"],
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["Tá tú ar tí {count} mír a scriosadh","Tá tú ar tí {count} mír a scriosadh","Tá tú ar tí {count} mír a scriosadh","Tá tú ar tí {count} mír a scriosadh","Tá tú ar tí {count} mír a scriosadh"],
"Confirm deletion" : "Deimhnigh scriosadh",
"Cancel" : "Cealaigh",
- "Deletion cancelled" : "Scriosadh cealaithe",
"Destination is not a folder" : "Ní fillteán é ceann scríbe",
"This file/folder is already in that directory" : "Tá an comhad/fillteán seo san eolaire sin cheana féin",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Ní féidir leat comhad/fillteán a bhogadh isteach ann féin nó isteach i bhfofhillteán de féin",
@@ -296,9 +305,15 @@
"Today" : "Inniu",
"Last 7 days" : "7 lá seo caite",
"Last 30 days" : "30 lá anuas",
+ "This year ({year})" : "i mbliana ({year})",
+ "Last year ({year})" : "An bhliain seo caite {year}",
"Documents" : "Doiciméid",
+ "Spreadsheets" : "Scarbhileoga",
+ "Presentations" : "Cur i láthair",
+ "PDFs" : "PDFs",
"Folders" : "Fillteáin",
"Audio" : "Fuaime",
+ "Pictures and images" : "Pictiúir agus íomhánna",
"Videos" : "Físeáin",
"Created new folder \"{name}\"" : "Cruthaíodh fillteán nua \"{name}\"",
"Unable to initialize the templates directory" : "Ní féidir eolaire na dteimpléad a thúsú",
@@ -325,6 +340,11 @@
"_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 chomhad agus {folderCount} fillteán","1 chomhad agus {folderCount} fillteáin","1 chomhad agus {folderCount} fillteáin","1 chomhad agus {folderCount} fillteáin","1 chomhad agus {folderCount} fillteáin"],
"_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} comhad agus 1 fillteán","{fileCount} comhaid agus 1 fillteán","{fileCount} comhaid agus 1 fillteán","{fileCount} comhaid agus 1 fillteán","{fileCount} comhaid agus 1 fillteán"],
"{fileCount} files and {folderCount} folders" : "comhaid {fileCount} agus fillteáin {folderCount}",
+ "Filename must not be empty." : "Ní ceadmhach ainm an chomhaid a bheith folamh.",
+ "\"{char}\" is not allowed inside a filename." : "Ní cheadaítear \"{char}\" taobh istigh d'ainm comhaid.",
+ "\"{segment}\" is a reserved name and not allowed for filenames." : "Is ainm forchoimeádta é \"{segment}\" agus ní cheadaítear é d'ainmneacha comhaid.",
+ "\"{extension}\" is not an allowed filetype." : "Ní cineál comhaid ceadaithe é \"{extension}\".",
+ "Filenames must not end with \"{extension}\"." : "Níor cheart go gcríochnaíonn comhaid chomhad le \"{extension}\".",
"List of favorites files and folders." : "Liosta de na comhaid is ansa leat agus fillteáin.",
"No favorites yet" : "Níl aon cheanáin go fóill",
"Files and folders you mark as favorite will show up here" : "Taispeánfar comhaid agus fillteáin a mharcálann tú mar is fearr leat anseo",
diff --git a/apps/files/l10n/gl.js b/apps/files/l10n/gl.js
index 8b6f9051f97..a12157a5144 100644
--- a/apps/files/l10n/gl.js
+++ b/apps/files/l10n/gl.js
@@ -217,6 +217,7 @@ OC.L10N.register(
"Could not refresh storage stats" : "Non foi posíbel actualizar as estatísticas de almacenamento",
"Your storage is full, files can not be updated or synced anymore!" : "O seu espazo de almacenamento está cheo, xa non se poden actualizar nin sincronizar os ficheiros.",
"Create" : "Crear",
+ "This name is already in use." : "Este nome xa está a ser usado",
"Fill template fields" : "Encher os campos do modelo",
"Submitting fields…" : "Enviando os campos...",
"Submit" : "Enviar",
@@ -275,16 +276,17 @@ OC.L10N.register(
"Creating file" : "Creando o ficheiro",
"Blank" : "Baleiro",
"Unable to create new file from template" : "Non é posíbel crear un novo ficheiro a partir do modelo",
+ "Deletion cancelled" : "Cancelouse a eliminación",
"Delete permanently" : "Eliminar definitivamente",
"Delete and unshare" : "Eliminar e deixar de compartir",
"Leave these shares" : "Deixar estas comparticións",
"Disconnect storages" : "Desconectar os almacenamentos",
"Delete files" : "Eliminar ficheiros",
"Delete folders" : "Eliminar cartafoles",
- "You are about to delete {count} items." : "Está a piques de eliminar {count} elementos.",
+ "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["Está a piques de eliminar definitivamente {count} elemento","Está a piques de eliminar definitivamente {count} elementos"],
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["Está a piques de eliminar {count} elemento","Está a piques de eliminar {count} elementos"],
"Confirm deletion" : "Confirmar a eliminación",
"Cancel" : "Cancelar",
- "Deletion cancelled" : "Cancelouse a eliminación",
"Destination is not a folder" : "O destino non é un cartafol",
"This file/folder is already in that directory" : "Este ficheiro/cartafol xa está nese directorio",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Non é posíbel mover un ficheiro/cartafol sobre si mesmo ou a un subcartafol de si mesmo",
diff --git a/apps/files/l10n/gl.json b/apps/files/l10n/gl.json
index 3a56199a66e..bd4f3246861 100644
--- a/apps/files/l10n/gl.json
+++ b/apps/files/l10n/gl.json
@@ -215,6 +215,7 @@
"Could not refresh storage stats" : "Non foi posíbel actualizar as estatísticas de almacenamento",
"Your storage is full, files can not be updated or synced anymore!" : "O seu espazo de almacenamento está cheo, xa non se poden actualizar nin sincronizar os ficheiros.",
"Create" : "Crear",
+ "This name is already in use." : "Este nome xa está a ser usado",
"Fill template fields" : "Encher os campos do modelo",
"Submitting fields…" : "Enviando os campos...",
"Submit" : "Enviar",
@@ -273,16 +274,17 @@
"Creating file" : "Creando o ficheiro",
"Blank" : "Baleiro",
"Unable to create new file from template" : "Non é posíbel crear un novo ficheiro a partir do modelo",
+ "Deletion cancelled" : "Cancelouse a eliminación",
"Delete permanently" : "Eliminar definitivamente",
"Delete and unshare" : "Eliminar e deixar de compartir",
"Leave these shares" : "Deixar estas comparticións",
"Disconnect storages" : "Desconectar os almacenamentos",
"Delete files" : "Eliminar ficheiros",
"Delete folders" : "Eliminar cartafoles",
- "You are about to delete {count} items." : "Está a piques de eliminar {count} elementos.",
+ "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["Está a piques de eliminar definitivamente {count} elemento","Está a piques de eliminar definitivamente {count} elementos"],
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["Está a piques de eliminar {count} elemento","Está a piques de eliminar {count} elementos"],
"Confirm deletion" : "Confirmar a eliminación",
"Cancel" : "Cancelar",
- "Deletion cancelled" : "Cancelouse a eliminación",
"Destination is not a folder" : "O destino non é un cartafol",
"This file/folder is already in that directory" : "Este ficheiro/cartafol xa está nese directorio",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Non é posíbel mover un ficheiro/cartafol sobre si mesmo ou a un subcartafol de si mesmo",
diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js
index 5c538c677db..6b41a9393dc 100644
--- a/apps/files/l10n/it.js
+++ b/apps/files/l10n/it.js
@@ -264,16 +264,15 @@ OC.L10N.register(
"Creating file" : "Creazione del file",
"Blank" : "Vuoto",
"Unable to create new file from template" : "Impossibile creare un nuovo file dal modello",
+ "Deletion cancelled" : "Eliminazione annullata",
"Delete permanently" : "Elimina permanentemente",
"Delete and unshare" : "Elimina e annulla la condivisione",
"Leave these shares" : "Abbandona queste condivisioni",
"Disconnect storages" : "Disconnetti il supporto di archiviazione",
"Delete files" : "Elimina i file",
"Delete folders" : "Elimina la cartella",
- "You are about to delete {count} items." : "Stai per eliminare {count} elementi.",
"Confirm deletion" : "Conferma l'eliminazione",
"Cancel" : "Annulla",
- "Deletion cancelled" : "Eliminazione annullata",
"Destination is not a folder" : "La destinazione non è una cartella",
"This file/folder is already in that directory" : "Questo file/cartella è già in quella cartella",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Non puoi spostare un file/cartella in se stesso o in una sottocartella di se stesso",
diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json
index d1833ba076e..64d0b10c17c 100644
--- a/apps/files/l10n/it.json
+++ b/apps/files/l10n/it.json
@@ -262,16 +262,15 @@
"Creating file" : "Creazione del file",
"Blank" : "Vuoto",
"Unable to create new file from template" : "Impossibile creare un nuovo file dal modello",
+ "Deletion cancelled" : "Eliminazione annullata",
"Delete permanently" : "Elimina permanentemente",
"Delete and unshare" : "Elimina e annulla la condivisione",
"Leave these shares" : "Abbandona queste condivisioni",
"Disconnect storages" : "Disconnetti il supporto di archiviazione",
"Delete files" : "Elimina i file",
"Delete folders" : "Elimina la cartella",
- "You are about to delete {count} items." : "Stai per eliminare {count} elementi.",
"Confirm deletion" : "Conferma l'eliminazione",
"Cancel" : "Annulla",
- "Deletion cancelled" : "Eliminazione annullata",
"Destination is not a folder" : "La destinazione non è una cartella",
"This file/folder is already in that directory" : "Questo file/cartella è già in quella cartella",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Non puoi spostare un file/cartella in se stesso o in una sottocartella di se stesso",
diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js
index cf59ed5d2a6..a3e112f0c02 100644
--- a/apps/files/l10n/ja.js
+++ b/apps/files/l10n/ja.js
@@ -275,16 +275,15 @@ OC.L10N.register(
"Creating file" : "ファイル作成",
"Blank" : "ブランク",
"Unable to create new file from template" : "テンプレートから新しいファイルを作成できません",
+ "Deletion cancelled" : "削除はキャンセルされました",
"Delete permanently" : "完全に削除する",
"Delete and unshare" : "削除して共有を解除",
"Leave these shares" : "これらの共有から抜ける",
"Disconnect storages" : "ストレージを切断する",
"Delete files" : "ファイルの削除",
"Delete folders" : "フォルダを削除",
- "You are about to delete {count} items." : "あなたは {count} 個のアイテムを削除しようとしています。",
"Confirm deletion" : "削除の確認",
"Cancel" : "キャンセル",
- "Deletion cancelled" : "削除はキャンセルされました",
"Destination is not a folder" : "宛先がフォルダではありません",
"This file/folder is already in that directory" : "このファイル/フォルダはすでにそのディレクトリにあります",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "ファイル/フォルダをそれ自身の上に移動したり、それ自身のサブフォルダに移動したりすることはできません。",
diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json
index ae62575ab3c..224cecd38d2 100644
--- a/apps/files/l10n/ja.json
+++ b/apps/files/l10n/ja.json
@@ -273,16 +273,15 @@
"Creating file" : "ファイル作成",
"Blank" : "ブランク",
"Unable to create new file from template" : "テンプレートから新しいファイルを作成できません",
+ "Deletion cancelled" : "削除はキャンセルされました",
"Delete permanently" : "完全に削除する",
"Delete and unshare" : "削除して共有を解除",
"Leave these shares" : "これらの共有から抜ける",
"Disconnect storages" : "ストレージを切断する",
"Delete files" : "ファイルの削除",
"Delete folders" : "フォルダを削除",
- "You are about to delete {count} items." : "あなたは {count} 個のアイテムを削除しようとしています。",
"Confirm deletion" : "削除の確認",
"Cancel" : "キャンセル",
- "Deletion cancelled" : "削除はキャンセルされました",
"Destination is not a folder" : "宛先がフォルダではありません",
"This file/folder is already in that directory" : "このファイル/フォルダはすでにそのディレクトリにあります",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "ファイル/フォルダをそれ自身の上に移動したり、それ自身のサブフォルダに移動したりすることはできません。",
diff --git a/apps/files/l10n/ko.js b/apps/files/l10n/ko.js
index 54eb5f546f1..d7a04c82b2f 100644
--- a/apps/files/l10n/ko.js
+++ b/apps/files/l10n/ko.js
@@ -260,16 +260,15 @@ OC.L10N.register(
"Creating file" : "파일 만들기",
"Blank" : "여백",
"Unable to create new file from template" : "템플릿으로 새 파일을 만들 수 없음",
+ "Deletion cancelled" : "삭제가 취소됨",
"Delete permanently" : "영구히 삭제",
"Delete and unshare" : "삭제 및 공유 해제",
"Leave these shares" : "이 공유에서 떠나기",
"Disconnect storages" : "저장소 연결 끊기",
"Delete files" : "파일 삭제",
"Delete folders" : "폴더 삭제",
- "You are about to delete {count} items." : "{count}개 항목을 삭제합니다.",
"Confirm deletion" : "삭제 확인",
"Cancel" : "취소",
- "Deletion cancelled" : "삭제가 취소됨",
"Destination is not a folder" : "대상이 폴더가 아닙니다.",
"This file/folder is already in that directory" : "이 파일/폴더가 이미 그 경로에 있습니다.",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "파일/폴더를 그 안이나 그 안의 폴더로 이동할 수 없습니다.",
diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json
index b8821a19340..fb630fbbbf5 100644
--- a/apps/files/l10n/ko.json
+++ b/apps/files/l10n/ko.json
@@ -258,16 +258,15 @@
"Creating file" : "파일 만들기",
"Blank" : "여백",
"Unable to create new file from template" : "템플릿으로 새 파일을 만들 수 없음",
+ "Deletion cancelled" : "삭제가 취소됨",
"Delete permanently" : "영구히 삭제",
"Delete and unshare" : "삭제 및 공유 해제",
"Leave these shares" : "이 공유에서 떠나기",
"Disconnect storages" : "저장소 연결 끊기",
"Delete files" : "파일 삭제",
"Delete folders" : "폴더 삭제",
- "You are about to delete {count} items." : "{count}개 항목을 삭제합니다.",
"Confirm deletion" : "삭제 확인",
"Cancel" : "취소",
- "Deletion cancelled" : "삭제가 취소됨",
"Destination is not a folder" : "대상이 폴더가 아닙니다.",
"This file/folder is already in that directory" : "이 파일/폴더가 이미 그 경로에 있습니다.",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "파일/폴더를 그 안이나 그 안의 폴더로 이동할 수 없습니다.",
diff --git a/apps/files/l10n/nb.js b/apps/files/l10n/nb.js
index 5336a82b581..9c7ad7f8a31 100644
--- a/apps/files/l10n/nb.js
+++ b/apps/files/l10n/nb.js
@@ -268,16 +268,15 @@ OC.L10N.register(
"Creating file" : "Oppretter fil",
"Blank" : "Tom",
"Unable to create new file from template" : "Kan ikke opprette ny fil fra malen",
+ "Deletion cancelled" : "Sletting avbrutt",
"Delete permanently" : "Slett for godt",
"Delete and unshare" : "Slett og opphev deling",
"Leave these shares" : "Forlat disse delingene",
"Disconnect storages" : "Koble fra lagringer",
"Delete files" : "Slett filer",
"Delete folders" : "Slett mapper",
- "You are about to delete {count} items." : "Du er i ferd med å slette {count} elementer.",
"Confirm deletion" : "Bekreft sletting",
"Cancel" : "Avbryt",
- "Deletion cancelled" : "Sletting avbrutt",
"Destination is not a folder" : "Målplassering er ikke en mappe",
"This file/folder is already in that directory" : "Denne filen/mappen er allerede i den katalogen",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Du kan ikke flytte en fil/mappe til seg selv eller til en undermappe av seg selv",
diff --git a/apps/files/l10n/nb.json b/apps/files/l10n/nb.json
index 082b6d6ff22..1ea70483166 100644
--- a/apps/files/l10n/nb.json
+++ b/apps/files/l10n/nb.json
@@ -266,16 +266,15 @@
"Creating file" : "Oppretter fil",
"Blank" : "Tom",
"Unable to create new file from template" : "Kan ikke opprette ny fil fra malen",
+ "Deletion cancelled" : "Sletting avbrutt",
"Delete permanently" : "Slett for godt",
"Delete and unshare" : "Slett og opphev deling",
"Leave these shares" : "Forlat disse delingene",
"Disconnect storages" : "Koble fra lagringer",
"Delete files" : "Slett filer",
"Delete folders" : "Slett mapper",
- "You are about to delete {count} items." : "Du er i ferd med å slette {count} elementer.",
"Confirm deletion" : "Bekreft sletting",
"Cancel" : "Avbryt",
- "Deletion cancelled" : "Sletting avbrutt",
"Destination is not a folder" : "Målplassering er ikke en mappe",
"This file/folder is already in that directory" : "Denne filen/mappen er allerede i den katalogen",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Du kan ikke flytte en fil/mappe til seg selv eller til en undermappe av seg selv",
diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js
index 7231465d873..0f653d7b539 100644
--- a/apps/files/l10n/pl.js
+++ b/apps/files/l10n/pl.js
@@ -260,16 +260,15 @@ OC.L10N.register(
"Creating file" : "Tworzenie pliku",
"Blank" : "Pusty",
"Unable to create new file from template" : "Nie można utworzyć nowego pliku z szablonu",
+ "Deletion cancelled" : "Usuwanie anulowane",
"Delete permanently" : "Usuń bezpowrotnie",
"Delete and unshare" : "Usuń i przestań udostępniać",
"Leave these shares" : "Opuść udostępnienia",
"Disconnect storages" : "Odłącz magazyny",
"Delete files" : "Usuń pliki",
"Delete folders" : "Usuń katalogi",
- "You are about to delete {count} items." : "Zamierzasz usunąć {count} elementów.",
"Confirm deletion" : "Potwierdź usunięcie",
"Cancel" : "Anuluj",
- "Deletion cancelled" : "Usuwanie anulowane",
"Destination is not a folder" : "Miejsce docelowe nie jest katalogiem",
"This file/folder is already in that directory" : "Ten plik/katalog znajduje się już w tym katalogu",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Nie można przenieść pliku/katalogu do tego samego katalogu lub do własnego podkatalogu",
diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json
index 9edf0fb88c2..f689a3c7ec1 100644
--- a/apps/files/l10n/pl.json
+++ b/apps/files/l10n/pl.json
@@ -258,16 +258,15 @@
"Creating file" : "Tworzenie pliku",
"Blank" : "Pusty",
"Unable to create new file from template" : "Nie można utworzyć nowego pliku z szablonu",
+ "Deletion cancelled" : "Usuwanie anulowane",
"Delete permanently" : "Usuń bezpowrotnie",
"Delete and unshare" : "Usuń i przestań udostępniać",
"Leave these shares" : "Opuść udostępnienia",
"Disconnect storages" : "Odłącz magazyny",
"Delete files" : "Usuń pliki",
"Delete folders" : "Usuń katalogi",
- "You are about to delete {count} items." : "Zamierzasz usunąć {count} elementów.",
"Confirm deletion" : "Potwierdź usunięcie",
"Cancel" : "Anuluj",
- "Deletion cancelled" : "Usuwanie anulowane",
"Destination is not a folder" : "Miejsce docelowe nie jest katalogiem",
"This file/folder is already in that directory" : "Ten plik/katalog znajduje się już w tym katalogu",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Nie można przenieść pliku/katalogu do tego samego katalogu lub do własnego podkatalogu",
diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js
index e9d0e343aab..524338053d3 100644
--- a/apps/files/l10n/pt_BR.js
+++ b/apps/files/l10n/pt_BR.js
@@ -191,6 +191,8 @@ OC.L10N.register(
"Folder name" : "Nome da pasta",
"This node is unavailable" : "Este nó está indisponível",
"Download file {name}" : "Baixe o arquivo {name}",
+ "Another entry with the same name already exists." : "Outra entrada com o mesmo nome já existe.",
+ "Invalid filename." : "Nome de arquivo inválido.",
"Renamed \"{oldName}\" to \"{newName}\"" : "Renomeado de \"{oldName}\" para \"{newName}\"",
"Could not rename \"{oldName}\", it does not exist any more" : "Não foi possível renomear \"{oldName}\", ele não existe mais",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "O nome \"{newName}\" já é utilizado na pasta \"{dir}\". Escolha um nome diferente.",
@@ -208,11 +210,16 @@ OC.L10N.register(
"Column headers with buttons are sortable." : "Os cabeçalhos das colunas com botões são classificáveis.",
"This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Essa lista não é totalmente renderizada por motivos de desempenho. Os arquivos serão renderizados conforme você navega pela lista.",
"File not found" : "Arquivo não encontrado",
+ "Storage information" : "Informações do armazenamento",
+ "Storage quota" : "Quantidade de armazenamento",
"{usedQuotaByte} used" : "{usedQuotaByte} usado",
"{relative}% used" : "{relative}% usado",
"Could not refresh storage stats" : "Não foi possível atualizar as estatísticas de armazenamento",
"Your storage is full, files can not be updated or synced anymore!" : "Seu armazenamento está cheio e arquivos não podem mais ser atualizados ou sincronizados!",
"Create" : "Criar",
+ "This name is already in use." : "Este nome já está em uso.",
+ "Fill template fields" : "Preencher campos do template",
+ "Submitting fields…" : "Enviando arquivos…",
"Submit" : "Enviar",
"Transfer ownership of a file or folder" : "Transferir a propriedade de um arquivo ou pasta",
"Choose file or folder to transfer" : "Escolha o arquivo ou pasta a transferir",
@@ -242,6 +249,7 @@ OC.L10N.register(
"Error during upload: {message}" : "Erro durante o upload: {message}",
"Error during upload, status code {status}" : "Erro durante o upload, código de status {status}",
"Unknown error during upload" : "Erro desconhecido durante o upload",
+ "Filter filenames…" : "Filtrar nomes de arquivos...",
"Views" : "Visualizações",
"Files settings" : "Configurações de arquivos",
"File cannot be accessed" : "File cannot be accessed",
@@ -268,16 +276,17 @@ OC.L10N.register(
"Creating file" : "Criando arquivo",
"Blank" : "Em branco",
"Unable to create new file from template" : "Incapaz de criar novo arquivo a partir do modelo",
+ "Deletion cancelled" : "Operação de exclusão cancelada",
"Delete permanently" : "Remover permanentemente",
"Delete and unshare" : "Excluir e descompartilhar",
"Leave these shares" : "Deixe esses compartilhamentos",
"Disconnect storages" : "Desconectar armazenamentos",
"Delete files" : "Deletar arquivos",
"Delete folders" : "Excluir pastas",
- "You are about to delete {count} items." : "Você está prestes a excluir {count} itens.",
+ "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["Você está prestes a excluir permanentemente {count} itens","Você está prestes a excluir permanentemente {count} itens","Você está prestes a excluir permanentemente {count} itens"],
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["Você está prestes a excluir {count} itens","Você está prestes a excluir {count} itens","Você está prestes a excluir {count} itens"],
"Confirm deletion" : "Confirmar exclusão",
"Cancel" : "Cancelar",
- "Deletion cancelled" : "Operação de exclusão cancelada",
"Destination is not a folder" : "O destino não é uma pasta",
"This file/folder is already in that directory" : "Este arquivo/pasta já está nesse diretório",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Você não pode mover um arquivo/pasta para si mesmo ou para uma subpasta dele mesmo",
@@ -298,9 +307,15 @@ OC.L10N.register(
"Today" : "Hoje",
"Last 7 days" : "Últimos 7 dias",
"Last 30 days" : "Últimos 30 dias",
+ "This year ({year})" : "Este ano ({year})",
+ "Last year ({year})" : "Ano passado ({year})",
"Documents" : "Documentos",
+ "Spreadsheets" : "Planilhas",
+ "Presentations" : "Apresentações",
+ "PDFs" : "PDFs",
"Folders" : "Pastas",
"Audio" : "Áudio",
+ "Pictures and images" : "Fotos e imagens",
"Videos" : "Vídeos",
"Created new folder \"{name}\"" : "Nova pasta criada \"{name}\"",
"Unable to initialize the templates directory" : "Não foi possível inicializar o diretório de modelos",
@@ -327,6 +342,11 @@ OC.L10N.register(
"_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 arquivo e {folderCount} pastas","1 arquivo e {folderCount} pastas","1 arquivo e {folderCount} pastas"],
"_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} arquivos e 1 pasta","{fileCount} arquivos e 1 pasta","{fileCount} arquivos e 1 pasta"],
"{fileCount} files and {folderCount} folders" : "{fileCount} arquivos e {folderCount} pastas",
+ "Filename must not be empty." : "O nome do arquivo não pode estar vazio.",
+ "\"{char}\" is not allowed inside a filename." : "\"{char}\" não é permitido dentro de um nome de arquivo.",
+ "\"{segment}\" is a reserved name and not allowed for filenames." : "\"{segment}\" é um nome reservado e não é permitido para nomes de arquivos.",
+ "\"{extension}\" is not an allowed filetype." : "\"{extension}\" não é um tipo de arquivo permitido.",
+ "Filenames must not end with \"{extension}\"." : "Os nomes de arquivos não podem terminar com \"{extension}\".",
"List of favorites files and folders." : "Lista de arquivos e pastas favoritos.",
"No favorites yet" : "Você não possui favoritos!",
"Files and folders you mark as favorite will show up here" : "Suas pastas e arquivos favoritos serão exibidos aqui.",
diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json
index 00c7b6bf8d1..02d1fba3051 100644
--- a/apps/files/l10n/pt_BR.json
+++ b/apps/files/l10n/pt_BR.json
@@ -189,6 +189,8 @@
"Folder name" : "Nome da pasta",
"This node is unavailable" : "Este nó está indisponível",
"Download file {name}" : "Baixe o arquivo {name}",
+ "Another entry with the same name already exists." : "Outra entrada com o mesmo nome já existe.",
+ "Invalid filename." : "Nome de arquivo inválido.",
"Renamed \"{oldName}\" to \"{newName}\"" : "Renomeado de \"{oldName}\" para \"{newName}\"",
"Could not rename \"{oldName}\", it does not exist any more" : "Não foi possível renomear \"{oldName}\", ele não existe mais",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "O nome \"{newName}\" já é utilizado na pasta \"{dir}\". Escolha um nome diferente.",
@@ -206,11 +208,16 @@
"Column headers with buttons are sortable." : "Os cabeçalhos das colunas com botões são classificáveis.",
"This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Essa lista não é totalmente renderizada por motivos de desempenho. Os arquivos serão renderizados conforme você navega pela lista.",
"File not found" : "Arquivo não encontrado",
+ "Storage information" : "Informações do armazenamento",
+ "Storage quota" : "Quantidade de armazenamento",
"{usedQuotaByte} used" : "{usedQuotaByte} usado",
"{relative}% used" : "{relative}% usado",
"Could not refresh storage stats" : "Não foi possível atualizar as estatísticas de armazenamento",
"Your storage is full, files can not be updated or synced anymore!" : "Seu armazenamento está cheio e arquivos não podem mais ser atualizados ou sincronizados!",
"Create" : "Criar",
+ "This name is already in use." : "Este nome já está em uso.",
+ "Fill template fields" : "Preencher campos do template",
+ "Submitting fields…" : "Enviando arquivos…",
"Submit" : "Enviar",
"Transfer ownership of a file or folder" : "Transferir a propriedade de um arquivo ou pasta",
"Choose file or folder to transfer" : "Escolha o arquivo ou pasta a transferir",
@@ -240,6 +247,7 @@
"Error during upload: {message}" : "Erro durante o upload: {message}",
"Error during upload, status code {status}" : "Erro durante o upload, código de status {status}",
"Unknown error during upload" : "Erro desconhecido durante o upload",
+ "Filter filenames…" : "Filtrar nomes de arquivos...",
"Views" : "Visualizações",
"Files settings" : "Configurações de arquivos",
"File cannot be accessed" : "File cannot be accessed",
@@ -266,16 +274,17 @@
"Creating file" : "Criando arquivo",
"Blank" : "Em branco",
"Unable to create new file from template" : "Incapaz de criar novo arquivo a partir do modelo",
+ "Deletion cancelled" : "Operação de exclusão cancelada",
"Delete permanently" : "Remover permanentemente",
"Delete and unshare" : "Excluir e descompartilhar",
"Leave these shares" : "Deixe esses compartilhamentos",
"Disconnect storages" : "Desconectar armazenamentos",
"Delete files" : "Deletar arquivos",
"Delete folders" : "Excluir pastas",
- "You are about to delete {count} items." : "Você está prestes a excluir {count} itens.",
+ "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["Você está prestes a excluir permanentemente {count} itens","Você está prestes a excluir permanentemente {count} itens","Você está prestes a excluir permanentemente {count} itens"],
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["Você está prestes a excluir {count} itens","Você está prestes a excluir {count} itens","Você está prestes a excluir {count} itens"],
"Confirm deletion" : "Confirmar exclusão",
"Cancel" : "Cancelar",
- "Deletion cancelled" : "Operação de exclusão cancelada",
"Destination is not a folder" : "O destino não é uma pasta",
"This file/folder is already in that directory" : "Este arquivo/pasta já está nesse diretório",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Você não pode mover um arquivo/pasta para si mesmo ou para uma subpasta dele mesmo",
@@ -296,9 +305,15 @@
"Today" : "Hoje",
"Last 7 days" : "Últimos 7 dias",
"Last 30 days" : "Últimos 30 dias",
+ "This year ({year})" : "Este ano ({year})",
+ "Last year ({year})" : "Ano passado ({year})",
"Documents" : "Documentos",
+ "Spreadsheets" : "Planilhas",
+ "Presentations" : "Apresentações",
+ "PDFs" : "PDFs",
"Folders" : "Pastas",
"Audio" : "Áudio",
+ "Pictures and images" : "Fotos e imagens",
"Videos" : "Vídeos",
"Created new folder \"{name}\"" : "Nova pasta criada \"{name}\"",
"Unable to initialize the templates directory" : "Não foi possível inicializar o diretório de modelos",
@@ -325,6 +340,11 @@
"_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 arquivo e {folderCount} pastas","1 arquivo e {folderCount} pastas","1 arquivo e {folderCount} pastas"],
"_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} arquivos e 1 pasta","{fileCount} arquivos e 1 pasta","{fileCount} arquivos e 1 pasta"],
"{fileCount} files and {folderCount} folders" : "{fileCount} arquivos e {folderCount} pastas",
+ "Filename must not be empty." : "O nome do arquivo não pode estar vazio.",
+ "\"{char}\" is not allowed inside a filename." : "\"{char}\" não é permitido dentro de um nome de arquivo.",
+ "\"{segment}\" is a reserved name and not allowed for filenames." : "\"{segment}\" é um nome reservado e não é permitido para nomes de arquivos.",
+ "\"{extension}\" is not an allowed filetype." : "\"{extension}\" não é um tipo de arquivo permitido.",
+ "Filenames must not end with \"{extension}\"." : "Os nomes de arquivos não podem terminar com \"{extension}\".",
"List of favorites files and folders." : "Lista de arquivos e pastas favoritos.",
"No favorites yet" : "Você não possui favoritos!",
"Files and folders you mark as favorite will show up here" : "Suas pastas e arquivos favoritos serão exibidos aqui.",
diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js
index 38872171614..f1e849e58c2 100644
--- a/apps/files/l10n/ru.js
+++ b/apps/files/l10n/ru.js
@@ -268,16 +268,15 @@ OC.L10N.register(
"Creating file" : "Создание файла",
"Blank" : "Пустой",
"Unable to create new file from template" : "Не удалось создать файл на основе шаблона",
+ "Deletion cancelled" : "Удаление отменено",
"Delete permanently" : "Удалить навсегда",
"Delete and unshare" : "Удалить и закрыть общий доступ",
"Leave these shares" : "Отказаться от доступа к общим ресурсам",
"Disconnect storages" : "Отключить хранилища",
"Delete files" : "Удалить файлы",
"Delete folders" : "Удалить папки",
- "You are about to delete {count} items." : "Подтвердите удаление {count} объекта (-ов).",
"Confirm deletion" : "Подтвердить удаление",
"Cancel" : "Отменить",
- "Deletion cancelled" : "Удаление отменено",
"Destination is not a folder" : "Указанное назначение не является папкой",
"This file/folder is already in that directory" : "Файл или папка уже расположены в этой папке",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Папка или файл не могут быть перемещены во вложенную папку или в себя",
diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json
index 67a525bed3a..341fa611469 100644
--- a/apps/files/l10n/ru.json
+++ b/apps/files/l10n/ru.json
@@ -266,16 +266,15 @@
"Creating file" : "Создание файла",
"Blank" : "Пустой",
"Unable to create new file from template" : "Не удалось создать файл на основе шаблона",
+ "Deletion cancelled" : "Удаление отменено",
"Delete permanently" : "Удалить навсегда",
"Delete and unshare" : "Удалить и закрыть общий доступ",
"Leave these shares" : "Отказаться от доступа к общим ресурсам",
"Disconnect storages" : "Отключить хранилища",
"Delete files" : "Удалить файлы",
"Delete folders" : "Удалить папки",
- "You are about to delete {count} items." : "Подтвердите удаление {count} объекта (-ов).",
"Confirm deletion" : "Подтвердить удаление",
"Cancel" : "Отменить",
- "Deletion cancelled" : "Удаление отменено",
"Destination is not a folder" : "Указанное назначение не является папкой",
"This file/folder is already in that directory" : "Файл или папка уже расположены в этой папке",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Папка или файл не могут быть перемещены во вложенную папку или в себя",
diff --git a/apps/files/l10n/sk.js b/apps/files/l10n/sk.js
index 064a88efb9a..42905cf1f91 100644
--- a/apps/files/l10n/sk.js
+++ b/apps/files/l10n/sk.js
@@ -261,16 +261,15 @@ OC.L10N.register(
"Creating file" : "Vytvára sa súbor",
"Blank" : "Prázdne",
"Unable to create new file from template" : "Nemôžem vytvoriť nový súbor zo šablóny",
+ "Deletion cancelled" : "Zmazanie zrušené",
"Delete permanently" : "Zmazať natrvalo",
"Delete and unshare" : "Vymazať a zrušiť zdieľanie",
"Leave these shares" : "Opustiť tieto zdieľania.",
"Disconnect storages" : "Odpojiť úložiská",
"Delete files" : "Zmazať súbory",
"Delete folders" : "Zmazať priečinky",
- "You are about to delete {count} items." : "Chystáte sa vymazať {count} položiek.",
"Confirm deletion" : "Potvrdiť vymazanie",
"Cancel" : "Zrušiť",
- "Deletion cancelled" : "Zmazanie zrušené",
"Destination is not a folder" : "Cieľ nie je priečinok",
"This file/folder is already in that directory" : "Tento súbor/priečinok sa už v danom adresári nachádza",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Nemôžete presunúť súbor/priečinok do seba alebo do jeho podpriečinka.",
diff --git a/apps/files/l10n/sk.json b/apps/files/l10n/sk.json
index add0d21e705..6716cd445d6 100644
--- a/apps/files/l10n/sk.json
+++ b/apps/files/l10n/sk.json
@@ -259,16 +259,15 @@
"Creating file" : "Vytvára sa súbor",
"Blank" : "Prázdne",
"Unable to create new file from template" : "Nemôžem vytvoriť nový súbor zo šablóny",
+ "Deletion cancelled" : "Zmazanie zrušené",
"Delete permanently" : "Zmazať natrvalo",
"Delete and unshare" : "Vymazať a zrušiť zdieľanie",
"Leave these shares" : "Opustiť tieto zdieľania.",
"Disconnect storages" : "Odpojiť úložiská",
"Delete files" : "Zmazať súbory",
"Delete folders" : "Zmazať priečinky",
- "You are about to delete {count} items." : "Chystáte sa vymazať {count} položiek.",
"Confirm deletion" : "Potvrdiť vymazanie",
"Cancel" : "Zrušiť",
- "Deletion cancelled" : "Zmazanie zrušené",
"Destination is not a folder" : "Cieľ nie je priečinok",
"This file/folder is already in that directory" : "Tento súbor/priečinok sa už v danom adresári nachádza",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Nemôžete presunúť súbor/priečinok do seba alebo do jeho podpriečinka.",
diff --git a/apps/files/l10n/sl.js b/apps/files/l10n/sl.js
index 75ca4423d09..5ca5c4e6e97 100644
--- a/apps/files/l10n/sl.js
+++ b/apps/files/l10n/sl.js
@@ -253,6 +253,7 @@ OC.L10N.register(
"Creating file" : "Poteka ustvarjanje datoteke",
"Blank" : "Prazno",
"Unable to create new file from template" : "Nove datoteke iz predloge ni mogoče ustvariti",
+ "Deletion cancelled" : "Brisanje je bilo preklicano",
"Delete permanently" : "Izbriši trajno",
"Delete and unshare" : "Izbriši in prekini souporabo",
"Leave these shares" : "Prekini to souporabo",
@@ -261,7 +262,6 @@ OC.L10N.register(
"Delete folders" : "Izbriši mape",
"Confirm deletion" : "Potrdi brisanje",
"Cancel" : "Prekliči",
- "Deletion cancelled" : "Brisanje je bilo preklicano",
"Destination is not a folder" : "Ciljno mesto ni mapa",
"This file/folder is already in that directory" : "Ta datoteka oziroma mapa je že v določeni mapi",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Mape ali datoteke ni mogoče premakniti samo vase oziroma v podmapo same sebe",
diff --git a/apps/files/l10n/sl.json b/apps/files/l10n/sl.json
index f9c8e00761d..601b3edb518 100644
--- a/apps/files/l10n/sl.json
+++ b/apps/files/l10n/sl.json
@@ -251,6 +251,7 @@
"Creating file" : "Poteka ustvarjanje datoteke",
"Blank" : "Prazno",
"Unable to create new file from template" : "Nove datoteke iz predloge ni mogoče ustvariti",
+ "Deletion cancelled" : "Brisanje je bilo preklicano",
"Delete permanently" : "Izbriši trajno",
"Delete and unshare" : "Izbriši in prekini souporabo",
"Leave these shares" : "Prekini to souporabo",
@@ -259,7 +260,6 @@
"Delete folders" : "Izbriši mape",
"Confirm deletion" : "Potrdi brisanje",
"Cancel" : "Prekliči",
- "Deletion cancelled" : "Brisanje je bilo preklicano",
"Destination is not a folder" : "Ciljno mesto ni mapa",
"This file/folder is already in that directory" : "Ta datoteka oziroma mapa je že v določeni mapi",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Mape ali datoteke ni mogoče premakniti samo vase oziroma v podmapo same sebe",
diff --git a/apps/files/l10n/sr.js b/apps/files/l10n/sr.js
index 05460bd736f..e3373469ba9 100644
--- a/apps/files/l10n/sr.js
+++ b/apps/files/l10n/sr.js
@@ -264,16 +264,15 @@ OC.L10N.register(
"Creating file" : "Креирање фајла",
"Blank" : "Празно",
"Unable to create new file from template" : "Из шаблона није могао да се креира нови фајл",
+ "Deletion cancelled" : "Брисање је отказано",
"Delete permanently" : "Обриши заувек",
"Delete and unshare" : "Обриши и прекини дељење",
"Leave these shares" : "Напусти ова дељења",
"Disconnect storages" : "Искључи складишта",
"Delete files" : "Обриши фајлове",
"Delete folders" : "Обриши фолдере",
- "You are about to delete {count} items." : "Управо ћете обрисати {count} ставки.",
"Confirm deletion" : "Потврди брисање",
"Cancel" : "Поништи",
- "Deletion cancelled" : "Брисање је отказано",
"Destination is not a folder" : "Одредиште није фолдер",
"This file/folder is already in that directory" : "Овај фајл/фолдер се већ налази у том директоријуму",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Фајл/фолдер не можете да преместите у самог себе или у његов подфолдер",
diff --git a/apps/files/l10n/sr.json b/apps/files/l10n/sr.json
index fcca41430f8..31d100471fd 100644
--- a/apps/files/l10n/sr.json
+++ b/apps/files/l10n/sr.json
@@ -262,16 +262,15 @@
"Creating file" : "Креирање фајла",
"Blank" : "Празно",
"Unable to create new file from template" : "Из шаблона није могао да се креира нови фајл",
+ "Deletion cancelled" : "Брисање је отказано",
"Delete permanently" : "Обриши заувек",
"Delete and unshare" : "Обриши и прекини дељење",
"Leave these shares" : "Напусти ова дељења",
"Disconnect storages" : "Искључи складишта",
"Delete files" : "Обриши фајлове",
"Delete folders" : "Обриши фолдере",
- "You are about to delete {count} items." : "Управо ћете обрисати {count} ставки.",
"Confirm deletion" : "Потврди брисање",
"Cancel" : "Поништи",
- "Deletion cancelled" : "Брисање је отказано",
"Destination is not a folder" : "Одредиште није фолдер",
"This file/folder is already in that directory" : "Овај фајл/фолдер се већ налази у том директоријуму",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Фајл/фолдер не можете да преместите у самог себе или у његов подфолдер",
diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js
index d8d34dfd46f..4c46be9f9af 100644
--- a/apps/files/l10n/sv.js
+++ b/apps/files/l10n/sv.js
@@ -217,6 +217,7 @@ OC.L10N.register(
"Could not refresh storage stats" : "Det gick inte att uppdatera lagringsstatistiken",
"Your storage is full, files can not be updated or synced anymore!" : "Ditt lagringsutrymme är fullt, filer kan inte längre uppdateras eller synkroniseras!",
"Create" : "Skapa",
+ "This name is already in use." : "Namnet används redan.",
"Fill template fields" : "Fyll mallfält",
"Submitting fields…" : "Skickar fält...",
"Submit" : "Skicka",
@@ -275,16 +276,17 @@ OC.L10N.register(
"Creating file" : "Skapar fil",
"Blank" : "Tom",
"Unable to create new file from template" : "Kunde inte skapa fil från mall",
+ "Deletion cancelled" : "Radering avbruten",
"Delete permanently" : "Ta bort permanent",
"Delete and unshare" : "Radera och sluta dela",
"Leave these shares" : "Lämna dessa delningar",
"Disconnect storages" : "Koppla bort lagringar",
"Delete files" : "Radera filer",
"Delete folders" : "Radera mappar",
- "You are about to delete {count} items." : "Du är på väg att ta bort {count} objekt.",
+ "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["Du är på väg att permanent ta bort {count} objekt","Du är på väg att permanent ta bort {count} objekt"],
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["Du är på väg att ta bort {count} objekt","Du är på väg att ta bort {count} objekt"],
"Confirm deletion" : "Bekräfta radering",
"Cancel" : "Avbryt",
- "Deletion cancelled" : "Radering avbruten",
"Destination is not a folder" : "Destinationen är inte en mapp",
"This file/folder is already in that directory" : "Den här filen/mappen finns redan i den katalogen",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Du kan inte flytta en fil/mapp till sig själv eller till en undermapp till sig själv",
diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json
index 055759d2865..abb35e085f5 100644
--- a/apps/files/l10n/sv.json
+++ b/apps/files/l10n/sv.json
@@ -215,6 +215,7 @@
"Could not refresh storage stats" : "Det gick inte att uppdatera lagringsstatistiken",
"Your storage is full, files can not be updated or synced anymore!" : "Ditt lagringsutrymme är fullt, filer kan inte längre uppdateras eller synkroniseras!",
"Create" : "Skapa",
+ "This name is already in use." : "Namnet används redan.",
"Fill template fields" : "Fyll mallfält",
"Submitting fields…" : "Skickar fält...",
"Submit" : "Skicka",
@@ -273,16 +274,17 @@
"Creating file" : "Skapar fil",
"Blank" : "Tom",
"Unable to create new file from template" : "Kunde inte skapa fil från mall",
+ "Deletion cancelled" : "Radering avbruten",
"Delete permanently" : "Ta bort permanent",
"Delete and unshare" : "Radera och sluta dela",
"Leave these shares" : "Lämna dessa delningar",
"Disconnect storages" : "Koppla bort lagringar",
"Delete files" : "Radera filer",
"Delete folders" : "Radera mappar",
- "You are about to delete {count} items." : "Du är på väg att ta bort {count} objekt.",
+ "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["Du är på väg att permanent ta bort {count} objekt","Du är på väg att permanent ta bort {count} objekt"],
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["Du är på väg att ta bort {count} objekt","Du är på väg att ta bort {count} objekt"],
"Confirm deletion" : "Bekräfta radering",
"Cancel" : "Avbryt",
- "Deletion cancelled" : "Radering avbruten",
"Destination is not a folder" : "Destinationen är inte en mapp",
"This file/folder is already in that directory" : "Den här filen/mappen finns redan i den katalogen",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Du kan inte flytta en fil/mapp till sig själv eller till en undermapp till sig själv",
diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js
index bd5924e51ef..ffe08379fcf 100644
--- a/apps/files/l10n/tr.js
+++ b/apps/files/l10n/tr.js
@@ -262,16 +262,15 @@ OC.L10N.register(
"Creating file" : "Dosya ekleniyor",
"Blank" : "Boş",
"Unable to create new file from template" : "Kalıptan yeni dosya eklenemedi",
+ "Deletion cancelled" : "Silme iptal edildi",
"Delete permanently" : "Kalıcı olarak sil",
"Delete and unshare" : "Sil ve paylaşımdan kaldır",
"Leave these shares" : "Bu paylaşımlardan ayrıl",
"Disconnect storages" : "Depolama alanlarının bağlantısını kes",
"Delete files" : "Dosyaları sil",
"Delete folders" : "Klasörleri sil",
- "You are about to delete {count} items." : "{count} ögeyi silmek üzeresiniz.",
"Confirm deletion" : "Silmeyi onaylayın",
"Cancel" : "İptal",
- "Deletion cancelled" : "Silme iptal edildi",
"Destination is not a folder" : "Hedef bir klasör değil",
"This file/folder is already in that directory" : "Dosya ya da klasör bu klasörde zaten var",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Bir dosyayı ya da klasörü kendi üzerine veya kendisinin alt klasörüne taşıyamazsınız",
diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json
index a67a48fe95d..d3004d5c453 100644
--- a/apps/files/l10n/tr.json
+++ b/apps/files/l10n/tr.json
@@ -260,16 +260,15 @@
"Creating file" : "Dosya ekleniyor",
"Blank" : "Boş",
"Unable to create new file from template" : "Kalıptan yeni dosya eklenemedi",
+ "Deletion cancelled" : "Silme iptal edildi",
"Delete permanently" : "Kalıcı olarak sil",
"Delete and unshare" : "Sil ve paylaşımdan kaldır",
"Leave these shares" : "Bu paylaşımlardan ayrıl",
"Disconnect storages" : "Depolama alanlarının bağlantısını kes",
"Delete files" : "Dosyaları sil",
"Delete folders" : "Klasörleri sil",
- "You are about to delete {count} items." : "{count} ögeyi silmek üzeresiniz.",
"Confirm deletion" : "Silmeyi onaylayın",
"Cancel" : "İptal",
- "Deletion cancelled" : "Silme iptal edildi",
"Destination is not a folder" : "Hedef bir klasör değil",
"This file/folder is already in that directory" : "Dosya ya da klasör bu klasörde zaten var",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Bir dosyayı ya da klasörü kendi üzerine veya kendisinin alt klasörüne taşıyamazsınız",
diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js
index 4b40670bcff..9dd3411a0d6 100644
--- a/apps/files/l10n/uk.js
+++ b/apps/files/l10n/uk.js
@@ -263,16 +263,15 @@ OC.L10N.register(
"Creating file" : "Створення файлу",
"Blank" : "Порожньо",
"Unable to create new file from template" : "Неможливо створити новий файл з шаблону",
+ "Deletion cancelled" : "Вилучення скасовано",
"Delete permanently" : "Вилучити назавжди",
"Delete and unshare" : "Вилучити та прибрати спільний доступ",
"Leave these shares" : "Вийти зі спільного доступу",
"Disconnect storages" : "Від'єднати сховища",
"Delete files" : "Вилучити файли",
"Delete folders" : "Вилучити каталоги",
- "You are about to delete {count} items." : "Ви намагаєтеся вилучити {count} ресурсів.",
"Confirm deletion" : "Підтвердіть вилучення",
"Cancel" : "Скасувати",
- "Deletion cancelled" : "Вилучення скасовано",
"Destination is not a folder" : "Місце призначення не є каталогом",
"This file/folder is already in that directory" : "Такий файл чи каталог вже присутні в цьому каталозі",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Неможливо перемістити файл чи каталог до самого себе або у цей саме підкаталог",
diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json
index 28395ace65f..63e1026d5c7 100644
--- a/apps/files/l10n/uk.json
+++ b/apps/files/l10n/uk.json
@@ -261,16 +261,15 @@
"Creating file" : "Створення файлу",
"Blank" : "Порожньо",
"Unable to create new file from template" : "Неможливо створити новий файл з шаблону",
+ "Deletion cancelled" : "Вилучення скасовано",
"Delete permanently" : "Вилучити назавжди",
"Delete and unshare" : "Вилучити та прибрати спільний доступ",
"Leave these shares" : "Вийти зі спільного доступу",
"Disconnect storages" : "Від'єднати сховища",
"Delete files" : "Вилучити файли",
"Delete folders" : "Вилучити каталоги",
- "You are about to delete {count} items." : "Ви намагаєтеся вилучити {count} ресурсів.",
"Confirm deletion" : "Підтвердіть вилучення",
"Cancel" : "Скасувати",
- "Deletion cancelled" : "Вилучення скасовано",
"Destination is not a folder" : "Місце призначення не є каталогом",
"This file/folder is already in that directory" : "Такий файл чи каталог вже присутні в цьому каталозі",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Неможливо перемістити файл чи каталог до самого себе або у цей саме підкаталог",
diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js
index d7086939aab..563167f9345 100644
--- a/apps/files/l10n/zh_CN.js
+++ b/apps/files/l10n/zh_CN.js
@@ -263,16 +263,15 @@ OC.L10N.register(
"Creating file" : "正在创建文件",
"Blank" : "空白",
"Unable to create new file from template" : "无法从模板创建新文件",
+ "Deletion cancelled" : "已取消删除",
"Delete permanently" : "彻底删除",
"Delete and unshare" : "删除并取消分享",
"Leave these shares" : "离开此分享",
"Disconnect storages" : "断开与存储空间的连接",
"Delete files" : "删除文件",
"Delete folders" : "删除文件夹",
- "You are about to delete {count} items." : "您将删除 {count} 个项目",
"Confirm deletion" : "确认删除",
"Cancel" : "取消",
- "Deletion cancelled" : "已取消删除",
"Destination is not a folder" : "目标不是一个文件夹",
"This file/folder is already in that directory" : "该文件/文件夹已经存在与该目录中",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "你无法将文件/文件夹移动至其自身或子文件夹中",
diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json
index c023dc52509..6b864e14913 100644
--- a/apps/files/l10n/zh_CN.json
+++ b/apps/files/l10n/zh_CN.json
@@ -261,16 +261,15 @@
"Creating file" : "正在创建文件",
"Blank" : "空白",
"Unable to create new file from template" : "无法从模板创建新文件",
+ "Deletion cancelled" : "已取消删除",
"Delete permanently" : "彻底删除",
"Delete and unshare" : "删除并取消分享",
"Leave these shares" : "离开此分享",
"Disconnect storages" : "断开与存储空间的连接",
"Delete files" : "删除文件",
"Delete folders" : "删除文件夹",
- "You are about to delete {count} items." : "您将删除 {count} 个项目",
"Confirm deletion" : "确认删除",
"Cancel" : "取消",
- "Deletion cancelled" : "已取消删除",
"Destination is not a folder" : "目标不是一个文件夹",
"This file/folder is already in that directory" : "该文件/文件夹已经存在与该目录中",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "你无法将文件/文件夹移动至其自身或子文件夹中",
diff --git a/apps/files/l10n/zh_HK.js b/apps/files/l10n/zh_HK.js
index b4bcda422c3..676193403e9 100644
--- a/apps/files/l10n/zh_HK.js
+++ b/apps/files/l10n/zh_HK.js
@@ -217,6 +217,7 @@ OC.L10N.register(
"Could not refresh storage stats" : "無法更新儲存統計數據",
"Your storage is full, files can not be updated or synced anymore!" : "您的儲存空間已滿,沒有辦法再更新或是同步檔案!",
"Create" : "創建",
+ "This name is already in use." : "這個用戶名稱已經有人使用了。",
"Fill template fields" : "填寫模板欄位",
"Submitting fields…" : "正在遞交欄位 …",
"Submit" : "遞交",
@@ -275,16 +276,17 @@ OC.L10N.register(
"Creating file" : "創建檔案中",
"Blank" : "空白",
"Unable to create new file from template" : "無法從模板創建新檔案",
+ "Deletion cancelled" : "刪除已取消",
"Delete permanently" : "永久刪除",
"Delete and unshare" : "刪除並取消分享",
"Leave these shares" : "保留這些分享",
"Disconnect storages" : "解除連結儲存空間",
"Delete files" : "刪除檔案",
"Delete folders" : "刪除資料夾",
- "You are about to delete {count} items." : "您即將刪除 {count} 項。",
+ "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["您即將永久刪除 {count} 個項目"],
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["您即將刪除 {count} 個項目"],
"Confirm deletion" : "確認刪除",
"Cancel" : "取消",
- "Deletion cancelled" : "刪除已取消",
"Destination is not a folder" : "目標地不是資料夾",
"This file/folder is already in that directory" : "此檔案/資料夾已在該目錄中",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "您無法將檔案/資料夾移動到其自身或子資料夾中",
diff --git a/apps/files/l10n/zh_HK.json b/apps/files/l10n/zh_HK.json
index 8789472d455..89bc36075b0 100644
--- a/apps/files/l10n/zh_HK.json
+++ b/apps/files/l10n/zh_HK.json
@@ -215,6 +215,7 @@
"Could not refresh storage stats" : "無法更新儲存統計數據",
"Your storage is full, files can not be updated or synced anymore!" : "您的儲存空間已滿,沒有辦法再更新或是同步檔案!",
"Create" : "創建",
+ "This name is already in use." : "這個用戶名稱已經有人使用了。",
"Fill template fields" : "填寫模板欄位",
"Submitting fields…" : "正在遞交欄位 …",
"Submit" : "遞交",
@@ -273,16 +274,17 @@
"Creating file" : "創建檔案中",
"Blank" : "空白",
"Unable to create new file from template" : "無法從模板創建新檔案",
+ "Deletion cancelled" : "刪除已取消",
"Delete permanently" : "永久刪除",
"Delete and unshare" : "刪除並取消分享",
"Leave these shares" : "保留這些分享",
"Disconnect storages" : "解除連結儲存空間",
"Delete files" : "刪除檔案",
"Delete folders" : "刪除資料夾",
- "You are about to delete {count} items." : "您即將刪除 {count} 項。",
+ "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["您即將永久刪除 {count} 個項目"],
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["您即將刪除 {count} 個項目"],
"Confirm deletion" : "確認刪除",
"Cancel" : "取消",
- "Deletion cancelled" : "刪除已取消",
"Destination is not a folder" : "目標地不是資料夾",
"This file/folder is already in that directory" : "此檔案/資料夾已在該目錄中",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "您無法將檔案/資料夾移動到其自身或子資料夾中",
diff --git a/apps/files/l10n/zh_TW.js b/apps/files/l10n/zh_TW.js
index c5d35b69243..d0d5694d0e8 100644
--- a/apps/files/l10n/zh_TW.js
+++ b/apps/files/l10n/zh_TW.js
@@ -217,6 +217,7 @@ OC.L10N.register(
"Could not refresh storage stats" : "無法重新整理儲存空間統計資料",
"Your storage is full, files can not be updated or synced anymore!" : "您的儲存空間已滿,沒有辦法再更新或是同步檔案!",
"Create" : "建立",
+ "This name is already in use." : "此名稱已使用。",
"Fill template fields" : "檔案範本欄位",
"Submitting fields…" : "正在遞交欄位……",
"Submit" : "遞交",
@@ -275,16 +276,17 @@ OC.L10N.register(
"Creating file" : "正在建立檔案",
"Blank" : "空白",
"Unable to create new file from template" : "無法從範本建立新檔案",
+ "Deletion cancelled" : "刪除已取消",
"Delete permanently" : "永久刪除",
"Delete and unshare" : "刪除並取消分享",
"Leave these shares" : "離開這些分享",
"Disconnect storages" : "解除連結儲存空間",
"Delete files" : "刪除檔案",
"Delete folders" : "刪除資料夾",
- "You are about to delete {count} items." : "您將要移除 {count} 個項目。",
+ "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["您將要永久刪除 {count} 個項目"],
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["您將要刪除 {count} 個項目"],
"Confirm deletion" : "確認刪除",
"Cancel" : "取消",
- "Deletion cancelled" : "刪除已取消",
"Destination is not a folder" : "目的地不是資料夾",
"This file/folder is already in that directory" : "此檔案/資料夾已在該目錄中",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "您無法將檔案/資料夾移動到其自身或子資料夾中",
diff --git a/apps/files/l10n/zh_TW.json b/apps/files/l10n/zh_TW.json
index 6c45ac2fbd8..88d2c35b945 100644
--- a/apps/files/l10n/zh_TW.json
+++ b/apps/files/l10n/zh_TW.json
@@ -215,6 +215,7 @@
"Could not refresh storage stats" : "無法重新整理儲存空間統計資料",
"Your storage is full, files can not be updated or synced anymore!" : "您的儲存空間已滿,沒有辦法再更新或是同步檔案!",
"Create" : "建立",
+ "This name is already in use." : "此名稱已使用。",
"Fill template fields" : "檔案範本欄位",
"Submitting fields…" : "正在遞交欄位……",
"Submit" : "遞交",
@@ -273,16 +274,17 @@
"Creating file" : "正在建立檔案",
"Blank" : "空白",
"Unable to create new file from template" : "無法從範本建立新檔案",
+ "Deletion cancelled" : "刪除已取消",
"Delete permanently" : "永久刪除",
"Delete and unshare" : "刪除並取消分享",
"Leave these shares" : "離開這些分享",
"Disconnect storages" : "解除連結儲存空間",
"Delete files" : "刪除檔案",
"Delete folders" : "刪除資料夾",
- "You are about to delete {count} items." : "您將要移除 {count} 個項目。",
+ "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["您將要永久刪除 {count} 個項目"],
+ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["您將要刪除 {count} 個項目"],
"Confirm deletion" : "確認刪除",
"Cancel" : "取消",
- "Deletion cancelled" : "刪除已取消",
"Destination is not a folder" : "目的地不是資料夾",
"This file/folder is already in that directory" : "此檔案/資料夾已在該目錄中",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "您無法將檔案/資料夾移動到其自身或子資料夾中",
diff --git a/apps/files/lib/AppInfo/Application.php b/apps/files/lib/AppInfo/Application.php
index b4fd04c9fbc..de0542c8ad3 100644
--- a/apps/files/lib/AppInfo/Application.php
+++ b/apps/files/lib/AppInfo/Application.php
@@ -9,7 +9,6 @@ declare(strict_types=1);
namespace OCA\Files\AppInfo;
use Closure;
-use OC\Search\Provider\File;
use OCA\Files\Capabilities;
use OCA\Files\Collaboration\Resources\Listener;
use OCA\Files\Collaboration\Resources\ResourceProvider;
@@ -45,7 +44,6 @@ use OCP\Files\Events\Node\NodeCopiedEvent;
use OCP\IConfig;
use OCP\IPreview;
use OCP\IRequest;
-use OCP\ISearch;
use OCP\IServerContainer;
use OCP\ITagManager;
use OCP\IUserSession;
@@ -127,7 +125,6 @@ class Application extends App implements IBootstrap {
public function boot(IBootContext $context): void {
$context->injectFn(Closure::fromCallable([$this, 'registerCollaboration']));
$context->injectFn([Listener::class, 'register']);
- $context->injectFn(Closure::fromCallable([$this, 'registerSearchProvider']));
$this->registerTemplates();
$this->registerHooks();
}
@@ -136,10 +133,6 @@ class Application extends App implements IBootstrap {
$providerManager->registerResourceProvider(ResourceProvider::class);
}
- private function registerSearchProvider(ISearch $search): void {
- $search->registerProvider(File::class, ['apps' => ['files']]);
- }
-
private function registerTemplates(): void {
$templateManager = \OC_Helper::getFileTemplateManager();
$templateManager->registerTemplate('application/vnd.oasis.opendocument.presentation', 'core/templates/filetemplates/template.odp');
diff --git a/apps/files/src/actions/deleteAction.ts b/apps/files/src/actions/deleteAction.ts
index 53b5690d4dd..63335db194e 100644
--- a/apps/files/src/actions/deleteAction.ts
+++ b/apps/files/src/actions/deleteAction.ts
@@ -11,7 +11,7 @@ import CloseSvg from '@mdi/svg/svg/close.svg?raw'
import NetworkOffSvg from '@mdi/svg/svg/network-off.svg?raw'
import TrashCanSvg from '@mdi/svg/svg/trash-can.svg?raw'
-import logger from '../logger.js'
+import logger from '../logger.ts'
import { askConfirmation, canDisconnectOnly, canUnshareOnly, deleteNode, displayName, isTrashbinEnabled } from './deleteUtils'
const queue = new PQueue({ concurrency: 5 })
diff --git a/apps/files/src/actions/downloadAction.spec.ts b/apps/files/src/actions/downloadAction.spec.ts
index 8aca20eb4d4..59e533441be 100644
--- a/apps/files/src/actions/downloadAction.spec.ts
+++ b/apps/files/src/actions/downloadAction.spec.ts
@@ -4,7 +4,7 @@
*/
import { action } from './downloadAction'
import { expect } from '@jest/globals'
-import { File, Folder, Permission, View, FileAction } from '@nextcloud/files'
+import { File, Folder, Permission, View, FileAction, DefaultType } from '@nextcloud/files'
const view = {
id: 'files',
@@ -23,7 +23,7 @@ describe('Download action conditions tests', () => {
expect(action.id).toBe('download')
expect(action.displayName([], view)).toBe('Download')
expect(action.iconSvgInline([], view)).toBe('<svg>SvgMock</svg>')
- expect(action.default).toBeUndefined()
+ expect(action.default).toBe(DefaultType.DEFAULT)
expect(action.order).toBe(30)
})
})
diff --git a/apps/files/src/actions/downloadAction.ts b/apps/files/src/actions/downloadAction.ts
index a63beaca3f2..cce1e48579a 100644
--- a/apps/files/src/actions/downloadAction.ts
+++ b/apps/files/src/actions/downloadAction.ts
@@ -2,9 +2,12 @@
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
+import type { ShareAttribute } from '../../../files_sharing/src/sharing'
+
+import { FileAction, Permission, Node, FileType, View, DefaultType } from '@nextcloud/files'
+import { t } from '@nextcloud/l10n'
import { generateUrl } from '@nextcloud/router'
-import { FileAction, Permission, Node, FileType, View } from '@nextcloud/files'
-import { translate as t } from '@nextcloud/l10n'
+
import ArrowDownSvg from '@mdi/svg/svg/arrow-down.svg?raw'
const triggerDownload = function(url: string) {
@@ -31,7 +34,7 @@ const isDownloadable = function(node: Node) {
// If the mount type is a share, ensure it got download permissions.
if (node.attributes['mount-type'] === 'shared') {
- const shareAttributes = JSON.parse(node.attributes['share-attributes'] ?? 'null')
+ const shareAttributes = JSON.parse(node.attributes['share-attributes'] ?? '[]') as Array<ShareAttribute>
const downloadAttribute = shareAttributes?.find?.((attribute: { scope: string; key: string }) => attribute.scope === 'permissions' && attribute.key === 'download')
if (downloadAttribute !== undefined && downloadAttribute.value === false) {
return false
@@ -43,6 +46,8 @@ const isDownloadable = function(node: Node) {
export const action = new FileAction({
id: 'download',
+ default: DefaultType.DEFAULT,
+
displayName: () => t('files', 'Download'),
iconSvgInline: () => ArrowDownSvg,
diff --git a/apps/files/src/actions/editLocallyAction.spec.ts b/apps/files/src/actions/editLocallyAction.spec.ts
index 7131cb86f16..ca2e1d05f96 100644
--- a/apps/files/src/actions/editLocallyAction.spec.ts
+++ b/apps/files/src/actions/editLocallyAction.spec.ts
@@ -5,9 +5,23 @@
import { action } from './editLocallyAction'
import { expect } from '@jest/globals'
import { File, Permission, View, FileAction } from '@nextcloud/files'
-import * as ncDialogs from '@nextcloud/dialogs'
+import { DialogBuilder, showError } from '@nextcloud/dialogs'
import axios from '@nextcloud/axios'
+const dialogBuilder = {
+ setName: jest.fn().mockReturnThis(),
+ setText: jest.fn().mockReturnThis(),
+ setButtons: jest.fn().mockReturnThis(),
+ build: jest.fn().mockReturnValue({
+ show: jest.fn().mockResolvedValue(true),
+ }),
+} as unknown as DialogBuilder
+
+jest.mock('@nextcloud/dialogs', () => ({
+ DialogBuilder: jest.fn(() => dialogBuilder),
+ showError: jest.fn(),
+}))
+
const view = {
id: 'files',
name: 'Files',
@@ -16,7 +30,8 @@ const view = {
// Mock webroot variable
beforeAll(() => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
- (window as any)._oc_webroot = ''
+ (window as any)._oc_webroot = '';
+ (window as any).OCA = { Viewer: { open: jest.fn() } }
})
describe('Edit locally action conditions tests', () => {
@@ -44,7 +59,7 @@ describe('Edit locally action enabled tests', () => {
expect(action.enabled!([file], view)).toBe(true)
})
- test('Disabled for non-dav ressources', () => {
+ test('Disabled for non-dav resources', () => {
const file = new File({
id: 1,
source: 'https://domain.com/data/foobar.txt',
@@ -104,8 +119,11 @@ describe('Edit locally action enabled tests', () => {
describe('Edit locally action execute tests', () => {
test('Edit locally opens proper URL', async () => {
- jest.spyOn(axios, 'post').mockImplementation(async () => ({ data: { ocs: { data: { token: 'foobar' } } } }))
- jest.spyOn(ncDialogs, 'showError')
+ jest.spyOn(axios, 'post').mockImplementation(async () => ({
+ data: { ocs: { data: { token: 'foobar' } } }
+ }))
+ const mockedShowError = jest.mocked(showError)
+ const spyDialogBuilder = jest.spyOn(dialogBuilder, 'build')
const file = new File({
id: 1,
@@ -117,17 +135,20 @@ describe('Edit locally action execute tests', () => {
const exec = await action.exec(file, view, '/')
+ expect(spyDialogBuilder).toBeCalled()
+
// Silent action
expect(exec).toBe(null)
expect(axios.post).toBeCalledTimes(1)
expect(axios.post).toBeCalledWith('http://localhost/ocs/v2.php/apps/files/api/v1/openlocaleditor?format=json', { path: '/foobar.txt' })
- expect(ncDialogs.showError).toBeCalledTimes(0)
+ expect(mockedShowError).toBeCalledTimes(0)
expect(window.location.href).toBe('nc://open/test@localhost/foobar.txt?token=foobar')
})
- test('Edit locally fails and show error', async () => {
+ test('Edit locally fails and shows error', async () => {
jest.spyOn(axios, 'post').mockImplementation(async () => ({}))
- jest.spyOn(ncDialogs, 'showError')
+ const mockedShowError = jest.mocked(showError)
+ const spyDialogBuilder = jest.spyOn(dialogBuilder, 'build')
const file = new File({
id: 1,
@@ -139,12 +160,14 @@ describe('Edit locally action execute tests', () => {
const exec = await action.exec(file, view, '/')
+ expect(spyDialogBuilder).toBeCalled()
+
// Silent action
expect(exec).toBe(null)
expect(axios.post).toBeCalledTimes(1)
expect(axios.post).toBeCalledWith('http://localhost/ocs/v2.php/apps/files/api/v1/openlocaleditor?format=json', { path: '/foobar.txt' })
- expect(ncDialogs.showError).toBeCalledTimes(1)
- expect(ncDialogs.showError).toBeCalledWith('Failed to redirect to client')
+ expect(mockedShowError).toBeCalledTimes(1)
+ expect(mockedShowError).toBeCalledWith('Failed to redirect to client')
expect(window.location.href).toBe('http://localhost/')
})
})
diff --git a/apps/files/src/actions/editLocallyAction.ts b/apps/files/src/actions/editLocallyAction.ts
index 7e44927eba2..a2ffd6f054d 100644
--- a/apps/files/src/actions/editLocallyAction.ts
+++ b/apps/files/src/actions/editLocallyAction.ts
@@ -6,11 +6,62 @@ import { encodePath } from '@nextcloud/paths'
import { generateOcsUrl } from '@nextcloud/router'
import { getCurrentUser } from '@nextcloud/auth'
import { FileAction, Permission, type Node } from '@nextcloud/files'
-import { showError } from '@nextcloud/dialogs'
+import { showError, DialogBuilder } from '@nextcloud/dialogs'
import { translate as t } from '@nextcloud/l10n'
import axios from '@nextcloud/axios'
-
import LaptopSvg from '@mdi/svg/svg/laptop.svg?raw'
+import IconCancel from '@mdi/svg/svg/cancel.svg?raw'
+import IconCheck from '@mdi/svg/svg/check.svg?raw'
+
+const confirmLocalEditDialog = (
+ localEditCallback: (openingLocally: boolean) => void = () => {},
+) => {
+ let callbackCalled = false
+
+ return (new DialogBuilder())
+ .setName(t('files', 'Edit file locally'))
+ .setText(t('files', 'The file should now open locally. If you don\'t see this happening, make sure that the desktop client is installed on your system.'))
+ .setButtons([
+ {
+ label: t('files', 'Retry local edit'),
+ icon: IconCancel,
+ callback: () => {
+ callbackCalled = true
+ localEditCallback(false)
+ },
+ },
+ {
+ label: t('files', 'Edit online'),
+ icon: IconCheck,
+ type: 'primary',
+ callback: () => {
+ callbackCalled = true
+ localEditCallback(true)
+ },
+ },
+ ])
+ .build()
+ .show()
+ .then(() => {
+ // Ensure the callback is called even if the dialog is dismissed in other ways
+ if (!callbackCalled) {
+ localEditCallback(false)
+ }
+ })
+}
+
+const attemptOpenLocalClient = async (path: string) => {
+ openLocalClient(path)
+ confirmLocalEditDialog(
+ (openLocally: boolean) => {
+ if (!openLocally) {
+ window.OCA.Viewer.open({ path })
+ return
+ }
+ openLocalClient(path)
+ },
+ )
+}
const openLocalClient = async function(path: string) {
const link = generateOcsUrl('apps/files/api/v1') + '/openlocaleditor?format=json'
@@ -43,7 +94,7 @@ export const action = new FileAction({
},
async exec(node: Node) {
- openLocalClient(node.path)
+ attemptOpenLocalClient(node.path)
return null
},
diff --git a/apps/files/src/actions/favoriteAction.ts b/apps/files/src/actions/favoriteAction.ts
index 3815fc1a9a3..bb7d82ba2cd 100644
--- a/apps/files/src/actions/favoriteAction.ts
+++ b/apps/files/src/actions/favoriteAction.ts
@@ -12,7 +12,7 @@ import Vue from 'vue'
import StarOutlineSvg from '@mdi/svg/svg/star-outline.svg?raw'
import StarSvg from '@mdi/svg/svg/star.svg?raw'
-import logger from '../logger.js'
+import logger from '../logger.ts'
import { encodePath } from '@nextcloud/paths'
// If any of the nodes is not favorited, we display the favorite action.
diff --git a/apps/files/src/actions/moveOrCopyActionUtils.ts b/apps/files/src/actions/moveOrCopyActionUtils.ts
index 091df56e655..d2e276b2b93 100644
--- a/apps/files/src/actions/moveOrCopyActionUtils.ts
+++ b/apps/files/src/actions/moveOrCopyActionUtils.ts
@@ -4,6 +4,8 @@
*/
import type { Folder, Node } from '@nextcloud/files'
+import type { ShareAttribute } from '../../../files_sharing/src/sharing'
+
import { Permission } from '@nextcloud/files'
import PQueue from 'p-queue'
@@ -23,12 +25,6 @@ export const getQueue = () => {
return queue
}
-type ShareAttribute = {
- value: boolean|string|number|null|object|Array<unknown>
- key: string
- scope: string
-}
-
export enum MoveCopyAction {
MOVE = 'Move',
COPY = 'Copy',
diff --git a/apps/files/src/actions/sidebarAction.ts b/apps/files/src/actions/sidebarAction.ts
index 21b5dfc2878..f00088f8d0c 100644
--- a/apps/files/src/actions/sidebarAction.ts
+++ b/apps/files/src/actions/sidebarAction.ts
@@ -6,7 +6,7 @@ import { Permission, type Node, View, FileAction } from '@nextcloud/files'
import { translate as t } from '@nextcloud/l10n'
import InformationSvg from '@mdi/svg/svg/information-variant.svg?raw'
-import logger from '../logger.js'
+import logger from '../logger.ts'
export const ACTION_DETAILS = 'details'
diff --git a/apps/files/src/components/BreadCrumbs.vue b/apps/files/src/components/BreadCrumbs.vue
index 169bc504ab9..d93330e1d29 100644
--- a/apps/files/src/components/BreadCrumbs.vue
+++ b/apps/files/src/components/BreadCrumbs.vue
@@ -273,6 +273,7 @@ export default defineComponent({
height: 100%;
margin-block: 0;
margin-inline: 10px;
+ min-width: 0;
:deep() {
a {
diff --git a/apps/files/src/components/DragAndDropNotice.vue b/apps/files/src/components/DragAndDropNotice.vue
index 0483e71f43b..cc0dc9104b2 100644
--- a/apps/files/src/components/DragAndDropNotice.vue
+++ b/apps/files/src/components/DragAndDropNotice.vue
@@ -37,7 +37,7 @@ import TrayArrowDownIcon from 'vue-material-design-icons/TrayArrowDown.vue'
import { useNavigation } from '../composables/useNavigation'
import { dataTransferToFileTree, onDropExternalFiles } from '../services/DropService'
-import logger from '../logger.js'
+import logger from '../logger.ts'
export default defineComponent({
name: 'DragAndDropNotice',
diff --git a/apps/files/src/components/FileEntry.vue b/apps/files/src/components/FileEntry.vue
index 298500dd472..659e068e08b 100644
--- a/apps/files/src/components/FileEntry.vue
+++ b/apps/files/src/components/FileEntry.vue
@@ -184,7 +184,7 @@ export default defineComponent({
size() {
const size = this.source.size
- if (!size || size < 0) {
+ if (size === undefined || isNaN(size) || size < 0) {
return this.t('files', 'Pending')
}
return formatFileSize(size, true)
@@ -194,7 +194,7 @@ export default defineComponent({
const maxOpacitySize = 10 * 1024 * 1024
const size = this.source.size
- if (!size || isNaN(size) || size < 0) {
+ if (size === undefined || isNaN(size) || size < 0) {
return {}
}
diff --git a/apps/files/src/components/FileEntry/FileEntryActions.vue b/apps/files/src/components/FileEntry/FileEntryActions.vue
index 3df4289b1a0..2c3444a19fd 100644
--- a/apps/files/src/components/FileEntry/FileEntryActions.vue
+++ b/apps/files/src/components/FileEntry/FileEntryActions.vue
@@ -79,10 +79,10 @@
import type { PropType, ShallowRef } from 'vue'
import type { FileAction, Node, View } from '@nextcloud/files'
-import { DefaultType, NodeStatus, getFileActions } from '@nextcloud/files'
+import { DefaultType, NodeStatus } from '@nextcloud/files'
import { showError, showSuccess } from '@nextcloud/dialogs'
import { translate as t } from '@nextcloud/l10n'
-import { defineComponent } from 'vue'
+import { defineComponent, inject } from 'vue'
import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'
import NcActions from '@nextcloud/vue/dist/Components/NcActions.js'
@@ -93,10 +93,7 @@ import ArrowLeftIcon from 'vue-material-design-icons/ArrowLeft.vue'
import CustomElementRender from '../CustomElementRender.vue'
import { useNavigation } from '../../composables/useNavigation'
-import logger from '../../logger.js'
-
-// The registered actions list
-const actions = getFileActions()
+import logger from '../../logger.ts'
export default defineComponent({
name: 'FileEntryActions',
@@ -136,10 +133,12 @@ export default defineComponent({
setup() {
const { currentView } = useNavigation()
+ const enabledFileActions = inject<FileAction[]>('enabledFileActions', [])
return {
// The file list is guaranteed to be only shown with active view
currentView: currentView as ShallowRef<View>,
+ enabledFileActions,
}
},
@@ -158,23 +157,12 @@ export default defineComponent({
return this.source.status === NodeStatus.LOADING
},
- // Sorted actions that are enabled for this node
- enabledActions() {
- if (this.source.status === NodeStatus.FAILED) {
- return []
- }
-
- return actions
- .filter(action => !action.enabled || action.enabled([this.source], this.currentView))
- .sort((a, b) => (a.order || 0) - (b.order || 0))
- },
-
// Enabled action that are displayed inline
enabledInlineActions() {
if (this.filesListWidth < 768 || this.gridMode) {
return []
}
- return this.enabledActions.filter(action => action?.inline?.(this.source, this.currentView))
+ return this.enabledFileActions.filter(action => action?.inline?.(this.source, this.currentView))
},
// Enabled action that are displayed inline with a custom render function
@@ -182,12 +170,7 @@ export default defineComponent({
if (this.gridMode) {
return []
}
- return this.enabledActions.filter(action => typeof action.renderInline === 'function')
- },
-
- // Default actions
- enabledDefaultActions() {
- return this.enabledActions.filter(action => !!action?.default)
+ return this.enabledFileActions.filter(action => typeof action.renderInline === 'function')
},
// Actions shown in the menu
@@ -202,7 +185,7 @@ export default defineComponent({
// Showing inline first for the NcActions inline prop
...this.enabledInlineActions,
// Then the rest
- ...this.enabledActions.filter(action => action.default !== DefaultType.HIDDEN && typeof action.renderInline !== 'function'),
+ ...this.enabledFileActions.filter(action => action.default !== DefaultType.HIDDEN && typeof action.renderInline !== 'function'),
].filter((value, index, self) => {
// Then we filter duplicates to prevent inline actions to be shown twice
return index === self.findIndex(action => action.id === value.id)
@@ -216,7 +199,7 @@ export default defineComponent({
},
enabledSubmenuActions() {
- return this.enabledActions
+ return this.enabledFileActions
.filter(action => action.parent)
.reduce((arr, action) => {
if (!arr[action.parent!]) {
@@ -305,14 +288,6 @@ export default defineComponent({
}
}
},
- execDefaultAction(event) {
- if (this.enabledDefaultActions.length > 0) {
- event.preventDefault()
- event.stopPropagation()
- // Execute the first default action if any
- this.enabledDefaultActions[0].exec(this.source, this.currentView, this.currentDir)
- }
- },
isMenu(id: string) {
return this.enabledSubmenuActions[id]?.length > 0
diff --git a/apps/files/src/components/FileEntry/FileEntryCheckbox.vue b/apps/files/src/components/FileEntry/FileEntryCheckbox.vue
index 987b48ef8ae..059e2f89f5f 100644
--- a/apps/files/src/components/FileEntry/FileEntryCheckbox.vue
+++ b/apps/files/src/components/FileEntry/FileEntryCheckbox.vue
@@ -14,17 +14,20 @@
</template>
<script lang="ts">
-import { Node, FileType } from '@nextcloud/files'
+import type { Node } from '@nextcloud/files'
+import type { PropType } from 'vue'
+import type { FileSource } from '../../types.ts'
+
+import { FileType } from '@nextcloud/files'
import { translate as t } from '@nextcloud/l10n'
-import { type PropType, defineComponent } from 'vue'
+import { defineComponent } from 'vue'
import NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'
import NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'
import { useKeyboardStore } from '../../store/keyboard.ts'
import { useSelectionStore } from '../../store/selection.ts'
-import logger from '../../logger.js'
-import type { FileSource } from '../../types.ts'
+import logger from '../../logger.ts'
export default defineComponent({
name: 'FileEntryCheckbox',
diff --git a/apps/files/src/components/FileEntry/FileEntryName.vue b/apps/files/src/components/FileEntry/FileEntryName.vue
index 7a6ad2a1051..1d45f7de17e 100644
--- a/apps/files/src/components/FileEntry/FileEntryName.vue
+++ b/apps/files/src/components/FileEntry/FileEntryName.vue
@@ -37,22 +37,23 @@
</template>
<script lang="ts">
-import type { Node } from '@nextcloud/files'
+import type { FileAction, Node } from '@nextcloud/files'
import type { PropType } from 'vue'
import axios, { isAxiosError } from '@nextcloud/axios'
import { showError, showSuccess } from '@nextcloud/dialogs'
import { emit } from '@nextcloud/event-bus'
-import { FileType, NodeStatus, Permission } from '@nextcloud/files'
+import { FileType, NodeStatus } from '@nextcloud/files'
import { translate as t } from '@nextcloud/l10n'
-import { defineComponent } from 'vue'
+import { defineComponent, inject } from 'vue'
import NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'
import { useNavigation } from '../../composables/useNavigation'
+import { useRouteParameters } from '../../composables/useRouteParameters.ts'
import { useRenamingStore } from '../../store/renaming.ts'
import { getFilenameValidity } from '../../utils/filenameValidity.ts'
-import logger from '../../logger.js'
+import logger from '../../logger.ts'
export default defineComponent({
name: 'FileEntryName',
@@ -96,10 +97,15 @@ export default defineComponent({
setup() {
const { currentView } = useNavigation()
+ const { directory } = useRouteParameters()
const renamingStore = useRenamingStore()
+ const defaultFileAction = inject<FileAction | undefined>('defaultFileAction')
+
return {
currentView,
+ defaultFileAction,
+ directory,
renamingStore,
}
@@ -139,32 +145,20 @@ export default defineComponent({
}
}
- const enabledDefaultActions = this.$parent?.$refs?.actions?.enabledDefaultActions
- if (enabledDefaultActions?.length > 0) {
- const action = enabledDefaultActions[0]
- const displayName = action.displayName([this.source], this.currentView)
+ if (this.defaultFileAction && this.currentView) {
+ const displayName = this.defaultFileAction.displayName([this.source], this.currentView)
return {
- is: 'a',
+ is: 'button',
params: {
+ 'aria-label': displayName,
title: displayName,
- role: 'button',
- tabindex: '0',
- },
- }
- }
-
- if (this.source?.permissions & Permission.READ) {
- return {
- is: 'a',
- params: {
- download: this.source.basename,
- href: this.source.source,
- title: t('files', 'Download file {name}', { name: `${this.basename}${this.extension}` }),
tabindex: '0',
},
}
}
+ // nothing interactive here, there is no default action
+ // so if not even the download action works we only can show the list entry
return {
is: 'span',
}
@@ -280,12 +274,15 @@ export default defineComponent({
// Reset the renaming store
this.stopRenaming()
this.$nextTick(() => {
- this.$refs.basename?.focus()
+ const nameContainter = this.$refs.basename as HTMLElement | undefined
+ nameContainter?.focus()
})
} catch (error) {
logger.error('Error while renaming file', { error })
+ // Rename back as it failed
this.source.rename(oldName)
- this.$refs.renameInput?.focus()
+ // And ensure we reset to the renaming state
+ this.startRenaming()
if (isAxiosError(error)) {
// TODO: 409 means current folder does not exist, redirect ?
@@ -293,7 +290,7 @@ export default defineComponent({
showError(t('files', 'Could not rename "{oldName}", it does not exist any more', { oldName }))
return
} else if (error?.response?.status === 412) {
- showError(t('files', 'The name "{newName}" is already used in the folder "{dir}". Please choose a different name.', { newName, dir: this.currentDir }))
+ showError(t('files', 'The name "{newName}" is already used in the folder "{dir}". Please choose a different name.', { newName, dir: this.directory }))
return
}
}
@@ -309,3 +306,16 @@ export default defineComponent({
},
})
</script>
+
+<style scoped lang="scss">
+button.files-list__row-name-link {
+ background-color: unset;
+ border: none;
+ font-weight: normal;
+
+ &:active {
+ // No active styles - handled by the row entry
+ background-color: unset !important;
+ }
+}
+</style>
diff --git a/apps/files/src/components/FileEntryMixin.ts b/apps/files/src/components/FileEntryMixin.ts
index d9117053dd8..8681e9c3cb2 100644
--- a/apps/files/src/components/FileEntryMixin.ts
+++ b/apps/files/src/components/FileEntryMixin.ts
@@ -3,11 +3,11 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-import type { ComponentPublicInstance, PropType } from 'vue'
+import type { PropType } from 'vue'
import type { FileSource } from '../types.ts'
import { showError } from '@nextcloud/dialogs'
-import { FileType, Permission, Folder, File as NcFile, NodeStatus, Node } from '@nextcloud/files'
+import { FileType, Permission, Folder, File as NcFile, NodeStatus, Node, getFileActions } from '@nextcloud/files'
import { translate as t } from '@nextcloud/l10n'
import { generateUrl } from '@nextcloud/router'
import { vOnClickOutside } from '@vueuse/components'
@@ -18,11 +18,12 @@ import { action as sidebarAction } from '../actions/sidebarAction.ts'
import { getDragAndDropPreview } from '../utils/dragUtils.ts'
import { hashCode } from '../utils/hashUtils.ts'
import { dataTransferToFileTree, onDropExternalFiles, onDropInternalFiles } from '../services/DropService.ts'
-import logger from '../logger.js'
-import FileEntryActions from '../components/FileEntry/FileEntryActions.vue'
+import logger from '../logger.ts'
Vue.directive('onClickOutside', vOnClickOutside)
+const actions = getFileActions()
+
export default defineComponent({
props: {
source: {
@@ -47,6 +48,13 @@ export default defineComponent({
},
},
+ provide() {
+ return {
+ defaultFileAction: this.defaultFileAction,
+ enabledFileActions: this.enabledFileActions,
+ }
+ },
+
data() {
return {
loading: '',
@@ -178,6 +186,23 @@ export default defineComponent({
color: `color-mix(in srgb, var(--color-main-text) ${ratio}%, var(--color-text-maxcontrast))`,
}
},
+
+ /**
+ * Sorted actions that are enabled for this node
+ */
+ enabledFileActions() {
+ if (this.source.status === NodeStatus.FAILED) {
+ return []
+ }
+
+ return actions
+ .filter(action => !action.enabled || action.enabled([this.source], this.currentView))
+ .sort((a, b) => (a.order || 0) - (b.order || 0))
+ },
+
+ defaultFileAction() {
+ return this.enabledFileActions.find((action) => action.default !== undefined)
+ },
},
watch: {
@@ -261,8 +286,15 @@ export default defineComponent({
return false
}
- const actions = this.$refs.actions as ComponentPublicInstance<typeof FileEntryActions>
- actions.execDefaultAction(event)
+ if (this.defaultFileAction) {
+ event.preventDefault()
+ event.stopPropagation()
+ // Execute the first default action if any
+ this.defaultFileAction.exec(this.source, this.currentView, this.currentDir)
+ } else {
+ // fallback to open in current tab
+ window.open(generateUrl('/f/{fileId}', { fileId: this.fileid }), '_self')
+ }
},
openDetailsIfAvailable(event) {
diff --git a/apps/files/src/components/FileListFilters.vue b/apps/files/src/components/FileListFilters.vue
index 5cdc4e877fd..1bd1dd627af 100644
--- a/apps/files/src/components/FileListFilters.vue
+++ b/apps/files/src/components/FileListFilters.vue
@@ -14,7 +14,14 @@
<NcChip :aria-label-close="t('files', 'Remove filter')"
:icon-svg="chip.icon"
:text="chip.text"
- @close="chip.onclick" />
+ @close="chip.onclick">
+ <template v-if="chip.user" #icon>
+ <NcAvatar disable-menu
+ :show-user-status="false"
+ :size="24"
+ :user="chip.user" />
+ </template>
+ </NcChip>
</li>
</ul>
</div>
@@ -25,6 +32,7 @@ import { t } from '@nextcloud/l10n'
import { computed, ref, watchEffect } from 'vue'
import { useFiltersStore } from '../store/filters.ts'
+import NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'
import NcChip from '@nextcloud/vue/dist/Components/NcChip.js'
const filterStore = useFiltersStore()
diff --git a/apps/files/src/components/FilesListTableHeader.vue b/apps/files/src/components/FilesListTableHeader.vue
index 723dd574da8..e91cfa055c1 100644
--- a/apps/files/src/components/FilesListTableHeader.vue
+++ b/apps/files/src/components/FilesListTableHeader.vue
@@ -68,7 +68,7 @@ import { useNavigation } from '../composables/useNavigation'
import { useFilesStore } from '../store/files.ts'
import { useSelectionStore } from '../store/selection.ts'
import filesSortingMixin from '../mixins/filesSorting.ts'
-import logger from '../logger.js'
+import logger from '../logger.ts'
export default defineComponent({
name: 'FilesListTableHeader',
diff --git a/apps/files/src/components/FilesListTableHeaderActions.vue b/apps/files/src/components/FilesListTableHeaderActions.vue
index c73cd05d016..5e32a07eae1 100644
--- a/apps/files/src/components/FilesListTableHeaderActions.vue
+++ b/apps/files/src/components/FilesListTableHeaderActions.vue
@@ -5,6 +5,7 @@
<template>
<div class="files-list__column files-list__row-actions-batch">
<NcActions ref="actionsMenu"
+ container="#app-content-vue"
:disabled="!!loading || areSomeNodesLoading"
:force-name="true"
:inline="inlineActions"
@@ -25,21 +26,25 @@
</template>
<script lang="ts">
-import { Node, NodeStatus, View, getFileActions } from '@nextcloud/files'
+import type { Node, View } from '@nextcloud/files'
+import type { PropType } from 'vue'
+import type { FileSource } from '../types'
+
+import { NodeStatus, getFileActions } from '@nextcloud/files'
import { showError, showSuccess } from '@nextcloud/dialogs'
import { translate } from '@nextcloud/l10n'
+import { defineComponent } from 'vue'
+
import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'
import NcActions from '@nextcloud/vue/dist/Components/NcActions.js'
import NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js'
import NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'
-import Vue, { defineComponent, type PropType } from 'vue'
import { useActionsMenuStore } from '../store/actionsmenu.ts'
import { useFilesStore } from '../store/files.ts'
import { useSelectionStore } from '../store/selection.ts'
import filesListWidthMixin from '../mixins/filesListWidth.ts'
-import logger from '../logger.js'
-import type { FileSource } from '../types'
+import logger from '../logger.ts'
// The registered actions list
const actions = getFileActions()
@@ -135,11 +140,10 @@ export default defineComponent({
/**
* Get a cached note from the store
*
- * @param {number} fileId the file id to get
- * @return {Folder|File}
+ * @param source The source of the node to get
*/
- getNode(fileId) {
- return this.filesStore.getNode(fileId)
+ getNode(source: string): Node|undefined {
+ return this.filesStore.getNode(source)
},
async onActionClick(action) {
@@ -149,7 +153,7 @@ export default defineComponent({
// Set loading markers
this.loading = action.id
this.nodes.forEach(node => {
- Vue.set(node, 'status', NodeStatus.LOADING)
+ this.$set(node, 'status', NodeStatus.LOADING)
})
// Dispatch action execution
@@ -189,7 +193,7 @@ export default defineComponent({
// Remove loading markers
this.loading = null
this.nodes.forEach(node => {
- Vue.set(node, 'status', undefined)
+ this.$set(node, 'status', undefined)
})
}
},
diff --git a/apps/files/src/components/FilesListVirtual.vue b/apps/files/src/components/FilesListVirtual.vue
index 1b9475333ab..4c9cea00f9c 100644
--- a/apps/files/src/components/FilesListVirtual.vue
+++ b/apps/files/src/components/FilesListVirtual.vue
@@ -81,7 +81,7 @@ import FilesListTableFooter from './FilesListTableFooter.vue'
import FilesListTableHeader from './FilesListTableHeader.vue'
import filesListWidthMixin from '../mixins/filesListWidth.ts'
import VirtualList from './VirtualList.vue'
-import logger from '../logger.js'
+import logger from '../logger.ts'
import FilesListTableHeaderActions from './FilesListTableHeaderActions.vue'
import FileListFilters from './FileListFilters.vue'
@@ -600,24 +600,26 @@ export default defineComponent({
// Take as much space as possible
flex: 1 1 auto;
- a {
+ button.files-list__row-name-link {
display: flex;
align-items: center;
+ text-align: start;
// Fill cell height and width
width: 100%;
height: 100%;
// Necessary for flex grow to work
min-width: 0;
+ margin: 0;
// Already added to the inner text, see rule below
&:focus-visible {
- outline: none;
+ outline: none !important;
}
// Keyboard indicator a11y
&:focus .files-list__row-name-text {
- outline: 2px solid var(--color-main-text) !important;
- border-radius: 20px;
+ outline: var(--border-width-input-focused) solid var(--color-main-text) !important;
+ border-radius: var(--border-radius-element);
}
&:focus:not(:focus-visible) .files-list__row-name-text {
outline: none !important;
@@ -627,7 +629,7 @@ export default defineComponent({
.files-list__row-name-text {
color: var(--color-main-text);
// Make some space for the outline
- padding: 5px 10px;
+ padding: var(--default-grid-baseline) calc(2 * var(--default-grid-baseline));
margin-left: -10px;
// Align two name and ext
display: inline-flex;
@@ -791,10 +793,6 @@ tbody.files-list__tbody.files-list__tbody--grid {
height: var(--icon-preview-size);
}
- a.files-list__row-name-link {
- height: var(--name-height);
- }
-
.files-list__row-name-text {
margin: 0;
// Ensure that the outline is not too close to the text.
diff --git a/apps/files/src/components/NavigationQuota.vue b/apps/files/src/components/NavigationQuota.vue
index 0619f6bc3fd..0e5ef510342 100644
--- a/apps/files/src/components/NavigationQuota.vue
+++ b/apps/files/src/components/NavigationQuota.vue
@@ -37,7 +37,7 @@ import ChartPie from 'vue-material-design-icons/ChartPie.vue'
import NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js'
import NcProgressBar from '@nextcloud/vue/dist/Components/NcProgressBar.js'
-import logger from '../logger.js'
+import logger from '../logger.ts'
export default {
name: 'NavigationQuota',
diff --git a/apps/files/src/components/TransferOwnershipDialogue.vue b/apps/files/src/components/TransferOwnershipDialogue.vue
index 346bc3bbeb8..f13e6655354 100644
--- a/apps/files/src/components/TransferOwnershipDialogue.vue
+++ b/apps/files/src/components/TransferOwnershipDialogue.vue
@@ -52,7 +52,7 @@ import NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'
import Vue from 'vue'
import NcButton from '@nextcloud/vue/dist/Components/NcButton.js'
-import logger from '../logger.js'
+import logger from '../logger.ts'
const picker = getFilePickerBuilder(t('files', 'Choose a file or folder to transfer'))
.setMultiSelect(false)
diff --git a/apps/files/src/components/VirtualList.vue b/apps/files/src/components/VirtualList.vue
index 6206f86cda5..859aba6c834 100644
--- a/apps/files/src/components/VirtualList.vue
+++ b/apps/files/src/components/VirtualList.vue
@@ -59,7 +59,7 @@ import debounce from 'debounce'
import Vue from 'vue'
import filesListWidthMixin from '../mixins/filesListWidth.ts'
-import logger from '../logger.js'
+import logger from '../logger.ts'
interface RecycledPoolItem {
key: string,
diff --git a/apps/files/src/logger.js b/apps/files/src/logger.ts
index 33f87b424e0..33f87b424e0 100644
--- a/apps/files/src/logger.js
+++ b/apps/files/src/logger.ts
diff --git a/apps/files/src/newMenu/newTemplatesFolder.ts b/apps/files/src/newMenu/newTemplatesFolder.ts
index e2c27ce067f..43a6f08b525 100644
--- a/apps/files/src/newMenu/newTemplatesFolder.ts
+++ b/apps/files/src/newMenu/newTemplatesFolder.ts
@@ -15,7 +15,7 @@ import { newNodeName } from '../utils/newNodeDialog'
import PlusSvg from '@mdi/svg/svg/plus.svg?raw'
import axios from '@nextcloud/axios'
-import logger from '../logger.js'
+import logger from '../logger.ts'
let templatesPath = loadState<string|false>('files', 'templates_path', false)
logger.debug('Initial templates folder', { templatesPath })
@@ -53,9 +53,9 @@ const initTemplatesFolder = async function(directory: Folder, name: string) {
export const entry = {
id: 'template-picker',
- displayName: t('files', 'Create new templates folder'),
+ displayName: t('files', 'Create templates folder'),
iconSvgInline: PlusSvg,
- order: 10,
+ order: 30,
enabled(context: Folder): boolean {
// Templates folder already initialized
if (templatesPath) {
diff --git a/apps/files/src/services/DropService.ts b/apps/files/src/services/DropService.ts
index b947c612949..63e7c213f4f 100644
--- a/apps/files/src/services/DropService.ts
+++ b/apps/files/src/services/DropService.ts
@@ -17,7 +17,7 @@ import Vue from 'vue'
import { Directory, traverseTree, resolveConflict, createDirectoryIfNotExists } from './DropServiceUtils'
import { handleCopyMoveNodeTo } from '../actions/moveOrCopyAction'
import { MoveCopyAction } from '../actions/moveOrCopyActionUtils'
-import logger from '../logger.js'
+import logger from '../logger.ts'
/**
* This function converts a list of DataTransferItems to a file tree.
diff --git a/apps/files/src/services/DropServiceUtils.ts b/apps/files/src/services/DropServiceUtils.ts
index 27478dd956a..f10a09cfe27 100644
--- a/apps/files/src/services/DropServiceUtils.ts
+++ b/apps/files/src/services/DropServiceUtils.ts
@@ -10,7 +10,7 @@ import { openConflictPicker } from '@nextcloud/upload'
import { showError, showInfo } from '@nextcloud/dialogs'
import { translate as t } from '@nextcloud/l10n'
-import logger from '../logger.js'
+import logger from '../logger.ts'
/**
* This represents a Directory in the file tree
diff --git a/apps/files/src/services/Files.ts b/apps/files/src/services/Files.ts
index 10e553592fe..944c2d30678 100644
--- a/apps/files/src/services/Files.ts
+++ b/apps/files/src/services/Files.ts
@@ -2,26 +2,19 @@
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-import type { ContentsWithRoot } from '@nextcloud/files'
+import type { ContentsWithRoot, File, Folder } from '@nextcloud/files'
import type { FileStat, ResponseDataDetailed } from 'webdav'
import { CancelablePromise } from 'cancelable-promise'
-import { File, Folder, davGetDefaultPropfind, davResultToNode, davRootPath } from '@nextcloud/files'
+import { davGetDefaultPropfind, davResultToNode, davRootPath } from '@nextcloud/files'
import { client } from './WebdavClient.ts'
-import logger from '../logger.js'
+import logger from '../logger.ts'
/**
* Slim wrapper over `@nextcloud/files` `davResultToNode` to allow using the function with `Array.map`
* @param node The node returned by the webdav library
*/
-export const resultToNode = (node: FileStat): File | Folder => {
- // TODO remove this hack with nextcloud-files v3.7
- // just needed because of a bug in the webdav client
- if (node.props?.displayname !== undefined) {
- node.props.displayname = String(node.props.displayname)
- }
- return davResultToNode(node)
-}
+export const resultToNode = (node: FileStat): File | Folder => davResultToNode(node)
export const getContents = (path = '/'): CancelablePromise<ContentsWithRoot> => {
const controller = new AbortController()
diff --git a/apps/files/src/services/Recent.ts b/apps/files/src/services/Recent.ts
index c8cde136069..0a953087781 100644
--- a/apps/files/src/services/Recent.ts
+++ b/apps/files/src/services/Recent.ts
@@ -3,19 +3,27 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { ContentsWithRoot, Node } from '@nextcloud/files'
-import type { ResponseDataDetailed, SearchResult } from 'webdav'
+import type { FileStat, ResponseDataDetailed, SearchResult } from 'webdav'
import { getCurrentUser } from '@nextcloud/auth'
-import { Folder, Permission, davGetRecentSearch, davRootPath, davRemoteURL } from '@nextcloud/files'
+import { Folder, Permission, davGetRecentSearch, davRootPath, davRemoteURL, davResultToNode } from '@nextcloud/files'
import { CancelablePromise } from 'cancelable-promise'
import { useUserConfigStore } from '../store/userconfig.ts'
import { pinia } from '../store/index.ts'
import { client } from './WebdavClient.ts'
-import { resultToNode } from './Files.ts'
+import { getBaseUrl } from '@nextcloud/router'
const lastTwoWeeksTimestamp = Math.round((Date.now() / 1000) - (60 * 60 * 24 * 14))
/**
+ * Helper to map a WebDAV result to a Nextcloud node
+ * The search endpoint already includes the dav remote URL so we must not include it in the source
+ *
+ * @param stat the WebDAV result
+ */
+const resultToNode = (stat: FileStat) => davResultToNode(stat, davRootPath, getBaseUrl())
+
+/**
* Get recently changed nodes
*
* This takes the users preference about hidden files into account.
diff --git a/apps/files/src/services/ServiceWorker.js b/apps/files/src/services/ServiceWorker.js
index 477354d1c36..7d03af65e44 100644
--- a/apps/files/src/services/ServiceWorker.js
+++ b/apps/files/src/services/ServiceWorker.js
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { generateUrl } from '@nextcloud/router'
-import logger from '../logger.js'
+import logger from '../logger.ts'
export default () => {
if ('serviceWorker' in navigator) {
diff --git a/apps/files/src/store/filters.ts b/apps/files/src/store/filters.ts
index abc12732fd4..a5e3421f726 100644
--- a/apps/files/src/store/filters.ts
+++ b/apps/files/src/store/filters.ts
@@ -65,6 +65,8 @@ export const useFiltersStore = defineStore('keyboard', {
onFilterUpdateChips(event: FilterUpdateChipsEvent) {
const id = (event.target as IFileListFilter).id
this.chips = { ...this.chips, [id]: [...event.detail] }
+
+ logger.debug('File list filter chips updated', { filter: id, chips: event.detail })
},
init() {
diff --git a/apps/files/src/views/FilesList.vue b/apps/files/src/views/FilesList.vue
index ca868b5d526..d486b6f1bae 100644
--- a/apps/files/src/views/FilesList.vue
+++ b/apps/files/src/views/FilesList.vue
@@ -74,32 +74,37 @@
:name="t('files', 'Loading current folder')" />
<!-- Empty content placeholder -->
- <NcEmptyContent v-else-if="!loading && isEmptyDir"
- :name="currentView?.emptyTitle || t('files', 'No files in here')"
- :description="currentView?.emptyCaption || t('files', 'Upload some content or sync with your devices!')"
- data-cy-files-content-empty>
- <template v-if="directory !== '/'" #action>
- <!-- Uploader -->
- <UploadPicker v-if="currentFolder && canUpload && !isQuotaExceeded"
- allow-folders
- class="files-list__header-upload-button"
- :content="getContent"
- :destination="currentFolder"
- :forbidden-characters="forbiddenCharacters"
- multiple
- @failed="onUploadFail"
- @uploaded="onUpload" />
- <NcButton v-else
- :aria-label="t('files', 'Go to the previous folder')"
- :to="toPreviousDir"
- type="primary">
- {{ t('files', 'Go back') }}
- </NcButton>
- </template>
- <template #icon>
- <NcIconSvgWrapper :svg="currentView.icon" />
- </template>
- </NcEmptyContent>
+ <template v-else-if="!loading && isEmptyDir">
+ <div v-if="currentView?.emptyView" class="files-list__empty-view-wrapper">
+ <div ref="customEmptyView" />
+ </div>
+ <NcEmptyContent v-else
+ :name="currentView?.emptyTitle || t('files', 'No files in here')"
+ :description="currentView?.emptyCaption || t('files', 'Upload some content or sync with your devices!')"
+ data-cy-files-content-empty>
+ <template v-if="directory !== '/'" #action>
+ <!-- Uploader -->
+ <UploadPicker v-if="currentFolder && canUpload && !isQuotaExceeded"
+ allow-folders
+ class="files-list__header-upload-button"
+ :content="getContent"
+ :destination="currentFolder"
+ :forbidden-characters="forbiddenCharacters"
+ multiple
+ @failed="onUploadFail"
+ @uploaded="onUpload" />
+ <NcButton v-else
+ :aria-label="t('files', 'Go to the previous folder')"
+ :to="toPreviousDir"
+ type="primary">
+ {{ t('files', 'Go back') }}
+ </NcButton>
+ </template>
+ <template #icon>
+ <NcIconSvgWrapper :svg="currentView.icon" />
+ </template>
+ </NcEmptyContent>
+ </template>
<!-- File list -->
<FilesListVirtual v-else
@@ -154,7 +159,7 @@ import BreadCrumbs from '../components/BreadCrumbs.vue'
import FilesListVirtual from '../components/FilesListVirtual.vue'
import filesListWidthMixin from '../mixins/filesListWidth.ts'
import filesSortingMixin from '../mixins/filesSorting.ts'
-import logger from '../logger.js'
+import logger from '../logger.ts'
import DragAndDropNotice from '../components/DragAndDropNotice.vue'
const isSharingEnabled = (getCapabilities() as { files_sharing?: boolean })?.files_sharing !== undefined
@@ -391,9 +396,27 @@ export default defineComponent({
filtersChanged() {
return this.filtersStore.filtersChanged
},
+
+ showCustomEmptyView() {
+ return !this.loading && this.isEmptyDir && this.currentView?.emptyView !== undefined
+ }
},
watch: {
+ /**
+ * Handle rendering the custom empty view
+ * @param show The current state if the custom empty view should be rendered
+ */
+ showCustomEmptyView(show: boolean) {
+ if (show) {
+ this.$nextTick(() => {
+ const el = this.$refs.customEmptyView as HTMLDivElement
+ // We can cast here because "showCustomEmptyView" assets that current view is set
+ this.currentView!.emptyView!(el)
+ })
+ }
+ },
+
currentView(newView, oldView) {
if (newView?.id === oldView?.id) {
return
@@ -679,6 +702,11 @@ export default defineComponent({
}
}
+ &__empty-view-wrapper {
+ display: flex;
+ height: 100%;
+ }
+
&__refresh-icon {
flex: 0 0 44px;
width: 44px;
diff --git a/apps/files/src/views/Navigation.vue b/apps/files/src/views/Navigation.vue
index cfd170bd073..b0588863f5d 100644
--- a/apps/files/src/views/Navigation.vue
+++ b/apps/files/src/views/Navigation.vue
@@ -81,7 +81,7 @@ import { useNavigation } from '../composables/useNavigation'
import { useFilenameFilter } from '../composables/useFilenameFilter'
import { useFiltersStore } from '../store/filters.ts'
import { useViewConfigStore } from '../store/viewConfig.ts'
-import logger from '../logger.js'
+import logger from '../logger.ts'
export default defineComponent({
name: 'Navigation',
@@ -160,7 +160,7 @@ export default defineComponent({
if (this.currentViewId !== this.currentView?.id) {
// This is guaranteed to be a view because `currentViewId` falls back to the default 'files' view
const view = this.views.find(({ id }) => id === this.currentViewId)!
- // The the new view as active
+ // The new view as active
this.showView(view)
logger.debug(`Navigation changed from ${oldView} to ${newView}`, { to: view })
}
diff --git a/apps/files/src/views/Sidebar.vue b/apps/files/src/views/Sidebar.vue
index 8c4af5fd80f..efa090112de 100644
--- a/apps/files/src/views/Sidebar.vue
+++ b/apps/files/src/views/Sidebar.vue
@@ -108,7 +108,7 @@ import FileInfo from '../services/FileInfo.js'
import LegacyView from '../components/LegacyView.vue'
import SidebarTab from '../components/SidebarTab.vue'
import SystemTags from '../../../systemtags/src/components/SystemTags.vue'
-import logger from '../logger.js'
+import logger from '../logger.ts'
export default {
name: 'Sidebar',
diff --git a/apps/files/src/views/TemplatePicker.vue b/apps/files/src/views/TemplatePicker.vue
index 8c6b3c4bf02..0d5b3cbaac9 100644
--- a/apps/files/src/views/TemplatePicker.vue
+++ b/apps/files/src/views/TemplatePicker.vue
@@ -60,7 +60,7 @@ import NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'
import NcModal from '@nextcloud/vue/dist/Components/NcModal.js'
import TemplatePreview from '../components/TemplatePreview.vue'
import TemplateFiller from '../components/TemplateFiller.vue'
-import logger from '../logger.js'
+import logger from '../logger.ts'
const border = 2
const margin = 8
@@ -260,15 +260,13 @@ export default defineComponent({
},
async onSubmit() {
- this.loading = true
-
- if (this.selectedTemplate?.fields) {
+ if (this.selectedTemplate?.fields?.length > 0) {
spawnDialog(TemplateFiller, {
fields: this.selectedTemplate.fields,
onSubmit: this.createFile,
})
-
} else {
+ this.loading = true
await this.createFile()
}
},
diff --git a/apps/files/templates/fileexists.html b/apps/files/templates/fileexists.html
new file mode 100644
index 00000000000..de213803e0e
--- /dev/null
+++ b/apps/files/templates/fileexists.html
@@ -0,0 +1,35 @@
+<!--
+ - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
+ - SPDX-License-Identifier: AGPL-3.0-only
+ -->
+<div id="{dialog_name}" title="{title}" class="fileexists">
+ <span class="why">{why}<!-- Which files do you want to keep --></span><br/>
+ <span class="what">{what}<!-- If you select both versions, the copied file will have a number added to its name. --></span><br/>
+ <br/>
+ <table>
+ <th><input id="checkbox-allnewfiles" class="allnewfiles checkbox" type="checkbox" /><label for="checkbox-allnewfiles">{allnewfiles}<span class="count"></span></label></th>
+ <th><input id="checkbox-allexistingfiles" class="allexistingfiles checkbox" type="checkbox" /><label for="checkbox-allexistingfiles">{allexistingfiles}<span class="count"></span></label></th>
+ </table>
+ <div class="conflicts">
+ <div class="template">
+ <div class="filename"></div>
+ <div class="replacement">
+ <input type="checkbox" class="checkbox u-left"/>
+ <label>
+ <span class="svg icon"></span>
+ <div class="mtime"></div>
+ <div class="size"></div>
+ </label>
+ </div>
+ <div class="original">
+ <input type="checkbox" class="checkbox u-left" />
+ <label>
+ <span class="svg icon"></span>
+ <div class="mtime"></div>
+ <div class="size"></div>
+ <div class="message"></div>
+ </label>
+ </div>
+ </div>
+ </div>
+</div>