summaryrefslogtreecommitdiffstats
path: root/apps/dav
diff options
context:
space:
mode:
Diffstat (limited to 'apps/dav')
-rw-r--r--apps/dav/appinfo/info.xml4
-rw-r--r--apps/dav/appinfo/v1/caldav.php6
-rw-r--r--apps/dav/appinfo/v1/carddav.php5
-rw-r--r--apps/dav/appinfo/v1/publicwebdav.php2
-rw-r--r--apps/dav/appinfo/v1/webdav.php2
-rw-r--r--apps/dav/l10n/bg.js25
-rw-r--r--apps/dav/l10n/bg.json25
-rw-r--r--apps/dav/l10n/ca.js13
-rw-r--r--apps/dav/l10n/ca.json13
-rw-r--r--apps/dav/l10n/cs.js3
-rw-r--r--apps/dav/l10n/cs.json3
-rw-r--r--apps/dav/l10n/da.js12
-rw-r--r--apps/dav/l10n/da.json12
-rw-r--r--apps/dav/l10n/de.js5
-rw-r--r--apps/dav/l10n/de.json5
-rw-r--r--apps/dav/l10n/de_DE.js4
-rw-r--r--apps/dav/l10n/de_DE.json4
-rw-r--r--apps/dav/l10n/el.js15
-rw-r--r--apps/dav/l10n/el.json15
-rw-r--r--apps/dav/l10n/eo.js9
-rw-r--r--apps/dav/l10n/eo.json9
-rw-r--r--apps/dav/l10n/es.js19
-rw-r--r--apps/dav/l10n/es.json19
-rw-r--r--apps/dav/l10n/eu.js5
-rw-r--r--apps/dav/l10n/eu.json5
-rw-r--r--apps/dav/l10n/fi.js9
-rw-r--r--apps/dav/l10n/fi.json9
-rw-r--r--apps/dav/l10n/fr.js6
-rw-r--r--apps/dav/l10n/fr.json6
-rw-r--r--apps/dav/l10n/gl.js13
-rw-r--r--apps/dav/l10n/gl.json13
-rw-r--r--apps/dav/l10n/he.js13
-rw-r--r--apps/dav/l10n/he.json13
-rw-r--r--apps/dav/l10n/hr.js4
-rw-r--r--apps/dav/l10n/hr.json4
-rw-r--r--apps/dav/l10n/hu.js211
-rw-r--r--apps/dav/l10n/hu.json211
-rw-r--r--apps/dav/l10n/is.js9
-rw-r--r--apps/dav/l10n/is.json9
-rw-r--r--apps/dav/l10n/it.js4
-rw-r--r--apps/dav/l10n/it.json4
-rw-r--r--apps/dav/l10n/ja.js11
-rw-r--r--apps/dav/l10n/ja.json11
-rw-r--r--apps/dav/l10n/ko.js13
-rw-r--r--apps/dav/l10n/ko.json13
-rw-r--r--apps/dav/l10n/lt_LT.js3
-rw-r--r--apps/dav/l10n/lt_LT.json3
-rw-r--r--apps/dav/l10n/mk.js4
-rw-r--r--apps/dav/l10n/mk.json4
-rw-r--r--apps/dav/l10n/nb.js12
-rw-r--r--apps/dav/l10n/nb.json12
-rw-r--r--apps/dav/l10n/nl.js4
-rw-r--r--apps/dav/l10n/nl.json4
-rw-r--r--apps/dav/l10n/pl.js3
-rw-r--r--apps/dav/l10n/pl.json3
-rw-r--r--apps/dav/l10n/pt_BR.js4
-rw-r--r--apps/dav/l10n/pt_BR.json4
-rw-r--r--apps/dav/l10n/ru.js4
-rw-r--r--apps/dav/l10n/ru.json4
-rw-r--r--apps/dav/l10n/sc.js12
-rw-r--r--apps/dav/l10n/sc.json12
-rw-r--r--apps/dav/l10n/sk.js4
-rw-r--r--apps/dav/l10n/sk.json4
-rw-r--r--apps/dav/l10n/sl.js5
-rw-r--r--apps/dav/l10n/sl.json5
-rw-r--r--apps/dav/l10n/sr.js12
-rw-r--r--apps/dav/l10n/sr.json12
-rw-r--r--apps/dav/l10n/sv.js4
-rw-r--r--apps/dav/l10n/sv.json4
-rw-r--r--apps/dav/l10n/tr.js3
-rw-r--r--apps/dav/l10n/tr.json3
-rw-r--r--apps/dav/l10n/uk.js9
-rw-r--r--apps/dav/l10n/uk.json9
-rw-r--r--apps/dav/l10n/zh_CN.js4
-rw-r--r--apps/dav/l10n/zh_CN.json4
-rw-r--r--apps/dav/l10n/zh_HK.js4
-rw-r--r--apps/dav/l10n/zh_HK.json4
-rw-r--r--apps/dav/l10n/zh_TW.js3
-rw-r--r--apps/dav/l10n/zh_TW.json3
-rw-r--r--apps/dav/lib/AppInfo/Application.php10
-rw-r--r--apps/dav/lib/BackgroundJob/BuildReminderIndexBackgroundJob.php15
-rw-r--r--apps/dav/lib/CalDAV/CalDavBackend.php25
-rw-r--r--apps/dav/lib/CalDAV/ICSExportPlugin/ICSExportPlugin.php9
-rw-r--r--apps/dav/lib/CalDAV/InvitationResponse/InvitationResponseServer.php3
-rw-r--r--apps/dav/lib/CalDAV/Reminder/NotificationProvider/AbstractProvider.php13
-rw-r--r--apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php13
-rw-r--r--apps/dav/lib/CalDAV/Reminder/NotificationProvider/PushProvider.php12
-rw-r--r--apps/dav/lib/CalDAV/Reminder/ReminderService.php5
-rw-r--r--apps/dav/lib/CalDAV/ResourceBooking/AbstractPrincipalBackend.php16
-rw-r--r--apps/dav/lib/CalDAV/ResourceBooking/ResourcePrincipalBackend.php10
-rw-r--r--apps/dav/lib/CalDAV/ResourceBooking/RoomPrincipalBackend.php10
-rw-r--r--apps/dav/lib/CalDAV/Schedule/IMipPlugin.php22
-rw-r--r--apps/dav/lib/CalDAV/WebcalCaching/RefreshWebcalService.php34
-rw-r--r--apps/dav/lib/CardDAV/PhotoCache.php18
-rw-r--r--apps/dav/lib/CardDAV/SyncService.php15
-rw-r--r--apps/dav/lib/Command/CreateCalendar.php3
-rw-r--r--apps/dav/lib/Comments/CommentNode.php17
-rw-r--r--apps/dav/lib/Comments/EntityCollection.php9
-rw-r--r--apps/dav/lib/Comments/EntityTypeCollection.php9
-rw-r--r--apps/dav/lib/Comments/RootCollection.php14
-rw-r--r--apps/dav/lib/Connector/Sabre/Auth.php3
-rw-r--r--apps/dav/lib/Connector/Sabre/Directory.php6
-rw-r--r--apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php25
-rw-r--r--apps/dav/lib/Connector/Sabre/File.php15
-rw-r--r--apps/dav/lib/Connector/Sabre/Principal.php9
-rw-r--r--apps/dav/lib/Connector/Sabre/ServerFactory.php17
-rw-r--r--apps/dav/lib/DAV/CustomPropertiesBackend.php22
-rw-r--r--apps/dav/lib/HookManager.php9
-rw-r--r--apps/dav/lib/Migration/CalDAVRemoveEmptyValue.php12
-rw-r--r--apps/dav/lib/RootCollection.php13
-rw-r--r--apps/dav/lib/Server.php20
-rw-r--r--apps/dav/lib/UserMigration/CalendarMigrator.php25
-rw-r--r--apps/dav/lib/UserMigration/ContactsMigrator.php22
-rw-r--r--apps/dav/tests/integration/UserMigration/CalendarMigratorTest.php2
-rw-r--r--apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php6
-rw-r--r--apps/dav/tests/unit/CalDAV/PublicCalendarRootTest.php12
-rw-r--r--apps/dav/tests/unit/CalDAV/Publishing/PublishingTest.php2
-rw-r--r--apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/AbstractNotificationProviderTest.php6
-rw-r--r--apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/EmailProviderTest.php16
-rw-r--r--apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/PushProviderTest.php17
-rw-r--r--apps/dav/tests/unit/CalDAV/ResourceBooking/AbstractPrincipalBackendTest.php6
-rw-r--r--apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php6
-rw-r--r--apps/dav/tests/unit/CalDAV/WebcalCaching/RefreshWebcalServiceTest.php33
-rw-r--r--apps/dav/tests/unit/CardDAV/SyncServiceTest.php8
-rw-r--r--apps/dav/tests/unit/Comments/CommentsNodeTest.php8
-rw-r--r--apps/dav/tests/unit/Comments/EntityCollectionTest.php6
-rw-r--r--apps/dav/tests/unit/Comments/EntityTypeCollectionTest.php6
-rw-r--r--apps/dav/tests/unit/Comments/RootCollectionTest.php3
-rw-r--r--apps/dav/tests/unit/Connector/Sabre/ExceptionLoggerPluginTest.php41
-rw-r--r--apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php4
-rw-r--r--apps/dav/tests/unit/Connector/Sabre/RequestTest/RequestTestCase.php5
-rw-r--r--apps/dav/tests/unit/Migration/CalDAVRemoveEmptyValueTest.php6
132 files changed, 956 insertions, 730 deletions
diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml
index 8462ed1816d..10f78d8332a 100644
--- a/apps/dav/appinfo/info.xml
+++ b/apps/dav/appinfo/info.xml
@@ -5,7 +5,7 @@
<name>WebDAV</name>
<summary>WebDAV endpoint</summary>
<description>WebDAV endpoint</description>
- <version>1.22.0</version>
+ <version>1.23.0</version>
<licence>agpl</licence>
<author>owncloud.org</author>
<namespace>DAV</namespace>
@@ -16,7 +16,7 @@
<category>integration</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
- <nextcloud min-version="24" max-version="24"/>
+ <nextcloud min-version="25" max-version="25"/>
</dependencies>
<background-jobs>
diff --git a/apps/dav/appinfo/v1/caldav.php b/apps/dav/appinfo/v1/caldav.php
index 75400264f75..9036a30f95c 100644
--- a/apps/dav/appinfo/v1/caldav.php
+++ b/apps/dav/appinfo/v1/caldav.php
@@ -59,7 +59,7 @@ $principalBackend = new Principal(
$db = \OC::$server->getDatabaseConnection();
$userManager = \OC::$server->getUserManager();
$random = \OC::$server->getSecureRandom();
-$logger = \OC::$server->getLogger();
+$logger = \OC::$server->get(LoggerInterface::class);
$dispatcher = \OC::$server->get(\OCP\EventDispatcher\IEventDispatcher::class);
$legacyDispatcher = \OC::$server->getEventDispatcher();
$config = \OC::$server->get(\OCP\IConfig::class);
@@ -84,7 +84,7 @@ $sendInvitations = \OC::$server->getConfig()->getAppValue('dav', 'sendInvitation
$principalCollection = new \Sabre\CalDAV\Principal\Collection($principalBackend);
$principalCollection->disableListing = !$debugging; // Disable listing
-$addressBookRoot = new CalendarRoot($principalBackend, $calDavBackend, 'principals', \OC::$server->get(LoggerInterface::class));
+$addressBookRoot = new CalendarRoot($principalBackend, $calDavBackend, 'principals', $logger);
$addressBookRoot->disableListing = !$debugging; // Disable listing
$nodes = [
@@ -115,7 +115,7 @@ $server->addPlugin(new \OCA\DAV\CalDAV\Schedule\Plugin(\OC::$server->getConfig()
if ($sendInvitations) {
$server->addPlugin(\OC::$server->query(\OCA\DAV\CalDAV\Schedule\IMipPlugin::class));
}
-$server->addPlugin(new ExceptionLoggerPlugin('caldav', \OC::$server->getLogger()));
+$server->addPlugin(new ExceptionLoggerPlugin('caldav', $logger));
// And off we go!
$server->exec();
diff --git a/apps/dav/appinfo/v1/carddav.php b/apps/dav/appinfo/v1/carddav.php
index 53449b91c4b..a0306118781 100644
--- a/apps/dav/appinfo/v1/carddav.php
+++ b/apps/dav/appinfo/v1/carddav.php
@@ -36,6 +36,7 @@ use OCA\DAV\Connector\Sabre\ExceptionLoggerPlugin;
use OCA\DAV\Connector\Sabre\MaintenancePlugin;
use OCA\DAV\Connector\Sabre\Principal;
use OCP\App\IAppManager;
+use Psr\Log\LoggerInterface;
use Sabre\CardDAV\Plugin;
$authBackend = new Auth(
@@ -95,9 +96,9 @@ $server->addPlugin(new \Sabre\DAV\Sync\Plugin());
$server->addPlugin(new \Sabre\CardDAV\VCFExportPlugin());
$server->addPlugin(new \OCA\DAV\CardDAV\ImageExportPlugin(new \OCA\DAV\CardDAV\PhotoCache(
\OC::$server->getAppDataDir('dav-photocache'),
- \OC::$server->getLogger()
+ \OC::$server->get(LoggerInterface::class)
)));
-$server->addPlugin(new ExceptionLoggerPlugin('carddav', \OC::$server->getLogger()));
+$server->addPlugin(new ExceptionLoggerPlugin('carddav', \OC::$server->get(LoggerInterface::class)));
// And off we go!
$server->exec();
diff --git a/apps/dav/appinfo/v1/publicwebdav.php b/apps/dav/appinfo/v1/publicwebdav.php
index c99c5bcd833..43b472c107b 100644
--- a/apps/dav/appinfo/v1/publicwebdav.php
+++ b/apps/dav/appinfo/v1/publicwebdav.php
@@ -48,7 +48,7 @@ $authPlugin = new \Sabre\DAV\Auth\Plugin($authBackend);
$serverFactory = new OCA\DAV\Connector\Sabre\ServerFactory(
\OC::$server->getConfig(),
- \OC::$server->getLogger(),
+ \OC::$server->get(Psr\Log\LoggerInterface::class),
\OC::$server->getDatabaseConnection(),
\OC::$server->getUserSession(),
\OC::$server->getMountManager(),
diff --git a/apps/dav/appinfo/v1/webdav.php b/apps/dav/appinfo/v1/webdav.php
index 7b0a0ae11df..e39a6b48d57 100644
--- a/apps/dav/appinfo/v1/webdav.php
+++ b/apps/dav/appinfo/v1/webdav.php
@@ -39,7 +39,7 @@ ignore_user_abort(true);
$serverFactory = new \OCA\DAV\Connector\Sabre\ServerFactory(
\OC::$server->getConfig(),
- \OC::$server->getLogger(),
+ \OC::$server->get(Psr\Log\LoggerInterface::class),
\OC::$server->getDatabaseConnection(),
\OC::$server->getUserSession(),
\OC::$server->getMountManager(),
diff --git a/apps/dav/l10n/bg.js b/apps/dav/l10n/bg.js
index 3dc205d9056..e9fba5286ba 100644
--- a/apps/dav/l10n/bg.js
+++ b/apps/dav/l10n/bg.js
@@ -108,6 +108,23 @@ OC.L10N.register(
"{actor} updated contact {card} in address book {addressbook}" : "{actor} актуализира контакт {card} в адресна книга {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Вие актуализирахте контакт {card} в адресна книга {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Един <strong>contact</strong> или <strong>address book</strong> са променени",
+ "File is not updatable: %1$s" : "Файлът не подлежи на актуализиране: %1$s",
+ "Could not write to final file, canceled by hook" : "Не можа да се запише в крайния файл, анулирано от кука",
+ "Could not write file contents" : "Съдържанието на файла не можа да се запише",
+ "_%n byte_::_%n bytes_" : ["%n байта","%n байта"],
+ "Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Грешка при копирането на файла в целево местоположение (копирано: %1$s, очакван размер на файла: %2$s)",
+ "Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Очакван размер на файл от %1$s, но прочетени (от Nextcloud клиент) и записани (в хранилище на Nextcloud) %2$s. Това може да бъде, както мрежов проблем от страна на изпращача, така и проблем със записването в хранилище от страна на сървъра.",
+ "Could not rename part file to final file, canceled by hook" : "Не можа да се преименува частичен файл в краен файл, анулиран е от кука",
+ "Could not rename part file to final file" : "Не можа да се преименува частичен файл в краен файл",
+ "Failed to check file size: %1$s" : "Неуспешна проверка на размера на файла: %1$s",
+ "Could not open file" : "Файлът не можа да се отвори",
+ "Encryption not ready: %1$s" : "Криптирането не е готово: %1$s",
+ "Failed to open file: %1$s" : "Неуспешно отваряне на файл: %1$s",
+ "Failed to unlink: %1$s" : "Неуспешно прекратяване на връзката: %1$s",
+ "Invalid chunk name" : "Невалидно име на блок",
+ "Could not rename part file assembled from chunks" : "Не можа да се преименува частичен файл, сглобен от блок",
+ "Failed to write file contents: %1$s" : "Неуспешно записване на съдържанието на файла: %1$s",
+ "File not found: %1$s" : "Файлът не е намерен: %1$s",
"System is in maintenance mode." : "Системата е в режим на поддръжка.",
"Upgrade needed" : "Нужно е обновяване",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Вашият%s, трябва да бъде конфигуриран да използва HTTPS, за да използва CalDAV и CardDAV с iOS/macOS.",
@@ -119,6 +136,9 @@ OC.L10N.register(
"Completed on %s" : "Завършен на %s",
"Due on %s by %s" : "Краен срок на %s от %s",
"Due on %s" : "Краен срок на %s",
+ "Migrated calendar (%1$s)" : "Мигриран календар (%1$s)",
+ "Calendars including events, details and attendees" : "Календари, включително събития, подробности и участници",
+ "Contacts and groups" : "Контакти и групи",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV крайна точка",
"Availability" : "Наличност",
@@ -143,6 +163,8 @@ OC.L10N.register(
"Hence they will not be available immediately after enabling but will show up after some time." : "Това е причината поради която те не се появяват веднага, след като включите опцията.",
"Send notifications for events" : "Изпращане на известия за събития",
"Notifications are sent via background jobs, so these must occur often enough." : "Известията се изпращат чрез фонови задания, така че те трябва да се случват достатъчно често.",
+ "Send reminder notifications to calendar sharees as well" : "Изпращане на известия за напомняния и до споделящите календар",
+ "Reminders are always sent to organizers and attendees." : "Напомнянията винаги се изпращат до организаторите и присъстващите.",
"Enable notifications for events via push" : "Активиране на известията за събития чрез push",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Също така инсталирайте приложението {calendarappstoreopen}Календар{linkclose} или {calendardocopen}, свържете вашия настолен компютър и мобилен телефон за синхронизиране ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Моля, уверете се, че сте настроили правилно {emailopen} имейл сървъра{linkclose}.",
@@ -152,7 +174,6 @@ OC.L10N.register(
"Tentative" : "Несигурно",
"Number of guests" : "Брой на гостите ",
"Comment" : "Коментар",
- "Your attendance was updated successfully." : "Вашето присъствие е актуализирано успешно.",
- "Calendar and tasks" : "Календар и задачи"
+ "Your attendance was updated successfully." : "Вашето присъствие е актуализирано успешно."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/bg.json b/apps/dav/l10n/bg.json
index 5bb4a0adb58..cfb4220cb5d 100644
--- a/apps/dav/l10n/bg.json
+++ b/apps/dav/l10n/bg.json
@@ -106,6 +106,23 @@
"{actor} updated contact {card} in address book {addressbook}" : "{actor} актуализира контакт {card} в адресна книга {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Вие актуализирахте контакт {card} в адресна книга {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Един <strong>contact</strong> или <strong>address book</strong> са променени",
+ "File is not updatable: %1$s" : "Файлът не подлежи на актуализиране: %1$s",
+ "Could not write to final file, canceled by hook" : "Не можа да се запише в крайния файл, анулирано от кука",
+ "Could not write file contents" : "Съдържанието на файла не можа да се запише",
+ "_%n byte_::_%n bytes_" : ["%n байта","%n байта"],
+ "Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Грешка при копирането на файла в целево местоположение (копирано: %1$s, очакван размер на файла: %2$s)",
+ "Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Очакван размер на файл от %1$s, но прочетени (от Nextcloud клиент) и записани (в хранилище на Nextcloud) %2$s. Това може да бъде, както мрежов проблем от страна на изпращача, така и проблем със записването в хранилище от страна на сървъра.",
+ "Could not rename part file to final file, canceled by hook" : "Не можа да се преименува частичен файл в краен файл, анулиран е от кука",
+ "Could not rename part file to final file" : "Не можа да се преименува частичен файл в краен файл",
+ "Failed to check file size: %1$s" : "Неуспешна проверка на размера на файла: %1$s",
+ "Could not open file" : "Файлът не можа да се отвори",
+ "Encryption not ready: %1$s" : "Криптирането не е готово: %1$s",
+ "Failed to open file: %1$s" : "Неуспешно отваряне на файл: %1$s",
+ "Failed to unlink: %1$s" : "Неуспешно прекратяване на връзката: %1$s",
+ "Invalid chunk name" : "Невалидно име на блок",
+ "Could not rename part file assembled from chunks" : "Не можа да се преименува частичен файл, сглобен от блок",
+ "Failed to write file contents: %1$s" : "Неуспешно записване на съдържанието на файла: %1$s",
+ "File not found: %1$s" : "Файлът не е намерен: %1$s",
"System is in maintenance mode." : "Системата е в режим на поддръжка.",
"Upgrade needed" : "Нужно е обновяване",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Вашият%s, трябва да бъде конфигуриран да използва HTTPS, за да използва CalDAV и CardDAV с iOS/macOS.",
@@ -117,6 +134,9 @@
"Completed on %s" : "Завършен на %s",
"Due on %s by %s" : "Краен срок на %s от %s",
"Due on %s" : "Краен срок на %s",
+ "Migrated calendar (%1$s)" : "Мигриран календар (%1$s)",
+ "Calendars including events, details and attendees" : "Календари, включително събития, подробности и участници",
+ "Contacts and groups" : "Контакти и групи",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV крайна точка",
"Availability" : "Наличност",
@@ -141,6 +161,8 @@
"Hence they will not be available immediately after enabling but will show up after some time." : "Това е причината поради която те не се появяват веднага, след като включите опцията.",
"Send notifications for events" : "Изпращане на известия за събития",
"Notifications are sent via background jobs, so these must occur often enough." : "Известията се изпращат чрез фонови задания, така че те трябва да се случват достатъчно често.",
+ "Send reminder notifications to calendar sharees as well" : "Изпращане на известия за напомняния и до споделящите календар",
+ "Reminders are always sent to organizers and attendees." : "Напомнянията винаги се изпращат до организаторите и присъстващите.",
"Enable notifications for events via push" : "Активиране на известията за събития чрез push",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Също така инсталирайте приложението {calendarappstoreopen}Календар{linkclose} или {calendardocopen}, свържете вашия настолен компютър и мобилен телефон за синхронизиране ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Моля, уверете се, че сте настроили правилно {emailopen} имейл сървъра{linkclose}.",
@@ -150,7 +172,6 @@
"Tentative" : "Несигурно",
"Number of guests" : "Брой на гостите ",
"Comment" : "Коментар",
- "Your attendance was updated successfully." : "Вашето присъствие е актуализирано успешно.",
- "Calendar and tasks" : "Календар и задачи"
+ "Your attendance was updated successfully." : "Вашето присъствие е актуализирано успешно."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/ca.js b/apps/dav/l10n/ca.js
index c89a0ac98cd..34b52ab1c9e 100644
--- a/apps/dav/l10n/ca.js
+++ b/apps/dav/l10n/ca.js
@@ -86,8 +86,17 @@ OC.L10N.register(
"Completed on %s" : "Completat a %s",
"Due on %s by %s" : "Venciment a %s per %s",
"Due on %s" : "Venç en %s",
+ "Contacts and groups" : "Contactes i grups",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Punt final de WebDAV",
+ "to" : "a",
+ "Monday" : "Dilluns",
+ "Tuesday" : "Dimarts",
+ "Wednesday" : "Dimecres",
+ "Thursday" : "Dijous",
+ "Friday" : "Divendres",
+ "Saturday" : "Dissabte",
+ "Sunday" : "Diumenge",
"Save" : "Desa",
"Calendar server" : "Servidor de calendari",
"Send invitations to attendees" : "Envia invitacions als assistents",
@@ -103,7 +112,7 @@ OC.L10N.register(
"Please contact the organizer directly." : "Si us plau contacteu amb l'organitzador directament.",
"Are you accepting the invitation?" : "Accepteu la invitació?",
"Tentative" : "Provisional",
- "Your attendance was updated successfully." : "La vostra assistència ha estat actualitzada correctament.",
- "Calendar and tasks" : "Calendari i tasques"
+ "Comment" : "Comentari",
+ "Your attendance was updated successfully." : "La vostra assistència ha estat actualitzada correctament."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/ca.json b/apps/dav/l10n/ca.json
index 8b28517f480..7635d06b1cc 100644
--- a/apps/dav/l10n/ca.json
+++ b/apps/dav/l10n/ca.json
@@ -84,8 +84,17 @@
"Completed on %s" : "Completat a %s",
"Due on %s by %s" : "Venciment a %s per %s",
"Due on %s" : "Venç en %s",
+ "Contacts and groups" : "Contactes i grups",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Punt final de WebDAV",
+ "to" : "a",
+ "Monday" : "Dilluns",
+ "Tuesday" : "Dimarts",
+ "Wednesday" : "Dimecres",
+ "Thursday" : "Dijous",
+ "Friday" : "Divendres",
+ "Saturday" : "Dissabte",
+ "Sunday" : "Diumenge",
"Save" : "Desa",
"Calendar server" : "Servidor de calendari",
"Send invitations to attendees" : "Envia invitacions als assistents",
@@ -101,7 +110,7 @@
"Please contact the organizer directly." : "Si us plau contacteu amb l'organitzador directament.",
"Are you accepting the invitation?" : "Accepteu la invitació?",
"Tentative" : "Provisional",
- "Your attendance was updated successfully." : "La vostra assistència ha estat actualitzada correctament.",
- "Calendar and tasks" : "Calendari i tasques"
+ "Comment" : "Comentari",
+ "Your attendance was updated successfully." : "La vostra assistència ha estat actualitzada correctament."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/cs.js b/apps/dav/l10n/cs.js
index 69d0de5f453..e9406f6c3a2 100644
--- a/apps/dav/l10n/cs.js
+++ b/apps/dav/l10n/cs.js
@@ -174,7 +174,6 @@ OC.L10N.register(
"Tentative" : "Nezávazně",
"Number of guests" : "Počet hostů",
"Comment" : "Komentář",
- "Your attendance was updated successfully." : "Vaše účast byla úspěšně aktualizována.",
- "Calendar and tasks" : "Kalendář a úkoly"
+ "Your attendance was updated successfully." : "Vaše účast byla úspěšně aktualizována."
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
diff --git a/apps/dav/l10n/cs.json b/apps/dav/l10n/cs.json
index c3e555519be..66a899594d3 100644
--- a/apps/dav/l10n/cs.json
+++ b/apps/dav/l10n/cs.json
@@ -172,7 +172,6 @@
"Tentative" : "Nezávazně",
"Number of guests" : "Počet hostů",
"Comment" : "Komentář",
- "Your attendance was updated successfully." : "Vaše účast byla úspěšně aktualizována.",
- "Calendar and tasks" : "Kalendář a úkoly"
+ "Your attendance was updated successfully." : "Vaše účast byla úspěšně aktualizována."
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
} \ No newline at end of file
diff --git a/apps/dav/l10n/da.js b/apps/dav/l10n/da.js
index c6dfb6281fc..2fecf5fe6d8 100644
--- a/apps/dav/l10n/da.js
+++ b/apps/dav/l10n/da.js
@@ -83,8 +83,17 @@ OC.L10N.register(
"System is in maintenance mode." : "Systemet er i vedligeholdelsestilstand.",
"Upgrade needed" : "Opgradering er nødvendig",
"Tasks" : "Opgaver",
+ "Contacts and groups" : "Kontakter og grupper",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV endpoint",
+ "to" : "til",
+ "Monday" : "Mandag",
+ "Tuesday" : "Tirsdag",
+ "Wednesday" : "Onsdag",
+ "Thursday" : "Torsdag",
+ "Friday" : "Fredag",
+ "Saturday" : "Lørdag",
+ "Sunday" : "Søndag",
"Save" : "Gem",
"Calendar server" : "Kalenderserver",
"Send invitations to attendees" : "Send invitation til deltagere",
@@ -92,6 +101,7 @@ OC.L10N.register(
"Birthday calendars will be generated by a background job." : "Fødselsdagskalendere vil blive oprettet af et job, der kører i baggrunden.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Derfor vil de ikke blive synlige med det samme efter aktivering, men vil vise sig efter noget tid.",
"Are you accepting the invitation?" : "Accepter du invitationen?",
- "Tentative" : "Foreløbig"
+ "Tentative" : "Foreløbig",
+ "Comment" : "Kommentér"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/da.json b/apps/dav/l10n/da.json
index 30a6719a7f4..1a70d847ccc 100644
--- a/apps/dav/l10n/da.json
+++ b/apps/dav/l10n/da.json
@@ -81,8 +81,17 @@
"System is in maintenance mode." : "Systemet er i vedligeholdelsestilstand.",
"Upgrade needed" : "Opgradering er nødvendig",
"Tasks" : "Opgaver",
+ "Contacts and groups" : "Kontakter og grupper",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV endpoint",
+ "to" : "til",
+ "Monday" : "Mandag",
+ "Tuesday" : "Tirsdag",
+ "Wednesday" : "Onsdag",
+ "Thursday" : "Torsdag",
+ "Friday" : "Fredag",
+ "Saturday" : "Lørdag",
+ "Sunday" : "Søndag",
"Save" : "Gem",
"Calendar server" : "Kalenderserver",
"Send invitations to attendees" : "Send invitation til deltagere",
@@ -90,6 +99,7 @@
"Birthday calendars will be generated by a background job." : "Fødselsdagskalendere vil blive oprettet af et job, der kører i baggrunden.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Derfor vil de ikke blive synlige med det samme efter aktivering, men vil vise sig efter noget tid.",
"Are you accepting the invitation?" : "Accepter du invitationen?",
- "Tentative" : "Foreløbig"
+ "Tentative" : "Foreløbig",
+ "Comment" : "Kommentér"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/de.js b/apps/dav/l10n/de.js
index aeaa3de4ca4..3a2898785cf 100644
--- a/apps/dav/l10n/de.js
+++ b/apps/dav/l10n/de.js
@@ -137,6 +137,8 @@ OC.L10N.register(
"Due on %s by %s" : "Fällig am %s von %s",
"Due on %s" : "Fällig am %s",
"Migrated calendar (%1$s)" : "Migrierter Kalender (%1$s)",
+ "Calendars including events, details and attendees" : "Kalender mit Terminen, Details und Teilnehmern",
+ "Contacts and groups" : "Kontakte und Gruppen",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV-Endpunkt",
"Availability" : "Verfügbarkeit",
@@ -172,7 +174,6 @@ OC.L10N.register(
"Tentative" : "Vorläufig",
"Number of guests" : "Anzahl Gäste",
"Comment" : "Kommentar",
- "Your attendance was updated successfully." : "Dein Teilnehmerstatus wurde aktualisiert.",
- "Calendar and tasks" : "Kalender und Aufgaben"
+ "Your attendance was updated successfully." : "Dein Teilnehmerstatus wurde aktualisiert."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/de.json b/apps/dav/l10n/de.json
index 885e1d922eb..a02efad8b27 100644
--- a/apps/dav/l10n/de.json
+++ b/apps/dav/l10n/de.json
@@ -135,6 +135,8 @@
"Due on %s by %s" : "Fällig am %s von %s",
"Due on %s" : "Fällig am %s",
"Migrated calendar (%1$s)" : "Migrierter Kalender (%1$s)",
+ "Calendars including events, details and attendees" : "Kalender mit Terminen, Details und Teilnehmern",
+ "Contacts and groups" : "Kontakte und Gruppen",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV-Endpunkt",
"Availability" : "Verfügbarkeit",
@@ -170,7 +172,6 @@
"Tentative" : "Vorläufig",
"Number of guests" : "Anzahl Gäste",
"Comment" : "Kommentar",
- "Your attendance was updated successfully." : "Dein Teilnehmerstatus wurde aktualisiert.",
- "Calendar and tasks" : "Kalender und Aufgaben"
+ "Your attendance was updated successfully." : "Dein Teilnehmerstatus wurde aktualisiert."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/de_DE.js b/apps/dav/l10n/de_DE.js
index f7cbe0ba203..677c38aaf82 100644
--- a/apps/dav/l10n/de_DE.js
+++ b/apps/dav/l10n/de_DE.js
@@ -137,6 +137,7 @@ OC.L10N.register(
"Due on %s by %s" : "Fällig am %s von %s",
"Due on %s" : "Fällig am %s",
"Migrated calendar (%1$s)" : "Migrierter Kalender (%1$s)",
+ "Calendars including events, details and attendees" : "Kalender mit Terminen, Details und Teilnehmern",
"Contacts and groups" : "Kontakte und Gruppen",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV-Endpunkt",
@@ -173,7 +174,6 @@ OC.L10N.register(
"Tentative" : "Vorläufig",
"Number of guests" : "Anzahl Gäste",
"Comment" : "Kommentar",
- "Your attendance was updated successfully." : "Ihr Teilnehmerstatus wurde aktualisiert.",
- "Calendar and tasks" : "Kalender und Aufgaben"
+ "Your attendance was updated successfully." : "Ihr Teilnehmerstatus wurde aktualisiert."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/de_DE.json b/apps/dav/l10n/de_DE.json
index e0d8bea080c..ea3c15aa90f 100644
--- a/apps/dav/l10n/de_DE.json
+++ b/apps/dav/l10n/de_DE.json
@@ -135,6 +135,7 @@
"Due on %s by %s" : "Fällig am %s von %s",
"Due on %s" : "Fällig am %s",
"Migrated calendar (%1$s)" : "Migrierter Kalender (%1$s)",
+ "Calendars including events, details and attendees" : "Kalender mit Terminen, Details und Teilnehmern",
"Contacts and groups" : "Kontakte und Gruppen",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV-Endpunkt",
@@ -171,7 +172,6 @@
"Tentative" : "Vorläufig",
"Number of guests" : "Anzahl Gäste",
"Comment" : "Kommentar",
- "Your attendance was updated successfully." : "Ihr Teilnehmerstatus wurde aktualisiert.",
- "Calendar and tasks" : "Kalender und Aufgaben"
+ "Your attendance was updated successfully." : "Ihr Teilnehmerstatus wurde aktualisiert."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/el.js b/apps/dav/l10n/el.js
index 7510a9a10cb..84f5dcf04f3 100644
--- a/apps/dav/l10n/el.js
+++ b/apps/dav/l10n/el.js
@@ -84,8 +84,19 @@ OC.L10N.register(
"Tasks" : "Εργασίες",
"Untitled task" : "Εργασία χωρίς όνομα",
"Completed on %s" : "Ολοκληρώθηκε %s",
+ "Contacts and groups" : "Επαφές και ομάδες",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Τερματικό WebDAV",
+ "Time zone:" : "Ζώνη ώρας:",
+ "to" : "προς",
+ "Delete slot" : "Διαγραφή θέσης",
+ "Monday" : "Δευτέρα",
+ "Tuesday" : "Τρίτη",
+ "Wednesday" : "Τετάρτη",
+ "Thursday" : "Πέμπτη",
+ "Friday" : "Παρασκευή",
+ "Saturday" : "Σάββατο",
+ "Sunday" : "Κυριακή",
"Save" : "Αποθήκευση",
"Calendar server" : "Διακομιστής ημερολογίου",
"Send invitations to attendees" : "Αποστολή προσκλήσεων στους συμμετέχοντες.",
@@ -101,7 +112,7 @@ OC.L10N.register(
"Please contact the organizer directly." : "Παρακαλώ επικοινωνήστε απ' ευθείας με τον διοργανωτή.",
"Are you accepting the invitation?" : "Αποδέχεστε την πρόσκληση;",
"Tentative" : "Δοκιμαστικό",
- "Your attendance was updated successfully." : "Η παρουσία σας ενημερώθηκε με επιτυχία.",
- "Calendar and tasks" : "Ημερολόγιο και εργασίες"
+ "Comment" : "Σχόλιο",
+ "Your attendance was updated successfully." : "Η παρουσία σας ενημερώθηκε με επιτυχία."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/el.json b/apps/dav/l10n/el.json
index 30a4d878d7e..523c7d7ef08 100644
--- a/apps/dav/l10n/el.json
+++ b/apps/dav/l10n/el.json
@@ -82,8 +82,19 @@
"Tasks" : "Εργασίες",
"Untitled task" : "Εργασία χωρίς όνομα",
"Completed on %s" : "Ολοκληρώθηκε %s",
+ "Contacts and groups" : "Επαφές και ομάδες",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Τερματικό WebDAV",
+ "Time zone:" : "Ζώνη ώρας:",
+ "to" : "προς",
+ "Delete slot" : "Διαγραφή θέσης",
+ "Monday" : "Δευτέρα",
+ "Tuesday" : "Τρίτη",
+ "Wednesday" : "Τετάρτη",
+ "Thursday" : "Πέμπτη",
+ "Friday" : "Παρασκευή",
+ "Saturday" : "Σάββατο",
+ "Sunday" : "Κυριακή",
"Save" : "Αποθήκευση",
"Calendar server" : "Διακομιστής ημερολογίου",
"Send invitations to attendees" : "Αποστολή προσκλήσεων στους συμμετέχοντες.",
@@ -99,7 +110,7 @@
"Please contact the organizer directly." : "Παρακαλώ επικοινωνήστε απ' ευθείας με τον διοργανωτή.",
"Are you accepting the invitation?" : "Αποδέχεστε την πρόσκληση;",
"Tentative" : "Δοκιμαστικό",
- "Your attendance was updated successfully." : "Η παρουσία σας ενημερώθηκε με επιτυχία.",
- "Calendar and tasks" : "Ημερολόγιο και εργασίες"
+ "Comment" : "Σχόλιο",
+ "Your attendance was updated successfully." : "Η παρουσία σας ενημερώθηκε με επιτυχία."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/eo.js b/apps/dav/l10n/eo.js
index fa89bc084b8..f17ea331a7f 100644
--- a/apps/dav/l10n/eo.js
+++ b/apps/dav/l10n/eo.js
@@ -77,6 +77,14 @@ OC.L10N.register(
"Tasks" : "Taskoj",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV-finpunkto",
+ "to" : "al",
+ "Monday" : "lundo",
+ "Tuesday" : "mardo",
+ "Wednesday" : "merkredo",
+ "Thursday" : "ĵaŭdo",
+ "Friday" : "vendredo",
+ "Saturday" : "sabato",
+ "Sunday" : "dimanĉo",
"Save" : "Konservi",
"Calendar server" : "Kalendara servilo",
"Send invitations to attendees" : "Sendi invitojn al ĉeestantoj",
@@ -91,6 +99,7 @@ OC.L10N.register(
"Please contact the organizer directly." : "Bv. senpere kontakti la organizanton.",
"Are you accepting the invitation?" : "Ĉu vi akceptas la inviton?",
"Tentative" : "Nekonfirmita",
+ "Comment" : "Komento",
"Your attendance was updated successfully." : "Via ĉeesto sukcese ĝisdatiĝis."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/eo.json b/apps/dav/l10n/eo.json
index 504a47609b4..3f616e499b4 100644
--- a/apps/dav/l10n/eo.json
+++ b/apps/dav/l10n/eo.json
@@ -75,6 +75,14 @@
"Tasks" : "Taskoj",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV-finpunkto",
+ "to" : "al",
+ "Monday" : "lundo",
+ "Tuesday" : "mardo",
+ "Wednesday" : "merkredo",
+ "Thursday" : "ĵaŭdo",
+ "Friday" : "vendredo",
+ "Saturday" : "sabato",
+ "Sunday" : "dimanĉo",
"Save" : "Konservi",
"Calendar server" : "Kalendara servilo",
"Send invitations to attendees" : "Sendi invitojn al ĉeestantoj",
@@ -89,6 +97,7 @@
"Please contact the organizer directly." : "Bv. senpere kontakti la organizanton.",
"Are you accepting the invitation?" : "Ĉu vi akceptas la inviton?",
"Tentative" : "Nekonfirmita",
+ "Comment" : "Komento",
"Your attendance was updated successfully." : "Via ĉeesto sukcese ĝisdatiĝis."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/es.js b/apps/dav/l10n/es.js
index ceea716e2f6..027fe077699 100644
--- a/apps/dav/l10n/es.js
+++ b/apps/dav/l10n/es.js
@@ -108,6 +108,17 @@ OC.L10N.register(
"{actor} updated contact {card} in address book {addressbook}" : "{actor} ha actualizado el contacto {card} en la libreta de direcciones {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Has actualizado el contacto {card} en la libreta de direcciones {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Se ha modificado un <strong>contacto</strong> o una <strong>libreta de direcciones</strong> ",
+ "File is not updatable: %1$s" : "El archivo no se puede actualizar: %1$s",
+ "Could not write file contents" : "No se han podido escribir los contenidos del archivo",
+ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
+ "Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Error al copiar el archivo al destino (copiado: %1$s, tamaño esperado: %2$s)",
+ "Could not rename part file to final file" : "No se ha podido renombrar el archivo parcial como el archivo final",
+ "Failed to check file size: %1$s" : "Fallo al comprobar el tamaño del archivo: %1$s",
+ "Could not open file" : "No se ha podido abrir el archivo",
+ "Failed to open file: %1$s" : "Fallo al abrir el archivo: %1$s",
+ "Failed to unlink: %1$s" : "Fallo al desenlazar: %1$s",
+ "Could not rename part file assembled from chunks" : "No se ha podido renombrar el archivo parcial formado por los fragmentos",
+ "File not found: %1$s" : "Archivo no encontrado: %1$s",
"System is in maintenance mode." : "Sistema está en modo de mantenimiento.",
"Upgrade needed" : "Se necesita actualizar",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Tu %s necesita configurarse para usar HTTPS en caso de usar CalDAV y CardDAV con iOS/macOS.",
@@ -119,6 +130,9 @@ OC.L10N.register(
"Completed on %s" : "Completado el %s",
"Due on %s by %s" : "Finaliza el %s por %s",
"Due on %s" : "Finaliza el %s",
+ "Migrated calendar (%1$s)" : "Calendario migrado (%1$s)",
+ "Calendars including events, details and attendees" : "Calendarios que incluyen eventos, detalles y asistentes",
+ "Contacts and groups" : "Contactos y grupos",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Extremo de WebDAV",
"Availability" : "Disponibilidad",
@@ -143,6 +157,8 @@ OC.L10N.register(
"Hence they will not be available immediately after enabling but will show up after some time." : "Por ello, no estarán disponibles inmediatamente tras activarlos, sino que aparecerán después de cierto tiempo.",
"Send notifications for events" : "Enviar notificaciones de los eventos",
"Notifications are sent via background jobs, so these must occur often enough." : "Las notificaciones son enviadas a través de trabajos en segundo plano, por lo que estos deben ocurrir con la suficiente frecuencia.",
+ "Send reminder notifications to calendar sharees as well" : "Enviar recordatorio también a los usuarios con los que se comparte el calendario",
+ "Reminders are always sent to organizers and attendees." : "Los recordatorios siempre se envía a los organizadores y asistentes.",
"Enable notifications for events via push" : "Activar notificaciones push para eventos",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instala también la {calendarappstoreopen}app de Calendario{linkclose} o {calendardocopen}conecta tu escritorio y móvil para sincronizar ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Por favor, asegúrate de configurar correctamente {emailopen}el servidor web{linkclose}",
@@ -152,7 +168,6 @@ OC.L10N.register(
"Tentative" : "Provisional",
"Number of guests" : "Número de invitados",
"Comment" : "Comentario",
- "Your attendance was updated successfully." : "Tu asistencia se ha actualizado con éxito.",
- "Calendar and tasks" : "Calendario y tareas"
+ "Your attendance was updated successfully." : "Tu asistencia se ha actualizado con éxito."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/es.json b/apps/dav/l10n/es.json
index dab942557bc..70e1da43123 100644
--- a/apps/dav/l10n/es.json
+++ b/apps/dav/l10n/es.json
@@ -106,6 +106,17 @@
"{actor} updated contact {card} in address book {addressbook}" : "{actor} ha actualizado el contacto {card} en la libreta de direcciones {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Has actualizado el contacto {card} en la libreta de direcciones {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Se ha modificado un <strong>contacto</strong> o una <strong>libreta de direcciones</strong> ",
+ "File is not updatable: %1$s" : "El archivo no se puede actualizar: %1$s",
+ "Could not write file contents" : "No se han podido escribir los contenidos del archivo",
+ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
+ "Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Error al copiar el archivo al destino (copiado: %1$s, tamaño esperado: %2$s)",
+ "Could not rename part file to final file" : "No se ha podido renombrar el archivo parcial como el archivo final",
+ "Failed to check file size: %1$s" : "Fallo al comprobar el tamaño del archivo: %1$s",
+ "Could not open file" : "No se ha podido abrir el archivo",
+ "Failed to open file: %1$s" : "Fallo al abrir el archivo: %1$s",
+ "Failed to unlink: %1$s" : "Fallo al desenlazar: %1$s",
+ "Could not rename part file assembled from chunks" : "No se ha podido renombrar el archivo parcial formado por los fragmentos",
+ "File not found: %1$s" : "Archivo no encontrado: %1$s",
"System is in maintenance mode." : "Sistema está en modo de mantenimiento.",
"Upgrade needed" : "Se necesita actualizar",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Tu %s necesita configurarse para usar HTTPS en caso de usar CalDAV y CardDAV con iOS/macOS.",
@@ -117,6 +128,9 @@
"Completed on %s" : "Completado el %s",
"Due on %s by %s" : "Finaliza el %s por %s",
"Due on %s" : "Finaliza el %s",
+ "Migrated calendar (%1$s)" : "Calendario migrado (%1$s)",
+ "Calendars including events, details and attendees" : "Calendarios que incluyen eventos, detalles y asistentes",
+ "Contacts and groups" : "Contactos y grupos",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Extremo de WebDAV",
"Availability" : "Disponibilidad",
@@ -141,6 +155,8 @@
"Hence they will not be available immediately after enabling but will show up after some time." : "Por ello, no estarán disponibles inmediatamente tras activarlos, sino que aparecerán después de cierto tiempo.",
"Send notifications for events" : "Enviar notificaciones de los eventos",
"Notifications are sent via background jobs, so these must occur often enough." : "Las notificaciones son enviadas a través de trabajos en segundo plano, por lo que estos deben ocurrir con la suficiente frecuencia.",
+ "Send reminder notifications to calendar sharees as well" : "Enviar recordatorio también a los usuarios con los que se comparte el calendario",
+ "Reminders are always sent to organizers and attendees." : "Los recordatorios siempre se envía a los organizadores y asistentes.",
"Enable notifications for events via push" : "Activar notificaciones push para eventos",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instala también la {calendarappstoreopen}app de Calendario{linkclose} o {calendardocopen}conecta tu escritorio y móvil para sincronizar ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Por favor, asegúrate de configurar correctamente {emailopen}el servidor web{linkclose}",
@@ -150,7 +166,6 @@
"Tentative" : "Provisional",
"Number of guests" : "Número de invitados",
"Comment" : "Comentario",
- "Your attendance was updated successfully." : "Tu asistencia se ha actualizado con éxito.",
- "Calendar and tasks" : "Calendario y tareas"
+ "Your attendance was updated successfully." : "Tu asistencia se ha actualizado con éxito."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/eu.js b/apps/dav/l10n/eu.js
index a38b2be44fe..09931f17cd1 100644
--- a/apps/dav/l10n/eu.js
+++ b/apps/dav/l10n/eu.js
@@ -108,6 +108,7 @@ OC.L10N.register(
"{actor} updated contact {card} in address book {addressbook}" : "{actor}-(e)k eguneratu du {card} kontaktua {addressbook} helbide-liburuan",
"You updated contact {card} in address book {addressbook}" : "Eguneratu duzu {card} kontaktua {addressbook} helbide-liburuan",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>kontaktu</strong> edo <strong>helbide-liburu</strong>bat aldatu da",
+ "Could not write file contents" : "Ezin izan dira fitxategiaren edukiak idatzi",
"_%n byte_::_%n bytes_" : ["Byte %n","%n byte"],
"Could not open file" : "Ezin izan da fitxategia ireki",
"System is in maintenance mode." : "Sistema mantentze moduan dago.",
@@ -121,6 +122,7 @@ OC.L10N.register(
"Completed on %s" : "%s-an osatua",
"Due on %s by %s" : "%s-(e)tik %s-(e)an epemuga",
"Due on %s" : "%s-(e)an epemuga",
+ "Contacts and groups" : "Kontaktuak eta taldeak",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV amaiera-puntua",
"Availability" : "Eskuragarritasuna",
@@ -154,7 +156,6 @@ OC.L10N.register(
"Tentative" : "Behin behinekoa",
"Number of guests" : "Gonbidatu kopurua",
"Comment" : "Iruzkindu",
- "Your attendance was updated successfully." : "Zure parte-hartzea ondo eguneratu da.",
- "Calendar and tasks" : "Egutegia eta atazak"
+ "Your attendance was updated successfully." : "Zure parte-hartzea ondo eguneratu da."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/eu.json b/apps/dav/l10n/eu.json
index 15b4d7d4910..83384237f8b 100644
--- a/apps/dav/l10n/eu.json
+++ b/apps/dav/l10n/eu.json
@@ -106,6 +106,7 @@
"{actor} updated contact {card} in address book {addressbook}" : "{actor}-(e)k eguneratu du {card} kontaktua {addressbook} helbide-liburuan",
"You updated contact {card} in address book {addressbook}" : "Eguneratu duzu {card} kontaktua {addressbook} helbide-liburuan",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>kontaktu</strong> edo <strong>helbide-liburu</strong>bat aldatu da",
+ "Could not write file contents" : "Ezin izan dira fitxategiaren edukiak idatzi",
"_%n byte_::_%n bytes_" : ["Byte %n","%n byte"],
"Could not open file" : "Ezin izan da fitxategia ireki",
"System is in maintenance mode." : "Sistema mantentze moduan dago.",
@@ -119,6 +120,7 @@
"Completed on %s" : "%s-an osatua",
"Due on %s by %s" : "%s-(e)tik %s-(e)an epemuga",
"Due on %s" : "%s-(e)an epemuga",
+ "Contacts and groups" : "Kontaktuak eta taldeak",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV amaiera-puntua",
"Availability" : "Eskuragarritasuna",
@@ -152,7 +154,6 @@
"Tentative" : "Behin behinekoa",
"Number of guests" : "Gonbidatu kopurua",
"Comment" : "Iruzkindu",
- "Your attendance was updated successfully." : "Zure parte-hartzea ondo eguneratu da.",
- "Calendar and tasks" : "Egutegia eta atazak"
+ "Your attendance was updated successfully." : "Zure parte-hartzea ondo eguneratu da."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/fi.js b/apps/dav/l10n/fi.js
index 0494e41a6c4..c40748c2141 100644
--- a/apps/dav/l10n/fi.js
+++ b/apps/dav/l10n/fi.js
@@ -97,6 +97,10 @@ OC.L10N.register(
"{actor} updated contact {card} in address book {addressbook}" : "{actor} päivitti yhteystietoa {card} osoitekirjassa {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Päivitit yhteystiedon {card} osoitekirjassa {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Yhteystietoa</strong> tai <strong>osoitekirjaa</strong> muokattiin",
+ "File is not updatable: %1$s" : "Tiedosto ei ole päivitettävissä: %1$s",
+ "_%n byte_::_%n bytes_" : ["%n tavu","%n tavua"],
+ "Could not open file" : "Tiedoston avaaminen ei onnistunut",
+ "File not found: %1$s" : "Tiedostoa ei löydy: %1$s",
"System is in maintenance mode." : "Järjestelmä on huoltotilassa",
"Upgrade needed" : "Päivitys tarvitaan",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "%s tulee asettaa käyttämään HTTPS-yhteyttä, jotta CalDAVia ja CardDAVia voi käyttää iOSilla tai macOS:llä.",
@@ -105,10 +109,12 @@ OC.L10N.register(
"Events" : "Tapahtumat",
"Tasks" : "Tehtävät",
"Untitled task" : "Nimetön tehtävä",
+ "Contacts and groups" : "Yhteystiedot ja ryhmät",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV-päätepiste",
"Availability" : "Saatavuus",
"Time zone:" : "Aikavyöhyke:",
+ "to" : "Vastaanottaja",
"Delete slot" : "Poista aikarako",
"No working hours set" : "Työskentelytunteja ei ole asetettu",
"Add slot" : "Lisää aikarako",
@@ -134,7 +140,6 @@ OC.L10N.register(
"Tentative" : "Alustava",
"Number of guests" : "Vieraiden määrä",
"Comment" : "Kommentti",
- "Your attendance was updated successfully." : "Osallistumisesi päivitettiin onnistuneesti.",
- "Calendar and tasks" : "Kalenteri ja tehtävät"
+ "Your attendance was updated successfully." : "Osallistumisesi päivitettiin onnistuneesti."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/fi.json b/apps/dav/l10n/fi.json
index 420719d6085..47e7fd9a9e6 100644
--- a/apps/dav/l10n/fi.json
+++ b/apps/dav/l10n/fi.json
@@ -95,6 +95,10 @@
"{actor} updated contact {card} in address book {addressbook}" : "{actor} päivitti yhteystietoa {card} osoitekirjassa {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Päivitit yhteystiedon {card} osoitekirjassa {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Yhteystietoa</strong> tai <strong>osoitekirjaa</strong> muokattiin",
+ "File is not updatable: %1$s" : "Tiedosto ei ole päivitettävissä: %1$s",
+ "_%n byte_::_%n bytes_" : ["%n tavu","%n tavua"],
+ "Could not open file" : "Tiedoston avaaminen ei onnistunut",
+ "File not found: %1$s" : "Tiedostoa ei löydy: %1$s",
"System is in maintenance mode." : "Järjestelmä on huoltotilassa",
"Upgrade needed" : "Päivitys tarvitaan",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "%s tulee asettaa käyttämään HTTPS-yhteyttä, jotta CalDAVia ja CardDAVia voi käyttää iOSilla tai macOS:llä.",
@@ -103,10 +107,12 @@
"Events" : "Tapahtumat",
"Tasks" : "Tehtävät",
"Untitled task" : "Nimetön tehtävä",
+ "Contacts and groups" : "Yhteystiedot ja ryhmät",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV-päätepiste",
"Availability" : "Saatavuus",
"Time zone:" : "Aikavyöhyke:",
+ "to" : "Vastaanottaja",
"Delete slot" : "Poista aikarako",
"No working hours set" : "Työskentelytunteja ei ole asetettu",
"Add slot" : "Lisää aikarako",
@@ -132,7 +138,6 @@
"Tentative" : "Alustava",
"Number of guests" : "Vieraiden määrä",
"Comment" : "Kommentti",
- "Your attendance was updated successfully." : "Osallistumisesi päivitettiin onnistuneesti.",
- "Calendar and tasks" : "Kalenteri ja tehtävät"
+ "Your attendance was updated successfully." : "Osallistumisesi päivitettiin onnistuneesti."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/fr.js b/apps/dav/l10n/fr.js
index 1a614722d48..c0582dfc01a 100644
--- a/apps/dav/l10n/fr.js
+++ b/apps/dav/l10n/fr.js
@@ -137,6 +137,8 @@ OC.L10N.register(
"Due on %s by %s" : "Echéance le %s pour %s",
"Due on %s" : "Echéance le %s",
"Migrated calendar (%1$s)" : "Agenda migré (%1$s)",
+ "Calendars including events, details and attendees" : "Calendriers incluant des événements, détails et participants",
+ "Contacts and groups" : "Contacts et groupes",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Point d'accès WebDAV",
"Availability" : "Disponibilité",
@@ -161,6 +163,7 @@ OC.L10N.register(
"Hence they will not be available immediately after enabling but will show up after some time." : "Par conséquent, ils ne seront pas disponibles immédiatement après l'activation mais apparaîtront après un certain temps.",
"Send notifications for events" : "Envoyer une notification pour les évènements",
"Notifications are sent via background jobs, so these must occur often enough." : "Les notifications sont envoyées par des tâches de fond qui doivent, par conséquent, être exécutées régulièrement.",
+ "Reminders are always sent to organizers and attendees." : "Des rappels sont toujours envoyés aux organisateurs et aux participants.",
"Enable notifications for events via push" : "Activer les notifications push pour les évènements",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Installer aussi {calendarappstoreopen}l'application Calendrier{linkclose}, ou {calendardocopen}connecter à votre PC & téléphone pour synchroniser ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Merci de vérifier d'avoir correctement configuré {emailopen}le serveur de courriel{linkclose}.",
@@ -170,7 +173,6 @@ OC.L10N.register(
"Tentative" : "Provisoire",
"Number of guests" : "Nombre d'invités",
"Comment" : "Commentaire",
- "Your attendance was updated successfully." : "Votre présence a été mise à jour avec succès.",
- "Calendar and tasks" : "Agenda et tâches"
+ "Your attendance was updated successfully." : "Votre présence a été mise à jour avec succès."
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/dav/l10n/fr.json b/apps/dav/l10n/fr.json
index f728c2d1b3b..51364131d95 100644
--- a/apps/dav/l10n/fr.json
+++ b/apps/dav/l10n/fr.json
@@ -135,6 +135,8 @@
"Due on %s by %s" : "Echéance le %s pour %s",
"Due on %s" : "Echéance le %s",
"Migrated calendar (%1$s)" : "Agenda migré (%1$s)",
+ "Calendars including events, details and attendees" : "Calendriers incluant des événements, détails et participants",
+ "Contacts and groups" : "Contacts et groupes",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Point d'accès WebDAV",
"Availability" : "Disponibilité",
@@ -159,6 +161,7 @@
"Hence they will not be available immediately after enabling but will show up after some time." : "Par conséquent, ils ne seront pas disponibles immédiatement après l'activation mais apparaîtront après un certain temps.",
"Send notifications for events" : "Envoyer une notification pour les évènements",
"Notifications are sent via background jobs, so these must occur often enough." : "Les notifications sont envoyées par des tâches de fond qui doivent, par conséquent, être exécutées régulièrement.",
+ "Reminders are always sent to organizers and attendees." : "Des rappels sont toujours envoyés aux organisateurs et aux participants.",
"Enable notifications for events via push" : "Activer les notifications push pour les évènements",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Installer aussi {calendarappstoreopen}l'application Calendrier{linkclose}, ou {calendardocopen}connecter à votre PC & téléphone pour synchroniser ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Merci de vérifier d'avoir correctement configuré {emailopen}le serveur de courriel{linkclose}.",
@@ -168,7 +171,6 @@
"Tentative" : "Provisoire",
"Number of guests" : "Nombre d'invités",
"Comment" : "Commentaire",
- "Your attendance was updated successfully." : "Votre présence a été mise à jour avec succès.",
- "Calendar and tasks" : "Agenda et tâches"
+ "Your attendance was updated successfully." : "Votre présence a été mise à jour avec succès."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/gl.js b/apps/dav/l10n/gl.js
index eff3223ad5c..0d823cd2031 100644
--- a/apps/dav/l10n/gl.js
+++ b/apps/dav/l10n/gl.js
@@ -86,8 +86,17 @@ OC.L10N.register(
"Completed on %s" : "Rematado o %s",
"Due on %s by %s" : "Caduca o %s por %s",
"Due on %s" : "Caduca o %s",
+ "Contacts and groups" : "Contactos e grupos",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Terminación WebDAV",
+ "to" : "para",
+ "Monday" : "luns",
+ "Tuesday" : "martes",
+ "Wednesday" : "mércores",
+ "Thursday" : "xoves",
+ "Friday" : "venres",
+ "Saturday" : "sábado",
+ "Sunday" : "domingo",
"Save" : "Gardar",
"Calendar server" : "Servidor do calendario",
"Send invitations to attendees" : "Enviar convites aos asistentes",
@@ -103,7 +112,7 @@ OC.L10N.register(
"Please contact the organizer directly." : "Contacte directamente co organizador.",
"Are you accepting the invitation?" : "Acepta vostede o convite?",
"Tentative" : "Tentativa",
- "Your attendance was updated successfully." : "A súa asistencia foi actualizada satisfactoriamente.",
- "Calendar and tasks" : "Calendario e tarefas"
+ "Comment" : "Comentario",
+ "Your attendance was updated successfully." : "A súa asistencia foi actualizada satisfactoriamente."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/gl.json b/apps/dav/l10n/gl.json
index f953ba51de7..168bc295599 100644
--- a/apps/dav/l10n/gl.json
+++ b/apps/dav/l10n/gl.json
@@ -84,8 +84,17 @@
"Completed on %s" : "Rematado o %s",
"Due on %s by %s" : "Caduca o %s por %s",
"Due on %s" : "Caduca o %s",
+ "Contacts and groups" : "Contactos e grupos",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Terminación WebDAV",
+ "to" : "para",
+ "Monday" : "luns",
+ "Tuesday" : "martes",
+ "Wednesday" : "mércores",
+ "Thursday" : "xoves",
+ "Friday" : "venres",
+ "Saturday" : "sábado",
+ "Sunday" : "domingo",
"Save" : "Gardar",
"Calendar server" : "Servidor do calendario",
"Send invitations to attendees" : "Enviar convites aos asistentes",
@@ -101,7 +110,7 @@
"Please contact the organizer directly." : "Contacte directamente co organizador.",
"Are you accepting the invitation?" : "Acepta vostede o convite?",
"Tentative" : "Tentativa",
- "Your attendance was updated successfully." : "A súa asistencia foi actualizada satisfactoriamente.",
- "Calendar and tasks" : "Calendario e tarefas"
+ "Comment" : "Comentario",
+ "Your attendance was updated successfully." : "A súa asistencia foi actualizada satisfactoriamente."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/he.js b/apps/dav/l10n/he.js
index 688f4d7e6a4..0d336501956 100644
--- a/apps/dav/l10n/he.js
+++ b/apps/dav/l10n/he.js
@@ -84,8 +84,17 @@ OC.L10N.register(
"Tasks" : "משימות",
"Untitled task" : "משימה ללא כותרת",
"Completed on %s" : "הושלמה ב־%s",
+ "Contacts and groups" : "אנשי קשר וקבוצות",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "נקודת קצה WebDAV",
+ "to" : "אל",
+ "Monday" : "יום שני",
+ "Tuesday" : "יום שלישי",
+ "Wednesday" : "יום רביעי",
+ "Thursday" : "יום חמישי",
+ "Friday" : "יום שישי",
+ "Saturday" : "יום שבת",
+ "Sunday" : "יום ראשון",
"Save" : "שמירה",
"Calendar server" : "שרת לוח שנה",
"Send invitations to attendees" : "שליחת הזמנות למשתתפים",
@@ -101,7 +110,7 @@ OC.L10N.register(
"Please contact the organizer directly." : "נא ליצור קשר עם הגוף מארגן ישירות.",
"Are you accepting the invitation?" : "האם להיענות להזמנה?",
"Tentative" : "טנטטיבית",
- "Your attendance was updated successfully." : "ההשתתפות שלך עודכנה בהצלחה.",
- "Calendar and tasks" : "לוח שנה ומשימות"
+ "Comment" : "הערה",
+ "Your attendance was updated successfully." : "ההשתתפות שלך עודכנה בהצלחה."
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;");
diff --git a/apps/dav/l10n/he.json b/apps/dav/l10n/he.json
index b7380f1880a..b6625202618 100644
--- a/apps/dav/l10n/he.json
+++ b/apps/dav/l10n/he.json
@@ -82,8 +82,17 @@
"Tasks" : "משימות",
"Untitled task" : "משימה ללא כותרת",
"Completed on %s" : "הושלמה ב־%s",
+ "Contacts and groups" : "אנשי קשר וקבוצות",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "נקודת קצה WebDAV",
+ "to" : "אל",
+ "Monday" : "יום שני",
+ "Tuesday" : "יום שלישי",
+ "Wednesday" : "יום רביעי",
+ "Thursday" : "יום חמישי",
+ "Friday" : "יום שישי",
+ "Saturday" : "יום שבת",
+ "Sunday" : "יום ראשון",
"Save" : "שמירה",
"Calendar server" : "שרת לוח שנה",
"Send invitations to attendees" : "שליחת הזמנות למשתתפים",
@@ -99,7 +108,7 @@
"Please contact the organizer directly." : "נא ליצור קשר עם הגוף מארגן ישירות.",
"Are you accepting the invitation?" : "האם להיענות להזמנה?",
"Tentative" : "טנטטיבית",
- "Your attendance was updated successfully." : "ההשתתפות שלך עודכנה בהצלחה.",
- "Calendar and tasks" : "לוח שנה ומשימות"
+ "Comment" : "הערה",
+ "Your attendance was updated successfully." : "ההשתתפות שלך עודכנה בהצלחה."
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"
} \ No newline at end of file
diff --git a/apps/dav/l10n/hr.js b/apps/dav/l10n/hr.js
index ee8db7861ed..047ce219120 100644
--- a/apps/dav/l10n/hr.js
+++ b/apps/dav/l10n/hr.js
@@ -119,6 +119,7 @@ OC.L10N.register(
"Completed on %s" : "Završeno na %s",
"Due on %s by %s" : "%s treba završiti do %s",
"Due on %s" : "Treba završiti do %s",
+ "Contacts and groups" : "Kontakti i grupe",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV krajnja točka",
"Availability" : "Raspoloživost",
@@ -150,7 +151,6 @@ OC.L10N.register(
"Tentative" : "Uvjetno",
"Number of guests" : "Broj gostiju",
"Comment" : "Komentar",
- "Your attendance was updated successfully." : "Vaša je prisutnost uspješno ažurirana.",
- "Calendar and tasks" : "Kalendar i zadaci"
+ "Your attendance was updated successfully." : "Vaša je prisutnost uspješno ažurirana."
},
"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;");
diff --git a/apps/dav/l10n/hr.json b/apps/dav/l10n/hr.json
index 971d47c828d..d717a37a4a6 100644
--- a/apps/dav/l10n/hr.json
+++ b/apps/dav/l10n/hr.json
@@ -117,6 +117,7 @@
"Completed on %s" : "Završeno na %s",
"Due on %s by %s" : "%s treba završiti do %s",
"Due on %s" : "Treba završiti do %s",
+ "Contacts and groups" : "Kontakti i grupe",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV krajnja točka",
"Availability" : "Raspoloživost",
@@ -148,7 +149,6 @@
"Tentative" : "Uvjetno",
"Number of guests" : "Broj gostiju",
"Comment" : "Komentar",
- "Your attendance was updated successfully." : "Vaša je prisutnost uspješno ažurirana.",
- "Calendar and tasks" : "Kalendar i zadaci"
+ "Your attendance was updated successfully." : "Vaša je prisutnost uspješno ažurirana."
},"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/dav/l10n/hu.js b/apps/dav/l10n/hu.js
index 685250c0af1..8ed50e1dbc3 100644
--- a/apps/dav/l10n/hu.js
+++ b/apps/dav/l10n/hu.js
@@ -5,50 +5,50 @@ OC.L10N.register(
"Todos" : "Teendők",
"Personal" : "Személyes",
"{actor} created calendar {calendar}" : "{actor} létrehozta a naptárt: {calendar}",
- "You created calendar {calendar}" : "Létrehoztad a naptárt: {calendar}",
+ "You created calendar {calendar}" : "Létrehozta a naptárt: {calendar}",
"{actor} deleted calendar {calendar}" : "{actor} törölte a naptárt: {calendar}",
- "You deleted calendar {calendar}" : "Törölted a naptárt: {calendar}",
- "{actor} updated calendar {calendar}" : "{actor} frissítette a napárt: {calendar}",
- "You updated calendar {calendar}" : "Frissítetted a naptárt: {calendar}",
- "{actor} restored calendar {calendar}" : "{actor} visszaállította a naptárat {calendar}",
- "You restored calendar {calendar}" : "Visszaállítottad a naptárat {calendar}",
- "You shared calendar {calendar} as public link" : "Nyilvános hivatkozásként megosztottad ezt a naptárt: {calendar}",
- "You removed public link for calendar {calendar}" : "Eltávolítottad a naptár nyilvános hivatkozását: {calendar}",
- "{actor} shared calendar {calendar} with you" : "{actor} megosztotta veled ezt a naptárt: {calendar}",
- "You shared calendar {calendar} with {user}" : "Megosztottad ezt a napárt: {calendar} vele: {user}",
- "{actor} shared calendar {calendar} with {user}" : "{actor} megosztotta ezt a napárt: {calendar} vele: {user}",
- "{actor} unshared calendar {calendar} from you" : "{actor} visszavonta töled a naptár megosztását: {calendar}",
- "You unshared calendar {calendar} from {user}" : "Visszavontad a naptár megosztását: {calendar} tőle: {user}",
- "{actor} unshared calendar {calendar} from {user}" : "{actor} visszavonta a naptár megosztását: {calendar} tőle: {user}",
- "{actor} unshared calendar {calendar} from themselves" : "{actor} visszavonta tőlük a naptár megosztását: {calendar}",
- "You shared calendar {calendar} with group {group}" : "Megosztottad ezt a naptárt: {calendar} evvel a csoporttal: {group}",
- "{actor} shared calendar {calendar} with group {group}" : "{actor} megosztotta ezt a naptárt: {calendar} evvel a csoporttal: {group}",
- "You unshared calendar {calendar} from group {group}" : "Visszavontad ennek a naptárnak a magosztását: {calendar} ettől a csoporttól: {group}",
- "{actor} unshared calendar {calendar} from group {group}" : "{actor} visszavonta ennek a naptárnak a magosztását: {calendar} ettől a csoporttól: {group}",
- "{actor} created event {event} in calendar {calendar}" : "{actor} létrehozta ezt az eseményt: {event} ebben a naptárban: {calendar}",
- "You created event {event} in calendar {calendar}" : "Létrehoztad ezt az eseményt: {event} ebben a naptárban: {calendar}",
- "{actor} deleted event {event} from calendar {calendar}" : "{actor} törölte ezt az eseményt: {event} ebből a naptárból: {calendar}",
- "You deleted event {event} from calendar {calendar}" : "Törölted ezt az eseményt: {event} ebből a naptárból: {calendar}",
- "{actor} updated event {event} in calendar {calendar}" : "{actor} frissítette ezt az eseményt: {event} ebben a naptárban: {calendar}",
- "You updated event {event} in calendar {calendar}" : "Frissítetted ezt az eseményt: {event} ebben a naptárban: {calendar}",
- "{actor} restored event {event} of calendar {calendar}" : "{actor} visszaállította a naptár {calendar} egy eseményét {event}",
- "You restored event {event} of calendar {calendar}" : "Visszaállítottad a naptár {calendar} egy eseményét {event}",
+ "You deleted calendar {calendar}" : "Törölte a naptárt: {calendar}",
+ "{actor} updated calendar {calendar}" : "{actor} frissítette a naptárt: {calendar}",
+ "You updated calendar {calendar}" : "Frissítette a naptárt: {calendar}",
+ "{actor} restored calendar {calendar}" : "{actor} helyreállította a naptárt: {calendar}",
+ "You restored calendar {calendar}" : "Helyreállította a naptárt: {calendar}",
+ "You shared calendar {calendar} as public link" : "Nyilvános hivatkozásként osztotta meg a naptárt: {calendar}",
+ "You removed public link for calendar {calendar}" : "Eltávolította a naptár nyilvános hivatkozását: {calendar}",
+ "{actor} shared calendar {calendar} with you" : "{actor} megosztotta Önnel a naptárt: {calendar}",
+ "You shared calendar {calendar} with {user}" : "Megosztotta a(z) {calendar} naptárt a következővel: {user}",
+ "{actor} shared calendar {calendar} with {user}" : "{actor} megosztotta a(z) {calendar} naptárt a következővel: {user}",
+ "{actor} unshared calendar {calendar} from you" : "{actor} visszavonta Öntől a(z) {calendar} naptár megosztását",
+ "You unshared calendar {calendar} from {user}" : "Visszavonta a(z) {calendar} naptár megosztását a következőtől: {user}",
+ "{actor} unshared calendar {calendar} from {user}" : "{actor} visszavonta a(z) {calendar} naptár megosztását a következőtől: {user}",
+ "{actor} unshared calendar {calendar} from themselves" : "{actor} visszavonta saját magától a(z) {calendar} naptár megosztását",
+ "You shared calendar {calendar} with group {group}" : "Megosztotta a(z) {calendar} naptárt a következő csoporttal: {group}",
+ "{actor} shared calendar {calendar} with group {group}" : "{actor} megosztotta a(z) {calendar} naptárt a következő csoporttal: {group}",
+ "You unshared calendar {calendar} from group {group}" : "Visszavonta a(z) {calendar} naptár magosztását a következő csoporttól: {group}",
+ "{actor} unshared calendar {calendar} from group {group}" : "{actor} visszavonta a(z) {calendar} naptár megosztását a következő csoporttól: {group}",
+ "{actor} created event {event} in calendar {calendar}" : "{actor} létrehozta a(z) {event} eseményt a következő naptárban: {calendar}",
+ "You created event {event} in calendar {calendar}" : "Létrehozta a(z) {event} eseményt a következő naptárban: {calendar}",
+ "{actor} deleted event {event} from calendar {calendar}" : "{actor} törölte a(z) {event} eseményt a következő naptárból: {calendar}",
+ "You deleted event {event} from calendar {calendar}" : "Törölte a(z) {event} eseményt a következő naptárból: {calendar}",
+ "{actor} updated event {event} in calendar {calendar}" : "{actor} frissítette a(z) {event} eseményt a következő naptárban: {calendar}",
+ "You updated event {event} in calendar {calendar}" : "Frissítette a(z) {event} eseményt a következő naptárban: {calendar}",
+ "{actor} restored event {event} of calendar {calendar}" : "{actor} helyreállította a(z) {calendar} naptár következő eseményét: {event}",
+ "You restored event {event} of calendar {calendar}" : "Helyreállította a(z) {calendar} naptár következő eseményét: {event}",
"Busy" : "Foglalt",
- "{actor} created todo {todo} in list {calendar}" : "{actor} létrehozta ezt a teendőt: {todo} ebben a listában: {calendar}",
- "You created todo {todo} in list {calendar}" : "Létrehoztad ezt a teendőt: {todo} ebben a listában: {calendar}",
- "{actor} deleted todo {todo} from list {calendar}" : "{actor} törölte ezt a teendőt: {todo} ebből a listából: {calendar}",
- "You deleted todo {todo} from list {calendar}" : "Törölted ezt a teendőt: {todo} ebből a listából: {calendar}",
- "{actor} updated todo {todo} in list {calendar}" : "{actor} frissítette ezt a teendőt: {todo} ebben a listában: {calendar}",
- "You updated todo {todo} in list {calendar}" : "Frissítetted ezt a teendőt: {todo} ebben a listában: {calendar}",
- "{actor} solved todo {todo} in list {calendar}" : "{actor} elintézte ezt a teendőt: {todo} ebben a listában: {calendar}",
- "You solved todo {todo} in list {calendar}" : "Elintézted ezt a teendőt: {todo} ebben a listában: {calendar}",
- "{actor} reopened todo {todo} in list {calendar}" : "{actor} újranyitotta ezt a teendőt: {todo} ebben a listában: {calendar}",
- "You reopened todo {todo} in list {calendar}" : "Újranyitottad ezt a teendőt: {todo} ebben a listában: {calendar}",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} létrehozta a(z) {todo} teendőt a következő listában: {calendar}",
+ "You created todo {todo} in list {calendar}" : "Létrehozta a(z) {todo} teendőt a következő listában: {calendar}",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} törölte a(z) {todo} teendőt a következő listából: {calendar}",
+ "You deleted todo {todo} from list {calendar}" : "Törölte a(z) {todo} teendőt a következő listából: {calendar}",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} frissítette a(z) {todo} teendőt a következő listában: {calendar}",
+ "You updated todo {todo} in list {calendar}" : "Frissítette a(z) {todo} teendőt a következő listában: {calendar}",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} elintézte a(z) {todo} teendőt a következő listában: {calendar}",
+ "You solved todo {todo} in list {calendar}" : "Elintézte a(z) {todo} teendőt a következő listában: {calendar}",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} újranyitotta a(z) {todo} teendőt a következő listában: {calendar}",
+ "You reopened todo {todo} in list {calendar}" : "Újranyitotta a(z) {todo} teendőt a következő listában: {calendar}",
"Calendar, contacts and tasks" : "Naptár, címjegyzék és feladatok",
"A <strong>calendar</strong> was modified" : "Egy <strong>naptár</strong> megváltozott",
- "A calendar <strong>event</strong> was modified" : "Egy naptár <strong>esemény</strong> megváltozott",
- "A calendar <strong>todo</strong> was modified" : "Egy naptár <strong>teendő</strong> megváltozott",
- "Contact birthdays" : "Születésnapok",
+ "A calendar <strong>event</strong> was modified" : "Egy <strong>naptáresemény</strong> megváltozott",
+ "A calendar <strong>todo</strong> was modified" : "Egy <strong>naptárteendő</strong> megváltozott",
+ "Contact birthdays" : "Névjegyek születésnapjai",
"Death of %s" : "%s halála",
"Calendar:" : "Naptár:",
"Date:" : "Dátum:",
@@ -60,71 +60,91 @@ OC.L10N.register(
"_%n day_::_%n days_" : ["%n nap","%n nap"],
"_%n hour_::_%n hours_" : ["%n óra","%n óra"],
"_%n minute_::_%n minutes_" : ["%n perc","%n perc"],
- "%s (in %s)" : "%s (%s-ból)",
- "%s (%s ago)" : "%s (%s ezelőtt)",
+ "%s (in %s)" : "%s (%s múlva)",
+ "%s (%s ago)" : "%s (ennyi ideje: %s)",
"Calendar: %s" : "Naptár: %s",
"Date: %s" : "Dátum: %s",
"Description: %s" : "Leírás: %s",
"Where: %s" : "Hely: %s",
- "%1$s via %2$s" : "%1$s - %2$s",
- "Cancelled: %1$s" : "Visszavonva: %1$s",
- "Invitation canceled" : "Meghívás visszavonva",
+ "%1$s via %2$s" : "%1$s – %2$s",
+ "Cancelled: %1$s" : "Lemondva: %1$s",
+ "Invitation canceled" : "Meghívás lemondva",
"Re: %1$s" : "Vá: %1$s",
"Invitation updated" : "Meghívó frissítve",
"Invitation: %1$s" : "Meghívó: %1$s",
- "Invitation" : "Meghívás",
+ "Invitation" : "Meghívó",
"Title:" : "Cím:",
"Time:" : "Idő:",
"Location:" : "Hely:",
- "Link:" : "Link:",
+ "Link:" : "Hivatkozás:",
"Organizer:" : "Szervező:",
"Attendees:" : "Résztvevők:",
- "Accept" : "Elfogad",
- "Decline" : "Elutasít",
- "More options …" : "További opciók …",
- "More options at %s" : "További opciók itt: %s",
+ "Accept" : "Elfogadás",
+ "Decline" : "Elutasítás",
+ "More options …" : "További lehetőségek…",
+ "More options at %s" : "További lehetőségek itt: %s",
"Contacts" : "Névjegyek",
- "{actor} created address book {addressbook}" : "{actor} létrehozta a címjegyzéket {addressbook}",
- "You created address book {addressbook}" : "Létrehoztad a címjegyzéket {addressbook}",
- "{actor} deleted address book {addressbook}" : "{actor} törölte a címjegyzéket {addressbook}",
- "You deleted address book {addressbook}" : "Törölted a címjegyzéket {addressbook}",
- "{actor} updated address book {addressbook}" : "{actor} aktualizálta a címjegyzéket {addressbook}",
- "You updated address book {addressbook}" : "Aktualizáltad a címjegyzéket {addressbook}",
- "{actor} shared address book {addressbook} with you" : "{actor} megosztotta a címjegyzéket {addressbook} veled",
- "You shared address book {addressbook} with {user}" : "Megosztottad a címjegyzéket {addressbook} a felhasználóval: {user}",
- "{actor} shared address book {addressbook} with {user}" : "{actor} megosztotta a címjegyzéket {addressbook} a felhasználóval: {user}",
- "{actor} unshared address book {addressbook} from you" : "{actor} visszavonta a címjegyzék {addressbook} megosztását tőled",
- "You unshared address book {addressbook} from {user}" : "Visszavontad a címjegyzék {addressbook} megosztását tőle: {user}",
- "{actor} unshared address book {addressbook} from {user}" : "{actor} visszavonta a címjegyzék {addressbook} megosztását tőle: {user}",
- "{actor} unshared address book {addressbook} from themselves" : "{actor} visszavonta tőlük a címjegyzék {addressbook} megosztását",
- "You shared address book {addressbook} with group {group}" : "Megosztottad a címjegyzéket {addressbook} a csoporttal {group}",
- "{actor} shared address book {addressbook} with group {group}" : "{actor} megosztotta a címjegyzéket {addressbook} a csoporttal {group}",
- "You unshared address book {addressbook} from group {group}" : "Visszavontad a címjegyzék {addressbook} megosztását a csoporttól {group}",
- "{actor} unshared address book {addressbook} from group {group}" : "{actor} visszavonta a címjegyzék {addressbook} megosztását a csoporttól {group}",
- "{actor} created contact {card} in address book {addressbook}" : "{actor} létrehozott egy bejegyzést {card} a címjegyzékben {addressbook}",
- "You created contact {card} in address book {addressbook}" : "Létrehoztál egy bejegyzést {card} a címjegyzékben {addressbook}",
- "{actor} deleted contact {card} from address book {addressbook}" : "{actor} törölt egy bejegyzést {card} a címjegyzékből {addressbook}",
- "You deleted contact {card} from address book {addressbook}" : "Töröltél egy bejegyzést {card} a címjegyzékből {addressbook}",
- "{actor} updated contact {card} in address book {addressbook}" : "{actor} aktualizált egy bejegyzést {card} a címjegyzékben {addressbook}",
- "You updated contact {card} in address book {addressbook}" : "Aktualizáltál egy bejegyzést {card} a címjegyzékben {addressbook}",
- "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Egy Névjegy vagy címjegyzék módosítva lett",
- "System is in maintenance mode." : "A rendszer karbantartás alatt van",
+ "{actor} created address book {addressbook}" : "{actor} létrehozta a következő címjegyzéket: {addressbook}",
+ "You created address book {addressbook}" : "Létrehozta a következő címjegyzéket: {addressbook}",
+ "{actor} deleted address book {addressbook}" : "{actor} törölte a következő címjegyzéket: {addressbook}",
+ "You deleted address book {addressbook}" : "Törölte a következő címjegyzéket: {addressbook}",
+ "{actor} updated address book {addressbook}" : "{actor} aktualizálta a következő címjegyzéket: {addressbook}",
+ "You updated address book {addressbook}" : "Aktualizálta a következő címjegyzéket {addressbook}",
+ "{actor} shared address book {addressbook} with you" : "{actor} megosztotta Önnel a következő címjegyzéket: {addressbook}",
+ "You shared address book {addressbook} with {user}" : "Megosztotta a(z) {addressbook} címjegyzéket a következővel: {user}",
+ "{actor} shared address book {addressbook} with {user}" : "{actor} megosztotta a(z) {addressbook} címjegyzéket a következővel: {user}",
+ "{actor} unshared address book {addressbook} from you" : "{actor} visszavonta Öntől a(z) {addressbook} címjegyzék megosztását",
+ "You unshared address book {addressbook} from {user}" : "Visszavonta a(z) {addressbook} címjegyzék megosztását a következőtől: {user}",
+ "{actor} unshared address book {addressbook} from {user}" : "{actor} visszavonta a(z) {addressbook} címjegyzék megosztását a következőtől: {user}",
+ "{actor} unshared address book {addressbook} from themselves" : "{actor} visszavonta saját magától a(z) {addressbook} címjegyzék megosztását",
+ "You shared address book {addressbook} with group {group}" : "Megosztotta a(z) {addressbook} címjegyzéket a következő csoporttal: {group}",
+ "{actor} shared address book {addressbook} with group {group}" : "{actor} megosztotta a(z) {addressbook} címjegyzéket a következő csoporttal: {group}",
+ "You unshared address book {addressbook} from group {group}" : "Visszavonta a(z) {addressbook} címjegyzék megosztását a következő csoporttól: {group}",
+ "{actor} unshared address book {addressbook} from group {group}" : "{actor} visszavonta a(z) {addressbook} címjegyzék megosztását a következő csoporttól: {group}",
+ "{actor} created contact {card} in address book {addressbook}" : "{actor} létrehozta a(z) {card} névjegyet a következő címjegyzékben: {addressbook}",
+ "You created contact {card} in address book {addressbook}" : "Létrehozta a(z) {card} névjegyet a következő címjegyzékben: {addressbook}",
+ "{actor} deleted contact {card} from address book {addressbook}" : "{actor} törölte a(z) {card} névjegyet a következő címjegyzékből: {addressbook}",
+ "You deleted contact {card} from address book {addressbook}" : "Törölte a(z) {card} névjegyet a következő címjegyzékből: {addressbook}",
+ "{actor} updated contact {card} in address book {addressbook}" : "{actor} aktualizálta a(z) {card} névjegyet a következő címjegyzékben: {addressbook}",
+ "You updated contact {card} in address book {addressbook}" : "Aktualizálta a(z) {card} névjegyet a következő címjegyzékben: {addressbook}",
+ "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Egy <strong>névjegy</strong> vagy <strong>címjegyzék</strong> módosítva lett",
+ "File is not updatable: %1$s" : "A fájl nem frissíthető: %1$s",
+ "Could not write to final file, canceled by hook" : "A végleges fájl nem írható, a hurok megszakította",
+ "Could not write file contents" : "A fájl tartalma nem írható",
+ "_%n byte_::_%n bytes_" : ["%n bájt","%n bájt"],
+ "Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Hiba történt a fájl célhelyre másolása során (másolva: %1$s, várt fájlméret: %2$s)",
+ "Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "A várt fájlméret %1$s, de %2$s lett beolvasva (a Nextcloud kliensből) és kiírva (a Nextcloud tárolóba). Ez lehet hálózati probléma a fájl küldése során, vagy írási hiba a tárolónál, a kiszolgáló oldalon.",
+ "Could not rename part file to final file, canceled by hook" : "A részleges fájl nem nevezhető át a végleges fájllá, a hurok megszakította",
+ "Could not rename part file to final file" : "A részleges fájl nem nevezhető át a végleges fájllá",
+ "Failed to check file size: %1$s" : "A fájlméret nem ellenőrizhető: %1$s",
+ "Could not open file" : "A fájl nem nyitható meg",
+ "Encryption not ready: %1$s" : "A titkosítás nincs kész: %1$s",
+ "Failed to open file: %1$s" : "A fájl megnyitása sikertelen: %1$s",
+ "Failed to unlink: %1$s" : "A hivatkozás eltávolítása sikertelen: %1$s",
+ "Invalid chunk name" : "Érvénytelen darabnév",
+ "Could not rename part file assembled from chunks" : "Nem lehet átnevezni a darabokból összeállított részleges fájlt",
+ "Failed to write file contents: %1$s" : "A fájl tartalmának kiírása sikertelen: %1$s",
+ "File not found: %1$s" : "A fájl nem található: %1$s",
+ "System is in maintenance mode." : "A rendszer karbantartási módban van.",
"Upgrade needed" : "Frissítés szükséges",
- "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "A %s naptárat úgy kell beállítani, hogy HTTPS-t használjon a CalDAVés és a CardDAV eléréséhez iOS / macOS rendszeren.",
- "Configures a CalDAV account" : "Konfigurálja a CalDAV fiókot",
- "Configures a CardDAV account" : "Konfigurálja a CardDAV fiókot",
+ "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "A %s kiszolgálót HTTPS használatára kell beállítani, hogy iOS-szel/macOS-szel használhassa CalDAV-ot és a CardDAV-ot.",
+ "Configures a CalDAV account" : "Beállítja a CalDAV-fiókot",
+ "Configures a CardDAV account" : "Beállítja a CardDAV-fiókot",
"Events" : "Események",
"Tasks" : "Feladatok",
"Untitled task" : "Névtelen feladat",
- "Completed on %s" : "%s időpontban befejezve",
- "Due on %s by %s" : "%s időpontban esedékes %s által",
- "Due on %s" : "%s időpontban esedékes",
+ "Completed on %s" : "Befejezve: %s",
+ "Due on %s by %s" : "Esedékesség: %s, %s által",
+ "Due on %s" : "Esedékesség: %s",
+ "Migrated calendar (%1$s)" : "Átköltöztetett naptár (%1$s)",
+ "Calendars including events, details and attendees" : "Naptárak eseményekkel, részletekkel és résztvevőkkel",
+ "Contacts and groups" : "Névjegyek és csoportok",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV végpont",
"Availability" : "Elérhetőség",
- "If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Ha beállítod a munkaidődet, más felhasználók megbeszélés létrehozásakor fogják, hogy mikor vagy elérhető.",
+ "If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Ha beállítja a munkaidejét, akkor más felhasználók a megbeszélések létrehozásakor látni fogják, hogy Ön mikor nem érhető el.",
"Time zone:" : "Időzóna:",
- "to" : "címzett",
+ "to" : "–",
"Delete slot" : "Idősáv törlése",
"No working hours set" : "Nincs munkaidő beállítva",
"Add slot" : "Idősáv hozzáadása",
@@ -136,23 +156,24 @@ OC.L10N.register(
"Saturday" : "Szombat",
"Sunday" : "Vasárnap",
"Save" : "Mentés",
- "Calendar server" : "Naptár szerver",
+ "Calendar server" : "Naptárkiszolgáló",
"Send invitations to attendees" : "Meghívó küldése a résztvevőknek",
"Automatically generate a birthday calendar" : "Születésnapokat tartalmazó naptár automatikus létrehozása",
"Birthday calendars will be generated by a background job." : "A születésnapokat tartalmazó naptárakat egy háttérben futó folyamat fogja létrehozni.",
- "Hence they will not be available immediately after enabling but will show up after some time." : "Nem lesznek elérhetőek azonnal az engedélyezés után, de egy rövid idő múlva már láthatóak lesznek.",
+ "Hence they will not be available immediately after enabling but will show up after some time." : "Nem lesznek elérhetők azonnal az engedélyezés után, de egy rövid idő múlva már láthatók lesznek.",
"Send notifications for events" : "Értesítések küldése az eseményekről",
"Notifications are sent via background jobs, so these must occur often enough." : "Az értesítéseket háttérfeladatok küldik, ezért ezeknek elég gyakran meg kell történniük.",
- "Enable notifications for events via push" : "Értesítés engedélyezése eseményekről push-on keresztül",
- "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Telepítse a {calendarappstoreopen}Naptár alkalmazást{linkclose}, vagy {calendardocopen} csatlakoztassa asztali számítógépét és mobilját a szinkronizáláshoz ↗{linkclose}.",
- "Please make sure to properly set up {emailopen}the email server{linkclose}." : "Ne felejtse el megfelelően beállítani az {emailopen}e-mail szervert{linkclose}.",
- "There was an error updating your attendance status." : "Probléma lépett fel a részvételed státuszának frissítése közben.",
- "Please contact the organizer directly." : "Kérlek vedd fel közvetlenül a kapcsolatot a szervezővel.",
- "Are you accepting the invitation?" : "Elfogadod az meghívást?",
- "Tentative" : "Valószínűleg",
+ "Send reminder notifications to calendar sharees as well" : "Emlékeztető értesítések küldése azoknak is, akikkel a naptár meg van osztva",
+ "Reminders are always sent to organizers and attendees." : "Az értesítések mindig a szervezőknek és a résztvevőknek lesznek elküldve.",
+ "Enable notifications for events via push" : "Leküldéses értesítések engedélyezése az eseményekhez",
+ "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Telepítse a {calendarappstoreopen}Naptár alkalmazást{linkclose}, vagy {calendardocopen}csatlakoztassa asztali számítógépét és mobilját a szinkronizáláshoz ↗{linkclose}.",
+ "Please make sure to properly set up {emailopen}the email server{linkclose}." : "Ne felejtse el megfelelően beállítani az {emailopen}e-mail kiszolgálót{linkclose}.",
+ "There was an error updating your attendance status." : "Hiba történt a részvételi állapotának frissítése során.",
+ "Please contact the organizer directly." : "Vegye fel a kapcsolatot közvetlenül a szervezővel.",
+ "Are you accepting the invitation?" : "Elfogadja az meghívást?",
+ "Tentative" : "Feltételes",
"Number of guests" : "Vendégek száma",
"Comment" : "Megjegyzés",
- "Your attendance was updated successfully." : "A részvételed frissítése sikerült.",
- "Calendar and tasks" : "Naptár és feladatok"
+ "Your attendance was updated successfully." : "A részvétele frissítése sikeres."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/hu.json b/apps/dav/l10n/hu.json
index ba1fde4c7ef..4eb239a2502 100644
--- a/apps/dav/l10n/hu.json
+++ b/apps/dav/l10n/hu.json
@@ -3,50 +3,50 @@
"Todos" : "Teendők",
"Personal" : "Személyes",
"{actor} created calendar {calendar}" : "{actor} létrehozta a naptárt: {calendar}",
- "You created calendar {calendar}" : "Létrehoztad a naptárt: {calendar}",
+ "You created calendar {calendar}" : "Létrehozta a naptárt: {calendar}",
"{actor} deleted calendar {calendar}" : "{actor} törölte a naptárt: {calendar}",
- "You deleted calendar {calendar}" : "Törölted a naptárt: {calendar}",
- "{actor} updated calendar {calendar}" : "{actor} frissítette a napárt: {calendar}",
- "You updated calendar {calendar}" : "Frissítetted a naptárt: {calendar}",
- "{actor} restored calendar {calendar}" : "{actor} visszaállította a naptárat {calendar}",
- "You restored calendar {calendar}" : "Visszaállítottad a naptárat {calendar}",
- "You shared calendar {calendar} as public link" : "Nyilvános hivatkozásként megosztottad ezt a naptárt: {calendar}",
- "You removed public link for calendar {calendar}" : "Eltávolítottad a naptár nyilvános hivatkozását: {calendar}",
- "{actor} shared calendar {calendar} with you" : "{actor} megosztotta veled ezt a naptárt: {calendar}",
- "You shared calendar {calendar} with {user}" : "Megosztottad ezt a napárt: {calendar} vele: {user}",
- "{actor} shared calendar {calendar} with {user}" : "{actor} megosztotta ezt a napárt: {calendar} vele: {user}",
- "{actor} unshared calendar {calendar} from you" : "{actor} visszavonta töled a naptár megosztását: {calendar}",
- "You unshared calendar {calendar} from {user}" : "Visszavontad a naptár megosztását: {calendar} tőle: {user}",
- "{actor} unshared calendar {calendar} from {user}" : "{actor} visszavonta a naptár megosztását: {calendar} tőle: {user}",
- "{actor} unshared calendar {calendar} from themselves" : "{actor} visszavonta tőlük a naptár megosztását: {calendar}",
- "You shared calendar {calendar} with group {group}" : "Megosztottad ezt a naptárt: {calendar} evvel a csoporttal: {group}",
- "{actor} shared calendar {calendar} with group {group}" : "{actor} megosztotta ezt a naptárt: {calendar} evvel a csoporttal: {group}",
- "You unshared calendar {calendar} from group {group}" : "Visszavontad ennek a naptárnak a magosztását: {calendar} ettől a csoporttól: {group}",
- "{actor} unshared calendar {calendar} from group {group}" : "{actor} visszavonta ennek a naptárnak a magosztását: {calendar} ettől a csoporttól: {group}",
- "{actor} created event {event} in calendar {calendar}" : "{actor} létrehozta ezt az eseményt: {event} ebben a naptárban: {calendar}",
- "You created event {event} in calendar {calendar}" : "Létrehoztad ezt az eseményt: {event} ebben a naptárban: {calendar}",
- "{actor} deleted event {event} from calendar {calendar}" : "{actor} törölte ezt az eseményt: {event} ebből a naptárból: {calendar}",
- "You deleted event {event} from calendar {calendar}" : "Törölted ezt az eseményt: {event} ebből a naptárból: {calendar}",
- "{actor} updated event {event} in calendar {calendar}" : "{actor} frissítette ezt az eseményt: {event} ebben a naptárban: {calendar}",
- "You updated event {event} in calendar {calendar}" : "Frissítetted ezt az eseményt: {event} ebben a naptárban: {calendar}",
- "{actor} restored event {event} of calendar {calendar}" : "{actor} visszaállította a naptár {calendar} egy eseményét {event}",
- "You restored event {event} of calendar {calendar}" : "Visszaállítottad a naptár {calendar} egy eseményét {event}",
+ "You deleted calendar {calendar}" : "Törölte a naptárt: {calendar}",
+ "{actor} updated calendar {calendar}" : "{actor} frissítette a naptárt: {calendar}",
+ "You updated calendar {calendar}" : "Frissítette a naptárt: {calendar}",
+ "{actor} restored calendar {calendar}" : "{actor} helyreállította a naptárt: {calendar}",
+ "You restored calendar {calendar}" : "Helyreállította a naptárt: {calendar}",
+ "You shared calendar {calendar} as public link" : "Nyilvános hivatkozásként osztotta meg a naptárt: {calendar}",
+ "You removed public link for calendar {calendar}" : "Eltávolította a naptár nyilvános hivatkozását: {calendar}",
+ "{actor} shared calendar {calendar} with you" : "{actor} megosztotta Önnel a naptárt: {calendar}",
+ "You shared calendar {calendar} with {user}" : "Megosztotta a(z) {calendar} naptárt a következővel: {user}",
+ "{actor} shared calendar {calendar} with {user}" : "{actor} megosztotta a(z) {calendar} naptárt a következővel: {user}",
+ "{actor} unshared calendar {calendar} from you" : "{actor} visszavonta Öntől a(z) {calendar} naptár megosztását",
+ "You unshared calendar {calendar} from {user}" : "Visszavonta a(z) {calendar} naptár megosztását a következőtől: {user}",
+ "{actor} unshared calendar {calendar} from {user}" : "{actor} visszavonta a(z) {calendar} naptár megosztását a következőtől: {user}",
+ "{actor} unshared calendar {calendar} from themselves" : "{actor} visszavonta saját magától a(z) {calendar} naptár megosztását",
+ "You shared calendar {calendar} with group {group}" : "Megosztotta a(z) {calendar} naptárt a következő csoporttal: {group}",
+ "{actor} shared calendar {calendar} with group {group}" : "{actor} megosztotta a(z) {calendar} naptárt a következő csoporttal: {group}",
+ "You unshared calendar {calendar} from group {group}" : "Visszavonta a(z) {calendar} naptár magosztását a következő csoporttól: {group}",
+ "{actor} unshared calendar {calendar} from group {group}" : "{actor} visszavonta a(z) {calendar} naptár megosztását a következő csoporttól: {group}",
+ "{actor} created event {event} in calendar {calendar}" : "{actor} létrehozta a(z) {event} eseményt a következő naptárban: {calendar}",
+ "You created event {event} in calendar {calendar}" : "Létrehozta a(z) {event} eseményt a következő naptárban: {calendar}",
+ "{actor} deleted event {event} from calendar {calendar}" : "{actor} törölte a(z) {event} eseményt a következő naptárból: {calendar}",
+ "You deleted event {event} from calendar {calendar}" : "Törölte a(z) {event} eseményt a következő naptárból: {calendar}",
+ "{actor} updated event {event} in calendar {calendar}" : "{actor} frissítette a(z) {event} eseményt a következő naptárban: {calendar}",
+ "You updated event {event} in calendar {calendar}" : "Frissítette a(z) {event} eseményt a következő naptárban: {calendar}",
+ "{actor} restored event {event} of calendar {calendar}" : "{actor} helyreállította a(z) {calendar} naptár következő eseményét: {event}",
+ "You restored event {event} of calendar {calendar}" : "Helyreállította a(z) {calendar} naptár következő eseményét: {event}",
"Busy" : "Foglalt",
- "{actor} created todo {todo} in list {calendar}" : "{actor} létrehozta ezt a teendőt: {todo} ebben a listában: {calendar}",
- "You created todo {todo} in list {calendar}" : "Létrehoztad ezt a teendőt: {todo} ebben a listában: {calendar}",
- "{actor} deleted todo {todo} from list {calendar}" : "{actor} törölte ezt a teendőt: {todo} ebből a listából: {calendar}",
- "You deleted todo {todo} from list {calendar}" : "Törölted ezt a teendőt: {todo} ebből a listából: {calendar}",
- "{actor} updated todo {todo} in list {calendar}" : "{actor} frissítette ezt a teendőt: {todo} ebben a listában: {calendar}",
- "You updated todo {todo} in list {calendar}" : "Frissítetted ezt a teendőt: {todo} ebben a listában: {calendar}",
- "{actor} solved todo {todo} in list {calendar}" : "{actor} elintézte ezt a teendőt: {todo} ebben a listában: {calendar}",
- "You solved todo {todo} in list {calendar}" : "Elintézted ezt a teendőt: {todo} ebben a listában: {calendar}",
- "{actor} reopened todo {todo} in list {calendar}" : "{actor} újranyitotta ezt a teendőt: {todo} ebben a listában: {calendar}",
- "You reopened todo {todo} in list {calendar}" : "Újranyitottad ezt a teendőt: {todo} ebben a listában: {calendar}",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} létrehozta a(z) {todo} teendőt a következő listában: {calendar}",
+ "You created todo {todo} in list {calendar}" : "Létrehozta a(z) {todo} teendőt a következő listában: {calendar}",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} törölte a(z) {todo} teendőt a következő listából: {calendar}",
+ "You deleted todo {todo} from list {calendar}" : "Törölte a(z) {todo} teendőt a következő listából: {calendar}",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} frissítette a(z) {todo} teendőt a következő listában: {calendar}",
+ "You updated todo {todo} in list {calendar}" : "Frissítette a(z) {todo} teendőt a következő listában: {calendar}",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} elintézte a(z) {todo} teendőt a következő listában: {calendar}",
+ "You solved todo {todo} in list {calendar}" : "Elintézte a(z) {todo} teendőt a következő listában: {calendar}",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} újranyitotta a(z) {todo} teendőt a következő listában: {calendar}",
+ "You reopened todo {todo} in list {calendar}" : "Újranyitotta a(z) {todo} teendőt a következő listában: {calendar}",
"Calendar, contacts and tasks" : "Naptár, címjegyzék és feladatok",
"A <strong>calendar</strong> was modified" : "Egy <strong>naptár</strong> megváltozott",
- "A calendar <strong>event</strong> was modified" : "Egy naptár <strong>esemény</strong> megváltozott",
- "A calendar <strong>todo</strong> was modified" : "Egy naptár <strong>teendő</strong> megváltozott",
- "Contact birthdays" : "Születésnapok",
+ "A calendar <strong>event</strong> was modified" : "Egy <strong>naptáresemény</strong> megváltozott",
+ "A calendar <strong>todo</strong> was modified" : "Egy <strong>naptárteendő</strong> megváltozott",
+ "Contact birthdays" : "Névjegyek születésnapjai",
"Death of %s" : "%s halála",
"Calendar:" : "Naptár:",
"Date:" : "Dátum:",
@@ -58,71 +58,91 @@
"_%n day_::_%n days_" : ["%n nap","%n nap"],
"_%n hour_::_%n hours_" : ["%n óra","%n óra"],
"_%n minute_::_%n minutes_" : ["%n perc","%n perc"],
- "%s (in %s)" : "%s (%s-ból)",
- "%s (%s ago)" : "%s (%s ezelőtt)",
+ "%s (in %s)" : "%s (%s múlva)",
+ "%s (%s ago)" : "%s (ennyi ideje: %s)",
"Calendar: %s" : "Naptár: %s",
"Date: %s" : "Dátum: %s",
"Description: %s" : "Leírás: %s",
"Where: %s" : "Hely: %s",
- "%1$s via %2$s" : "%1$s - %2$s",
- "Cancelled: %1$s" : "Visszavonva: %1$s",
- "Invitation canceled" : "Meghívás visszavonva",
+ "%1$s via %2$s" : "%1$s – %2$s",
+ "Cancelled: %1$s" : "Lemondva: %1$s",
+ "Invitation canceled" : "Meghívás lemondva",
"Re: %1$s" : "Vá: %1$s",
"Invitation updated" : "Meghívó frissítve",
"Invitation: %1$s" : "Meghívó: %1$s",
- "Invitation" : "Meghívás",
+ "Invitation" : "Meghívó",
"Title:" : "Cím:",
"Time:" : "Idő:",
"Location:" : "Hely:",
- "Link:" : "Link:",
+ "Link:" : "Hivatkozás:",
"Organizer:" : "Szervező:",
"Attendees:" : "Résztvevők:",
- "Accept" : "Elfogad",
- "Decline" : "Elutasít",
- "More options …" : "További opciók …",
- "More options at %s" : "További opciók itt: %s",
+ "Accept" : "Elfogadás",
+ "Decline" : "Elutasítás",
+ "More options …" : "További lehetőségek…",
+ "More options at %s" : "További lehetőségek itt: %s",
"Contacts" : "Névjegyek",
- "{actor} created address book {addressbook}" : "{actor} létrehozta a címjegyzéket {addressbook}",
- "You created address book {addressbook}" : "Létrehoztad a címjegyzéket {addressbook}",
- "{actor} deleted address book {addressbook}" : "{actor} törölte a címjegyzéket {addressbook}",
- "You deleted address book {addressbook}" : "Törölted a címjegyzéket {addressbook}",
- "{actor} updated address book {addressbook}" : "{actor} aktualizálta a címjegyzéket {addressbook}",
- "You updated address book {addressbook}" : "Aktualizáltad a címjegyzéket {addressbook}",
- "{actor} shared address book {addressbook} with you" : "{actor} megosztotta a címjegyzéket {addressbook} veled",
- "You shared address book {addressbook} with {user}" : "Megosztottad a címjegyzéket {addressbook} a felhasználóval: {user}",
- "{actor} shared address book {addressbook} with {user}" : "{actor} megosztotta a címjegyzéket {addressbook} a felhasználóval: {user}",
- "{actor} unshared address book {addressbook} from you" : "{actor} visszavonta a címjegyzék {addressbook} megosztását tőled",
- "You unshared address book {addressbook} from {user}" : "Visszavontad a címjegyzék {addressbook} megosztását tőle: {user}",
- "{actor} unshared address book {addressbook} from {user}" : "{actor} visszavonta a címjegyzék {addressbook} megosztását tőle: {user}",
- "{actor} unshared address book {addressbook} from themselves" : "{actor} visszavonta tőlük a címjegyzék {addressbook} megosztását",
- "You shared address book {addressbook} with group {group}" : "Megosztottad a címjegyzéket {addressbook} a csoporttal {group}",
- "{actor} shared address book {addressbook} with group {group}" : "{actor} megosztotta a címjegyzéket {addressbook} a csoporttal {group}",
- "You unshared address book {addressbook} from group {group}" : "Visszavontad a címjegyzék {addressbook} megosztását a csoporttól {group}",
- "{actor} unshared address book {addressbook} from group {group}" : "{actor} visszavonta a címjegyzék {addressbook} megosztását a csoporttól {group}",
- "{actor} created contact {card} in address book {addressbook}" : "{actor} létrehozott egy bejegyzést {card} a címjegyzékben {addressbook}",
- "You created contact {card} in address book {addressbook}" : "Létrehoztál egy bejegyzést {card} a címjegyzékben {addressbook}",
- "{actor} deleted contact {card} from address book {addressbook}" : "{actor} törölt egy bejegyzést {card} a címjegyzékből {addressbook}",
- "You deleted contact {card} from address book {addressbook}" : "Töröltél egy bejegyzést {card} a címjegyzékből {addressbook}",
- "{actor} updated contact {card} in address book {addressbook}" : "{actor} aktualizált egy bejegyzést {card} a címjegyzékben {addressbook}",
- "You updated contact {card} in address book {addressbook}" : "Aktualizáltál egy bejegyzést {card} a címjegyzékben {addressbook}",
- "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Egy Névjegy vagy címjegyzék módosítva lett",
- "System is in maintenance mode." : "A rendszer karbantartás alatt van",
+ "{actor} created address book {addressbook}" : "{actor} létrehozta a következő címjegyzéket: {addressbook}",
+ "You created address book {addressbook}" : "Létrehozta a következő címjegyzéket: {addressbook}",
+ "{actor} deleted address book {addressbook}" : "{actor} törölte a következő címjegyzéket: {addressbook}",
+ "You deleted address book {addressbook}" : "Törölte a következő címjegyzéket: {addressbook}",
+ "{actor} updated address book {addressbook}" : "{actor} aktualizálta a következő címjegyzéket: {addressbook}",
+ "You updated address book {addressbook}" : "Aktualizálta a következő címjegyzéket {addressbook}",
+ "{actor} shared address book {addressbook} with you" : "{actor} megosztotta Önnel a következő címjegyzéket: {addressbook}",
+ "You shared address book {addressbook} with {user}" : "Megosztotta a(z) {addressbook} címjegyzéket a következővel: {user}",
+ "{actor} shared address book {addressbook} with {user}" : "{actor} megosztotta a(z) {addressbook} címjegyzéket a következővel: {user}",
+ "{actor} unshared address book {addressbook} from you" : "{actor} visszavonta Öntől a(z) {addressbook} címjegyzék megosztását",
+ "You unshared address book {addressbook} from {user}" : "Visszavonta a(z) {addressbook} címjegyzék megosztását a következőtől: {user}",
+ "{actor} unshared address book {addressbook} from {user}" : "{actor} visszavonta a(z) {addressbook} címjegyzék megosztását a következőtől: {user}",
+ "{actor} unshared address book {addressbook} from themselves" : "{actor} visszavonta saját magától a(z) {addressbook} címjegyzék megosztását",
+ "You shared address book {addressbook} with group {group}" : "Megosztotta a(z) {addressbook} címjegyzéket a következő csoporttal: {group}",
+ "{actor} shared address book {addressbook} with group {group}" : "{actor} megosztotta a(z) {addressbook} címjegyzéket a következő csoporttal: {group}",
+ "You unshared address book {addressbook} from group {group}" : "Visszavonta a(z) {addressbook} címjegyzék megosztását a következő csoporttól: {group}",
+ "{actor} unshared address book {addressbook} from group {group}" : "{actor} visszavonta a(z) {addressbook} címjegyzék megosztását a következő csoporttól: {group}",
+ "{actor} created contact {card} in address book {addressbook}" : "{actor} létrehozta a(z) {card} névjegyet a következő címjegyzékben: {addressbook}",
+ "You created contact {card} in address book {addressbook}" : "Létrehozta a(z) {card} névjegyet a következő címjegyzékben: {addressbook}",
+ "{actor} deleted contact {card} from address book {addressbook}" : "{actor} törölte a(z) {card} névjegyet a következő címjegyzékből: {addressbook}",
+ "You deleted contact {card} from address book {addressbook}" : "Törölte a(z) {card} névjegyet a következő címjegyzékből: {addressbook}",
+ "{actor} updated contact {card} in address book {addressbook}" : "{actor} aktualizálta a(z) {card} névjegyet a következő címjegyzékben: {addressbook}",
+ "You updated contact {card} in address book {addressbook}" : "Aktualizálta a(z) {card} névjegyet a következő címjegyzékben: {addressbook}",
+ "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Egy <strong>névjegy</strong> vagy <strong>címjegyzék</strong> módosítva lett",
+ "File is not updatable: %1$s" : "A fájl nem frissíthető: %1$s",
+ "Could not write to final file, canceled by hook" : "A végleges fájl nem írható, a hurok megszakította",
+ "Could not write file contents" : "A fájl tartalma nem írható",
+ "_%n byte_::_%n bytes_" : ["%n bájt","%n bájt"],
+ "Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Hiba történt a fájl célhelyre másolása során (másolva: %1$s, várt fájlméret: %2$s)",
+ "Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "A várt fájlméret %1$s, de %2$s lett beolvasva (a Nextcloud kliensből) és kiírva (a Nextcloud tárolóba). Ez lehet hálózati probléma a fájl küldése során, vagy írási hiba a tárolónál, a kiszolgáló oldalon.",
+ "Could not rename part file to final file, canceled by hook" : "A részleges fájl nem nevezhető át a végleges fájllá, a hurok megszakította",
+ "Could not rename part file to final file" : "A részleges fájl nem nevezhető át a végleges fájllá",
+ "Failed to check file size: %1$s" : "A fájlméret nem ellenőrizhető: %1$s",
+ "Could not open file" : "A fájl nem nyitható meg",
+ "Encryption not ready: %1$s" : "A titkosítás nincs kész: %1$s",
+ "Failed to open file: %1$s" : "A fájl megnyitása sikertelen: %1$s",
+ "Failed to unlink: %1$s" : "A hivatkozás eltávolítása sikertelen: %1$s",
+ "Invalid chunk name" : "Érvénytelen darabnév",
+ "Could not rename part file assembled from chunks" : "Nem lehet átnevezni a darabokból összeállított részleges fájlt",
+ "Failed to write file contents: %1$s" : "A fájl tartalmának kiírása sikertelen: %1$s",
+ "File not found: %1$s" : "A fájl nem található: %1$s",
+ "System is in maintenance mode." : "A rendszer karbantartási módban van.",
"Upgrade needed" : "Frissítés szükséges",
- "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "A %s naptárat úgy kell beállítani, hogy HTTPS-t használjon a CalDAVés és a CardDAV eléréséhez iOS / macOS rendszeren.",
- "Configures a CalDAV account" : "Konfigurálja a CalDAV fiókot",
- "Configures a CardDAV account" : "Konfigurálja a CardDAV fiókot",
+ "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "A %s kiszolgálót HTTPS használatára kell beállítani, hogy iOS-szel/macOS-szel használhassa CalDAV-ot és a CardDAV-ot.",
+ "Configures a CalDAV account" : "Beállítja a CalDAV-fiókot",
+ "Configures a CardDAV account" : "Beállítja a CardDAV-fiókot",
"Events" : "Események",
"Tasks" : "Feladatok",
"Untitled task" : "Névtelen feladat",
- "Completed on %s" : "%s időpontban befejezve",
- "Due on %s by %s" : "%s időpontban esedékes %s által",
- "Due on %s" : "%s időpontban esedékes",
+ "Completed on %s" : "Befejezve: %s",
+ "Due on %s by %s" : "Esedékesség: %s, %s által",
+ "Due on %s" : "Esedékesség: %s",
+ "Migrated calendar (%1$s)" : "Átköltöztetett naptár (%1$s)",
+ "Calendars including events, details and attendees" : "Naptárak eseményekkel, részletekkel és résztvevőkkel",
+ "Contacts and groups" : "Névjegyek és csoportok",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV végpont",
"Availability" : "Elérhetőség",
- "If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Ha beállítod a munkaidődet, más felhasználók megbeszélés létrehozásakor fogják, hogy mikor vagy elérhető.",
+ "If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Ha beállítja a munkaidejét, akkor más felhasználók a megbeszélések létrehozásakor látni fogják, hogy Ön mikor nem érhető el.",
"Time zone:" : "Időzóna:",
- "to" : "címzett",
+ "to" : "–",
"Delete slot" : "Idősáv törlése",
"No working hours set" : "Nincs munkaidő beállítva",
"Add slot" : "Idősáv hozzáadása",
@@ -134,23 +154,24 @@
"Saturday" : "Szombat",
"Sunday" : "Vasárnap",
"Save" : "Mentés",
- "Calendar server" : "Naptár szerver",
+ "Calendar server" : "Naptárkiszolgáló",
"Send invitations to attendees" : "Meghívó küldése a résztvevőknek",
"Automatically generate a birthday calendar" : "Születésnapokat tartalmazó naptár automatikus létrehozása",
"Birthday calendars will be generated by a background job." : "A születésnapokat tartalmazó naptárakat egy háttérben futó folyamat fogja létrehozni.",
- "Hence they will not be available immediately after enabling but will show up after some time." : "Nem lesznek elérhetőek azonnal az engedélyezés után, de egy rövid idő múlva már láthatóak lesznek.",
+ "Hence they will not be available immediately after enabling but will show up after some time." : "Nem lesznek elérhetők azonnal az engedélyezés után, de egy rövid idő múlva már láthatók lesznek.",
"Send notifications for events" : "Értesítések küldése az eseményekről",
"Notifications are sent via background jobs, so these must occur often enough." : "Az értesítéseket háttérfeladatok küldik, ezért ezeknek elég gyakran meg kell történniük.",
- "Enable notifications for events via push" : "Értesítés engedélyezése eseményekről push-on keresztül",
- "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Telepítse a {calendarappstoreopen}Naptár alkalmazást{linkclose}, vagy {calendardocopen} csatlakoztassa asztali számítógépét és mobilját a szinkronizáláshoz ↗{linkclose}.",
- "Please make sure to properly set up {emailopen}the email server{linkclose}." : "Ne felejtse el megfelelően beállítani az {emailopen}e-mail szervert{linkclose}.",
- "There was an error updating your attendance status." : "Probléma lépett fel a részvételed státuszának frissítése közben.",
- "Please contact the organizer directly." : "Kérlek vedd fel közvetlenül a kapcsolatot a szervezővel.",
- "Are you accepting the invitation?" : "Elfogadod az meghívást?",
- "Tentative" : "Valószínűleg",
+ "Send reminder notifications to calendar sharees as well" : "Emlékeztető értesítések küldése azoknak is, akikkel a naptár meg van osztva",
+ "Reminders are always sent to organizers and attendees." : "Az értesítések mindig a szervezőknek és a résztvevőknek lesznek elküldve.",
+ "Enable notifications for events via push" : "Leküldéses értesítések engedélyezése az eseményekhez",
+ "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Telepítse a {calendarappstoreopen}Naptár alkalmazást{linkclose}, vagy {calendardocopen}csatlakoztassa asztali számítógépét és mobilját a szinkronizáláshoz ↗{linkclose}.",
+ "Please make sure to properly set up {emailopen}the email server{linkclose}." : "Ne felejtse el megfelelően beállítani az {emailopen}e-mail kiszolgálót{linkclose}.",
+ "There was an error updating your attendance status." : "Hiba történt a részvételi állapotának frissítése során.",
+ "Please contact the organizer directly." : "Vegye fel a kapcsolatot közvetlenül a szervezővel.",
+ "Are you accepting the invitation?" : "Elfogadja az meghívást?",
+ "Tentative" : "Feltételes",
"Number of guests" : "Vendégek száma",
"Comment" : "Megjegyzés",
- "Your attendance was updated successfully." : "A részvételed frissítése sikerült.",
- "Calendar and tasks" : "Naptár és feladatok"
+ "Your attendance was updated successfully." : "A részvétele frissítése sikeres."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/is.js b/apps/dav/l10n/is.js
index cd73206b585..2032bb7d5b3 100644
--- a/apps/dav/l10n/is.js
+++ b/apps/dav/l10n/is.js
@@ -77,6 +77,14 @@ OC.L10N.register(
"Untitled task" : "Ónefnt verkefni",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV-endapunktur",
+ "to" : "til",
+ "Monday" : "Mánudagur",
+ "Tuesday" : "Þriðjudagur",
+ "Wednesday" : "Miðvikudagur",
+ "Thursday" : "Fimmtudagur",
+ "Friday" : "Föstudagur",
+ "Saturday" : "Laugardagur",
+ "Sunday" : "Sunnudagur",
"Save" : "Vista",
"Calendar server" : "Dagatalaþjónn",
"Send invitations to attendees" : "Senda boð til þátttakenda",
@@ -89,6 +97,7 @@ OC.L10N.register(
"Please contact the organizer directly." : "Hafðu samband beint við skipuleggjendurna.",
"Are you accepting the invitation?" : "Ætlar þú að samþykkja boðið?",
"Tentative" : "Bráðabirgða",
+ "Comment" : "Athugasemd",
"Your attendance was updated successfully." : "Mætingarstaða þín var uppfærð."
},
"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");
diff --git a/apps/dav/l10n/is.json b/apps/dav/l10n/is.json
index 2c86b001973..d17d83e207e 100644
--- a/apps/dav/l10n/is.json
+++ b/apps/dav/l10n/is.json
@@ -75,6 +75,14 @@
"Untitled task" : "Ónefnt verkefni",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV-endapunktur",
+ "to" : "til",
+ "Monday" : "Mánudagur",
+ "Tuesday" : "Þriðjudagur",
+ "Wednesday" : "Miðvikudagur",
+ "Thursday" : "Fimmtudagur",
+ "Friday" : "Föstudagur",
+ "Saturday" : "Laugardagur",
+ "Sunday" : "Sunnudagur",
"Save" : "Vista",
"Calendar server" : "Dagatalaþjónn",
"Send invitations to attendees" : "Senda boð til þátttakenda",
@@ -87,6 +95,7 @@
"Please contact the organizer directly." : "Hafðu samband beint við skipuleggjendurna.",
"Are you accepting the invitation?" : "Ætlar þú að samþykkja boðið?",
"Tentative" : "Bráðabirgða",
+ "Comment" : "Athugasemd",
"Your attendance was updated successfully." : "Mætingarstaða þín var uppfærð."
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/it.js b/apps/dav/l10n/it.js
index 36a6db6d276..ce377ba761a 100644
--- a/apps/dav/l10n/it.js
+++ b/apps/dav/l10n/it.js
@@ -137,6 +137,7 @@ OC.L10N.register(
"Due on %s by %s" : "Scade il %s per %s",
"Due on %s" : "Scade il %s",
"Migrated calendar (%1$s)" : "Calendario migrato (%1$s)",
+ "Contacts and groups" : "Contatti e gruppi",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Terminatore WebDAV",
"Availability" : "Disponibilità",
@@ -170,7 +171,6 @@ OC.L10N.register(
"Tentative" : "Provvisorio",
"Number of guests" : "Numero di ospiti",
"Comment" : "Commento",
- "Your attendance was updated successfully." : "La tua partecipazione è stata aggiornata correttamente.",
- "Calendar and tasks" : "Calendario e attività"
+ "Your attendance was updated successfully." : "La tua partecipazione è stata aggiornata correttamente."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/it.json b/apps/dav/l10n/it.json
index ec132e79143..f740ad47c56 100644
--- a/apps/dav/l10n/it.json
+++ b/apps/dav/l10n/it.json
@@ -135,6 +135,7 @@
"Due on %s by %s" : "Scade il %s per %s",
"Due on %s" : "Scade il %s",
"Migrated calendar (%1$s)" : "Calendario migrato (%1$s)",
+ "Contacts and groups" : "Contatti e gruppi",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Terminatore WebDAV",
"Availability" : "Disponibilità",
@@ -168,7 +169,6 @@
"Tentative" : "Provvisorio",
"Number of guests" : "Numero di ospiti",
"Comment" : "Commento",
- "Your attendance was updated successfully." : "La tua partecipazione è stata aggiornata correttamente.",
- "Calendar and tasks" : "Calendario e attività"
+ "Your attendance was updated successfully." : "La tua partecipazione è stata aggiornata correttamente."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/ja.js b/apps/dav/l10n/ja.js
index a9a6631c98a..ab469850ac3 100644
--- a/apps/dav/l10n/ja.js
+++ b/apps/dav/l10n/ja.js
@@ -108,6 +108,11 @@ OC.L10N.register(
"{actor} updated contact {card} in address book {addressbook}" : "{actor}がアドレス帳 {addressbook}の連絡先 {card}を更新しました",
"You updated contact {card} in address book {addressbook}" : "アドレス帳 {addressbook}の連絡先 {card}を更新しました",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "連絡先やアドレス帳が変更されたとき",
+ "File is not updatable: %1$s" : "ファイルが更新できません:%1$s",
+ "Could not write to final file, canceled by hook" : "最終ファイルへの書き込みができなかったため、フックによりキャンセルされた",
+ "Could not write file contents" : "ファイルの内容を書き込むことができませんでした",
+ "_%n byte_::_%n bytes_" : ["%n bytes"],
+ "Could not open file" : "ファイルを開くことができませんでした",
"System is in maintenance mode." : "システムはメンテナンスモードです。",
"Upgrade needed" : "アップグレードが必要です",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "iOS / macOSでCalDAVおよびCardDAVを使用するには、%sにHTTPSを設定する必要があります。",
@@ -119,9 +124,12 @@ OC.L10N.register(
"Completed on %s" : "%sに完了",
"Due on %s by %s" : "期限日%s が%sにより設定",
"Due on %s" : "期限日:%s",
+ "Contacts and groups" : "連絡先とグループ",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAVエンドポイント",
"Time zone:" : "時間帯:",
+ "to" : "宛先",
+ "Delete slot" : "スロットを削除",
"Monday" : "月曜日",
"Tuesday" : "火曜日",
"Wednesday" : "水曜日",
@@ -145,7 +153,6 @@ OC.L10N.register(
"Are you accepting the invitation?" : "招待を受け入れていますか?",
"Tentative" : "暫定的",
"Comment" : "コメント",
- "Your attendance was updated successfully." : "出席は正常に更新されました。",
- "Calendar and tasks" : "カレンダーとタスク"
+ "Your attendance was updated successfully." : "出席は正常に更新されました。"
},
"nplurals=1; plural=0;");
diff --git a/apps/dav/l10n/ja.json b/apps/dav/l10n/ja.json
index 1ff51bff458..1c47079c0af 100644
--- a/apps/dav/l10n/ja.json
+++ b/apps/dav/l10n/ja.json
@@ -106,6 +106,11 @@
"{actor} updated contact {card} in address book {addressbook}" : "{actor}がアドレス帳 {addressbook}の連絡先 {card}を更新しました",
"You updated contact {card} in address book {addressbook}" : "アドレス帳 {addressbook}の連絡先 {card}を更新しました",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "連絡先やアドレス帳が変更されたとき",
+ "File is not updatable: %1$s" : "ファイルが更新できません:%1$s",
+ "Could not write to final file, canceled by hook" : "最終ファイルへの書き込みができなかったため、フックによりキャンセルされた",
+ "Could not write file contents" : "ファイルの内容を書き込むことができませんでした",
+ "_%n byte_::_%n bytes_" : ["%n bytes"],
+ "Could not open file" : "ファイルを開くことができませんでした",
"System is in maintenance mode." : "システムはメンテナンスモードです。",
"Upgrade needed" : "アップグレードが必要です",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "iOS / macOSでCalDAVおよびCardDAVを使用するには、%sにHTTPSを設定する必要があります。",
@@ -117,9 +122,12 @@
"Completed on %s" : "%sに完了",
"Due on %s by %s" : "期限日%s が%sにより設定",
"Due on %s" : "期限日:%s",
+ "Contacts and groups" : "連絡先とグループ",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAVエンドポイント",
"Time zone:" : "時間帯:",
+ "to" : "宛先",
+ "Delete slot" : "スロットを削除",
"Monday" : "月曜日",
"Tuesday" : "火曜日",
"Wednesday" : "水曜日",
@@ -143,7 +151,6 @@
"Are you accepting the invitation?" : "招待を受け入れていますか?",
"Tentative" : "暫定的",
"Comment" : "コメント",
- "Your attendance was updated successfully." : "出席は正常に更新されました。",
- "Calendar and tasks" : "カレンダーとタスク"
+ "Your attendance was updated successfully." : "出席は正常に更新されました。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/dav/l10n/ko.js b/apps/dav/l10n/ko.js
index 72e3a20cb3b..1b8d00636d1 100644
--- a/apps/dav/l10n/ko.js
+++ b/apps/dav/l10n/ko.js
@@ -117,8 +117,17 @@ OC.L10N.register(
"Untitled task" : "제목없는 작업",
"Completed on %s" : "%s에 완료됨",
"Due on %s" : "만료일: %s",
+ "Contacts and groups" : "연락처 및 그룹",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV 종단점",
+ "to" : "받는 사람",
+ "Monday" : "월요일",
+ "Tuesday" : "화요일",
+ "Wednesday" : "수요일",
+ "Thursday" : "목요일",
+ "Friday" : "금요일",
+ "Saturday" : "토요일",
+ "Sunday" : "일요일",
"Save" : "저장",
"Calendar server" : "달력 서버",
"Send invitations to attendees" : "참석자에게 초대장 보내기",
@@ -134,7 +143,7 @@ OC.L10N.register(
"Please contact the organizer directly." : "주최자에게 직접 연락하십시오.",
"Are you accepting the invitation?" : "초대를 수락하시겠습니까?",
"Tentative" : "예정됨",
- "Your attendance was updated successfully." : "참석 정보를 업데이트했습니다.",
- "Calendar and tasks" : "달력과 작업"
+ "Comment" : "설명",
+ "Your attendance was updated successfully." : "참석 정보를 업데이트했습니다."
},
"nplurals=1; plural=0;");
diff --git a/apps/dav/l10n/ko.json b/apps/dav/l10n/ko.json
index 12f4449bce4..149394220c7 100644
--- a/apps/dav/l10n/ko.json
+++ b/apps/dav/l10n/ko.json
@@ -115,8 +115,17 @@
"Untitled task" : "제목없는 작업",
"Completed on %s" : "%s에 완료됨",
"Due on %s" : "만료일: %s",
+ "Contacts and groups" : "연락처 및 그룹",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV 종단점",
+ "to" : "받는 사람",
+ "Monday" : "월요일",
+ "Tuesday" : "화요일",
+ "Wednesday" : "수요일",
+ "Thursday" : "목요일",
+ "Friday" : "금요일",
+ "Saturday" : "토요일",
+ "Sunday" : "일요일",
"Save" : "저장",
"Calendar server" : "달력 서버",
"Send invitations to attendees" : "참석자에게 초대장 보내기",
@@ -132,7 +141,7 @@
"Please contact the organizer directly." : "주최자에게 직접 연락하십시오.",
"Are you accepting the invitation?" : "초대를 수락하시겠습니까?",
"Tentative" : "예정됨",
- "Your attendance was updated successfully." : "참석 정보를 업데이트했습니다.",
- "Calendar and tasks" : "달력과 작업"
+ "Comment" : "설명",
+ "Your attendance was updated successfully." : "참석 정보를 업데이트했습니다."
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/dav/l10n/lt_LT.js b/apps/dav/l10n/lt_LT.js
index 3f1a0460c6b..759cf679524 100644
--- a/apps/dav/l10n/lt_LT.js
+++ b/apps/dav/l10n/lt_LT.js
@@ -94,6 +94,7 @@ OC.L10N.register(
"Events" : "Įvykiai",
"Tasks" : "Užduotys",
"Untitled task" : "Užduotis be pavadinimo",
+ "Contacts and groups" : "Adresatai ir grupės",
"WebDAV" : "WebDAV",
"Availability" : "Pasiekiamumas",
"Time zone:" : "Laiko juosta:",
@@ -120,6 +121,6 @@ OC.L10N.register(
"Are you accepting the invitation?" : "Ar priimate pakvietimą?",
"Tentative" : "Preliminarus",
"Number of guests" : "Svečių skaičius",
- "Calendar and tasks" : "Kalendorius ir užduotys"
+ "Comment" : "Komentaras"
},
"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/apps/dav/l10n/lt_LT.json b/apps/dav/l10n/lt_LT.json
index 2d4e0ba38a5..6803eecef9d 100644
--- a/apps/dav/l10n/lt_LT.json
+++ b/apps/dav/l10n/lt_LT.json
@@ -92,6 +92,7 @@
"Events" : "Įvykiai",
"Tasks" : "Užduotys",
"Untitled task" : "Užduotis be pavadinimo",
+ "Contacts and groups" : "Adresatai ir grupės",
"WebDAV" : "WebDAV",
"Availability" : "Pasiekiamumas",
"Time zone:" : "Laiko juosta:",
@@ -118,6 +119,6 @@
"Are you accepting the invitation?" : "Ar priimate pakvietimą?",
"Tentative" : "Preliminarus",
"Number of guests" : "Svečių skaičius",
- "Calendar and tasks" : "Kalendorius ir užduotys"
+ "Comment" : "Komentaras"
},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/mk.js b/apps/dav/l10n/mk.js
index 24acd058e44..95b8683df38 100644
--- a/apps/dav/l10n/mk.js
+++ b/apps/dav/l10n/mk.js
@@ -93,6 +93,7 @@ OC.L10N.register(
"Completed on %s" : "Завршена на %s",
"Due on %s by %s" : "Истекува на %s од %s",
"Due on %s" : "Истекува на %s",
+ "Contacts and groups" : "Контакти и групи",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV крајна точка",
"Availability" : "Достапност",
@@ -123,7 +124,6 @@ OC.L10N.register(
"Tentative" : "Прелиминарно",
"Number of guests" : "Број на гости",
"Comment" : "Коментар",
- "Your attendance was updated successfully." : "Вашето присуство е успешно ажурирано.",
- "Calendar and tasks" : "Календар и задачи"
+ "Your attendance was updated successfully." : "Вашето присуство е успешно ажурирано."
},
"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;");
diff --git a/apps/dav/l10n/mk.json b/apps/dav/l10n/mk.json
index 2e93f3a9b75..a858e30132b 100644
--- a/apps/dav/l10n/mk.json
+++ b/apps/dav/l10n/mk.json
@@ -91,6 +91,7 @@
"Completed on %s" : "Завршена на %s",
"Due on %s by %s" : "Истекува на %s од %s",
"Due on %s" : "Истекува на %s",
+ "Contacts and groups" : "Контакти и групи",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV крајна точка",
"Availability" : "Достапност",
@@ -121,7 +122,6 @@
"Tentative" : "Прелиминарно",
"Number of guests" : "Број на гости",
"Comment" : "Коментар",
- "Your attendance was updated successfully." : "Вашето присуство е успешно ажурирано.",
- "Calendar and tasks" : "Календар и задачи"
+ "Your attendance was updated successfully." : "Вашето присуство е успешно ажурирано."
},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"
} \ No newline at end of file
diff --git a/apps/dav/l10n/nb.js b/apps/dav/l10n/nb.js
index f7d07d0f377..83b6a368d30 100644
--- a/apps/dav/l10n/nb.js
+++ b/apps/dav/l10n/nb.js
@@ -88,6 +88,14 @@ OC.L10N.register(
"Due on %s" : "Forfaller på %s",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV endepunkt",
+ "to" : "til",
+ "Monday" : "Mandag",
+ "Tuesday" : "Tirsdag",
+ "Wednesday" : "Onsdag",
+ "Thursday" : "Torsdag",
+ "Friday" : "Fredag",
+ "Saturday" : "Lørdag",
+ "Sunday" : "Søndag",
"Save" : "Lagre",
"Calendar server" : "Kalenderserver",
"Send invitations to attendees" : "Send invitasjoner til oppmøtte",
@@ -103,7 +111,7 @@ OC.L10N.register(
"Please contact the organizer directly." : "Ta kontakt med arrangøren direkte.",
"Are you accepting the invitation?" : "Aksepterer du invitasjonen?",
"Tentative" : "Foreløpig",
- "Your attendance was updated successfully." : "Deltakelsen din ble oppdatert.",
- "Calendar and tasks" : "Kalender og oppgaver"
+ "Comment" : "Kommentar",
+ "Your attendance was updated successfully." : "Deltakelsen din ble oppdatert."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/nb.json b/apps/dav/l10n/nb.json
index 4bbeeb18ecd..2d18c5b28c6 100644
--- a/apps/dav/l10n/nb.json
+++ b/apps/dav/l10n/nb.json
@@ -86,6 +86,14 @@
"Due on %s" : "Forfaller på %s",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV endepunkt",
+ "to" : "til",
+ "Monday" : "Mandag",
+ "Tuesday" : "Tirsdag",
+ "Wednesday" : "Onsdag",
+ "Thursday" : "Torsdag",
+ "Friday" : "Fredag",
+ "Saturday" : "Lørdag",
+ "Sunday" : "Søndag",
"Save" : "Lagre",
"Calendar server" : "Kalenderserver",
"Send invitations to attendees" : "Send invitasjoner til oppmøtte",
@@ -101,7 +109,7 @@
"Please contact the organizer directly." : "Ta kontakt med arrangøren direkte.",
"Are you accepting the invitation?" : "Aksepterer du invitasjonen?",
"Tentative" : "Foreløpig",
- "Your attendance was updated successfully." : "Deltakelsen din ble oppdatert.",
- "Calendar and tasks" : "Kalender og oppgaver"
+ "Comment" : "Kommentar",
+ "Your attendance was updated successfully." : "Deltakelsen din ble oppdatert."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/nl.js b/apps/dav/l10n/nl.js
index 964c3bdf3e7..8d4f56ae2b2 100644
--- a/apps/dav/l10n/nl.js
+++ b/apps/dav/l10n/nl.js
@@ -119,6 +119,7 @@ OC.L10N.register(
"Completed on %s" : "Voltooid op %s",
"Due on %s by %s" : "Verwacht op %s door %s",
"Due on %s" : "Verwacht op %s",
+ "Contacts and groups" : "Contactpersonen en groepen",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV eindpunt",
"Availability" : "Beschikbaarheid",
@@ -152,7 +153,6 @@ OC.L10N.register(
"Tentative" : "Onder voorbehoud",
"Number of guests" : "Aantal gasten",
"Comment" : "Notitie",
- "Your attendance was updated successfully." : "Je deelname is succesvol bijgewerkt.",
- "Calendar and tasks" : "Agenda en taken"
+ "Your attendance was updated successfully." : "Je deelname is succesvol bijgewerkt."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/nl.json b/apps/dav/l10n/nl.json
index 589f66c3f43..c4651d31984 100644
--- a/apps/dav/l10n/nl.json
+++ b/apps/dav/l10n/nl.json
@@ -117,6 +117,7 @@
"Completed on %s" : "Voltooid op %s",
"Due on %s by %s" : "Verwacht op %s door %s",
"Due on %s" : "Verwacht op %s",
+ "Contacts and groups" : "Contactpersonen en groepen",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV eindpunt",
"Availability" : "Beschikbaarheid",
@@ -150,7 +151,6 @@
"Tentative" : "Onder voorbehoud",
"Number of guests" : "Aantal gasten",
"Comment" : "Notitie",
- "Your attendance was updated successfully." : "Je deelname is succesvol bijgewerkt.",
- "Calendar and tasks" : "Agenda en taken"
+ "Your attendance was updated successfully." : "Je deelname is succesvol bijgewerkt."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/pl.js b/apps/dav/l10n/pl.js
index e9fd91268fc..93f1e06069c 100644
--- a/apps/dav/l10n/pl.js
+++ b/apps/dav/l10n/pl.js
@@ -174,7 +174,6 @@ OC.L10N.register(
"Tentative" : "Niepewne",
"Number of guests" : "Liczba gości",
"Comment" : "Komentarz",
- "Your attendance was updated successfully." : "Twoja obecność została pomyślnie zaktualizowana.",
- "Calendar and tasks" : "Kalendarz i zadania"
+ "Your attendance was updated successfully." : "Twoja obecność została pomyślnie zaktualizowana."
},
"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");
diff --git a/apps/dav/l10n/pl.json b/apps/dav/l10n/pl.json
index 4ea51401e82..25dde4e2304 100644
--- a/apps/dav/l10n/pl.json
+++ b/apps/dav/l10n/pl.json
@@ -172,7 +172,6 @@
"Tentative" : "Niepewne",
"Number of guests" : "Liczba gości",
"Comment" : "Komentarz",
- "Your attendance was updated successfully." : "Twoja obecność została pomyślnie zaktualizowana.",
- "Calendar and tasks" : "Kalendarz i zadania"
+ "Your attendance was updated successfully." : "Twoja obecność została pomyślnie zaktualizowana."
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/pt_BR.js b/apps/dav/l10n/pt_BR.js
index d9cc4dfb00f..14bf46617fb 100644
--- a/apps/dav/l10n/pt_BR.js
+++ b/apps/dav/l10n/pt_BR.js
@@ -137,6 +137,7 @@ OC.L10N.register(
"Due on %s by %s" : "Vence em %s até %s",
"Due on %s" : "Vence em %s",
"Migrated calendar (%1$s)" : "Calendário migrado (%1$s)",
+ "Calendars including events, details and attendees" : "Calendários, incluindo eventos, detalhes e participantes",
"Contacts and groups" : "Contatos e grupos",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Endpoint WebDAV",
@@ -173,7 +174,6 @@ OC.L10N.register(
"Tentative" : "Tentativa",
"Number of guests" : "Número de convidados",
"Comment" : "Comentário",
- "Your attendance was updated successfully." : "Sua presença foi atualizada com sucesso.",
- "Calendar and tasks" : "Calendário e tarefas"
+ "Your attendance was updated successfully." : "Sua presença foi atualizada com sucesso."
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/dav/l10n/pt_BR.json b/apps/dav/l10n/pt_BR.json
index f449fd8ab0f..00ab3a5788e 100644
--- a/apps/dav/l10n/pt_BR.json
+++ b/apps/dav/l10n/pt_BR.json
@@ -135,6 +135,7 @@
"Due on %s by %s" : "Vence em %s até %s",
"Due on %s" : "Vence em %s",
"Migrated calendar (%1$s)" : "Calendário migrado (%1$s)",
+ "Calendars including events, details and attendees" : "Calendários, incluindo eventos, detalhes e participantes",
"Contacts and groups" : "Contatos e grupos",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Endpoint WebDAV",
@@ -171,7 +172,6 @@
"Tentative" : "Tentativa",
"Number of guests" : "Número de convidados",
"Comment" : "Comentário",
- "Your attendance was updated successfully." : "Sua presença foi atualizada com sucesso.",
- "Calendar and tasks" : "Calendário e tarefas"
+ "Your attendance was updated successfully." : "Sua presença foi atualizada com sucesso."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/ru.js b/apps/dav/l10n/ru.js
index c8c4cfd3d09..9f61a676680 100644
--- a/apps/dav/l10n/ru.js
+++ b/apps/dav/l10n/ru.js
@@ -119,6 +119,7 @@ OC.L10N.register(
"Completed on %s" : "Завершено %s",
"Due on %s by %s" : "До %s %s",
"Due on %s" : "До %s",
+ "Contacts and groups" : "Контакты и группы",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "точка подключения WebDAV",
"Availability" : "Доступность",
@@ -152,7 +153,6 @@ OC.L10N.register(
"Tentative" : "Под вопросом",
"Number of guests" : "Количество гостей",
"Comment" : "Комментарий",
- "Your attendance was updated successfully." : "Статус участия обновлён.",
- "Calendar and tasks" : "Календарь и задачи"
+ "Your attendance was updated successfully." : "Статус участия обновлён."
},
"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/dav/l10n/ru.json b/apps/dav/l10n/ru.json
index 5860aebf0ac..76b46d546a1 100644
--- a/apps/dav/l10n/ru.json
+++ b/apps/dav/l10n/ru.json
@@ -117,6 +117,7 @@
"Completed on %s" : "Завершено %s",
"Due on %s by %s" : "До %s %s",
"Due on %s" : "До %s",
+ "Contacts and groups" : "Контакты и группы",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "точка подключения WebDAV",
"Availability" : "Доступность",
@@ -150,7 +151,6 @@
"Tentative" : "Под вопросом",
"Number of guests" : "Количество гостей",
"Comment" : "Комментарий",
- "Your attendance was updated successfully." : "Статус участия обновлён.",
- "Calendar and tasks" : "Календарь и задачи"
+ "Your attendance was updated successfully." : "Статус участия обновлён."
},"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/dav/l10n/sc.js b/apps/dav/l10n/sc.js
index 52a6cdd0da6..897f96f71d9 100644
--- a/apps/dav/l10n/sc.js
+++ b/apps/dav/l10n/sc.js
@@ -121,6 +121,14 @@ OC.L10N.register(
"Due on %s" : "iscadet su %s",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "puntu finale WebDAV ",
+ "to" : "a",
+ "Monday" : "Lunis",
+ "Tuesday" : "Martis",
+ "Wednesday" : "Mércuris",
+ "Thursday" : "Giòbia",
+ "Friday" : "Chenàbura",
+ "Saturday" : "Sàbudu",
+ "Sunday" : "Domìnigu",
"Save" : "Sarva",
"Calendar server" : "Serbidore calendàriu",
"Send invitations to attendees" : "Imbia invitos de partetzipatziones",
@@ -136,7 +144,7 @@ OC.L10N.register(
"Please contact the organizer directly." : "Pro praghere, cuntata deretu a s'organizadore.",
"Are you accepting the invitation?" : "Cheres atzetare s'invitu?",
"Tentative" : "Intentu",
- "Your attendance was updated successfully." : "Sa partetzipatzione tua est istada agiornada in manera curreta.",
- "Calendar and tasks" : "Calendàrios e fainas"
+ "Comment" : "Cummentu",
+ "Your attendance was updated successfully." : "Sa partetzipatzione tua est istada agiornada in manera curreta."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/sc.json b/apps/dav/l10n/sc.json
index ba427c4a785..0dd83ab8392 100644
--- a/apps/dav/l10n/sc.json
+++ b/apps/dav/l10n/sc.json
@@ -119,6 +119,14 @@
"Due on %s" : "iscadet su %s",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "puntu finale WebDAV ",
+ "to" : "a",
+ "Monday" : "Lunis",
+ "Tuesday" : "Martis",
+ "Wednesday" : "Mércuris",
+ "Thursday" : "Giòbia",
+ "Friday" : "Chenàbura",
+ "Saturday" : "Sàbudu",
+ "Sunday" : "Domìnigu",
"Save" : "Sarva",
"Calendar server" : "Serbidore calendàriu",
"Send invitations to attendees" : "Imbia invitos de partetzipatziones",
@@ -134,7 +142,7 @@
"Please contact the organizer directly." : "Pro praghere, cuntata deretu a s'organizadore.",
"Are you accepting the invitation?" : "Cheres atzetare s'invitu?",
"Tentative" : "Intentu",
- "Your attendance was updated successfully." : "Sa partetzipatzione tua est istada agiornada in manera curreta.",
- "Calendar and tasks" : "Calendàrios e fainas"
+ "Comment" : "Cummentu",
+ "Your attendance was updated successfully." : "Sa partetzipatzione tua est istada agiornada in manera curreta."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/sk.js b/apps/dav/l10n/sk.js
index cf5ce6520a1..d6d1908c05d 100644
--- a/apps/dav/l10n/sk.js
+++ b/apps/dav/l10n/sk.js
@@ -137,6 +137,7 @@ OC.L10N.register(
"Due on %s by %s" : "Termín od %s do %s",
"Due on %s" : "Termín do %s",
"Migrated calendar (%1$s)" : "Migrovaný kalendár (%1$s)",
+ "Contacts and groups" : "Kontakty a skupiny",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Koncový bod WebDAV",
"Availability" : "Dostupnosť",
@@ -170,7 +171,6 @@ OC.L10N.register(
"Tentative" : "Neistý",
"Number of guests" : "Počet návštevníkov",
"Comment" : "Komentár",
- "Your attendance was updated successfully." : "Vaša účasť bola aktualizovaná úspešne.",
- "Calendar and tasks" : "Kalendár a úlohy"
+ "Your attendance was updated successfully." : "Vaša účasť bola aktualizovaná úspešne."
},
"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/apps/dav/l10n/sk.json b/apps/dav/l10n/sk.json
index 0272716fe5c..f7c11d213f3 100644
--- a/apps/dav/l10n/sk.json
+++ b/apps/dav/l10n/sk.json
@@ -135,6 +135,7 @@
"Due on %s by %s" : "Termín od %s do %s",
"Due on %s" : "Termín do %s",
"Migrated calendar (%1$s)" : "Migrovaný kalendár (%1$s)",
+ "Contacts and groups" : "Kontakty a skupiny",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Koncový bod WebDAV",
"Availability" : "Dostupnosť",
@@ -168,7 +169,6 @@
"Tentative" : "Neistý",
"Number of guests" : "Počet návštevníkov",
"Comment" : "Komentár",
- "Your attendance was updated successfully." : "Vaša účasť bola aktualizovaná úspešne.",
- "Calendar and tasks" : "Kalendár a úlohy"
+ "Your attendance was updated successfully." : "Vaša účasť bola aktualizovaná úspešne."
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/sl.js b/apps/dav/l10n/sl.js
index 82207289b70..7c1f367a468 100644
--- a/apps/dav/l10n/sl.js
+++ b/apps/dav/l10n/sl.js
@@ -92,10 +92,12 @@ OC.L10N.register(
"Completed on %s" : "Končana %s",
"Due on %s by %s" : "Poteče %s ob %s",
"Due on %s" : "Poteče %s",
+ "Contacts and groups" : "Stiki in skupine",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Končna točka WebDAV",
"Availability" : "Razpoložljivost",
"Time zone:" : "Časovni pas:",
+ "to" : "do",
"Delete slot" : "Izbriši možnost",
"No working hours set" : "Ni navedenih delovnih ur",
"Add slot" : "Dodaj polje",
@@ -123,7 +125,6 @@ OC.L10N.register(
"Tentative" : "Začasno",
"Number of guests" : "Število gostov",
"Comment" : "Opomba",
- "Your attendance was updated successfully." : "Vaša prisotnost je uspešno posodobljena.",
- "Calendar and tasks" : "Koledar in naloge"
+ "Your attendance was updated successfully." : "Vaša prisotnost je uspešno posodobljena."
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/dav/l10n/sl.json b/apps/dav/l10n/sl.json
index 6c5c58071d1..8703fddc54a 100644
--- a/apps/dav/l10n/sl.json
+++ b/apps/dav/l10n/sl.json
@@ -90,10 +90,12 @@
"Completed on %s" : "Končana %s",
"Due on %s by %s" : "Poteče %s ob %s",
"Due on %s" : "Poteče %s",
+ "Contacts and groups" : "Stiki in skupine",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Končna točka WebDAV",
"Availability" : "Razpoložljivost",
"Time zone:" : "Časovni pas:",
+ "to" : "do",
"Delete slot" : "Izbriši možnost",
"No working hours set" : "Ni navedenih delovnih ur",
"Add slot" : "Dodaj polje",
@@ -121,7 +123,6 @@
"Tentative" : "Začasno",
"Number of guests" : "Število gostov",
"Comment" : "Opomba",
- "Your attendance was updated successfully." : "Vaša prisotnost je uspešno posodobljena.",
- "Calendar and tasks" : "Koledar in naloge"
+ "Your attendance was updated successfully." : "Vaša prisotnost je uspešno posodobljena."
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/sr.js b/apps/dav/l10n/sr.js
index ef382f769c6..b1f8a03574c 100644
--- a/apps/dav/l10n/sr.js
+++ b/apps/dav/l10n/sr.js
@@ -88,6 +88,14 @@ OC.L10N.register(
"Due on %s" : "Рок је %s",
"WebDAV" : "ВебДАВ",
"WebDAV endpoint" : "WebDAV крајња тачка",
+ "to" : "за",
+ "Monday" : "Понедељак",
+ "Tuesday" : "Уторак",
+ "Wednesday" : "Среда",
+ "Thursday" : "Четвртак",
+ "Friday" : "Петак",
+ "Saturday" : "Субота",
+ "Sunday" : "Недеља",
"Save" : "Сачувај",
"Calendar server" : "Календар сервера",
"Send invitations to attendees" : "Пошаљи позивницу учесницима",
@@ -103,7 +111,7 @@ OC.L10N.register(
"Please contact the organizer directly." : "Контактирајте директно организатора.",
"Are you accepting the invitation?" : "Да ли прихватате позивницу?",
"Tentative" : "Условна потврда",
- "Your attendance was updated successfully." : "Ваше присуство је успешно ажурирано.",
- "Calendar and tasks" : "Календар и задаци"
+ "Comment" : "Коментар",
+ "Your attendance was updated successfully." : "Ваше присуство је успешно ажурирано."
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/dav/l10n/sr.json b/apps/dav/l10n/sr.json
index 566523971be..19749cf34da 100644
--- a/apps/dav/l10n/sr.json
+++ b/apps/dav/l10n/sr.json
@@ -86,6 +86,14 @@
"Due on %s" : "Рок је %s",
"WebDAV" : "ВебДАВ",
"WebDAV endpoint" : "WebDAV крајња тачка",
+ "to" : "за",
+ "Monday" : "Понедељак",
+ "Tuesday" : "Уторак",
+ "Wednesday" : "Среда",
+ "Thursday" : "Четвртак",
+ "Friday" : "Петак",
+ "Saturday" : "Субота",
+ "Sunday" : "Недеља",
"Save" : "Сачувај",
"Calendar server" : "Календар сервера",
"Send invitations to attendees" : "Пошаљи позивницу учесницима",
@@ -101,7 +109,7 @@
"Please contact the organizer directly." : "Контактирајте директно организатора.",
"Are you accepting the invitation?" : "Да ли прихватате позивницу?",
"Tentative" : "Условна потврда",
- "Your attendance was updated successfully." : "Ваше присуство је успешно ажурирано.",
- "Calendar and tasks" : "Календар и задаци"
+ "Comment" : "Коментар",
+ "Your attendance was updated successfully." : "Ваше присуство је успешно ажурирано."
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/sv.js b/apps/dav/l10n/sv.js
index 12f1e2401ac..89ec7716a2e 100644
--- a/apps/dav/l10n/sv.js
+++ b/apps/dav/l10n/sv.js
@@ -119,6 +119,7 @@ OC.L10N.register(
"Completed on %s" : "Slutförd %s",
"Due on %s by %s" : "Slutar den %s vid %s",
"Due on %s" : "Slutar den %s",
+ "Contacts and groups" : "Kontakter och grupper",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV endpoint",
"Availability" : "Tillgänglighet",
@@ -150,7 +151,6 @@ OC.L10N.register(
"Tentative" : "Preliminärt",
"Number of guests" : "Antal gäster",
"Comment" : "Kommentar",
- "Your attendance was updated successfully." : "Dina närvaro uppdaterades.",
- "Calendar and tasks" : "Kalender och uppgifter"
+ "Your attendance was updated successfully." : "Dina närvaro uppdaterades."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/sv.json b/apps/dav/l10n/sv.json
index 66bcc27e82d..1458687f6ee 100644
--- a/apps/dav/l10n/sv.json
+++ b/apps/dav/l10n/sv.json
@@ -117,6 +117,7 @@
"Completed on %s" : "Slutförd %s",
"Due on %s by %s" : "Slutar den %s vid %s",
"Due on %s" : "Slutar den %s",
+ "Contacts and groups" : "Kontakter och grupper",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV endpoint",
"Availability" : "Tillgänglighet",
@@ -148,7 +149,6 @@
"Tentative" : "Preliminärt",
"Number of guests" : "Antal gäster",
"Comment" : "Kommentar",
- "Your attendance was updated successfully." : "Dina närvaro uppdaterades.",
- "Calendar and tasks" : "Kalender och uppgifter"
+ "Your attendance was updated successfully." : "Dina närvaro uppdaterades."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/tr.js b/apps/dav/l10n/tr.js
index aa21694e64e..70d3736f931 100644
--- a/apps/dav/l10n/tr.js
+++ b/apps/dav/l10n/tr.js
@@ -174,7 +174,6 @@ OC.L10N.register(
"Tentative" : "Kesin değil",
"Number of guests" : "Konuk sayısı",
"Comment" : "Yorum",
- "Your attendance was updated successfully." : "Katılımınız güncellendi.",
- "Calendar and tasks" : "Takvim ve görevler"
+ "Your attendance was updated successfully." : "Katılımınız güncellendi."
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/dav/l10n/tr.json b/apps/dav/l10n/tr.json
index b80217bfa8d..b1ba8a73d64 100644
--- a/apps/dav/l10n/tr.json
+++ b/apps/dav/l10n/tr.json
@@ -172,7 +172,6 @@
"Tentative" : "Kesin değil",
"Number of guests" : "Konuk sayısı",
"Comment" : "Yorum",
- "Your attendance was updated successfully." : "Katılımınız güncellendi.",
- "Calendar and tasks" : "Takvim ve görevler"
+ "Your attendance was updated successfully." : "Katılımınız güncellendi."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/uk.js b/apps/dav/l10n/uk.js
index a4d0f470ef0..1f4e0a085be 100644
--- a/apps/dav/l10n/uk.js
+++ b/apps/dav/l10n/uk.js
@@ -79,6 +79,14 @@ OC.L10N.register(
"Untitled task" : "Завдання без назви",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Точка доступу WebDAV",
+ "to" : "до",
+ "Monday" : "понеділок",
+ "Tuesday" : "Вівторок",
+ "Wednesday" : "Середа",
+ "Thursday" : "Четвер",
+ "Friday" : "П'ятниця",
+ "Saturday" : "Субота",
+ "Sunday" : "Неділя",
"Save" : "Зберегти",
"Calendar server" : "Сервер календаря",
"Send invitations to attendees" : "Надіслати запрошення учасникам",
@@ -94,6 +102,7 @@ OC.L10N.register(
"Please contact the organizer directly." : "Будь-ласка повідомте організатора.",
"Are you accepting the invitation?" : "Чи приймаєте ви запрошення?",
"Tentative" : "Попередній",
+ "Comment" : "Коментар",
"Your attendance was updated successfully." : "Ваша участь успішно оновлена."
},
"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);");
diff --git a/apps/dav/l10n/uk.json b/apps/dav/l10n/uk.json
index 17400f8c4eb..177d7e8f2b0 100644
--- a/apps/dav/l10n/uk.json
+++ b/apps/dav/l10n/uk.json
@@ -77,6 +77,14 @@
"Untitled task" : "Завдання без назви",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Точка доступу WebDAV",
+ "to" : "до",
+ "Monday" : "понеділок",
+ "Tuesday" : "Вівторок",
+ "Wednesday" : "Середа",
+ "Thursday" : "Четвер",
+ "Friday" : "П'ятниця",
+ "Saturday" : "Субота",
+ "Sunday" : "Неділя",
"Save" : "Зберегти",
"Calendar server" : "Сервер календаря",
"Send invitations to attendees" : "Надіслати запрошення учасникам",
@@ -92,6 +100,7 @@
"Please contact the organizer directly." : "Будь-ласка повідомте організатора.",
"Are you accepting the invitation?" : "Чи приймаєте ви запрошення?",
"Tentative" : "Попередній",
+ "Comment" : "Коментар",
"Your attendance was updated successfully." : "Ваша участь успішно оновлена."
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (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/dav/l10n/zh_CN.js b/apps/dav/l10n/zh_CN.js
index 31f4f880c41..64dea9f2d17 100644
--- a/apps/dav/l10n/zh_CN.js
+++ b/apps/dav/l10n/zh_CN.js
@@ -119,6 +119,7 @@ OC.L10N.register(
"Completed on %s" : "已完成 %s",
"Due on %s by %s" : "到期于%s ,在%s之前",
"Due on %s" : "到期于%s",
+ "Contacts and groups" : "联系人和群组",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV端点",
"Availability" : "可用性",
@@ -152,7 +153,6 @@ OC.L10N.register(
"Tentative" : "暂定",
"Number of guests" : "客人数目",
"Comment" : "备注",
- "Your attendance was updated successfully." : "您的出席状态更新成功。",
- "Calendar and tasks" : "日历和任务"
+ "Your attendance was updated successfully." : "您的出席状态更新成功。"
},
"nplurals=1; plural=0;");
diff --git a/apps/dav/l10n/zh_CN.json b/apps/dav/l10n/zh_CN.json
index 51a1b9bccb7..44f361cbedc 100644
--- a/apps/dav/l10n/zh_CN.json
+++ b/apps/dav/l10n/zh_CN.json
@@ -117,6 +117,7 @@
"Completed on %s" : "已完成 %s",
"Due on %s by %s" : "到期于%s ,在%s之前",
"Due on %s" : "到期于%s",
+ "Contacts and groups" : "联系人和群组",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV端点",
"Availability" : "可用性",
@@ -150,7 +151,6 @@
"Tentative" : "暂定",
"Number of guests" : "客人数目",
"Comment" : "备注",
- "Your attendance was updated successfully." : "您的出席状态更新成功。",
- "Calendar and tasks" : "日历和任务"
+ "Your attendance was updated successfully." : "您的出席状态更新成功。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/dav/l10n/zh_HK.js b/apps/dav/l10n/zh_HK.js
index c740ec89960..737d7491564 100644
--- a/apps/dav/l10n/zh_HK.js
+++ b/apps/dav/l10n/zh_HK.js
@@ -137,6 +137,7 @@ OC.L10N.register(
"Due on %s by %s" : "完成日期為 %s %s",
"Due on %s" : "完成日期 %s",
"Migrated calendar (%1$s)" : "遷移的日曆(%1$s)",
+ "Calendars including events, details and attendees" : "日曆,包括活動、詳細信息和與會者",
"Contacts and groups" : "聯絡人和群組",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV 端點",
@@ -173,7 +174,6 @@ OC.L10N.register(
"Tentative" : "暫定",
"Number of guests" : "訪客数目",
"Comment" : "留言",
- "Your attendance was updated successfully." : "您的參與狀況成功更新",
- "Calendar and tasks" : "日曆和任務"
+ "Your attendance was updated successfully." : "您的參與狀況成功更新"
},
"nplurals=1; plural=0;");
diff --git a/apps/dav/l10n/zh_HK.json b/apps/dav/l10n/zh_HK.json
index b90fd32b859..4e48e518ae6 100644
--- a/apps/dav/l10n/zh_HK.json
+++ b/apps/dav/l10n/zh_HK.json
@@ -135,6 +135,7 @@
"Due on %s by %s" : "完成日期為 %s %s",
"Due on %s" : "完成日期 %s",
"Migrated calendar (%1$s)" : "遷移的日曆(%1$s)",
+ "Calendars including events, details and attendees" : "日曆,包括活動、詳細信息和與會者",
"Contacts and groups" : "聯絡人和群組",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV 端點",
@@ -171,7 +172,6 @@
"Tentative" : "暫定",
"Number of guests" : "訪客数目",
"Comment" : "留言",
- "Your attendance was updated successfully." : "您的參與狀況成功更新",
- "Calendar and tasks" : "日曆和任務"
+ "Your attendance was updated successfully." : "您的參與狀況成功更新"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/dav/l10n/zh_TW.js b/apps/dav/l10n/zh_TW.js
index 414eaad4c01..b0d273abc34 100644
--- a/apps/dav/l10n/zh_TW.js
+++ b/apps/dav/l10n/zh_TW.js
@@ -174,7 +174,6 @@ OC.L10N.register(
"Tentative" : "暫定",
"Number of guests" : "訪客數量",
"Comment" : "留言",
- "Your attendance was updated successfully." : "您的參與狀態成功更新。",
- "Calendar and tasks" : "日曆與工作項目"
+ "Your attendance was updated successfully." : "您的參與狀態成功更新。"
},
"nplurals=1; plural=0;");
diff --git a/apps/dav/l10n/zh_TW.json b/apps/dav/l10n/zh_TW.json
index 29dd4133fc5..09330f45a9c 100644
--- a/apps/dav/l10n/zh_TW.json
+++ b/apps/dav/l10n/zh_TW.json
@@ -172,7 +172,6 @@
"Tentative" : "暫定",
"Number of guests" : "訪客數量",
"Comment" : "留言",
- "Your attendance was updated successfully." : "您的參與狀態成功更新。",
- "Calendar and tasks" : "日曆與工作項目"
+ "Your attendance was updated successfully." : "您的參與狀態成功更新。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/dav/lib/AppInfo/Application.php b/apps/dav/lib/AppInfo/Application.php
index 8c7f21698a1..580918a6450 100644
--- a/apps/dav/lib/AppInfo/Application.php
+++ b/apps/dav/lib/AppInfo/Application.php
@@ -89,10 +89,10 @@ use OCP\AppFramework\Bootstrap\IRegistrationContext;
use OCP\AppFramework\IAppContainer;
use OCP\Calendar\IManager as ICalendarManager;
use OCP\Contacts\IManager as IContactsManager;
-use OCP\ILogger;
use OCP\IServerContainer;
use OCP\IUser;
use Psr\Container\ContainerInterface;
+use Psr\Log\LoggerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
use Throwable;
@@ -113,7 +113,7 @@ class Application extends App implements IBootstrap {
return new PhotoCache(
$server->getAppDataDir('dav-photocache'),
- $c->get(ILogger::class)
+ $c->get(LoggerInterface::class)
);
});
@@ -325,7 +325,7 @@ class Application extends App implements IBootstrap {
$job->run([]);
$serverContainer->getJobList()->setLastRun($job);
} catch (Exception $ex) {
- $serverContainer->getLogger()->logException($ex);
+ $serverContainer->get(LoggerInterface::class)->error($ex->getMessage(), ['exception' => $ex]);
}
};
@@ -379,13 +379,13 @@ class Application extends App implements IBootstrap {
}
public function registerCalendarReminders(NotificationProviderManager $manager,
- ILogger $logger): void {
+ LoggerInterface $logger): void {
try {
$manager->registerProvider(AudioProvider::class);
$manager->registerProvider(EmailProvider::class);
$manager->registerProvider(PushProvider::class);
} catch (Throwable $ex) {
- $logger->logException($ex);
+ $logger->error($ex->getMessage(), ['exception' => $ex]);
}
}
}
diff --git a/apps/dav/lib/BackgroundJob/BuildReminderIndexBackgroundJob.php b/apps/dav/lib/BackgroundJob/BuildReminderIndexBackgroundJob.php
index 3d4e4dd5e6b..7f1e78248d3 100644
--- a/apps/dav/lib/BackgroundJob/BuildReminderIndexBackgroundJob.php
+++ b/apps/dav/lib/BackgroundJob/BuildReminderIndexBackgroundJob.php
@@ -32,7 +32,7 @@ use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\IJobList;
use OCP\BackgroundJob\QueuedJob;
use OCP\IDBConnection;
-use OCP\ILogger;
+use Psr\Log\LoggerInterface;
/**
* Class BuildReminderIndexBackgroundJob
@@ -47,8 +47,7 @@ class BuildReminderIndexBackgroundJob extends QueuedJob {
/** @var ReminderService */
private $reminderService;
- /** @var ILogger */
- private $logger;
+ private LoggerInterface $logger;
/** @var IJobList */
private $jobList;
@@ -58,16 +57,10 @@ class BuildReminderIndexBackgroundJob extends QueuedJob {
/**
* BuildReminderIndexBackgroundJob constructor.
- *
- * @param IDBConnection $db
- * @param ReminderService $reminderService
- * @param ILogger $logger
- * @param IJobList $jobList
- * @param ITimeFactory $timeFactory
*/
public function __construct(IDBConnection $db,
ReminderService $reminderService,
- ILogger $logger,
+ LoggerInterface $logger,
IJobList $jobList,
ITimeFactory $timeFactory) {
parent::__construct($timeFactory);
@@ -126,7 +119,7 @@ class BuildReminderIndexBackgroundJob extends QueuedJob {
try {
$this->reminderService->onCalendarObjectCreate($row);
} catch (\Exception $ex) {
- $this->logger->logException($ex);
+ $this->logger->error($ex->getMessage(), ['exception' => $ex]);
}
if (($this->timeFactory->getTime() - $startTime) > 15) {
diff --git a/apps/dav/lib/CalDAV/CalDavBackend.php b/apps/dav/lib/CalDAV/CalDavBackend.php
index f0d332adab5..3253d41a5cd 100644
--- a/apps/dav/lib/CalDAV/CalDavBackend.php
+++ b/apps/dav/lib/CalDAV/CalDavBackend.php
@@ -69,10 +69,10 @@ use OCP\EventDispatcher\IEventDispatcher;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\IGroupManager;
-use OCP\ILogger;
use OCP\IUser;
use OCP\IUserManager;
use OCP\Security\ISecureRandom;
+use Psr\Log\LoggerInterface;
use RuntimeException;
use Sabre\CalDAV\Backend\AbstractBackend;
use Sabre\CalDAV\Backend\SchedulingSupport;
@@ -220,8 +220,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
/** @var ISecureRandom */
private $random;
- /** @var ILogger */
- private $logger;
+ private LoggerInterface $logger;
/** @var IEventDispatcher */
private $dispatcher;
@@ -240,23 +239,13 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
/**
* CalDavBackend constructor.
- *
- * @param IDBConnection $db
- * @param Principal $principalBackend
- * @param IUserManager $userManager
- * @param IGroupManager $groupManager
- * @param ISecureRandom $random
- * @param ILogger $logger
- * @param IEventDispatcher $dispatcher
- * @param EventDispatcherInterface $legacyDispatcher
- * @param bool $legacyEndpoint
*/
public function __construct(IDBConnection $db,
Principal $principalBackend,
IUserManager $userManager,
IGroupManager $groupManager,
ISecureRandom $random,
- ILogger $logger,
+ LoggerInterface $logger,
IEventDispatcher $dispatcher,
EventDispatcherInterface $legacyDispatcher,
IConfig $config,
@@ -1715,15 +1704,15 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
try {
$matches = $this->validateFilterForObject($row, $filters);
} catch (ParseException $ex) {
- $this->logger->logException($ex, [
+ $this->logger->error('Caught parsing exception for calendar data. This usually indicates invalid calendar data. calendar-id:'.$calendarId.' uri:'.$row['uri'], [
'app' => 'dav',
- 'message' => 'Caught parsing exception for calendar data. This usually indicates invalid calendar data. calendar-id:'.$calendarId.' uri:'.$row['uri']
+ 'exception' => $ex,
]);
continue;
} catch (InvalidDataException $ex) {
- $this->logger->logException($ex, [
+ $this->logger->error('Caught invalid data exception for calendar data. This usually indicates invalid calendar data. calendar-id:'.$calendarId.' uri:'.$row['uri'], [
'app' => 'dav',
- 'message' => 'Caught invalid data exception for calendar data. This usually indicates invalid calendar data. calendar-id:'.$calendarId.' uri:'.$row['uri']
+ 'exception' => $ex,
]);
continue;
}
diff --git a/apps/dav/lib/CalDAV/ICSExportPlugin/ICSExportPlugin.php b/apps/dav/lib/CalDAV/ICSExportPlugin/ICSExportPlugin.php
index ae568720c55..0c76e4f5e10 100644
--- a/apps/dav/lib/CalDAV/ICSExportPlugin/ICSExportPlugin.php
+++ b/apps/dav/lib/CalDAV/ICSExportPlugin/ICSExportPlugin.php
@@ -23,7 +23,7 @@
namespace OCA\DAV\CalDAV\ICSExportPlugin;
use OCP\IConfig;
-use OCP\ILogger;
+use Psr\Log\LoggerInterface;
use Sabre\HTTP\ResponseInterface;
use Sabre\VObject\DateTimeParser;
use Sabre\VObject\InvalidDataException;
@@ -39,18 +39,15 @@ class ICSExportPlugin extends \Sabre\CalDAV\ICSExportPlugin {
/** @var IConfig */
private $config;
- /** @var ILogger */
- private $logger;
+ private LoggerInterface $logger;
/** @var string */
private const DEFAULT_REFRESH_INTERVAL = 'PT4H';
/**
* ICSExportPlugin constructor.
- *
- * @param IConfig $config
*/
- public function __construct(IConfig $config, ILogger $logger) {
+ public function __construct(IConfig $config, LoggerInterface $logger) {
$this->config = $config;
$this->logger = $logger;
}
diff --git a/apps/dav/lib/CalDAV/InvitationResponse/InvitationResponseServer.php b/apps/dav/lib/CalDAV/InvitationResponse/InvitationResponseServer.php
index 5317dc1b169..c8da92c8277 100644
--- a/apps/dav/lib/CalDAV/InvitationResponse/InvitationResponseServer.php
+++ b/apps/dav/lib/CalDAV/InvitationResponse/InvitationResponseServer.php
@@ -35,6 +35,7 @@ use OCA\DAV\Connector\Sabre\DavAclPlugin;
use OCA\DAV\Events\SabrePluginAuthInitEvent;
use OCA\DAV\RootCollection;
use OCP\EventDispatcher\IEventDispatcher;
+use Psr\Log\LoggerInterface;
use Sabre\VObject\ITip\Message;
class InvitationResponseServer {
@@ -47,7 +48,7 @@ class InvitationResponseServer {
*/
public function __construct(bool $public = true) {
$baseUri = \OC::$WEBROOT . '/remote.php/dav/';
- $logger = \OC::$server->getLogger();
+ $logger = \OC::$server->get(LoggerInterface::class);
/** @var IEventDispatcher $dispatcher */
$dispatcher = \OC::$server->query(IEventDispatcher::class);
diff --git a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/AbstractProvider.php b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/AbstractProvider.php
index 044e5fac4e2..49cf36f98ac 100644
--- a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/AbstractProvider.php
+++ b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/AbstractProvider.php
@@ -32,10 +32,10 @@ namespace OCA\DAV\CalDAV\Reminder\NotificationProvider;
use OCA\DAV\CalDAV\Reminder\INotificationProvider;
use OCP\IConfig;
use OCP\IL10N;
-use OCP\ILogger;
use OCP\IURLGenerator;
use OCP\IUser;
use OCP\L10N\IFactory as L10NFactory;
+use Psr\Log\LoggerInterface;
use Sabre\VObject\Component\VEvent;
use Sabre\VObject\DateTimeParser;
use Sabre\VObject\Property;
@@ -50,8 +50,7 @@ abstract class AbstractProvider implements INotificationProvider {
/** @var string */
public const NOTIFICATION_TYPE = '';
- /** @var ILogger */
- protected $logger;
+ protected LoggerInterface $logger;
/** @var L10NFactory */
protected $l10nFactory;
@@ -68,13 +67,7 @@ abstract class AbstractProvider implements INotificationProvider {
/** @var IConfig */
protected $config;
- /**
- * @param ILogger $logger
- * @param L10NFactory $l10nFactory
- * @param IConfig $config
- * @param IUrlGenerator $urlGenerator
- */
- public function __construct(ILogger $logger,
+ public function __construct(LoggerInterface $logger,
L10NFactory $l10nFactory,
IURLGenerator $urlGenerator,
IConfig $config) {
diff --git a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php
index 456b9f8b42d..7e0020b5f55 100644
--- a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php
+++ b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php
@@ -34,11 +34,11 @@ namespace OCA\DAV\CalDAV\Reminder\NotificationProvider;
use DateTime;
use OCP\IConfig;
use OCP\IL10N;
-use OCP\ILogger;
use OCP\IURLGenerator;
use OCP\L10N\IFactory as L10NFactory;
use OCP\Mail\IEMailTemplate;
use OCP\Mail\IMailer;
+use Psr\Log\LoggerInterface;
use Sabre\VObject;
use Sabre\VObject\Component\VEvent;
use Sabre\VObject\Parameter;
@@ -57,16 +57,9 @@ class EmailProvider extends AbstractProvider {
/** @var IMailer */
private $mailer;
- /**
- * @param IConfig $config
- * @param IMailer $mailer
- * @param ILogger $logger
- * @param L10NFactory $l10nFactory
- * @param IUrlGenerator $urlGenerator
- */
public function __construct(IConfig $config,
IMailer $mailer,
- ILogger $logger,
+ LoggerInterface $logger,
L10NFactory $l10nFactory,
IURLGenerator $urlGenerator) {
parent::__construct($logger, $l10nFactory, $urlGenerator, $config);
@@ -133,7 +126,7 @@ class EmailProvider extends AbstractProvider {
$this->logger->error('Unable to deliver message to {failed}', ['app' => 'dav', 'failed' => implode(', ', $failed)]);
}
} catch (\Exception $ex) {
- $this->logger->logException($ex, ['app' => 'dav']);
+ $this->logger->error($ex->getMessage(), ['app' => 'dav', 'exception' => $ex]);
}
}
}
diff --git a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/PushProvider.php b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/PushProvider.php
index fb123960df8..298297fdc38 100644
--- a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/PushProvider.php
+++ b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/PushProvider.php
@@ -32,12 +32,12 @@ namespace OCA\DAV\CalDAV\Reminder\NotificationProvider;
use OCA\DAV\AppInfo\Application;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\IConfig;
-use OCP\ILogger;
use OCP\IURLGenerator;
use OCP\IUser;
use OCP\L10N\IFactory as L10NFactory;
use OCP\Notification\IManager;
use OCP\Notification\INotification;
+use Psr\Log\LoggerInterface;
use Sabre\VObject\Component\VEvent;
use Sabre\VObject\Property;
@@ -57,17 +57,9 @@ class PushProvider extends AbstractProvider {
/** @var ITimeFactory */
private $timeFactory;
- /**
- * @param IConfig $config
- * @param IManager $manager
- * @param ILogger $logger
- * @param L10NFactory $l10nFactory
- * @param IUrlGenerator $urlGenerator
- * @param ITimeFactory $timeFactory
- */
public function __construct(IConfig $config,
IManager $manager,
- ILogger $logger,
+ LoggerInterface $logger,
L10NFactory $l10nFactory,
IURLGenerator $urlGenerator,
ITimeFactory $timeFactory) {
diff --git a/apps/dav/lib/CalDAV/Reminder/ReminderService.php b/apps/dav/lib/CalDAV/Reminder/ReminderService.php
index d6901cc4fb0..b33bc8a175a 100644
--- a/apps/dav/lib/CalDAV/Reminder/ReminderService.php
+++ b/apps/dav/lib/CalDAV/Reminder/ReminderService.php
@@ -44,6 +44,7 @@ use Sabre\VObject\Component\VEvent;
use Sabre\VObject\InvalidDataException;
use Sabre\VObject\ParseException;
use Sabre\VObject\Recur\EventIterator;
+use Sabre\VObject\Recur\MaxInstancesExceededException;
use Sabre\VObject\Recur\NoInstancesException;
use function strcasecmp;
@@ -247,6 +248,10 @@ class ReminderService {
// instance. We are skipping this event from the output
// entirely.
return;
+ } catch (MaxInstancesExceededException $e) {
+ // The event has more than 3500 recurring-instances
+ // so we can ignore it
+ return;
}
while ($iterator->valid() && count($processedAlarms) < count($masterAlarms)) {
diff --git a/apps/dav/lib/CalDAV/ResourceBooking/AbstractPrincipalBackend.php b/apps/dav/lib/CalDAV/ResourceBooking/AbstractPrincipalBackend.php
index aebb5a24f0e..6fd69b7e3df 100644
--- a/apps/dav/lib/CalDAV/ResourceBooking/AbstractPrincipalBackend.php
+++ b/apps/dav/lib/CalDAV/ResourceBooking/AbstractPrincipalBackend.php
@@ -33,8 +33,8 @@ use OCP\DB\Exception;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
use OCP\IGroupManager;
-use OCP\ILogger;
use OCP\IUserSession;
+use Psr\Log\LoggerInterface;
use Sabre\DAV\PropPatch;
use Sabre\DAVACL\PrincipalBackend\BackendInterface;
use function array_intersect;
@@ -54,8 +54,7 @@ abstract class AbstractPrincipalBackend implements BackendInterface {
/** @var IGroupManager */
private $groupManager;
- /** @var ILogger */
- private $logger;
+ private LoggerInterface $logger;
/** @var ProxyMapper */
private $proxyMapper;
@@ -75,19 +74,10 @@ abstract class AbstractPrincipalBackend implements BackendInterface {
/** @var string */
private $cuType;
- /**
- * @param IDBConnection $dbConnection
- * @param IUserSession $userSession
- * @param IGroupManager $groupManager
- * @param ILogger $logger
- * @param string $principalPrefix
- * @param string $dbPrefix
- * @param string $cuType
- */
public function __construct(IDBConnection $dbConnection,
IUserSession $userSession,
IGroupManager $groupManager,
- ILogger $logger,
+ LoggerInterface $logger,
ProxyMapper $proxyMapper,
string $principalPrefix,
string $dbPrefix,
diff --git a/apps/dav/lib/CalDAV/ResourceBooking/ResourcePrincipalBackend.php b/apps/dav/lib/CalDAV/ResourceBooking/ResourcePrincipalBackend.php
index 65203e24da5..20fdadbca0c 100644
--- a/apps/dav/lib/CalDAV/ResourceBooking/ResourcePrincipalBackend.php
+++ b/apps/dav/lib/CalDAV/ResourceBooking/ResourcePrincipalBackend.php
@@ -25,8 +25,8 @@ namespace OCA\DAV\CalDAV\ResourceBooking;
use OCA\DAV\CalDAV\Proxy\ProxyMapper;
use OCP\IDBConnection;
use OCP\IGroupManager;
-use OCP\ILogger;
use OCP\IUserSession;
+use Psr\Log\LoggerInterface;
/**
* Class ResourcePrincipalBackend
@@ -37,17 +37,11 @@ class ResourcePrincipalBackend extends AbstractPrincipalBackend {
/**
* ResourcePrincipalBackend constructor.
- *
- * @param IDBConnection $dbConnection
- * @param IUserSession $userSession
- * @param IGroupManager $groupManager
- * @param ILogger $logger
- * @param ProxyMapper $proxyMapper
*/
public function __construct(IDBConnection $dbConnection,
IUserSession $userSession,
IGroupManager $groupManager,
- ILogger $logger,
+ LoggerInterface $logger,
ProxyMapper $proxyMapper) {
parent::__construct($dbConnection, $userSession, $groupManager, $logger,
$proxyMapper, 'principals/calendar-resources', 'resource', 'RESOURCE');
diff --git a/apps/dav/lib/CalDAV/ResourceBooking/RoomPrincipalBackend.php b/apps/dav/lib/CalDAV/ResourceBooking/RoomPrincipalBackend.php
index ca78ebd4bc4..931635d632f 100644
--- a/apps/dav/lib/CalDAV/ResourceBooking/RoomPrincipalBackend.php
+++ b/apps/dav/lib/CalDAV/ResourceBooking/RoomPrincipalBackend.php
@@ -25,8 +25,8 @@ namespace OCA\DAV\CalDAV\ResourceBooking;
use OCA\DAV\CalDAV\Proxy\ProxyMapper;
use OCP\IDBConnection;
use OCP\IGroupManager;
-use OCP\ILogger;
use OCP\IUserSession;
+use Psr\Log\LoggerInterface;
/**
* Class RoomPrincipalBackend
@@ -37,17 +37,11 @@ class RoomPrincipalBackend extends AbstractPrincipalBackend {
/**
* RoomPrincipalBackend constructor.
- *
- * @param IDBConnection $dbConnection
- * @param IUserSession $userSession
- * @param IGroupManager $groupManager
- * @param ILogger $logger
- * @param ProxyMapper $proxyMapper
*/
public function __construct(IDBConnection $dbConnection,
IUserSession $userSession,
IGroupManager $groupManager,
- ILogger $logger,
+ LoggerInterface $logger,
ProxyMapper $proxyMapper) {
parent::__construct($dbConnection, $userSession, $groupManager, $logger,
$proxyMapper, 'principals/calendar-rooms', 'room', 'ROOM');
diff --git a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php
index 8aacc33bb46..2c7b06a4396 100644
--- a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php
+++ b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php
@@ -39,7 +39,6 @@ use OCP\Defaults;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\IL10N;
-use OCP\ILogger;
use OCP\IURLGenerator;
use OCP\IUserManager;
use OCP\L10N\IFactory as L10NFactory;
@@ -47,6 +46,7 @@ use OCP\Mail\IEMailTemplate;
use OCP\Mail\IMailer;
use OCP\Security\ISecureRandom;
use OCP\Util;
+use Psr\Log\LoggerInterface;
use Sabre\CalDAV\Schedule\IMipPlugin as SabreIMipPlugin;
use Sabre\VObject\Component\VCalendar;
use Sabre\VObject\Component\VEvent;
@@ -81,8 +81,7 @@ class IMipPlugin extends SabreIMipPlugin {
/** @var IMailer */
private $mailer;
- /** @var ILogger */
- private $logger;
+ private LoggerInterface $logger;
/** @var ITimeFactory */
private $timeFactory;
@@ -112,19 +111,8 @@ class IMipPlugin extends SabreIMipPlugin {
public const METHOD_CANCEL = 'cancel';
public const IMIP_INDENT = 15; // Enough for the length of all body bullet items, in all languages
- /**
- * @param IConfig $config
- * @param IMailer $mailer
- * @param ILogger $logger
- * @param ITimeFactory $timeFactory
- * @param L10NFactory $l10nFactory
- * @param IUrlGenerator $urlGenerator
- * @param Defaults $defaults
- * @param ISecureRandom $random
- * @param IDBConnection $db
- * @param string $userId
- */
- public function __construct(IConfig $config, IMailer $mailer, ILogger $logger,
+ public function __construct(IConfig $config, IMailer $mailer,
+ LoggerInterface $logger,
ITimeFactory $timeFactory, L10NFactory $l10nFactory,
IURLGenerator $urlGenerator, Defaults $defaults,
ISecureRandom $random, IDBConnection $db, IUserManager $userManager,
@@ -306,7 +294,7 @@ class IMipPlugin extends SabreIMipPlugin {
$iTipMessage->scheduleStatus = '5.0; EMail delivery failed';
}
} catch (\Exception $ex) {
- $this->logger->logException($ex, ['app' => 'dav']);
+ $this->logger->error($ex->getMessage(), ['app' => 'dav', 'exception' => $ex]);
$iTipMessage->scheduleStatus = '5.0; EMail delivery failed';
}
}
diff --git a/apps/dav/lib/CalDAV/WebcalCaching/RefreshWebcalService.php b/apps/dav/lib/CalDAV/WebcalCaching/RefreshWebcalService.php
index 543d15e0179..49f66735345 100644
--- a/apps/dav/lib/CalDAV/WebcalCaching/RefreshWebcalService.php
+++ b/apps/dav/lib/CalDAV/WebcalCaching/RefreshWebcalService.php
@@ -37,9 +37,9 @@ use OCA\DAV\CalDAV\CalDavBackend;
use OCP\Http\Client\IClientService;
use OCP\Http\Client\LocalServerException;
use OCP\IConfig;
-use OCP\ILogger;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
+use Psr\Log\LoggerInterface;
use Sabre\DAV\Exception\BadRequest;
use Sabre\DAV\PropPatch;
use Sabre\DAV\Xml\Property\Href;
@@ -64,8 +64,7 @@ class RefreshWebcalService {
/** @var IConfig */
private $config;
- /** @var ILogger */
- private $logger;
+ private LoggerInterface $logger;
public const REFRESH_RATE = '{http://apple.com/ns/ical/}refreshrate';
public const STRIP_ALARMS = '{http://calendarserver.org/ns/}subscribed-strip-alarms';
@@ -74,23 +73,17 @@ class RefreshWebcalService {
/**
* RefreshWebcalJob constructor.
- *
- * @param CalDavBackend $calDavBackend
- * @param IClientService $clientService
- * @param IConfig $config
- * @param ILogger $logger
*/
- public function __construct(CalDavBackend $calDavBackend, IClientService $clientService, IConfig $config, ILogger $logger) {
+ public function __construct(CalDavBackend $calDavBackend,
+ IClientService $clientService,
+ IConfig $config,
+ LoggerInterface $logger) {
$this->calDavBackend = $calDavBackend;
$this->clientService = $clientService;
$this->config = $config;
$this->logger = $logger;
}
- /**
- * @param string $principalUri
- * @param string $uri
- */
public function refreshSubscription(string $principalUri, string $uri) {
$subscription = $this->getSubscription($principalUri, $uri);
$mutations = [];
@@ -143,7 +136,7 @@ class RefreshWebcalService {
try {
$this->calDavBackend->createCalendarObject($subscription['id'], $uri, $calendarData, CalDavBackend::CALENDAR_TYPE_SUBSCRIPTION);
} catch (NoInstancesException | BadRequest $ex) {
- $this->logger->logException($ex);
+ $this->logger->error($ex->getMessage(), ['exception' => $ex]);
}
}
@@ -156,8 +149,7 @@ class RefreshWebcalService {
} catch (ParseException $ex) {
$subscriptionId = $subscription['id'];
- $this->logger->logException($ex);
- $this->logger->warning("Subscription $subscriptionId could not be refreshed due to a parsing error");
+ $this->logger->error("Subscription $subscriptionId could not be refreshed due to a parsing error", ['exception' => $ex]);
}
}
@@ -279,16 +271,14 @@ class RefreshWebcalService {
return $vCalendar->serialize();
}
} catch (LocalServerException $ex) {
- $this->logger->logException($ex, [
- 'message' => "Subscription $subscriptionId was not refreshed because it violates local access rules",
- 'level' => ILogger::WARN,
+ $this->logger->warning("Subscription $subscriptionId was not refreshed because it violates local access rules", [
+ 'exception' => $ex,
]);
return null;
} catch (Exception $ex) {
- $this->logger->logException($ex, [
- 'message' => "Subscription $subscriptionId could not be refreshed due to a network error",
- 'level' => ILogger::WARN,
+ $this->logger->warning("Subscription $subscriptionId could not be refreshed due to a network error", [
+ 'exception' => $ex,
]);
return null;
diff --git a/apps/dav/lib/CardDAV/PhotoCache.php b/apps/dav/lib/CardDAV/PhotoCache.php
index d3e4b2450d3..66391b268a6 100644
--- a/apps/dav/lib/CardDAV/PhotoCache.php
+++ b/apps/dav/lib/CardDAV/PhotoCache.php
@@ -34,7 +34,7 @@ use OCP\Files\NotFoundException;
use OCP\Files\NotPermittedException;
use OCP\Files\SimpleFS\ISimpleFile;
use OCP\Files\SimpleFS\ISimpleFolder;
-use OCP\ILogger;
+use Psr\Log\LoggerInterface;
use Sabre\CardDAV\Card;
use Sabre\VObject\Document;
use Sabre\VObject\Parameter;
@@ -54,16 +54,12 @@ class PhotoCache {
/** @var IAppData */
protected $appData;
- /** @var ILogger */
- protected $logger;
+ protected LoggerInterface $logger;
/**
* PhotoCache constructor.
- *
- * @param IAppData $appData
- * @param ILogger $logger
*/
- public function __construct(IAppData $appData, ILogger $logger) {
+ public function __construct(IAppData $appData, LoggerInterface $logger) {
$this->appData = $appData;
$this->logger = $logger;
}
@@ -216,8 +212,8 @@ class PhotoCache {
$vObject = $this->readCard($node->get());
return $this->getPhotoFromVObject($vObject);
} catch (\Exception $e) {
- $this->logger->logException($e, [
- 'message' => 'Exception during vcard photo parsing'
+ $this->logger->error('Exception during vcard photo parsing', [
+ 'exception' => $e
]);
}
return false;
@@ -262,8 +258,8 @@ class PhotoCache {
'body' => $val
];
} catch (\Exception $e) {
- $this->logger->logException($e, [
- 'message' => 'Exception during vcard photo parsing'
+ $this->logger->error('Exception during vcard photo parsing', [
+ 'exception' => $e
]);
}
return false;
diff --git a/apps/dav/lib/CardDAV/SyncService.php b/apps/dav/lib/CardDAV/SyncService.php
index 73bfaf01b60..b93fd94f741 100644
--- a/apps/dav/lib/CardDAV/SyncService.php
+++ b/apps/dav/lib/CardDAV/SyncService.php
@@ -30,9 +30,9 @@ namespace OCA\DAV\CardDAV;
use OC\Accounts\AccountManager;
use OCP\AppFramework\Http;
-use OCP\ILogger;
use OCP\IUser;
use OCP\IUserManager;
+use Psr\Log\LoggerInterface;
use Sabre\DAV\Client;
use Sabre\DAV\Xml\Response\MultiStatus;
use Sabre\DAV\Xml\Service;
@@ -47,8 +47,7 @@ class SyncService {
/** @var IUserManager */
private $userManager;
- /** @var ILogger */
- private $logger;
+ private LoggerInterface $logger;
/** @var array */
private $localSystemAddressBook;
@@ -61,13 +60,11 @@ class SyncService {
/**
* SyncService constructor.
- *
- * @param CardDavBackend $backend
- * @param IUserManager $userManager
- * @param ILogger $logger
- * @param AccountManager $accountManager
*/
- public function __construct(CardDavBackend $backend, IUserManager $userManager, ILogger $logger, Converter $converter) {
+ public function __construct(CardDavBackend $backend,
+ IUserManager $userManager,
+ LoggerInterface $logger,
+ Converter $converter) {
$this->backend = $backend;
$this->userManager = $userManager;
$this->logger = $logger;
diff --git a/apps/dav/lib/Command/CreateCalendar.php b/apps/dav/lib/Command/CreateCalendar.php
index 1d818809245..2bea82a345e 100644
--- a/apps/dav/lib/Command/CreateCalendar.php
+++ b/apps/dav/lib/Command/CreateCalendar.php
@@ -34,6 +34,7 @@ use OCP\IConfig;
use OCP\IDBConnection;
use OCP\IGroupManager;
use OCP\IUserManager;
+use Psr\Log\LoggerInterface;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
@@ -91,7 +92,7 @@ class CreateCalendar extends Command {
\OC::$server->getL10NFactory(),
);
$random = \OC::$server->getSecureRandom();
- $logger = \OC::$server->getLogger();
+ $logger = \OC::$server->get(LoggerInterface::class);
$dispatcher = \OC::$server->get(IEventDispatcher::class);
$legacyDispatcher = \OC::$server->getEventDispatcher();
$config = \OC::$server->get(IConfig::class);
diff --git a/apps/dav/lib/Comments/CommentNode.php b/apps/dav/lib/Comments/CommentNode.php
index af76027671e..b41dbc276e8 100644
--- a/apps/dav/lib/Comments/CommentNode.php
+++ b/apps/dav/lib/Comments/CommentNode.php
@@ -26,9 +26,9 @@ namespace OCA\DAV\Comments;
use OCP\Comments\IComment;
use OCP\Comments\ICommentsManager;
use OCP\Comments\MessageTooLongException;
-use OCP\ILogger;
use OCP\IUserManager;
use OCP\IUserSession;
+use Psr\Log\LoggerInterface;
use Sabre\DAV\Exception\BadRequest;
use Sabre\DAV\Exception\Forbidden;
use Sabre\DAV\Exception\MethodNotAllowed;
@@ -52,8 +52,7 @@ class CommentNode implements \Sabre\DAV\INode, \Sabre\DAV\IProperties {
/** @var ICommentsManager */
protected $commentsManager;
- /** @var ILogger */
- protected $logger;
+ protected LoggerInterface $logger;
/** @var array list of properties with key being their name and value their setter */
protected $properties = [];
@@ -66,19 +65,13 @@ class CommentNode implements \Sabre\DAV\INode, \Sabre\DAV\IProperties {
/**
* CommentNode constructor.
- *
- * @param ICommentsManager $commentsManager
- * @param IComment $comment
- * @param IUserManager $userManager
- * @param IUserSession $userSession
- * @param ILogger $logger
*/
public function __construct(
ICommentsManager $commentsManager,
IComment $comment,
IUserManager $userManager,
IUserSession $userSession,
- ILogger $logger
+ LoggerInterface $logger
) {
$this->commentsManager = $commentsManager;
$this->comment = $comment;
@@ -194,7 +187,7 @@ class CommentNode implements \Sabre\DAV\INode, \Sabre\DAV\IProperties {
$this->commentsManager->save($this->comment);
return true;
} catch (\Exception $e) {
- $this->logger->logException($e, ['app' => 'dav/comments']);
+ $this->logger->error($e->getMessage(), ['app' => 'dav/comments', 'exception' => $e]);
if ($e instanceof MessageTooLongException) {
$msg = 'Message exceeds allowed character limit of ';
throw new BadRequest($msg . IComment::MAX_MESSAGE_LENGTH, 0, $e);
@@ -287,7 +280,7 @@ class CommentNode implements \Sabre\DAV\INode, \Sabre\DAV\IProperties {
try {
$displayName = $this->commentsManager->resolveDisplayName($mention['type'], $mention['id']);
} catch (\OutOfBoundsException $e) {
- $this->logger->logException($e);
+ $this->logger->error($e->getMessage(), ['exception' => $e]);
// No displayname, upon client's discretion what to display.
$displayName = '';
}
diff --git a/apps/dav/lib/Comments/EntityCollection.php b/apps/dav/lib/Comments/EntityCollection.php
index d9b06e1240c..164c690afd0 100644
--- a/apps/dav/lib/Comments/EntityCollection.php
+++ b/apps/dav/lib/Comments/EntityCollection.php
@@ -25,9 +25,9 @@ namespace OCA\DAV\Comments;
use OCP\Comments\ICommentsManager;
use OCP\Comments\NotFoundException;
-use OCP\ILogger;
use OCP\IUserManager;
use OCP\IUserSession;
+use Psr\Log\LoggerInterface;
use Sabre\DAV\Exception\NotFound;
use Sabre\DAV\IProperties;
use Sabre\DAV\PropPatch;
@@ -46,8 +46,7 @@ class EntityCollection extends RootCollection implements IProperties {
/** @var string */
protected $id;
- /** @var ILogger */
- protected $logger;
+ protected LoggerInterface $logger;
/**
* @param string $id
@@ -55,7 +54,7 @@ class EntityCollection extends RootCollection implements IProperties {
* @param ICommentsManager $commentsManager
* @param IUserManager $userManager
* @param IUserSession $userSession
- * @param ILogger $logger
+ * @param LoggerInterface $logger
*/
public function __construct(
$id,
@@ -63,7 +62,7 @@ class EntityCollection extends RootCollection implements IProperties {
ICommentsManager $commentsManager,
IUserManager $userManager,
IUserSession $userSession,
- ILogger $logger
+ LoggerInterface $logger
) {
foreach (['id', 'name'] as $property) {
$$property = trim($$property);
diff --git a/apps/dav/lib/Comments/EntityTypeCollection.php b/apps/dav/lib/Comments/EntityTypeCollection.php
index c9df2a068d7..d140a33ec4c 100644
--- a/apps/dav/lib/Comments/EntityTypeCollection.php
+++ b/apps/dav/lib/Comments/EntityTypeCollection.php
@@ -24,9 +24,9 @@
namespace OCA\DAV\Comments;
use OCP\Comments\ICommentsManager;
-use OCP\ILogger;
use OCP\IUserManager;
use OCP\IUserSession;
+use Psr\Log\LoggerInterface;
use Sabre\DAV\Exception\MethodNotAllowed;
use Sabre\DAV\Exception\NotFound;
@@ -43,8 +43,7 @@ use Sabre\DAV\Exception\NotFound;
*/
class EntityTypeCollection extends RootCollection {
- /** @var ILogger */
- protected $logger;
+ protected LoggerInterface $logger;
/** @var IUserManager */
protected $userManager;
@@ -57,7 +56,7 @@ class EntityTypeCollection extends RootCollection {
* @param ICommentsManager $commentsManager
* @param IUserManager $userManager
* @param IUserSession $userSession
- * @param ILogger $logger
+ * @param LoggerInterface $logger
* @param \Closure $childExistsFunction
*/
public function __construct(
@@ -65,7 +64,7 @@ class EntityTypeCollection extends RootCollection {
ICommentsManager $commentsManager,
IUserManager $userManager,
IUserSession $userSession,
- ILogger $logger,
+ LoggerInterface $logger,
\Closure $childExistsFunction
) {
$name = trim($name);
diff --git a/apps/dav/lib/Comments/RootCollection.php b/apps/dav/lib/Comments/RootCollection.php
index e8e890696eb..9832030291e 100644
--- a/apps/dav/lib/Comments/RootCollection.php
+++ b/apps/dav/lib/Comments/RootCollection.php
@@ -26,9 +26,9 @@ namespace OCA\DAV\Comments;
use OCP\Comments\CommentsEntityEvent;
use OCP\Comments\ICommentsManager;
-use OCP\ILogger;
use OCP\IUserManager;
use OCP\IUserSession;
+use Psr\Log\LoggerInterface;
use Sabre\DAV\Exception\Forbidden;
use Sabre\DAV\Exception\NotAuthenticated;
use Sabre\DAV\Exception\NotFound;
@@ -46,8 +46,7 @@ class RootCollection implements ICollection {
/** @var string */
protected $name = 'comments';
- /** @var ILogger */
- protected $logger;
+ protected LoggerInterface $logger;
/** @var IUserManager */
protected $userManager;
@@ -58,19 +57,12 @@ class RootCollection implements ICollection {
/** @var EventDispatcherInterface */
protected $dispatcher;
- /**
- * @param ICommentsManager $commentsManager
- * @param IUserManager $userManager
- * @param IUserSession $userSession
- * @param EventDispatcherInterface $dispatcher
- * @param ILogger $logger
- */
public function __construct(
ICommentsManager $commentsManager,
IUserManager $userManager,
IUserSession $userSession,
EventDispatcherInterface $dispatcher,
- ILogger $logger) {
+ LoggerInterface $logger) {
$this->commentsManager = $commentsManager;
$this->logger = $logger;
$this->userManager = $userManager;
diff --git a/apps/dav/lib/Connector/Sabre/Auth.php b/apps/dav/lib/Connector/Sabre/Auth.php
index df4e3c65ce0..d81a3f9d667 100644
--- a/apps/dav/lib/Connector/Sabre/Auth.php
+++ b/apps/dav/lib/Connector/Sabre/Auth.php
@@ -41,6 +41,7 @@ use OC\User\Session;
use OCA\DAV\Connector\Sabre\Exception\PasswordLoginForbidden;
use OCP\IRequest;
use OCP\ISession;
+use Psr\Log\LoggerInterface;
use Sabre\DAV\Auth\Backend\AbstractBasic;
use Sabre\DAV\Exception\NotAuthenticated;
use Sabre\DAV\Exception\ServiceUnavailable;
@@ -157,7 +158,7 @@ class Auth extends AbstractBasic {
} catch (Exception $e) {
$class = get_class($e);
$msg = $e->getMessage();
- \OC::$server->getLogger()->logException($e);
+ \OC::$server->get(LoggerInterface::class)->error($e->getMessage(), ['exception' => $e]);
throw new ServiceUnavailable("$class: $msg");
}
}
diff --git a/apps/dav/lib/Connector/Sabre/Directory.php b/apps/dav/lib/Connector/Sabre/Directory.php
index 9e0b89596cd..ed98b5050f8 100644
--- a/apps/dav/lib/Connector/Sabre/Directory.php
+++ b/apps/dav/lib/Connector/Sabre/Directory.php
@@ -47,6 +47,7 @@ use OCP\Files\NotPermittedException;
use OCP\Files\StorageNotAvailableException;
use OCP\Lock\ILockingProvider;
use OCP\Lock\LockedException;
+use Psr\Log\LoggerInterface;
use Sabre\DAV\Exception\BadRequest;
use Sabre\DAV\Exception\Locked;
use Sabre\DAV\Exception\NotFound;
@@ -331,6 +332,8 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node implements \Sabre\DAV\ICol
* @return array
*/
public function getQuotaInfo() {
+ /** @var LoggerInterface $logger */
+ $logger = \OC::$server->get(LoggerInterface::class);
if ($this->quotaInfo) {
return $this->quotaInfo;
}
@@ -347,10 +350,13 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node implements \Sabre\DAV\ICol
];
return $this->quotaInfo;
} catch (\OCP\Files\NotFoundException $e) {
+ $logger->warning("error while getting quota into", ['exception' => $e]);
return [0, 0];
} catch (\OCP\Files\StorageNotAvailableException $e) {
+ $logger->warning("error while getting quota into", ['exception' => $e]);
return [0, 0];
} catch (NotPermittedException $e) {
+ $logger->warning("error while getting quota into", ['exception' => $e]);
return [0, 0];
}
}
diff --git a/apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php b/apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php
index b4df1f582db..e89ce3a8037 100644
--- a/apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php
+++ b/apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php
@@ -30,7 +30,7 @@ namespace OCA\DAV\Connector\Sabre;
use OCA\DAV\Connector\Sabre\Exception\FileLocked;
use OCA\DAV\Connector\Sabre\Exception\PasswordLoginForbidden;
use OCP\Files\StorageNotAvailableException;
-use OCP\ILogger;
+use Psr\Log\LoggerInterface;
use Sabre\DAV\Exception\BadRequest;
use Sabre\DAV\Exception\Conflict;
use Sabre\DAV\Exception\Forbidden;
@@ -86,14 +86,13 @@ class ExceptionLoggerPlugin extends \Sabre\DAV\ServerPlugin {
/** @var string */
private $appName;
- /** @var ILogger */
- private $logger;
+ private LoggerInterface $logger;
/**
* @param string $loggerAppName app name to use when logging
- * @param ILogger $logger
+ * @param LoggerInterface $logger
*/
- public function __construct($loggerAppName, $logger) {
+ public function __construct($loggerAppName, LoggerInterface $logger) {
$this->appName = $loggerAppName;
$this->logger = $logger;
}
@@ -119,19 +118,21 @@ class ExceptionLoggerPlugin extends \Sabre\DAV\ServerPlugin {
*/
public function logException(\Throwable $ex) {
$exceptionClass = get_class($ex);
- $level = ILogger::FATAL;
if (isset($this->nonFatalExceptions[$exceptionClass]) ||
(
$exceptionClass === ServiceUnavailable::class &&
$ex->getMessage() === 'System in maintenance mode.'
)
) {
- $level = ILogger::DEBUG;
+ $this->logger->debug($ex->getMessage(), [
+ 'app' => $this->appName,
+ 'exception' => $ex,
+ ]);
+ } else {
+ $this->logger->critical($ex->getMessage(), [
+ 'app' => $this->appName,
+ 'exception' => $ex,
+ ]);
}
-
- $this->logger->logException($ex, [
- 'app' => $this->appName,
- 'level' => $level,
- ]);
}
}
diff --git a/apps/dav/lib/Connector/Sabre/File.php b/apps/dav/lib/Connector/Sabre/File.php
index 6c379984995..37fb109a3bd 100644
--- a/apps/dav/lib/Connector/Sabre/File.php
+++ b/apps/dav/lib/Connector/Sabre/File.php
@@ -63,11 +63,11 @@ use OCP\Files\NotPermittedException;
use OCP\Files\Storage;
use OCP\Files\StorageNotAvailableException;
use OCP\IL10N;
-use OCP\ILogger;
use OCP\L10N\IFactory as IL10NFactory;
use OCP\Lock\ILockingProvider;
use OCP\Lock\LockedException;
use OCP\Share\IManager;
+use Psr\Log\LoggerInterface;
use Sabre\DAV\Exception;
use Sabre\DAV\Exception\BadRequest;
use Sabre\DAV\Exception\Forbidden;
@@ -251,7 +251,7 @@ class File extends Node implements IFile {
} else {
$target = $partStorage->fopen($internalPartPath, 'wb');
if ($target === false) {
- \OC::$server->getLogger()->error('\OC\Files\Filesystem::fopen() failed', ['app' => 'webdav']);
+ \OC::$server->get(LoggerInterface::class)->error('\OC\Files\Filesystem::fopen() failed', ['app' => 'webdav']);
// because we have no clue about the cause we can only throw back a 500/Internal Server Error
throw new Exception($this->l10n->t('Could not write file contents'));
}
@@ -295,13 +295,12 @@ class File extends Node implements IFile {
}
}
} catch (\Exception $e) {
- $context = [];
-
if ($e instanceof LockedException) {
- $context['level'] = ILogger::DEBUG;
+ \OC::$server->get(LoggerInterface::class)->debug($e->getMessage(), ['exception' => $e]);
+ } else {
+ \OC::$server->get(LoggerInterface::class)->error($e->getMessage(), ['exception' => $e]);
}
- \OC::$server->getLogger()->logException($e, $context);
if ($needsPartFile) {
$partStorage->unlink($internalPartPath);
}
@@ -340,7 +339,7 @@ class File extends Node implements IFile {
$renameOkay = $storage->moveFromStorage($partStorage, $internalPartPath, $internalPath);
$fileExists = $storage->file_exists($internalPath);
if ($renameOkay === false || $fileExists === false) {
- \OC::$server->getLogger()->error('renaming part file to final file failed $renameOkay: ' . ($renameOkay ? 'true' : 'false') . ', $fileExists: ' . ($fileExists ? 'true' : 'false') . ')', ['app' => 'webdav']);
+ \OC::$server->get(LoggerInterface::class)->error('renaming part file to final file failed $renameOkay: ' . ($renameOkay ? 'true' : 'false') . ', $fileExists: ' . ($fileExists ? 'true' : 'false') . ')', ['app' => 'webdav']);
throw new Exception($this->l10n->t('Could not rename part file to final file'));
}
} catch (ForbiddenException $ex) {
@@ -626,7 +625,7 @@ class File extends Node implements IFile {
$renameOkay = $targetStorage->moveFromStorage($partStorage, $partInternalPath, $targetInternalPath);
$fileExists = $targetStorage->file_exists($targetInternalPath);
if ($renameOkay === false || $fileExists === false) {
- \OC::$server->getLogger()->error('\OC\Files\Filesystem::rename() failed', ['app' => 'webdav']);
+ \OC::$server->get(LoggerInterface::class)->error('\OC\Files\Filesystem::rename() failed', ['app' => 'webdav']);
// only delete if an error occurred and the target file was already created
if ($fileExists) {
// set to null to avoid double-deletion when handling exception
diff --git a/apps/dav/lib/Connector/Sabre/Principal.php b/apps/dav/lib/Connector/Sabre/Principal.php
index c3f06f95783..94e3978e67d 100644
--- a/apps/dav/lib/Connector/Sabre/Principal.php
+++ b/apps/dav/lib/Connector/Sabre/Principal.php
@@ -270,6 +270,8 @@ class Principal implements BackendInterface {
$limitEnumerationGroup = $this->shareManager->limitEnumerationToGroups();
$limitEnumerationPhone = $this->shareManager->limitEnumerationToPhone();
$allowEnumerationFullMatch = $this->shareManager->allowEnumerationFullMatch();
+ $ignoreSecondDisplayName = $this->shareManager->ignoreSecondDisplayName();
+ $matchEmail = $this->shareManager->matchEmail();
// If sharing is restricted to group members only,
// return only members that have groups in common
@@ -298,7 +300,7 @@ class Principal implements BackendInterface {
switch ($prop) {
case '{http://sabredav.org/ns}email-address':
if (!$allowEnumeration) {
- if ($allowEnumerationFullMatch) {
+ if ($allowEnumerationFullMatch && $matchEmail) {
$users = $this->userManager->getByEmail($value);
} else {
$users = [];
@@ -349,8 +351,9 @@ class Principal implements BackendInterface {
if ($allowEnumerationFullMatch) {
$lowerSearch = strtolower($value);
$users = $this->userManager->searchDisplayName($value, $searchLimit);
- $users = \array_filter($users, static function (IUser $user) use ($lowerSearch) {
- return strtolower($user->getDisplayName()) === $lowerSearch;
+ $users = \array_filter($users, static function (IUser $user) use ($lowerSearch, $ignoreSecondDisplayName) {
+ $lowerDisplayName = strtolower($user->getDisplayName());
+ return $lowerDisplayName === $lowerSearch || ($ignoreSecondDisplayName && trim(preg_replace('/ \(.*\)$/', '', $lowerDisplayName)) === $lowerSearch);
});
} else {
$users = [];
diff --git a/apps/dav/lib/Connector/Sabre/ServerFactory.php b/apps/dav/lib/Connector/Sabre/ServerFactory.php
index b13dbd20ca9..635645ed992 100644
--- a/apps/dav/lib/Connector/Sabre/ServerFactory.php
+++ b/apps/dav/lib/Connector/Sabre/ServerFactory.php
@@ -38,20 +38,19 @@ use OCP\Files\Mount\IMountManager;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\IL10N;
-use OCP\ILogger;
use OCP\IPreview;
use OCP\IRequest;
use OCP\ITagManager;
use OCP\IUserSession;
use OCP\SabrePluginEvent;
+use Psr\Log\LoggerInterface;
use Sabre\DAV\Auth\Plugin;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class ServerFactory {
/** @var IConfig */
private $config;
- /** @var ILogger */
- private $logger;
+ private LoggerInterface $logger;
/** @var IDBConnection */
private $databaseConnection;
/** @var IUserSession */
@@ -69,19 +68,9 @@ class ServerFactory {
/** @var IL10N */
private $l10n;
- /**
- * @param IConfig $config
- * @param ILogger $logger
- * @param IDBConnection $databaseConnection
- * @param IUserSession $userSession
- * @param IMountManager $mountManager
- * @param ITagManager $tagManager
- * @param IRequest $request
- * @param IPreview $previewManager
- */
public function __construct(
IConfig $config,
- ILogger $logger,
+ LoggerInterface $logger,
IDBConnection $databaseConnection,
IUserSession $userSession,
IMountManager $mountManager,
diff --git a/apps/dav/lib/DAV/CustomPropertiesBackend.php b/apps/dav/lib/DAV/CustomPropertiesBackend.php
index 5f512995ce8..acee65cd00d 100644
--- a/apps/dav/lib/DAV/CustomPropertiesBackend.php
+++ b/apps/dav/lib/DAV/CustomPropertiesBackend.php
@@ -54,6 +54,28 @@ class CustomPropertiesBackend implements BackendInterface {
'{http://owncloud.org/ns}dDC',
'{http://owncloud.org/ns}size',
'{http://nextcloud.org/ns}is-encrypted',
+
+ // Currently, returning null from any propfind handler would still trigger the backend,
+ // so we add all known Nextcloud custom properties in here to avoid that
+
+ // text app
+ '{http://nextcloud.org/ns}rich-workspace',
+ '{http://nextcloud.org/ns}rich-workspace-file',
+ // groupfolders
+ '{http://nextcloud.org/ns}acl-enabled',
+ '{http://nextcloud.org/ns}acl-can-manage',
+ '{http://nextcloud.org/ns}acl-list',
+ '{http://nextcloud.org/ns}inherited-acl-list',
+ '{http://nextcloud.org/ns}group-folder-id',
+ // files_lock
+ '{http://nextcloud.org/ns}lock',
+ '{http://nextcloud.org/ns}lock-owner-type',
+ '{http://nextcloud.org/ns}lock-owner',
+ '{http://nextcloud.org/ns}lock-owner-displayname',
+ '{http://nextcloud.org/ns}lock-owner-editor',
+ '{http://nextcloud.org/ns}lock-time',
+ '{http://nextcloud.org/ns}lock-timeout',
+ '{http://nextcloud.org/ns}lock-token',
];
/**
diff --git a/apps/dav/lib/HookManager.php b/apps/dav/lib/HookManager.php
index 1287104fd10..f0fdd5cfd4f 100644
--- a/apps/dav/lib/HookManager.php
+++ b/apps/dav/lib/HookManager.php
@@ -35,6 +35,7 @@ use OCP\Defaults;
use OCP\IUser;
use OCP\IUserManager;
use OCP\Util;
+use Psr\Log\LoggerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class HookManager {
@@ -176,8 +177,8 @@ class HookManager {
'{http://apple.com/ns/ical/}calendar-color' => $this->themingDefaults->getColorPrimary(),
'components' => 'VEVENT'
]);
- } catch (\Exception $ex) {
- \OC::$server->getLogger()->logException($ex);
+ } catch (\Exception $e) {
+ \OC::$server->get(LoggerInterface::class)->error($e->getMessage(), ['exception' => $e]);
}
}
if ($this->cardDav->getAddressBooksForUserCount($principal) === 0) {
@@ -185,8 +186,8 @@ class HookManager {
$this->cardDav->createAddressBook($principal, CardDavBackend::PERSONAL_ADDRESSBOOK_URI, [
'{DAV:}displayname' => CardDavBackend::PERSONAL_ADDRESSBOOK_NAME,
]);
- } catch (\Exception $ex) {
- \OC::$server->getLogger()->logException($ex);
+ } catch (\Exception $e) {
+ \OC::$server->get(LoggerInterface::class)->error($e->getMessage(), ['exception' => $e]);
}
}
}
diff --git a/apps/dav/lib/Migration/CalDAVRemoveEmptyValue.php b/apps/dav/lib/Migration/CalDAVRemoveEmptyValue.php
index 5e575347d95..9b96df2ae1e 100644
--- a/apps/dav/lib/Migration/CalDAVRemoveEmptyValue.php
+++ b/apps/dav/lib/Migration/CalDAVRemoveEmptyValue.php
@@ -28,9 +28,9 @@ use Doctrine\DBAL\Platforms\OraclePlatform;
use OCA\DAV\CalDAV\CalDavBackend;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
-use OCP\ILogger;
use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep;
+use Psr\Log\LoggerInterface;
use Sabre\VObject\InvalidDataException;
class CalDAVRemoveEmptyValue implements IRepairStep {
@@ -41,15 +41,9 @@ class CalDAVRemoveEmptyValue implements IRepairStep {
/** @var CalDavBackend */
private $calDavBackend;
- /** @var ILogger */
- private $logger;
+ private LoggerInterface $logger;
- /**
- * @param IDBConnection $db
- * @param CalDavBackend $calDavBackend
- * @param ILogger $logger
- */
- public function __construct(IDBConnection $db, CalDavBackend $calDavBackend, ILogger $logger) {
+ public function __construct(IDBConnection $db, CalDavBackend $calDavBackend, LoggerInterface $logger) {
$this->db = $db;
$this->calDavBackend = $calDavBackend;
$this->logger = $logger;
diff --git a/apps/dav/lib/RootCollection.php b/apps/dav/lib/RootCollection.php
index 2e5952f6efd..8a11a676609 100644
--- a/apps/dav/lib/RootCollection.php
+++ b/apps/dav/lib/RootCollection.php
@@ -54,8 +54,7 @@ class RootCollection extends SimpleCollection {
public function __construct() {
$l10n = \OC::$server->getL10N('dav');
$random = \OC::$server->getSecureRandom();
- $logger = \OC::$server->getLogger();
- $psrLogger = \OC::$server->get(LoggerInterface::class);
+ $logger = \OC::$server->get(LoggerInterface::class);
$userManager = \OC::$server->getUserManager();
$userSession = \OC::$server->getUserSession();
$groupManager = \OC::$server->getGroupManager();
@@ -109,15 +108,15 @@ class RootCollection extends SimpleCollection {
$legacyDispatcher,
$config
);
- $userCalendarRoot = new CalendarRoot($userPrincipalBackend, $caldavBackend, 'principals/users', $psrLogger);
+ $userCalendarRoot = new CalendarRoot($userPrincipalBackend, $caldavBackend, 'principals/users', $logger);
$userCalendarRoot->disableListing = $disableListing;
- $resourceCalendarRoot = new CalendarRoot($calendarResourcePrincipalBackend, $caldavBackend, 'principals/calendar-resources', $psrLogger);
+ $resourceCalendarRoot = new CalendarRoot($calendarResourcePrincipalBackend, $caldavBackend, 'principals/calendar-resources', $logger);
$resourceCalendarRoot->disableListing = $disableListing;
- $roomCalendarRoot = new CalendarRoot($calendarRoomPrincipalBackend, $caldavBackend, 'principals/calendar-rooms', $psrLogger);
+ $roomCalendarRoot = new CalendarRoot($calendarRoomPrincipalBackend, $caldavBackend, 'principals/calendar-rooms', $logger);
$roomCalendarRoot->disableListing = $disableListing;
- $publicCalendarRoot = new PublicCalendarRoot($caldavBackend, $l10n, $config, $psrLogger);
+ $publicCalendarRoot = new PublicCalendarRoot($caldavBackend, $l10n, $config, $logger);
$publicCalendarRoot->disableListing = $disableListing;
$systemTagCollection = new SystemTag\SystemTagsByIdCollection(
@@ -137,7 +136,7 @@ class RootCollection extends SimpleCollection {
$userManager,
\OC::$server->getUserSession(),
\OC::$server->getEventDispatcher(),
- \OC::$server->getLogger()
+ $logger
);
$pluginManager = new PluginManager(\OC::$server, \OC::$server->query(IAppManager::class));
diff --git a/apps/dav/lib/Server.php b/apps/dav/lib/Server.php
index 589e6c2bd6c..9791bc6b334 100644
--- a/apps/dav/lib/Server.php
+++ b/apps/dav/lib/Server.php
@@ -34,13 +34,8 @@
*/
namespace OCA\DAV;
-use OCA\DAV\Connector\Sabre\RequestIdHeaderPlugin;
-use OCP\Diagnostics\IEventLogger;
-use OCP\Profiler\IProfiler;
-use OCA\DAV\Profiler\ProfilerPlugin;
-use OCP\AppFramework\Http\Response;
-use Psr\Log\LoggerInterface;
use OCA\DAV\AppInfo\PluginManager;
+use OCA\DAV\BulkUpload\BulkUploadPlugin;
use OCA\DAV\CalDAV\BirthdayService;
use OCA\DAV\CardDAV\HasPhotoPlugin;
use OCA\DAV\CardDAV\ImageExportPlugin;
@@ -62,6 +57,7 @@ use OCA\DAV\Connector\Sabre\FilesPlugin;
use OCA\DAV\Connector\Sabre\FilesReportPlugin;
use OCA\DAV\Connector\Sabre\PropfindCompressionPlugin;
use OCA\DAV\Connector\Sabre\QuotaPlugin;
+use OCA\DAV\Connector\Sabre\RequestIdHeaderPlugin;
use OCA\DAV\Connector\Sabre\SharesPlugin;
use OCA\DAV\Connector\Sabre\TagsPlugin;
use OCA\DAV\DAV\CustomPropertiesBackend;
@@ -69,13 +65,17 @@ use OCA\DAV\DAV\PublicAuth;
use OCA\DAV\Events\SabrePluginAuthInitEvent;
use OCA\DAV\Files\BrowserErrorPagePlugin;
use OCA\DAV\Files\LazySearchBackend;
-use OCA\DAV\BulkUpload\BulkUploadPlugin;
+use OCA\DAV\Profiler\ProfilerPlugin;
use OCA\DAV\Provisioning\Apple\AppleProvisioningPlugin;
use OCA\DAV\SystemTag\SystemTagPlugin;
use OCA\DAV\Upload\ChunkingPlugin;
+use OCP\AppFramework\Http\Response;
+use OCP\Diagnostics\IEventLogger;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IRequest;
+use OCP\Profiler\IProfiler;
use OCP\SabrePluginEvent;
+use Psr\Log\LoggerInterface;
use Sabre\CardDAV\VCFExportPlugin;
use Sabre\DAV\Auth\Plugin;
use Sabre\DAV\UUIDUtil;
@@ -97,7 +97,7 @@ class Server {
$this->request = $request;
$this->baseUri = $baseUri;
- $logger = \OC::$server->getLogger();
+ $logger = \OC::$server->get(LoggerInterface::class);
$dispatcher = \OC::$server->getEventDispatcher();
/** @var IEventDispatcher $newDispatcher */
$newDispatcher = \OC::$server->query(IEventDispatcher::class);
@@ -168,7 +168,7 @@ class Server {
// calendar plugins
if ($this->requestIsForSubtree(['calendars', 'public-calendars', 'system-calendars', 'principals'])) {
$this->server->addPlugin(new \OCA\DAV\CalDAV\Plugin());
- $this->server->addPlugin(new \OCA\DAV\CalDAV\ICSExportPlugin\ICSExportPlugin(\OC::$server->getConfig(), \OC::$server->getLogger()));
+ $this->server->addPlugin(new \OCA\DAV\CalDAV\ICSExportPlugin\ICSExportPlugin(\OC::$server->getConfig(), $logger));
$this->server->addPlugin(new \OCA\DAV\CalDAV\Schedule\Plugin(\OC::$server->getConfig()));
if (\OC::$server->getConfig()->getAppValue('dav', 'sendInvitations', 'yes') === 'yes') {
$this->server->addPlugin(\OC::$server->query(\OCA\DAV\CalDAV\Schedule\IMipPlugin::class));
@@ -195,7 +195,7 @@ class Server {
$this->server->addPlugin(new HasPhotoPlugin());
$this->server->addPlugin(new ImageExportPlugin(new PhotoCache(
\OC::$server->getAppDataDir('dav-photocache'),
- \OC::$server->getLogger())
+ $logger)
));
}
diff --git a/apps/dav/lib/UserMigration/CalendarMigrator.php b/apps/dav/lib/UserMigration/CalendarMigrator.php
index d94e3ec109e..015ce6faa86 100644
--- a/apps/dav/lib/UserMigration/CalendarMigrator.php
+++ b/apps/dav/lib/UserMigration/CalendarMigrator.php
@@ -108,14 +108,7 @@ class CalendarMigrator implements IMigrator {
*/
private function getCalendarExportData(IUser $user, ICalendar $calendar, OutputInterface $output): array {
$userId = $user->getUID();
- $calendarId = $calendar->getKey();
- $calendarInfo = $this->calDavBackend->getCalendarById($calendarId);
-
- if (empty($calendarInfo)) {
- throw new CalendarMigratorException("Invalid info for calendar ID $calendarId");
- }
-
- $uri = $calendarInfo['uri'];
+ $uri = $calendar->getUri();
$path = CalDAVPlugin::CALENDAR_ROOT . "/$userId/$uri";
/**
@@ -227,12 +220,12 @@ class CalendarMigrator implements IMigrator {
try {
/**
- * @var string $name
- * @var VCalendar $vCalendar
- */
+ * @var string $name
+ * @var VCalendar $vCalendar
+ */
foreach ($calendarExports as ['name' => $name, 'vCalendar' => $vCalendar]) {
- // Set filename to sanitized calendar name appended with the date
- $filename = preg_replace('/[^a-zA-Z0-9-_ ]/um', '', $name) . '_' . date('Y-m-d') . CalendarMigrator::FILENAME_EXT;
+ // Set filename to sanitized calendar name
+ $filename = preg_replace('/[^a-z0-9-_]/iu', '', $name) . CalendarMigrator::FILENAME_EXT;
$exportPath = CalendarMigrator::EXPORT_ROOT . $filename;
$exportDestination->addFileContents($exportPath, $vCalendar->serialize());
@@ -445,11 +438,11 @@ class CalendarMigrator implements IMigrator {
throw new CalendarMigratorException("Invalid calendar data contained in \"$importPath\"");
}
- $splitFilename = explode('_', $filename, 2);
+ $splitFilename = explode('.', $filename, 2);
if (count($splitFilename) !== 2) {
- throw new CalendarMigratorException("Invalid filename \"$filename\", expected filename of the format \"<calendar_name>_YYYY-MM-DD" . CalendarMigrator::FILENAME_EXT . '"');
+ throw new CalendarMigratorException("Invalid filename \"$filename\", expected filename of the format \"<calendar_name>" . CalendarMigrator::FILENAME_EXT . '"');
}
- [$initialCalendarUri, $suffix] = $splitFilename;
+ [$initialCalendarUri, $ext] = $splitFilename;
try {
$this->importCalendar(
diff --git a/apps/dav/lib/UserMigration/ContactsMigrator.php b/apps/dav/lib/UserMigration/ContactsMigrator.php
index 065ef05ceea..aed41e5c82f 100644
--- a/apps/dav/lib/UserMigration/ContactsMigrator.php
+++ b/apps/dav/lib/UserMigration/ContactsMigrator.php
@@ -168,7 +168,7 @@ class ContactsMigrator implements IMigrator {
}
$existingAddressBookUris = array_map(
- fn (array $addressBookInfo) => $addressBookInfo['uri'],
+ fn (array $addressBookInfo): string => $addressBookInfo['uri'],
$this->cardDavBackend->getAddressBooksForUser($principalUri),
);
@@ -207,14 +207,14 @@ class ContactsMigrator implements IMigrator {
try {
/**
- * @var string $name
- * @var string $displayName
- * @var ?string $description
- * @var VCard[] $vCards
- */
+ * @var string $name
+ * @var string $displayName
+ * @var ?string $description
+ * @var VCard[] $vCards
+ */
foreach ($addressBookExports as ['name' => $name, 'displayName' => $displayName, 'description' => $description, 'vCards' => $vCards]) {
- // Set filename to sanitized address book name appended with the date
- $basename = preg_replace('/[^a-zA-Z0-9-_ ]/um', '', $name) . '_' . date('Y-m-d');
+ // Set filename to sanitized address book name
+ $basename = preg_replace('/[^a-z0-9-_]/iu', '', $name);
$exportPath = ContactsMigrator::PATH_ROOT . $basename . '.' . ContactsMigrator::FILENAME_EXT;
$metadataExportPath = ContactsMigrator::PATH_ROOT . $basename . '.' . ContactsMigrator::METADATA_EXT;
@@ -340,11 +340,11 @@ class ContactsMigrator implements IMigrator {
$vCards[] = $vCard;
}
- $splitFilename = explode('_', $addressBookFilename, 2);
+ $splitFilename = explode('.', $addressBookFilename, 2);
if (count($splitFilename) !== 2) {
- throw new ContactsMigratorException("Invalid filename \"$addressBookFilename\", expected filename of the format \"<address_book_name>_YYYY-MM-DD." . ContactsMigrator::FILENAME_EXT . '"');
+ throw new ContactsMigratorException("Invalid filename \"$addressBookFilename\", expected filename of the format \"<address_book_name>." . ContactsMigrator::FILENAME_EXT . '"');
}
- [$initialAddressBookUri, $suffix] = $splitFilename;
+ [$initialAddressBookUri, $ext] = $splitFilename;
/** @var array{displayName: string, description?: string} $metadata */
$metadata = json_decode($importSource->getFileContents($metadataImportPath), true, 512, JSON_THROW_ON_ERROR);
diff --git a/apps/dav/tests/integration/UserMigration/CalendarMigratorTest.php b/apps/dav/tests/integration/UserMigration/CalendarMigratorTest.php
index cf0b24e9a69..8c23a30e879 100644
--- a/apps/dav/tests/integration/UserMigration/CalendarMigratorTest.php
+++ b/apps/dav/tests/integration/UserMigration/CalendarMigratorTest.php
@@ -85,7 +85,7 @@ class CalendarMigratorTest extends TestCase {
fn (VObjectProperty $property) => $property->serialize(),
array_values(array_filter(
$vCalendar->children(),
- fn (mixed $child) => $child instanceof VObjectProperty,
+ fn ($child) => $child instanceof VObjectProperty,
)),
);
}
diff --git a/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php b/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php
index c659e2ccc6d..ec966248e01 100644
--- a/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php
+++ b/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php
@@ -34,12 +34,12 @@ use OCP\App\IAppManager;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IConfig;
use OCP\IGroupManager;
-use OCP\ILogger;
use OCP\IUserManager;
use OCP\IUserSession;
use OCP\L10N\IFactory;
use OCP\Security\ISecureRandom;
use OCP\Share\IManager as ShareManager;
+use Psr\Log\LoggerInterface;
use Sabre\CalDAV\Xml\Property\SupportedCalendarComponentSet;
use Sabre\DAV\Xml\Property\Href;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
@@ -70,7 +70,7 @@ abstract class AbstractCalDavBackend extends TestCase {
/** @var ISecureRandom */
private $random;
- /** @var ILogger */
+ /** @var LoggerInterface*/
private $logger;
public const UNIT_TEST_USER = 'principals/users/caldav-unit-test';
@@ -110,7 +110,7 @@ abstract class AbstractCalDavBackend extends TestCase {
$db = \OC::$server->getDatabaseConnection();
$this->random = \OC::$server->getSecureRandom();
- $this->logger = $this->createMock(ILogger::class);
+ $this->logger = $this->createMock(LoggerInterface::class);
$this->config = $this->createMock(IConfig::class);
$this->backend = new CalDavBackend(
$db,
diff --git a/apps/dav/tests/unit/CalDAV/PublicCalendarRootTest.php b/apps/dav/tests/unit/CalDAV/PublicCalendarRootTest.php
index f3f53067d0d..80e43d279dc 100644
--- a/apps/dav/tests/unit/CalDAV/PublicCalendarRootTest.php
+++ b/apps/dav/tests/unit/CalDAV/PublicCalendarRootTest.php
@@ -39,7 +39,6 @@ use OCP\EventDispatcher\IEventDispatcher;
use OCP\IConfig;
use OCP\IGroupManager;
use OCP\IL10N;
-use OCP\ILogger;
use OCP\IUserManager;
use OCP\Security\ISecureRandom;
use Psr\Log\LoggerInterface;
@@ -72,7 +71,7 @@ class PublicCalendarRootTest extends TestCase {
/** @var ISecureRandom */
private $random;
- /** @var ILogger */
+ /** @var LoggerInterface */
private $logger;
protected function setUp(): void {
@@ -83,8 +82,7 @@ class PublicCalendarRootTest extends TestCase {
$this->userManager = $this->createMock(IUserManager::class);
$this->groupManager = $this->createMock(IGroupManager::class);
$this->random = \OC::$server->getSecureRandom();
- $this->logger = $this->createMock(ILogger::class);
- $this->psrLogger = $this->createMock(LoggerInterface::class);
+ $this->logger = $this->createMock(LoggerInterface::class);
$dispatcher = $this->createMock(IEventDispatcher::class);
$legacyDispatcher = $this->createMock(EventDispatcherInterface::class);
$config = $this->createMock(IConfig::class);
@@ -113,7 +111,7 @@ class PublicCalendarRootTest extends TestCase {
$this->config = $this->createMock(IConfig::class);
$this->publicCalendarRoot = new PublicCalendarRoot($this->backend,
- $this->l10n, $this->config, $this->psrLogger);
+ $this->l10n, $this->config, $this->logger);
}
protected function tearDown(): void {
@@ -167,11 +165,11 @@ class PublicCalendarRootTest extends TestCase {
$this->backend->createCalendar(self::UNIT_TEST_USER, 'Example', []);
$calendarInfo = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER)[0];
- $calendar = new PublicCalendar($this->backend, $calendarInfo, $this->l10n, $this->config, $this->psrLogger);
+ $calendar = new PublicCalendar($this->backend, $calendarInfo, $this->l10n, $this->config, $this->logger);
$publicUri = $calendar->setPublishStatus(true);
$calendarInfo = $this->backend->getPublicCalendar($publicUri);
- $calendar = new PublicCalendar($this->backend, $calendarInfo, $this->l10n, $this->config, $this->psrLogger);
+ $calendar = new PublicCalendar($this->backend, $calendarInfo, $this->l10n, $this->config, $this->logger);
return $calendar;
}
diff --git a/apps/dav/tests/unit/CalDAV/Publishing/PublishingTest.php b/apps/dav/tests/unit/CalDAV/Publishing/PublishingTest.php
index 2490bdc3639..1367b2741e6 100644
--- a/apps/dav/tests/unit/CalDAV/Publishing/PublishingTest.php
+++ b/apps/dav/tests/unit/CalDAV/Publishing/PublishingTest.php
@@ -36,7 +36,7 @@ use Sabre\HTTP\Request;
use Sabre\HTTP\Response;
use Test\TestCase;
-class PluginTest extends TestCase {
+class PublishingTest extends TestCase {
/** @var PublishPlugin */
private $plugin;
diff --git a/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/AbstractNotificationProviderTest.php b/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/AbstractNotificationProviderTest.php
index 8335428c6d5..ae272e6b1a9 100644
--- a/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/AbstractNotificationProviderTest.php
+++ b/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/AbstractNotificationProviderTest.php
@@ -30,16 +30,16 @@ namespace OCA\DAV\Tests\unit\CalDAV\Reminder\NotificationProvider;
use OCA\DAV\CalDAV\Reminder\NotificationProvider\AbstractProvider;
use OCP\IConfig;
use OCP\IL10N;
-use OCP\ILogger;
use OCP\IURLGenerator;
use OCP\IUser;
use OCP\L10N\IFactory as L10NFactory;
+use Psr\Log\LoggerInterface;
use Sabre\VObject\Component\VCalendar;
use Test\TestCase;
abstract class AbstractNotificationProviderTest extends TestCase {
- /** @var ILogger|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var LoggerInterface|\PHPUnit\Framework\MockObject\MockObject */
protected $logger;
/** @var L10NFactory|\PHPUnit\Framework\MockObject\MockObject */
@@ -75,7 +75,7 @@ abstract class AbstractNotificationProviderTest extends TestCase {
protected function setUp(): void {
parent::setUp();
- $this->logger = $this->createMock(ILogger::class);
+ $this->logger = $this->createMock(LoggerInterface::class);
$this->l10nFactory = $this->createMock(L10NFactory::class);
$this->l10n = $this->createMock(IL10N::class);
$this->urlGenerator = $this->createMock(IURLGenerator::class);
diff --git a/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/EmailProviderTest.php b/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/EmailProviderTest.php
index 0352827aa5c..6428652ccab 100644
--- a/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/EmailProviderTest.php
+++ b/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/EmailProviderTest.php
@@ -34,7 +34,6 @@ namespace OCA\DAV\Tests\unit\CalDAV\Reminder\NotificationProvider;
use OCA\DAV\CalDAV\Reminder\NotificationProvider\EmailProvider;
use OCP\IConfig;
use OCP\IL10N;
-use OCP\ILogger;
use OCP\IURLGenerator;
use OCP\IUser;
use OCP\L10N\IFactory as L10NFactory;
@@ -47,21 +46,6 @@ use Sabre\VObject\Component\VCalendar;
class EmailProviderTest extends AbstractNotificationProviderTest {
public const USER_EMAIL = 'frodo@hobb.it';
- /** @var ILogger|MockObject */
- protected $logger;
-
- /** @var L10NFactory|MockObject */
- protected $l10nFactory;
-
- /** @var IL10N|MockObject */
- protected $l10n;
-
- /** @var IURLGenerator|MockObject */
- protected $urlGenerator;
-
- /** @var IConfig|MockObject */
- protected $config;
-
/** @var IMailer|MockObject */
private $mailer;
diff --git a/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/PushProviderTest.php b/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/PushProviderTest.php
index 9e9759f5eb8..a62cb98a28f 100644
--- a/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/PushProviderTest.php
+++ b/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/PushProviderTest.php
@@ -33,7 +33,6 @@ use OCA\DAV\CalDAV\Reminder\NotificationProvider\PushProvider;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\IConfig;
use OCP\IL10N;
-use OCP\ILogger;
use OCP\IURLGenerator;
use OCP\IUser;
use OCP\L10N\IFactory as L10NFactory;
@@ -42,21 +41,6 @@ use OCP\Notification\INotification;
class PushProviderTest extends AbstractNotificationProviderTest {
- /** @var ILogger|\PHPUnit\Framework\MockObject\MockObject */
- protected $logger;
-
- /** @var L10NFactory|\PHPUnit\Framework\MockObject\MockObject */
- protected $l10nFactory;
-
- /** @var IL10N|\PHPUnit\Framework\MockObject\MockObject */
- protected $l10n;
-
- /** @var IURLGenerator|\PHPUnit\Framework\MockObject\MockObject */
- protected $urlGenerator;
-
- /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */
- protected $config;
-
/** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
private $manager;
@@ -66,7 +50,6 @@ class PushProviderTest extends AbstractNotificationProviderTest {
protected function setUp(): void {
parent::setUp();
- $this->config = $this->createMock(IConfig::class);
$this->manager = $this->createMock(IManager::class);
$this->timeFactory = $this->createMock(ITimeFactory::class);
diff --git a/apps/dav/tests/unit/CalDAV/ResourceBooking/AbstractPrincipalBackendTest.php b/apps/dav/tests/unit/CalDAV/ResourceBooking/AbstractPrincipalBackendTest.php
index 5f490286347..0fffbc2cd10 100644
--- a/apps/dav/tests/unit/CalDAV/ResourceBooking/AbstractPrincipalBackendTest.php
+++ b/apps/dav/tests/unit/CalDAV/ResourceBooking/AbstractPrincipalBackendTest.php
@@ -28,9 +28,9 @@ namespace OCA\DAV\Tests\unit\CalDAV\ResourceBooking;
use OCA\DAV\CalDAV\Proxy\Proxy;
use OCA\DAV\CalDAV\Proxy\ProxyMapper;
use OCP\IGroupManager;
-use OCP\ILogger;
use OCP\IUser;
use OCP\IUserSession;
+use Psr\Log\LoggerInterface;
use Sabre\DAV\PropPatch;
use Test\TestCase;
@@ -45,7 +45,7 @@ abstract class AbstractPrincipalBackendTest extends TestCase {
/** @var IGroupManager|\PHPUnit\Framework\MockObject\MockObject */
protected $groupManager;
- /** @var ILogger|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var LoggerInterface|\PHPUnit\Framework\MockObject\MockObject */
protected $logger;
/** @var ProxyMapper|\PHPUnit\Framework\MockObject\MockObject */
@@ -71,7 +71,7 @@ abstract class AbstractPrincipalBackendTest extends TestCase {
$this->userSession = $this->createMock(IUserSession::class);
$this->groupManager = $this->createMock(IGroupManager::class);
- $this->logger = $this->createMock(ILogger::class);
+ $this->logger = $this->createMock(LoggerInterface::class);
$this->proxyMapper = $this->createMock(ProxyMapper::class);
}
diff --git a/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php b/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php
index a81aac52fbb..0d8076f7aa4 100644
--- a/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php
+++ b/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php
@@ -36,7 +36,6 @@ use OCP\Defaults;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\IL10N;
-use OCP\ILogger;
use OCP\IURLGenerator;
use OCP\IUser;
use OCP\IUserManager;
@@ -47,6 +46,7 @@ use OCP\Mail\IMailer;
use OCP\Mail\IMessage;
use OCP\Security\ISecureRandom;
use PHPUnit\Framework\MockObject\MockObject;
+use Psr\Log\LoggerInterface;
use Sabre\VObject\Component\VCalendar;
use Sabre\VObject\ITip\Message;
use Test\TestCase;
@@ -95,8 +95,8 @@ class IMipPluginTest extends TestCase {
$this->emailAttachment = $this->createMock(IAttachment::class);
$this->mailer->method('createAttachment')->willReturn($this->emailAttachment);
- /** @var ILogger|MockObject $logger */
- $logger = $this->getMockBuilder(ILogger::class)->disableOriginalConstructor()->getMock();
+ /** @var LoggerInterface|MockObject $logger */
+ $logger = $this->getMockBuilder(LoggerInterface::class)->disableOriginalConstructor()->getMock();
$this->timeFactory = $this->getMockBuilder(ITimeFactory::class)->disableOriginalConstructor()->getMock();
$this->timeFactory->method('getTime')->willReturn(1496912528); // 2017-01-01
diff --git a/apps/dav/tests/unit/CalDAV/WebcalCaching/RefreshWebcalServiceTest.php b/apps/dav/tests/unit/CalDAV/WebcalCaching/RefreshWebcalServiceTest.php
index 12e91345709..6bd1f6b3206 100644
--- a/apps/dav/tests/unit/CalDAV/WebcalCaching/RefreshWebcalServiceTest.php
+++ b/apps/dav/tests/unit/CalDAV/WebcalCaching/RefreshWebcalServiceTest.php
@@ -24,7 +24,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
-namespace OCA\DAV\Tests\unit\BackgroundJob;
+namespace OCA\DAV\Tests\unit\CalDAV\WebcalCaching;
use GuzzleHttp\HandlerStack;
use OCA\DAV\CalDAV\CalDavBackend;
@@ -34,8 +34,8 @@ use OCP\Http\Client\IClientService;
use OCP\Http\Client\IResponse;
use OCP\Http\Client\LocalServerException;
use OCP\IConfig;
-use OCP\ILogger;
use PHPUnit\Framework\MockObject\MockObject;
+use Psr\Log\LoggerInterface;
use Sabre\DAV\Exception\BadRequest;
use Sabre\VObject;
use Sabre\VObject\Recur\NoInstancesException;
@@ -53,7 +53,7 @@ class RefreshWebcalServiceTest extends TestCase {
/** @var IConfig | MockObject */
private $config;
- /** @var ILogger | MockObject */
+ /** @var LoggerInterface | MockObject */
private $logger;
protected function setUp(): void {
@@ -62,7 +62,7 @@ class RefreshWebcalServiceTest extends TestCase {
$this->caldavBackend = $this->createMock(CalDavBackend::class);
$this->clientService = $this->createMock(IClientService::class);
$this->config = $this->createMock(IConfig::class);
- $this->logger = $this->createMock(ILogger::class);
+ $this->logger = $this->createMock(LoggerInterface::class);
}
/**
@@ -144,7 +144,7 @@ class RefreshWebcalServiceTest extends TestCase {
$refreshWebcalService->refreshSubscription('principals/users/testuser', 'sub123');
}
-
+
/**
* @param string $body
* @param string $contentType
@@ -209,15 +209,15 @@ class RefreshWebcalServiceTest extends TestCase {
$this->caldavBackend->expects($this->once())
->method('createCalendarObject')
->with(42, 'uri-1.ics', $result, 1);
-
+
$noInstanceException = new NoInstancesException("can't add calendar object");
$this->caldavBackend->expects($this->once())
->method("createCalendarObject")
->willThrowException($noInstanceException);
-
+
$this->logger->expects($this->once())
- ->method('logException')
- ->with($noInstanceException);
+ ->method('error')
+ ->with($noInstanceException->getMessage(), ['exception' => $noInstanceException]);
$refreshWebcalService->refreshSubscription('principals/users/testuser', 'sub123');
}
@@ -286,15 +286,15 @@ class RefreshWebcalServiceTest extends TestCase {
$this->caldavBackend->expects($this->once())
->method('createCalendarObject')
->with(42, 'uri-1.ics', $result, 1);
-
+
$badRequestException = new BadRequest("can't add reach calendar url");
$this->caldavBackend->expects($this->once())
->method("createCalendarObject")
->willThrowException($badRequestException);
-
+
$this->logger->expects($this->once())
- ->method('logException')
- ->with($badRequestException);
+ ->method('error')
+ ->with($badRequestException->getMessage(), ['exception' => $badRequestException]);
$refreshWebcalService->refreshSubscription('principals/users/testuser', 'sub123');
}
@@ -361,13 +361,14 @@ class RefreshWebcalServiceTest extends TestCase {
->with('dav', 'webcalAllowLocalAccess', 'no')
->willReturn('no');
+ $exception = new LocalServerException();
$client->expects($this->once())
->method('get')
- ->willThrowException(new LocalServerException());
+ ->willThrowException($exception);
$this->logger->expects($this->once())
- ->method('logException')
- ->with($this->isInstanceOf(LocalServerException::class), $this->anything());
+ ->method('warning')
+ ->with($this->anything(), ['exception' => $exception]);
$refreshWebcalService->refreshSubscription('principals/users/testuser', 'sub123');
}
diff --git a/apps/dav/tests/unit/CardDAV/SyncServiceTest.php b/apps/dav/tests/unit/CardDAV/SyncServiceTest.php
index d22a246bbec..58af8a64d0b 100644
--- a/apps/dav/tests/unit/CardDAV/SyncServiceTest.php
+++ b/apps/dav/tests/unit/CardDAV/SyncServiceTest.php
@@ -30,9 +30,9 @@ namespace OCA\DAV\Tests\unit\CardDAV;
use OCA\DAV\CardDAV\CardDavBackend;
use OCA\DAV\CardDAV\Converter;
use OCA\DAV\CardDAV\SyncService;
-use OCP\ILogger;
use OCP\IUser;
use OCP\IUserManager;
+use Psr\Log\LoggerInterface;
use Sabre\VObject\Component\VCard;
use Test\TestCase;
@@ -80,7 +80,7 @@ class SyncServiceTest extends TestCase {
/** @var IUserManager $userManager */
$userManager = $this->getMockBuilder(IUserManager::class)->disableOriginalConstructor()->getMock();
- $logger = $this->getMockBuilder(ILogger::class)->disableOriginalConstructor()->getMock();
+ $logger = $this->getMockBuilder(LoggerInterface::class)->disableOriginalConstructor()->getMock();
$converter = $this->createMock(Converter::class);
$ss = new SyncService($backend, $userManager, $logger, $converter);
@@ -106,7 +106,7 @@ class SyncServiceTest extends TestCase {
public function testUpdateAndDeleteUser($activated, $createCalls, $updateCalls, $deleteCalls) {
/** @var CardDavBackend | \PHPUnit\Framework\MockObject\MockObject $backend */
$backend = $this->getMockBuilder(CardDavBackend::class)->disableOriginalConstructor()->getMock();
- $logger = $this->getMockBuilder(ILogger::class)->disableOriginalConstructor()->getMock();
+ $logger = $this->getMockBuilder(LoggerInterface::class)->disableOriginalConstructor()->getMock();
$backend->expects($this->exactly($createCalls))->method('createCard');
$backend->expects($this->exactly($updateCalls))->method('updateCard');
@@ -166,7 +166,7 @@ class SyncServiceTest extends TestCase {
*/
private function getSyncServiceMock($backend, $response) {
$userManager = $this->getMockBuilder(IUserManager::class)->disableOriginalConstructor()->getMock();
- $logger = $this->getMockBuilder(ILogger::class)->disableOriginalConstructor()->getMock();
+ $logger = $this->getMockBuilder(LoggerInterface::class)->disableOriginalConstructor()->getMock();
$converter = $this->createMock(Converter::class);
/** @var SyncService | \PHPUnit\Framework\MockObject\MockObject $ss */
$ss = $this->getMockBuilder(SyncService::class)
diff --git a/apps/dav/tests/unit/Comments/CommentsNodeTest.php b/apps/dav/tests/unit/Comments/CommentsNodeTest.php
index f085ace9d89..ea3a1952e45 100644
--- a/apps/dav/tests/unit/Comments/CommentsNodeTest.php
+++ b/apps/dav/tests/unit/Comments/CommentsNodeTest.php
@@ -30,10 +30,10 @@ use OCA\DAV\Comments\CommentNode;
use OCP\Comments\IComment;
use OCP\Comments\ICommentsManager;
use OCP\Comments\MessageTooLongException;
-use OCP\ILogger;
use OCP\IUser;
use OCP\IUserManager;
use OCP\IUserSession;
+use Psr\Log\LoggerInterface;
use Sabre\DAV\PropPatch;
class CommentsNodeTest extends \Test\TestCase {
@@ -62,7 +62,7 @@ class CommentsNodeTest extends \Test\TestCase {
$this->userSession = $this->getMockBuilder(IUserSession::class)
->disableOriginalConstructor()
->getMock();
- $this->logger = $this->getMockBuilder(ILogger::class)
+ $this->logger = $this->getMockBuilder(LoggerInterface::class)
->disableOriginalConstructor()
->getMock();
@@ -230,7 +230,7 @@ class CommentsNodeTest extends \Test\TestCase {
->method('save');
$this->logger->expects($this->once())
- ->method('logException');
+ ->method('error');
$this->node->updateComment($msg);
}
@@ -268,7 +268,7 @@ class CommentsNodeTest extends \Test\TestCase {
->method('save');
$this->logger->expects($this->once())
- ->method('logException');
+ ->method('error');
// imagine 'foo' has >1k characters. comment is mocked anyway.
$this->node->updateComment('foo');
diff --git a/apps/dav/tests/unit/Comments/EntityCollectionTest.php b/apps/dav/tests/unit/Comments/EntityCollectionTest.php
index 4466b0a6307..f95dbf839ee 100644
--- a/apps/dav/tests/unit/Comments/EntityCollectionTest.php
+++ b/apps/dav/tests/unit/Comments/EntityCollectionTest.php
@@ -28,9 +28,9 @@ namespace OCA\DAV\Tests\unit\Comments;
use OCA\DAV\Comments\EntityCollection;
use OCP\Comments\IComment;
use OCP\Comments\ICommentsManager;
-use OCP\ILogger;
use OCP\IUserManager;
use OCP\IUserSession;
+use Psr\Log\LoggerInterface;
class EntityCollectionTest extends \Test\TestCase {
@@ -38,7 +38,7 @@ class EntityCollectionTest extends \Test\TestCase {
protected $commentsManager;
/** @var IUserManager|\PHPUnit\Framework\MockObject\MockObject */
protected $userManager;
- /** @var ILogger|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var LoggerInterface|\PHPUnit\Framework\MockObject\MockObject */
protected $logger;
/** @var EntityCollection */
protected $collection;
@@ -57,7 +57,7 @@ class EntityCollectionTest extends \Test\TestCase {
$this->userSession = $this->getMockBuilder(IUserSession::class)
->disableOriginalConstructor()
->getMock();
- $this->logger = $this->getMockBuilder(ILogger::class)
+ $this->logger = $this->getMockBuilder(LoggerInterface::class)
->disableOriginalConstructor()
->getMock();
diff --git a/apps/dav/tests/unit/Comments/EntityTypeCollectionTest.php b/apps/dav/tests/unit/Comments/EntityTypeCollectionTest.php
index f49b2c39857..89f84fb6ad4 100644
--- a/apps/dav/tests/unit/Comments/EntityTypeCollectionTest.php
+++ b/apps/dav/tests/unit/Comments/EntityTypeCollectionTest.php
@@ -26,9 +26,9 @@ namespace OCA\DAV\Tests\unit\Comments;
use OCA\DAV\Comments\EntityCollection as EntityCollectionImplemantation;
use OCP\Comments\ICommentsManager;
-use OCP\ILogger;
use OCP\IUserManager;
use OCP\IUserSession;
+use Psr\Log\LoggerInterface;
class EntityTypeCollectionTest extends \Test\TestCase {
@@ -36,7 +36,7 @@ class EntityTypeCollectionTest extends \Test\TestCase {
protected $commentsManager;
/** @var \OCP\IUserManager|\PHPUnit\Framework\MockObject\MockObject */
protected $userManager;
- /** @var \OCP\ILogger|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var LoggerInterface|\PHPUnit\Framework\MockObject\MockObject */
protected $logger;
/** @var \OCA\DAV\Comments\EntityTypeCollection */
protected $collection;
@@ -57,7 +57,7 @@ class EntityTypeCollectionTest extends \Test\TestCase {
$this->userSession = $this->getMockBuilder(IUserSession::class)
->disableOriginalConstructor()
->getMock();
- $this->logger = $this->getMockBuilder(ILogger::class)
+ $this->logger = $this->getMockBuilder(LoggerInterface::class)
->disableOriginalConstructor()
->getMock();
diff --git a/apps/dav/tests/unit/Comments/RootCollectionTest.php b/apps/dav/tests/unit/Comments/RootCollectionTest.php
index 8537eb9ab17..703557c16d6 100644
--- a/apps/dav/tests/unit/Comments/RootCollectionTest.php
+++ b/apps/dav/tests/unit/Comments/RootCollectionTest.php
@@ -30,7 +30,6 @@ use OC\EventDispatcher\SymfonyAdapter;
use OCA\DAV\Comments\EntityTypeCollection as EntityTypeCollectionImplementation;
use OCP\Comments\CommentsEntityEvent;
use OCP\Comments\ICommentsManager;
-use OCP\ILogger;
use OCP\IUser;
use OCP\IUserManager;
use OCP\IUserSession;
@@ -87,7 +86,7 @@ class RootCollectionTest extends \Test\TestCase {
$this->userManager,
$this->userSession,
$this->dispatcher,
- $this->createMock(ILogger::class)
+ $this->logger
);
}
diff --git a/apps/dav/tests/unit/Connector/Sabre/ExceptionLoggerPluginTest.php b/apps/dav/tests/unit/Connector/Sabre/ExceptionLoggerPluginTest.php
index 83f8c416577..3627a177969 100644
--- a/apps/dav/tests/unit/Connector/Sabre/ExceptionLoggerPluginTest.php
+++ b/apps/dav/tests/unit/Connector/Sabre/ExceptionLoggerPluginTest.php
@@ -9,6 +9,7 @@
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Côme Chilliet <come.chilliet@nextcloud.com>
*
* @license AGPL-3.0
*
@@ -30,31 +31,22 @@ namespace OCA\DAV\Tests\unit\Connector\Sabre;
use OC\Log;
use OC\SystemConfig;
use OCA\DAV\Connector\Sabre\Exception\InvalidPath;
-use OCA\DAV\Connector\Sabre\ExceptionLoggerPlugin as PluginToTest;
+use OCA\DAV\Connector\Sabre\ExceptionLoggerPlugin;
+use Psr\Log\LoggerInterface;
use Sabre\DAV\Exception\NotFound;
use Sabre\DAV\Exception\ServiceUnavailable;
use Sabre\DAV\Server;
use Test\TestCase;
-class TestLogger extends Log {
- public $message;
- public $level;
-
- public function writeLog(string $app, $entry, int $level) {
- $this->level = $level;
- $this->message = $entry;
- }
-}
-
class ExceptionLoggerPluginTest extends TestCase {
/** @var Server */
private $server;
- /** @var PluginToTest */
+ /** @var ExceptionLoggerPlugin */
private $plugin;
- /** @var TestLogger | \PHPUnit\Framework\MockObject\MockObject */
+ /** @var LoggerInterface | \PHPUnit\Framework\MockObject\MockObject */
private $logger;
private function init() {
@@ -71,29 +63,30 @@ class ExceptionLoggerPluginTest extends TestCase {
});
$this->server = new Server();
- $this->logger = new TestLogger(new Log\File(\OC::$SERVERROOT.'/data/nextcloud.log', '', $config), $config);
- $this->plugin = new PluginToTest('unit-test', $this->logger);
+ $this->logger = $this->createMock(LoggerInterface::class);
+ $this->plugin = new ExceptionLoggerPlugin('unit-test', $this->logger);
$this->plugin->initialize($this->server);
}
/**
* @dataProvider providesExceptions
*/
- public function testLogging($expectedLogLevel, $expectedMessage, $exception) {
+ public function testLogging(string $expectedLogLevel, \Throwable $e) {
$this->init();
- $this->plugin->logException($exception);
- $this->assertEquals($expectedLogLevel, $this->logger->level);
- $this->assertEquals(get_class($exception), $this->logger->message['Exception']);
- $this->assertEquals($expectedMessage, $this->logger->message['Message']);
+ $this->logger->expects($this->once())
+ ->method($expectedLogLevel)
+ ->with($e->getMessage(), ['app' => 'unit-test','exception' => $e]);
+
+ $this->plugin->logException($e);
}
public function providesExceptions() {
return [
- [0, '', new NotFound()],
- [0, 'System in maintenance mode.', new ServiceUnavailable('System in maintenance mode.')],
- [4, 'Upgrade needed', new ServiceUnavailable('Upgrade needed')],
- [4, 'This path leads to nowhere', new InvalidPath('This path leads to nowhere')]
+ ['debug', new NotFound()],
+ ['debug', new ServiceUnavailable('System in maintenance mode.')],
+ ['critical', new ServiceUnavailable('Upgrade needed')],
+ ['critical', new InvalidPath('This path leads to nowhere')]
];
}
}
diff --git a/apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php b/apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php
index d7c074c9e3b..86413e4a366 100644
--- a/apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php
+++ b/apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php
@@ -662,6 +662,10 @@ class PrincipalTest extends TestCase {
->method('allowEnumerationFullMatch')
->willReturn(true);
+ $this->shareManager->expects($this->once())
+ ->method('matchEmail')
+ ->willReturn(true);
+
$user2 = $this->createMock(IUser::class);
$user2->method('getUID')->willReturn('user2');
$user2->method('getDisplayName')->willReturn('User 2');
diff --git a/apps/dav/tests/unit/Connector/Sabre/RequestTest/RequestTestCase.php b/apps/dav/tests/unit/Connector/Sabre/RequestTest/RequestTestCase.php
index 5adfece42e8..f6aa79eb6c4 100644
--- a/apps/dav/tests/unit/Connector/Sabre/RequestTest/RequestTestCase.php
+++ b/apps/dav/tests/unit/Connector/Sabre/RequestTest/RequestTestCase.php
@@ -32,6 +32,7 @@ use OC\Files\View;
use OCA\DAV\Connector\Sabre\Server;
use OCA\DAV\Connector\Sabre\ServerFactory;
use OCP\IRequest;
+use Psr\Log\LoggerInterface;
use Sabre\HTTP\Request;
use Test\TestCase;
use Test\Traits\MountProviderTrait;
@@ -60,7 +61,7 @@ abstract class RequestTestCase extends TestCase {
$this->serverFactory = new ServerFactory(
\OC::$server->getConfig(),
- \OC::$server->getLogger(),
+ \OC::$server->get(LoggerInterface::class),
\OC::$server->getDatabaseConnection(),
\OC::$server->getUserSession(),
\OC::$server->getMountManager(),
@@ -98,7 +99,7 @@ abstract class RequestTestCase extends TestCase {
$body = $this->getStream($body);
}
$this->logout();
- $exceptionPlugin = new ExceptionPlugin('webdav', null);
+ $exceptionPlugin = new ExceptionPlugin('webdav', \OC::$server->get(LoggerInterface::class));
$server = $this->getSabreServer($view, $user, $password, $exceptionPlugin);
$request = new Request($method, $url, $headers, $body);
diff --git a/apps/dav/tests/unit/Migration/CalDAVRemoveEmptyValueTest.php b/apps/dav/tests/unit/Migration/CalDAVRemoveEmptyValueTest.php
index 478be5b4294..0adabd2388f 100644
--- a/apps/dav/tests/unit/Migration/CalDAVRemoveEmptyValueTest.php
+++ b/apps/dav/tests/unit/Migration/CalDAVRemoveEmptyValueTest.php
@@ -27,8 +27,8 @@ namespace OCA\DAV\Tests\Unit\DAV\Migration;
use OCA\DAV\CalDAV\CalDavBackend;
use OCA\DAV\Migration\CalDAVRemoveEmptyValue;
-use OCP\ILogger;
use OCP\Migration\IOutput;
+use Psr\Log\LoggerInterface;
use Sabre\VObject\InvalidDataException;
use Test\TestCase;
@@ -40,7 +40,7 @@ use Test\TestCase;
*/
class CalDAVRemoveEmptyValueTest extends TestCase {
- /** @var ILogger|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var LoggerInterface|\PHPUnit\Framework\MockObject\MockObject */
private $logger;
/** @var CalDavBackend|\PHPUnit\Framework\MockObject\MockObject */
@@ -94,7 +94,7 @@ END:VCALENDAR';
protected function setUp(): void {
parent::setUp();
- $this->logger = $this->createMock(ILogger::class);
+ $this->logger = $this->createMock(LoggerInterface::class);
$this->backend = $this->createMock(CalDavBackend::class);
$this->output = $this->createMock(IOutput::class);
}