diff options
Diffstat (limited to 'apps/dav')
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); } |