diff options
Diffstat (limited to 'apps')
92 files changed, 763 insertions, 358 deletions
diff --git a/apps/dav/l10n/da.js b/apps/dav/l10n/da.js index c99b8d10b6e..1368b899919 100644 --- a/apps/dav/l10n/da.js +++ b/apps/dav/l10n/da.js @@ -80,7 +80,7 @@ OC.L10N.register( "_In a month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["I en måned på %1$s for hele dagen","Om %n måneder den %1$s for hele dagen"], "_In a year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["I et år på %1$s for hele dagen","Om %n år den %1$s for hele dagen"], "In the past on %1$s between %2$s - %3$s" : "Tidligere den %1$s mellem %2$s - %3$s", - "_In a minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["I et minut på %1$s mellem% %2$s - %3$s","Om %n minutter den %1$s mellem %2$s - %3$s"], + "_In a minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["I et minut på %1$s mellem %2$s - %3$s","Om %n minutter den %1$s mellem %2$s - %3$s"], "_In a hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["I en time på %1$s mellem %2$s - %3$s","Om %n timer den %1$s mellem %2$s - %3$s"], "_In a day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["I en dag på %1$s mellem %2$s - %3$s","Om %n dage den %1$s mellem %2$s - %3$s"], "_In a week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["I en uge på %1$s mellem %2$s - %3$s","Om %n uger den %1$s mellem %2$s - %3$s"], diff --git a/apps/dav/l10n/da.json b/apps/dav/l10n/da.json index fa934db0daa..723ebc26b7d 100644 --- a/apps/dav/l10n/da.json +++ b/apps/dav/l10n/da.json @@ -78,7 +78,7 @@ "_In a month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["I en måned på %1$s for hele dagen","Om %n måneder den %1$s for hele dagen"], "_In a year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["I et år på %1$s for hele dagen","Om %n år den %1$s for hele dagen"], "In the past on %1$s between %2$s - %3$s" : "Tidligere den %1$s mellem %2$s - %3$s", - "_In a minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["I et minut på %1$s mellem% %2$s - %3$s","Om %n minutter den %1$s mellem %2$s - %3$s"], + "_In a minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["I et minut på %1$s mellem %2$s - %3$s","Om %n minutter den %1$s mellem %2$s - %3$s"], "_In a hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["I en time på %1$s mellem %2$s - %3$s","Om %n timer den %1$s mellem %2$s - %3$s"], "_In a day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["I en dag på %1$s mellem %2$s - %3$s","Om %n dage den %1$s mellem %2$s - %3$s"], "_In a week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["I en uge på %1$s mellem %2$s - %3$s","Om %n uger den %1$s mellem %2$s - %3$s"], diff --git a/apps/dav/l10n/eu.js b/apps/dav/l10n/eu.js index 4deb8172bed..df586e1958e 100644 --- a/apps/dav/l10n/eu.js +++ b/apps/dav/l10n/eu.js @@ -189,6 +189,7 @@ OC.L10N.register( "Second" : "Bigarrena", "Third" : "Hirugarrena", "Fourth" : "Laugarrena", + "Fifth" : "Bosgarrena", "Last" : "Azkena", "Second Last" : "Azken aurrekoa", "Third Last" : "Hirugarren azkena", @@ -248,6 +249,11 @@ OC.L10N.register( "Completed on %s" : "%s-an osatua", "Due on %s by %s" : "%s-(e)an epemuga %s-(e)k", "Due on %s" : "%s-(e)an epemuga", + "Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Ongi etorri Nextcloud Egutegira!\n\nHau gertaera erakusgarria da - aztertu plangintzaren malgutasuna Nextcloud Egutegiarekin nahi dituzun edizioak eginez!\n\nNextcloud Egutegia aukerarekin, hau egin dezakezu:\n- Sortu, editatu eta kudeatu gertaerak esfortzurik gabe.\n- Egutegi ugari sortu eta taldekideekin, lagunekin edo familiarekin partekatu.\n- Egiaztatu libre egotea eta bistaratu zure laneko orduak beste batzuei.\n- Aplikazio eta gailuekin arazorik gabe integratzea CalDAV bidez.\n- Zure esperientzia pertsonalizatu: gertaera errepikariak programatu, jakinarazpenak doitu eta bestelako ezarpenak.", + "Example event - open me!" : "Gertaera adibidea - ireki nazazu!", + "System Address Book" : "Sistemaren helbide-liburua", + "The system address book contains contact information for all users in your instance." : "Sistemaren helbide-liburuak zure instantziako erabiltzaile guztien kontaktu-informazioa dauka.", + "Enable System Address Book" : "Gaitu sistemaren helbide-liburua", "DAV system address book" : "DAV sistemaren helbide-liburua", "No outstanding DAV system address book sync." : "Ez dago DAV sistema helbide-liburuaren sinkronizazio arrarorik.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "DAV sistemaren helbide-liburuaren sinkronizazioa oraindik ez da martxan jarri zure instantziak 1000 erabiltzaile baino gehiago dituelako edo akats bat gertatu delako. Mesedez, exekutatu eskuz \"occ dav:sync-system-addressbook\" deituz.", @@ -288,7 +294,22 @@ OC.L10N.register( "Cancel" : "Utzi", "Import" : "Inportatu", "Error while saving settings" : "Errorea ezarpenak gordetzean", + "Contact reset successfully" : "Kontaktua behar bezala berrezarri da", + "Error while resetting contact" : "Errorea kontaktua berrezartzean", + "Contact imported successfully" : "Kontaktua behar bezala inportatu da", + "Error while importing contact" : "Errorea kontaktua inportatzean", + "Import contact" : "Inportatu kontaktua", "Reset to default" : "Berezarri balio lehenetsira", + "Import contacts" : "Inportatu kontaktuak", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : ".vcf fitxategi berri bat inportatzean, lehendik dagoen kontaktu lehenetsia ezabatu eta berriarekin ordeztuko da. Jarraitu nahi duzu?", + "Failed to save example event creation setting" : "Adibide gertaeraren sortze ezarpenak gordetzeak huts egin du", + "Failed to upload the example event" : "Adibide gertaera igotzeak huts egin du", + "Custom example event was saved successfully" : "Adibide gertaera pertsonalizatua behar bezala gorde da", + "Failed to delete the custom example event" : "Adibide gertaera pertsonalizatua ezabatzeak huts egin du", + "Custom example event was deleted successfully" : "Adibide gertaera pertsonalizatua behar bezala ezabatu da.", + "Import calendar event" : "Inportatu egutegiko gertaera", + "Uploading a new event will overwrite the existing one." : "Gertaera berri bat igotzeak dagoena gainidatz dezake", + "Upload event" : "Igo gertaera", "Availability" : "Eskuragarritasuna", "If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Zure lan orduak konfiguratzen badituzu, beste pertsonek bulegotik kanpo zaudela ikusiko dute bilera bat erreserbatzen dutenean.", "Absence" : "Absentzia", @@ -305,6 +326,8 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Bidali gogorarazpen jakinarazpenak egutegi partekatzea dutenei ere", "Reminders are always sent to organizers and attendees." : "Gogorarazpenak beti bidaltzen zaizkie antolatzaileei eta parte-hartzaileei.", "Enable notifications for events via push" : "Gaitu push bidezko jakinarazpenak gertaerentzat", + "Example content" : "Adibideko edukia", + "Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Adibideko edukiak Nextcloud-en ezaugarriak erakusteko balio du. Eduki lehenetsia Nextcloud-ekin bidaltzen da, eta eduki pertsonalizatuarekin ordezka daiteke.", "There was an error updating your attendance status." : "Errore bat gertatu da zure parte-hartze egoera eguneratzerakoan.", "Please contact the organizer directly." : "Mesedez jarri harremanetan antolatzailearekin zuzenean.", "Are you accepting the invitation?" : "Gonbidapena onartzen duzu?", diff --git a/apps/dav/l10n/eu.json b/apps/dav/l10n/eu.json index ac11ede49c3..5d312d36973 100644 --- a/apps/dav/l10n/eu.json +++ b/apps/dav/l10n/eu.json @@ -187,6 +187,7 @@ "Second" : "Bigarrena", "Third" : "Hirugarrena", "Fourth" : "Laugarrena", + "Fifth" : "Bosgarrena", "Last" : "Azkena", "Second Last" : "Azken aurrekoa", "Third Last" : "Hirugarren azkena", @@ -246,6 +247,11 @@ "Completed on %s" : "%s-an osatua", "Due on %s by %s" : "%s-(e)an epemuga %s-(e)k", "Due on %s" : "%s-(e)an epemuga", + "Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Ongi etorri Nextcloud Egutegira!\n\nHau gertaera erakusgarria da - aztertu plangintzaren malgutasuna Nextcloud Egutegiarekin nahi dituzun edizioak eginez!\n\nNextcloud Egutegia aukerarekin, hau egin dezakezu:\n- Sortu, editatu eta kudeatu gertaerak esfortzurik gabe.\n- Egutegi ugari sortu eta taldekideekin, lagunekin edo familiarekin partekatu.\n- Egiaztatu libre egotea eta bistaratu zure laneko orduak beste batzuei.\n- Aplikazio eta gailuekin arazorik gabe integratzea CalDAV bidez.\n- Zure esperientzia pertsonalizatu: gertaera errepikariak programatu, jakinarazpenak doitu eta bestelako ezarpenak.", + "Example event - open me!" : "Gertaera adibidea - ireki nazazu!", + "System Address Book" : "Sistemaren helbide-liburua", + "The system address book contains contact information for all users in your instance." : "Sistemaren helbide-liburuak zure instantziako erabiltzaile guztien kontaktu-informazioa dauka.", + "Enable System Address Book" : "Gaitu sistemaren helbide-liburua", "DAV system address book" : "DAV sistemaren helbide-liburua", "No outstanding DAV system address book sync." : "Ez dago DAV sistema helbide-liburuaren sinkronizazio arrarorik.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "DAV sistemaren helbide-liburuaren sinkronizazioa oraindik ez da martxan jarri zure instantziak 1000 erabiltzaile baino gehiago dituelako edo akats bat gertatu delako. Mesedez, exekutatu eskuz \"occ dav:sync-system-addressbook\" deituz.", @@ -286,7 +292,22 @@ "Cancel" : "Utzi", "Import" : "Inportatu", "Error while saving settings" : "Errorea ezarpenak gordetzean", + "Contact reset successfully" : "Kontaktua behar bezala berrezarri da", + "Error while resetting contact" : "Errorea kontaktua berrezartzean", + "Contact imported successfully" : "Kontaktua behar bezala inportatu da", + "Error while importing contact" : "Errorea kontaktua inportatzean", + "Import contact" : "Inportatu kontaktua", "Reset to default" : "Berezarri balio lehenetsira", + "Import contacts" : "Inportatu kontaktuak", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : ".vcf fitxategi berri bat inportatzean, lehendik dagoen kontaktu lehenetsia ezabatu eta berriarekin ordeztuko da. Jarraitu nahi duzu?", + "Failed to save example event creation setting" : "Adibide gertaeraren sortze ezarpenak gordetzeak huts egin du", + "Failed to upload the example event" : "Adibide gertaera igotzeak huts egin du", + "Custom example event was saved successfully" : "Adibide gertaera pertsonalizatua behar bezala gorde da", + "Failed to delete the custom example event" : "Adibide gertaera pertsonalizatua ezabatzeak huts egin du", + "Custom example event was deleted successfully" : "Adibide gertaera pertsonalizatua behar bezala ezabatu da.", + "Import calendar event" : "Inportatu egutegiko gertaera", + "Uploading a new event will overwrite the existing one." : "Gertaera berri bat igotzeak dagoena gainidatz dezake", + "Upload event" : "Igo gertaera", "Availability" : "Eskuragarritasuna", "If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Zure lan orduak konfiguratzen badituzu, beste pertsonek bulegotik kanpo zaudela ikusiko dute bilera bat erreserbatzen dutenean.", "Absence" : "Absentzia", @@ -303,6 +324,8 @@ "Send reminder notifications to calendar sharees as well" : "Bidali gogorarazpen jakinarazpenak egutegi partekatzea dutenei ere", "Reminders are always sent to organizers and attendees." : "Gogorarazpenak beti bidaltzen zaizkie antolatzaileei eta parte-hartzaileei.", "Enable notifications for events via push" : "Gaitu push bidezko jakinarazpenak gertaerentzat", + "Example content" : "Adibideko edukia", + "Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Adibideko edukiak Nextcloud-en ezaugarriak erakusteko balio du. Eduki lehenetsia Nextcloud-ekin bidaltzen da, eta eduki pertsonalizatuarekin ordezka daiteke.", "There was an error updating your attendance status." : "Errore bat gertatu da zure parte-hartze egoera eguneratzerakoan.", "Please contact the organizer directly." : "Mesedez jarri harremanetan antolatzailearekin zuzenean.", "Are you accepting the invitation?" : "Gonbidapena onartzen duzu?", diff --git a/apps/dav/lib/CalDAV/Schedule/IMipService.php b/apps/dav/lib/CalDAV/Schedule/IMipService.php index f7054eb2d34..54c0bc31849 100644 --- a/apps/dav/lib/CalDAV/Schedule/IMipService.php +++ b/apps/dav/lib/CalDAV/Schedule/IMipService.php @@ -1110,7 +1110,7 @@ class IMipService { $sequence = $iTipMessage->sequence; $recurrenceId = isset($vevent->{'RECURRENCE-ID'}) ? $vevent->{'RECURRENCE-ID'}->serialize() : null; - $uid = $vevent->{'UID'}; + $uid = $vevent->{'UID'}?->getValue(); $query = $this->db->getQueryBuilder(); $query->insert('calendar_invitations') diff --git a/apps/dav/lib/Connector/Sabre/File.php b/apps/dav/lib/Connector/Sabre/File.php index 218d38e1c4b..d2a71eb3e7b 100644 --- a/apps/dav/lib/Connector/Sabre/File.php +++ b/apps/dav/lib/Connector/Sabre/File.php @@ -204,6 +204,9 @@ class File extends Node implements IFile { } } + $lengthHeader = $this->request->getHeader('content-length'); + $expected = $lengthHeader !== '' ? (int)$lengthHeader : null; + if ($partStorage->instanceOfStorage(IWriteStreamStorage::class)) { $isEOF = false; $wrappedData = CallbackWrapper::wrap($data, null, null, null, null, function ($stream) use (&$isEOF): void { @@ -215,7 +218,7 @@ class File extends Node implements IFile { $count = -1; try { /** @var IWriteStreamStorage $partStorage */ - $count = $partStorage->writeStream($internalPartPath, $wrappedData); + $count = $partStorage->writeStream($internalPartPath, $wrappedData, $expected); } catch (GenericFileException $e) { $logger = Server::get(LoggerInterface::class); $logger->error('Error while writing stream to storage: ' . $e->getMessage(), ['exception' => $e, 'app' => 'webdav']); @@ -235,10 +238,7 @@ class File extends Node implements IFile { [$count, $result] = Files::streamCopy($data, $target, true); fclose($target); } - - $lengthHeader = $this->request->getHeader('content-length'); - $expected = $lengthHeader !== '' ? (int)$lengthHeader : -1; - if ($result === false && $expected >= 0) { + if ($result === false && $expected !== null) { throw new Exception( $this->l10n->t( 'Error while copying file to target location (copied: %1$s, expected filesize: %2$s)', @@ -253,7 +253,7 @@ class File extends Node implements IFile { // if content length is sent by client: // double check if the file was fully received // compare expected and actual size - if ($expected >= 0 + if ($expected !== null && $expected !== $count && $this->request->getMethod() === 'PUT' ) { diff --git a/apps/encryption/l10n/lv.js b/apps/encryption/l10n/lv.js index 4e4d6b4ade3..b44cc20db29 100644 --- a/apps/encryption/l10n/lv.js +++ b/apps/encryption/l10n/lv.js @@ -2,16 +2,16 @@ OC.L10N.register( "encryption", { "Missing recovery key password" : "Pazudusi atkopšanas atslēgas parole", - "Please repeat the recovery key password" : "Lūdzu atkārtot atgūšanas atslēgas paroli", + "Please repeat the recovery key password" : "Lūgums atkārtot atkopes atslēgas paroli", "Repeated recovery key password does not match the provided recovery key password" : "Atkārtota atkopšanas atslēgas parole nesakrīt ar izsniegto atkopšanas atslēgu paroli", "Recovery key successfully enabled" : "Atkopšanas atslēga ir veiksmīgi iespējota", - "Could not enable recovery key. Please check your recovery key password!" : "Atkopšanas atslēgu nevarēja iespējot. Lūdzu, pārbaudiet atkopšanas atslēgas paroli!", + "Could not enable recovery key. Please check your recovery key password!" : "Atkopes atslēgu nevarēja iespējot. Lūgums pārbaudīt atkopes atslēgas paroli.", "Recovery key successfully disabled" : "Atkopšanas atslēga ir veiksmīgi deaktivizēta", - "Could not disable recovery key. Please check your recovery key password!" : "Atkopšanas atslēgu nevarēja atspējot. Lūdzu, pārbaudiet atkopšanas atslēgas paroli!", + "Could not disable recovery key. Please check your recovery key password!" : "Atkopes atslēgu nevarēja atspējot. Lūgums pārbaudīt atkopes atslēgas paroli.", "Missing parameters" : "Trūkstošos parametrs", "Please provide the old recovery password" : "Lūgums norādīt iepriekšējo atkopes paroli", - "Please provide a new recovery password" : "Lūdzu, ievadiet jaunu paroli", - "Please repeat the new recovery password" : "Lūdzu, atkārtojiet jauno atkopšanas paroli", + "Please provide a new recovery password" : "Lūgums norādīt jaunu atkopes paroli", + "Please repeat the new recovery password" : "Lūgums atkārtot jauno atkopes paroli", "Password successfully changed." : "Parole veiksmīgi nomainīta.", "Could not change the password. Maybe the old password was not correct." : "Nevarēja mainīt paroli. Varbūt vecā parole nav pareiza.", "Recovery Key disabled" : "Atkopšanas atslēga deaktivizēta", diff --git a/apps/encryption/l10n/lv.json b/apps/encryption/l10n/lv.json index 4bf8d7fce8e..42787888d86 100644 --- a/apps/encryption/l10n/lv.json +++ b/apps/encryption/l10n/lv.json @@ -1,15 +1,15 @@ { "translations": { "Missing recovery key password" : "Pazudusi atkopšanas atslēgas parole", - "Please repeat the recovery key password" : "Lūdzu atkārtot atgūšanas atslēgas paroli", + "Please repeat the recovery key password" : "Lūgums atkārtot atkopes atslēgas paroli", "Repeated recovery key password does not match the provided recovery key password" : "Atkārtota atkopšanas atslēgas parole nesakrīt ar izsniegto atkopšanas atslēgu paroli", "Recovery key successfully enabled" : "Atkopšanas atslēga ir veiksmīgi iespējota", - "Could not enable recovery key. Please check your recovery key password!" : "Atkopšanas atslēgu nevarēja iespējot. Lūdzu, pārbaudiet atkopšanas atslēgas paroli!", + "Could not enable recovery key. Please check your recovery key password!" : "Atkopes atslēgu nevarēja iespējot. Lūgums pārbaudīt atkopes atslēgas paroli.", "Recovery key successfully disabled" : "Atkopšanas atslēga ir veiksmīgi deaktivizēta", - "Could not disable recovery key. Please check your recovery key password!" : "Atkopšanas atslēgu nevarēja atspējot. Lūdzu, pārbaudiet atkopšanas atslēgas paroli!", + "Could not disable recovery key. Please check your recovery key password!" : "Atkopes atslēgu nevarēja atspējot. Lūgums pārbaudīt atkopes atslēgas paroli.", "Missing parameters" : "Trūkstošos parametrs", "Please provide the old recovery password" : "Lūgums norādīt iepriekšējo atkopes paroli", - "Please provide a new recovery password" : "Lūdzu, ievadiet jaunu paroli", - "Please repeat the new recovery password" : "Lūdzu, atkārtojiet jauno atkopšanas paroli", + "Please provide a new recovery password" : "Lūgums norādīt jaunu atkopes paroli", + "Please repeat the new recovery password" : "Lūgums atkārtot jauno atkopes paroli", "Password successfully changed." : "Parole veiksmīgi nomainīta.", "Could not change the password. Maybe the old password was not correct." : "Nevarēja mainīt paroli. Varbūt vecā parole nav pareiza.", "Recovery Key disabled" : "Atkopšanas atslēga deaktivizēta", diff --git a/apps/encryption/lib/Crypto/EncryptAll.php b/apps/encryption/lib/Crypto/EncryptAll.php index d9db616e6f1..4ed75b85a93 100644 --- a/apps/encryption/lib/Crypto/EncryptAll.php +++ b/apps/encryption/lib/Crypto/EncryptAll.php @@ -12,6 +12,7 @@ use OC\Files\View; use OCA\Encryption\KeyManager; use OCA\Encryption\Users\Setup; use OCA\Encryption\Util; +use OCP\Files\FileInfo; use OCP\IConfig; use OCP\IL10N; use OCP\IUser; @@ -202,15 +203,19 @@ class EncryptAll { while ($root = array_pop($directories)) { $content = $this->rootView->getDirectoryContent($root); foreach ($content as $file) { - $path = $root . '/' . $file['name']; - if ($this->rootView->is_dir($path)) { + $path = $root . '/' . $file->getName(); + if ($file->isShared()) { + $progress->setMessage("Skip shared file/folder $path"); + $progress->advance(); + continue; + } elseif ($file->getType() === FileInfo::TYPE_FOLDER) { $directories[] = $path; continue; } else { $progress->setMessage("encrypt files for user $userCount: $path"); $progress->advance(); try { - if ($this->encryptFile($path) === false) { + if ($this->encryptFile($file, $path) === false) { $progress->setMessage("encrypt files for user $userCount: $path (already encrypted)"); $progress->advance(); } @@ -231,17 +236,9 @@ class EncryptAll { } } - /** - * encrypt file - * - * @param string $path - * @return bool - */ - protected function encryptFile($path) { - + protected function encryptFile(FileInfo $fileInfo, string $path): bool { // skip already encrypted files - $fileInfo = $this->rootView->getFileInfo($path); - if ($fileInfo !== false && $fileInfo->isEncrypted()) { + if ($fileInfo->isEncrypted()) { return true; } diff --git a/apps/encryption/tests/Crypto/EncryptAllTest.php b/apps/encryption/tests/Crypto/EncryptAllTest.php index 9b39c62b650..c56e3375a73 100644 --- a/apps/encryption/tests/Crypto/EncryptAllTest.php +++ b/apps/encryption/tests/Crypto/EncryptAllTest.php @@ -82,7 +82,7 @@ class EncryptAllTest extends TestCase { /** * We need format method to return a string - * @var OutputFormatterInterface|\PHPUnit\Framework\MockObject\MockObject + * @var OutputFormatterInterface&MockObject */ $outputFormatter = $this->createMock(OutputFormatterInterface::class); $outputFormatter->method('isDecorated')->willReturn(false); @@ -114,6 +114,13 @@ class EncryptAllTest extends TestCase { ); } + protected function createFileInfoMock($type, string $name): FileInfo&MockObject { + $fileInfo = $this->createMock(FileInfo::class); + $fileInfo->method('getType')->willReturn($type); + $fileInfo->method('getName')->willReturn($name); + return $fileInfo; + } + public function testEncryptAll(): void { /** @var EncryptAll&MockObject $encryptAll */ $encryptAll = $this->getMockBuilder(EncryptAll::class) @@ -299,8 +306,8 @@ class EncryptAllTest extends TestCase { '', null, [ - ['name' => 'foo', 'type' => 'dir'], - ['name' => 'bar', 'type' => 'file'], + $this->createFileInfoMock(FileInfo::TYPE_FOLDER, 'foo'), + $this->createFileInfoMock(FileInfo::TYPE_FILE, 'bar'), ], ], [ @@ -308,26 +315,17 @@ class EncryptAllTest extends TestCase { '', null, [ - ['name' => 'subfile', 'type' => 'file'] + $this->createFileInfoMock(FileInfo::TYPE_FILE, 'subfile'), ], ], ]); - $this->view->expects($this->any())->method('is_dir') - ->willReturnCallback( - function ($path) { - if ($path === '/user1/files/foo') { - return true; - } - return false; - } - ); - $encryptAllCalls = []; $encryptAll->expects($this->exactly(2)) ->method('encryptFile') - ->willReturnCallback(function (string $path) use (&$encryptAllCalls): void { + ->willReturnCallback(function (FileInfo $file, string $path) use (&$encryptAllCalls): bool { $encryptAllCalls[] = $path; + return true; }); $outputFormatter = $this->createMock(OutputFormatterInterface::class); @@ -362,8 +360,7 @@ class EncryptAllTest extends TestCase { $fileInfo = $this->createMock(FileInfo::class); $fileInfo->expects($this->any())->method('isEncrypted') ->willReturn($isEncrypted); - $this->view->expects($this->any())->method('getFileInfo') - ->willReturn($fileInfo); + $this->view->expects($this->never())->method('getFileInfo'); if ($isEncrypted) { @@ -375,7 +372,7 @@ class EncryptAllTest extends TestCase { } $this->assertTrue( - $this->invokePrivate($this->encryptAll, 'encryptFile', ['foo.txt']) + $this->invokePrivate($this->encryptAll, 'encryptFile', [$fileInfo, 'foo.txt']) ); } diff --git a/apps/files/l10n/be.js b/apps/files/l10n/be.js index 95faaefc29b..f4abbac4e1e 100644 --- a/apps/files/l10n/be.js +++ b/apps/files/l10n/be.js @@ -52,6 +52,7 @@ OC.L10N.register( "Files compatibility" : "Сумяшчальнасць файлаў", "File Management" : "Кіраванне файламі", "Home" : "Дадому", + "Target folder does not exist any more" : "Мэтавая папка больш не існуе", "Reload current directory" : "Перазагрузіць бягучы каталог", "Go to the \"{dir}\" directory" : "Перайсці да каталога \"{dir}\"", "Drag and drop files here to upload" : "Перацягніце файлы сюды, каб запампаваць іх", @@ -61,9 +62,14 @@ OC.L10N.register( "Folder is loading" : "Папка загружаецца", "Filename" : "Назва файла", "Folder name" : "Назва папкі", + "Renamed \"{oldName}\" to \"{newName}\"" : "\"{oldName}\" перайменаваны ў \"{newName}\"", "Rename file" : "Перайменаваць файл", "Folder" : "Папка", "Unknown file type" : "Невядомы тып файла", + "{ext} image" : "Відарыс {ext}", + "{ext} video" : "Відэа {ext}", + "{ext} audio" : "Аўдыя {ext} ", + "{ext} text" : "Тэкст {ext}", "Pending" : "У чаканні", "Unknown date" : "Невядомая дата", "Clear filter" : "Ачысціць фільтр", @@ -240,6 +246,7 @@ OC.L10N.register( "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} файл і 1 папка","{fileCount} файлы і 1 папка","{fileCount} файлаў і 1 папка","{fileCount} файлаў і 1 папка"], "All folders" : "Усе папкі", "Personal Files" : "Асабістыя файлы", - "Text file" : "Тэкставы файл" + "Text file" : "Тэкставы файл", + "%1$s (renamed)" : "%1$s (перайменаваны)" }, "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/files/l10n/be.json b/apps/files/l10n/be.json index 4ab7c807963..574986cfa04 100644 --- a/apps/files/l10n/be.json +++ b/apps/files/l10n/be.json @@ -50,6 +50,7 @@ "Files compatibility" : "Сумяшчальнасць файлаў", "File Management" : "Кіраванне файламі", "Home" : "Дадому", + "Target folder does not exist any more" : "Мэтавая папка больш не існуе", "Reload current directory" : "Перазагрузіць бягучы каталог", "Go to the \"{dir}\" directory" : "Перайсці да каталога \"{dir}\"", "Drag and drop files here to upload" : "Перацягніце файлы сюды, каб запампаваць іх", @@ -59,9 +60,14 @@ "Folder is loading" : "Папка загружаецца", "Filename" : "Назва файла", "Folder name" : "Назва папкі", + "Renamed \"{oldName}\" to \"{newName}\"" : "\"{oldName}\" перайменаваны ў \"{newName}\"", "Rename file" : "Перайменаваць файл", "Folder" : "Папка", "Unknown file type" : "Невядомы тып файла", + "{ext} image" : "Відарыс {ext}", + "{ext} video" : "Відэа {ext}", + "{ext} audio" : "Аўдыя {ext} ", + "{ext} text" : "Тэкст {ext}", "Pending" : "У чаканні", "Unknown date" : "Невядомая дата", "Clear filter" : "Ачысціць фільтр", @@ -238,6 +244,7 @@ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} файл і 1 папка","{fileCount} файлы і 1 папка","{fileCount} файлаў і 1 папка","{fileCount} файлаў і 1 папка"], "All folders" : "Усе папкі", "Personal Files" : "Асабістыя файлы", - "Text file" : "Тэкставы файл" + "Text file" : "Тэкставы файл", + "%1$s (renamed)" : "%1$s (перайменаваны)" },"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/files/l10n/es.js b/apps/files/l10n/es.js index 6e32740a677..0d21bdef976 100644 --- a/apps/files/l10n/es.js +++ b/apps/files/l10n/es.js @@ -1,9 +1,9 @@ OC.L10N.register( "files", { - "Added to favorites" : "Agregado a favoritos", + "Added to favorites" : "Añadido a favoritos", "Removed from favorites" : "Quitado de favoritos", - "You added {file} to your favorites" : "Has agregado {file} a tus favoritos", + "You added {file} to your favorites" : "Has añadido {file} a tus favoritos", "You removed {file} from your favorites" : "Has quitado {file} de tus favoritos", "Favorites" : "Favoritos", "File changes" : "Cambios del archivo", @@ -39,10 +39,10 @@ OC.L10N.register( "{user} renamed {oldfile} to {newfile}" : "{user} ha renombrado {oldfile} a {newfile}", "You moved {oldfile} to {newfile}" : "Has movido {oldfile} a {newfile}", "{user} moved {oldfile} to {newfile}" : "{user} movió {oldfile} a {newfile}", - "A file has been added to or removed from your <strong>favorites</strong>" : "Un archivo fue agregado o borrado de tus <strong>favoritos</strong>", + "A file has been added to or removed from your <strong>favorites</strong>" : "Un archivo se ha añadido o borrado de tus <strong>favoritos</strong>", "Files" : "Archivos", "A file or folder has been <strong>changed</strong>" : "Se ha <strong>modificado</strong> un archivo o carpeta", - "A favorite file or folder has been <strong>changed</strong>" : "Un archivo o carpeta favorito ha sido <strong>cambiado</strong>", + "A favorite file or folder has been <strong>changed</strong>" : "Un archivo favorito o carpeta se ha <strong>cambiado</strong>", "Failed to authorize" : "Fallo al autorizar", "Invalid folder path" : "Ruta de carpeta inválida", "Folder not found" : "Carpeta no encontrada", @@ -129,6 +129,7 @@ OC.L10N.register( "Search globally by filename …" : "Búsqueda global por nombre de archivo …", "Search here by filename …" : "Buscar aquí por nombre de archivo …", "Search scope options" : "Opciones de alcance de la búsqueda", + "Filter and search from this location" : "Filtrar y buscar en esta ubicación", "Search globally" : "Buscar globalmente", "{usedQuotaByte} used" : "{usedQuotaByte} utilizados", "{used} of {quota} used" : "{used} usados de {quota}", @@ -141,6 +142,7 @@ OC.L10N.register( "Create new folder" : "Crear carpeta nueva", "This name is already in use." : "Este nombre ya está en uso.", "Create" : "Crear", + "Files starting with a dot are hidden by default" : "Los archivos que comienzan con un punto son ocultados por defecto", "Fill template fields" : "Rellenar los campos de la plantilla", "Submitting fields …" : "Enviando campos …", "Submit" : "Enviar", @@ -182,7 +184,7 @@ OC.L10N.register( "Loading current folder" : "Cargando carpeta actual", "Retry" : "Reintentar", "No files in here" : "Aquí no hay archivos", - "Upload some content or sync with your devices!" : "¡Suba contenidos o sincronice sus dispositivos!", + "Upload some content or sync with your devices!" : "¡Sube contenido o sincroniza tus dispositivos!", "Go back" : "Ir atrás", "Views" : "Vistas", "Files settings" : "Configuración de archivos", @@ -200,16 +202,21 @@ OC.L10N.register( "Sort favorites first" : "Ordenar los favoritos primero", "Sort folders before files" : "Ordenar carpetas antes que archivos", "Enable folder tree" : "Habilitar el árbol de carpetas", + "Visual settings" : "Ajustes visuales", "Show hidden files" : "Mostrar archivos ocultos", "Show file type column" : "Mostrar la columna de tipo de archivo", "Crop image previews" : "Recortar la previsualización de las imágenes", + "Show files extensions" : "Mostrar extensiones de archivos", "Additional settings" : "Ajustes adicionales", "WebDAV" : "WebDAV", - "WebDAV URL" : "WebDAV URL", + "WebDAV URL" : "URL de WebDAV", "Copy to clipboard" : "Copiar al portapapeles", + "Use this address to access your Files via WebDAV." : "Usa esta dirección para acceder a tus Archivos a través de WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "La autenticación en dos pasos está habilitada para su cuenta y, por lo tanto, debe usar una contraseña de aplicación para conectarse a un cliente WebDAV externo.", "Warnings" : "Advertencias", "Prevent warning dialogs from open or reenable them." : "Evitar que se abran los diálogos de advertencia o volver a habilitarlos.", "Show a warning dialog when changing a file extension." : "Mostrar un diálogo de advertencia cuando se cambia la extensión de un archivo.", + "Show a warning dialog when deleting files." : "Mostrar un cuadro de aviso cuando se borren archivos.", "Keyboard shortcuts" : "Atajos de teclado", "Speed up your Files experience with these quick shortcuts." : "Acelere su experiencia con Archivos con esos rápidos atajos de teclado.", "Open the actions menu for a file" : "Abrir el menú de acciones para un archivo", @@ -327,6 +334,7 @@ OC.L10N.register( "Templates" : "Plantillas", "New template folder" : "Nueva carpeta de plantillas", "In folder" : "En carpeta", + "Search in all files" : "Buscar en todos los archivos", "Search in folder: {folder}" : "Buscar en carpeta: {folder}", "One of the dropped files could not be processed" : "Uno de los archivos arrastrados no puede ser procesado", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Su navegador no soporta la API de Sistema de archivos. Los directorios no se subirán", @@ -360,6 +368,7 @@ OC.L10N.register( "No favorites yet" : "Aún no hay favoritos", "Files and folders you mark as favorite will show up here" : "Aquí aparecerán los archivos y carpetas que has marcado como favoritos", "List of your files and folders." : "Lista de sus archivos y carpetas.", + "Folder tree" : "Árbol de carpetas", "List of your files and folders that are not shared." : "Lista de sus archivos y carpetas que no están compartidos.", "No personal files found" : "No se encontraron archivos personales", "Files that are not shared will show up here." : "Los archivos y carpetas que no ha compartido aparecerán aquí.", @@ -372,12 +381,12 @@ OC.L10N.register( "No entries found in this folder" : "No hay entradas en esta carpeta", "Select all" : "Seleccionar todo", "Upload too large" : "Subida demasido grande", - "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Los archivos que está intentando subir sobrepasan el tamaño máximo permitido en este servidor.", + "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Los archivos que estás intentando subir sobrepasan el tamaño máximo permitido en este servidor.", "File could not be found" : "El archivo no se ha encontrado", "Show list view" : "Mostrar vista de lista", "Show grid view" : "Mostrar vista de cuadrícula", "Close" : "Cerrar", - "Could not create folder \"{dir}\"" : "No se pudo crear la carpeta \"{dir}\"", + "Could not create folder \"{dir}\"" : "No se ha podido crear la carpeta \"{dir}\"", "This will stop your current uploads." : "Esto detendrá las subidas en curso.", "Upload cancelled." : "Subida cancelada.", "Processing files …" : "Procesando archivos …", @@ -385,7 +394,7 @@ OC.L10N.register( "Unable to upload {filename} as it is a directory or has 0 bytes" : "No ha sido posible subir {filename} porque es un directorio o tiene 0 bytes", "Not enough free space, you are uploading {size1} but only {size2} is left" : "No hay suficiente espacio libre. Quiere subir {size1} pero solo quedan {size2}", "Target folder \"{dir}\" does not exist any more" : "La carpeta de destino \"{dir}\" ya no existe", - "An unknown error has occurred" : "Ha ocurrido un error desconocido", + "An unknown error has occurred" : "Se ha producido un error desconocido", "File could not be uploaded" : "No se ha podido subir el archivo", "Uploading …" : "Subiendo …", "{remainingTime} ({currentNumber}/{total})" : "{remainingTime} ({currentNumber}/{total})", @@ -404,18 +413,18 @@ OC.L10N.register( "Select directory \"{dirName}\"" : "Seleccione la carpeta \"{dirName}\"", "Select file \"{fileName}\"" : "Seleccione el archivo \"{fileName}\"", "Unable to determine date" : "No se ha podido determinar la fecha", - "Could not move \"{file}\", target exists" : "No se pudo mover \"{file}\", ya existe", - "Could not move \"{file}\"" : "No se pudo mover \"{file}\"", + "Could not move \"{file}\", target exists" : "No se ha podido mover \"{file}\", ya existe", + "Could not move \"{file}\"" : "No se ha podido mover \"{file}\"", "copy" : "copiar", "Could not copy \"{file}\", target exists" : "No se ha podido copiar \"{file}\", ya existe el destino", "Could not copy \"{file}\"" : "No se ha podido copiar \"{file}\"", "Copied {origin} inside {destination}" : "Se ha copiado {origin} dentro de {destination}", "Copied {origin} and {nbfiles} other files inside {destination}" : "Se han copiado {origin} y {nbfiles} otros archivos dentro de {destination}", "{newName} already exists" : "{newName} ya existe", - "Could not create file \"{file}\"" : "No se pudo crear archivo \"{file}\"", + "Could not create file \"{file}\"" : "No se ha podido crear el archivo \"{file}\"", "Could not create file \"{file}\" because it already exists" : "No se pudo crear archivo \"{file}\" porque ya existe", "Could not create folder \"{dir}\" because it already exists" : "No se ha podido crear la carpeta \"{dir}\" porque ya existe", - "Could not fetch file details \"{file}\"" : "No se pudieron obtener los detalles de \"{file}\"", + "Could not fetch file details \"{file}\"" : "No se han podido obtener los detalles de \"{file}\"", "Error deleting file \"{fileName}\"." : "Error al borrar el archivo \"{fileName}\".", "No search results in other folders for {tag}{filter}{endtag}" : "No hay resultados de búsqueda en otras carpetas para {tag}{filter}{endtag}", "Enter more than two characters to search in other folders" : "Escriba más de dos caracteres para buscar en otras carpetas", @@ -428,7 +437,7 @@ OC.L10N.register( "Select file range" : "Seleccionar el rango de archivos", "{used}%" : "{used}%", "{used} used" : "{used} usados", - "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido.", + "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo no válido.", "File name cannot be empty." : "El nombre de archivo no puede estar vacío.", "\"/\" is not allowed inside a file name." : "\"/\" no se permite en un nombre de archivo.", "\"{name}\" is not an allowed filetype" : "\"{name}\" no es un tipo de archivo permitido", @@ -446,10 +455,10 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n byte","%n bytes","%n bytes"], "Favored" : "Favorecido", "Favor" : "Favorecer", - "Copy direct link (only works for people who have access to this file/folder)" : "El enlace directo fue copiado (solo funciona para usuarios que tienen acceso a este archivo/carpeta)", + "Copy direct link (only works for people who have access to this file/folder)" : "Copiar enlace directo (solo funciona para usuarios que tienen acceso a este archivo/carpeta)", "Upload file" : "Subir archivo", "Not favored" : "No favorecido", - "An error occurred while trying to update the tags" : "Se produjo un error al tratar de actualizar las etiquetas", + "An error occurred while trying to update the tags" : "Se ha producido un error al tratar de actualizar las etiquetas", "Upload (max. %s)" : "Subida (máx. %s)", "Submitting fields…" : "Enviando campos…", "Filter filenames…" : "Filtrar nombres de archivo…", diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json index c13b8161666..440e426013c 100644 --- a/apps/files/l10n/es.json +++ b/apps/files/l10n/es.json @@ -1,7 +1,7 @@ { "translations": { - "Added to favorites" : "Agregado a favoritos", + "Added to favorites" : "Añadido a favoritos", "Removed from favorites" : "Quitado de favoritos", - "You added {file} to your favorites" : "Has agregado {file} a tus favoritos", + "You added {file} to your favorites" : "Has añadido {file} a tus favoritos", "You removed {file} from your favorites" : "Has quitado {file} de tus favoritos", "Favorites" : "Favoritos", "File changes" : "Cambios del archivo", @@ -37,10 +37,10 @@ "{user} renamed {oldfile} to {newfile}" : "{user} ha renombrado {oldfile} a {newfile}", "You moved {oldfile} to {newfile}" : "Has movido {oldfile} a {newfile}", "{user} moved {oldfile} to {newfile}" : "{user} movió {oldfile} a {newfile}", - "A file has been added to or removed from your <strong>favorites</strong>" : "Un archivo fue agregado o borrado de tus <strong>favoritos</strong>", + "A file has been added to or removed from your <strong>favorites</strong>" : "Un archivo se ha añadido o borrado de tus <strong>favoritos</strong>", "Files" : "Archivos", "A file or folder has been <strong>changed</strong>" : "Se ha <strong>modificado</strong> un archivo o carpeta", - "A favorite file or folder has been <strong>changed</strong>" : "Un archivo o carpeta favorito ha sido <strong>cambiado</strong>", + "A favorite file or folder has been <strong>changed</strong>" : "Un archivo favorito o carpeta se ha <strong>cambiado</strong>", "Failed to authorize" : "Fallo al autorizar", "Invalid folder path" : "Ruta de carpeta inválida", "Folder not found" : "Carpeta no encontrada", @@ -127,6 +127,7 @@ "Search globally by filename …" : "Búsqueda global por nombre de archivo …", "Search here by filename …" : "Buscar aquí por nombre de archivo …", "Search scope options" : "Opciones de alcance de la búsqueda", + "Filter and search from this location" : "Filtrar y buscar en esta ubicación", "Search globally" : "Buscar globalmente", "{usedQuotaByte} used" : "{usedQuotaByte} utilizados", "{used} of {quota} used" : "{used} usados de {quota}", @@ -139,6 +140,7 @@ "Create new folder" : "Crear carpeta nueva", "This name is already in use." : "Este nombre ya está en uso.", "Create" : "Crear", + "Files starting with a dot are hidden by default" : "Los archivos que comienzan con un punto son ocultados por defecto", "Fill template fields" : "Rellenar los campos de la plantilla", "Submitting fields …" : "Enviando campos …", "Submit" : "Enviar", @@ -180,7 +182,7 @@ "Loading current folder" : "Cargando carpeta actual", "Retry" : "Reintentar", "No files in here" : "Aquí no hay archivos", - "Upload some content or sync with your devices!" : "¡Suba contenidos o sincronice sus dispositivos!", + "Upload some content or sync with your devices!" : "¡Sube contenido o sincroniza tus dispositivos!", "Go back" : "Ir atrás", "Views" : "Vistas", "Files settings" : "Configuración de archivos", @@ -198,16 +200,21 @@ "Sort favorites first" : "Ordenar los favoritos primero", "Sort folders before files" : "Ordenar carpetas antes que archivos", "Enable folder tree" : "Habilitar el árbol de carpetas", + "Visual settings" : "Ajustes visuales", "Show hidden files" : "Mostrar archivos ocultos", "Show file type column" : "Mostrar la columna de tipo de archivo", "Crop image previews" : "Recortar la previsualización de las imágenes", + "Show files extensions" : "Mostrar extensiones de archivos", "Additional settings" : "Ajustes adicionales", "WebDAV" : "WebDAV", - "WebDAV URL" : "WebDAV URL", + "WebDAV URL" : "URL de WebDAV", "Copy to clipboard" : "Copiar al portapapeles", + "Use this address to access your Files via WebDAV." : "Usa esta dirección para acceder a tus Archivos a través de WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "La autenticación en dos pasos está habilitada para su cuenta y, por lo tanto, debe usar una contraseña de aplicación para conectarse a un cliente WebDAV externo.", "Warnings" : "Advertencias", "Prevent warning dialogs from open or reenable them." : "Evitar que se abran los diálogos de advertencia o volver a habilitarlos.", "Show a warning dialog when changing a file extension." : "Mostrar un diálogo de advertencia cuando se cambia la extensión de un archivo.", + "Show a warning dialog when deleting files." : "Mostrar un cuadro de aviso cuando se borren archivos.", "Keyboard shortcuts" : "Atajos de teclado", "Speed up your Files experience with these quick shortcuts." : "Acelere su experiencia con Archivos con esos rápidos atajos de teclado.", "Open the actions menu for a file" : "Abrir el menú de acciones para un archivo", @@ -325,6 +332,7 @@ "Templates" : "Plantillas", "New template folder" : "Nueva carpeta de plantillas", "In folder" : "En carpeta", + "Search in all files" : "Buscar en todos los archivos", "Search in folder: {folder}" : "Buscar en carpeta: {folder}", "One of the dropped files could not be processed" : "Uno de los archivos arrastrados no puede ser procesado", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Su navegador no soporta la API de Sistema de archivos. Los directorios no se subirán", @@ -358,6 +366,7 @@ "No favorites yet" : "Aún no hay favoritos", "Files and folders you mark as favorite will show up here" : "Aquí aparecerán los archivos y carpetas que has marcado como favoritos", "List of your files and folders." : "Lista de sus archivos y carpetas.", + "Folder tree" : "Árbol de carpetas", "List of your files and folders that are not shared." : "Lista de sus archivos y carpetas que no están compartidos.", "No personal files found" : "No se encontraron archivos personales", "Files that are not shared will show up here." : "Los archivos y carpetas que no ha compartido aparecerán aquí.", @@ -370,12 +379,12 @@ "No entries found in this folder" : "No hay entradas en esta carpeta", "Select all" : "Seleccionar todo", "Upload too large" : "Subida demasido grande", - "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Los archivos que está intentando subir sobrepasan el tamaño máximo permitido en este servidor.", + "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Los archivos que estás intentando subir sobrepasan el tamaño máximo permitido en este servidor.", "File could not be found" : "El archivo no se ha encontrado", "Show list view" : "Mostrar vista de lista", "Show grid view" : "Mostrar vista de cuadrícula", "Close" : "Cerrar", - "Could not create folder \"{dir}\"" : "No se pudo crear la carpeta \"{dir}\"", + "Could not create folder \"{dir}\"" : "No se ha podido crear la carpeta \"{dir}\"", "This will stop your current uploads." : "Esto detendrá las subidas en curso.", "Upload cancelled." : "Subida cancelada.", "Processing files …" : "Procesando archivos …", @@ -383,7 +392,7 @@ "Unable to upload {filename} as it is a directory or has 0 bytes" : "No ha sido posible subir {filename} porque es un directorio o tiene 0 bytes", "Not enough free space, you are uploading {size1} but only {size2} is left" : "No hay suficiente espacio libre. Quiere subir {size1} pero solo quedan {size2}", "Target folder \"{dir}\" does not exist any more" : "La carpeta de destino \"{dir}\" ya no existe", - "An unknown error has occurred" : "Ha ocurrido un error desconocido", + "An unknown error has occurred" : "Se ha producido un error desconocido", "File could not be uploaded" : "No se ha podido subir el archivo", "Uploading …" : "Subiendo …", "{remainingTime} ({currentNumber}/{total})" : "{remainingTime} ({currentNumber}/{total})", @@ -402,18 +411,18 @@ "Select directory \"{dirName}\"" : "Seleccione la carpeta \"{dirName}\"", "Select file \"{fileName}\"" : "Seleccione el archivo \"{fileName}\"", "Unable to determine date" : "No se ha podido determinar la fecha", - "Could not move \"{file}\", target exists" : "No se pudo mover \"{file}\", ya existe", - "Could not move \"{file}\"" : "No se pudo mover \"{file}\"", + "Could not move \"{file}\", target exists" : "No se ha podido mover \"{file}\", ya existe", + "Could not move \"{file}\"" : "No se ha podido mover \"{file}\"", "copy" : "copiar", "Could not copy \"{file}\", target exists" : "No se ha podido copiar \"{file}\", ya existe el destino", "Could not copy \"{file}\"" : "No se ha podido copiar \"{file}\"", "Copied {origin} inside {destination}" : "Se ha copiado {origin} dentro de {destination}", "Copied {origin} and {nbfiles} other files inside {destination}" : "Se han copiado {origin} y {nbfiles} otros archivos dentro de {destination}", "{newName} already exists" : "{newName} ya existe", - "Could not create file \"{file}\"" : "No se pudo crear archivo \"{file}\"", + "Could not create file \"{file}\"" : "No se ha podido crear el archivo \"{file}\"", "Could not create file \"{file}\" because it already exists" : "No se pudo crear archivo \"{file}\" porque ya existe", "Could not create folder \"{dir}\" because it already exists" : "No se ha podido crear la carpeta \"{dir}\" porque ya existe", - "Could not fetch file details \"{file}\"" : "No se pudieron obtener los detalles de \"{file}\"", + "Could not fetch file details \"{file}\"" : "No se han podido obtener los detalles de \"{file}\"", "Error deleting file \"{fileName}\"." : "Error al borrar el archivo \"{fileName}\".", "No search results in other folders for {tag}{filter}{endtag}" : "No hay resultados de búsqueda en otras carpetas para {tag}{filter}{endtag}", "Enter more than two characters to search in other folders" : "Escriba más de dos caracteres para buscar en otras carpetas", @@ -426,7 +435,7 @@ "Select file range" : "Seleccionar el rango de archivos", "{used}%" : "{used}%", "{used} used" : "{used} usados", - "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido.", + "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo no válido.", "File name cannot be empty." : "El nombre de archivo no puede estar vacío.", "\"/\" is not allowed inside a file name." : "\"/\" no se permite en un nombre de archivo.", "\"{name}\" is not an allowed filetype" : "\"{name}\" no es un tipo de archivo permitido", @@ -444,10 +453,10 @@ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes","%n bytes"], "Favored" : "Favorecido", "Favor" : "Favorecer", - "Copy direct link (only works for people who have access to this file/folder)" : "El enlace directo fue copiado (solo funciona para usuarios que tienen acceso a este archivo/carpeta)", + "Copy direct link (only works for people who have access to this file/folder)" : "Copiar enlace directo (solo funciona para usuarios que tienen acceso a este archivo/carpeta)", "Upload file" : "Subir archivo", "Not favored" : "No favorecido", - "An error occurred while trying to update the tags" : "Se produjo un error al tratar de actualizar las etiquetas", + "An error occurred while trying to update the tags" : "Se ha producido un error al tratar de actualizar las etiquetas", "Upload (max. %s)" : "Subida (máx. %s)", "Submitting fields…" : "Enviando campos…", "Filter filenames…" : "Filtrar nombres de archivo…", diff --git a/apps/files/l10n/mk.js b/apps/files/l10n/mk.js index 8d9883c4dd5..80f697aad04 100644 --- a/apps/files/l10n/mk.js +++ b/apps/files/l10n/mk.js @@ -277,15 +277,24 @@ OC.L10N.register( "This year ({year})" : "Оваа година ({year})", "Last year ({year})" : "Минатата година ({year})", "Documents" : "Документи", + "Spreadsheets" : "Табели", + "Presentations" : "Презентации", + "PDFs" : "PDF-и", "Folders" : "Папки", "Audio" : "Аудио", + "Photos and images" : "Фотографии и слики", "Videos" : "Видеа", "Created new folder \"{name}\"" : "Креирана нова папка \"{name}\"", "Unable to initialize the templates directory" : "Не може да се иницијализира папка за шаблони", "Create templates folder" : "Креирај папка за шаблони", "Templates" : "Шаблони", "New template folder" : "Нова папка за шаблони", + "In folder" : "Во папка", + "Search in folder: {folder}" : "Барај во папка: {folder}", "One of the dropped files could not be processed" : "Една од испуштените датотеки неможе да се процесоира", + "Unable to create the directory {directory}" : "Неможе да се креира папка {directory}", + "Some files could not be uploaded" : "Некој датотеки неможат да се прикачат", + "Files uploaded successfully" : "Успешно прикачени датотеки", "Some files could not be moved" : "Некои датотеки не можат да се преместат", "Could not rename \"{oldName}\", it does not exist any more" : "Неможе да се преименува \"{oldName}\", не постои повеќе", "The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Името \"{newName}\" веќе се користи во папката \"{dir}\". Ве молиме изберете друго име.", @@ -293,9 +302,15 @@ OC.L10N.register( "This operation is forbidden" : "Операцијата не е дозволена", "This directory is unavailable, please check the logs or contact the administrator" : "Овој директориум е недостапен, ве молиме проверете ги логовите или контактирајте со администраторот", "Storage is temporarily not available" : "Складиштето моментално не е достапно", + "Unexpected error: {error}" : "Неочекувана грешка: {error}", "_%n file_::_%n files_" : ["%n датотека","%n датотеки"], "_%n folder_::_%n folders_" : ["%n папка","%n папки"], "Filename must not be empty." : "Името на датотеката не може да биде празно.", + "\"{char}\" is not allowed inside a filename." : "\"{char}\" не е дозволен во името на датотеката.", + "\"{segment}\" is a reserved name and not allowed for filenames." : "\"{segment}\" е резервирано име и не е дозволено во името на датотеката.", + "\"{extension}\" is not an allowed filetype." : "\"{extension}\" не е дозволен вид на датотека.", + "Filenames must not end with \"{extension}\"." : "Името неможе да завршува со \"{extension}\".", + "List of favorite files and folders." : "Листа на омилени датотеки и папки.", "No favorites yet" : "Сеуште нема фаворити", "Files and folders you mark as favorite will show up here" : "Датотеките и папките кои ќе ги означите како чести, ќе се појават тука", "List of your files and folders." : "Листа на вашите датотеки и папки.", @@ -397,6 +412,8 @@ OC.L10N.register( "Personal Files" : "Лични датотеки", "Text file" : "Текстуална датотека", "New text file.txt" : "Нова текстуална датотека file.txt", + "%1$s (renamed)" : "%1$s (преименувано)", + "renamed file" : "преименувана датотека", "Filter file names …" : "Филтрирај имиња на датотеки ..." }, "nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"); diff --git a/apps/files/l10n/mk.json b/apps/files/l10n/mk.json index fca2b8d3b5c..bc76f3e5e86 100644 --- a/apps/files/l10n/mk.json +++ b/apps/files/l10n/mk.json @@ -275,15 +275,24 @@ "This year ({year})" : "Оваа година ({year})", "Last year ({year})" : "Минатата година ({year})", "Documents" : "Документи", + "Spreadsheets" : "Табели", + "Presentations" : "Презентации", + "PDFs" : "PDF-и", "Folders" : "Папки", "Audio" : "Аудио", + "Photos and images" : "Фотографии и слики", "Videos" : "Видеа", "Created new folder \"{name}\"" : "Креирана нова папка \"{name}\"", "Unable to initialize the templates directory" : "Не може да се иницијализира папка за шаблони", "Create templates folder" : "Креирај папка за шаблони", "Templates" : "Шаблони", "New template folder" : "Нова папка за шаблони", + "In folder" : "Во папка", + "Search in folder: {folder}" : "Барај во папка: {folder}", "One of the dropped files could not be processed" : "Една од испуштените датотеки неможе да се процесоира", + "Unable to create the directory {directory}" : "Неможе да се креира папка {directory}", + "Some files could not be uploaded" : "Некој датотеки неможат да се прикачат", + "Files uploaded successfully" : "Успешно прикачени датотеки", "Some files could not be moved" : "Некои датотеки не можат да се преместат", "Could not rename \"{oldName}\", it does not exist any more" : "Неможе да се преименува \"{oldName}\", не постои повеќе", "The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Името \"{newName}\" веќе се користи во папката \"{dir}\". Ве молиме изберете друго име.", @@ -291,9 +300,15 @@ "This operation is forbidden" : "Операцијата не е дозволена", "This directory is unavailable, please check the logs or contact the administrator" : "Овој директориум е недостапен, ве молиме проверете ги логовите или контактирајте со администраторот", "Storage is temporarily not available" : "Складиштето моментално не е достапно", + "Unexpected error: {error}" : "Неочекувана грешка: {error}", "_%n file_::_%n files_" : ["%n датотека","%n датотеки"], "_%n folder_::_%n folders_" : ["%n папка","%n папки"], "Filename must not be empty." : "Името на датотеката не може да биде празно.", + "\"{char}\" is not allowed inside a filename." : "\"{char}\" не е дозволен во името на датотеката.", + "\"{segment}\" is a reserved name and not allowed for filenames." : "\"{segment}\" е резервирано име и не е дозволено во името на датотеката.", + "\"{extension}\" is not an allowed filetype." : "\"{extension}\" не е дозволен вид на датотека.", + "Filenames must not end with \"{extension}\"." : "Името неможе да завршува со \"{extension}\".", + "List of favorite files and folders." : "Листа на омилени датотеки и папки.", "No favorites yet" : "Сеуште нема фаворити", "Files and folders you mark as favorite will show up here" : "Датотеките и папките кои ќе ги означите како чести, ќе се појават тука", "List of your files and folders." : "Листа на вашите датотеки и папки.", @@ -395,6 +410,8 @@ "Personal Files" : "Лични датотеки", "Text file" : "Текстуална датотека", "New text file.txt" : "Нова текстуална датотека file.txt", + "%1$s (renamed)" : "%1$s (преименувано)", + "renamed file" : "преименувана датотека", "Filter file names …" : "Филтрирај имиња на датотеки ..." },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" }
\ No newline at end of file diff --git a/apps/files/l10n/nl.js b/apps/files/l10n/nl.js index f47f58c3e5b..df811a5020e 100644 --- a/apps/files/l10n/nl.js +++ b/apps/files/l10n/nl.js @@ -142,6 +142,7 @@ OC.L10N.register( "Create new folder" : "Nieuwe map aanmaken", "This name is already in use." : "De naam is al in gebruik.", "Create" : "Aanmaken", + "Files starting with a dot are hidden by default" : "Bestanden die met een punt beginnen, worden standaard verborgen", "Fill template fields" : "Vul de velden van het sjabloon in", "Submitting fields …" : "Velden verwerken ...", "Submit" : "Verwerken", @@ -201,16 +202,21 @@ OC.L10N.register( "Sort favorites first" : "Sorteer eerst favorieten", "Sort folders before files" : "Sorteer mappen voor bestanden", "Enable folder tree" : "Mappenboom inschakelen", + "Visual settings" : "Visuele instellingen", "Show hidden files" : "Toon verborgen bestanden", "Show file type column" : "Toon bestandstypekolom", "Crop image previews" : "Snij afbeeldingvoorbeelden bij", + "Show files extensions" : "Bestanden extensies weergeven", "Additional settings" : "Aanvullende instellingen", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Kopiëren naar het klembord", + "Use this address to access your Files via WebDAV." : "Gebruik dit adres om toegang te krijgen tot je bestanden via WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Tweefactorauthenticatie is ingeschakeld voor jouw account en daarom moet je een app-wachtwoord gebruiken om een externe WebDAV-client aan te sluiten.", "Warnings" : "Waarschuwingen", "Prevent warning dialogs from open or reenable them." : "Voorkom dat waarschuwingsvensters worden geopend of schakel ze opnieuw in.", "Show a warning dialog when changing a file extension." : "Een waarschuwingsvenster tonen bij het wijzigen van een bestandsextensie.", + "Show a warning dialog when deleting files." : "Een waarschuwingsdialoogvenster tonen bij het verwijderen van bestanden.", "Keyboard shortcuts" : "Toetsenbord sneltoetsen", "Speed up your Files experience with these quick shortcuts." : "Verbeter je interactie met bestanden met deze snelkoppelingen.", "Open the actions menu for a file" : "Open het actiemenu voor een bestand", @@ -235,6 +241,7 @@ OC.L10N.register( "Show those shortcuts" : "Toon die snelkoppelingen", "You" : "Jij", "Shared multiple times with different people" : "Meerdere keren gedeeld met verschillende mensen", + "Unable to change the favorite state of the file" : "Kan de favoriete status van het bestand niet wijzigen", "Error while loading the file data" : "Fout bij het lezen van de bestandsgegevens", "Owner" : "Eigenaar", "Remove from favorites" : "Verwijderen uit favorieten", @@ -278,6 +285,8 @@ OC.L10N.register( "Download" : "Downloaden", "Moving \"{source}\" to \"{destination}\" …" : "Verplaatsen \"{source}\" naar \"{destination}\" …", "Copying \"{source}\" to \"{destination}\" …" : "Kopiëren \"{source}\" naar \"{destination}\" …", + "Destination is not a folder" : "Bestemming is geen map", + "This file/folder is already in that directory" : "Dit bestand/deze map staat al in die map", "You cannot move a file/folder onto itself or into a subfolder of itself" : "Je kan een bestand/map niet verplaatsen naar zichzelf of naar een subfolder van zichzelf.", "(copy)" : "(kopieer)", "(copy %n)" : "(kopieer %n)", @@ -325,6 +334,7 @@ OC.L10N.register( "Templates" : "Sjablonen", "New template folder" : "Nieuwe sjablonenmap", "In folder" : "In map", + "Search in all files" : "Zoeken in alle bestanden", "Search in folder: {folder}" : "Zoeken in map: {folder}", "One of the dropped files could not be processed" : "Een van de bestanden kon niet verwerkt worden.", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Je browser ondersteund de Filesystem API niet. Mappen worden niet geüpload", @@ -358,6 +368,7 @@ OC.L10N.register( "No favorites yet" : "Nog geen favorieten", "Files and folders you mark as favorite will show up here" : "Bestanden en mappen die je als favoriet aanmerkt, worden hier getoond", "List of your files and folders." : "Lijst van je bestanden en mappen.", + "Folder tree" : "Mapboom", "List of your files and folders that are not shared." : "Lijst van je bestanden en mappen die niet gedeeld zijn.", "No personal files found" : "Geen persoonlijke bestanden gevonden", "Files that are not shared will show up here." : "Niet-gedeelde bestanden worden hier getoond.", @@ -366,6 +377,7 @@ OC.L10N.register( "No recently modified files" : "Geen recent gewijzigde bestanden", "Files and folders you recently modified will show up here." : "Bestanden en mappen die je recent gewijzigd hebt, worden hier getoond.", "Search" : "Zoeken", + "Search results within your files." : "Zoekresultaten binnen jouw bestanden.", "No entries found in this folder" : "Niets gevonden in deze map", "Select all" : "Alles selecteren", "Upload too large" : "Upload is te groot", diff --git a/apps/files/l10n/nl.json b/apps/files/l10n/nl.json index 86453ae1f00..268c846a8fb 100644 --- a/apps/files/l10n/nl.json +++ b/apps/files/l10n/nl.json @@ -140,6 +140,7 @@ "Create new folder" : "Nieuwe map aanmaken", "This name is already in use." : "De naam is al in gebruik.", "Create" : "Aanmaken", + "Files starting with a dot are hidden by default" : "Bestanden die met een punt beginnen, worden standaard verborgen", "Fill template fields" : "Vul de velden van het sjabloon in", "Submitting fields …" : "Velden verwerken ...", "Submit" : "Verwerken", @@ -199,16 +200,21 @@ "Sort favorites first" : "Sorteer eerst favorieten", "Sort folders before files" : "Sorteer mappen voor bestanden", "Enable folder tree" : "Mappenboom inschakelen", + "Visual settings" : "Visuele instellingen", "Show hidden files" : "Toon verborgen bestanden", "Show file type column" : "Toon bestandstypekolom", "Crop image previews" : "Snij afbeeldingvoorbeelden bij", + "Show files extensions" : "Bestanden extensies weergeven", "Additional settings" : "Aanvullende instellingen", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Kopiëren naar het klembord", + "Use this address to access your Files via WebDAV." : "Gebruik dit adres om toegang te krijgen tot je bestanden via WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Tweefactorauthenticatie is ingeschakeld voor jouw account en daarom moet je een app-wachtwoord gebruiken om een externe WebDAV-client aan te sluiten.", "Warnings" : "Waarschuwingen", "Prevent warning dialogs from open or reenable them." : "Voorkom dat waarschuwingsvensters worden geopend of schakel ze opnieuw in.", "Show a warning dialog when changing a file extension." : "Een waarschuwingsvenster tonen bij het wijzigen van een bestandsextensie.", + "Show a warning dialog when deleting files." : "Een waarschuwingsdialoogvenster tonen bij het verwijderen van bestanden.", "Keyboard shortcuts" : "Toetsenbord sneltoetsen", "Speed up your Files experience with these quick shortcuts." : "Verbeter je interactie met bestanden met deze snelkoppelingen.", "Open the actions menu for a file" : "Open het actiemenu voor een bestand", @@ -233,6 +239,7 @@ "Show those shortcuts" : "Toon die snelkoppelingen", "You" : "Jij", "Shared multiple times with different people" : "Meerdere keren gedeeld met verschillende mensen", + "Unable to change the favorite state of the file" : "Kan de favoriete status van het bestand niet wijzigen", "Error while loading the file data" : "Fout bij het lezen van de bestandsgegevens", "Owner" : "Eigenaar", "Remove from favorites" : "Verwijderen uit favorieten", @@ -276,6 +283,8 @@ "Download" : "Downloaden", "Moving \"{source}\" to \"{destination}\" …" : "Verplaatsen \"{source}\" naar \"{destination}\" …", "Copying \"{source}\" to \"{destination}\" …" : "Kopiëren \"{source}\" naar \"{destination}\" …", + "Destination is not a folder" : "Bestemming is geen map", + "This file/folder is already in that directory" : "Dit bestand/deze map staat al in die map", "You cannot move a file/folder onto itself or into a subfolder of itself" : "Je kan een bestand/map niet verplaatsen naar zichzelf of naar een subfolder van zichzelf.", "(copy)" : "(kopieer)", "(copy %n)" : "(kopieer %n)", @@ -323,6 +332,7 @@ "Templates" : "Sjablonen", "New template folder" : "Nieuwe sjablonenmap", "In folder" : "In map", + "Search in all files" : "Zoeken in alle bestanden", "Search in folder: {folder}" : "Zoeken in map: {folder}", "One of the dropped files could not be processed" : "Een van de bestanden kon niet verwerkt worden.", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Je browser ondersteund de Filesystem API niet. Mappen worden niet geüpload", @@ -356,6 +366,7 @@ "No favorites yet" : "Nog geen favorieten", "Files and folders you mark as favorite will show up here" : "Bestanden en mappen die je als favoriet aanmerkt, worden hier getoond", "List of your files and folders." : "Lijst van je bestanden en mappen.", + "Folder tree" : "Mapboom", "List of your files and folders that are not shared." : "Lijst van je bestanden en mappen die niet gedeeld zijn.", "No personal files found" : "Geen persoonlijke bestanden gevonden", "Files that are not shared will show up here." : "Niet-gedeelde bestanden worden hier getoond.", @@ -364,6 +375,7 @@ "No recently modified files" : "Geen recent gewijzigde bestanden", "Files and folders you recently modified will show up here." : "Bestanden en mappen die je recent gewijzigd hebt, worden hier getoond.", "Search" : "Zoeken", + "Search results within your files." : "Zoekresultaten binnen jouw bestanden.", "No entries found in this folder" : "Niets gevonden in deze map", "Select all" : "Alles selecteren", "Upload too large" : "Upload is te groot", diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js index dfb00ab299c..e12a382ba5b 100644 --- a/apps/files/l10n/ru.js +++ b/apps/files/l10n/ru.js @@ -368,6 +368,7 @@ OC.L10N.register( "No favorites yet" : "В избранное ещё ничего не добавлено ", "Files and folders you mark as favorite will show up here" : "Здесь будут показаны файлы и каталоги, отмеченные как избранные", "List of your files and folders." : "Список ваших файлов и каталогов.", + "Folder tree" : "Дерево папок", "List of your files and folders that are not shared." : "Список ваших неопубликованных файлов и папок.", "No personal files found" : "Личные файлы не найдены", "Files that are not shared will show up here." : "Файлы, которые не опубликованы, показаны здесь.", diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json index 6b654cf6293..760f7c708b6 100644 --- a/apps/files/l10n/ru.json +++ b/apps/files/l10n/ru.json @@ -366,6 +366,7 @@ "No favorites yet" : "В избранное ещё ничего не добавлено ", "Files and folders you mark as favorite will show up here" : "Здесь будут показаны файлы и каталоги, отмеченные как избранные", "List of your files and folders." : "Список ваших файлов и каталогов.", + "Folder tree" : "Дерево папок", "List of your files and folders that are not shared." : "Список ваших неопубликованных файлов и папок.", "No personal files found" : "Личные файлы не найдены", "Files that are not shared will show up here." : "Файлы, которые не опубликованы, показаны здесь.", diff --git a/apps/files/l10n/sw.js b/apps/files/l10n/sw.js index 5c17b63bf8c..a19c26bde65 100644 --- a/apps/files/l10n/sw.js +++ b/apps/files/l10n/sw.js @@ -368,6 +368,7 @@ OC.L10N.register( "No favorites yet" : "Bado hakuna vinavyopendwa", "Files and folders you mark as favorite will show up here" : "Faili na visunduku ulivyoweka alama kama vipendwa vitaonekana hapa", "List of your files and folders." : "Orodha ya faili na vikasha vyako", + "Folder tree" : "Mti wa folda", "List of your files and folders that are not shared." : "Orodha ya faili na vikasha ambavyo havijashirikishwa", "No personal files found" : "Hakuna faili binafsi zilizopatikana", "Files that are not shared will show up here." : "Faili ambazo hazija shirikishwa zitaonekana hapa", diff --git a/apps/files/l10n/sw.json b/apps/files/l10n/sw.json index d87cd053623..eb0d873d19d 100644 --- a/apps/files/l10n/sw.json +++ b/apps/files/l10n/sw.json @@ -366,6 +366,7 @@ "No favorites yet" : "Bado hakuna vinavyopendwa", "Files and folders you mark as favorite will show up here" : "Faili na visunduku ulivyoweka alama kama vipendwa vitaonekana hapa", "List of your files and folders." : "Orodha ya faili na vikasha vyako", + "Folder tree" : "Mti wa folda", "List of your files and folders that are not shared." : "Orodha ya faili na vikasha ambavyo havijashirikishwa", "No personal files found" : "Hakuna faili binafsi zilizopatikana", "Files that are not shared will show up here." : "Faili ambazo hazija shirikishwa zitaonekana hapa", diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js index 2644bffadf7..4903a18b8f8 100644 --- a/apps/files/l10n/zh_CN.js +++ b/apps/files/l10n/zh_CN.js @@ -142,6 +142,7 @@ OC.L10N.register( "Create new folder" : "创建新文件夹", "This name is already in use." : "此名称已被使用。", "Create" : "创建", + "Files starting with a dot are hidden by default" : "以点开头的文件默认是隐藏的", "Fill template fields" : "填写模板字段", "Submitting fields …" : "正在提交字段…", "Submit" : "使用", @@ -201,16 +202,21 @@ OC.L10N.register( "Sort favorites first" : "收藏排序优先", "Sort folders before files" : "将文件夹排在文件前面", "Enable folder tree" : "启用文件夹树", + "Visual settings" : "视觉设置", "Show hidden files" : "显示隐藏文件", "Show file type column" : "显示文件类型列", "Crop image previews" : "裁剪图片预览", + "Show files extensions" : "显示文件扩展名", "Additional settings" : "其他设置", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "复制到剪贴板", + "Use this address to access your Files via WebDAV." : "使用此地址通过 WebDAV 访问您的文件。", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "您的账号已启用双因素身份验证,因此您需要使用应用密码来连接外部 WebDAV 客户端。", "Warnings" : "警告", "Prevent warning dialogs from open or reenable them." : "防止打开或重新启用警告对话框。", "Show a warning dialog when changing a file extension." : "更改文件扩展名时显示警告对话框。", + "Show a warning dialog when deleting files." : "删除文件时显示警告对话框。", "Keyboard shortcuts" : "键盘快捷键", "Speed up your Files experience with these quick shortcuts." : "这些快捷键可以加快你的“文件”体验。", "Open the actions menu for a file" : "打开文件的操作菜单", @@ -328,6 +334,7 @@ OC.L10N.register( "Templates" : "模板", "New template folder" : "新建模板文件夹", "In folder" : "文件夹内", + "Search in all files" : "在所有文件中搜索", "Search in folder: {folder}" : "在文件夹内搜索:{folder}", "One of the dropped files could not be processed" : "无法处理其中一个已删除的文件", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "你的浏览器不支持文件系统API。目录不会被上传", @@ -361,6 +368,7 @@ OC.L10N.register( "No favorites yet" : "暂无收藏", "Files and folders you mark as favorite will show up here" : "收藏的文件和文件夹会在这里显示", "List of your files and folders." : "您的文件与文件件列表。", + "Folder tree" : "文件夹树", "List of your files and folders that are not shared." : "尚未分享的文件与文件夹", "No personal files found" : "找不到个人文件", "Files that are not shared will show up here." : "尚未分享的文件会显示在此处", diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json index e519c6853c0..ef788c7c4e5 100644 --- a/apps/files/l10n/zh_CN.json +++ b/apps/files/l10n/zh_CN.json @@ -140,6 +140,7 @@ "Create new folder" : "创建新文件夹", "This name is already in use." : "此名称已被使用。", "Create" : "创建", + "Files starting with a dot are hidden by default" : "以点开头的文件默认是隐藏的", "Fill template fields" : "填写模板字段", "Submitting fields …" : "正在提交字段…", "Submit" : "使用", @@ -199,16 +200,21 @@ "Sort favorites first" : "收藏排序优先", "Sort folders before files" : "将文件夹排在文件前面", "Enable folder tree" : "启用文件夹树", + "Visual settings" : "视觉设置", "Show hidden files" : "显示隐藏文件", "Show file type column" : "显示文件类型列", "Crop image previews" : "裁剪图片预览", + "Show files extensions" : "显示文件扩展名", "Additional settings" : "其他设置", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "复制到剪贴板", + "Use this address to access your Files via WebDAV." : "使用此地址通过 WebDAV 访问您的文件。", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "您的账号已启用双因素身份验证,因此您需要使用应用密码来连接外部 WebDAV 客户端。", "Warnings" : "警告", "Prevent warning dialogs from open or reenable them." : "防止打开或重新启用警告对话框。", "Show a warning dialog when changing a file extension." : "更改文件扩展名时显示警告对话框。", + "Show a warning dialog when deleting files." : "删除文件时显示警告对话框。", "Keyboard shortcuts" : "键盘快捷键", "Speed up your Files experience with these quick shortcuts." : "这些快捷键可以加快你的“文件”体验。", "Open the actions menu for a file" : "打开文件的操作菜单", @@ -326,6 +332,7 @@ "Templates" : "模板", "New template folder" : "新建模板文件夹", "In folder" : "文件夹内", + "Search in all files" : "在所有文件中搜索", "Search in folder: {folder}" : "在文件夹内搜索:{folder}", "One of the dropped files could not be processed" : "无法处理其中一个已删除的文件", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "你的浏览器不支持文件系统API。目录不会被上传", @@ -359,6 +366,7 @@ "No favorites yet" : "暂无收藏", "Files and folders you mark as favorite will show up here" : "收藏的文件和文件夹会在这里显示", "List of your files and folders." : "您的文件与文件件列表。", + "Folder tree" : "文件夹树", "List of your files and folders that are not shared." : "尚未分享的文件与文件夹", "No personal files found" : "找不到个人文件", "Files that are not shared will show up here." : "尚未分享的文件会显示在此处", diff --git a/apps/files/l10n/zh_HK.js b/apps/files/l10n/zh_HK.js index f52260d6293..1fec104d77d 100644 --- a/apps/files/l10n/zh_HK.js +++ b/apps/files/l10n/zh_HK.js @@ -368,6 +368,7 @@ OC.L10N.register( "No favorites yet" : "尚無最愛", "Files and folders you mark as favorite will show up here" : "您標記為最愛的檔案與資料夾將會顯示在這裡", "List of your files and folders." : "您的檔案與資料夾清單。", + "Folder tree" : "資料夾樹", "List of your files and folders that are not shared." : "未分享的檔案與資料夾清單。", "No personal files found" : "找不到個人檔案", "Files that are not shared will show up here." : "尚未分享的檔案將會顯示在此處。", diff --git a/apps/files/l10n/zh_HK.json b/apps/files/l10n/zh_HK.json index a89b647ba40..a1a92d9d4f3 100644 --- a/apps/files/l10n/zh_HK.json +++ b/apps/files/l10n/zh_HK.json @@ -366,6 +366,7 @@ "No favorites yet" : "尚無最愛", "Files and folders you mark as favorite will show up here" : "您標記為最愛的檔案與資料夾將會顯示在這裡", "List of your files and folders." : "您的檔案與資料夾清單。", + "Folder tree" : "資料夾樹", "List of your files and folders that are not shared." : "未分享的檔案與資料夾清單。", "No personal files found" : "找不到個人檔案", "Files that are not shared will show up here." : "尚未分享的檔案將會顯示在此處。", diff --git a/apps/files/src/FilesApp.vue b/apps/files/src/FilesApp.vue index 54821a03457..6fc02113162 100644 --- a/apps/files/src/FilesApp.vue +++ b/apps/files/src/FilesApp.vue @@ -12,11 +12,10 @@ <script lang="ts"> import { isPublicShare } from '@nextcloud/sharing/public' import { defineComponent } from 'vue' - import NcContent from '@nextcloud/vue/components/NcContent' - import Navigation from './views/Navigation.vue' import FilesList from './views/FilesList.vue' +import { useHotKeys } from './composables/useHotKeys' export default defineComponent({ name: 'FilesApp', @@ -28,6 +27,9 @@ export default defineComponent({ }, setup() { + // Register global hotkeys + useHotKeys() + const isPublic = isPublicShare() return { diff --git a/apps/files/src/services/HotKeysService.spec.ts b/apps/files/src/composables/useHotKeys.spec.ts index 92430c8e6ad..9c001e8b5ff 100644 --- a/apps/files/src/services/HotKeysService.spec.ts +++ b/apps/files/src/composables/useHotKeys.spec.ts @@ -1,10 +1,14 @@ -/** +/* * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ + +import type { Location } from 'vue-router' + import { File, Folder, Permission, View } from '@nextcloud/files' -import { describe, it, vi, expect, beforeEach, beforeAll, afterEach } from 'vitest' -import { nextTick } from 'vue' +import { enableAutoDestroy, mount } from '@vue/test-utils' +import { describe, it, vi, expect, beforeEach, afterEach } from 'vitest' +import { defineComponent, nextTick } from 'vue' import axios from '@nextcloud/axios' import { getPinia } from '../store/index.ts' @@ -15,38 +19,64 @@ import { action as deleteAction } from '../actions/deleteAction.ts' import { action as favoriteAction } from '../actions/favoriteAction.ts' import { action as renameAction } from '../actions/renameAction.ts' import { action as sidebarAction } from '../actions/sidebarAction.ts' -import { registerHotkeys } from './HotKeysService.ts' +import { useHotKeys } from './useHotKeys.ts' import { useUserConfigStore } from '../store/userconfig.ts' +// this is the mocked current route +const route = vi.hoisted(() => ({ + name: 'test', + params: { + fileId: 123, + }, + query: { + openFile: 'false', + dir: '/parent/dir', + }, +})) + +// mocked router +const router = vi.hoisted(() => ({ + push: vi.fn<(route: Location) => void>(), +})) + +vi.mock('../actions/sidebarAction.ts', { spy: true }) +vi.mock('../actions/deleteAction.ts', { spy: true }) +vi.mock('../actions/favoriteAction.ts', { spy: true }) +vi.mock('../actions/renameAction.ts', { spy: true }) + +vi.mock('vue-router/composables', () => ({ + useRoute: vi.fn(() => route), + useRouter: vi.fn(() => router), +})) + let file: File const view = { id: 'files', name: 'Files', } as View -vi.mock('../actions/sidebarAction.ts', { spy: true }) -vi.mock('../actions/deleteAction.ts', { spy: true }) -vi.mock('../actions/favoriteAction.ts', { spy: true }) -vi.mock('../actions/renameAction.ts', { spy: true }) +const TestComponent = defineComponent({ + name: 'test', + setup() { + useHotKeys() + }, + template: '<div />', +}) describe('HotKeysService testing', () => { const activeStore = useActiveStore(getPinia()) - const goToRouteMock = vi.fn() - let initialState: HTMLInputElement + enableAutoDestroy(afterEach) + afterEach(() => { document.body.removeChild(initialState) }) - beforeAll(() => { - registerHotkeys() - }) - beforeEach(() => { // Make sure the router is reset before each test - goToRouteMock.mockClear() + router.push.mockClear() // Make sure the file is reset before each test file = new File({ @@ -66,9 +96,6 @@ describe('HotKeysService testing', () => { activeStore.activeNode = file window.OCA = { Files: { Sidebar: { open: () => {}, setActiveTab: () => {} } } } - // We only mock what needed, we do not need Files.Router.goTo or Files.Navigation - window.OCP = { Files: { Router: { goToRoute: goToRouteMock, params: {}, query: {} } } } - initialState = document.createElement('input') initialState.setAttribute('type', 'hidden') initialState.setAttribute('id', 'initial-state-files_trashbin-config') @@ -76,6 +103,8 @@ describe('HotKeysService testing', () => { allow_delete: true, }))) document.body.appendChild(initialState) + + mount(TestComponent) }) it('Pressing d should open the sidebar once', () => { @@ -135,13 +164,11 @@ describe('HotKeysService testing', () => { }) it('Pressing alt+up should go to parent directory', () => { - expect(goToRouteMock).toHaveBeenCalledTimes(0) - window.OCP.Files.Router.query = { dir: '/foo/bar' } - + expect(router.push).toHaveBeenCalledTimes(0) dispatchEvent({ key: 'ArrowUp', code: 'ArrowUp', altKey: true }) - expect(goToRouteMock).toHaveBeenCalledOnce() - expect(goToRouteMock.mock.calls[0][2].dir).toBe('/foo') + expect(router.push).toHaveBeenCalledOnce() + expect(router.push.mock.calls[0][0].query?.dir).toBe('/parent') }) it('Pressing v should toggle grid view', async () => { diff --git a/apps/files/src/services/HotKeysService.ts b/apps/files/src/composables/useHotKeys.ts index 1ed369b061b..ff56627b2f9 100644 --- a/apps/files/src/services/HotKeysService.ts +++ b/apps/files/src/composables/useHotKeys.ts @@ -4,13 +4,15 @@ */ import { useHotKey } from '@nextcloud/vue/composables/useHotKey' import { dirname } from 'path' +import { useRoute, useRouter } from 'vue-router/composables' import { action as deleteAction } from '../actions/deleteAction.ts' import { action as favoriteAction } from '../actions/favoriteAction.ts' import { action as renameAction } from '../actions/renameAction.ts' import { action as sidebarAction } from '../actions/sidebarAction.ts' -import { executeAction } from '../utils/actionUtils.ts' import { useUserConfigStore } from '../store/userconfig.ts' +import { useRouteParameters } from './useRouteParameters.ts' +import { executeAction } from '../utils/actionUtils.ts' import logger from '../logger.ts' /** @@ -18,7 +20,12 @@ import logger from '../logger.ts' * As much as possible, we try to have all the hotkeys in one place. * Please make sure to add tests for the hotkeys after adding a new one. */ -export const registerHotkeys = function() { +export function useHotKeys(): void { + const userConfigStore = useUserConfigStore() + const { directory } = useRouteParameters() + const router = useRouter() + const route = useRoute() + // d opens the sidebar useHotKey('d', () => executeAction(sidebarAction), { stop: true, @@ -57,26 +64,23 @@ export const registerHotkeys = function() { }) logger.debug('Hotkeys registered') -} - -const goToParentDir = function() { - const params = window.OCP.Files.Router?.params || {} - const query = window.OCP.Files.Router?.query || {} - const currentDir = (query?.dir || '/') as string - const parentDir = dirname(currentDir) + /** + * Use the router to go to the parent directory + */ + function goToParentDir() { + const dir = dirname(directory.value) - logger.debug('Navigating to parent directory', { parentDir }) - window.OCP.Files.Router.goToRoute( - null, - { ...params }, - { ...query, dir: parentDir }, - ) -} + logger.debug('Navigating to parent directory', { dir }) + router.push({ params: { ...route.params }, query: { ...route.query, dir } }) + } -const toggleGridView = function() { - const userConfigStore = useUserConfigStore() - const value = userConfigStore?.userConfig?.grid_view - logger.debug('Toggling grid view', { old: value, new: !value }) - userConfigStore.update('grid_view', !value) + /** + * Toggle the grid view + */ + function toggleGridView() { + const value = userConfigStore.userConfig.grid_view + logger.debug('Toggling grid view', { old: value, new: !value }) + userConfigStore.update('grid_view', !value) + } } diff --git a/apps/files/src/main.ts b/apps/files/src/main.ts index 4b8aca9efd4..463ecaf6239 100644 --- a/apps/files/src/main.ts +++ b/apps/files/src/main.ts @@ -8,7 +8,6 @@ import { PiniaVuePlugin } from 'pinia' import Vue from 'vue' import { getPinia } from './store/index.ts' -import { registerHotkeys } from './services/HotKeysService.ts' import FilesApp from './FilesApp.vue' import router from './router/router' import RouterService from './services/RouterService' @@ -40,9 +39,6 @@ if (!window.OCP.Files.Router) { // Init Pinia store Vue.use(PiniaVuePlugin) -// Init HotKeys AFTER pinia is set up -registerHotkeys() - // Init Files App Settings Service const Settings = new SettingsService() Object.assign(window.OCA.Files, { Settings }) diff --git a/apps/files_sharing/src/components/NewFileRequestDialog/NewFileRequestDialogDatePassword.vue b/apps/files_sharing/src/components/NewFileRequestDialog/NewFileRequestDialogDatePassword.vue index 4c14b21e1d5..7e6d56e8794 100644 --- a/apps/files_sharing/src/components/NewFileRequestDialog/NewFileRequestDialogDatePassword.vue +++ b/apps/files_sharing/src/components/NewFileRequestDialog/NewFileRequestDialogDatePassword.vue @@ -14,9 +14,9 @@ <fieldset class="file-request-dialog__expiration" data-cy-file-request-dialog-fieldset="expiration"> <!-- Enable expiration --> <legend>{{ t('files_sharing', 'When should the request expire?') }}</legend> - <NcCheckboxRadioSwitch v-show="!defaultExpireDateEnforced" - :checked="defaultExpireDateEnforced || expirationDate !== null" - :disabled="disabled || defaultExpireDateEnforced" + <NcCheckboxRadioSwitch v-show="!isExpirationDateEnforced" + :checked="isExpirationDateEnforced || expirationDate !== null" + :disabled="disabled || isExpirationDateEnforced" @update:checked="onToggleDeadline"> {{ t('files_sharing', 'Set a submission expiration date') }} </NcCheckboxRadioSwitch> @@ -46,9 +46,9 @@ <fieldset class="file-request-dialog__password" data-cy-file-request-dialog-fieldset="password"> <!-- Enable password --> <legend>{{ t('files_sharing', 'What password should be used for the request?') }}</legend> - <NcCheckboxRadioSwitch v-show="!enforcePasswordForPublicLink" - :checked="enforcePasswordForPublicLink || password !== null" - :disabled="disabled || enforcePasswordForPublicLink" + <NcCheckboxRadioSwitch v-show="!isPasswordEnforced" + :checked="isPasswordEnforced || password !== null" + :disabled="disabled || isPasswordEnforced" @update:checked="onTogglePassword"> {{ t('files_sharing', 'Set a password') }} </NcCheckboxRadioSwitch> @@ -59,7 +59,7 @@ :disabled="disabled" :label="t('files_sharing', 'Password')" :placeholder="t('files_sharing', 'Enter a valid password')" - :required="false" + :required="enforcePasswordForPublicLink" :value="password" name="password" @update:value="$emit('update:password', $event)" /> @@ -180,6 +180,18 @@ export default defineComponent({ return '' }, + + isExpirationDateEnforced(): boolean { + // Both fields needs to be enabled in the settings + return this.defaultExpireDateEnabled + && this.defaultExpireDateEnforced + }, + + isPasswordEnforced(): boolean { + // Both fields needs to be enabled in the settings + return this.enableLinkPasswordByDefault + && this.enforcePasswordForPublicLink + }, }, mounted() { @@ -189,12 +201,12 @@ export default defineComponent({ } // If enforced, we cannot set a date before the default expiration days (see admin settings) - if (this.defaultExpireDateEnforced) { + if (this.isExpirationDateEnforced) { this.maxDate = sharingConfig.defaultExpirationDate } // If enabled by default, we generate a valid password - if (this.enableLinkPasswordByDefault) { + if (this.isPasswordEnforced) { this.generatePassword() } }, diff --git a/apps/files_trashbin/l10n/lv.js b/apps/files_trashbin/l10n/lv.js new file mode 100644 index 00000000000..48a4a93e8e1 --- /dev/null +++ b/apps/files_trashbin/l10n/lv.js @@ -0,0 +1,18 @@ +OC.L10N.register( + "files_trashbin", + { + "restored" : "atjaunots", + "Deleted files" : "Izdzēstās datnes", + "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Atkritnē esošās izdzēstās datnes un mapes (var izbeigties izgūšanas laikā, ja trūkst krātuves vietas)", + "This application enables people to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the people file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent an account from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Šī lietotne sniedz cilvēkiem iespēju atjaunot datnes, kas tika izdzēstas no sistēmas. Tā tīmekļa saskarnē attēlo izdzēsto datņu sarakstu, un tai ir iespējas tās atjaunot cilvēku datņu mapēs vai neatgriezeniski noņemt no sistēmas. Datnes atjaunošana atjauno arī saistītās datnes versijas, ja ir iespējota versiju lietotne. Kad datne tiek izdzēsta no koplietojuma, to var atjaunot tādā pašā veidā, tomēr tā vairs nebūs koplietota. Pēc noklusējuma izdzēstās datnes atkritnē atrodas 30 dienas.\nLai novērstu konta diska vietas pārtēriņu, izdzēstās datnes neaizņems vairāk kā 50% no pašreiz pieejamās brīvās vietas izdzēstajām datnēm. Ja izdzēstās datnes pārsniegs šo ierobežojumu, lietotne izdzēsīs vecākās datnes, līdz tajā atkal iekļausies. Vairāk informācijas ir pieejama izdzēsto datņu dokumentācijā.", + "Restore" : "Atjaunot", + "Empty deleted files" : "Iztukšot izdzēstās datnes", + "Are you sure you want to permanently delete all files and folders in the trash? This cannot be undone." : "Vai tiešām neatgriezeniski izdzēst visas atkritnē esošās datnes un mapes? To nevar atdarīt.", + "Cancel" : "Atcelt", + "Deleted" : "Izdzēsts", + "Unknown" : "Nezināms", + "All files" : "Visas datnes", + "No deleted files" : "Nav izdzēstu datņu", + "Files and folders you have deleted will show up here" : "Datnes un mapes, ko izdzēsi, parādīsies šeit" +}, +"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"); diff --git a/apps/files_trashbin/l10n/lv.json b/apps/files_trashbin/l10n/lv.json new file mode 100644 index 00000000000..91aa7f8b0a1 --- /dev/null +++ b/apps/files_trashbin/l10n/lv.json @@ -0,0 +1,16 @@ +{ "translations": { + "restored" : "atjaunots", + "Deleted files" : "Izdzēstās datnes", + "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Atkritnē esošās izdzēstās datnes un mapes (var izbeigties izgūšanas laikā, ja trūkst krātuves vietas)", + "This application enables people to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the people file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent an account from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Šī lietotne sniedz cilvēkiem iespēju atjaunot datnes, kas tika izdzēstas no sistēmas. Tā tīmekļa saskarnē attēlo izdzēsto datņu sarakstu, un tai ir iespējas tās atjaunot cilvēku datņu mapēs vai neatgriezeniski noņemt no sistēmas. Datnes atjaunošana atjauno arī saistītās datnes versijas, ja ir iespējota versiju lietotne. Kad datne tiek izdzēsta no koplietojuma, to var atjaunot tādā pašā veidā, tomēr tā vairs nebūs koplietota. Pēc noklusējuma izdzēstās datnes atkritnē atrodas 30 dienas.\nLai novērstu konta diska vietas pārtēriņu, izdzēstās datnes neaizņems vairāk kā 50% no pašreiz pieejamās brīvās vietas izdzēstajām datnēm. Ja izdzēstās datnes pārsniegs šo ierobežojumu, lietotne izdzēsīs vecākās datnes, līdz tajā atkal iekļausies. Vairāk informācijas ir pieejama izdzēsto datņu dokumentācijā.", + "Restore" : "Atjaunot", + "Empty deleted files" : "Iztukšot izdzēstās datnes", + "Are you sure you want to permanently delete all files and folders in the trash? This cannot be undone." : "Vai tiešām neatgriezeniski izdzēst visas atkritnē esošās datnes un mapes? To nevar atdarīt.", + "Cancel" : "Atcelt", + "Deleted" : "Izdzēsts", + "Unknown" : "Nezināms", + "All files" : "Visas datnes", + "No deleted files" : "Nav izdzēstu datņu", + "Files and folders you have deleted will show up here" : "Datnes un mapes, ko izdzēsi, parādīsies šeit" +},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);" +}
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/pt_BR.js b/apps/files_trashbin/l10n/pt_BR.js index f1e360f82c0..de9b08f8326 100644 --- a/apps/files_trashbin/l10n/pt_BR.js +++ b/apps/files_trashbin/l10n/pt_BR.js @@ -2,7 +2,7 @@ OC.L10N.register( "files_trashbin", { "restored" : "restaurado", - "Deleted files" : "Arquivos exluídos", + "Deleted files" : "Arquivos excluídos", "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Arquivos e pastas excluídos na lixeira (podem expirar durante a exportação se você estiver com pouco espaço de armazenamento)", "This application enables people to restore files that were deleted from the system." : "Este aplicativo permite que as pessoas restaurem arquivos que foram excluídos do sistema.", "This application enables people to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the people file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent an account from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Este aplicativo permite que as pessoas restaurem arquivos que foram excluídos do sistema. Ele exibe uma lista de arquivos excluídos na interface da web e tem opções para restaurar esses arquivos excluídos de volta aos diretórios de arquivos de pessoas ou removê-los permanentemente do sistema. A restauração de um arquivo também restaura versões de arquivos relacionadas, se o aplicativo de versões estiver ativado. Quando um arquivo é excluído de um compartilhamento, ele pode ser restaurado da mesma maneira, embora não seja mais compartilhado. Por padrão, esses arquivos permanecem na lixeira por 30 dias. \nPara evitar que uma conta fique sem espaço em disco, o aplicativo Arquivos excluídos não utilizará mais de 50% da cota livre atualmente disponível para arquivos excluídos. Se os arquivos excluídos excederem esse limite, o aplicativo excluirá os arquivos mais antigos até ficarem abaixo desse limite. Mais informações estão disponíveis na documentação Arquivos Excluídos.", diff --git a/apps/files_trashbin/l10n/pt_BR.json b/apps/files_trashbin/l10n/pt_BR.json index da1f67d35ed..8e8c5a3ec3d 100644 --- a/apps/files_trashbin/l10n/pt_BR.json +++ b/apps/files_trashbin/l10n/pt_BR.json @@ -1,6 +1,6 @@ { "translations": { "restored" : "restaurado", - "Deleted files" : "Arquivos exluídos", + "Deleted files" : "Arquivos excluídos", "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Arquivos e pastas excluídos na lixeira (podem expirar durante a exportação se você estiver com pouco espaço de armazenamento)", "This application enables people to restore files that were deleted from the system." : "Este aplicativo permite que as pessoas restaurem arquivos que foram excluídos do sistema.", "This application enables people to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the people file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent an account from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Este aplicativo permite que as pessoas restaurem arquivos que foram excluídos do sistema. Ele exibe uma lista de arquivos excluídos na interface da web e tem opções para restaurar esses arquivos excluídos de volta aos diretórios de arquivos de pessoas ou removê-los permanentemente do sistema. A restauração de um arquivo também restaura versões de arquivos relacionadas, se o aplicativo de versões estiver ativado. Quando um arquivo é excluído de um compartilhamento, ele pode ser restaurado da mesma maneira, embora não seja mais compartilhado. Por padrão, esses arquivos permanecem na lixeira por 30 dias. \nPara evitar que uma conta fique sem espaço em disco, o aplicativo Arquivos excluídos não utilizará mais de 50% da cota livre atualmente disponível para arquivos excluídos. Se os arquivos excluídos excederem esse limite, o aplicativo excluirá os arquivos mais antigos até ficarem abaixo desse limite. Mais informações estão disponíveis na documentação Arquivos Excluídos.", diff --git a/apps/provisioning_api/l10n/ru.js b/apps/provisioning_api/l10n/ru.js index 7fa4c8d7e81..1ba160a590b 100644 --- a/apps/provisioning_api/l10n/ru.js +++ b/apps/provisioning_api/l10n/ru.js @@ -13,6 +13,7 @@ OC.L10N.register( "Invalid password value" : "Некорректное значение пароля", "An email address is required, to send a password link to the user." : "Требуется адрес электронной почты для отправки ссылки на установку пароля пользователю.", "Required email address was not provided" : "Не указан обязательный адрес электронной почты", + "User creation failed" : "Не удалось создать пользователя", "Invalid quota value: %1$s" : "Недопустимое значение квоты: %1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "Недопустимое значение квоты.%1$s превышает максимальное значение", "Unlimited quota is forbidden on this instance" : "Безлимитная квота запрещена в этом инстансе", diff --git a/apps/provisioning_api/l10n/ru.json b/apps/provisioning_api/l10n/ru.json index 41989b6ba29..35f64d94497 100644 --- a/apps/provisioning_api/l10n/ru.json +++ b/apps/provisioning_api/l10n/ru.json @@ -11,6 +11,7 @@ "Invalid password value" : "Некорректное значение пароля", "An email address is required, to send a password link to the user." : "Требуется адрес электронной почты для отправки ссылки на установку пароля пользователю.", "Required email address was not provided" : "Не указан обязательный адрес электронной почты", + "User creation failed" : "Не удалось создать пользователя", "Invalid quota value: %1$s" : "Недопустимое значение квоты: %1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "Недопустимое значение квоты.%1$s превышает максимальное значение", "Unlimited quota is forbidden on this instance" : "Безлимитная квота запрещена в этом инстансе", diff --git a/apps/provisioning_api/l10n/zh_CN.js b/apps/provisioning_api/l10n/zh_CN.js index 2bbc7a444c9..2bb24cb01ae 100644 --- a/apps/provisioning_api/l10n/zh_CN.js +++ b/apps/provisioning_api/l10n/zh_CN.js @@ -13,6 +13,7 @@ OC.L10N.register( "Invalid password value" : "密码值无效", "An email address is required, to send a password link to the user." : "需要电子邮件地址,以将密码链接发送给用户。", "Required email address was not provided" : "未提供所需的电子邮件地址", + "User creation failed" : "用户创建失败", "Invalid quota value: %1$s" : "配额值无效:%1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "配额值无效。%1$s 超过了最大配额", "Unlimited quota is forbidden on this instance" : "此实例上禁止无限配额", diff --git a/apps/provisioning_api/l10n/zh_CN.json b/apps/provisioning_api/l10n/zh_CN.json index b38c49f3867..03efc200979 100644 --- a/apps/provisioning_api/l10n/zh_CN.json +++ b/apps/provisioning_api/l10n/zh_CN.json @@ -11,6 +11,7 @@ "Invalid password value" : "密码值无效", "An email address is required, to send a password link to the user." : "需要电子邮件地址,以将密码链接发送给用户。", "Required email address was not provided" : "未提供所需的电子邮件地址", + "User creation failed" : "用户创建失败", "Invalid quota value: %1$s" : "配额值无效:%1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "配额值无效。%1$s 超过了最大配额", "Unlimited quota is forbidden on this instance" : "此实例上禁止无限配额", diff --git a/apps/settings/l10n/ca.js b/apps/settings/l10n/ca.js index 91018a0d028..7128f897132 100644 --- a/apps/settings/l10n/ca.js +++ b/apps/settings/l10n/ca.js @@ -685,8 +685,8 @@ OC.L10N.register( "Language" : "Llengua", "Set default language" : "Estableix la llengua predeterminada", "Add new account" : "Addició d'un compte nou", - "_{userCount} account …_::_{userCount} accounts …_" : ["compte de {userCount} …","comptes de {userCount} …"], - "_{userCount} account_::_{userCount} accounts_" : ["compte de {userCount}","comptes de {userCount}"], + "_{userCount} account …_::_{userCount} accounts …_" : ["{userCount} compte…","{userCount} comptes…"], + "_{userCount} account_::_{userCount} accounts_" : ["{userCount} compte","{userCount} comptes"], "Total rows summary" : "Resum de totes les files", "Scroll to load more rows" : "Desplaceu-vos per carregar més files", "Password or insufficient permissions message" : "Contrasenya o missatge de permisos insuficients", diff --git a/apps/settings/l10n/ca.json b/apps/settings/l10n/ca.json index e6cf7977103..b6342c3fdef 100644 --- a/apps/settings/l10n/ca.json +++ b/apps/settings/l10n/ca.json @@ -683,8 +683,8 @@ "Language" : "Llengua", "Set default language" : "Estableix la llengua predeterminada", "Add new account" : "Addició d'un compte nou", - "_{userCount} account …_::_{userCount} accounts …_" : ["compte de {userCount} …","comptes de {userCount} …"], - "_{userCount} account_::_{userCount} accounts_" : ["compte de {userCount}","comptes de {userCount}"], + "_{userCount} account …_::_{userCount} accounts …_" : ["{userCount} compte…","{userCount} comptes…"], + "_{userCount} account_::_{userCount} accounts_" : ["{userCount} compte","{userCount} comptes"], "Total rows summary" : "Resum de totes les files", "Scroll to load more rows" : "Desplaceu-vos per carregar més files", "Password or insufficient permissions message" : "Contrasenya o missatge de permisos insuficients", diff --git a/apps/settings/l10n/de.js b/apps/settings/l10n/de.js index 3b525970801..267617fce18 100644 --- a/apps/settings/l10n/de.js +++ b/apps/settings/l10n/de.js @@ -395,6 +395,7 @@ OC.L10N.register( "Default expiration time of remote shares in days" : "Standardablaufzeit für Remote-Freigaben in Tagen", "Expire remote shares after x days" : "Remote-Freigaben laufen nach x Tagen ab", "Set default expiration date for shares via link or mail" : "Standardablaufzeit für Link- oder E-Mail-Freigaben festlegen", + "Enforce expiration date for link or mail shares" : "Ablaufdatum für Link- oder E-Mail-Freigaben erzwingen", "Default expiration time of shares in days" : "Standardablaufzeit für Freigaben in Tagen", "Privacy settings for sharing" : "Datenschutzeinstellungen bezüglich des Teilens", "Allow account name autocompletion in share dialog and allow access to the system address book" : "Automatische Vervollständigung des Kontonamens im Freigabedialog und Zugriff auf das Systemadressbuch zulassen", diff --git a/apps/settings/l10n/de.json b/apps/settings/l10n/de.json index 0f484bf25f0..1c6ac9e8e14 100644 --- a/apps/settings/l10n/de.json +++ b/apps/settings/l10n/de.json @@ -393,6 +393,7 @@ "Default expiration time of remote shares in days" : "Standardablaufzeit für Remote-Freigaben in Tagen", "Expire remote shares after x days" : "Remote-Freigaben laufen nach x Tagen ab", "Set default expiration date for shares via link or mail" : "Standardablaufzeit für Link- oder E-Mail-Freigaben festlegen", + "Enforce expiration date for link or mail shares" : "Ablaufdatum für Link- oder E-Mail-Freigaben erzwingen", "Default expiration time of shares in days" : "Standardablaufzeit für Freigaben in Tagen", "Privacy settings for sharing" : "Datenschutzeinstellungen bezüglich des Teilens", "Allow account name autocompletion in share dialog and allow access to the system address book" : "Automatische Vervollständigung des Kontonamens im Freigabedialog und Zugriff auf das Systemadressbuch zulassen", diff --git a/apps/settings/l10n/de_DE.js b/apps/settings/l10n/de_DE.js index 6e508d71e6e..a9917558321 100644 --- a/apps/settings/l10n/de_DE.js +++ b/apps/settings/l10n/de_DE.js @@ -395,6 +395,7 @@ OC.L10N.register( "Default expiration time of remote shares in days" : "Standardablaufzeit für Remote-Freigaben in Tagen", "Expire remote shares after x days" : "Remote-Freigaben laufen nach x Tagen ab", "Set default expiration date for shares via link or mail" : "Standardablaufzeit für Link- oder E-Mail-Freigaben festlegen", + "Enforce expiration date for link or mail shares" : "Ablaufdatum für Link- oder E-Mail-Freigaben erzwingen", "Default expiration time of shares in days" : "Standardablaufzeit für Freigaben in Tagen", "Privacy settings for sharing" : "Datenschutzeinstellungen bezüglich des Teilens", "Allow account name autocompletion in share dialog and allow access to the system address book" : "Automatische Vervollständigung des Kontonamens im Freigabedialog und Zugriff auf das Systemadressbuch zulassen", @@ -660,7 +661,7 @@ OC.L10N.register( "Unable to update visibility of {displayId}" : "Sichtbarkeit von {displayId} kann nicht aktualisiert werden", "she/her" : "sie/ihr", "he/him" : "er/sein", - "they/them" : "sie/ihnen", + "they/them" : "they/them", "Your pronouns. E.g. {pronounsExample}" : "Ihre Pronomen. Z. B. {pronounsExample}", "Your role" : "Ihre Funktion", "Your X (formerly Twitter) handle" : "Ihr X (früher Twitter)-Handle", diff --git a/apps/settings/l10n/de_DE.json b/apps/settings/l10n/de_DE.json index 78f70927c19..1a633f6f50a 100644 --- a/apps/settings/l10n/de_DE.json +++ b/apps/settings/l10n/de_DE.json @@ -393,6 +393,7 @@ "Default expiration time of remote shares in days" : "Standardablaufzeit für Remote-Freigaben in Tagen", "Expire remote shares after x days" : "Remote-Freigaben laufen nach x Tagen ab", "Set default expiration date for shares via link or mail" : "Standardablaufzeit für Link- oder E-Mail-Freigaben festlegen", + "Enforce expiration date for link or mail shares" : "Ablaufdatum für Link- oder E-Mail-Freigaben erzwingen", "Default expiration time of shares in days" : "Standardablaufzeit für Freigaben in Tagen", "Privacy settings for sharing" : "Datenschutzeinstellungen bezüglich des Teilens", "Allow account name autocompletion in share dialog and allow access to the system address book" : "Automatische Vervollständigung des Kontonamens im Freigabedialog und Zugriff auf das Systemadressbuch zulassen", @@ -658,7 +659,7 @@ "Unable to update visibility of {displayId}" : "Sichtbarkeit von {displayId} kann nicht aktualisiert werden", "she/her" : "sie/ihr", "he/him" : "er/sein", - "they/them" : "sie/ihnen", + "they/them" : "they/them", "Your pronouns. E.g. {pronounsExample}" : "Ihre Pronomen. Z. B. {pronounsExample}", "Your role" : "Ihre Funktion", "Your X (formerly Twitter) handle" : "Ihr X (früher Twitter)-Handle", diff --git a/apps/settings/l10n/et_EE.js b/apps/settings/l10n/et_EE.js index dfff7899eb5..5f705138e2e 100644 --- a/apps/settings/l10n/et_EE.js +++ b/apps/settings/l10n/et_EE.js @@ -261,6 +261,7 @@ OC.L10N.register( "Default expiration time of remote shares in days" : "Kaugserveris asuva jaosmeedia vaikimisi aegumine päevades", "Expire remote shares after x days" : "Jaosmeedia aegub x päeva möödudes", "Set default expiration date for shares via link or mail" : "Määra lingi või e-kirjaga jagatava jaosmeedia vaikimisi aegumiskuupäev", + "Enforce expiration date for link or mail shares" : "Jõusta lingiga või e-postiga jagamise aegumiskuupäev", "Default expiration time of shares in days" : "Jaosmeedia vaikimisi aegumine päevades", "Privacy settings for sharing" : "Jagamise privaatsusseadistused", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Kuva avaliku lingiga üleslaadimise lehel lahtiütluste tekst (vaid siis, kui failide loend on peidetud)", diff --git a/apps/settings/l10n/et_EE.json b/apps/settings/l10n/et_EE.json index e642931fd77..82c4767af7e 100644 --- a/apps/settings/l10n/et_EE.json +++ b/apps/settings/l10n/et_EE.json @@ -259,6 +259,7 @@ "Default expiration time of remote shares in days" : "Kaugserveris asuva jaosmeedia vaikimisi aegumine päevades", "Expire remote shares after x days" : "Jaosmeedia aegub x päeva möödudes", "Set default expiration date for shares via link or mail" : "Määra lingi või e-kirjaga jagatava jaosmeedia vaikimisi aegumiskuupäev", + "Enforce expiration date for link or mail shares" : "Jõusta lingiga või e-postiga jagamise aegumiskuupäev", "Default expiration time of shares in days" : "Jaosmeedia vaikimisi aegumine päevades", "Privacy settings for sharing" : "Jagamise privaatsusseadistused", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Kuva avaliku lingiga üleslaadimise lehel lahtiütluste tekst (vaid siis, kui failide loend on peidetud)", diff --git a/apps/settings/l10n/lv.js b/apps/settings/l10n/lv.js index 967ff5dd9e2..72737da6f8f 100644 --- a/apps/settings/l10n/lv.js +++ b/apps/settings/l10n/lv.js @@ -14,11 +14,13 @@ OC.L10N.register( "Groups" : "Grupas", "Group list is empty" : "Grupu saraksts ir tukšš", "Unable to retrieve the group list" : "Nevarēja saņemt grupu sarakstu", - "{actor} changed your password" : "{actor] nomainīja Tavu paroli", + "{actor} changed your password" : "{actor} nomainīja Tavu paroli", "You changed your password" : "Tu nomainīji savu paroli", "{actor} changed your email address" : "{actor} nomainīja Tavu e-pasta adresi", "You changed your email address" : "Tu nomainīji savu e-pasta adresi", "Your email address was changed by an administrator" : "Pārvaldītājs nomainīja Tavu e-pasta adresi", + "You created an app password for a session named \"{token}\"" : "Tu izveidoji lietotnes paroli sesijai ar nosaukumu \"{token}\"", + "You deleted app password \"{token}\"" : "Tu izdzēsi lietotnes paroli \"{token}\"", "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)" : "Sekmīga pieteikšanās ar divpakāpju autentificēšanos (%1$s)", @@ -44,7 +46,7 @@ OC.L10N.register( "Your password on %s was changed." : "Tava %s parole tika nomainīta.", "Your email address on %s was changed." : "Tava %s e-pasta adrese tika nomainīta.", "Your email address on %s was changed by an administrator." : "Pārvaldītājs nomainīja Tavu %s e-pasta adresi", - "Your %s account was created" : "Konts %s ir izveidots", + "Your %s account was created" : "Tavs %s konts tika izveidots", "Apps" : "Lietotnes", "Personal" : "Personīgi", "Administration" : "Pārvaldīšana", @@ -89,6 +91,7 @@ OC.L10N.register( "Featured" : "Izcelta", "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Izceltās lietotnes ir kopienas izstrādātas. Tās sniedz centrālu funkcionalitāte un ir gatavas izmantošanai produkcijā.", "Download and enable all" : "Lejupielādēt un iespējot visu", + "All apps are up-to-date." : "Visas lietotnes ir atjauninātas.", "Icon" : "Ikona", "Name" : "Nosaukums", "Version" : "Versija", @@ -102,7 +105,7 @@ OC.L10N.register( "Loading" : "Ielādē", "Type" : "Veids", "Display Name" : "Attēlojamais vārds", - "Learn more" : "Uzziniet vairāk", + "Learn more" : "Uzzināt vairāk", "Confirm" : "Apstiprināt", "Cancel" : "Atcelt", "Description" : "Apraksts", @@ -142,7 +145,7 @@ OC.L10N.register( "Password confirmation is required" : "Nepieciešams paroles apstiprinājums", "Server-side encryption" : "Servera šifrēšana", "Enable server-side encryption" : "Ieslēgt servera šifrēšanu", - "No encryption module loaded, please enable an encryption module in the app menu." : "Nav ielādēts šifrēšanas moduļis, lūdzu, aktivizējiet šifrēšanas moduli lietotņu izvēlnē.", + "No encryption module loaded, please enable an encryption module in the app menu." : "Nav ielādēts neviens šifrēšanas modulis, lūgums iespējot šifrēšanas moduli lietotņu izvēlnē.", "Select default encryption module:" : "Atlasīt noklusējuma šifrēšanas moduli:", "Enable encryption" : "Ieslēgt šifrēšanu", "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." : "Šifrēšana vien negarantē sistēmas drošību. Skatiet dokumentāciju, lai iegūtu papildinformāciju par šifrēšanas lietotnes izmantošanu un atbalstītajiem izmantošanas veidiem.", @@ -161,7 +164,7 @@ OC.L10N.register( "You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "Tu izmanto {s}{usage}{/s} no {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})", "You are a member of the following groups:" : "Tu esi zemāk uzskaitīto kopu dalībnieks:", "This address is not confirmed" : "Šī adrese nav apstiprināta", - "Primary email for password reset and notifications" : "Primārā e-pasta adrese paroles atjaunošanai un paziņojumiem", + "Primary email for password reset and notifications" : "Galvenā e-pasta adrese paroles atiestatīšanai un paziņojumiem", "No email address set" : "Nav norādīts e-pasts", "Help translate" : "Palīdzi tulkot", "Unable to update locale" : "Nevarēja atjaunināt lokalizāciju", @@ -222,6 +225,7 @@ OC.L10N.register( "Hide" : "Paslēpt", "Download and enable" : "Lejupielādēt un iespējot", "Disable" : "Deaktivēt", + "Allow untested app" : "Atļaut nepārbaudītu lietotni", "Unknown" : "Nezināms", "Never" : "Nekad", "Do you really want to wipe your data from this device?" : "Vai tiešām izdzēst datus šajā ierīcē?", diff --git a/apps/settings/l10n/lv.json b/apps/settings/l10n/lv.json index 6f58b2bb0d9..a12bc0c0cc2 100644 --- a/apps/settings/l10n/lv.json +++ b/apps/settings/l10n/lv.json @@ -12,11 +12,13 @@ "Groups" : "Grupas", "Group list is empty" : "Grupu saraksts ir tukšš", "Unable to retrieve the group list" : "Nevarēja saņemt grupu sarakstu", - "{actor} changed your password" : "{actor] nomainīja Tavu paroli", + "{actor} changed your password" : "{actor} nomainīja Tavu paroli", "You changed your password" : "Tu nomainīji savu paroli", "{actor} changed your email address" : "{actor} nomainīja Tavu e-pasta adresi", "You changed your email address" : "Tu nomainīji savu e-pasta adresi", "Your email address was changed by an administrator" : "Pārvaldītājs nomainīja Tavu e-pasta adresi", + "You created an app password for a session named \"{token}\"" : "Tu izveidoji lietotnes paroli sesijai ar nosaukumu \"{token}\"", + "You deleted app password \"{token}\"" : "Tu izdzēsi lietotnes paroli \"{token}\"", "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)" : "Sekmīga pieteikšanās ar divpakāpju autentificēšanos (%1$s)", @@ -42,7 +44,7 @@ "Your password on %s was changed." : "Tava %s parole tika nomainīta.", "Your email address on %s was changed." : "Tava %s e-pasta adrese tika nomainīta.", "Your email address on %s was changed by an administrator." : "Pārvaldītājs nomainīja Tavu %s e-pasta adresi", - "Your %s account was created" : "Konts %s ir izveidots", + "Your %s account was created" : "Tavs %s konts tika izveidots", "Apps" : "Lietotnes", "Personal" : "Personīgi", "Administration" : "Pārvaldīšana", @@ -87,6 +89,7 @@ "Featured" : "Izcelta", "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Izceltās lietotnes ir kopienas izstrādātas. Tās sniedz centrālu funkcionalitāte un ir gatavas izmantošanai produkcijā.", "Download and enable all" : "Lejupielādēt un iespējot visu", + "All apps are up-to-date." : "Visas lietotnes ir atjauninātas.", "Icon" : "Ikona", "Name" : "Nosaukums", "Version" : "Versija", @@ -100,7 +103,7 @@ "Loading" : "Ielādē", "Type" : "Veids", "Display Name" : "Attēlojamais vārds", - "Learn more" : "Uzziniet vairāk", + "Learn more" : "Uzzināt vairāk", "Confirm" : "Apstiprināt", "Cancel" : "Atcelt", "Description" : "Apraksts", @@ -140,7 +143,7 @@ "Password confirmation is required" : "Nepieciešams paroles apstiprinājums", "Server-side encryption" : "Servera šifrēšana", "Enable server-side encryption" : "Ieslēgt servera šifrēšanu", - "No encryption module loaded, please enable an encryption module in the app menu." : "Nav ielādēts šifrēšanas moduļis, lūdzu, aktivizējiet šifrēšanas moduli lietotņu izvēlnē.", + "No encryption module loaded, please enable an encryption module in the app menu." : "Nav ielādēts neviens šifrēšanas modulis, lūgums iespējot šifrēšanas moduli lietotņu izvēlnē.", "Select default encryption module:" : "Atlasīt noklusējuma šifrēšanas moduli:", "Enable encryption" : "Ieslēgt šifrēšanu", "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." : "Šifrēšana vien negarantē sistēmas drošību. Skatiet dokumentāciju, lai iegūtu papildinformāciju par šifrēšanas lietotnes izmantošanu un atbalstītajiem izmantošanas veidiem.", @@ -159,7 +162,7 @@ "You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "Tu izmanto {s}{usage}{/s} no {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})", "You are a member of the following groups:" : "Tu esi zemāk uzskaitīto kopu dalībnieks:", "This address is not confirmed" : "Šī adrese nav apstiprināta", - "Primary email for password reset and notifications" : "Primārā e-pasta adrese paroles atjaunošanai un paziņojumiem", + "Primary email for password reset and notifications" : "Galvenā e-pasta adrese paroles atiestatīšanai un paziņojumiem", "No email address set" : "Nav norādīts e-pasts", "Help translate" : "Palīdzi tulkot", "Unable to update locale" : "Nevarēja atjaunināt lokalizāciju", @@ -220,6 +223,7 @@ "Hide" : "Paslēpt", "Download and enable" : "Lejupielādēt un iespējot", "Disable" : "Deaktivēt", + "Allow untested app" : "Atļaut nepārbaudītu lietotni", "Unknown" : "Nezināms", "Never" : "Nekad", "Do you really want to wipe your data from this device?" : "Vai tiešām izdzēst datus šajā ierīcē?", diff --git a/apps/settings/l10n/nl.js b/apps/settings/l10n/nl.js index 34062ae3b2e..14c06a47855 100644 --- a/apps/settings/l10n/nl.js +++ b/apps/settings/l10n/nl.js @@ -104,6 +104,7 @@ OC.L10N.register( "Set your password" : "Stel je wachtwoord in", "Go to %s" : "Ga naar %s", "Install Client" : "Installeer Client", + "Logged in account must be a sub admin" : "Ingelogd account moet een subbeheerder zijn", "Apps" : "Apps", "Personal" : "Persoonlijk", "Administration" : "Beheer", @@ -121,6 +122,7 @@ OC.L10N.register( "Mobile & desktop" : "Mobiel & desktop", "Email server" : "E-mailserver", "Mail Providers" : "Mail-providers", + "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "Mailprovider maakt het mogelijk e-mails rechtstreeks via het persoonlijke e-mailaccount van de gebruiker te verzenden. Momenteel is deze functionaliteit beperkt tot agenda-uitnodigingen. Het vereist Nextcloud Mail 4.1 en een e-mailaccount in Nextcloud Mail dat overeenkomt met het e-mailadres van de gebruiker in Nextcloud.", "Send emails using" : "E-mail verzenden met", "User's email account" : "E-mailaccount gebruiker", "System email account" : "E-mailaccount systeem", @@ -129,6 +131,7 @@ OC.L10N.register( "Unlimited" : "Ongelimiteerd", "Verifying" : "Controleer", "Allowed admin IP ranges" : "Toegestane beheerder IP-reeksen", + "Admin IP filtering isn't applied." : "Admin IP-filtering wordt niet toegepast.", "Configuration key \"%1$s\" expects an array (%2$s found). Admin IP range validation will not be applied." : "Configuratiesleutel \"%1$s\" verwacht een array (%2$s gevonden). Validatie van beheerder IP-bereik wordt niet toegepast.", "Configuration key \"%1$s\" contains invalid IP range(s): \"%2$s\"" : "Configuratiesleutel \"%1$s\" bevat ongeldig(e) IP-bereik(en): \"%2$s\"", "Admin IP filtering is correctly configured." : "Beheerder IP-filtering is juist geconfigureerd.", @@ -139,6 +142,9 @@ OC.L10N.register( "Your remote address could not be determined." : "Je remote adres kon niet bepaald worden", "Your remote address was identified as \"%s\" and is brute-force throttled at the moment slowing down the performance of various requests. If the remote address is not your address this can be an indication that a proxy is not configured correctly." : "Je remote adres is geregistreerd als \"%s\" en wordt op dit moment afgeremd ter bescherming van bruteforce aanvallen. Dit verlaagt de performantie van verschillende aanvragen. Als het remote adres niet uw adres is kan dit wijzen op een verkeerd ingestelde proxy. ", "Your remote address \"%s\" is not brute-force throttled." : "Je remote adres %s is niet bruteforce begrensd.", + "Old administration imported certificates" : "Oude administratie geïmporteerde certificaten", + "A background job is pending that checks for administration imported SSL certificates. Please check back later." : "Er is een achtergrondtaak in behandeling die controleert op het beheer van geïmporteerde SSL-certificaten. Kom later nog eens terug.", + "There are some administration imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Er zijn enkele door de administratie geïmporteerde SSL-certificaten aanwezig die niet meer worden gebruikt bij Nextcloud 21. Ze kunnen op de opdrachtregel worden geïmporteerd via het commando \"occ security: certificates: import\". Hun paden binnen de datadirectory worden hieronder weergegeven.", "Code integrity" : "Integriteit code", "Integrity checker has been disabled. Integrity cannot be verified." : "Integriteitscontrole is uitgeschakeld. Integriteit kan niet gecontroleerd worden.", "No altered files" : "Geen gewijzigde bestanden", @@ -146,6 +152,7 @@ OC.L10N.register( "Cron errors" : "Cron fouten", "It was not possible to execute the cron job via CLI. The following technical errors have appeared:\n%s" : "Het was niet mogelijk om de systeem cron via CLI uit te voeren. De volgende technische problemen traden op:\n%s", "The last cron job ran without errors." : "De laatste crontaak liep zonder fouten.", + "Cron last run" : "Cron laatste run", "Last background job execution ran %s. Something seems wrong. {link}." : "Laatste achtegrondtaak liep%s. Er ging iets fout. {link}", "Last background job execution ran %s." : "Laatste achtergrondtaak liep %s.", "Data directory protected" : "Datamap is beveiligd", @@ -156,9 +163,16 @@ OC.L10N.register( "The database is missing some optional columns. Due to the fact that adding columns on big tables could take some time they were not added automatically when they can be optional. By running \"occ db:add-missing-columns\" those missing columns could be added manually while the instance keeps running. Once the columns are added some features might improve responsiveness or usability." : "De database mist een paar optionele kolommen. Omdat het toevoegen van kolommen op grote tabellen veel tijd kan kosten, zijn ze niet automatisch gecreëerd, omdat dat optioneel kan. Door het draaien van \"occ db:add-missing-columns\" kunnen deze kolommen handmatig worden toegevoegd terwijl de server blijft draaien. Als de kolommen zijn toegevoegd, zullen bepaalde functionaliteiten veel sneller of gemakkelijker plaatsvinden.", "Database missing indices" : "Database mist indexen", "Missing indices:" : "Ontbrekende indexen:", + "\"%s\" in table \"%s\"" : "\"%s\" in tabel \"%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." : "Enkele ontbrekende optionele indices gedetecteerd. Af en toe worden er nieuwe indices toegevoegd (door Nextcloud of geïnstalleerde applicaties) om de databaseprestaties te verbeteren. Het toevoegen van indices kan soms een tijdje duren en de prestaties tijdelijk schaden, dus dit gebeurt niet automatisch tijdens upgrades. Zodra de indices zijn toegevoegd, moeten zoekopdrachten naar die tabellen sneller zijn. Gebruik de opdracht `occ db:add-missing-indices` om ze toe te voegen.", "Database missing primary keys" : "Database mist primaire sleutels", + "Missing primary key on table \"%s\"." : "Ontbrekende primaire sleutel op tabel \"%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." : "De database mist enkele primaire sleutels. Omdat het toevoegen van primaire sleutels aan grote tabellen enige tijd kan duren, werden ze niet automatisch toegevoegd. Door \"occ db:add-missing-primary-keys\" uit te voeren, kunnen die ontbrekende primaire sleutels handmatig worden toegevoegd terwijl de server blijft draaien.", - "This instance is running in debug mode. Only enable this for local development and not in production environments." : "Deze instantie draait in debug modus. Gelieve deze modus enkel te gebruiken voor lokale ontwikkeling, en niet in productie omgevingen.", + "Database pending bigint migrations" : "Database in afwachting van bigint-migraties", + "Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline." : "Sommige kolommen in de database missen een conversie naar big int. Omdat het veranderen van kolomtypen op grote tabellen enige tijd kon duren, werden ze niet automatisch gewijzigd. Door \"occ db: convert-filecache-bigint\" uit te voeren, kunnen de hangende wijzigingen handmatig worden toegepast. Deze bewerking moet worden uitgevoerd terwijl de instantie offline is.", + "Debug mode" : "Foutopsporingsmodus", + "This instance is running in debug mode. Only enable this for local development and not in production environments." : "Deze instantie draait in foutopsporingsmodus. Gelieve deze modus enkel te gebruiken voor lokale ontwikkeling, en niet in productie omgevingen.", + "Debug mode is disabled." : "Foutopsporingsmodus uitgeschakeld", "Default phone region" : "Standaard telefoonregio", "Your installation has no default phone region set. This is required to validate phone numbers in the profile settings without a country code. To allow numbers without a country code, please add \"default_phone_region\" with the respective ISO 3166-1 code of the region to your config file." : "Je installatie heeft geen standaard telefoonregio. Dit is nodig om telefoonnummers te valideren in de profielinstellingen zonder landcode. Om nummers zonder landcode toe te staan, voeg je \"default_phone_region\" met de respectieve ISO 3166-1-code van de regio toe aan je configuratiebestand.", "Email test" : "E-mail test", @@ -174,8 +188,10 @@ OC.L10N.register( "Internet connectivity is disabled in configuration file." : "Verbinding met het internet is uitgeschakeld in het configuratiebestand.", "This server has no working internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the internet to enjoy all features." : "Deze server heeft geen werkende internetverbinding: meerdere endpoints kunnen niet worden bereikt. Dat betekent dat sommige functies, zoals het gebruik van externe opslag, notificaties over updates of installatie van apps van derde partijen niet werken. Ook het benaderen van bestanden vanaf een remote locatie en het versturen van notificatie emails kan mislukken. We adviseren om de internetverbinding voor deze server in te schakelen als je alle functies wilt gebruiken.", "JavaScript modules support" : "JavaScript modules support", + "Your webserver is not set up to serve `.js.map` files. Without these files, JavaScript Source Maps won't function properly, making it more challenging to troubleshoot and debug any issues that may arise." : "Jouw webserver is niet ingesteld om `.js.map`-bestanden te verwerken. Zonder deze bestanden zullen JavaScript Source Maps niet goed functioneren, waardoor het een grotere uitdaging wordt om eventuele problemen op te lossen en op te sporen.", "Disabled" : "Uitgeschakeld", "The old server-side-encryption format is enabled. We recommend disabling this." : "Het oude server-side-encryptie formaat is ingeschakeld. We raden aan om dit uit te schakelen.", + "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." : "Het logniveau is ingesteld op foutopsporingsniveau. Gebruik het foutopsporingsniveau alleen om een probleem te diagnosticeren, en reset vervolgens uw log-niveau naar een niveau met minder informatie, omdat het veel informatie oplevert en de prestaties van uw server kan beïnvloeden.", "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "De PHP functie \"set_time_limit\" is niet beschikbaar. Dit kan erin resulteren dat de scripts halverwege stoppen, waardoor de installatie ontregeld raakt. We adviseren sterk om deze functie in te schakelen.", "Supported" : "Ondersteund", "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Je PHP heeft geen FreeType ondersteuning. Dit zal leiden tot verminkte profielafbeeldingen en instellingeninterface.", diff --git a/apps/settings/l10n/nl.json b/apps/settings/l10n/nl.json index 028e69a3d6b..24afd1954c1 100644 --- a/apps/settings/l10n/nl.json +++ b/apps/settings/l10n/nl.json @@ -102,6 +102,7 @@ "Set your password" : "Stel je wachtwoord in", "Go to %s" : "Ga naar %s", "Install Client" : "Installeer Client", + "Logged in account must be a sub admin" : "Ingelogd account moet een subbeheerder zijn", "Apps" : "Apps", "Personal" : "Persoonlijk", "Administration" : "Beheer", @@ -119,6 +120,7 @@ "Mobile & desktop" : "Mobiel & desktop", "Email server" : "E-mailserver", "Mail Providers" : "Mail-providers", + "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "Mailprovider maakt het mogelijk e-mails rechtstreeks via het persoonlijke e-mailaccount van de gebruiker te verzenden. Momenteel is deze functionaliteit beperkt tot agenda-uitnodigingen. Het vereist Nextcloud Mail 4.1 en een e-mailaccount in Nextcloud Mail dat overeenkomt met het e-mailadres van de gebruiker in Nextcloud.", "Send emails using" : "E-mail verzenden met", "User's email account" : "E-mailaccount gebruiker", "System email account" : "E-mailaccount systeem", @@ -127,6 +129,7 @@ "Unlimited" : "Ongelimiteerd", "Verifying" : "Controleer", "Allowed admin IP ranges" : "Toegestane beheerder IP-reeksen", + "Admin IP filtering isn't applied." : "Admin IP-filtering wordt niet toegepast.", "Configuration key \"%1$s\" expects an array (%2$s found). Admin IP range validation will not be applied." : "Configuratiesleutel \"%1$s\" verwacht een array (%2$s gevonden). Validatie van beheerder IP-bereik wordt niet toegepast.", "Configuration key \"%1$s\" contains invalid IP range(s): \"%2$s\"" : "Configuratiesleutel \"%1$s\" bevat ongeldig(e) IP-bereik(en): \"%2$s\"", "Admin IP filtering is correctly configured." : "Beheerder IP-filtering is juist geconfigureerd.", @@ -137,6 +140,9 @@ "Your remote address could not be determined." : "Je remote adres kon niet bepaald worden", "Your remote address was identified as \"%s\" and is brute-force throttled at the moment slowing down the performance of various requests. If the remote address is not your address this can be an indication that a proxy is not configured correctly." : "Je remote adres is geregistreerd als \"%s\" en wordt op dit moment afgeremd ter bescherming van bruteforce aanvallen. Dit verlaagt de performantie van verschillende aanvragen. Als het remote adres niet uw adres is kan dit wijzen op een verkeerd ingestelde proxy. ", "Your remote address \"%s\" is not brute-force throttled." : "Je remote adres %s is niet bruteforce begrensd.", + "Old administration imported certificates" : "Oude administratie geïmporteerde certificaten", + "A background job is pending that checks for administration imported SSL certificates. Please check back later." : "Er is een achtergrondtaak in behandeling die controleert op het beheer van geïmporteerde SSL-certificaten. Kom later nog eens terug.", + "There are some administration imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Er zijn enkele door de administratie geïmporteerde SSL-certificaten aanwezig die niet meer worden gebruikt bij Nextcloud 21. Ze kunnen op de opdrachtregel worden geïmporteerd via het commando \"occ security: certificates: import\". Hun paden binnen de datadirectory worden hieronder weergegeven.", "Code integrity" : "Integriteit code", "Integrity checker has been disabled. Integrity cannot be verified." : "Integriteitscontrole is uitgeschakeld. Integriteit kan niet gecontroleerd worden.", "No altered files" : "Geen gewijzigde bestanden", @@ -144,6 +150,7 @@ "Cron errors" : "Cron fouten", "It was not possible to execute the cron job via CLI. The following technical errors have appeared:\n%s" : "Het was niet mogelijk om de systeem cron via CLI uit te voeren. De volgende technische problemen traden op:\n%s", "The last cron job ran without errors." : "De laatste crontaak liep zonder fouten.", + "Cron last run" : "Cron laatste run", "Last background job execution ran %s. Something seems wrong. {link}." : "Laatste achtegrondtaak liep%s. Er ging iets fout. {link}", "Last background job execution ran %s." : "Laatste achtergrondtaak liep %s.", "Data directory protected" : "Datamap is beveiligd", @@ -154,9 +161,16 @@ "The database is missing some optional columns. Due to the fact that adding columns on big tables could take some time they were not added automatically when they can be optional. By running \"occ db:add-missing-columns\" those missing columns could be added manually while the instance keeps running. Once the columns are added some features might improve responsiveness or usability." : "De database mist een paar optionele kolommen. Omdat het toevoegen van kolommen op grote tabellen veel tijd kan kosten, zijn ze niet automatisch gecreëerd, omdat dat optioneel kan. Door het draaien van \"occ db:add-missing-columns\" kunnen deze kolommen handmatig worden toegevoegd terwijl de server blijft draaien. Als de kolommen zijn toegevoegd, zullen bepaalde functionaliteiten veel sneller of gemakkelijker plaatsvinden.", "Database missing indices" : "Database mist indexen", "Missing indices:" : "Ontbrekende indexen:", + "\"%s\" in table \"%s\"" : "\"%s\" in tabel \"%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." : "Enkele ontbrekende optionele indices gedetecteerd. Af en toe worden er nieuwe indices toegevoegd (door Nextcloud of geïnstalleerde applicaties) om de databaseprestaties te verbeteren. Het toevoegen van indices kan soms een tijdje duren en de prestaties tijdelijk schaden, dus dit gebeurt niet automatisch tijdens upgrades. Zodra de indices zijn toegevoegd, moeten zoekopdrachten naar die tabellen sneller zijn. Gebruik de opdracht `occ db:add-missing-indices` om ze toe te voegen.", "Database missing primary keys" : "Database mist primaire sleutels", + "Missing primary key on table \"%s\"." : "Ontbrekende primaire sleutel op tabel \"%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." : "De database mist enkele primaire sleutels. Omdat het toevoegen van primaire sleutels aan grote tabellen enige tijd kan duren, werden ze niet automatisch toegevoegd. Door \"occ db:add-missing-primary-keys\" uit te voeren, kunnen die ontbrekende primaire sleutels handmatig worden toegevoegd terwijl de server blijft draaien.", - "This instance is running in debug mode. Only enable this for local development and not in production environments." : "Deze instantie draait in debug modus. Gelieve deze modus enkel te gebruiken voor lokale ontwikkeling, en niet in productie omgevingen.", + "Database pending bigint migrations" : "Database in afwachting van bigint-migraties", + "Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline." : "Sommige kolommen in de database missen een conversie naar big int. Omdat het veranderen van kolomtypen op grote tabellen enige tijd kon duren, werden ze niet automatisch gewijzigd. Door \"occ db: convert-filecache-bigint\" uit te voeren, kunnen de hangende wijzigingen handmatig worden toegepast. Deze bewerking moet worden uitgevoerd terwijl de instantie offline is.", + "Debug mode" : "Foutopsporingsmodus", + "This instance is running in debug mode. Only enable this for local development and not in production environments." : "Deze instantie draait in foutopsporingsmodus. Gelieve deze modus enkel te gebruiken voor lokale ontwikkeling, en niet in productie omgevingen.", + "Debug mode is disabled." : "Foutopsporingsmodus uitgeschakeld", "Default phone region" : "Standaard telefoonregio", "Your installation has no default phone region set. This is required to validate phone numbers in the profile settings without a country code. To allow numbers without a country code, please add \"default_phone_region\" with the respective ISO 3166-1 code of the region to your config file." : "Je installatie heeft geen standaard telefoonregio. Dit is nodig om telefoonnummers te valideren in de profielinstellingen zonder landcode. Om nummers zonder landcode toe te staan, voeg je \"default_phone_region\" met de respectieve ISO 3166-1-code van de regio toe aan je configuratiebestand.", "Email test" : "E-mail test", @@ -172,8 +186,10 @@ "Internet connectivity is disabled in configuration file." : "Verbinding met het internet is uitgeschakeld in het configuratiebestand.", "This server has no working internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the internet to enjoy all features." : "Deze server heeft geen werkende internetverbinding: meerdere endpoints kunnen niet worden bereikt. Dat betekent dat sommige functies, zoals het gebruik van externe opslag, notificaties over updates of installatie van apps van derde partijen niet werken. Ook het benaderen van bestanden vanaf een remote locatie en het versturen van notificatie emails kan mislukken. We adviseren om de internetverbinding voor deze server in te schakelen als je alle functies wilt gebruiken.", "JavaScript modules support" : "JavaScript modules support", + "Your webserver is not set up to serve `.js.map` files. Without these files, JavaScript Source Maps won't function properly, making it more challenging to troubleshoot and debug any issues that may arise." : "Jouw webserver is niet ingesteld om `.js.map`-bestanden te verwerken. Zonder deze bestanden zullen JavaScript Source Maps niet goed functioneren, waardoor het een grotere uitdaging wordt om eventuele problemen op te lossen en op te sporen.", "Disabled" : "Uitgeschakeld", "The old server-side-encryption format is enabled. We recommend disabling this." : "Het oude server-side-encryptie formaat is ingeschakeld. We raden aan om dit uit te schakelen.", + "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." : "Het logniveau is ingesteld op foutopsporingsniveau. Gebruik het foutopsporingsniveau alleen om een probleem te diagnosticeren, en reset vervolgens uw log-niveau naar een niveau met minder informatie, omdat het veel informatie oplevert en de prestaties van uw server kan beïnvloeden.", "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "De PHP functie \"set_time_limit\" is niet beschikbaar. Dit kan erin resulteren dat de scripts halverwege stoppen, waardoor de installatie ontregeld raakt. We adviseren sterk om deze functie in te schakelen.", "Supported" : "Ondersteund", "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Je PHP heeft geen FreeType ondersteuning. Dit zal leiden tot verminkte profielafbeeldingen en instellingeninterface.", diff --git a/apps/settings/l10n/zh_CN.js b/apps/settings/l10n/zh_CN.js index 6b9f224f47f..ae8f90baf91 100644 --- a/apps/settings/l10n/zh_CN.js +++ b/apps/settings/l10n/zh_CN.js @@ -370,6 +370,8 @@ OC.L10N.register( "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "用户仍然可以屏幕截图或录制屏幕。这并不能提供任何明确的保护。", "Allow users to share via link and emails" : "允许用户通过链接和电子邮件共享", "Allow public uploads" : "允许公开上传", + "Allow public shares to be added to other clouds by federation." : "允许通过联邦方式将公开共享添加到其他云", + "This will add share permissions to all newly created link shares." : "这将为所有新创建的链接共享添加共享权限。", "Always ask for a password" : "始终要求输入密码", "Enforce password protection" : "强制密码保护", "Exclude groups from password requirements" : "不对指定的组执行密码要求", @@ -393,6 +395,7 @@ OC.L10N.register( "Default expiration time of remote shares in days" : "远程共享的默认过期时间(天)", "Expire remote shares after x days" : "远程共享在X天后过期", "Set default expiration date for shares via link or mail" : "设置通过链接或电子邮件分享的默认过期时间", + "Enforce expiration date for link or mail shares" : "强制设置链接或邮件共享的到期日期", "Default expiration time of shares in days" : "默认的共享过期时间(天)", "Privacy settings for sharing" : "共享的隐私设置", "Allow account name autocompletion in share dialog and allow access to the system address book" : "允许在共享对话框中自动完成帐户名称并允许访问系统地址簿", @@ -667,8 +670,8 @@ OC.L10N.register( "Unable to update {property}" : "无法更新 {property}", "No {property} set" : "没有设置 {property}", "Change scope level of {property}, current scope is {scope}" : "更改 {property} 的范围级别,当前范围为 {scope}", - "Unable to update federation scope of the primary {property}" : "无法更新主要 {property} 的联盟范围", - "Unable to update federation scope of additional {property}" : "无法更新额外 {property} 的联盟范围", + "Unable to update federation scope of the primary {property}" : "无法更新主 {property} 的联邦范围", + "Unable to update federation scope of additional {property}" : "无法更新附加 {property} 的联邦范围", "Add additional email" : "添加额外的电子邮箱", "Add" : "添加", "Create" : "创建", @@ -812,7 +815,7 @@ OC.L10N.register( "Locale" : "地区语系", "First day of week" : "每周的第一天", "Not available as this property is required for core functionality including file sharing and calendar invitations" : "不可用,因为包括文件共享和日历邀请在内的核心功能需要此属性", - "Not available as federation has been disabled for your account, contact your system administration if you have any questions" : "不可用,因为您的帐号已禁用联合,如果您有任何疑问,请联系您的系统管理员", + "Not available as federation has been disabled for your account, contact your system administration if you have any questions" : "由于您的账号已禁用联合,因此不可用,如有任何疑问,请联系您的系统管理员", "Not available as publishing account specific data to the lookup server is not allowed, contact your system administration if you have any questions" : "不可用,因为不允许将帐户特定数据发布到查找服务器,如果您有任何疑问,请联系您的系统管理员", "Discover" : "发现", "Your apps" : "你的应用", diff --git a/apps/settings/l10n/zh_CN.json b/apps/settings/l10n/zh_CN.json index 997db288cc4..46b523ec1a6 100644 --- a/apps/settings/l10n/zh_CN.json +++ b/apps/settings/l10n/zh_CN.json @@ -368,6 +368,8 @@ "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "用户仍然可以屏幕截图或录制屏幕。这并不能提供任何明确的保护。", "Allow users to share via link and emails" : "允许用户通过链接和电子邮件共享", "Allow public uploads" : "允许公开上传", + "Allow public shares to be added to other clouds by federation." : "允许通过联邦方式将公开共享添加到其他云", + "This will add share permissions to all newly created link shares." : "这将为所有新创建的链接共享添加共享权限。", "Always ask for a password" : "始终要求输入密码", "Enforce password protection" : "强制密码保护", "Exclude groups from password requirements" : "不对指定的组执行密码要求", @@ -391,6 +393,7 @@ "Default expiration time of remote shares in days" : "远程共享的默认过期时间(天)", "Expire remote shares after x days" : "远程共享在X天后过期", "Set default expiration date for shares via link or mail" : "设置通过链接或电子邮件分享的默认过期时间", + "Enforce expiration date for link or mail shares" : "强制设置链接或邮件共享的到期日期", "Default expiration time of shares in days" : "默认的共享过期时间(天)", "Privacy settings for sharing" : "共享的隐私设置", "Allow account name autocompletion in share dialog and allow access to the system address book" : "允许在共享对话框中自动完成帐户名称并允许访问系统地址簿", @@ -665,8 +668,8 @@ "Unable to update {property}" : "无法更新 {property}", "No {property} set" : "没有设置 {property}", "Change scope level of {property}, current scope is {scope}" : "更改 {property} 的范围级别,当前范围为 {scope}", - "Unable to update federation scope of the primary {property}" : "无法更新主要 {property} 的联盟范围", - "Unable to update federation scope of additional {property}" : "无法更新额外 {property} 的联盟范围", + "Unable to update federation scope of the primary {property}" : "无法更新主 {property} 的联邦范围", + "Unable to update federation scope of additional {property}" : "无法更新附加 {property} 的联邦范围", "Add additional email" : "添加额外的电子邮箱", "Add" : "添加", "Create" : "创建", @@ -810,7 +813,7 @@ "Locale" : "地区语系", "First day of week" : "每周的第一天", "Not available as this property is required for core functionality including file sharing and calendar invitations" : "不可用,因为包括文件共享和日历邀请在内的核心功能需要此属性", - "Not available as federation has been disabled for your account, contact your system administration if you have any questions" : "不可用,因为您的帐号已禁用联合,如果您有任何疑问,请联系您的系统管理员", + "Not available as federation has been disabled for your account, contact your system administration if you have any questions" : "由于您的账号已禁用联合,因此不可用,如有任何疑问,请联系您的系统管理员", "Not available as publishing account specific data to the lookup server is not allowed, contact your system administration if you have any questions" : "不可用,因为不允许将帐户特定数据发布到查找服务器,如果您有任何疑问,请联系您的系统管理员", "Discover" : "发现", "Your apps" : "你的应用", diff --git a/apps/settings/l10n/zh_TW.js b/apps/settings/l10n/zh_TW.js index 503ec672c1e..c9c99e8ab97 100644 --- a/apps/settings/l10n/zh_TW.js +++ b/apps/settings/l10n/zh_TW.js @@ -395,6 +395,7 @@ OC.L10N.register( "Default expiration time of remote shares in days" : "遠端分享預設到期時間(天)", "Expire remote shares after x days" : "x 天後遠端分享過期", "Set default expiration date for shares via link or mail" : "設定透過連結或郵件分享的預設過期日", + "Enforce expiration date for link or mail shares" : "強制設定連結或郵件分享的到期日", "Default expiration time of shares in days" : "分享預設到期時間(天)", "Privacy settings for sharing" : "分享的隱私設定", "Allow account name autocompletion in share dialog and allow access to the system address book" : "允許在分享對話方塊中自動補齊帳號名稱並允許存取系統通訊錄", diff --git a/apps/settings/l10n/zh_TW.json b/apps/settings/l10n/zh_TW.json index 23d6a3cc553..697673f8a55 100644 --- a/apps/settings/l10n/zh_TW.json +++ b/apps/settings/l10n/zh_TW.json @@ -393,6 +393,7 @@ "Default expiration time of remote shares in days" : "遠端分享預設到期時間(天)", "Expire remote shares after x days" : "x 天後遠端分享過期", "Set default expiration date for shares via link or mail" : "設定透過連結或郵件分享的預設過期日", + "Enforce expiration date for link or mail shares" : "強制設定連結或郵件分享的到期日", "Default expiration time of shares in days" : "分享預設到期時間(天)", "Privacy settings for sharing" : "分享的隱私設定", "Allow account name autocompletion in share dialog and allow access to the system address book" : "允許在分享對話方塊中自動補齊帳號名稱並允許存取系統通訊錄", diff --git a/apps/settings/lib/Controller/AISettingsController.php b/apps/settings/lib/Controller/AISettingsController.php index a3b0a874987..114cbf61514 100644 --- a/apps/settings/lib/Controller/AISettingsController.php +++ b/apps/settings/lib/Controller/AISettingsController.php @@ -12,20 +12,15 @@ use OCA\Settings\Settings\Admin\ArtificialIntelligence; use OCP\AppFramework\Controller; use OCP\AppFramework\Http\Attribute\AuthorizedAdminSetting; use OCP\AppFramework\Http\DataResponse; -use OCP\IConfig; +use OCP\IAppConfig; use OCP\IRequest; class AISettingsController extends Controller { - /** - * @param string $appName - * @param IRequest $request - * @param IConfig $config - */ public function __construct( $appName, IRequest $request, - private IConfig $config, + private IAppConfig $appConfig, ) { parent::__construct($appName, $request); } @@ -43,7 +38,7 @@ class AISettingsController extends Controller { if (!isset($settings[$key])) { continue; } - $this->config->setAppValue('core', $key, json_encode($settings[$key])); + $this->appConfig->setValueString('core', $key, json_encode($settings[$key]), lazy: in_array($key, \OC\TaskProcessing\Manager::LAZY_CONFIG_KEYS, true)); } return new DataResponse(); diff --git a/apps/settings/lib/Settings/Admin/ArtificialIntelligence.php b/apps/settings/lib/Settings/Admin/ArtificialIntelligence.php index 78bec73382d..aaec0049b20 100644 --- a/apps/settings/lib/Settings/Admin/ArtificialIntelligence.php +++ b/apps/settings/lib/Settings/Admin/ArtificialIntelligence.php @@ -10,7 +10,7 @@ namespace OCA\Settings\Settings\Admin; use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Services\IInitialState; -use OCP\IConfig; +use OCP\IAppConfig; use OCP\IL10N; use OCP\Settings\IDelegatedSettings; use OCP\SpeechToText\ISpeechToTextManager; @@ -28,7 +28,7 @@ use Psr\Log\LoggerInterface; class ArtificialIntelligence implements IDelegatedSettings { public function __construct( - private IConfig $config, + private IAppConfig $appConfig, private IL10N $l, private IInitialState $initialState, private ITranslationManager $translationManager, @@ -145,7 +145,7 @@ class ArtificialIntelligence implements IDelegatedSettings { ]; foreach ($settings as $key => $defaultValue) { $value = $defaultValue; - $json = $this->config->getAppValue('core', $key, ''); + $json = $this->appConfig->getValueString('core', $key, '', lazy: in_array($key, \OC\TaskProcessing\Manager::LAZY_CONFIG_KEYS, true)); if ($json !== '') { try { $value = json_decode($json, true, flags: JSON_THROW_ON_ERROR); diff --git a/apps/settings/src/components/AdminSettingsSharingForm.vue b/apps/settings/src/components/AdminSettingsSharingForm.vue index c582e9febee..b0e142d8480 100644 --- a/apps/settings/src/components/AdminSettingsSharingForm.vue +++ b/apps/settings/src/components/AdminSettingsSharingForm.vue @@ -164,7 +164,7 @@ </NcCheckboxRadioSwitch> <fieldset v-show="settings.allowLinks && settings.defaultExpireDate" id="settings-sharing-api-api-expiration" class="sharing__sub-section"> <NcCheckboxRadioSwitch :checked.sync="settings.enforceExpireDate"> - {{ t('settings', 'Enforce expiration date for remote shares') }} + {{ t('settings', 'Enforce expiration date for link or mail shares') }} </NcCheckboxRadioSwitch> <NcTextField type="number" class="sharing__input" diff --git a/apps/systemtags/l10n/lv.js b/apps/systemtags/l10n/lv.js index 6bbd17c5d52..4140ee32b0c 100644 --- a/apps/systemtags/l10n/lv.js +++ b/apps/systemtags/l10n/lv.js @@ -59,6 +59,7 @@ OC.L10N.register( "System tag creation is now allowed for everybody" : "Sistēmas birku izveidošana tagad ir ļauta visiem", "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Sadarbības birkas ir pieejamas visiem lietotājiem. Ierobežotās birkas ir redzamas lietotājiem, bet viņi tās nevar piešķirt. Neredzamās birkas ir paredzētas iekšējai lietošanai, jo lietotāji nevar tās redzēt vai piešķirt.", "No tags found" : "Netika atrasta neviena birka", + "Tags you have created will show up here." : "Tevis izveidotās birkas parādīsies šeit.", "Failed to delete tag for file" : "Neizdevās izdzēst birku vai datni" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"); diff --git a/apps/systemtags/l10n/lv.json b/apps/systemtags/l10n/lv.json index 254571a47ef..fff7a065c58 100644 --- a/apps/systemtags/l10n/lv.json +++ b/apps/systemtags/l10n/lv.json @@ -57,6 +57,7 @@ "System tag creation is now allowed for everybody" : "Sistēmas birku izveidošana tagad ir ļauta visiem", "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Sadarbības birkas ir pieejamas visiem lietotājiem. Ierobežotās birkas ir redzamas lietotājiem, bet viņi tās nevar piešķirt. Neredzamās birkas ir paredzētas iekšējai lietošanai, jo lietotāji nevar tās redzēt vai piešķirt.", "No tags found" : "Netika atrasta neviena birka", + "Tags you have created will show up here." : "Tevis izveidotās birkas parādīsies šeit.", "Failed to delete tag for file" : "Neizdevās izdzēst birku vai datni" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/user_status/l10n/de.js b/apps/user_status/l10n/de.js index 7d8d91af4f0..b59906d6135 100644 --- a/apps/user_status/l10n/de.js +++ b/apps/user_status/l10n/de.js @@ -10,6 +10,7 @@ OC.L10N.register( "Out of office" : "Nicht im Büro", "Working remotely" : "Arbeitet aus der Ferne", "In a call" : "In einem Anruf", + "Be right back" : "Bin gleich zurück", "User status" : "Benutzerstatus", "Clear status after" : "Status löschen nach", "Emoji for your status message" : "Emoji für deine Statusnachricht", diff --git a/apps/user_status/l10n/de.json b/apps/user_status/l10n/de.json index 770fd27203d..2badd82476c 100644 --- a/apps/user_status/l10n/de.json +++ b/apps/user_status/l10n/de.json @@ -8,6 +8,7 @@ "Out of office" : "Nicht im Büro", "Working remotely" : "Arbeitet aus der Ferne", "In a call" : "In einem Anruf", + "Be right back" : "Bin gleich zurück", "User status" : "Benutzerstatus", "Clear status after" : "Status löschen nach", "Emoji for your status message" : "Emoji für deine Statusnachricht", diff --git a/apps/user_status/l10n/de_DE.js b/apps/user_status/l10n/de_DE.js index 455f2ce834f..23d86b06643 100644 --- a/apps/user_status/l10n/de_DE.js +++ b/apps/user_status/l10n/de_DE.js @@ -10,6 +10,7 @@ OC.L10N.register( "Out of office" : "Nicht im Büro", "Working remotely" : "Arbeitet aus der Ferne", "In a call" : "In einem Anruf", + "Be right back" : "Bin gleich zurück", "User status" : "Benutzerstatus", "Clear status after" : "Status löschen nach", "Emoji for your status message" : "Emoji für Ihre Statusnachricht", diff --git a/apps/user_status/l10n/de_DE.json b/apps/user_status/l10n/de_DE.json index 8620038dd6f..9be300f0e29 100644 --- a/apps/user_status/l10n/de_DE.json +++ b/apps/user_status/l10n/de_DE.json @@ -8,6 +8,7 @@ "Out of office" : "Nicht im Büro", "Working remotely" : "Arbeitet aus der Ferne", "In a call" : "In einem Anruf", + "Be right back" : "Bin gleich zurück", "User status" : "Benutzerstatus", "Clear status after" : "Status löschen nach", "Emoji for your status message" : "Emoji für Ihre Statusnachricht", diff --git a/apps/user_status/l10n/en_GB.js b/apps/user_status/l10n/en_GB.js index 66e6f17618c..2ef82ebed8a 100644 --- a/apps/user_status/l10n/en_GB.js +++ b/apps/user_status/l10n/en_GB.js @@ -10,6 +10,7 @@ OC.L10N.register( "Out of office" : "Out of office", "Working remotely" : "Working remotely", "In a call" : "In a call", + "Be right back" : "Be right back", "User status" : "User status", "Clear status after" : "Clear status after", "Emoji for your status message" : "Emoji for your status message", diff --git a/apps/user_status/l10n/en_GB.json b/apps/user_status/l10n/en_GB.json index a668db7d18b..0e646a02599 100644 --- a/apps/user_status/l10n/en_GB.json +++ b/apps/user_status/l10n/en_GB.json @@ -8,6 +8,7 @@ "Out of office" : "Out of office", "Working remotely" : "Working remotely", "In a call" : "In a call", + "Be right back" : "Be right back", "User status" : "User status", "Clear status after" : "Clear status after", "Emoji for your status message" : "Emoji for your status message", diff --git a/apps/user_status/l10n/et_EE.js b/apps/user_status/l10n/et_EE.js index 72bcdc339c7..18c3c88e824 100644 --- a/apps/user_status/l10n/et_EE.js +++ b/apps/user_status/l10n/et_EE.js @@ -10,6 +10,7 @@ OC.L10N.register( "Out of office" : "Kontorist väljas", "Working remotely" : "Kaugtööl", "In a call" : "Kõnes", + "Be right back" : "Kohe jõuan tagasi", "User status" : "Kasutaja olek", "Clear status after" : "Eemalda olekuteade peale", "Emoji for your status message" : "Sinu olekuteate emoji", diff --git a/apps/user_status/l10n/et_EE.json b/apps/user_status/l10n/et_EE.json index 3a8227e76e1..903466eef24 100644 --- a/apps/user_status/l10n/et_EE.json +++ b/apps/user_status/l10n/et_EE.json @@ -8,6 +8,7 @@ "Out of office" : "Kontorist väljas", "Working remotely" : "Kaugtööl", "In a call" : "Kõnes", + "Be right back" : "Kohe jõuan tagasi", "User status" : "Kasutaja olek", "Clear status after" : "Eemalda olekuteade peale", "Emoji for your status message" : "Sinu olekuteate emoji", diff --git a/apps/user_status/l10n/ga.js b/apps/user_status/l10n/ga.js index d2e78391015..d976c272537 100644 --- a/apps/user_status/l10n/ga.js +++ b/apps/user_status/l10n/ga.js @@ -10,6 +10,7 @@ OC.L10N.register( "Out of office" : "As oifig", "Working remotely" : "Ag obair go cianda", "In a call" : "I nglao", + "Be right back" : "Ar ais láithreach", "User status" : "Stádas úsáideora", "Clear status after" : "Stádas soiléir tar éis", "Emoji for your status message" : "Emoji do do theachtaireacht stádais", diff --git a/apps/user_status/l10n/ga.json b/apps/user_status/l10n/ga.json index 2bc65745f6b..c672231aab3 100644 --- a/apps/user_status/l10n/ga.json +++ b/apps/user_status/l10n/ga.json @@ -8,6 +8,7 @@ "Out of office" : "As oifig", "Working remotely" : "Ag obair go cianda", "In a call" : "I nglao", + "Be right back" : "Ar ais láithreach", "User status" : "Stádas úsáideora", "Clear status after" : "Stádas soiléir tar éis", "Emoji for your status message" : "Emoji do do theachtaireacht stádais", diff --git a/apps/user_status/l10n/pt_BR.js b/apps/user_status/l10n/pt_BR.js index 0005887e473..3844bd746f7 100644 --- a/apps/user_status/l10n/pt_BR.js +++ b/apps/user_status/l10n/pt_BR.js @@ -10,6 +10,7 @@ OC.L10N.register( "Out of office" : "Fora do escritório", "Working remotely" : "Em trabalho remoto", "In a call" : "Em uma chamada", + "Be right back" : "Volto já", "User status" : "Status do usuário", "Clear status after" : "Limpar status após", "Emoji for your status message" : "Emoji para sua mensagem de status", diff --git a/apps/user_status/l10n/pt_BR.json b/apps/user_status/l10n/pt_BR.json index 9d233528ee0..e596a39e2bf 100644 --- a/apps/user_status/l10n/pt_BR.json +++ b/apps/user_status/l10n/pt_BR.json @@ -8,6 +8,7 @@ "Out of office" : "Fora do escritório", "Working remotely" : "Em trabalho remoto", "In a call" : "Em uma chamada", + "Be right back" : "Volto já", "User status" : "Status do usuário", "Clear status after" : "Limpar status após", "Emoji for your status message" : "Emoji para sua mensagem de status", diff --git a/apps/user_status/l10n/ru.js b/apps/user_status/l10n/ru.js index 5307a6e7fe3..32b784b5e0c 100644 --- a/apps/user_status/l10n/ru.js +++ b/apps/user_status/l10n/ru.js @@ -10,6 +10,7 @@ OC.L10N.register( "Out of office" : "Вне офиса", "Working remotely" : "Удалённо", "In a call" : "В вызове", + "Be right back" : "Скоро вернусь", "User status" : "Статус пользователя", "Clear status after" : "Очистить статус после", "Emoji for your status message" : "Эмодзи для вашего сообщения к статусу", diff --git a/apps/user_status/l10n/ru.json b/apps/user_status/l10n/ru.json index c46c053f5ef..f6b8d241ac4 100644 --- a/apps/user_status/l10n/ru.json +++ b/apps/user_status/l10n/ru.json @@ -8,6 +8,7 @@ "Out of office" : "Вне офиса", "Working remotely" : "Удалённо", "In a call" : "В вызове", + "Be right back" : "Скоро вернусь", "User status" : "Статус пользователя", "Clear status after" : "Очистить статус после", "Emoji for your status message" : "Эмодзи для вашего сообщения к статусу", diff --git a/apps/user_status/l10n/uk.js b/apps/user_status/l10n/uk.js index a76a67bb63c..b73417b164b 100644 --- a/apps/user_status/l10n/uk.js +++ b/apps/user_status/l10n/uk.js @@ -10,6 +10,7 @@ OC.L10N.register( "Out of office" : "Недоступний(-а)", "Working remotely" : "Працюю віддалено", "In a call" : "На дзвінку", + "Be right back" : "Зараз повернуся", "User status" : "Статус користувача", "Clear status after" : "Очистити статус після", "Emoji for your status message" : "Емоційки для повідомлення вашого статусу", diff --git a/apps/user_status/l10n/uk.json b/apps/user_status/l10n/uk.json index 66e5f7130d6..e115bf09f5f 100644 --- a/apps/user_status/l10n/uk.json +++ b/apps/user_status/l10n/uk.json @@ -8,6 +8,7 @@ "Out of office" : "Недоступний(-а)", "Working remotely" : "Працюю віддалено", "In a call" : "На дзвінку", + "Be right back" : "Зараз повернуся", "User status" : "Статус користувача", "Clear status after" : "Очистити статус після", "Emoji for your status message" : "Емоційки для повідомлення вашого статусу", diff --git a/apps/user_status/l10n/zh_CN.js b/apps/user_status/l10n/zh_CN.js index 1bf11fddfff..c36ad38c713 100644 --- a/apps/user_status/l10n/zh_CN.js +++ b/apps/user_status/l10n/zh_CN.js @@ -10,26 +10,27 @@ OC.L10N.register( "Out of office" : "不在办公室", "Working remotely" : "远程办公中", "In a call" : "通话中", + "Be right back" : "马上回来", "User status" : "用户状态", "Clear status after" : "清除状态于", - "Emoji for your status message" : "表示状态信息的表情符号", - "What is your status?" : "你什么状态?", - "Predefined statuses" : "预定义的状态", - "Previously set" : "先前设定", + "Emoji for your status message" : "状态消息的表情符号", + "What is your status?" : "您的状态如何?", + "Predefined statuses" : "预定义状态", + "Previously set" : "先前设置", "Reset status" : "重置状态", - "Reset status to \"{icon} {message}\"" : "重置状态为 {icon} {message}", - "Reset status to \"{message}\"" : "重置状态为 {message}", - "Reset status to \"{icon}\"" : "重置状态为 {icon}", + "Reset status to \"{icon} {message}\"" : "将状态重置为“{icon} {message}”", + "Reset status to \"{message}\"" : "将状态重置为“{message}”", + "Reset status to \"{icon}\"" : "将状态重置为“{icon}”", "There was an error saving the status" : "保存状态时出错", "There was an error clearing the status" : "清除状态时出错", - "There was an error reverting the status" : "还原状态时发生错误", + "There was an error reverting the status" : "恢复状态时出错", "Online status" : "在线状态", - "Status message" : "状态信息", + "Status message" : "状态消息", "Set absence period" : "设置缺勤时段", - "Set absence period and replacement" : "设置缺勤时段和替代人员", - "Your status was set automatically" : "您的状态已自动设定", - "Clear status message" : "清除状态信息", - "Set status message" : "设定状态信息", + "Set absence period and replacement" : "设置缺勤时段和接替者", + "Your status was set automatically" : "您的状态已自动设置", + "Clear status message" : "清除状态消息", + "Set status message" : "设置状态消息", "Don't clear" : "不要清除", "Today" : "今天", "This week" : "本周", @@ -38,11 +39,11 @@ OC.L10N.register( "Do not disturb" : "勿扰", "Invisible" : "隐身", "Offline" : "离线", - "Set status" : "设定状态", + "Set status" : "设置状态", "There was an error saving the new status" : "保存新状态时出错", "30 minutes" : "30 分钟", - "1 hour" : "1小时", - "4 hours" : "4小时", + "1 hour" : "1 小时", + "4 hours" : "4 小时", "Busy" : "忙碌", "Mute all notifications" : "静音所有通知", "Appear offline" : "显示为离线" diff --git a/apps/user_status/l10n/zh_CN.json b/apps/user_status/l10n/zh_CN.json index 7157edb0884..8546482d238 100644 --- a/apps/user_status/l10n/zh_CN.json +++ b/apps/user_status/l10n/zh_CN.json @@ -8,26 +8,27 @@ "Out of office" : "不在办公室", "Working remotely" : "远程办公中", "In a call" : "通话中", + "Be right back" : "马上回来", "User status" : "用户状态", "Clear status after" : "清除状态于", - "Emoji for your status message" : "表示状态信息的表情符号", - "What is your status?" : "你什么状态?", - "Predefined statuses" : "预定义的状态", - "Previously set" : "先前设定", + "Emoji for your status message" : "状态消息的表情符号", + "What is your status?" : "您的状态如何?", + "Predefined statuses" : "预定义状态", + "Previously set" : "先前设置", "Reset status" : "重置状态", - "Reset status to \"{icon} {message}\"" : "重置状态为 {icon} {message}", - "Reset status to \"{message}\"" : "重置状态为 {message}", - "Reset status to \"{icon}\"" : "重置状态为 {icon}", + "Reset status to \"{icon} {message}\"" : "将状态重置为“{icon} {message}”", + "Reset status to \"{message}\"" : "将状态重置为“{message}”", + "Reset status to \"{icon}\"" : "将状态重置为“{icon}”", "There was an error saving the status" : "保存状态时出错", "There was an error clearing the status" : "清除状态时出错", - "There was an error reverting the status" : "还原状态时发生错误", + "There was an error reverting the status" : "恢复状态时出错", "Online status" : "在线状态", - "Status message" : "状态信息", + "Status message" : "状态消息", "Set absence period" : "设置缺勤时段", - "Set absence period and replacement" : "设置缺勤时段和替代人员", - "Your status was set automatically" : "您的状态已自动设定", - "Clear status message" : "清除状态信息", - "Set status message" : "设定状态信息", + "Set absence period and replacement" : "设置缺勤时段和接替者", + "Your status was set automatically" : "您的状态已自动设置", + "Clear status message" : "清除状态消息", + "Set status message" : "设置状态消息", "Don't clear" : "不要清除", "Today" : "今天", "This week" : "本周", @@ -36,11 +37,11 @@ "Do not disturb" : "勿扰", "Invisible" : "隐身", "Offline" : "离线", - "Set status" : "设定状态", + "Set status" : "设置状态", "There was an error saving the new status" : "保存新状态时出错", "30 minutes" : "30 分钟", - "1 hour" : "1小时", - "4 hours" : "4小时", + "1 hour" : "1 小时", + "4 hours" : "4 小时", "Busy" : "忙碌", "Mute all notifications" : "静音所有通知", "Appear offline" : "显示为离线" diff --git a/apps/user_status/l10n/zh_HK.js b/apps/user_status/l10n/zh_HK.js index 0cad7a3e277..66fcd087abe 100644 --- a/apps/user_status/l10n/zh_HK.js +++ b/apps/user_status/l10n/zh_HK.js @@ -10,6 +10,7 @@ OC.L10N.register( "Out of office" : "不在辦公室", "Working remotely" : "遠程工作中", "In a call" : "通話中", + "Be right back" : "馬上回來", "User status" : "用戶狀態", "Clear status after" : "繼此之後清空狀態", "Emoji for your status message" : "狀態訊息的表情符號", diff --git a/apps/user_status/l10n/zh_HK.json b/apps/user_status/l10n/zh_HK.json index dbea763794f..a95da1fa45c 100644 --- a/apps/user_status/l10n/zh_HK.json +++ b/apps/user_status/l10n/zh_HK.json @@ -8,6 +8,7 @@ "Out of office" : "不在辦公室", "Working remotely" : "遠程工作中", "In a call" : "通話中", + "Be right back" : "馬上回來", "User status" : "用戶狀態", "Clear status after" : "繼此之後清空狀態", "Emoji for your status message" : "狀態訊息的表情符號", diff --git a/apps/user_status/l10n/zh_TW.js b/apps/user_status/l10n/zh_TW.js index dbb1627765f..c4cd18345a5 100644 --- a/apps/user_status/l10n/zh_TW.js +++ b/apps/user_status/l10n/zh_TW.js @@ -10,6 +10,7 @@ OC.L10N.register( "Out of office" : "不在辦公室", "Working remotely" : "遠端工作", "In a call" : "通話中", + "Be right back" : "馬上回來", "User status" : "使用者狀態", "Clear status after" : "多久後清除狀態", "Emoji for your status message" : "狀態訊息的表情符號", diff --git a/apps/user_status/l10n/zh_TW.json b/apps/user_status/l10n/zh_TW.json index e42a675045d..9e99204b682 100644 --- a/apps/user_status/l10n/zh_TW.json +++ b/apps/user_status/l10n/zh_TW.json @@ -8,6 +8,7 @@ "Out of office" : "不在辦公室", "Working remotely" : "遠端工作", "In a call" : "通話中", + "Be right back" : "馬上回來", "User status" : "使用者狀態", "Clear status after" : "多久後清除狀態", "Emoji for your status message" : "狀態訊息的表情符號", diff --git a/apps/workflowengine/composer/composer/autoload_classmap.php b/apps/workflowengine/composer/composer/autoload_classmap.php index 52d221fb767..0444cce13e7 100644 --- a/apps/workflowengine/composer/composer/autoload_classmap.php +++ b/apps/workflowengine/composer/composer/autoload_classmap.php @@ -10,7 +10,6 @@ return array( 'OCA\\WorkflowEngine\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php', 'OCA\\WorkflowEngine\\BackgroundJobs\\Rotate' => $baseDir . '/../lib/BackgroundJobs/Rotate.php', 'OCA\\WorkflowEngine\\Check\\AbstractStringCheck' => $baseDir . '/../lib/Check/AbstractStringCheck.php', - 'OCA\\WorkflowEngine\\Check\\Directory' => $baseDir . '/../lib/Check/Directory.php', 'OCA\\WorkflowEngine\\Check\\FileMimeType' => $baseDir . '/../lib/Check/FileMimeType.php', 'OCA\\WorkflowEngine\\Check\\FileName' => $baseDir . '/../lib/Check/FileName.php', 'OCA\\WorkflowEngine\\Check\\FileSize' => $baseDir . '/../lib/Check/FileSize.php', diff --git a/apps/workflowengine/composer/composer/autoload_static.php b/apps/workflowengine/composer/composer/autoload_static.php index 57b569dbc10..0b9ac89ae30 100644 --- a/apps/workflowengine/composer/composer/autoload_static.php +++ b/apps/workflowengine/composer/composer/autoload_static.php @@ -25,7 +25,6 @@ class ComposerStaticInitWorkflowEngine 'OCA\\WorkflowEngine\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php', 'OCA\\WorkflowEngine\\BackgroundJobs\\Rotate' => __DIR__ . '/..' . '/../lib/BackgroundJobs/Rotate.php', 'OCA\\WorkflowEngine\\Check\\AbstractStringCheck' => __DIR__ . '/..' . '/../lib/Check/AbstractStringCheck.php', - 'OCA\\WorkflowEngine\\Check\\Directory' => __DIR__ . '/..' . '/../lib/Check/Directory.php', 'OCA\\WorkflowEngine\\Check\\FileMimeType' => __DIR__ . '/..' . '/../lib/Check/FileMimeType.php', 'OCA\\WorkflowEngine\\Check\\FileName' => __DIR__ . '/..' . '/../lib/Check/FileName.php', 'OCA\\WorkflowEngine\\Check\\FileSize' => __DIR__ . '/..' . '/../lib/Check/FileSize.php', diff --git a/apps/workflowengine/l10n/et_EE.js b/apps/workflowengine/l10n/et_EE.js new file mode 100644 index 00000000000..a6dd9bd897e --- /dev/null +++ b/apps/workflowengine/l10n/et_EE.js @@ -0,0 +1,123 @@ +OC.L10N.register( + "workflowengine", + { + "The given operator is invalid" : "Antud operaator/tehtemärk on vigane", + "The given regular expression is invalid" : "Antud regulaaravaldis on vigane", + "The given file size is invalid" : "Antud faili suurus on vigane", + "The given tag id is invalid" : "Antud sildi tunnus on vigane", + "The given IP range is invalid" : "Antud IP-aadresside vahemik on vigane", + "The given IP range is not valid for IPv4" : "Antud IP vahemik ei kehti IPv4 kohta", + "The given IP range is not valid for IPv6" : "Antud IP vahemik ei kehti IPv6 kohta", + "The given time span is invalid" : "Antud ajavahemik on vigane", + "The given start time is invalid" : "Antud algusaeg on vigane", + "The given end time is invalid" : "Antud lõppaeg on vigane", + "The given group does not exist" : "Antud gruppi ei leitud", + "File" : "Fail", + "File created" : "Fail on loodud", + "File updated" : "Fail on uuendatud", + "File renamed" : "Faili nimi on muudetud", + "File deleted" : "Fail on kustutatud", + "File accessed" : "Faili on kasutatud", + "File copied" : "Fail on kopeeritud", + "Tag assigned" : "Silt on lisatud", + "Someone" : "Keegi", + "%s created %s" : "%s lõi %s", + "%s modified %s" : "%s muutis %s", + "%s deleted %s" : "%s kustutas %s", + "%s accessed %s" : "%s kasutas töövoogu %s", + "%s renamed %s" : "%s muutis %s nime", + "%s copied %s" : "%s kopeeris %s", + "%s assigned %s to %s" : "%s määras %s kasutajale %s", + "Operation #%s does not exist" : "Tegevus # %s ei leitud", + "Entity %s does not exist" : "%s objekti pole olemas", + "Entity %s is invalid" : "%s objekt on vigane", + "No events are chosen." : "Ühtegi sündmust pole valitud.", + "Entity %s has no event %s" : "%s objektil pole %s sündmust", + "Operation %s does not exist" : "%s tegevust pole olemas", + "Operation %s is invalid" : " %s tegevus on vigane", + "At least one check needs to be provided" : "Pead lisama vähemalt ühe kontrolli", + "The provided operation data is too long" : "Lisatud tegevuse andmed on liiga mahukad", + "Invalid check provided" : "Oled lisanud vigase kontrolli", + "Check %s does not exist" : "%s kontrolli pole olemas", + "Check %s is invalid" : "%s kontroll on vigane", + "Check %s is not allowed with this entity" : "Selle objekti puhul ei saa kasutada seda kontrolli: %s", + "The provided check value is too long" : "Lisatud kontrolli väärtus on liiga pikk", + "Check #%s does not exist" : "Kontrolli #%s pole olemas", + "Check %s is invalid or does not exist" : "%s kontroll on vigane või pole teda olemas", + "Flow" : "Töövoog", + "Nextcloud workflow engine" : "Nextcloudi töövoogude mootor", + "Select a filter" : "Vali filter", + "Select a comparator" : "Vali võrdleja", + "Remove filter" : "Eemalda filter", + "Folder" : "Kaust", + "Images" : "Pildid", + "Office documents" : "Kontroritarkvara dokumendid", + "PDF documents" : "PDF-dokumendid", + "Custom MIME type" : "Sinu määratud MIME-tüüp", + "Custom mimetype" : "Sinu määratud MIME-tüüp", + "Select a file type" : "Vali failitüüp", + "e.g. httpd/unix-directory" : "nt. httpd/unix-directory", + "Please enter a valid time span" : "Palun sisesta korrektne ajavahemik", + "Files WebDAV" : "WebDAV-i failid", + "Custom URL" : "Sinu määratud võrguaadress", + "Select a request URL" : "Vali päringu võrguaadress", + "Android client" : "Android klient", + "iOS client" : "iOS-i klient", + "Desktop client" : "Töölaua klient", + "Thunderbird & Outlook addons" : "Thunderbirdi ja Outlooki lisad", + "Custom user agent" : "Sinu määratud rakenduse tunnus", + "Select a user agent" : "Vali rakenduse tunnus", + "Select groups" : "Vali grupid", + "Groups" : "Grupid", + "Type to search for group …" : "Grupi otsimiseks kirjuta midagi…", + "Select a trigger" : "Vali päästik", + "At least one event must be selected" : "Palun valitud vähemalt üks sündmus", + "Add new flow" : "Lisa uus töövoog", + "The configuration is invalid" : "Seadistus on vigane", + "Active" : "Aktiivne", + "Save" : "Salvesta", + "When" : "Millal", + "and" : "ja", + "Add a new filter" : "Lisa uus filter", + "Cancel" : "Loobu", + "Delete" : "Kustuta", + "Available flows" : "Saadaval töövood", + "For details on how to write your own flow, check out the development documentation." : "Lisateavet oma töövoogude kirjutamiseks leiad dokumentatsioonist arendajatele.", + "No flows installed" : "Ühtegi töövoogu pole paigaldatud", + "Ask your administrator to install new flows." : "Palu oma serveri haldajat, et ta paigaldaks uusi töövooge.", + "More flows" : "Veel töövooge", + "Browse the App Store" : "Sirvi rakendustepoodi", + "Show less" : "Näita vähem", + "Show more" : "Näita rohkem", + "Configured flows" : "Seadistatud töövood", + "Your flows" : "Sinu töövood", + "No flows configured" : "Ühtegi töövoogu pole seadistatud", + "matches" : "kattub", + "does not match" : "ei kattu", + "is" : "on", + "is not" : "ei ole", + "File name" : "Failinimi", + "File MIME type" : "Faili MIME-tüüp", + "File size (upload)" : "Faili suurus (üleslaadimine)", + "less" : "väiksem", + "less or equals" : "väiksem või võrdne", + "greater or equals" : "suurem või võrdne", + "greater" : "suurem", + "Request remote address" : "Päringu kaugaadress", + "matches IPv4" : "kattub IPv4 aadressiga", + "does not match IPv4" : "Ei kattu IPv4 aadressiga", + "matches IPv6" : "kattub IPv6 aadressiga", + "does not match IPv6" : "Ei kattu IPv6 aadressiga", + "File system tag" : "Failisüsteemi silt", + "is tagged with" : "on sildiga", + "is not tagged with" : "ei ole märgitud sildiga", + "Request URL" : "Päringu võrguaadress", + "Request time" : "Päringu aeg", + "between" : "vahemikus", + "not between" : "ei ole vahemikus", + "Request user agent" : "Päri rakenduse tunnust", + "Group membership" : "Grupi liikmelisus", + "is member of" : "on liige", + "is not member of" : "ei ole liige" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/workflowengine/l10n/et_EE.json b/apps/workflowengine/l10n/et_EE.json new file mode 100644 index 00000000000..3da17c5756d --- /dev/null +++ b/apps/workflowengine/l10n/et_EE.json @@ -0,0 +1,121 @@ +{ "translations": { + "The given operator is invalid" : "Antud operaator/tehtemärk on vigane", + "The given regular expression is invalid" : "Antud regulaaravaldis on vigane", + "The given file size is invalid" : "Antud faili suurus on vigane", + "The given tag id is invalid" : "Antud sildi tunnus on vigane", + "The given IP range is invalid" : "Antud IP-aadresside vahemik on vigane", + "The given IP range is not valid for IPv4" : "Antud IP vahemik ei kehti IPv4 kohta", + "The given IP range is not valid for IPv6" : "Antud IP vahemik ei kehti IPv6 kohta", + "The given time span is invalid" : "Antud ajavahemik on vigane", + "The given start time is invalid" : "Antud algusaeg on vigane", + "The given end time is invalid" : "Antud lõppaeg on vigane", + "The given group does not exist" : "Antud gruppi ei leitud", + "File" : "Fail", + "File created" : "Fail on loodud", + "File updated" : "Fail on uuendatud", + "File renamed" : "Faili nimi on muudetud", + "File deleted" : "Fail on kustutatud", + "File accessed" : "Faili on kasutatud", + "File copied" : "Fail on kopeeritud", + "Tag assigned" : "Silt on lisatud", + "Someone" : "Keegi", + "%s created %s" : "%s lõi %s", + "%s modified %s" : "%s muutis %s", + "%s deleted %s" : "%s kustutas %s", + "%s accessed %s" : "%s kasutas töövoogu %s", + "%s renamed %s" : "%s muutis %s nime", + "%s copied %s" : "%s kopeeris %s", + "%s assigned %s to %s" : "%s määras %s kasutajale %s", + "Operation #%s does not exist" : "Tegevus # %s ei leitud", + "Entity %s does not exist" : "%s objekti pole olemas", + "Entity %s is invalid" : "%s objekt on vigane", + "No events are chosen." : "Ühtegi sündmust pole valitud.", + "Entity %s has no event %s" : "%s objektil pole %s sündmust", + "Operation %s does not exist" : "%s tegevust pole olemas", + "Operation %s is invalid" : " %s tegevus on vigane", + "At least one check needs to be provided" : "Pead lisama vähemalt ühe kontrolli", + "The provided operation data is too long" : "Lisatud tegevuse andmed on liiga mahukad", + "Invalid check provided" : "Oled lisanud vigase kontrolli", + "Check %s does not exist" : "%s kontrolli pole olemas", + "Check %s is invalid" : "%s kontroll on vigane", + "Check %s is not allowed with this entity" : "Selle objekti puhul ei saa kasutada seda kontrolli: %s", + "The provided check value is too long" : "Lisatud kontrolli väärtus on liiga pikk", + "Check #%s does not exist" : "Kontrolli #%s pole olemas", + "Check %s is invalid or does not exist" : "%s kontroll on vigane või pole teda olemas", + "Flow" : "Töövoog", + "Nextcloud workflow engine" : "Nextcloudi töövoogude mootor", + "Select a filter" : "Vali filter", + "Select a comparator" : "Vali võrdleja", + "Remove filter" : "Eemalda filter", + "Folder" : "Kaust", + "Images" : "Pildid", + "Office documents" : "Kontroritarkvara dokumendid", + "PDF documents" : "PDF-dokumendid", + "Custom MIME type" : "Sinu määratud MIME-tüüp", + "Custom mimetype" : "Sinu määratud MIME-tüüp", + "Select a file type" : "Vali failitüüp", + "e.g. httpd/unix-directory" : "nt. httpd/unix-directory", + "Please enter a valid time span" : "Palun sisesta korrektne ajavahemik", + "Files WebDAV" : "WebDAV-i failid", + "Custom URL" : "Sinu määratud võrguaadress", + "Select a request URL" : "Vali päringu võrguaadress", + "Android client" : "Android klient", + "iOS client" : "iOS-i klient", + "Desktop client" : "Töölaua klient", + "Thunderbird & Outlook addons" : "Thunderbirdi ja Outlooki lisad", + "Custom user agent" : "Sinu määratud rakenduse tunnus", + "Select a user agent" : "Vali rakenduse tunnus", + "Select groups" : "Vali grupid", + "Groups" : "Grupid", + "Type to search for group …" : "Grupi otsimiseks kirjuta midagi…", + "Select a trigger" : "Vali päästik", + "At least one event must be selected" : "Palun valitud vähemalt üks sündmus", + "Add new flow" : "Lisa uus töövoog", + "The configuration is invalid" : "Seadistus on vigane", + "Active" : "Aktiivne", + "Save" : "Salvesta", + "When" : "Millal", + "and" : "ja", + "Add a new filter" : "Lisa uus filter", + "Cancel" : "Loobu", + "Delete" : "Kustuta", + "Available flows" : "Saadaval töövood", + "For details on how to write your own flow, check out the development documentation." : "Lisateavet oma töövoogude kirjutamiseks leiad dokumentatsioonist arendajatele.", + "No flows installed" : "Ühtegi töövoogu pole paigaldatud", + "Ask your administrator to install new flows." : "Palu oma serveri haldajat, et ta paigaldaks uusi töövooge.", + "More flows" : "Veel töövooge", + "Browse the App Store" : "Sirvi rakendustepoodi", + "Show less" : "Näita vähem", + "Show more" : "Näita rohkem", + "Configured flows" : "Seadistatud töövood", + "Your flows" : "Sinu töövood", + "No flows configured" : "Ühtegi töövoogu pole seadistatud", + "matches" : "kattub", + "does not match" : "ei kattu", + "is" : "on", + "is not" : "ei ole", + "File name" : "Failinimi", + "File MIME type" : "Faili MIME-tüüp", + "File size (upload)" : "Faili suurus (üleslaadimine)", + "less" : "väiksem", + "less or equals" : "väiksem või võrdne", + "greater or equals" : "suurem või võrdne", + "greater" : "suurem", + "Request remote address" : "Päringu kaugaadress", + "matches IPv4" : "kattub IPv4 aadressiga", + "does not match IPv4" : "Ei kattu IPv4 aadressiga", + "matches IPv6" : "kattub IPv6 aadressiga", + "does not match IPv6" : "Ei kattu IPv6 aadressiga", + "File system tag" : "Failisüsteemi silt", + "is tagged with" : "on sildiga", + "is not tagged with" : "ei ole märgitud sildiga", + "Request URL" : "Päringu võrguaadress", + "Request time" : "Päringu aeg", + "between" : "vahemikus", + "not between" : "ei ole vahemikus", + "Request user agent" : "Päri rakenduse tunnust", + "Group membership" : "Grupi liikmelisus", + "is member of" : "on liige", + "is not member of" : "ei ole liige" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/workflowengine/l10n/lv.js b/apps/workflowengine/l10n/lv.js index 088196c0081..30577193c0a 100644 --- a/apps/workflowengine/l10n/lv.js +++ b/apps/workflowengine/l10n/lv.js @@ -26,7 +26,7 @@ OC.L10N.register( "Nextcloud workflow engine" : "Nextcloud darbplūsmu dzinis", "Folder" : "Mape", "Images" : "Attēli", - "Files WebDAV" : "WebDAV datnes", + "Files WebDAV" : "Datņu WebDAV", "Android client" : "Android klients", "iOS client" : "iOS klients", "Desktop client" : "Darbvirsmas klients", diff --git a/apps/workflowengine/l10n/lv.json b/apps/workflowengine/l10n/lv.json index 3dce9342e1e..1665558a6fc 100644 --- a/apps/workflowengine/l10n/lv.json +++ b/apps/workflowengine/l10n/lv.json @@ -24,7 +24,7 @@ "Nextcloud workflow engine" : "Nextcloud darbplūsmu dzinis", "Folder" : "Mape", "Images" : "Attēli", - "Files WebDAV" : "WebDAV datnes", + "Files WebDAV" : "Datņu WebDAV", "Android client" : "Android klients", "iOS client" : "iOS klients", "Desktop client" : "Darbvirsmas klients", diff --git a/apps/workflowengine/lib/Check/Directory.php b/apps/workflowengine/lib/Check/Directory.php deleted file mode 100644 index f7b856a95fe..00000000000 --- a/apps/workflowengine/lib/Check/Directory.php +++ /dev/null @@ -1,58 +0,0 @@ -<?php - -declare(strict_types=1); - -/** - * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */ -namespace OCA\WorkflowEngine\Check; - -use OCA\WorkflowEngine\Entity\File; -use OCP\IL10N; -use OCP\WorkflowEngine\IFileCheck; - -class Directory extends AbstractStringCheck implements IFileCheck { - use TFileCheck; - - /** - * @param IL10N $l - */ - public function __construct( - IL10N $l, - ) { - parent::__construct($l); - } - - /** - * @return string - */ - protected function getActualValue(): string { - if ($this->path === null) { - return ''; - } - // files/some/path -> some/path - return preg_replace('/^files\//', '', pathinfo($this->path, PATHINFO_DIRNAME)); - } - - /** - * @param string $operator - * @param string $checkValue - * @param string $actualValue - * @return bool - */ - protected function executeStringCheck($operator, $checkValue, $actualValue) { - if ($operator === 'is' || $operator === '!is') { - $checkValue = ltrim(rtrim($checkValue, '/'), '/'); - } - return parent::executeStringCheck($operator, $checkValue, $actualValue); - } - - public function supportedEntities(): array { - return [ File::class ]; - } - - public function isAvailableForScope(int $scope): bool { - return true; - } -} diff --git a/apps/workflowengine/lib/Manager.php b/apps/workflowengine/lib/Manager.php index 27b25a2e752..0f41679789d 100644 --- a/apps/workflowengine/lib/Manager.php +++ b/apps/workflowengine/lib/Manager.php @@ -8,7 +8,6 @@ namespace OCA\WorkflowEngine; use Doctrine\DBAL\Exception; use OCA\WorkflowEngine\AppInfo\Application; -use OCA\WorkflowEngine\Check\Directory; use OCA\WorkflowEngine\Check\FileMimeType; use OCA\WorkflowEngine\Check\FileName; use OCA\WorkflowEngine\Check\FileSize; @@ -693,7 +692,6 @@ class Manager implements IManager { protected function getBuildInChecks(): array { try { return [ - $this->container->query(Directory::class), $this->container->query(FileMimeType::class), $this->container->query(FileName::class), $this->container->query(FileSize::class), diff --git a/apps/workflowengine/src/components/Checks/file.js b/apps/workflowengine/src/components/Checks/file.js index b2d348e4712..568efc81cd3 100644 --- a/apps/workflowengine/src/components/Checks/file.js +++ b/apps/workflowengine/src/components/Checks/file.js @@ -32,19 +32,6 @@ const FileChecks = [ }, { - class: 'OCA\\WorkflowEngine\\Check\\Directory', - name: t('workflowengine', 'Directory'), - operators: stringOrRegexOperators, - placeholder: (check) => { - if (check.operator === 'matches' || check.operator === '!matches') { - return '/^myfolder/.+$/i' - } - return 'myfolder/subfolder' - }, - validate: stringValidator, - }, - - { class: 'OCA\\WorkflowEngine\\Check\\FileMimeType', name: t('workflowengine', 'File MIME type'), operators: stringOrRegexOperators, diff --git a/apps/workflowengine/tests/Check/DirectoryTest.php b/apps/workflowengine/tests/Check/DirectoryTest.php deleted file mode 100644 index 6eef082b5e5..00000000000 --- a/apps/workflowengine/tests/Check/DirectoryTest.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php - -declare(strict_types=1); -/** - * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace OCA\WorkflowEngine\Tests\Check; - -use OCA\WorkflowEngine\Check\Directory; -use OCA\WorkflowEngine\Entity\File; -use OCP\Files\Storage\IStorage; -use OCP\IL10N; -use Test\TestCase; - -class DirectoryTest extends TestCase { - /** @var IL10N */ - private $l10n; - - /** @var IStorage */ - private $storage; - - /** @var Directory */ - private $directory; - - protected function setUp(): void { - parent::setUp(); - $this->l10n = $this->createMock(IL10N::class); - $this->storage = $this->createMock(IStorage::class); - $this->directory = new Directory($this->l10n); - } - - /** - * @dataProvider dataProviderCheck - */ - public function testExecuteStringCheck(string $operator, string $configuredDirectoryPath, string $filePath, bool $expectedResult): void { - $this->directory->setFileInfo($this->storage, $filePath); - - $result = $this->directory->executeCheck($operator, $configuredDirectoryPath); - - $this->assertEquals($expectedResult, $result); - } - - public function testSupportedEntities(): void { - $this->assertSame([File::class], $this->directory->supportedEntities()); - } - - public function testIsAvailableForScope(): void { - $this->assertTrue($this->directory->isAvailableForScope(1)); - } - - public function dataProviderCheck(): array { - return [ - ['is', 'some/path', 'files/some/path/file.txt', true], - ['is', '/some/path/', 'files/some/path/file.txt', true], - - ['!is', 'some/path', 'files/some/path/file.txt', false], - ['!is', 'some/path/', 'files/someother/path/file.txt', true], - - ['matches', '/^some\/path\/.+$/i', 'files/SomE/PATH/subfolder/file.txt', true], - ['matches', '/some\/path\/.*\/sub2/', 'files/some/path/subfolder1/sub2/anotherfile.pdf', true], - - ['!matches', '/some\/path/', 'files/some/path/file.txt', false], - ['!matches', '/some\/path/', 'files/another/path/file.txt', true], - ]; - } -} |