aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/dav/l10n/et_EE.js21
-rw-r--r--apps/dav/l10n/et_EE.json21
-rw-r--r--apps/federatedfilesharing/lib/FederatedShareProvider.php39
-rw-r--r--apps/files/l10n/de_DE.js2
-rw-r--r--apps/files/l10n/de_DE.json2
-rw-r--r--apps/files/l10n/sr.js4
-rw-r--r--apps/files/l10n/sr.json4
-rw-r--r--apps/files_sharing/l10n/de.js1
-rw-r--r--apps/files_sharing/l10n/de.json1
-rw-r--r--apps/files_sharing/l10n/de_DE.js1
-rw-r--r--apps/files_sharing/l10n/de_DE.json1
-rw-r--r--apps/files_sharing/l10n/et_EE.js107
-rw-r--r--apps/files_sharing/l10n/et_EE.json107
-rw-r--r--apps/files_sharing/l10n/pt_BR.js1
-rw-r--r--apps/files_sharing/l10n/pt_BR.json1
-rw-r--r--apps/files_sharing/l10n/sr.js1
-rw-r--r--apps/files_sharing/l10n/sr.json1
-rw-r--r--apps/files_sharing/l10n/zh_CN.js1
-rw-r--r--apps/files_sharing/l10n/zh_CN.json1
-rw-r--r--apps/files_sharing/l10n/zh_TW.js1
-rw-r--r--apps/files_sharing/l10n/zh_TW.json1
-rw-r--r--apps/files_sharing/lib/Controller/ShareAPIController.php2
-rw-r--r--apps/files_sharing/lib/SharedStorage.php5
-rw-r--r--apps/settings/l10n/lv.js2
-rw-r--r--apps/settings/l10n/lv.json2
-rw-r--r--apps/settings/l10n/ru.js18
-rw-r--r--apps/settings/l10n/ru.json18
-rw-r--r--apps/sharebymail/l10n/pl.js4
-rw-r--r--apps/sharebymail/l10n/pl.json4
-rw-r--r--apps/sharebymail/lib/ShareByMailProvider.php37
-rw-r--r--apps/systemtags/l10n/et_EE.js2
-rw-r--r--apps/systemtags/l10n/et_EE.json2
-rw-r--r--apps/systemtags/l10n/lv.js4
-rw-r--r--apps/systemtags/l10n/lv.json4
-rw-r--r--core/l10n/lv.js3
-rw-r--r--core/l10n/lv.json3
-rw-r--r--cypress/e2e/files/files-download.cy.ts206
-rw-r--r--lib/composer/composer/autoload_classmap.php1
-rw-r--r--lib/composer/composer/autoload_static.php1
-rw-r--r--lib/l10n/et_EE.js10
-rw-r--r--lib/l10n/et_EE.json10
-rw-r--r--lib/l10n/lv.js12
-rw-r--r--lib/l10n/lv.json12
-rw-r--r--lib/private/Share20/DefaultShareProvider.php42
-rw-r--r--lib/private/Share20/Manager.php13
-rw-r--r--lib/public/Share/IShareProviderSupportsAllSharesInFolder.php24
-rw-r--r--tests/lib/Share20/ManagerTest.php23
47 files changed, 688 insertions, 95 deletions
diff --git a/apps/dav/l10n/et_EE.js b/apps/dav/l10n/et_EE.js
index b833dd9539c..cfa243264fa 100644
--- a/apps/dav/l10n/et_EE.js
+++ b/apps/dav/l10n/et_EE.js
@@ -68,19 +68,27 @@ OC.L10N.register(
"Description: %s" : "Kirjeldus: %s",
"Where: %s" : "Kus: %s",
"%1$s via %2$s" : "%1$s %2$s kaudu",
+ "Cancelled: %1$s" : "Tühistatud: %1$s",
"\"%1$s\" has been canceled" : "„%1$s“ on tühistatud",
+ "Re: %1$s" : "Re: %1$s",
"%1$s has accepted your invitation" : "„%1$s“ on nõustunud sinu kutsega",
"%1$s has tentatively accepted your invitation" : "„%1$s“ on esialgselt nõustunud sinu kutsega",
"%1$s has declined your invitation" : "„%1$s“ on sinu kutsest keeldunud",
"%1$s has responded to your invitation" : "„%1$s“ on vastanud sinu kutsele",
"Invitation updated: %1$s" : "Kutse on uuendatud: %1$s",
"%1$s updated the event \"%2$s\"" : "„%1$s“ uuendas sündmust „%2$s“",
+ "Invitation: %1$s" : "Kutse: %1$s",
"%1$s would like to invite you to \"%2$s\"" : "„%1$s“ soovib saata sulle „%2$s“ kutset",
+ "Organizer:" : "Korraldaja:",
+ "Attendees:" : "Osalejad:",
+ "Title:" : "Pealkiri:",
"When:" : "Millal:",
"Location:" : "Asukoht:",
"Link:" : "Link:",
"Accept" : "Nõustu",
"Decline" : "Keeldu",
+ "More options …" : "Täiendavad valikud…",
+ "More options at %s" : "Lisavalikud: %s",
"Monday" : "Esmaspäev",
"Tuesday" : "Teisipäev",
"Wednesday" : "Kolmapäev",
@@ -107,6 +115,13 @@ OC.L10N.register(
"Fifth" : "Viies",
"Last" : "Viimane",
"Contacts" : "Kontaktid",
+ "You created address book {addressbook}" : "Sa lõid aadressiraamatu „{addressbook}“",
+ "{actor} deleted address book {addressbook}" : "„{actor}“ kustutas „{addressbook}“ aadressiraamatu",
+ "You deleted address book {addressbook}" : "Sa kustutasid aadressiraamatu „{addressbook}“",
+ "You shared address book {addressbook} with {user}" : "Sa jagasid „{addressbook}“ aadressiraamatut kasutajaga „{user}“",
+ "You deleted contact {card} from address book {addressbook}" : "Sa kustutasid „{card}“ kontakti „{addressbook}“ aadressiraamatus",
+ "You updated contact {card} in address book {addressbook}" : "Sa uuendasid „{card}“ kontakti „{addressbook}“ aadressiraamatus",
+ "A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Kontakti</strong> või <strong>aadressiraamatut</strong> muudeti",
"Accounts" : "Kasutajakontod",
"System address book which holds all accounts" : "Süsteemne aadressiraamat, kus leiduvad kõik kasutajakontod",
"File is not updatable: %1$s" : "Fail pole uuendatav: %1$s",
@@ -124,10 +139,13 @@ OC.L10N.register(
"Invalid target path" : "Vigane sihtasukoht",
"System is in maintenance mode." : "Server on hooldusrežiimis.",
"Upgrade needed" : "Uuendus on vajalik",
+ "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Selleks, et sinu %s toimiks iOS-is/macOS-is CalDAV-i ja CardDAV-iga peab https olema seadistatud.",
"Configures a CalDAV account" : "Seadistab CalDAV-i kasutajakonto",
"Configures a CardDAV account" : "Seadistab CardDAV-i kasutajakonto",
"Events" : "Sündmused",
"Untitled task" : "Ilma nimeta pealkiri",
+ "Completed on %s" : "Lõpetatud %s",
+ "Due on %s by %s" : "Tähtaeg: %s, täitjaks %s",
"Due on %s" : "Tähtaeg: %s",
"System Address Book" : "Süsteemne aadressiraamat",
"The system address book contains contact information for all users in your instance." : "Süsteemses aadressiraamatus leiduvad kõikde selle serveri kasutajate kontaktteave.",
@@ -166,7 +184,10 @@ OC.L10N.register(
"Availability" : "Saadavus",
"Absence" : "Äraolek",
"Configure your next absence period." : "Seadista järgmise äraoleku ajavahemik.",
+ "Calendar server" : "Kalendriserver",
"Send invitations to attendees" : "Saada osalejatele kutsed",
+ "Automatically generate a birthday calendar" : "Koosta sünnipäevade kalender automaatselt",
+ "Send notifications for events" : "Saada sündmuste teavitusi",
"Enable notifications for events via push" : "Võta kasutusele tõuketeenustepõhised teavitused",
"Cancel" : "Tühista",
"Import" : "Impordi",
diff --git a/apps/dav/l10n/et_EE.json b/apps/dav/l10n/et_EE.json
index f8058169cef..51f4d2bc914 100644
--- a/apps/dav/l10n/et_EE.json
+++ b/apps/dav/l10n/et_EE.json
@@ -66,19 +66,27 @@
"Description: %s" : "Kirjeldus: %s",
"Where: %s" : "Kus: %s",
"%1$s via %2$s" : "%1$s %2$s kaudu",
+ "Cancelled: %1$s" : "Tühistatud: %1$s",
"\"%1$s\" has been canceled" : "„%1$s“ on tühistatud",
+ "Re: %1$s" : "Re: %1$s",
"%1$s has accepted your invitation" : "„%1$s“ on nõustunud sinu kutsega",
"%1$s has tentatively accepted your invitation" : "„%1$s“ on esialgselt nõustunud sinu kutsega",
"%1$s has declined your invitation" : "„%1$s“ on sinu kutsest keeldunud",
"%1$s has responded to your invitation" : "„%1$s“ on vastanud sinu kutsele",
"Invitation updated: %1$s" : "Kutse on uuendatud: %1$s",
"%1$s updated the event \"%2$s\"" : "„%1$s“ uuendas sündmust „%2$s“",
+ "Invitation: %1$s" : "Kutse: %1$s",
"%1$s would like to invite you to \"%2$s\"" : "„%1$s“ soovib saata sulle „%2$s“ kutset",
+ "Organizer:" : "Korraldaja:",
+ "Attendees:" : "Osalejad:",
+ "Title:" : "Pealkiri:",
"When:" : "Millal:",
"Location:" : "Asukoht:",
"Link:" : "Link:",
"Accept" : "Nõustu",
"Decline" : "Keeldu",
+ "More options …" : "Täiendavad valikud…",
+ "More options at %s" : "Lisavalikud: %s",
"Monday" : "Esmaspäev",
"Tuesday" : "Teisipäev",
"Wednesday" : "Kolmapäev",
@@ -105,6 +113,13 @@
"Fifth" : "Viies",
"Last" : "Viimane",
"Contacts" : "Kontaktid",
+ "You created address book {addressbook}" : "Sa lõid aadressiraamatu „{addressbook}“",
+ "{actor} deleted address book {addressbook}" : "„{actor}“ kustutas „{addressbook}“ aadressiraamatu",
+ "You deleted address book {addressbook}" : "Sa kustutasid aadressiraamatu „{addressbook}“",
+ "You shared address book {addressbook} with {user}" : "Sa jagasid „{addressbook}“ aadressiraamatut kasutajaga „{user}“",
+ "You deleted contact {card} from address book {addressbook}" : "Sa kustutasid „{card}“ kontakti „{addressbook}“ aadressiraamatus",
+ "You updated contact {card} in address book {addressbook}" : "Sa uuendasid „{card}“ kontakti „{addressbook}“ aadressiraamatus",
+ "A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Kontakti</strong> või <strong>aadressiraamatut</strong> muudeti",
"Accounts" : "Kasutajakontod",
"System address book which holds all accounts" : "Süsteemne aadressiraamat, kus leiduvad kõik kasutajakontod",
"File is not updatable: %1$s" : "Fail pole uuendatav: %1$s",
@@ -122,10 +137,13 @@
"Invalid target path" : "Vigane sihtasukoht",
"System is in maintenance mode." : "Server on hooldusrežiimis.",
"Upgrade needed" : "Uuendus on vajalik",
+ "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Selleks, et sinu %s toimiks iOS-is/macOS-is CalDAV-i ja CardDAV-iga peab https olema seadistatud.",
"Configures a CalDAV account" : "Seadistab CalDAV-i kasutajakonto",
"Configures a CardDAV account" : "Seadistab CardDAV-i kasutajakonto",
"Events" : "Sündmused",
"Untitled task" : "Ilma nimeta pealkiri",
+ "Completed on %s" : "Lõpetatud %s",
+ "Due on %s by %s" : "Tähtaeg: %s, täitjaks %s",
"Due on %s" : "Tähtaeg: %s",
"System Address Book" : "Süsteemne aadressiraamat",
"The system address book contains contact information for all users in your instance." : "Süsteemses aadressiraamatus leiduvad kõikde selle serveri kasutajate kontaktteave.",
@@ -164,7 +182,10 @@
"Availability" : "Saadavus",
"Absence" : "Äraolek",
"Configure your next absence period." : "Seadista järgmise äraoleku ajavahemik.",
+ "Calendar server" : "Kalendriserver",
"Send invitations to attendees" : "Saada osalejatele kutsed",
+ "Automatically generate a birthday calendar" : "Koosta sünnipäevade kalender automaatselt",
+ "Send notifications for events" : "Saada sündmuste teavitusi",
"Enable notifications for events via push" : "Võta kasutusele tõuketeenustepõhised teavitused",
"Cancel" : "Tühista",
"Import" : "Impordi",
diff --git a/apps/federatedfilesharing/lib/FederatedShareProvider.php b/apps/federatedfilesharing/lib/FederatedShareProvider.php
index d993b35845c..7c95b83a5dd 100644
--- a/apps/federatedfilesharing/lib/FederatedShareProvider.php
+++ b/apps/federatedfilesharing/lib/FederatedShareProvider.php
@@ -26,6 +26,7 @@ use OCP\Share\Exceptions\GenericShareException;
use OCP\Share\Exceptions\ShareNotFound;
use OCP\Share\IShare;
use OCP\Share\IShareProvider;
+use OCP\Share\IShareProviderSupportsAllSharesInFolder;
use Psr\Log\LoggerInterface;
/**
@@ -33,7 +34,7 @@ use Psr\Log\LoggerInterface;
*
* @package OCA\FederatedFileSharing
*/
-class FederatedShareProvider implements IShareProvider {
+class FederatedShareProvider implements IShareProvider, IShareProviderSupportsAllSharesInFolder {
public const SHARE_TYPE_REMOTE = 6;
/** @var string */
@@ -553,7 +554,17 @@ class FederatedShareProvider implements IShareProvider {
if (!$shallow) {
throw new \Exception('non-shallow getSharesInFolder is no longer supported');
}
+ return $this->getSharesInFolderInternal($userId, $node, $reshares);
+ }
+
+ public function getAllSharesInFolder(Folder $node): array {
+ return $this->getSharesInFolderInternal(null, $node, null);
+ }
+ /**
+ * @return array<int, list<IShare>>
+ */
+ private function getSharesInFolderInternal(?string $userId, Folder $node, ?bool $reshares): array {
$qb = $this->dbConnection->getQueryBuilder();
$qb->select('*')
->from('share', 's')
@@ -562,18 +573,20 @@ class FederatedShareProvider implements IShareProvider {
$qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_REMOTE))
);
- /**
- * Reshares for this user are shares where they are the owner.
- */
- if ($reshares === false) {
- $qb->andWhere($qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId)));
- } else {
- $qb->andWhere(
- $qb->expr()->orX(
- $qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
- $qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId))
- )
- );
+ if ($userId !== null) {
+ /**
+ * Reshares for this user are shares where they are the owner.
+ */
+ if ($reshares !== true) {
+ $qb->andWhere($qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId)));
+ } else {
+ $qb->andWhere(
+ $qb->expr()->orX(
+ $qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
+ $qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId))
+ )
+ );
+ }
}
$qb->innerJoin('s', 'filecache', 'f', $qb->expr()->eq('s.file_source', 'f.fileid'));
diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js
index a3abec0d03d..76d6be8bf80 100644
--- a/apps/files/l10n/de_DE.js
+++ b/apps/files/l10n/de_DE.js
@@ -74,7 +74,7 @@ OC.L10N.register(
"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.",
"After enabling the windows compatible filenames, existing files cannot be modified anymore but can be renamed to valid new names by their owner." : "Nach Aktivierung der Windows-kompatiblen Dateinamen können vorhandene Dateien nicht mehr geändert, aber von ihrem Besitzer in gültige neue Namen umbenannt werden.",
- "It is also possible to migrate files automatically after enabling this setting, please refer to the documentation about the occ command." : "Nach dem Aktivieren dieser Einstellung ist es auch möglich, Dateien automatisch zu migrieren. Weitere Informationen finden sich in der Dokumentation zum Befehl „occ“.",
+ "It is also possible to migrate files automatically after enabling this setting, please refer to the documentation about the occ command." : "Nach dem Aktivieren dieser Einstellung ist es auch möglich, Dateien automatisch zu migrieren. Weitere Informationen finden sich in der Dokumentation zum Befehl \"occ“.",
"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.",
"File Management" : "Dateiverwaltung",
diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json
index 5352fab8c24..3fb15347da5 100644
--- a/apps/files/l10n/de_DE.json
+++ b/apps/files/l10n/de_DE.json
@@ -72,7 +72,7 @@
"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.",
"After enabling the windows compatible filenames, existing files cannot be modified anymore but can be renamed to valid new names by their owner." : "Nach Aktivierung der Windows-kompatiblen Dateinamen können vorhandene Dateien nicht mehr geändert, aber von ihrem Besitzer in gültige neue Namen umbenannt werden.",
- "It is also possible to migrate files automatically after enabling this setting, please refer to the documentation about the occ command." : "Nach dem Aktivieren dieser Einstellung ist es auch möglich, Dateien automatisch zu migrieren. Weitere Informationen finden sich in der Dokumentation zum Befehl „occ“.",
+ "It is also possible to migrate files automatically after enabling this setting, please refer to the documentation about the occ command." : "Nach dem Aktivieren dieser Einstellung ist es auch möglich, Dateien automatisch zu migrieren. Weitere Informationen finden sich in der Dokumentation zum Befehl \"occ“.",
"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.",
"File Management" : "Dateiverwaltung",
diff --git a/apps/files/l10n/sr.js b/apps/files/l10n/sr.js
index c2388dff6a9..94e6e94c5a4 100644
--- a/apps/files/l10n/sr.js
+++ b/apps/files/l10n/sr.js
@@ -43,6 +43,8 @@ OC.L10N.register(
"Files" : "Фајлови",
"A file or folder has been <strong>changed</strong>" : "Фајл или фасцикла су <strong>измењени</strong>",
"A favorite file or folder has been <strong>changed</strong>" : "Омиљени фајл или фасцикла су <strong>измењени</strong>",
+ "%1$s (renamed)" : "%1$s (преименован)",
+ "renamed file" : "преименован фајл",
"Failed to authorize" : "Није успело добијање дозволе",
"Invalid folder path" : "Неисправна путања фолдера",
"Folder not found" : "Није пронађен фолдер",
@@ -71,6 +73,8 @@ OC.L10N.register(
"Transferred from %1$s on %2$s" : "Пренесено са %1$s на %2$s",
"Files compatibility" : "Компатибилност фајлова",
"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." : "Дозвољава се ограничавање имена фајлова тако да сви клијенти могу да их синхронизују. Подразумевано се дозвољавају сва имена фајлова која су исправна на POSIX системима (нпр. Linux или macOS).",
+ "After enabling the windows compatible filenames, existing files cannot be modified anymore but can be renamed to valid new names by their owner." : "Када се укључе windows компатибилна имена фајлова, постојећи фајлови се више неће моћи мењати, али њихов власник може да им промени име на исправно ново име.",
+ "It is also possible to migrate files automatically after enabling this setting, please refer to the documentation about the occ command." : "Фајлови такође могу аутоматски да се мигрирају након укључивања овог подешавања, молимо вас да погледате документацију у вези са occ командом.",
"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 системима, као што су она која користе резервисана имена или специјалне карактере. Али ово неће форсирати компатибилност разликовања малих и великих слова.",
"File Management" : "Управљање фајловима",
diff --git a/apps/files/l10n/sr.json b/apps/files/l10n/sr.json
index f736a5c7f94..280c8cc2afd 100644
--- a/apps/files/l10n/sr.json
+++ b/apps/files/l10n/sr.json
@@ -41,6 +41,8 @@
"Files" : "Фајлови",
"A file or folder has been <strong>changed</strong>" : "Фајл или фасцикла су <strong>измењени</strong>",
"A favorite file or folder has been <strong>changed</strong>" : "Омиљени фајл или фасцикла су <strong>измењени</strong>",
+ "%1$s (renamed)" : "%1$s (преименован)",
+ "renamed file" : "преименован фајл",
"Failed to authorize" : "Није успело добијање дозволе",
"Invalid folder path" : "Неисправна путања фолдера",
"Folder not found" : "Није пронађен фолдер",
@@ -69,6 +71,8 @@
"Transferred from %1$s on %2$s" : "Пренесено са %1$s на %2$s",
"Files compatibility" : "Компатибилност фајлова",
"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." : "Дозвољава се ограничавање имена фајлова тако да сви клијенти могу да их синхронизују. Подразумевано се дозвољавају сва имена фајлова која су исправна на POSIX системима (нпр. Linux или macOS).",
+ "After enabling the windows compatible filenames, existing files cannot be modified anymore but can be renamed to valid new names by their owner." : "Када се укључе windows компатибилна имена фајлова, постојећи фајлови се више неће моћи мењати, али њихов власник може да им промени име на исправно ново име.",
+ "It is also possible to migrate files automatically after enabling this setting, please refer to the documentation about the occ command." : "Фајлови такође могу аутоматски да се мигрирају након укључивања овог подешавања, молимо вас да погледате документацију у вези са occ командом.",
"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 системима, као што су она која користе резервисана имена или специјалне карактере. Али ово неће форсирати компатибилност разликовања малих и великих слова.",
"File Management" : "Управљање фајловима",
diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js
index 0154a93f7fe..24e8e768379 100644
--- a/apps/files_sharing/l10n/de.js
+++ b/apps/files_sharing/l10n/de.js
@@ -313,6 +313,7 @@ OC.L10N.register(
"Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access." : "Diese Methode verwenden, um Dateien für Einzelpersonen oder Teams innerhalb deiner Organisation freizugeben. Wenn der Empfangende bereits Zugriff auf die Freigabe hat, diese aber nicht finden kann, kannst du ihnen den internen Freigabelink für einen einfachen Zugriff senden.",
"Use this method to share files with individuals or organizations outside your organization. Files and folders can be shared via public share links and email addresses. You can also share to other Nextcloud accounts hosted on different instances using their federated cloud ID." : "Verwende diese Methode, um Dateien für Personen oder Organisationen außerhalb deiner Organisation freizugeben. Dateien und Ordner können über öffentliche Freigabelinks und E-Mail-Adressen freigegeben werden. Du kannst auch Dateien für andere Nextcloud-Konten freigeben, die auf verschiedenen Instanzen gehostet werden, indem du deren Federated-Cloud-ID verwenden.",
"Shares that are not part of the internal or external shares. This can be shares from apps or other sources." : "Freigaben, die nicht zu internen oder externen Freigaben gehören. Dies können Freigaben von Apps oder anderen Quellen sein.",
+ "Share with accounts, teams, federated cloud id" : "Teilen mit Konten, Teams, Federated-Cloud-IDs",
"Share with accounts and teams" : "Teile mit Konten und Teams",
"Email, federated cloud id" : "Name, Federated-Cloud-ID",
"Unable to load the shares list" : "Liste der Freigaben konnte nicht geladen werden",
diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json
index 77a1cc0ebcb..3cdd4091130 100644
--- a/apps/files_sharing/l10n/de.json
+++ b/apps/files_sharing/l10n/de.json
@@ -311,6 +311,7 @@
"Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access." : "Diese Methode verwenden, um Dateien für Einzelpersonen oder Teams innerhalb deiner Organisation freizugeben. Wenn der Empfangende bereits Zugriff auf die Freigabe hat, diese aber nicht finden kann, kannst du ihnen den internen Freigabelink für einen einfachen Zugriff senden.",
"Use this method to share files with individuals or organizations outside your organization. Files and folders can be shared via public share links and email addresses. You can also share to other Nextcloud accounts hosted on different instances using their federated cloud ID." : "Verwende diese Methode, um Dateien für Personen oder Organisationen außerhalb deiner Organisation freizugeben. Dateien und Ordner können über öffentliche Freigabelinks und E-Mail-Adressen freigegeben werden. Du kannst auch Dateien für andere Nextcloud-Konten freigeben, die auf verschiedenen Instanzen gehostet werden, indem du deren Federated-Cloud-ID verwenden.",
"Shares that are not part of the internal or external shares. This can be shares from apps or other sources." : "Freigaben, die nicht zu internen oder externen Freigaben gehören. Dies können Freigaben von Apps oder anderen Quellen sein.",
+ "Share with accounts, teams, federated cloud id" : "Teilen mit Konten, Teams, Federated-Cloud-IDs",
"Share with accounts and teams" : "Teile mit Konten und Teams",
"Email, federated cloud id" : "Name, Federated-Cloud-ID",
"Unable to load the shares list" : "Liste der Freigaben konnte nicht geladen werden",
diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js
index bf4e09a78bc..27bea91cd46 100644
--- a/apps/files_sharing/l10n/de_DE.js
+++ b/apps/files_sharing/l10n/de_DE.js
@@ -313,6 +313,7 @@ OC.L10N.register(
"Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access." : "Diese Methode verwenden, um Dateien für Einzelpersonen oder Teams innerhalb Ihrer Organisation freizugeben. Wenn der Empfänger bereits Zugriff auf die Freigabe hat, diese aber nicht finden kann, können Sie ihm den internen Freigabelink für einen einfachen Zugriff senden.",
"Use this method to share files with individuals or organizations outside your organization. Files and folders can be shared via public share links and email addresses. You can also share to other Nextcloud accounts hosted on different instances using their federated cloud ID." : "Verwenden Sie diese Methode, um Dateien für Personen oder Organisationen außerhalb Ihrer Organisation freizugeben. Dateien und Ordner können über öffentliche Freigabelinks und E-Mail-Adressen freigegeben werden. Sie können auch Dateien für andere Nextcloud-Konten freigeben, die auf verschiedenen Instanzen gehostet werden, indem Sie deren Federated-Cloud-ID verwenden.",
"Shares that are not part of the internal or external shares. This can be shares from apps or other sources." : "Freigaben, die nicht zu internen oder externen Freigaben gehören. Dies können Freigaben von Apps oder anderen Quellen sein.",
+ "Share with accounts, teams, federated cloud id" : "Teilen mit Konten, Teams, Federated-Cloud-IDs",
"Share with accounts and teams" : "Teile mit Konten und Teams",
"Email, federated cloud id" : "Name, Federated-Cloud-ID",
"Unable to load the shares list" : "Liste der Freigaben kann nicht geladen werden",
diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json
index fb8382a12eb..6099bf4ed21 100644
--- a/apps/files_sharing/l10n/de_DE.json
+++ b/apps/files_sharing/l10n/de_DE.json
@@ -311,6 +311,7 @@
"Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access." : "Diese Methode verwenden, um Dateien für Einzelpersonen oder Teams innerhalb Ihrer Organisation freizugeben. Wenn der Empfänger bereits Zugriff auf die Freigabe hat, diese aber nicht finden kann, können Sie ihm den internen Freigabelink für einen einfachen Zugriff senden.",
"Use this method to share files with individuals or organizations outside your organization. Files and folders can be shared via public share links and email addresses. You can also share to other Nextcloud accounts hosted on different instances using their federated cloud ID." : "Verwenden Sie diese Methode, um Dateien für Personen oder Organisationen außerhalb Ihrer Organisation freizugeben. Dateien und Ordner können über öffentliche Freigabelinks und E-Mail-Adressen freigegeben werden. Sie können auch Dateien für andere Nextcloud-Konten freigeben, die auf verschiedenen Instanzen gehostet werden, indem Sie deren Federated-Cloud-ID verwenden.",
"Shares that are not part of the internal or external shares. This can be shares from apps or other sources." : "Freigaben, die nicht zu internen oder externen Freigaben gehören. Dies können Freigaben von Apps oder anderen Quellen sein.",
+ "Share with accounts, teams, federated cloud id" : "Teilen mit Konten, Teams, Federated-Cloud-IDs",
"Share with accounts and teams" : "Teile mit Konten und Teams",
"Email, federated cloud id" : "Name, Federated-Cloud-ID",
"Unable to load the shares list" : "Liste der Freigaben kann nicht geladen werden",
diff --git a/apps/files_sharing/l10n/et_EE.js b/apps/files_sharing/l10n/et_EE.js
index 5d5d851ffa2..3636829a8ff 100644
--- a/apps/files_sharing/l10n/et_EE.js
+++ b/apps/files_sharing/l10n/et_EE.js
@@ -15,6 +15,7 @@ OC.L10N.register(
"You removed group {group} from {file}" : "Sa eemaldasid grupi {group} faili {file} jagamisest",
"{actor} shared {file} with group {group}" : "{actor} jagas faili {file} grupiga {group}",
"{actor} removed group {group} from {file}" : "{actor} eemaldas grupi {group} faili {file} jagamisest",
+ "Share for file {file} with group {group} expired" : "Grupile „{group}“ mõeldud jagatud fail „{file}“ aegus",
"Shared as public link" : "Jaga avaliku lingina",
"Removed public link" : "Avalik link on eemaldatud",
"Public link expired" : "Avalik link aegus",
@@ -41,35 +42,55 @@ OC.L10N.register(
"{actor} removed share for {user}" : "{actor} eemaldas jagamise kasutajaga {user}",
"Shared by {actor}" : "Jagatud kasutajalt {actor}",
"{actor} removed share" : "{actor} eemaldas jagamise",
+ "Share for {user} expired" : "Kasutajale „{user}“ mõeldud jaosmeedia aegus",
"Share expired" : "Jagamine aegus",
"You shared {file} with {user}" : "Sa jagasid {file} kasutajaga {user}",
"You removed {user} from {file}" : "Sa eemaldasid faili {file} jagamise kasutajaga {user} ",
+ "You removed yourself from {file}" : "Sa eemaldasid end „{file}“ failist",
+ "{actor} removed themselves from {file}" : "„{actor}“ eemaldas end „{file}“ failist",
"{actor} shared {file} with {user}" : "{actor} jagas {file} kasutajaga {user}",
"{actor} removed {user} from {file}" : "{actor} eemaldas {user} jagamise faililt {file}",
"{actor} shared {file} with you" : "{actor} jagas sinuga {file}",
"{actor} removed you from the share named {file}" : "{actor} lõpetas sinuga {file} jagamise",
+ "Share for file {file} with {user} expired" : "Kasutajale „{user}“ mõeldud jagatud fail „{file}“ aegus",
+ "Share for file {file} expired" : "„{file}“ faili jagamine aegus",
"A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Fail või kaust mis on jagatud e-posti või avaliku lingiga <strong>laaditi alla</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Fail või kaust jagati <strong>teisest serverist</strong>",
"Sharing" : "Jagamine",
"A file or folder has been <strong>shared</strong>" : "Fail või kaust on <strong>jagatud</strong>",
"Shared link" : "Jagatud link",
+ "Wrong share ID, share does not exist" : "Jaosmedia vigane tunnus - sellist pole olemas",
"Could not delete share" : "Ei saanud jagamist eemaldada",
"Please specify a file or folder path" : "Palun määra faili või kausta rada",
"Wrong path, file/folder does not exist" : "Vale asukoht faili või kausta pole olemas",
"Could not create share" : "Ei saanud jagamist luua",
+ "Please specify a valid account to share with" : "Palun määra korrektne kasutajakonto, kellega soovid jagada",
"Group sharing is disabled by the administrator" : "Grupiga jagamine on administraatori poolt keelatud",
"Please specify a valid group" : "Palun määra kehtiv grupp",
"Public link sharing is disabled by the administrator" : "Avaliku lingiga jagamine on administraatori poolt keelatud",
+ "Please specify a valid email address" : "Palun määra kehtiv e-posti aadress",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "„%1$s“ jagamine ei õnnestunud, sest server ei luba „%2$s“ tüüpi jagamisi",
+ "Please specify a valid federated account ID" : "Palun määra korrektne kasutaja liitpilves, kellega soovid jagada",
"You cannot share to a Team if the app is not enabled" : "Sa ei saa jagada tiimiga, kui see rakendus pole lubatud",
"Please specify a valid team" : "Palun määratle korrektne tiim",
+ "Sharing %s failed because the back end does not support ScienceMesh shares" : "„%s“ jagamine ei õnnestunud, sest taustateenus ei toeta ScienceMeshi meedia jagamist",
"Unknown share type" : "Tundmatu jagamise tüüp",
"Not a directory" : "Ei ole kaust",
+ "Could not lock node" : "Sõlme ei õnnestunud lukustada",
"Public upload is only possible for publicly shared folders" : "Avalik üleslaadminie on võimalik ainult avalikult jagatud kaustades",
"Share must at least have READ or CREATE permissions" : "jaosmeedial peavad olema vähemalt logemis- ja loomisõigused",
"Public upload disabled by the administrator" : "Avalik üleslaadimine on administraatori poolt keelatud",
"Could not lock path" : "Ei saanud rada lukustada",
+ "no sharing rights on this item" : "selle objekti kontekstis pole jagamisõigusi",
+ "You are not allowed to edit incoming shares" : "Sul pole lubatud vastuvõetud jaosmeediat muuta",
"Wrong or no update parameter given" : "Antud vale või aegunud parameeter",
+ "Invalid date. Format must be YYYY-MM-DD" : "Vigane kuupäev, vorming peab olema YYYY-MM-DD",
+ "No sharing rights on this item" : "Selle objekti kontekstis pole jagamisõigusi",
+ "Invalid share attributes provided: \"%s\"" : "Vigased jagamisatribuudid: „%s“",
+ "You are not allowed to send mail notifications" : "Sul pole lubatud e-postiga teavitusi saata",
+ "No mail notification configured for this share type" : "Selle jagamistüübi kohta pole e-posti teel saadetavat teavitust lisatud",
"Wrong password" : "Vale salasõna",
+ "Error while sending mail notification" : "Viga e-postiga teavituse saatmisel",
"Failed to generate a unique token" : "Ei õnnestunud luua unikaalset tunnusluba",
"This share does not exist or is no longer available" : "See jaosmeedia pole enam olemas või saadaval",
"shared by %s" : "jagas %s",
@@ -78,6 +99,9 @@ OC.L10N.register(
"Share API is disabled" : "Jagamise API on keelatud",
"File sharing" : "Faide jagamine",
"Share will expire tomorrow" : "Jagamine aegub homme",
+ "Your share of {node} will expire tomorrow" : "Sinu „{node}“ jaosmeedia aegub homme",
+ "You received {share} as a share by {user}" : "Kasutaja „{user}“ on saatnud sulle „{share}“ jaosmeedia",
+ "You received {share} to group {group} as a share by {user}" : "Kasutaja „{user}“ on saatnud „{group}“ grupile „{share}“ jaosmeedia",
"Accept" : "Nõustu",
"Decline" : "Keeldu",
"Remember to upload the files to %s" : "Ära unusta laadida faile kausta %s",
@@ -85,27 +109,51 @@ OC.L10N.register(
"Open \"%s\"" : "Ava „%s“",
"People" : "Inimesed",
"Filter accounts" : "Filtreeri kasutajakontosid",
+ "The request will expire on {date} at midnight and will be password protected." : "Päring aegub {date} keskööl ning on kaitstud salasõnaga.",
+ "The request will expire on {date} at midnight." : "Päring aegub {date} keskööl.",
+ "The request will be password protected." : "Päring on kaitstud salasõnaga.",
+ "When should the request expire?" : "Millal peaks see päring aeguma?",
+ "Set a submission expiration date" : "Määra aegumise kuupäev",
"Expiration date" : "Aegumise kuupäev",
"Select a date" : "Vali kuupäev",
+ "Your administrator has enforced a {count} days expiration policy." : "Sinu serveri peakasutaja on kehtestanud {count}-päevase aegumisreegli.",
+ "What password should be used for the request?" : "Mis salasõna peaks selle päringu puhul kasutama?",
"Set a password" : "Lisa salasõna",
"Password" : "Salasõna",
"Enter a valid password" : "Sisesta korrektne salasõna",
"Generate a new password" : "Loo uus salasõna",
+ "Your administrator has enforced a password protection." : "Sinu serveri peakasutaja on kehtestanud salasõna kasutamise reegli.",
+ "Automatically copying failed, please copy the share link manually" : "Automaatne kopeerimine ei toimi, palun kopeeri jagamislink käsitsi",
"Link copied to clipboard" : "Link on lõikelauale kopeeritud",
"Email already added" : "E-posti aadress on juba lisatud",
"Invalid email address" : "Vigane e-posti aadress",
+ "_The following email address is not valid: {emails}_::_The following email addresses are not valid: {emails}_" : ["Järgnev e-posti aadress pole korrektne: {emails}","Järgnevad e-posti aadressid pole korrektsed: {emails}"],
"_{count} email address already added_::_{count} email addresses already added_" : ["{count} e-posti aadress on juba lisatud","{count} e-posti aadressi on juba lisatud"],
"_{count} email address added_::_{count} email addresses added_" : ["{count} e-posti aadress on lisatud","{count} e-posti aadressi on lisatud"],
+ "You can now share the link below to allow people to upload files to your directory." : "Nüüd saad teistega jagada alltoodud linki ning neil on võimalik faile sinu kausta üles laadida.",
"Share link" : "Jaga link",
"Copy to clipboard" : "Kopeeri lõikepuhvrisse",
"Send link via email" : "Saada link e-kirjaga",
+ "Enter an email address or paste a list" : "Sisesta e-posti aadress või lisa loend",
+ "Remove email" : "Eemalda e-posti aadress",
+ "Select a destination" : "Vali sihtkaust",
"Select" : "Vali",
+ "What are you requesting?" : "Missugust faili soovid saada?",
+ "Request subject" : "Päringu teema",
+ "Birthday party photos, History assignment…" : "Sünnipäevapeo fotod, uurimistöö…",
+ "Where should these files go?" : "Kuhu peaksid need failid sattuma?",
+ "Upload destination" : "Üleslaadimise sihtkaust",
+ "Revert to default" : "Kasuta vaikimisi kausta",
+ "The uploaded files are visible only to you unless you choose to share them." : "Kui sa just neid edasi ei jaga, siis on üleslaaditud failid nähtavad vaid sulle.",
"Add a note" : "Lisa märge",
"Note for recipient" : "Märge saajale",
- "Add a note to help people understand what you are requesting." : "Lisa teise osapoole jaoks märge, mis aitab neil mõista, missugust faili sa temalt soovid.",
+ "Add a note to help people understand what you are requesting." : "Lisa teise osapoole jaoks märge, mis aitab tal mõista, missugust faili sa temalt soovid.",
+ "You can add links, date or any other information that will help the recipient understand what you are requesting." : "Lisa teise osapoole jaoks linke, kuupäevi või muud teavet, mis aitab tal mõista, missugust faili sa temalt soovid.",
"Close" : "Sulge",
"_Send email and close_::_Send {count} emails and close_" : ["Saada e-kiri ja sulge","Saada {count} e-kirja ja sulge"],
"Please select a folder, you cannot share the root directory." : "Palun vali kaust ülaltpool - sa ei saa jagada juurkausta.",
+ "File request created" : "Failipäring on loodud",
+ "_File request created and email sent_::_File request created and {count} emails sent_" : ["Failipäring on loodud ja e-kiri on saadetud","Failipäring on loodud ja {count} e-kirja on saadetud"],
"Error creating the share: {errorMessage}" : "Viga jaosmeedia loomisel: {errorMessage}",
"Error creating the share" : "Viga jaosmeedia loomisel",
"Error sending emails: {errorMessage}" : "Viga e-kirjade saatmisel: {errorMessage}",
@@ -120,6 +168,7 @@ OC.L10N.register(
"Close without sending emails" : "Sulge ilma e-kirju saatmata",
"Continue" : "Jätka",
"Error while toggling options" : "Viga valikute sisse/välja lülitamisel",
+ "Accept shares from other accounts and groups by default" : "Aktsepteeri vaikimisi muude kasutajakontode ja rühmade jagamisi automaatselt",
"Choose a default folder for accepted shares" : "Vali vaikimisi kaust jaosmeedia vastuvõtmiseks",
"Invalid path selected" : "Vigane asukoht on valitud",
"Unknown error" : "Tundmatu viga",
@@ -134,8 +183,12 @@ OC.L10N.register(
"remote group" : "Kauggrupp",
"guest" : "külaline",
"by {initiator}" : "kasutajalt {initiator}",
+ "Shared with the group {user} by {owner}" : "„{owner}“ jagas seda sinuga ja „{user}“ grupiga",
+ "Shared with the conversation {user} by {owner}" : "„{owner}“ jagas seda vestluses „{user}“ grupiga või kasutajaga",
+ "Shared with {user} by {owner}" : "„{owner}“ jagas seda „{user}“ kasutajaga",
"Open Sharing Details" : "Ava jaosmeedia üksikasjad",
"Added by {initiator}" : "Selle lisas {initiator}",
+ "Via “{folder}”" : "„{folder}“ kausta kaudu",
"Unshare" : "Lõpeta jagamine",
"Cannot copy, please copy the link manually" : "Ei saa kopeerida, palun kopeeri link käsitsi",
"Copy internal link to clipboard" : "Kopeeri sisemine link lõikelauale",
@@ -143,10 +196,16 @@ OC.L10N.register(
"Only works for people with access to this file" : "Toimib vaid kasutajate puhul, kellel on ligipääs sellele failile",
"Link copied" : "Link kopeeritud",
"Internal link" : "Sisemine link",
+ "{shareWith} by {initiator}" : "{shareWith} kasutajalt {initiator}",
+ "Shared via link by {initiator}" : "„{initiator}“ jagas seda lingiga",
+ "File request ({label})" : "Failipäring ({label})",
"Share link ({label})" : "Jagamise link ({label})",
+ "Mail share" : "E-posti jagamine",
"Share link ({index})" : "Jagamise link ({index})",
"Create public link" : "Loo avalik link",
+ "Error, please enter proper password and/or expiration date" : "Viga, palun sisesta korrektne salasõna ja/või aegumise kuupäev",
"Error while creating the share" : "Viga jaosmeedia loomisel",
+ "Please enter the following required information before creating the share" : "Enne jaosmeedia loomist palun sisesta järgmine vajalik teave",
"Password protection (enforced)" : "Paroolikaitse (jõustatud)",
"Password protection" : "Password protection",
"Enter a password" : "Enter a password",
@@ -159,17 +218,23 @@ OC.L10N.register(
"Generate QR code" : "Loo QR-kood",
"Add another link" : "Lisa veel üks link",
"Create a new share link" : "Loo uus jagamislink",
+ "Quick share options, the current selected is \"{selectedOption}\"" : "Kiirjagamise valikud, hetkel on valitud „{selectedOption}“",
"View only" : "Ainult vaatamine",
"Can edit" : "Võib redigeerida",
+ "Custom permissions" : "Kohandatud õigused",
"Resharing is not allowed" : "Edasijagamine pole lubatud",
"Name or email …" : "Nimi või e-posti aadress…",
"Name, email, or Federated Cloud ID …" : "Nimi, e-posti aadress või liitpilve kasutajatunnus…",
- "Searching …" : "Otsin ...",
+ "Searching …" : "Otsin...",
+ "No elements found." : "Elemente ei leidu.",
+ "Search globally" : "Otsi kõikjalt",
"Guest" : "Külaline",
"Group" : "Grupp",
"Email" : "Epost",
"Team" : "Tiim",
"Talk conversation" : "Talk suhtlus",
+ "Deck board" : "Kanbani tahvel",
+ "ScienceMesh" : "ScienceMesh",
"on {server}" : " {server}",
"Enter external recipients" : "Lisa välised saajad",
"Search for internal recipients" : "Otsi rakendusesiseseid saajaid",
@@ -181,7 +246,9 @@ OC.L10N.register(
"View terms of service" : "Vaata kasutustingimusi",
"Terms of service" : "Kasutustingimused",
"Upload files to {folder}" : "Laadi failid üles kausta {folder}",
+ "Submit name" : "Salvesta nimi",
"{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} jagas sinuga kausta.",
+ "To upload files, you need to provide your name first." : "Faili üleslaadimiseks pead esmalt oma nime sisestama.",
"Name" : "Nimi",
"Enter your name" : "Sisesta oma nimi",
"Share with {userName}" : "Jaga kasutajaga {userName}",
@@ -195,7 +262,7 @@ OC.L10N.register(
"Save share" : "Salvesta jaosmeedia",
"Read" : "Lugemine",
"Create" : "Lisa",
- "Edit" : "Redigeeri",
+ "Edit" : "Muuda",
"Share" : "Jaga",
"Delete" : "Kustuta",
"Password field cannot be empty" : "Salasõna väli ei saa olla tühi",
@@ -212,6 +279,7 @@ OC.L10N.register(
"Set password" : "Määra salasõna",
"Password expires {passwordExpirationTime}" : "Salasõna aegub {passwordExpirationTime}",
"Password expired" : "Salasõna on aegunud",
+ "Video verification" : "Verifitseerimine videoga",
"Expiration date (enforced)" : "Aegumise kuupäev (jõustatud)",
"Set expiration date" : "Määra aegumise kuupäev",
"Hide download" : "Peida allalaaditu",
@@ -220,10 +288,18 @@ OC.L10N.register(
"Enter a note for the share recipient" : "Lisa märkus jaosmeedia saajale",
"Show files in grid view" : "Näita faile ruudustikuvaates",
"Delete share" : "Kustuta jagamine",
+ "Others with access" : "Teised, kellel on ligipääs",
+ "No other accounts with access found" : "Teisi ligipääsuga kasutajakontosid ei leidu",
+ "Toggle list of others with access to this directory" : "Näita teisi, kellele on ligipääs sellele kaustale või peida nad",
+ "Toggle list of others with access to this file" : "Näita teisi, kellele on ligipääs sellele failile või peida nad",
+ "Unable to fetch inherited shares" : "Päritud jaosmeedia laadimine ei õnnestu",
"Link shares" : "Jaoslingid",
"Shares" : "Jagamisi",
+ "Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access." : "Kasuta seda jagamismeetodit jagamisel oma organisatsiooni kasutajatega ja tiimidega. Kui kasutajal juba on jaosmeediale ligipääs, kuid ei suuad seda leida, siis lihtsuse mõttes saada talle süsteemisisene jagamislink.",
+ "Share with accounts, teams, federated cloud id" : "Jaga kasutajatega, tiimidega ja liitpilves osalejatega",
"Share with accounts and teams" : "Jaga kasutajate ja tiimidega",
"Email, federated cloud id" : "E-posti aadress, liitpilve kasutajatunnus",
+ "Unable to load the shares list" : "Jaosmeedia loendi laadimine ei õnnestu",
"Expires {relativetime}" : "Aegub {relativetime}",
"this share just expired." : "see jagamine aegus äsja",
"Shared with you by {owner}" : "Jagatud sinuga {owner} poolt",
@@ -233,12 +309,17 @@ OC.L10N.register(
"External shares explanation" : "Väliste jaoskaustade selgitus",
"Additional shares" : "Täiendavad jaoskaustad",
"Additional shares explanation" : "Täiendavate jaoskaustade selgitus",
+ "Link to a file" : "Link failile",
+ "_Accept share_::_Accept shares_" : ["Võta jaosmeedia vastu","Võta jaosmeedia vastu"],
"Open in Files" : "Ava failirakenduses",
+ "_Reject share_::_Reject shares_" : ["Keeldu jaosmeediast","Keeldu jaosmeediast"],
+ "_Restore share_::_Restore shares_" : ["Taasta jaosmeedia","Taasta jaosmeedia"],
"Shared" : "Jagatud",
"Shared by {ownerDisplayName}" : "Jagaja: {ownerDisplayName}",
"Shared multiple times with different people" : "Jagatud mitu korda eri kasutajate poolt",
"Show sharing options" : "Näita jagamise valikuid",
"Shared with others" : "Teistega jagatud",
+ "Create file request" : "Koosta failipäring",
"Upload files to {foldername}" : "Laadi failid üles kausta {foldername}",
"Public file share" : "Avalikud jaosfailid",
"Publicly shared file." : "Avalikult jagatud fail.",
@@ -248,19 +329,34 @@ OC.L10N.register(
"Publicly shared files." : "Avalikult jagatud failid.",
"No files" : "Faile pole",
"Files and folders shared with you will show up here" : "Sinuga jagatud failid ja kaustad on siin nähtavad",
+ "Overview of shared files." : "Jagatud failide ülevaade.",
"No shares" : "Jagamisi pole",
+ "Files and folders you shared or have been shared with you will show up here" : "Sinu poolt jagatud ning sinuga jagatud failid ja kaustad saavad olema nähtavad siin",
"Shared with you" : "Sinuga jagatud",
+ "List of files that are shared with you." : "Sinuga jagatud failide loend.",
"Nothing shared with you yet" : "Sinuga pole veel midagi jagatud",
+ "Files and folders others shared with you will show up here" : "Sinuga jagatud failid ja kaustad saavad olema nähtavad siin",
+ "List of files that you shared with others." : "Sinu poolt teisega jagatud failide loend.",
"Nothing shared yet" : "Midagi pole veel jagatud",
+ "Files and folders you shared will show up here" : "Sinu poolt jagatud failid ja kaustad saavad olema nähtavad siin",
"Shared by link" : "Jagatud lingiga",
+ "List of files that are shared by link." : "Lingiga jagatud failide loend.",
"No shared links" : "Jagatud linke pole",
+ "Files and folders you shared by link will show up here" : "Sinu poolt lingiga jagatud failid ja kaustad saavad olema nähtavad siin",
"File requests" : "Failipäringud",
"List of file requests." : "Failipäringute loend.",
"No file requests" : "Failipäringuid ei leidu",
+ "File requests you have created will show up here" : "Sinu loodud failipäringus saavad olema nähtavad siin.",
"Deleted shares" : "Kustutatud jagamised",
+ "List of shares you left." : "Jaosmeedia loend, kust sa oled lahkunud.",
"No deleted shares" : "Kustutatud jagamisi pole",
+ "Shares you have left will show up here" : "Jaosmeedia loend, kust sa oled lahkunud, saab olema nähtav siin",
"Pending shares" : "Ootel jagamised",
+ "List of unapproved shares." : "Vastuvõtmata jaosmeedia loend.",
"No pending shares" : "Ootel jagamisi pole",
+ "Shares you have received but not approved will show up here" : "Jaosmeedia, mille oled saanud, kuid pole nõustunud, saab olema nähtav siin",
+ "Error updating the share: {errorMessage}" : "Viga jaosmeedia uuendamisel: {errorMessage}",
+ "Error updating the share" : "Viga jaosmeedia uuendamisel",
"Could not update share" : "Jaosmeedia andmete uuendamine ei õnnestunud",
"Share saved" : "Jaosmeedia andmed on salvestatud",
"Share expiry date saved" : "Jaosmeedia aegumise kuupäev on salvestatud",
@@ -272,6 +368,9 @@ OC.L10N.register(
"Shared by" : "Jagas",
"Shared with" : "Jagatud",
"Shared with you and the group {group} by {owner}" : "Jagatud sinu ja grupiga {group} {owner} poolt",
+ "Shared with you and {circle} by {owner}" : "„{owner}“ jagas seda sinuga ja „{circle}“ tiimiga",
+ "Shared with you and the conversation {conversation} by {owner}" : "„{owner}“ jagas seda sinuga ja vestlusega „{conversation}“",
+ "Shared with you in a conversation by {owner}" : "„{owner}“ jagas seda sinuga vestluses",
"Share note" : "Jaga märget",
"Show list view" : "Näita loendivaadet",
"Show grid view" : "Näita ruudustikuvaadet",
@@ -279,7 +378,9 @@ OC.L10N.register(
"%s shared a folder with you." : "%s jagas sinuga kausta.",
"Note" : "Märge",
"Select or drop files" : "Vali või lohista failid",
+ "Uploading files" : "Failid on üleslaadimisel",
"Uploaded files:" : "Üleslaaditud failid:",
+ "By uploading files, you agree to the %1$sterms of service%2$s." : "Faile üleslaadides nõustud sa „%2$s“ teenuse „%1$s“ kasutustingimustega.",
"Share not found" : "Jagamist ei leidu",
"Back to %s" : "Tagasi siia: %s",
"Add to your Nextcloud" : "Lisa oma Nextcloudi",
diff --git a/apps/files_sharing/l10n/et_EE.json b/apps/files_sharing/l10n/et_EE.json
index 2463133d818..cf803347569 100644
--- a/apps/files_sharing/l10n/et_EE.json
+++ b/apps/files_sharing/l10n/et_EE.json
@@ -13,6 +13,7 @@
"You removed group {group} from {file}" : "Sa eemaldasid grupi {group} faili {file} jagamisest",
"{actor} shared {file} with group {group}" : "{actor} jagas faili {file} grupiga {group}",
"{actor} removed group {group} from {file}" : "{actor} eemaldas grupi {group} faili {file} jagamisest",
+ "Share for file {file} with group {group} expired" : "Grupile „{group}“ mõeldud jagatud fail „{file}“ aegus",
"Shared as public link" : "Jaga avaliku lingina",
"Removed public link" : "Avalik link on eemaldatud",
"Public link expired" : "Avalik link aegus",
@@ -39,35 +40,55 @@
"{actor} removed share for {user}" : "{actor} eemaldas jagamise kasutajaga {user}",
"Shared by {actor}" : "Jagatud kasutajalt {actor}",
"{actor} removed share" : "{actor} eemaldas jagamise",
+ "Share for {user} expired" : "Kasutajale „{user}“ mõeldud jaosmeedia aegus",
"Share expired" : "Jagamine aegus",
"You shared {file} with {user}" : "Sa jagasid {file} kasutajaga {user}",
"You removed {user} from {file}" : "Sa eemaldasid faili {file} jagamise kasutajaga {user} ",
+ "You removed yourself from {file}" : "Sa eemaldasid end „{file}“ failist",
+ "{actor} removed themselves from {file}" : "„{actor}“ eemaldas end „{file}“ failist",
"{actor} shared {file} with {user}" : "{actor} jagas {file} kasutajaga {user}",
"{actor} removed {user} from {file}" : "{actor} eemaldas {user} jagamise faililt {file}",
"{actor} shared {file} with you" : "{actor} jagas sinuga {file}",
"{actor} removed you from the share named {file}" : "{actor} lõpetas sinuga {file} jagamise",
+ "Share for file {file} with {user} expired" : "Kasutajale „{user}“ mõeldud jagatud fail „{file}“ aegus",
+ "Share for file {file} expired" : "„{file}“ faili jagamine aegus",
"A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Fail või kaust mis on jagatud e-posti või avaliku lingiga <strong>laaditi alla</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Fail või kaust jagati <strong>teisest serverist</strong>",
"Sharing" : "Jagamine",
"A file or folder has been <strong>shared</strong>" : "Fail või kaust on <strong>jagatud</strong>",
"Shared link" : "Jagatud link",
+ "Wrong share ID, share does not exist" : "Jaosmedia vigane tunnus - sellist pole olemas",
"Could not delete share" : "Ei saanud jagamist eemaldada",
"Please specify a file or folder path" : "Palun määra faili või kausta rada",
"Wrong path, file/folder does not exist" : "Vale asukoht faili või kausta pole olemas",
"Could not create share" : "Ei saanud jagamist luua",
+ "Please specify a valid account to share with" : "Palun määra korrektne kasutajakonto, kellega soovid jagada",
"Group sharing is disabled by the administrator" : "Grupiga jagamine on administraatori poolt keelatud",
"Please specify a valid group" : "Palun määra kehtiv grupp",
"Public link sharing is disabled by the administrator" : "Avaliku lingiga jagamine on administraatori poolt keelatud",
+ "Please specify a valid email address" : "Palun määra kehtiv e-posti aadress",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "„%1$s“ jagamine ei õnnestunud, sest server ei luba „%2$s“ tüüpi jagamisi",
+ "Please specify a valid federated account ID" : "Palun määra korrektne kasutaja liitpilves, kellega soovid jagada",
"You cannot share to a Team if the app is not enabled" : "Sa ei saa jagada tiimiga, kui see rakendus pole lubatud",
"Please specify a valid team" : "Palun määratle korrektne tiim",
+ "Sharing %s failed because the back end does not support ScienceMesh shares" : "„%s“ jagamine ei õnnestunud, sest taustateenus ei toeta ScienceMeshi meedia jagamist",
"Unknown share type" : "Tundmatu jagamise tüüp",
"Not a directory" : "Ei ole kaust",
+ "Could not lock node" : "Sõlme ei õnnestunud lukustada",
"Public upload is only possible for publicly shared folders" : "Avalik üleslaadminie on võimalik ainult avalikult jagatud kaustades",
"Share must at least have READ or CREATE permissions" : "jaosmeedial peavad olema vähemalt logemis- ja loomisõigused",
"Public upload disabled by the administrator" : "Avalik üleslaadimine on administraatori poolt keelatud",
"Could not lock path" : "Ei saanud rada lukustada",
+ "no sharing rights on this item" : "selle objekti kontekstis pole jagamisõigusi",
+ "You are not allowed to edit incoming shares" : "Sul pole lubatud vastuvõetud jaosmeediat muuta",
"Wrong or no update parameter given" : "Antud vale või aegunud parameeter",
+ "Invalid date. Format must be YYYY-MM-DD" : "Vigane kuupäev, vorming peab olema YYYY-MM-DD",
+ "No sharing rights on this item" : "Selle objekti kontekstis pole jagamisõigusi",
+ "Invalid share attributes provided: \"%s\"" : "Vigased jagamisatribuudid: „%s“",
+ "You are not allowed to send mail notifications" : "Sul pole lubatud e-postiga teavitusi saata",
+ "No mail notification configured for this share type" : "Selle jagamistüübi kohta pole e-posti teel saadetavat teavitust lisatud",
"Wrong password" : "Vale salasõna",
+ "Error while sending mail notification" : "Viga e-postiga teavituse saatmisel",
"Failed to generate a unique token" : "Ei õnnestunud luua unikaalset tunnusluba",
"This share does not exist or is no longer available" : "See jaosmeedia pole enam olemas või saadaval",
"shared by %s" : "jagas %s",
@@ -76,6 +97,9 @@
"Share API is disabled" : "Jagamise API on keelatud",
"File sharing" : "Faide jagamine",
"Share will expire tomorrow" : "Jagamine aegub homme",
+ "Your share of {node} will expire tomorrow" : "Sinu „{node}“ jaosmeedia aegub homme",
+ "You received {share} as a share by {user}" : "Kasutaja „{user}“ on saatnud sulle „{share}“ jaosmeedia",
+ "You received {share} to group {group} as a share by {user}" : "Kasutaja „{user}“ on saatnud „{group}“ grupile „{share}“ jaosmeedia",
"Accept" : "Nõustu",
"Decline" : "Keeldu",
"Remember to upload the files to %s" : "Ära unusta laadida faile kausta %s",
@@ -83,27 +107,51 @@
"Open \"%s\"" : "Ava „%s“",
"People" : "Inimesed",
"Filter accounts" : "Filtreeri kasutajakontosid",
+ "The request will expire on {date} at midnight and will be password protected." : "Päring aegub {date} keskööl ning on kaitstud salasõnaga.",
+ "The request will expire on {date} at midnight." : "Päring aegub {date} keskööl.",
+ "The request will be password protected." : "Päring on kaitstud salasõnaga.",
+ "When should the request expire?" : "Millal peaks see päring aeguma?",
+ "Set a submission expiration date" : "Määra aegumise kuupäev",
"Expiration date" : "Aegumise kuupäev",
"Select a date" : "Vali kuupäev",
+ "Your administrator has enforced a {count} days expiration policy." : "Sinu serveri peakasutaja on kehtestanud {count}-päevase aegumisreegli.",
+ "What password should be used for the request?" : "Mis salasõna peaks selle päringu puhul kasutama?",
"Set a password" : "Lisa salasõna",
"Password" : "Salasõna",
"Enter a valid password" : "Sisesta korrektne salasõna",
"Generate a new password" : "Loo uus salasõna",
+ "Your administrator has enforced a password protection." : "Sinu serveri peakasutaja on kehtestanud salasõna kasutamise reegli.",
+ "Automatically copying failed, please copy the share link manually" : "Automaatne kopeerimine ei toimi, palun kopeeri jagamislink käsitsi",
"Link copied to clipboard" : "Link on lõikelauale kopeeritud",
"Email already added" : "E-posti aadress on juba lisatud",
"Invalid email address" : "Vigane e-posti aadress",
+ "_The following email address is not valid: {emails}_::_The following email addresses are not valid: {emails}_" : ["Järgnev e-posti aadress pole korrektne: {emails}","Järgnevad e-posti aadressid pole korrektsed: {emails}"],
"_{count} email address already added_::_{count} email addresses already added_" : ["{count} e-posti aadress on juba lisatud","{count} e-posti aadressi on juba lisatud"],
"_{count} email address added_::_{count} email addresses added_" : ["{count} e-posti aadress on lisatud","{count} e-posti aadressi on lisatud"],
+ "You can now share the link below to allow people to upload files to your directory." : "Nüüd saad teistega jagada alltoodud linki ning neil on võimalik faile sinu kausta üles laadida.",
"Share link" : "Jaga link",
"Copy to clipboard" : "Kopeeri lõikepuhvrisse",
"Send link via email" : "Saada link e-kirjaga",
+ "Enter an email address or paste a list" : "Sisesta e-posti aadress või lisa loend",
+ "Remove email" : "Eemalda e-posti aadress",
+ "Select a destination" : "Vali sihtkaust",
"Select" : "Vali",
+ "What are you requesting?" : "Missugust faili soovid saada?",
+ "Request subject" : "Päringu teema",
+ "Birthday party photos, History assignment…" : "Sünnipäevapeo fotod, uurimistöö…",
+ "Where should these files go?" : "Kuhu peaksid need failid sattuma?",
+ "Upload destination" : "Üleslaadimise sihtkaust",
+ "Revert to default" : "Kasuta vaikimisi kausta",
+ "The uploaded files are visible only to you unless you choose to share them." : "Kui sa just neid edasi ei jaga, siis on üleslaaditud failid nähtavad vaid sulle.",
"Add a note" : "Lisa märge",
"Note for recipient" : "Märge saajale",
- "Add a note to help people understand what you are requesting." : "Lisa teise osapoole jaoks märge, mis aitab neil mõista, missugust faili sa temalt soovid.",
+ "Add a note to help people understand what you are requesting." : "Lisa teise osapoole jaoks märge, mis aitab tal mõista, missugust faili sa temalt soovid.",
+ "You can add links, date or any other information that will help the recipient understand what you are requesting." : "Lisa teise osapoole jaoks linke, kuupäevi või muud teavet, mis aitab tal mõista, missugust faili sa temalt soovid.",
"Close" : "Sulge",
"_Send email and close_::_Send {count} emails and close_" : ["Saada e-kiri ja sulge","Saada {count} e-kirja ja sulge"],
"Please select a folder, you cannot share the root directory." : "Palun vali kaust ülaltpool - sa ei saa jagada juurkausta.",
+ "File request created" : "Failipäring on loodud",
+ "_File request created and email sent_::_File request created and {count} emails sent_" : ["Failipäring on loodud ja e-kiri on saadetud","Failipäring on loodud ja {count} e-kirja on saadetud"],
"Error creating the share: {errorMessage}" : "Viga jaosmeedia loomisel: {errorMessage}",
"Error creating the share" : "Viga jaosmeedia loomisel",
"Error sending emails: {errorMessage}" : "Viga e-kirjade saatmisel: {errorMessage}",
@@ -118,6 +166,7 @@
"Close without sending emails" : "Sulge ilma e-kirju saatmata",
"Continue" : "Jätka",
"Error while toggling options" : "Viga valikute sisse/välja lülitamisel",
+ "Accept shares from other accounts and groups by default" : "Aktsepteeri vaikimisi muude kasutajakontode ja rühmade jagamisi automaatselt",
"Choose a default folder for accepted shares" : "Vali vaikimisi kaust jaosmeedia vastuvõtmiseks",
"Invalid path selected" : "Vigane asukoht on valitud",
"Unknown error" : "Tundmatu viga",
@@ -132,8 +181,12 @@
"remote group" : "Kauggrupp",
"guest" : "külaline",
"by {initiator}" : "kasutajalt {initiator}",
+ "Shared with the group {user} by {owner}" : "„{owner}“ jagas seda sinuga ja „{user}“ grupiga",
+ "Shared with the conversation {user} by {owner}" : "„{owner}“ jagas seda vestluses „{user}“ grupiga või kasutajaga",
+ "Shared with {user} by {owner}" : "„{owner}“ jagas seda „{user}“ kasutajaga",
"Open Sharing Details" : "Ava jaosmeedia üksikasjad",
"Added by {initiator}" : "Selle lisas {initiator}",
+ "Via “{folder}”" : "„{folder}“ kausta kaudu",
"Unshare" : "Lõpeta jagamine",
"Cannot copy, please copy the link manually" : "Ei saa kopeerida, palun kopeeri link käsitsi",
"Copy internal link to clipboard" : "Kopeeri sisemine link lõikelauale",
@@ -141,10 +194,16 @@
"Only works for people with access to this file" : "Toimib vaid kasutajate puhul, kellel on ligipääs sellele failile",
"Link copied" : "Link kopeeritud",
"Internal link" : "Sisemine link",
+ "{shareWith} by {initiator}" : "{shareWith} kasutajalt {initiator}",
+ "Shared via link by {initiator}" : "„{initiator}“ jagas seda lingiga",
+ "File request ({label})" : "Failipäring ({label})",
"Share link ({label})" : "Jagamise link ({label})",
+ "Mail share" : "E-posti jagamine",
"Share link ({index})" : "Jagamise link ({index})",
"Create public link" : "Loo avalik link",
+ "Error, please enter proper password and/or expiration date" : "Viga, palun sisesta korrektne salasõna ja/või aegumise kuupäev",
"Error while creating the share" : "Viga jaosmeedia loomisel",
+ "Please enter the following required information before creating the share" : "Enne jaosmeedia loomist palun sisesta järgmine vajalik teave",
"Password protection (enforced)" : "Paroolikaitse (jõustatud)",
"Password protection" : "Password protection",
"Enter a password" : "Enter a password",
@@ -157,17 +216,23 @@
"Generate QR code" : "Loo QR-kood",
"Add another link" : "Lisa veel üks link",
"Create a new share link" : "Loo uus jagamislink",
+ "Quick share options, the current selected is \"{selectedOption}\"" : "Kiirjagamise valikud, hetkel on valitud „{selectedOption}“",
"View only" : "Ainult vaatamine",
"Can edit" : "Võib redigeerida",
+ "Custom permissions" : "Kohandatud õigused",
"Resharing is not allowed" : "Edasijagamine pole lubatud",
"Name or email …" : "Nimi või e-posti aadress…",
"Name, email, or Federated Cloud ID …" : "Nimi, e-posti aadress või liitpilve kasutajatunnus…",
- "Searching …" : "Otsin ...",
+ "Searching …" : "Otsin...",
+ "No elements found." : "Elemente ei leidu.",
+ "Search globally" : "Otsi kõikjalt",
"Guest" : "Külaline",
"Group" : "Grupp",
"Email" : "Epost",
"Team" : "Tiim",
"Talk conversation" : "Talk suhtlus",
+ "Deck board" : "Kanbani tahvel",
+ "ScienceMesh" : "ScienceMesh",
"on {server}" : " {server}",
"Enter external recipients" : "Lisa välised saajad",
"Search for internal recipients" : "Otsi rakendusesiseseid saajaid",
@@ -179,7 +244,9 @@
"View terms of service" : "Vaata kasutustingimusi",
"Terms of service" : "Kasutustingimused",
"Upload files to {folder}" : "Laadi failid üles kausta {folder}",
+ "Submit name" : "Salvesta nimi",
"{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} jagas sinuga kausta.",
+ "To upload files, you need to provide your name first." : "Faili üleslaadimiseks pead esmalt oma nime sisestama.",
"Name" : "Nimi",
"Enter your name" : "Sisesta oma nimi",
"Share with {userName}" : "Jaga kasutajaga {userName}",
@@ -193,7 +260,7 @@
"Save share" : "Salvesta jaosmeedia",
"Read" : "Lugemine",
"Create" : "Lisa",
- "Edit" : "Redigeeri",
+ "Edit" : "Muuda",
"Share" : "Jaga",
"Delete" : "Kustuta",
"Password field cannot be empty" : "Salasõna väli ei saa olla tühi",
@@ -210,6 +277,7 @@
"Set password" : "Määra salasõna",
"Password expires {passwordExpirationTime}" : "Salasõna aegub {passwordExpirationTime}",
"Password expired" : "Salasõna on aegunud",
+ "Video verification" : "Verifitseerimine videoga",
"Expiration date (enforced)" : "Aegumise kuupäev (jõustatud)",
"Set expiration date" : "Määra aegumise kuupäev",
"Hide download" : "Peida allalaaditu",
@@ -218,10 +286,18 @@
"Enter a note for the share recipient" : "Lisa märkus jaosmeedia saajale",
"Show files in grid view" : "Näita faile ruudustikuvaates",
"Delete share" : "Kustuta jagamine",
+ "Others with access" : "Teised, kellel on ligipääs",
+ "No other accounts with access found" : "Teisi ligipääsuga kasutajakontosid ei leidu",
+ "Toggle list of others with access to this directory" : "Näita teisi, kellele on ligipääs sellele kaustale või peida nad",
+ "Toggle list of others with access to this file" : "Näita teisi, kellele on ligipääs sellele failile või peida nad",
+ "Unable to fetch inherited shares" : "Päritud jaosmeedia laadimine ei õnnestu",
"Link shares" : "Jaoslingid",
"Shares" : "Jagamisi",
+ "Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access." : "Kasuta seda jagamismeetodit jagamisel oma organisatsiooni kasutajatega ja tiimidega. Kui kasutajal juba on jaosmeediale ligipääs, kuid ei suuad seda leida, siis lihtsuse mõttes saada talle süsteemisisene jagamislink.",
+ "Share with accounts, teams, federated cloud id" : "Jaga kasutajatega, tiimidega ja liitpilves osalejatega",
"Share with accounts and teams" : "Jaga kasutajate ja tiimidega",
"Email, federated cloud id" : "E-posti aadress, liitpilve kasutajatunnus",
+ "Unable to load the shares list" : "Jaosmeedia loendi laadimine ei õnnestu",
"Expires {relativetime}" : "Aegub {relativetime}",
"this share just expired." : "see jagamine aegus äsja",
"Shared with you by {owner}" : "Jagatud sinuga {owner} poolt",
@@ -231,12 +307,17 @@
"External shares explanation" : "Väliste jaoskaustade selgitus",
"Additional shares" : "Täiendavad jaoskaustad",
"Additional shares explanation" : "Täiendavate jaoskaustade selgitus",
+ "Link to a file" : "Link failile",
+ "_Accept share_::_Accept shares_" : ["Võta jaosmeedia vastu","Võta jaosmeedia vastu"],
"Open in Files" : "Ava failirakenduses",
+ "_Reject share_::_Reject shares_" : ["Keeldu jaosmeediast","Keeldu jaosmeediast"],
+ "_Restore share_::_Restore shares_" : ["Taasta jaosmeedia","Taasta jaosmeedia"],
"Shared" : "Jagatud",
"Shared by {ownerDisplayName}" : "Jagaja: {ownerDisplayName}",
"Shared multiple times with different people" : "Jagatud mitu korda eri kasutajate poolt",
"Show sharing options" : "Näita jagamise valikuid",
"Shared with others" : "Teistega jagatud",
+ "Create file request" : "Koosta failipäring",
"Upload files to {foldername}" : "Laadi failid üles kausta {foldername}",
"Public file share" : "Avalikud jaosfailid",
"Publicly shared file." : "Avalikult jagatud fail.",
@@ -246,19 +327,34 @@
"Publicly shared files." : "Avalikult jagatud failid.",
"No files" : "Faile pole",
"Files and folders shared with you will show up here" : "Sinuga jagatud failid ja kaustad on siin nähtavad",
+ "Overview of shared files." : "Jagatud failide ülevaade.",
"No shares" : "Jagamisi pole",
+ "Files and folders you shared or have been shared with you will show up here" : "Sinu poolt jagatud ning sinuga jagatud failid ja kaustad saavad olema nähtavad siin",
"Shared with you" : "Sinuga jagatud",
+ "List of files that are shared with you." : "Sinuga jagatud failide loend.",
"Nothing shared with you yet" : "Sinuga pole veel midagi jagatud",
+ "Files and folders others shared with you will show up here" : "Sinuga jagatud failid ja kaustad saavad olema nähtavad siin",
+ "List of files that you shared with others." : "Sinu poolt teisega jagatud failide loend.",
"Nothing shared yet" : "Midagi pole veel jagatud",
+ "Files and folders you shared will show up here" : "Sinu poolt jagatud failid ja kaustad saavad olema nähtavad siin",
"Shared by link" : "Jagatud lingiga",
+ "List of files that are shared by link." : "Lingiga jagatud failide loend.",
"No shared links" : "Jagatud linke pole",
+ "Files and folders you shared by link will show up here" : "Sinu poolt lingiga jagatud failid ja kaustad saavad olema nähtavad siin",
"File requests" : "Failipäringud",
"List of file requests." : "Failipäringute loend.",
"No file requests" : "Failipäringuid ei leidu",
+ "File requests you have created will show up here" : "Sinu loodud failipäringus saavad olema nähtavad siin.",
"Deleted shares" : "Kustutatud jagamised",
+ "List of shares you left." : "Jaosmeedia loend, kust sa oled lahkunud.",
"No deleted shares" : "Kustutatud jagamisi pole",
+ "Shares you have left will show up here" : "Jaosmeedia loend, kust sa oled lahkunud, saab olema nähtav siin",
"Pending shares" : "Ootel jagamised",
+ "List of unapproved shares." : "Vastuvõtmata jaosmeedia loend.",
"No pending shares" : "Ootel jagamisi pole",
+ "Shares you have received but not approved will show up here" : "Jaosmeedia, mille oled saanud, kuid pole nõustunud, saab olema nähtav siin",
+ "Error updating the share: {errorMessage}" : "Viga jaosmeedia uuendamisel: {errorMessage}",
+ "Error updating the share" : "Viga jaosmeedia uuendamisel",
"Could not update share" : "Jaosmeedia andmete uuendamine ei õnnestunud",
"Share saved" : "Jaosmeedia andmed on salvestatud",
"Share expiry date saved" : "Jaosmeedia aegumise kuupäev on salvestatud",
@@ -270,6 +366,9 @@
"Shared by" : "Jagas",
"Shared with" : "Jagatud",
"Shared with you and the group {group} by {owner}" : "Jagatud sinu ja grupiga {group} {owner} poolt",
+ "Shared with you and {circle} by {owner}" : "„{owner}“ jagas seda sinuga ja „{circle}“ tiimiga",
+ "Shared with you and the conversation {conversation} by {owner}" : "„{owner}“ jagas seda sinuga ja vestlusega „{conversation}“",
+ "Shared with you in a conversation by {owner}" : "„{owner}“ jagas seda sinuga vestluses",
"Share note" : "Jaga märget",
"Show list view" : "Näita loendivaadet",
"Show grid view" : "Näita ruudustikuvaadet",
@@ -277,7 +376,9 @@
"%s shared a folder with you." : "%s jagas sinuga kausta.",
"Note" : "Märge",
"Select or drop files" : "Vali või lohista failid",
+ "Uploading files" : "Failid on üleslaadimisel",
"Uploaded files:" : "Üleslaaditud failid:",
+ "By uploading files, you agree to the %1$sterms of service%2$s." : "Faile üleslaadides nõustud sa „%2$s“ teenuse „%1$s“ kasutustingimustega.",
"Share not found" : "Jagamist ei leidu",
"Back to %s" : "Tagasi siia: %s",
"Add to your Nextcloud" : "Lisa oma Nextcloudi",
diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js
index e2fe62133fb..5563407602d 100644
--- a/apps/files_sharing/l10n/pt_BR.js
+++ b/apps/files_sharing/l10n/pt_BR.js
@@ -313,6 +313,7 @@ OC.L10N.register(
"Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access." : "Use este método para compartilhar arquivos com pessoas ou equipes dentro da sua organização. Se o destinatário já tiver acesso ao compartilhamento, mas não conseguir encontrá-lo, você pode enviar o link de compartilhamento interno para facilitar o acesso.",
"Use this method to share files with individuals or organizations outside your organization. Files and folders can be shared via public share links and email addresses. You can also share to other Nextcloud accounts hosted on different instances using their federated cloud ID." : "Use este método para compartilhar arquivos com indivíduos ou organizações fora da sua organização. Arquivos e pastas podem ser compartilhados por meio de links públicos de compartilhamento e endereços de e-mail. Você também pode compartilhar com outras contas Nextcloud hospedadas em instâncias diferentes usando o ID de nuvem federada delas.",
"Shares that are not part of the internal or external shares. This can be shares from apps or other sources." : "Compartilhamentos que não fazem parte dos compartilhamentos internos ou externos. Podem ser compartilhamentos de aplicativos ou outras fontes.",
+ "Share with accounts, teams, federated cloud id" : "Compartilhar com contas, equipes, ID de nuvem federada",
"Share with accounts and teams" : "Compartilhar com contas e equipes",
"Email, federated cloud id" : "E-mail, ID de nuvem federada",
"Unable to load the shares list" : "Não foi possível carregar a lista de compartilhamentos",
diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json
index d4ab34aa8df..6963e695841 100644
--- a/apps/files_sharing/l10n/pt_BR.json
+++ b/apps/files_sharing/l10n/pt_BR.json
@@ -311,6 +311,7 @@
"Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access." : "Use este método para compartilhar arquivos com pessoas ou equipes dentro da sua organização. Se o destinatário já tiver acesso ao compartilhamento, mas não conseguir encontrá-lo, você pode enviar o link de compartilhamento interno para facilitar o acesso.",
"Use this method to share files with individuals or organizations outside your organization. Files and folders can be shared via public share links and email addresses. You can also share to other Nextcloud accounts hosted on different instances using their federated cloud ID." : "Use este método para compartilhar arquivos com indivíduos ou organizações fora da sua organização. Arquivos e pastas podem ser compartilhados por meio de links públicos de compartilhamento e endereços de e-mail. Você também pode compartilhar com outras contas Nextcloud hospedadas em instâncias diferentes usando o ID de nuvem federada delas.",
"Shares that are not part of the internal or external shares. This can be shares from apps or other sources." : "Compartilhamentos que não fazem parte dos compartilhamentos internos ou externos. Podem ser compartilhamentos de aplicativos ou outras fontes.",
+ "Share with accounts, teams, federated cloud id" : "Compartilhar com contas, equipes, ID de nuvem federada",
"Share with accounts and teams" : "Compartilhar com contas e equipes",
"Email, federated cloud id" : "E-mail, ID de nuvem federada",
"Unable to load the shares list" : "Não foi possível carregar a lista de compartilhamentos",
diff --git a/apps/files_sharing/l10n/sr.js b/apps/files_sharing/l10n/sr.js
index 00614ea729d..c49b3b797cc 100644
--- a/apps/files_sharing/l10n/sr.js
+++ b/apps/files_sharing/l10n/sr.js
@@ -313,6 +313,7 @@ OC.L10N.register(
"Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access." : "Употребите ову методу да фајлове делите да појединцима или тимовима унутар своје организације. Ако прималац већ има приступ дељењу, али не може да га лоцира, можете му послати интерни линк дељења тако да може лако да му приступи.",
"Use this method to share files with individuals or organizations outside your organization. Files and folders can be shared via public share links and email addresses. You can also share to other Nextcloud accounts hosted on different instances using their federated cloud ID." : "Употребите ову методу да фајлове делите са појединцима или организацијама ван своје организације. Фајлови и фолдери могу да се деле путем јавних линкова дељења и и-мејл адресама. Такође можете да делите осталим Nextcloud налозима који се хостују на другим инстанцама користећи њихов ID здруженог облака.",
"Shares that are not part of the internal or external shares. This can be shares from apps or other sources." : "Дељења која нису део интерних или спољних дељења. Ово могу бити дељења из апликација или осталих извора.",
+ "Share with accounts, teams, federated cloud id" : "Дели са налозима, тимовима, id здруженог облака",
"Share with accounts and teams" : "Дељење са налозима и тимовима",
"Email, federated cloud id" : "И-мејл, ID здруженог облака",
"Unable to load the shares list" : "Неуспело учитавање листе дељења",
diff --git a/apps/files_sharing/l10n/sr.json b/apps/files_sharing/l10n/sr.json
index 447cf15b44f..6c8d13d3248 100644
--- a/apps/files_sharing/l10n/sr.json
+++ b/apps/files_sharing/l10n/sr.json
@@ -311,6 +311,7 @@
"Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access." : "Употребите ову методу да фајлове делите да појединцима или тимовима унутар своје организације. Ако прималац већ има приступ дељењу, али не може да га лоцира, можете му послати интерни линк дељења тако да може лако да му приступи.",
"Use this method to share files with individuals or organizations outside your organization. Files and folders can be shared via public share links and email addresses. You can also share to other Nextcloud accounts hosted on different instances using their federated cloud ID." : "Употребите ову методу да фајлове делите са појединцима или организацијама ван своје организације. Фајлови и фолдери могу да се деле путем јавних линкова дељења и и-мејл адресама. Такође можете да делите осталим Nextcloud налозима који се хостују на другим инстанцама користећи њихов ID здруженог облака.",
"Shares that are not part of the internal or external shares. This can be shares from apps or other sources." : "Дељења која нису део интерних или спољних дељења. Ово могу бити дељења из апликација или осталих извора.",
+ "Share with accounts, teams, federated cloud id" : "Дели са налозима, тимовима, id здруженог облака",
"Share with accounts and teams" : "Дељење са налозима и тимовима",
"Email, federated cloud id" : "И-мејл, ID здруженог облака",
"Unable to load the shares list" : "Неуспело учитавање листе дељења",
diff --git a/apps/files_sharing/l10n/zh_CN.js b/apps/files_sharing/l10n/zh_CN.js
index f358f78ff36..cebdbc5c89d 100644
--- a/apps/files_sharing/l10n/zh_CN.js
+++ b/apps/files_sharing/l10n/zh_CN.js
@@ -313,6 +313,7 @@ OC.L10N.register(
"Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access." : "使用此方法与组织内的个人或团队共享文件。如果接收者已经可以访问共享,但找不到它,您可以向他们发送内部共享链接以便于访问。",
"Use this method to share files with individuals or organizations outside your organization. Files and folders can be shared via public share links and email addresses. You can also share to other Nextcloud accounts hosted on different instances using their federated cloud ID." : "使用此方法与组织外部的个人或组织共享文件。文件和文件夹可以通过公开共享链接和电子邮件地址共享。您还可以使用其联合云 ID 共享给托管在不同实例上的其他 Nextcloud 账号。",
"Shares that are not part of the internal or external shares. This can be shares from apps or other sources." : "不属于内部或外部共享的共享,这可以是来自应用或其他来源的共享。",
+ "Share with accounts, teams, federated cloud id" : "与账号、团队、联合云 ID 共享",
"Share with accounts and teams" : "与账号和团队共享",
"Email, federated cloud id" : "电子邮件、联合云 ID",
"Unable to load the shares list" : "无法加载共享列表",
diff --git a/apps/files_sharing/l10n/zh_CN.json b/apps/files_sharing/l10n/zh_CN.json
index adea1e04413..1b1538c8b59 100644
--- a/apps/files_sharing/l10n/zh_CN.json
+++ b/apps/files_sharing/l10n/zh_CN.json
@@ -311,6 +311,7 @@
"Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access." : "使用此方法与组织内的个人或团队共享文件。如果接收者已经可以访问共享,但找不到它,您可以向他们发送内部共享链接以便于访问。",
"Use this method to share files with individuals or organizations outside your organization. Files and folders can be shared via public share links and email addresses. You can also share to other Nextcloud accounts hosted on different instances using their federated cloud ID." : "使用此方法与组织外部的个人或组织共享文件。文件和文件夹可以通过公开共享链接和电子邮件地址共享。您还可以使用其联合云 ID 共享给托管在不同实例上的其他 Nextcloud 账号。",
"Shares that are not part of the internal or external shares. This can be shares from apps or other sources." : "不属于内部或外部共享的共享,这可以是来自应用或其他来源的共享。",
+ "Share with accounts, teams, federated cloud id" : "与账号、团队、联合云 ID 共享",
"Share with accounts and teams" : "与账号和团队共享",
"Email, federated cloud id" : "电子邮件、联合云 ID",
"Unable to load the shares list" : "无法加载共享列表",
diff --git a/apps/files_sharing/l10n/zh_TW.js b/apps/files_sharing/l10n/zh_TW.js
index dc819a4d854..7638f105d88 100644
--- a/apps/files_sharing/l10n/zh_TW.js
+++ b/apps/files_sharing/l10n/zh_TW.js
@@ -313,6 +313,7 @@ OC.L10N.register(
"Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access." : "使用此方法與組織內的個人或團隊分享檔案。如果收件者已經可以存取分享但找不到,您可以將內部分享連結傳送給他們,以方便存取。",
"Use this method to share files with individuals or organizations outside your organization. Files and folders can be shared via public share links and email addresses. You can also share to other Nextcloud accounts hosted on different instances using their federated cloud ID." : "使用此方法與組織外的個人或組織分享檔案。檔案與資料夾可以透過公開的分享連結與電子郵件地址來分享。您也可以使用其他 Nextcloud 帳號的聯邦雲端 ID,將檔案分享給託管在不同站台上的其他 Nextcloud 帳號。",
"Shares that are not part of the internal or external shares. This can be shares from apps or other sources." : "不屬於內部或外部分享的分享。這可能是來自應用程式或其他來源的分享。",
+ "Share with accounts, teams, federated cloud id" : "與帳號、團隊、聯邦雲端ID 分享",
"Share with accounts and teams" : "與帳號及團隊分享",
"Email, federated cloud id" : "電子郵件、聯邦雲端 ID",
"Unable to load the shares list" : "無法載入分享列表",
diff --git a/apps/files_sharing/l10n/zh_TW.json b/apps/files_sharing/l10n/zh_TW.json
index 619163d3c12..efe843664b8 100644
--- a/apps/files_sharing/l10n/zh_TW.json
+++ b/apps/files_sharing/l10n/zh_TW.json
@@ -311,6 +311,7 @@
"Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access." : "使用此方法與組織內的個人或團隊分享檔案。如果收件者已經可以存取分享但找不到,您可以將內部分享連結傳送給他們,以方便存取。",
"Use this method to share files with individuals or organizations outside your organization. Files and folders can be shared via public share links and email addresses. You can also share to other Nextcloud accounts hosted on different instances using their federated cloud ID." : "使用此方法與組織外的個人或組織分享檔案。檔案與資料夾可以透過公開的分享連結與電子郵件地址來分享。您也可以使用其他 Nextcloud 帳號的聯邦雲端 ID,將檔案分享給託管在不同站台上的其他 Nextcloud 帳號。",
"Shares that are not part of the internal or external shares. This can be shares from apps or other sources." : "不屬於內部或外部分享的分享。這可能是來自應用程式或其他來源的分享。",
+ "Share with accounts, teams, federated cloud id" : "與帳號、團隊、聯邦雲端ID 分享",
"Share with accounts and teams" : "與帳號及團隊分享",
"Email, federated cloud id" : "電子郵件、聯邦雲端 ID",
"Unable to load the shares list" : "無法載入分享列表",
diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php
index 81ead3c4978..446db0b8fcc 100644
--- a/apps/files_sharing/lib/Controller/ShareAPIController.php
+++ b/apps/files_sharing/lib/Controller/ShareAPIController.php
@@ -2118,6 +2118,8 @@ class ShareAPIController extends OCSController {
$hideDownload = $hideDownload && $originalShare->getHideDownload();
// allow download if already allowed by previous share or when the current share allows downloading
$canDownload = $canDownload || $inheritedAttributes === null || $inheritedAttributes->getAttribute('permissions', 'download') !== false;
+ } elseif ($node->getStorage()->instanceOfStorage(Storage::class)) {
+ $canDownload = true; // in case of federation storage, we can expect the download to be activated by default
}
}
diff --git a/apps/files_sharing/lib/SharedStorage.php b/apps/files_sharing/lib/SharedStorage.php
index dfd4854de1f..1014b0d37d9 100644
--- a/apps/files_sharing/lib/SharedStorage.php
+++ b/apps/files_sharing/lib/SharedStorage.php
@@ -555,4 +555,9 @@ class SharedStorage extends Jail implements LegacyISharedStorage, ISharedStorage
$this->init();
return parent::getUnjailedPath($path);
}
+
+ public function getDirectDownload(string $path): array|false {
+ // disable direct download for shares
+ return [];
+ }
}
diff --git a/apps/settings/l10n/lv.js b/apps/settings/l10n/lv.js
index a3181eb53ef..97e8714b076 100644
--- a/apps/settings/l10n/lv.js
+++ b/apps/settings/l10n/lv.js
@@ -18,7 +18,7 @@ OC.L10N.register(
"You changed your password" : "Tu nomainīji savu paroli",
"You renamed app password \"{token}\" to \"{newToken}\"" : "Tu pārdēvēji lietotnes paroli \"{token}\" par \"{newToken}\"",
"Security" : "Drošība",
- "You successfully logged in using two-factor authentication (%1$s)" : "Veiksmīga pieteikšanās ar divpakāpju autentifikāciju (%1$s)",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Sekmīga pieteikšanās ar divpakāpju autentificēšanos (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Pieteikšanās mēģinājums ar divpakāpju autentifikāciju neizdevās (%1$s)",
"Settings" : "Iestatījumi",
"Could not update app." : "Lietotni nevarēja atjaunināt.",
diff --git a/apps/settings/l10n/lv.json b/apps/settings/l10n/lv.json
index c2ca7aeaf55..316388bfc1e 100644
--- a/apps/settings/l10n/lv.json
+++ b/apps/settings/l10n/lv.json
@@ -16,7 +16,7 @@
"You changed your password" : "Tu nomainīji savu paroli",
"You renamed app password \"{token}\" to \"{newToken}\"" : "Tu pārdēvēji lietotnes paroli \"{token}\" par \"{newToken}\"",
"Security" : "Drošība",
- "You successfully logged in using two-factor authentication (%1$s)" : "Veiksmīga pieteikšanās ar divpakāpju autentifikāciju (%1$s)",
+ "You successfully logged in using two-factor authentication (%1$s)" : "Sekmīga pieteikšanās ar divpakāpju autentificēšanos (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Pieteikšanās mēģinājums ar divpakāpju autentifikāciju neizdevās (%1$s)",
"Settings" : "Iestatījumi",
"Could not update app." : "Lietotni nevarēja atjaunināt.",
diff --git a/apps/settings/l10n/ru.js b/apps/settings/l10n/ru.js
index 15da100a59f..f6a2ba501b8 100644
--- a/apps/settings/l10n/ru.js
+++ b/apps/settings/l10n/ru.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"Set your password" : "Задайте свой пароль",
"Go to %s" : "Перейти к %s",
"Install Client" : "Установить программу-клиент",
+ "Logged in account must be a sub admin" : "Зарегистрированная учетная запись должна быть субадминистратором",
"Apps" : "Приложения",
"Personal" : "Параметры пользователя",
"Administration" : "Параметры сервера",
@@ -163,6 +164,7 @@ OC.L10N.register(
"Database missing indices" : "В базе данных отсутствуют некоторые индексы",
"Missing indices:" : "Отсутствующие индексы:",
"\"%s\" in table \"%s\"" : "«%s» в таблице «%s»",
+ "Detected some missing optional indices. Occasionally new indices are added (by Nextcloud or installed applications) to improve database performance. Adding indices can sometimes take awhile and temporarily hurt performance so this is not done automatically during upgrades. Once the indices are added, queries to those tables should be faster. Use the command `occ db:add-missing-indices` to add them." : "Обнаружены некоторые отсутствующие необязательные индексы. Иногда добавляются новые индексы (с помощью Nextcloud или установленных приложений) для повышения производительности базы данных. Иногда добавление индексов может занимать некоторое время и временно снижать производительность, поэтому это не выполняется автоматически во время обновлений. После добавления индексов запросы к этим таблицам должны выполняться быстрее. Используйте команду `occ db:add-missing-indices`, чтобы добавить их.",
"Database missing primary keys" : "В базе данных отсутствуют первичные ключи",
"Missing primary key on table \"%s\"." : "В таблице «%s» отсутствует первичный ключ.",
"The database is missing some primary keys. Due to the fact that adding primary keys on big tables could take some time they were not added automatically. By running \"occ db:add-missing-primary-keys\" those missing primary keys could be added manually while the instance keeps running." : "В базе данных отсутствуют некоторые первичные ключи. Поскольку добавление первичных ключей в большие таблицы могло занять некоторое время, они не добавлялись автоматически. Запустив команду «occ db: add-missing-primary-keys», эти недостающие первичные ключи можно добавить вручную, пока экземпляр продолжает работать.",
@@ -204,6 +206,8 @@ OC.L10N.register(
"Disabled" : "Отключено",
"The old server-side-encryption format is enabled. We recommend disabling this." : "Задействован устаревший режим шифрования файлов на стороне сервера. Рекомендуется отключить такое шифрование.",
"Logging level" : "Уровень системного журнала",
+ "The %1$s configuration option must be a valid integer value." : "Параметр конфигурации %1$s должен быть допустимым целым значением.",
+ "The logging level is set to debug level. Use debug level only when you have a problem to diagnose, and then reset your log level to a less-verbose level as it outputs a lot of information, and can affect your server performance." : "Уровень ведения журнала установлен на уровень отладки. Используйте уровень отладки только в том случае, если необходимо диагностировать проблему, а затем сбросьте уровень ведения журнала до менее подробного, поскольку при этом выводится много информации и это может повлиять на производительность сервера.",
"Logging level configured correctly." : "Уровень ведения системного журнала настроен правильно.",
"Maintenance window start" : "Начало окна обслуживания",
"Server has no maintenance window start time configured. This means resource intensive daily background jobs will also be executed during your main usage time. We recommend to set it to a time of low usage, so users are less impacted by the load caused from these heavy tasks." : "Не настроено время начала окна обслуживания. Это означает, что ресурсоемкие ежедневные фоновые задачи будут выполняться во время основного использования. Рекомендуется установить время в период низкой активности, чтобы снизить влияние выполнения ресурсоемких процедур на пользователей.",
@@ -254,6 +258,7 @@ OC.L10N.register(
"PHP modules" : "Модули PHP",
"increases language translation performance and fixes sorting of non-ASCII characters" : "улучшает производительность при использовании переводов и исправляет сортировку не-ASCII символов",
"for Argon2 for password hashing" : "для использования функции Argon2 для хэширования паролей",
+ "required for SFTP storage and recommended for WebAuthn performance" : "требуется для хранения данных по протоколу SFTP и рекомендуется для повышения производительности WebAuthn",
"for picture rotation in server and metadata extraction in the Photos app" : "для поворота изображений и извлечения метаданных в приложении Фотографии",
"This instance is missing some required PHP modules. It is required to install them: %s." : "На этом сервере отсутствуют некоторые рекомендуемые модули PHP. Рекомендуется установить: %s.",
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them:\n%s" : "На этом сервере не установлены некоторые рекомендуемые модули PHP. Для улучшения производительности и совместимости рекомендуется установить следующие модули:\n%s",
@@ -423,11 +428,14 @@ OC.L10N.register(
"No apps found for your version" : "Приложений, совместимых с установленной версией Nextcloud, не найдено",
"_%n app has an update available_::_%n apps have an update available_" : ["Возможно обновить %n приложение.","Возможно обновить %n приложения.","Возможно обновить %n приложений.","Возможно обновить %n приложения."],
"_Update_::_Update all_" : ["Обновить","Обновить все","Обновить все","Обновить все"],
+ "Failed to load groups" : "Не удалось загрузить группы",
"Failed to create group" : "Не удалось создать группу",
"Creating group…" : "Создание группы…",
"Create group" : "Создать группу",
"Group name" : "Название группы",
"Please enter a valid group name" : "Пожалуйста, введите допустимое название группы",
+ "Search groups…" : "Группы поиска…",
+ "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "Список групп. Этот список не полностью заполнен из соображений производительности. Группы будут загружаться по мере навигации или поиска по списку.",
"Loading groups…" : "Загрузка групп…",
"Could not load app discover section" : "Не удалось загрузить раздел «Центр приложений»",
"Could not render element" : "Не удалось подготовить объект к показу",
@@ -568,6 +576,7 @@ OC.L10N.register(
"Confirm enabling encryption" : "Подтвердите включение шифрования",
"Please read carefully before activating server-side encryption:" : "Перед включением шифрования на стороне сервера, внимательно прочтите следующее:",
"Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "После включения шифрования, все файлы, отправленные с этого момента на сервер, будут сохраняться в зашифрованном виде. Отключить шифрование в дальнейшем возможно только в случае, если использованный модуль шифрования поддерживает такую функцию, а также при соблюдении всех дополнительных условий (например, настроен ключ восстановления).",
+ "By default a master key for the whole instance will be generated. Please check if that level of access is compliant with your needs." : "По умолчанию будет сгенерирован главный ключ для всего экземпляра. Проверьте, соответствует ли этот уровень доступа вашим потребностям.",
"Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Шифрование само по себе не гарантирует безопасность системы. В документации приведена дополнительная информация о работе приложения «Шифрование» и примеры его использования.",
"Be aware that encryption always increases the file size." : "Шифрование всегда увеличивает размер файлов.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Регулярно создавайте резервные копии данных. При использовании шифрования сохраняйте не только данные, но и ключи.",
@@ -668,6 +677,7 @@ OC.L10N.register(
"Set line manager" : "Выбрать руководителя",
"Account name will be autogenerated" : "Имя учётной записи будет создано автоматически",
"Account name (required)" : "Имя учётной записи (обязательно)",
+ "Failed to search groups" : "Не удалось выполнить поиск групп",
"New account" : "Новая учётная запись",
"Display name" : "Отображаемое имя",
"Either password or email is required" : "Также обязательны к заполнению пароль или эл.почта",
@@ -707,12 +717,16 @@ OC.L10N.register(
"Remote wipe of devices" : "Удаление данных с устройств",
"Wipe {userid}'s devices" : "Удалить данные с устройств пользователя {userid}",
"Wiped {userid}'s devices" : "Удалить данные с устройств пользователя {userid}",
+ "Failed to load groups with details" : "Не удалось загрузить группы с подробностями",
+ "Failed to load sub admin groups with details" : "Не удалось загрузить группы подчиненных администраторов с подробностями",
"Failed to update line manager" : "Не удалось обновить линейного менеджера",
"Fully delete {userid}'s account including all their personal files, app data, etc." : "Полностью удалить все данные пользователя {userid}, в том числе учётную запись, личные файлы и данные приложений.",
"Account deletion" : "Удаление учётной записи",
"Delete {userid}'s account" : "Удалить учётную запись пользователя {userid}",
"Display name was successfully changed" : "Отображаемое имя было успешно изменено",
+ "Password can't be empty" : "Пароль не может быть пустым",
"Password was successfully changed" : "Пароль был успешно изменен",
+ "Email can't be empty" : "Электронная почта не может быть пустой",
"Email was successfully changed" : "Эл. почта была успешно изменена",
"Welcome mail sent!" : "Приглашение отправлено!",
"Loading account …" : "Загрузка сведений об учётной записи…",
@@ -737,6 +751,7 @@ OC.L10N.register(
"Sorting" : "Сортировка",
"The system config enforces sorting the groups by name. This also disables showing the member count." : "Системная конфигурация обеспечивает сортировку групп по названию. Это также отключает отображение количества участников.",
"Group list sorting" : "Сортировка списка групп",
+ "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list." : "Сортировка применяется только к текущим загруженным группам по соображениям производительности. Группы будут загружаться по мере навигации или поиска по списку.",
"By member count" : "По количеству участников",
"By name" : "По имени",
"Send email" : "Отправить сообщение",
@@ -916,6 +931,7 @@ OC.L10N.register(
"Active accounts" : "Активные учётные записи",
"Follow us on Twitter" : "Следите за нашими новостями в Twitter",
"To allow this check to run you have to make sure that your Web server can connect to itself. Therefore it must be able to resolve and connect to at least one of its `trusted_domains` or the `overwrite.cli.url`. This failure may be the result of a server-side DNS mismatch or outbound firewall rule." : "Чтобы разрешить эту проверку, вам нужно убедиться, что ваш веб-сервер может подключаться к себе. Поэтому он должен иметь возможность разрешать и подключаться по крайней мере к одному из своих `trusted_domains` или `overwrite.cli.url`. Эта ошибка может быть результатом несоответствия DNS на стороне сервера или исходящего правила брандмауэра.",
- "PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Обнаружена версия PostgreSQL \"%s\". Для лучшей производительности, стабильности и функциональности с этой версией Nextcloud рекомендуется использовать PostgreSQL >=12 и <=16."
+ "PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Обнаружена версия PostgreSQL \"%s\". Для лучшей производительности, стабильности и функциональности с этой версией Nextcloud рекомендуется использовать PostgreSQL >=12 и <=16.",
+ "Failed to load subadmin groups with details" : "Не удалось загрузить группы субадминистраторов с подробностями"
},
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/apps/settings/l10n/ru.json b/apps/settings/l10n/ru.json
index aff4192148f..0fecb762e22 100644
--- a/apps/settings/l10n/ru.json
+++ b/apps/settings/l10n/ru.json
@@ -102,6 +102,7 @@
"Set your password" : "Задайте свой пароль",
"Go to %s" : "Перейти к %s",
"Install Client" : "Установить программу-клиент",
+ "Logged in account must be a sub admin" : "Зарегистрированная учетная запись должна быть субадминистратором",
"Apps" : "Приложения",
"Personal" : "Параметры пользователя",
"Administration" : "Параметры сервера",
@@ -161,6 +162,7 @@
"Database missing indices" : "В базе данных отсутствуют некоторые индексы",
"Missing indices:" : "Отсутствующие индексы:",
"\"%s\" in table \"%s\"" : "«%s» в таблице «%s»",
+ "Detected some missing optional indices. Occasionally new indices are added (by Nextcloud or installed applications) to improve database performance. Adding indices can sometimes take awhile and temporarily hurt performance so this is not done automatically during upgrades. Once the indices are added, queries to those tables should be faster. Use the command `occ db:add-missing-indices` to add them." : "Обнаружены некоторые отсутствующие необязательные индексы. Иногда добавляются новые индексы (с помощью Nextcloud или установленных приложений) для повышения производительности базы данных. Иногда добавление индексов может занимать некоторое время и временно снижать производительность, поэтому это не выполняется автоматически во время обновлений. После добавления индексов запросы к этим таблицам должны выполняться быстрее. Используйте команду `occ db:add-missing-indices`, чтобы добавить их.",
"Database missing primary keys" : "В базе данных отсутствуют первичные ключи",
"Missing primary key on table \"%s\"." : "В таблице «%s» отсутствует первичный ключ.",
"The database is missing some primary keys. Due to the fact that adding primary keys on big tables could take some time they were not added automatically. By running \"occ db:add-missing-primary-keys\" those missing primary keys could be added manually while the instance keeps running." : "В базе данных отсутствуют некоторые первичные ключи. Поскольку добавление первичных ключей в большие таблицы могло занять некоторое время, они не добавлялись автоматически. Запустив команду «occ db: add-missing-primary-keys», эти недостающие первичные ключи можно добавить вручную, пока экземпляр продолжает работать.",
@@ -202,6 +204,8 @@
"Disabled" : "Отключено",
"The old server-side-encryption format is enabled. We recommend disabling this." : "Задействован устаревший режим шифрования файлов на стороне сервера. Рекомендуется отключить такое шифрование.",
"Logging level" : "Уровень системного журнала",
+ "The %1$s configuration option must be a valid integer value." : "Параметр конфигурации %1$s должен быть допустимым целым значением.",
+ "The logging level is set to debug level. Use debug level only when you have a problem to diagnose, and then reset your log level to a less-verbose level as it outputs a lot of information, and can affect your server performance." : "Уровень ведения журнала установлен на уровень отладки. Используйте уровень отладки только в том случае, если необходимо диагностировать проблему, а затем сбросьте уровень ведения журнала до менее подробного, поскольку при этом выводится много информации и это может повлиять на производительность сервера.",
"Logging level configured correctly." : "Уровень ведения системного журнала настроен правильно.",
"Maintenance window start" : "Начало окна обслуживания",
"Server has no maintenance window start time configured. This means resource intensive daily background jobs will also be executed during your main usage time. We recommend to set it to a time of low usage, so users are less impacted by the load caused from these heavy tasks." : "Не настроено время начала окна обслуживания. Это означает, что ресурсоемкие ежедневные фоновые задачи будут выполняться во время основного использования. Рекомендуется установить время в период низкой активности, чтобы снизить влияние выполнения ресурсоемких процедур на пользователей.",
@@ -252,6 +256,7 @@
"PHP modules" : "Модули PHP",
"increases language translation performance and fixes sorting of non-ASCII characters" : "улучшает производительность при использовании переводов и исправляет сортировку не-ASCII символов",
"for Argon2 for password hashing" : "для использования функции Argon2 для хэширования паролей",
+ "required for SFTP storage and recommended for WebAuthn performance" : "требуется для хранения данных по протоколу SFTP и рекомендуется для повышения производительности WebAuthn",
"for picture rotation in server and metadata extraction in the Photos app" : "для поворота изображений и извлечения метаданных в приложении Фотографии",
"This instance is missing some required PHP modules. It is required to install them: %s." : "На этом сервере отсутствуют некоторые рекомендуемые модули PHP. Рекомендуется установить: %s.",
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them:\n%s" : "На этом сервере не установлены некоторые рекомендуемые модули PHP. Для улучшения производительности и совместимости рекомендуется установить следующие модули:\n%s",
@@ -421,11 +426,14 @@
"No apps found for your version" : "Приложений, совместимых с установленной версией Nextcloud, не найдено",
"_%n app has an update available_::_%n apps have an update available_" : ["Возможно обновить %n приложение.","Возможно обновить %n приложения.","Возможно обновить %n приложений.","Возможно обновить %n приложения."],
"_Update_::_Update all_" : ["Обновить","Обновить все","Обновить все","Обновить все"],
+ "Failed to load groups" : "Не удалось загрузить группы",
"Failed to create group" : "Не удалось создать группу",
"Creating group…" : "Создание группы…",
"Create group" : "Создать группу",
"Group name" : "Название группы",
"Please enter a valid group name" : "Пожалуйста, введите допустимое название группы",
+ "Search groups…" : "Группы поиска…",
+ "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "Список групп. Этот список не полностью заполнен из соображений производительности. Группы будут загружаться по мере навигации или поиска по списку.",
"Loading groups…" : "Загрузка групп…",
"Could not load app discover section" : "Не удалось загрузить раздел «Центр приложений»",
"Could not render element" : "Не удалось подготовить объект к показу",
@@ -566,6 +574,7 @@
"Confirm enabling encryption" : "Подтвердите включение шифрования",
"Please read carefully before activating server-side encryption:" : "Перед включением шифрования на стороне сервера, внимательно прочтите следующее:",
"Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "После включения шифрования, все файлы, отправленные с этого момента на сервер, будут сохраняться в зашифрованном виде. Отключить шифрование в дальнейшем возможно только в случае, если использованный модуль шифрования поддерживает такую функцию, а также при соблюдении всех дополнительных условий (например, настроен ключ восстановления).",
+ "By default a master key for the whole instance will be generated. Please check if that level of access is compliant with your needs." : "По умолчанию будет сгенерирован главный ключ для всего экземпляра. Проверьте, соответствует ли этот уровень доступа вашим потребностям.",
"Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Шифрование само по себе не гарантирует безопасность системы. В документации приведена дополнительная информация о работе приложения «Шифрование» и примеры его использования.",
"Be aware that encryption always increases the file size." : "Шифрование всегда увеличивает размер файлов.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Регулярно создавайте резервные копии данных. При использовании шифрования сохраняйте не только данные, но и ключи.",
@@ -666,6 +675,7 @@
"Set line manager" : "Выбрать руководителя",
"Account name will be autogenerated" : "Имя учётной записи будет создано автоматически",
"Account name (required)" : "Имя учётной записи (обязательно)",
+ "Failed to search groups" : "Не удалось выполнить поиск групп",
"New account" : "Новая учётная запись",
"Display name" : "Отображаемое имя",
"Either password or email is required" : "Также обязательны к заполнению пароль или эл.почта",
@@ -705,12 +715,16 @@
"Remote wipe of devices" : "Удаление данных с устройств",
"Wipe {userid}'s devices" : "Удалить данные с устройств пользователя {userid}",
"Wiped {userid}'s devices" : "Удалить данные с устройств пользователя {userid}",
+ "Failed to load groups with details" : "Не удалось загрузить группы с подробностями",
+ "Failed to load sub admin groups with details" : "Не удалось загрузить группы подчиненных администраторов с подробностями",
"Failed to update line manager" : "Не удалось обновить линейного менеджера",
"Fully delete {userid}'s account including all their personal files, app data, etc." : "Полностью удалить все данные пользователя {userid}, в том числе учётную запись, личные файлы и данные приложений.",
"Account deletion" : "Удаление учётной записи",
"Delete {userid}'s account" : "Удалить учётную запись пользователя {userid}",
"Display name was successfully changed" : "Отображаемое имя было успешно изменено",
+ "Password can't be empty" : "Пароль не может быть пустым",
"Password was successfully changed" : "Пароль был успешно изменен",
+ "Email can't be empty" : "Электронная почта не может быть пустой",
"Email was successfully changed" : "Эл. почта была успешно изменена",
"Welcome mail sent!" : "Приглашение отправлено!",
"Loading account …" : "Загрузка сведений об учётной записи…",
@@ -735,6 +749,7 @@
"Sorting" : "Сортировка",
"The system config enforces sorting the groups by name. This also disables showing the member count." : "Системная конфигурация обеспечивает сортировку групп по названию. Это также отключает отображение количества участников.",
"Group list sorting" : "Сортировка списка групп",
+ "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list." : "Сортировка применяется только к текущим загруженным группам по соображениям производительности. Группы будут загружаться по мере навигации или поиска по списку.",
"By member count" : "По количеству участников",
"By name" : "По имени",
"Send email" : "Отправить сообщение",
@@ -914,6 +929,7 @@
"Active accounts" : "Активные учётные записи",
"Follow us on Twitter" : "Следите за нашими новостями в Twitter",
"To allow this check to run you have to make sure that your Web server can connect to itself. Therefore it must be able to resolve and connect to at least one of its `trusted_domains` or the `overwrite.cli.url`. This failure may be the result of a server-side DNS mismatch or outbound firewall rule." : "Чтобы разрешить эту проверку, вам нужно убедиться, что ваш веб-сервер может подключаться к себе. Поэтому он должен иметь возможность разрешать и подключаться по крайней мере к одному из своих `trusted_domains` или `overwrite.cli.url`. Эта ошибка может быть результатом несоответствия DNS на стороне сервера или исходящего правила брандмауэра.",
- "PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Обнаружена версия PostgreSQL \"%s\". Для лучшей производительности, стабильности и функциональности с этой версией Nextcloud рекомендуется использовать PostgreSQL >=12 и <=16."
+ "PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Обнаружена версия PostgreSQL \"%s\". Для лучшей производительности, стабильности и функциональности с этой версией Nextcloud рекомендуется использовать PostgreSQL >=12 и <=16.",
+ "Failed to load subadmin groups with details" : "Не удалось загрузить группы субадминистраторов с подробностями"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/sharebymail/l10n/pl.js b/apps/sharebymail/l10n/pl.js
index 413afbc8d7e..d3b4b1cc10e 100644
--- a/apps/sharebymail/l10n/pl.js
+++ b/apps/sharebymail/l10n/pl.js
@@ -3,8 +3,8 @@ OC.L10N.register(
{
"Shared with {email}" : "Udostępniono {email}",
"Shared with {email} by {actor}" : "Udostępniono {email} przez {actor}",
- "Unshared from {email}" : "Udostępnianie zatrzymane od {email}",
- "Unshared from {email} by {actor}" : "Udostępnianie zatrzymane od {email} przez {actor}",
+ "Unshared from {email}" : "Udostępnienie zatrzymane dla {email}",
+ "Unshared from {email} by {actor}" : "Udostępnienie zatrzymane dla {email} przez {actor}",
"Password for mail share sent to {email}" : "Hasło dostępu do pliku zostało wysłane na {email}",
"Password for mail share sent to you" : "Hasło dostępu do pliku zostało do Ciebie wysłane",
"You shared {file} with {email} by mail" : "Udostępniasz {file} dla {email}",
diff --git a/apps/sharebymail/l10n/pl.json b/apps/sharebymail/l10n/pl.json
index b360096132e..7e3719e9f8a 100644
--- a/apps/sharebymail/l10n/pl.json
+++ b/apps/sharebymail/l10n/pl.json
@@ -1,8 +1,8 @@
{ "translations": {
"Shared with {email}" : "Udostępniono {email}",
"Shared with {email} by {actor}" : "Udostępniono {email} przez {actor}",
- "Unshared from {email}" : "Udostępnianie zatrzymane od {email}",
- "Unshared from {email} by {actor}" : "Udostępnianie zatrzymane od {email} przez {actor}",
+ "Unshared from {email}" : "Udostępnienie zatrzymane dla {email}",
+ "Unshared from {email} by {actor}" : "Udostępnienie zatrzymane dla {email} przez {actor}",
"Password for mail share sent to {email}" : "Hasło dostępu do pliku zostało wysłane na {email}",
"Password for mail share sent to you" : "Hasło dostępu do pliku zostało do Ciebie wysłane",
"You shared {file} with {email} by mail" : "Udostępniasz {file} dla {email}",
diff --git a/apps/sharebymail/lib/ShareByMailProvider.php b/apps/sharebymail/lib/ShareByMailProvider.php
index e6e1cf509e9..194a402848e 100644
--- a/apps/sharebymail/lib/ShareByMailProvider.php
+++ b/apps/sharebymail/lib/ShareByMailProvider.php
@@ -1112,6 +1112,17 @@ class ShareByMailProvider extends DefaultShareProvider implements IShareProvider
}
public function getSharesInFolder($userId, Folder $node, $reshares, $shallow = true): array {
+ return $this->getSharesInFolderInternal($userId, $node, $reshares);
+ }
+
+ public function getAllSharesInFolder(Folder $node): array {
+ return $this->getSharesInFolderInternal(null, $node, null);
+ }
+
+ /**
+ * @return array<int, list<IShare>>
+ */
+ private function getSharesInFolderInternal(?string $userId, Folder $node, ?bool $reshares): array {
$qb = $this->dbConnection->getQueryBuilder();
$qb->select('*')
->from('share', 's')
@@ -1120,18 +1131,20 @@ class ShareByMailProvider extends DefaultShareProvider implements IShareProvider
$qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL))
);
- /**
- * Reshares for this user are shares where they are the owner.
- */
- if ($reshares === false) {
- $qb->andWhere($qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId)));
- } else {
- $qb->andWhere(
- $qb->expr()->orX(
- $qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
- $qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId))
- )
- );
+ if ($userId !== null) {
+ /**
+ * Reshares for this user are shares where they are the owner.
+ */
+ if ($reshares !== true) {
+ $qb->andWhere($qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId)));
+ } else {
+ $qb->andWhere(
+ $qb->expr()->orX(
+ $qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
+ $qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId))
+ )
+ );
+ }
}
$qb->innerJoin('s', 'filecache', 'f', $qb->expr()->eq('s.file_source', 'f.fileid'));
diff --git a/apps/systemtags/l10n/et_EE.js b/apps/systemtags/l10n/et_EE.js
index d8d288528d7..4830cf04ef0 100644
--- a/apps/systemtags/l10n/et_EE.js
+++ b/apps/systemtags/l10n/et_EE.js
@@ -103,7 +103,7 @@ OC.L10N.register(
"Open in Files" : "Ava failirakenduses",
"List of tags and their associated files and folders." : "Siltude ja nendega seotud failide ja kaustade loend.",
"No tags found" : "Silte ei leidinud",
- "Tags you have created will show up here." : "Sinu loodud sildid saavad olema nähtavad siin.",
+ "Tags you have created will show up here." : "Sinu loodud sildid saavad olema nähtavad siin.",
"Failed to load tag" : "Sildi laadimine ei õnnestunud",
"Failed to load last used tags" : "Viimatikasutatud siltide laadimine ei õnnestunud",
"Missing \"Content-Location\" header" : "„Content-Location“ päisekirje on puudu",
diff --git a/apps/systemtags/l10n/et_EE.json b/apps/systemtags/l10n/et_EE.json
index bf15f8b79ed..35faa5538d7 100644
--- a/apps/systemtags/l10n/et_EE.json
+++ b/apps/systemtags/l10n/et_EE.json
@@ -101,7 +101,7 @@
"Open in Files" : "Ava failirakenduses",
"List of tags and their associated files and folders." : "Siltude ja nendega seotud failide ja kaustade loend.",
"No tags found" : "Silte ei leidinud",
- "Tags you have created will show up here." : "Sinu loodud sildid saavad olema nähtavad siin.",
+ "Tags you have created will show up here." : "Sinu loodud sildid saavad olema nähtavad siin.",
"Failed to load tag" : "Sildi laadimine ei õnnestunud",
"Failed to load last used tags" : "Viimatikasutatud siltide laadimine ei õnnestunud",
"Missing \"Content-Location\" header" : "„Content-Location“ päisekirje on puudu",
diff --git a/apps/systemtags/l10n/lv.js b/apps/systemtags/l10n/lv.js
index f59d6a826ab..437dd173c1a 100644
--- a/apps/systemtags/l10n/lv.js
+++ b/apps/systemtags/l10n/lv.js
@@ -15,8 +15,8 @@ OC.L10N.register(
"You created system tag {systemtag}" : "Tu izveidoji sistēmas birku {systemtag}",
"%1$s created system tag %2$s" : "%1$s izveidoja sistēmas birku %2$s",
"{actor} created system tag {systemtag}" : "{actor} izveidoja sistēmas birku {systemtag}",
- "You deleted system tag %1$s" : "Jūs izdzēsāt sistēmas birku %1$s",
- "You deleted system tag {systemtag}" : "Jūs izdzēsāt sistēmas birku {systemtag}",
+ "You deleted system tag %1$s" : "Tu izdzēsi sistēmas birku %1$s",
+ "You deleted system tag {systemtag}" : "Tu izdzēsi sistēmas birku {systemtag}",
"%1$s deleted system tag %2$s" : "%1$s izdzēsa sistēmas birku %2$s",
"{actor} deleted system tag {systemtag}" : "{actor} izdzēsa sistēmas birku {systemtag}",
"You updated system tag %2$s to %1$s" : "Tu atjaunināji sistēmas birku %2$s uz %1$s",
diff --git a/apps/systemtags/l10n/lv.json b/apps/systemtags/l10n/lv.json
index 882ce15c799..78723f0c006 100644
--- a/apps/systemtags/l10n/lv.json
+++ b/apps/systemtags/l10n/lv.json
@@ -13,8 +13,8 @@
"You created system tag {systemtag}" : "Tu izveidoji sistēmas birku {systemtag}",
"%1$s created system tag %2$s" : "%1$s izveidoja sistēmas birku %2$s",
"{actor} created system tag {systemtag}" : "{actor} izveidoja sistēmas birku {systemtag}",
- "You deleted system tag %1$s" : "Jūs izdzēsāt sistēmas birku %1$s",
- "You deleted system tag {systemtag}" : "Jūs izdzēsāt sistēmas birku {systemtag}",
+ "You deleted system tag %1$s" : "Tu izdzēsi sistēmas birku %1$s",
+ "You deleted system tag {systemtag}" : "Tu izdzēsi sistēmas birku {systemtag}",
"%1$s deleted system tag %2$s" : "%1$s izdzēsa sistēmas birku %2$s",
"{actor} deleted system tag {systemtag}" : "{actor} izdzēsa sistēmas birku {systemtag}",
"You updated system tag %2$s to %1$s" : "Tu atjaunināji sistēmas birku %2$s uz %1$s",
diff --git a/core/l10n/lv.js b/core/l10n/lv.js
index 9f81b1e19b8..e6cc84326e1 100644
--- a/core/l10n/lv.js
+++ b/core/l10n/lv.js
@@ -170,6 +170,7 @@ OC.L10N.register(
"Install and activate additional PHP modules to choose other database types." : "Instalējiet un aktivizējiet papildus PHP moduļus lai izvēlētos citus datubāžu tipus.",
"For more details check out the documentation." : "Vairāk informācijas ir meklējama dokumentācijā.",
"Performance warning" : "Veiktspējas brīdinājums",
+ "If you use clients for file syncing, the use of SQLite is highly discouraged." : "Ja izmanto klientus datņu sinhronizēšanai, ir ļoti ieteicams neizmantot SQLite.",
"Database user" : "Datubāzes lietotājs",
"Database password" : "Datubāzes parole",
"Database name" : "Datubāzes nosaukums",
@@ -197,7 +198,7 @@ OC.L10N.register(
"({count} selected)" : "({count} iezīmēti)",
"Error loading file exists template" : "Kļūda esošas datnes veidnes ielādēšanā",
"Saving …" : "Saglabā ...",
- "seconds ago" : "pirms mirkļa",
+ "seconds ago" : "pirms vairākām sekundēm",
"Connection to server lost" : "Zaudēts savienojums ar serveri",
"_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problēma ielādējot lapu, pārlādēšana pēc %n sekundēm","Problēma ielādējot lapu, pārlādēšana pēc %n sekundēm","Problēma ielādējot lapu, pārlādēšana pēc %n sekundēm"],
"Add to a project" : "Pievienot projektam",
diff --git a/core/l10n/lv.json b/core/l10n/lv.json
index 6ea5f965ffa..53d7d31d0cb 100644
--- a/core/l10n/lv.json
+++ b/core/l10n/lv.json
@@ -168,6 +168,7 @@
"Install and activate additional PHP modules to choose other database types." : "Instalējiet un aktivizējiet papildus PHP moduļus lai izvēlētos citus datubāžu tipus.",
"For more details check out the documentation." : "Vairāk informācijas ir meklējama dokumentācijā.",
"Performance warning" : "Veiktspējas brīdinājums",
+ "If you use clients for file syncing, the use of SQLite is highly discouraged." : "Ja izmanto klientus datņu sinhronizēšanai, ir ļoti ieteicams neizmantot SQLite.",
"Database user" : "Datubāzes lietotājs",
"Database password" : "Datubāzes parole",
"Database name" : "Datubāzes nosaukums",
@@ -195,7 +196,7 @@
"({count} selected)" : "({count} iezīmēti)",
"Error loading file exists template" : "Kļūda esošas datnes veidnes ielādēšanā",
"Saving …" : "Saglabā ...",
- "seconds ago" : "pirms mirkļa",
+ "seconds ago" : "pirms vairākām sekundēm",
"Connection to server lost" : "Zaudēts savienojums ar serveri",
"_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problēma ielādējot lapu, pārlādēšana pēc %n sekundēm","Problēma ielādējot lapu, pārlādēšana pēc %n sekundēm","Problēma ielādējot lapu, pārlādēšana pēc %n sekundēm"],
"Add to a project" : "Pievienot projektam",
diff --git a/cypress/e2e/files/files-download.cy.ts b/cypress/e2e/files/files-download.cy.ts
index 5522fb947d6..06eb62094b8 100644
--- a/cypress/e2e/files/files-download.cy.ts
+++ b/cypress/e2e/files/files-download.cy.ts
@@ -6,6 +6,9 @@
import type { User } from '@nextcloud/cypress'
import { getRowForFile, navigateToFolder, triggerActionForFile } from './FilesUtils'
import { deleteDownloadsFolderBeforeEach } from 'cypress-delete-downloads-folder'
+import { zipFileContains } from '../../support/utils/assertions.ts'
+
+import randomString from 'crypto-random-string'
describe('files: Download files using file actions', { testIsolation: true }, () => {
let user: User
@@ -34,6 +37,29 @@ describe('files: Download files using file actions', { testIsolation: true }, ()
.and('equal', '<content>')
})
+ it('can download folder', () => {
+ cy.mkdir(user, '/subfolder')
+ cy.uploadContent(user, new Blob(['<content>']), 'text/plain', '/subfolder/file.txt')
+
+ cy.login(user)
+ cy.visit('/apps/files')
+ getRowForFile('subfolder')
+ .should('be.visible')
+
+ triggerActionForFile('subfolder', 'download')
+
+ // check a file is downloaded
+ const downloadsFolder = Cypress.config('downloadsFolder')
+ cy.readFile(`${downloadsFolder}/subfolder.zip`, null, { timeout: 15000 })
+ .should('exist')
+ .and('have.length.gt', 30)
+ // Check all files are included
+ .and(zipFileContains([
+ 'subfolder/',
+ 'subfolder/file.txt',
+ ]))
+ })
+
/**
* Regression test of https://github.com/nextcloud/server/issues/44855
*/
@@ -143,3 +169,183 @@ describe('files: Download files using default action', { testIsolation: true },
.and('equal', '<content>')
})
})
+
+describe('files: Download files using selection', () => {
+
+ deleteDownloadsFolderBeforeEach()
+
+ it('can download selected files', () => {
+ cy.createRandomUser().then((user) => {
+ cy.mkdir(user, '/subfolder')
+ cy.uploadContent(user, new Blob(['<content>']), 'text/plain', '/subfolder/file.txt')
+ cy.login(user)
+ cy.visit('/apps/files')
+ })
+
+ getRowForFile('subfolder')
+ .should('be.visible')
+
+ getRowForFile('subfolder')
+ .findByRole('checkbox')
+ .check({ force: true })
+
+ // see that two files are selected
+ cy.get('[data-cy-files-list]').within(() => {
+ cy.contains('1 selected').should('be.visible')
+ })
+
+ // click download
+ cy.get('[data-cy-files-list-selection-actions]')
+ .findByRole('button', { name: 'Actions' })
+ .click()
+ cy.findByRole('menuitem', { name: 'Download (selected)' })
+ .should('be.visible')
+ .click()
+
+ // check a file is downloaded
+ const downloadsFolder = Cypress.config('downloadsFolder')
+ cy.readFile(`${downloadsFolder}/subfolder.zip`, null, { timeout: 15000 })
+ .should('exist')
+ .and('have.length.gt', 30)
+ // Check all files are included
+ .and(zipFileContains([
+ 'subfolder/',
+ 'subfolder/file.txt',
+ ]))
+ })
+
+ it('can download multiple selected files', () => {
+ cy.createRandomUser().then((user) => {
+ cy.uploadContent(user, new Blob(['<content>']), 'text/plain', '/file.txt')
+ cy.uploadContent(user, new Blob(['<content>']), 'text/plain', '/other file.txt')
+ cy.login(user)
+ cy.visit('/apps/files')
+ })
+
+ getRowForFile('file.txt')
+ .should('be.visible')
+ .findByRole('checkbox')
+ .check({ force: true })
+
+ getRowForFile('other file.txt')
+ .should('be.visible')
+ .findByRole('checkbox')
+ .check({ force: true })
+
+ cy.get('[data-cy-files-list]').within(() => {
+ // see that two files are selected
+ cy.contains('2 selected').should('be.visible')
+ })
+
+ // click download
+ cy.get('[data-cy-files-list-selection-actions]')
+ .findByRole('button', { name: 'Actions' })
+ .click()
+ cy.findByRole('menuitem', { name: 'Download (selected)' })
+ .click()
+
+ // check a file is downloaded
+ const downloadsFolder = Cypress.config('downloadsFolder')
+ cy.readFile(`${downloadsFolder}/download.zip`, null, { timeout: 15000 })
+ .should('exist')
+ .and('have.length.gt', 30)
+ // Check all files are included
+ .and(zipFileContains([
+ 'file.txt',
+ 'other file.txt',
+ ]))
+ })
+
+ /**
+ * Regression test of https://help.nextcloud.com/t/unable-to-download-files-on-nextcloud-when-multiple-files-selected/221327/5
+ */
+ it('can download selected files with special characters', () => {
+ cy.createRandomUser().then((user) => {
+ cy.uploadContent(user, new Blob(['<content>']), 'text/plain', '/1+1.txt')
+ cy.uploadContent(user, new Blob(['<content>']), 'text/plain', '/some@other.txt')
+ cy.login(user)
+ cy.visit('/apps/files')
+ })
+
+ getRowForFile('some@other.txt')
+ .should('be.visible')
+ .findByRole('checkbox')
+ .check({ force: true })
+
+ getRowForFile('1+1.txt')
+ .should('be.visible')
+ .findByRole('checkbox')
+ .check({ force: true })
+
+ cy.get('[data-cy-files-list]').within(() => {
+ // see that two files are selected
+ cy.contains('2 selected').should('be.visible')
+ })
+
+ // click download
+ cy.get('[data-cy-files-list-selection-actions]')
+ .findByRole('button', { name: 'Actions' })
+ .click()
+ cy.findByRole('menuitem', { name: 'Download (selected)' })
+ .click()
+
+ // check a file is downloaded
+ const downloadsFolder = Cypress.config('downloadsFolder')
+ cy.readFile(`${downloadsFolder}/download.zip`, null, { timeout: 15000 })
+ .should('exist')
+ .and('have.length.gt', 30)
+ // Check all files are included
+ .and(zipFileContains([
+ '1+1.txt',
+ 'some@other.txt',
+ ]))
+ })
+
+ /**
+ * Regression test of https://help.nextcloud.com/t/unable-to-download-files-on-nextcloud-when-multiple-files-selected/221327/5
+ */
+ it('can download selected files with email uid', () => {
+ const name = `${randomString(5)}@${randomString(3)}`
+ const user: User = { userId: name, password: name, language: 'en' }
+
+ cy.createUser(user).then(() => {
+ cy.uploadContent(user, new Blob(['<content>']), 'text/plain', '/file.txt')
+ cy.uploadContent(user, new Blob(['<content>']), 'text/plain', '/other file.txt')
+ cy.login(user)
+ cy.visit('/apps/files')
+ })
+
+ getRowForFile('file.txt')
+ .should('be.visible')
+ .findByRole('checkbox')
+ .check({ force: true })
+
+ getRowForFile('other file.txt')
+ .should('be.visible')
+ .findByRole('checkbox')
+ .check({ force: true })
+
+ cy.get('[data-cy-files-list]').within(() => {
+ // see that two files are selected
+ cy.contains('2 selected').should('be.visible')
+ })
+
+ // click download
+ cy.get('[data-cy-files-list-selection-actions]')
+ .findByRole('button', { name: 'Actions' })
+ .click()
+ cy.findByRole('menuitem', { name: 'Download (selected)' })
+ .click()
+
+ // check a file is downloaded
+ const downloadsFolder = Cypress.config('downloadsFolder')
+ cy.readFile(`${downloadsFolder}/download.zip`, null, { timeout: 15000 })
+ .should('exist')
+ .and('have.length.gt', 30)
+ // Check all files are included
+ .and(zipFileContains([
+ 'file.txt',
+ 'other file.txt',
+ ]))
+ })
+})
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index 177abfefe8e..b1c6c453b0a 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -780,6 +780,7 @@ return array(
'OCP\\Share\\IShareHelper' => $baseDir . '/lib/public/Share/IShareHelper.php',
'OCP\\Share\\IShareProvider' => $baseDir . '/lib/public/Share/IShareProvider.php',
'OCP\\Share\\IShareProviderSupportsAccept' => $baseDir . '/lib/public/Share/IShareProviderSupportsAccept.php',
+ 'OCP\\Share\\IShareProviderSupportsAllSharesInFolder' => $baseDir . '/lib/public/Share/IShareProviderSupportsAllSharesInFolder.php',
'OCP\\Share\\IShareProviderWithNotification' => $baseDir . '/lib/public/Share/IShareProviderWithNotification.php',
'OCP\\Share_Backend' => $baseDir . '/lib/public/Share_Backend.php',
'OCP\\Share_Backend_Collection' => $baseDir . '/lib/public/Share_Backend_Collection.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index ddccd0692ca..6eecb2da4b5 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -821,6 +821,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
'OCP\\Share\\IShareHelper' => __DIR__ . '/../../..' . '/lib/public/Share/IShareHelper.php',
'OCP\\Share\\IShareProvider' => __DIR__ . '/../../..' . '/lib/public/Share/IShareProvider.php',
'OCP\\Share\\IShareProviderSupportsAccept' => __DIR__ . '/../../..' . '/lib/public/Share/IShareProviderSupportsAccept.php',
+ 'OCP\\Share\\IShareProviderSupportsAllSharesInFolder' => __DIR__ . '/../../..' . '/lib/public/Share/IShareProviderSupportsAllSharesInFolder.php',
'OCP\\Share\\IShareProviderWithNotification' => __DIR__ . '/../../..' . '/lib/public/Share/IShareProviderWithNotification.php',
'OCP\\Share_Backend' => __DIR__ . '/../../..' . '/lib/public/Share_Backend.php',
'OCP\\Share_Backend_Collection' => __DIR__ . '/../../..' . '/lib/public/Share_Backend_Collection.php',
diff --git a/lib/l10n/et_EE.js b/lib/l10n/et_EE.js
index d882e0ee79e..d0ff1a1e511 100644
--- a/lib/l10n/et_EE.js
+++ b/lib/l10n/et_EE.js
@@ -279,6 +279,7 @@ OC.L10N.register(
"Ensure there is a file called \"%1$s\" in the root of the data directory. It should have the content: \"%2$s\"" : "Palun taga, et andmete juurkaustas leidub fail „%1$s“, mille sisuks on „%2$s“",
"Action \"%s\" not supported or implemented." : "„%s“ tegevus pole toetatud või implementeeritud.",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Päringu lõpetamiseks on puudu järgmised parameetrid; „%s“",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "„%1$s“ tunnus on juba kasutusel liitpilve serveris „%2$s“",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Liitpilve teenusepakkujat tunnusega „%s“ pole olemas.",
"Could not obtain lock type %d on \"%s\"." : "Ei suutnud hankida %d tüüpi lukustust asukohas „%s“.",
"Storage unauthorized. %s" : "Andmeruum on autoriseerimata. %s",
@@ -286,6 +287,12 @@ OC.L10N.register(
"Storage connection error. %s" : "Viga andmeruumi ühenduse loomisel. %s",
"Storage is temporarily not available" : "Salvestusruum pole ajutiselt kättesaadav",
"Storage connection timeout. %s" : "Aegumine andmeruumi ühenduse loomisel. %s",
+ "Transcribe audio" : "Kirjuta heli üles",
+ "Transcribe the things said in an audio" : "Kirjuta üles helifailis kuuldav jutt",
+ "Audio input" : "Helisisend",
+ "The audio to transcribe" : "Üleskirjutatav helifail",
+ "Transcription" : "Üleskirjutus",
+ "The transcribed text" : "Üleskirjutatud tekst",
"Generate image" : "Piltide loomine",
"Generate an image from a text prompt" : "Loo tekstisisendist pilt",
"Prompt" : "Sisendvorm",
@@ -299,6 +306,9 @@ OC.L10N.register(
"Write transcript that you want the assistant to generate speech from" : "Kirjuta üles see, mille alusel tahad Abilisel lasta koostada kõne",
"Output speech" : "Kõneväljund",
"The generated speech" : "Koostatud kõne",
+ "Chat" : "Vestle",
+ "Chat with the assistant" : "Vestle Abilisega",
+ "System prompt" : "Süsteemi viip",
"Generate a headline" : "Alapealkirja loomine",
"Generates a possible headline for a text." : "Võimaldab luua teksti põhjal kokkuvõtliku alapealkirja.",
"Original text" : "Lähtetekst",
diff --git a/lib/l10n/et_EE.json b/lib/l10n/et_EE.json
index 295c4b77855..f42e00f28f1 100644
--- a/lib/l10n/et_EE.json
+++ b/lib/l10n/et_EE.json
@@ -277,6 +277,7 @@
"Ensure there is a file called \"%1$s\" in the root of the data directory. It should have the content: \"%2$s\"" : "Palun taga, et andmete juurkaustas leidub fail „%1$s“, mille sisuks on „%2$s“",
"Action \"%s\" not supported or implemented." : "„%s“ tegevus pole toetatud või implementeeritud.",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Päringu lõpetamiseks on puudu järgmised parameetrid; „%s“",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "„%1$s“ tunnus on juba kasutusel liitpilve serveris „%2$s“",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Liitpilve teenusepakkujat tunnusega „%s“ pole olemas.",
"Could not obtain lock type %d on \"%s\"." : "Ei suutnud hankida %d tüüpi lukustust asukohas „%s“.",
"Storage unauthorized. %s" : "Andmeruum on autoriseerimata. %s",
@@ -284,6 +285,12 @@
"Storage connection error. %s" : "Viga andmeruumi ühenduse loomisel. %s",
"Storage is temporarily not available" : "Salvestusruum pole ajutiselt kättesaadav",
"Storage connection timeout. %s" : "Aegumine andmeruumi ühenduse loomisel. %s",
+ "Transcribe audio" : "Kirjuta heli üles",
+ "Transcribe the things said in an audio" : "Kirjuta üles helifailis kuuldav jutt",
+ "Audio input" : "Helisisend",
+ "The audio to transcribe" : "Üleskirjutatav helifail",
+ "Transcription" : "Üleskirjutus",
+ "The transcribed text" : "Üleskirjutatud tekst",
"Generate image" : "Piltide loomine",
"Generate an image from a text prompt" : "Loo tekstisisendist pilt",
"Prompt" : "Sisendvorm",
@@ -297,6 +304,9 @@
"Write transcript that you want the assistant to generate speech from" : "Kirjuta üles see, mille alusel tahad Abilisel lasta koostada kõne",
"Output speech" : "Kõneväljund",
"The generated speech" : "Koostatud kõne",
+ "Chat" : "Vestle",
+ "Chat with the assistant" : "Vestle Abilisega",
+ "System prompt" : "Süsteemi viip",
"Generate a headline" : "Alapealkirja loomine",
"Generates a possible headline for a text." : "Võimaldab luua teksti põhjal kokkuvõtliku alapealkirja.",
"Original text" : "Lähtetekst",
diff --git a/lib/l10n/lv.js b/lib/l10n/lv.js
index e5b635a2bd3..c6eeeaa756c 100644
--- a/lib/l10n/lv.js
+++ b/lib/l10n/lv.js
@@ -31,14 +31,14 @@ OC.L10N.register(
"View profile" : "Skatīt profilu",
"today" : "šodien",
"yesterday" : "vakar",
- "_%n day ago_::_%n days ago_" : ["%n dienas atpakaļ","%n dienas atpakaļ","%n dienām"],
+ "_%n day ago_::_%n days ago_" : ["pirms %n dienām","pirms %n dienas","pirms %n dienām"],
"last month" : "pagājušajā mēnesī",
- "_%n month ago_::_%n months ago_" : ["%n mēneši atpakaļ","%n mēneši atpakaļ","%n mēnešiem"],
+ "_%n month ago_::_%n months ago_" : ["pirms %n mēnešiem","pirms %n mēneša","pirms %n mēnešiem"],
"last year" : "gājušajā gadā",
- "_%n year ago_::_%n years ago_" : ["%n gadiem","%n gadiem","%n gadiem"],
- "_%n hour ago_::_%n hours ago_" : ["%n stundas atpakaļ","%n stundas atpakaļ","%n stundām"],
- "_%n minute ago_::_%n minutes ago_" : ["%n minūtes atpakaļ","%n minūtes atpakaļ","%n minūtēm"],
- "seconds ago" : "sekundēm",
+ "_%n year ago_::_%n years ago_" : ["pirms %n gadiem","pirms %n gada","pirms %n gadiem"],
+ "_%n hour ago_::_%n hours ago_" : ["pirms %n stundām","pirms %n stundas","pirms %n stundām"],
+ "_%n minute ago_::_%n minutes ago_" : ["pirms %n minūtēm","pirms %n minūtes","pirms %n minūtēm"],
+ "seconds ago" : "pirms vairākām sekundēm",
"Empty file" : "Tukša datne",
"File already exists" : "Datne jau pastāv",
"Filename contains at least one invalid character" : "Datnes nosaukums satur vismaz vienu nederīgu rakstzīmi",
diff --git a/lib/l10n/lv.json b/lib/l10n/lv.json
index f71090c5fd4..865458737df 100644
--- a/lib/l10n/lv.json
+++ b/lib/l10n/lv.json
@@ -29,14 +29,14 @@
"View profile" : "Skatīt profilu",
"today" : "šodien",
"yesterday" : "vakar",
- "_%n day ago_::_%n days ago_" : ["%n dienas atpakaļ","%n dienas atpakaļ","%n dienām"],
+ "_%n day ago_::_%n days ago_" : ["pirms %n dienām","pirms %n dienas","pirms %n dienām"],
"last month" : "pagājušajā mēnesī",
- "_%n month ago_::_%n months ago_" : ["%n mēneši atpakaļ","%n mēneši atpakaļ","%n mēnešiem"],
+ "_%n month ago_::_%n months ago_" : ["pirms %n mēnešiem","pirms %n mēneša","pirms %n mēnešiem"],
"last year" : "gājušajā gadā",
- "_%n year ago_::_%n years ago_" : ["%n gadiem","%n gadiem","%n gadiem"],
- "_%n hour ago_::_%n hours ago_" : ["%n stundas atpakaļ","%n stundas atpakaļ","%n stundām"],
- "_%n minute ago_::_%n minutes ago_" : ["%n minūtes atpakaļ","%n minūtes atpakaļ","%n minūtēm"],
- "seconds ago" : "sekundēm",
+ "_%n year ago_::_%n years ago_" : ["pirms %n gadiem","pirms %n gada","pirms %n gadiem"],
+ "_%n hour ago_::_%n hours ago_" : ["pirms %n stundām","pirms %n stundas","pirms %n stundām"],
+ "_%n minute ago_::_%n minutes ago_" : ["pirms %n minūtēm","pirms %n minūtes","pirms %n minūtēm"],
+ "seconds ago" : "pirms vairākām sekundēm",
"Empty file" : "Tukša datne",
"File already exists" : "Datne jau pastāv",
"Filename contains at least one invalid character" : "Datnes nosaukums satur vismaz vienu nederīgu rakstzīmi",
diff --git a/lib/private/Share20/DefaultShareProvider.php b/lib/private/Share20/DefaultShareProvider.php
index a257bc4f7b5..e1eebe1e450 100644
--- a/lib/private/Share20/DefaultShareProvider.php
+++ b/lib/private/Share20/DefaultShareProvider.php
@@ -5,6 +5,7 @@
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
* SPDX-License-Identifier: AGPL-3.0-only
*/
+
namespace OC\Share20;
use OC\Files\Cache\Cache;
@@ -31,6 +32,7 @@ use OCP\Share\IAttributes;
use OCP\Share\IManager;
use OCP\Share\IShare;
use OCP\Share\IShareProviderSupportsAccept;
+use OCP\Share\IShareProviderSupportsAllSharesInFolder;
use OCP\Share\IShareProviderWithNotification;
use Psr\Log\LoggerInterface;
use function str_starts_with;
@@ -40,7 +42,7 @@ use function str_starts_with;
*
* @package OC\Share20
*/
-class DefaultShareProvider implements IShareProviderWithNotification, IShareProviderSupportsAccept {
+class DefaultShareProvider implements IShareProviderWithNotification, IShareProviderSupportsAccept, IShareProviderSupportsAllSharesInFolder {
// Special share type for user modified group shares
public const SHARE_TYPE_USERGROUP = 2;
@@ -603,6 +605,17 @@ class DefaultShareProvider implements IShareProviderWithNotification, IShareProv
throw new \Exception('non-shallow getSharesInFolder is no longer supported');
}
+ return $this->getSharesInFolderInternal($userId, $node, $reshares);
+ }
+
+ public function getAllSharesInFolder(Folder $node): array {
+ return $this->getSharesInFolderInternal(null, $node, null);
+ }
+
+ /**
+ * @return array<int, list<IShare>>
+ */
+ private function getSharesInFolderInternal(?string $userId, Folder $node, ?bool $reshares): array {
$qb = $this->dbConn->getQueryBuilder();
$qb->select('s.*',
'f.fileid', 'f.path', 'f.permissions AS f_permissions', 'f.storage', 'f.path_hash',
@@ -613,18 +626,20 @@ class DefaultShareProvider implements IShareProviderWithNotification, IShareProv
$qb->andWhere($qb->expr()->in('share_type', $qb->createNamedParameter([IShare::TYPE_USER, IShare::TYPE_GROUP, IShare::TYPE_LINK], IQueryBuilder::PARAM_INT_ARRAY)));
- /**
- * Reshares for this user are shares where they are the owner.
- */
- if ($reshares === false) {
- $qb->andWhere($qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId)));
- } else {
- $qb->andWhere(
- $qb->expr()->orX(
- $qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
- $qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId))
- )
- );
+ if ($userId !== null) {
+ /**
+ * Reshares for this user are shares where they are the owner.
+ */
+ if ($reshares !== true) {
+ $qb->andWhere($qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId)));
+ } else {
+ $qb->andWhere(
+ $qb->expr()->orX(
+ $qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
+ $qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId))
+ )
+ );
+ }
}
// todo? maybe get these from the oc_mounts table
@@ -656,7 +671,6 @@ class DefaultShareProvider implements IShareProviderWithNotification, IShareProv
foreach ($chunks as $chunk) {
$qb->setParameter('chunk', $chunk, IQueryBuilder::PARAM_INT_ARRAY);
- $a = $qb->getSQL();
$cursor = $qb->executeQuery();
while ($data = $cursor->fetch()) {
$shares[$data['fileid']][] = $this->createShare($data);
diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php
index 3b247475afa..2104c07593a 100644
--- a/lib/private/Share20/Manager.php
+++ b/lib/private/Share20/Manager.php
@@ -51,6 +51,7 @@ use OCP\Share\IProviderFactory;
use OCP\Share\IShare;
use OCP\Share\IShareProvider;
use OCP\Share\IShareProviderSupportsAccept;
+use OCP\Share\IShareProviderSupportsAllSharesInFolder;
use OCP\Share\IShareProviderWithNotification;
use Psr\Log\LoggerInterface;
@@ -1213,11 +1214,13 @@ class Manager implements IManager {
$shares = [];
foreach ($providers as $provider) {
if ($isOwnerless) {
- foreach ($node->getDirectoryListing() as $childNode) {
- $data = $provider->getSharesByPath($childNode);
- $fid = $childNode->getId();
- $shares[$fid] ??= [];
- $shares[$fid] = array_merge($shares[$fid], $data);
+ // If the provider does not implement the additional interface,
+ // we lack a performant way of querying all shares and therefore ignore the provider.
+ if ($provider instanceof IShareProviderSupportsAllSharesInFolder) {
+ foreach ($provider->getAllSharesInFolder($node) as $fid => $data) {
+ $shares[$fid] ??= [];
+ $shares[$fid] = array_merge($shares[$fid], $data);
+ }
}
} else {
foreach ($provider->getSharesInFolder($userId, $node, $reshares) as $fid => $data) {
diff --git a/lib/public/Share/IShareProviderSupportsAllSharesInFolder.php b/lib/public/Share/IShareProviderSupportsAllSharesInFolder.php
new file mode 100644
index 00000000000..e27da7682ce
--- /dev/null
+++ b/lib/public/Share/IShareProviderSupportsAllSharesInFolder.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCP\Share;
+
+use OCP\Files\Folder;
+
+/**
+ * Allows defining a IShareProvider with support for the getAllSharesInFolder method.
+ *
+ * @since 32.0.0
+ */
+interface IShareProviderSupportsAllSharesInFolder extends IShareProvider {
+ /**
+ * Get all shares in a folder.
+ *
+ * @return array<int, list<IShare>>
+ * @since 32.0.0
+ */
+ public function getAllSharesInFolder(Folder $node): array;
+}
diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php
index 9e778207a8e..357ae9ee678 100644
--- a/tests/lib/Share20/ManagerTest.php
+++ b/tests/lib/Share20/ManagerTest.php
@@ -55,6 +55,7 @@ use OCP\Share\IManager;
use OCP\Share\IProviderFactory;
use OCP\Share\IShare;
use OCP\Share\IShareProvider;
+use OCP\Share\IShareProviderSupportsAllSharesInFolder;
use PHPUnit\Framework\MockObject\MockBuilder;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
@@ -4551,7 +4552,7 @@ class ManagerTest extends \Test\TestCase {
$manager = $this->createManager($factory);
$factory->setProvider($this->defaultProvider);
- $extraProvider = $this->createMock(IShareProvider::class);
+ $extraProvider = $this->createMock(IShareProviderSupportsAllSharesInFolder::class);
$factory->setSecondProvider($extraProvider);
$share1 = $this->createMock(IShare::class);
@@ -4559,28 +4560,20 @@ class ManagerTest extends \Test\TestCase {
$mount = $this->createMock(IShareOwnerlessMount::class);
- $file = $this->createMock(File::class);
- $file
- ->method('getId')
- ->willReturn(1);
-
$folder = $this->createMock(Folder::class);
$folder
->method('getMountPoint')
->willReturn($mount);
- $folder
- ->method('getDirectoryListing')
- ->willReturn([$file]);
$this->defaultProvider
- ->method('getSharesByPath')
- ->with($file)
- ->willReturn([$share1]);
+ ->method('getAllSharesInFolder')
+ ->with($folder)
+ ->willReturn([1 => [$share1]]);
$extraProvider
- ->method('getSharesByPath')
- ->with($file)
- ->willReturn([$share2]);
+ ->method('getAllSharesInFolder')
+ ->with($folder)
+ ->willReturn([1 => [$share2]]);
$this->assertSame([
1 => [$share1, $share2],