diff options
392 files changed, 2725 insertions, 1174 deletions
diff --git a/.drone.yml b/.drone.yml index 8630b0ebb27..11bc75092d5 100644 --- a/.drone.yml +++ b/.drone.yml @@ -210,6 +210,15 @@ pipeline: matrix: DB: postgres PHP: 5.6 + postgres-php7.0: + image: nextcloudci/php7.0:php7.0-13 + commands: + - sleep 10 # gives the database enough time to initialize + - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh pgsql + when: + matrix: + DB: postgres + PHP: 7.0 mysqlmb4-php5.6: image: nextcloudci/php5.6:php5.6-7 commands: @@ -571,6 +580,9 @@ matrix: - DB: postgres PHP: 5.6 ENABLE_REDIS: true + - DB: postgres + PHP: 7.0 + ENABLE_REDIS: true - DB: mysqlmb4 PHP: 5.6 ENABLE_REDIS: true diff --git a/apps/comments/appinfo/routes.php b/apps/comments/appinfo/routes.php index ab751ddb2a2..66b3abe61be 100644 --- a/apps/comments/appinfo/routes.php +++ b/apps/comments/appinfo/routes.php @@ -20,9 +20,8 @@ * */ -use \OCA\Comments\AppInfo\Application; - -$application = new Application(); -$application->registerRoutes($this, ['routes' => [ - ['name' => 'Notifications#view', 'url' => '/notifications/view/{id}', 'verb' => 'GET'], -]]); +return [ + 'routes' => [ + ['name' => 'Notifications#view', 'url' => '/notifications/view/{id}', 'verb' => 'GET'], + ] +]; diff --git a/apps/comments/lib/Activity/Listener.php b/apps/comments/lib/Activity/Listener.php index 16852296cf1..94176921f05 100644 --- a/apps/comments/lib/Activity/Listener.php +++ b/apps/comments/lib/Activity/Listener.php @@ -84,7 +84,7 @@ class Listener { // Get all mount point owners $cache = $this->mountCollection->getMountCache(); - $mounts = $cache->getMountsForFileId($event->getComment()->getObjectId()); + $mounts = $cache->getMountsForFileId((int)$event->getComment()->getObjectId()); if (empty($mounts)) { return; } @@ -93,7 +93,7 @@ class Listener { foreach ($mounts as $mount) { $owner = $mount->getUser()->getUID(); $ownerFolder = $this->rootFolder->getUserFolder($owner); - $nodes = $ownerFolder->getById($event->getComment()->getObjectId()); + $nodes = $ownerFolder->getById((int)$event->getComment()->getObjectId()); if (!empty($nodes)) { /** @var Node $node */ $node = array_shift($nodes); diff --git a/apps/comments/lib/Activity/Provider.php b/apps/comments/lib/Activity/Provider.php index 7bf686e796e..ea4810f92ed 100644 --- a/apps/comments/lib/Activity/Provider.php +++ b/apps/comments/lib/Activity/Provider.php @@ -147,7 +147,7 @@ class Provider implements IProvider { trim($subjectParameters[1], '/'), ])) ->setRichSubject($this->l->t('You commented on {file}'), [ - 'file' => $this->generateFileParameter($event->getObjectId(), $subjectParameters[1]), + 'file' => $this->generateFileParameter((int)$event->getObjectId(), $subjectParameters[1]), ]); } else { $author = $this->generateUserParameter($subjectParameters[0]); @@ -157,7 +157,7 @@ class Provider implements IProvider { ])) ->setRichSubject($this->l->t('{author} commented on {file}'), [ 'author' => $author, - 'file' => $this->generateFileParameter($event->getObjectId(), $subjectParameters[1]), + 'file' => $this->generateFileParameter((int)$event->getObjectId(), $subjectParameters[1]), ]); } } else { @@ -173,7 +173,7 @@ class Provider implements IProvider { protected function parseMessage(IEvent $event) { $messageParameters = $event->getMessageParameters(); try { - $comment = $this->commentsManager->get((int) $messageParameters[0]); + $comment = $this->commentsManager->get((string) $messageParameters[0]); $message = $comment->getMessage(); $message = str_replace("\n", '<br />', str_replace(['<', '>'], ['<', '>'], $message)); diff --git a/apps/comments/lib/Controller/Notifications.php b/apps/comments/lib/Controller/Notifications.php index c2a8175d17a..9a07e2fbad7 100644 --- a/apps/comments/lib/Controller/Notifications.php +++ b/apps/comments/lib/Controller/Notifications.php @@ -96,7 +96,7 @@ class Notifications extends Controller { if($comment->getObjectType() !== 'files') { return new NotFoundResponse(); } - $files = $this->folder->getById($comment->getObjectId()); + $files = $this->folder->getById((int)$comment->getObjectId()); if(count($files) === 0) { $this->markProcessed($comment); return new NotFoundResponse(); diff --git a/apps/comments/lib/Notification/Notifier.php b/apps/comments/lib/Notification/Notifier.php index 09092da539c..60dd85f74c5 100644 --- a/apps/comments/lib/Notification/Notifier.php +++ b/apps/comments/lib/Notification/Notifier.php @@ -94,7 +94,7 @@ class Notifier implements INotifier { throw new \InvalidArgumentException('Unsupported comment object'); } $userFolder = $this->rootFolder->getUserFolder($notification->getUser()); - $nodes = $userFolder->getById($parameters[1]); + $nodes = $userFolder->getById((int)$parameters[1]); if(empty($nodes)) { throw new \InvalidArgumentException('Cannot resolve file id to Node instance'); } diff --git a/apps/dav/l10n/sq.js b/apps/dav/l10n/sq.js index 6138da04169..2004b3f5072 100644 --- a/apps/dav/l10n/sq.js +++ b/apps/dav/l10n/sq.js @@ -3,7 +3,7 @@ OC.L10N.register( { "Calendar" : "Kalendar", "Todos" : "Për tu bërë", - "{actor} created calendar {calendar}" : "{actor} krijoj kalendarin {calendar}", + "{actor} created calendar {calendar}" : "{aktori} krijoi kalendarin {kalendarin}", "You created calendar {calendar}" : "Ju krijuat kalendarin {calendar}", "{actor} deleted calendar {calendar}" : "{actor} fshiu kalendarin {calendar}", "You deleted calendar {calendar}" : "Ju fshit kalendarin {calendar}", @@ -31,11 +31,18 @@ OC.L10N.register( "{actor} deleted todo {todo} from list {calendar}" : "{actor} u fshi todo{ todo} nga lista{calendar}", "You deleted todo {todo} from list {calendar}" : "Ju fshit todo{todo} nga lista {calendar}", "{actor} updated todo {todo} in list {calendar}" : "{actor} u përditësua todo{todo} në listën{calendar}", + "You updated todo {todo} in list {calendar}" : "Ju përditësuat përtëbërë {todo} në listën{calendar}", + "{actor} solved todo {todo} in list {calendar}" : "{actor} zgjidhi përtëbërë {todo} në listën {calendar}", + "You solved todo {todo} in list {calendar}" : "Ju zgjidhët përtëbërë {todo} në listën {calendar}", + "{actor} reopened todo {todo} in list {calendar}" : "{actor} rihapi përtëbërë {todo} në listën {calendar}", + "You reopened todo {todo} in list {calendar}" : "Ju rihapët përtëbërë {todo} në listën {calendar}", "A <strong>calendar</strong> was modified" : "Një <strong>kalendar</strong> u modifikua", "A calendar <strong>event</strong> was modified" : "Një <strong>event</strong> në kalendar u modifikua", "A calendar <strong>todo</strong> was modified" : "Një kalendar <strong>todo<strong> u modifikua", + "Contact birthdays" : "Ditëlindjet e kontakteve", "Personal" : "Personale", "Contacts" : "Kontaktet", + "WebDAV" : "WebDAV", "Technical details" : "Detaje teknike", "Remote Address: %s" : "Adresa remote: %s", "Request ID: %s" : "ID e kërkesës: %s" diff --git a/apps/dav/l10n/sq.json b/apps/dav/l10n/sq.json index 27a36bbff81..fde9a71c324 100644 --- a/apps/dav/l10n/sq.json +++ b/apps/dav/l10n/sq.json @@ -1,7 +1,7 @@ { "translations": { "Calendar" : "Kalendar", "Todos" : "Për tu bërë", - "{actor} created calendar {calendar}" : "{actor} krijoj kalendarin {calendar}", + "{actor} created calendar {calendar}" : "{aktori} krijoi kalendarin {kalendarin}", "You created calendar {calendar}" : "Ju krijuat kalendarin {calendar}", "{actor} deleted calendar {calendar}" : "{actor} fshiu kalendarin {calendar}", "You deleted calendar {calendar}" : "Ju fshit kalendarin {calendar}", @@ -29,11 +29,18 @@ "{actor} deleted todo {todo} from list {calendar}" : "{actor} u fshi todo{ todo} nga lista{calendar}", "You deleted todo {todo} from list {calendar}" : "Ju fshit todo{todo} nga lista {calendar}", "{actor} updated todo {todo} in list {calendar}" : "{actor} u përditësua todo{todo} në listën{calendar}", + "You updated todo {todo} in list {calendar}" : "Ju përditësuat përtëbërë {todo} në listën{calendar}", + "{actor} solved todo {todo} in list {calendar}" : "{actor} zgjidhi përtëbërë {todo} në listën {calendar}", + "You solved todo {todo} in list {calendar}" : "Ju zgjidhët përtëbërë {todo} në listën {calendar}", + "{actor} reopened todo {todo} in list {calendar}" : "{actor} rihapi përtëbërë {todo} në listën {calendar}", + "You reopened todo {todo} in list {calendar}" : "Ju rihapët përtëbërë {todo} në listën {calendar}", "A <strong>calendar</strong> was modified" : "Një <strong>kalendar</strong> u modifikua", "A calendar <strong>event</strong> was modified" : "Një <strong>event</strong> në kalendar u modifikua", "A calendar <strong>todo</strong> was modified" : "Një kalendar <strong>todo<strong> u modifikua", + "Contact birthdays" : "Ditëlindjet e kontakteve", "Personal" : "Personale", "Contacts" : "Kontaktet", + "WebDAV" : "WebDAV", "Technical details" : "Detaje teknike", "Remote Address: %s" : "Adresa remote: %s", "Request ID: %s" : "ID e kërkesës: %s" diff --git a/apps/dav/lib/CalDAV/Activity/Provider/Calendar.php b/apps/dav/lib/CalDAV/Activity/Provider/Calendar.php index 6082e68dcd2..36d425ecf63 100644 --- a/apps/dav/lib/CalDAV/Activity/Provider/Calendar.php +++ b/apps/dav/lib/CalDAV/Activity/Provider/Calendar.php @@ -168,32 +168,32 @@ class Calendar extends Base { case self::SUBJECT_UNSHARE_USER . '_self': return [ 'actor' => $this->generateUserParameter($parameters[0]), - 'calendar' => $this->generateCalendarParameter($event->getObjectId(), $parameters[1]), + 'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]), ]; case self::SUBJECT_SHARE_USER . '_you': case self::SUBJECT_UNSHARE_USER . '_you': return [ 'user' => $this->generateUserParameter($parameters[0]), - 'calendar' => $this->generateCalendarParameter($event->getObjectId(), $parameters[1]), + 'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]), ]; case self::SUBJECT_SHARE_USER . '_by': case self::SUBJECT_UNSHARE_USER . '_by': return [ 'user' => $this->generateUserParameter($parameters[0]), - 'calendar' => $this->generateCalendarParameter($event->getObjectId(), $parameters[1]), + 'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]), 'actor' => $this->generateUserParameter($parameters[2]), ]; case self::SUBJECT_SHARE_GROUP . '_you': case self::SUBJECT_UNSHARE_GROUP . '_you': return [ 'group' => $this->generateGroupParameter($parameters[0]), - 'calendar' => $this->generateCalendarParameter($event->getObjectId(), $parameters[1]), + 'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]), ]; case self::SUBJECT_SHARE_GROUP . '_by': case self::SUBJECT_UNSHARE_GROUP . '_by': return [ 'group' => $this->generateGroupParameter($parameters[0]), - 'calendar' => $this->generateCalendarParameter($event->getObjectId(), $parameters[1]), + 'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]), 'actor' => $this->generateUserParameter($parameters[2]), ]; } diff --git a/apps/dav/lib/CalDAV/Activity/Provider/Event.php b/apps/dav/lib/CalDAV/Activity/Provider/Event.php index b591eaa351c..2c2e3d01c28 100644 --- a/apps/dav/lib/CalDAV/Activity/Provider/Event.php +++ b/apps/dav/lib/CalDAV/Activity/Provider/Event.php @@ -124,14 +124,14 @@ class Event extends Base { case self::SUBJECT_OBJECT_UPDATE . '_event': return [ 'actor' => $this->generateUserParameter($parameters[0]), - 'calendar' => $this->generateCalendarParameter($event->getObjectId(), $parameters[1]), + 'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]), 'event' => $this->generateObjectParameter($parameters[2]), ]; case self::SUBJECT_OBJECT_ADD . '_event_self': case self::SUBJECT_OBJECT_DELETE . '_event_self': case self::SUBJECT_OBJECT_UPDATE . '_event_self': return [ - 'calendar' => $this->generateCalendarParameter($event->getObjectId(), $parameters[1]), + 'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]), 'event' => $this->generateObjectParameter($parameters[2]), ]; } diff --git a/apps/dav/lib/CalDAV/Activity/Provider/Todo.php b/apps/dav/lib/CalDAV/Activity/Provider/Todo.php index 0ad1d137455..a665caa0e6a 100644 --- a/apps/dav/lib/CalDAV/Activity/Provider/Todo.php +++ b/apps/dav/lib/CalDAV/Activity/Provider/Todo.php @@ -95,7 +95,7 @@ class Todo extends Event { case self::SUBJECT_OBJECT_UPDATE . '_todo_needs_action': return [ 'actor' => $this->generateUserParameter($parameters[0]), - 'calendar' => $this->generateCalendarParameter($event->getObjectId(), $parameters[1]), + 'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]), 'todo' => $this->generateObjectParameter($parameters[2]), ]; case self::SUBJECT_OBJECT_ADD . '_todo_self': @@ -104,7 +104,7 @@ class Todo extends Event { case self::SUBJECT_OBJECT_UPDATE . '_todo_completed_self': case self::SUBJECT_OBJECT_UPDATE . '_todo_needs_action_self': return [ - 'calendar' => $this->generateCalendarParameter($event->getObjectId(), $parameters[1]), + 'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]), 'todo' => $this->generateObjectParameter($parameters[2]), ]; } diff --git a/apps/dav/lib/CalDAV/BirthdayService.php b/apps/dav/lib/CalDAV/BirthdayService.php index 702b74bf1b3..e11f922a636 100644 --- a/apps/dav/lib/CalDAV/BirthdayService.php +++ b/apps/dav/lib/CalDAV/BirthdayService.php @@ -270,7 +270,7 @@ class BirthdayService { * @param string $cardData * @param array $book * @param int $calendarId - * @param string $type + * @param string[] $type */ private function updateCalendar($cardUri, $cardData, $book, $calendarId, $type) { $objectUri = $book['uri'] . '-' . $cardUri . $type['postfix'] . '.ics'; diff --git a/apps/dav/lib/CalDAV/CalDavBackend.php b/apps/dav/lib/CalDAV/CalDavBackend.php index 1cf27a80025..d078790b6f0 100644 --- a/apps/dav/lib/CalDAV/CalDavBackend.php +++ b/apps/dav/lib/CalDAV/CalDavBackend.php @@ -50,6 +50,7 @@ use Sabre\VObject\Component\VCalendar; use Sabre\VObject\DateTimeParser; use Sabre\VObject\Reader; use Sabre\VObject\Recur\EventIterator; +use Sabre\Uri; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\GenericEvent; @@ -318,7 +319,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription } } - list(, $name) = URLUtil::splitPath($row['principaluri']); + list(, $name) = Uri\split($row['principaluri']); $uri = $row['uri'] . '_shared_by_' . $name; $row['displayname'] = $row['displayname'] . ' (' . $this->getUserDisplayName($name) . ')'; $components = []; @@ -432,7 +433,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription ->execute(); while($row = $result->fetch()) { - list(, $name) = URLUtil::splitPath($row['principaluri']); + list(, $name) = Uri\split($row['principaluri']); $row['displayname'] = $row['displayname'] . "($name)"; $components = []; if ($row['components']) { @@ -498,7 +499,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription throw new NotFound('Node with name \'' . $uri . '\' could not be found'); } - list(, $name) = URLUtil::splitPath($row['principaluri']); + list(, $name) = Uri\split($row['principaluri']); $row['displayname'] = $row['displayname'] . ' ' . "($name)"; $components = []; if ($row['components']) { @@ -1157,7 +1158,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription $requirePostFilter = false; } // There was a time-range filter - if ($componentType == 'VEVENT' && isset($filters['comp-filters'][0]['time-range'])) { + if ($componentType === 'VEVENT' && isset($filters['comp-filters'][0]['time-range'])) { $timeRange = $filters['comp-filters'][0]['time-range']; // If start time OR the end time is not specified, we can do a @@ -2104,7 +2105,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription private function convertPrincipal($principalUri, $toV2) { if ($this->principalBackend->getPrincipalPrefix() === 'principals') { - list(, $name) = URLUtil::splitPath($principalUri); + list(, $name) = Uri\split($principalUri); if ($toV2 === true) { return "principals/users/$name"; } diff --git a/apps/dav/lib/CalDAV/Plugin.php b/apps/dav/lib/CalDAV/Plugin.php index 5172cea6e27..647dbb5c587 100644 --- a/apps/dav/lib/CalDAV/Plugin.php +++ b/apps/dav/lib/CalDAV/Plugin.php @@ -31,7 +31,7 @@ class Plugin extends \Sabre\CalDAV\Plugin { function getCalendarHomeForPrincipal($principalUrl) { if (strrpos($principalUrl, 'principals/users', -strlen($principalUrl)) !== false) { - list(, $principalId) = URLUtil::splitPath($principalUrl); + list(, $principalId) = \Sabre\Uri\split($principalUrl); return self::CALENDAR_ROOT .'/' . $principalId; } diff --git a/apps/dav/lib/CalDAV/Search/SearchPlugin.php b/apps/dav/lib/CalDAV/Search/SearchPlugin.php index d658a50437d..84e095da5f8 100644 --- a/apps/dav/lib/CalDAV/Search/SearchPlugin.php +++ b/apps/dav/lib/CalDAV/Search/SearchPlugin.php @@ -134,7 +134,7 @@ class SearchPlugin extends ServerPlugin { // If we're dealing with the calendar home, the calendar home itself is // responsible for the calendar-query - if ($node instanceof CalendarHome && $depth == 2) { + if ($node instanceof CalendarHome && $depth === 2) { $nodePaths = $node->calendarSearch($report->filters, $report->limit, $report->offset); @@ -156,4 +156,4 @@ class SearchPlugin extends ServerPlugin { $this->server->generateMultiStatus($result, $prefer['return'] === 'minimal')); } -}
\ No newline at end of file +} diff --git a/apps/dav/lib/CardDAV/CardDavBackend.php b/apps/dav/lib/CardDAV/CardDavBackend.php index 45a695c1869..7c275611951 100644 --- a/apps/dav/lib/CardDAV/CardDavBackend.php +++ b/apps/dav/lib/CardDAV/CardDavBackend.php @@ -196,7 +196,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { } } - list(, $name) = URLUtil::splitPath($row['principaluri']); + list(, $name) = \Sabre\Uri\split($row['principaluri']); $uri = $row['uri'] . '_shared_by_' . $name; $displayName = $row['displayname'] . ' (' . $this->getUserDisplayName($name) . ')'; @@ -1019,7 +1019,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { } $preferred = 0; foreach($property->parameters as $parameter) { - if ($parameter->name == 'TYPE' && strtoupper($parameter->getValue()) == 'PREF') { + if ($parameter->name === 'TYPE' && strtoupper($parameter->getValue()) === 'PREF') { $preferred = 1; break; } @@ -1091,7 +1091,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { private function convertPrincipal($principalUri, $toV2) { if ($this->principalBackend->getPrincipalPrefix() === 'principals') { - list(, $name) = URLUtil::splitPath($principalUri); + list(, $name) = \Sabre\Uri\split($principalUri); if ($toV2 === true) { return "principals/users/$name"; } diff --git a/apps/dav/lib/CardDAV/Plugin.php b/apps/dav/lib/CardDAV/Plugin.php index b291a8360e1..61b9915b1ad 100644 --- a/apps/dav/lib/CardDAV/Plugin.php +++ b/apps/dav/lib/CardDAV/Plugin.php @@ -44,15 +44,15 @@ class Plugin extends \Sabre\CardDAV\Plugin { protected function getAddressbookHomeForPrincipal($principal) { if (strrpos($principal, 'principals/users', -strlen($principal)) !== false) { - list(, $principalId) = URLUtil::splitPath($principal); + list(, $principalId) = \Sabre\Uri\split($principal); return self::ADDRESSBOOK_ROOT . '/users/' . $principalId; } if (strrpos($principal, 'principals/groups', -strlen($principal)) !== false) { - list(, $principalId) = URLUtil::splitPath($principal); + list(, $principalId) = \Sabre\Uri\split($principal); return self::ADDRESSBOOK_ROOT . '/groups/' . $principalId; } if (strrpos($principal, 'principals/system', -strlen($principal)) !== false) { - list(, $principalId) = URLUtil::splitPath($principal); + list(, $principalId) = \Sabre\Uri\split($principal); return self::ADDRESSBOOK_ROOT . '/system/' . $principalId; } diff --git a/apps/dav/lib/Connector/LegacyDAVACL.php b/apps/dav/lib/Connector/LegacyDAVACL.php index 46cbb504cce..704b967a002 100644 --- a/apps/dav/lib/Connector/LegacyDAVACL.php +++ b/apps/dav/lib/Connector/LegacyDAVACL.php @@ -51,7 +51,7 @@ class LegacyDAVACL extends DavAclPlugin { } private function convertPrincipal($principal, $toV2) { - list(, $name) = URLUtil::splitPath($principal); + list(, $name) = \Sabre\Uri\split($principal); if ($toV2) { return "principals/users/$name"; } diff --git a/apps/dav/lib/Connector/Sabre/Directory.php b/apps/dav/lib/Connector/Sabre/Directory.php index cb5a2ab8123..6fe9d26614e 100644 --- a/apps/dav/lib/Connector/Sabre/Directory.php +++ b/apps/dav/lib/Connector/Sabre/Directory.php @@ -225,7 +225,7 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node throw new \Sabre\DAV\Exception\NotFound('File with name ' . $path . ' could not be located'); } - if ($info['mimetype'] == 'httpd/unix-directory') { + if ($info['mimetype'] === 'httpd/unix-directory') { $node = new \OCA\DAV\Connector\Sabre\Directory($this->fileView, $info, $this->tree, $this->shareManager); } else { $node = new \OCA\DAV\Connector\Sabre\File($this->fileView, $info, $this->shareManager); @@ -387,7 +387,7 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node throw new \Sabre\DAV\Exception\Forbidden('Could not copy directory ' . $sourceNode->getName() . ', target exists'); } - list($sourceDir,) = \Sabre\HTTP\URLUtil::splitPath($sourceNode->getPath()); + list($sourceDir,) = \Sabre\Uri\split($sourceNode->getPath()); $destinationDir = $this->getPath(); $sourcePath = $sourceNode->getPath(); diff --git a/apps/dav/lib/Connector/Sabre/File.php b/apps/dav/lib/Connector/Sabre/File.php index ab04890d6c7..478321d41f2 100644 --- a/apps/dav/lib/Connector/Sabre/File.php +++ b/apps/dav/lib/Connector/Sabre/File.php @@ -146,8 +146,8 @@ class File extends Node implements IFile { // double check if the file was fully received // compare expected and actual size if (isset($_SERVER['CONTENT_LENGTH']) && $_SERVER['REQUEST_METHOD'] === 'PUT') { - $expected = $_SERVER['CONTENT_LENGTH']; - if ($count != $expected) { + $expected = (int) $_SERVER['CONTENT_LENGTH']; + if ($count !== $expected) { throw new BadRequest('expected filesize ' . $expected . ' got ' . $count); } } @@ -396,7 +396,7 @@ class File extends Node implements IFile { * @throws ServiceUnavailable */ private function createFileChunked($data) { - list($path, $name) = \Sabre\HTTP\URLUtil::splitPath($this->path); + list($path, $name) = \Sabre\Uri\split($this->path); $info = \OC_FileChunking::decodeName($name); if (empty($info)) { @@ -409,8 +409,8 @@ class File extends Node implements IFile { //detect aborted upload if (isset ($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'PUT') { if (isset($_SERVER['CONTENT_LENGTH'])) { - $expected = $_SERVER['CONTENT_LENGTH']; - if ($bytesWritten != $expected) { + $expected = (int) $_SERVER['CONTENT_LENGTH']; + if ($bytesWritten !== $expected) { $chunk_handler->remove($info['index']); throw new BadRequest( 'expected filesize ' . $expected . ' got ' . $bytesWritten); diff --git a/apps/dav/lib/Connector/Sabre/FilesPlugin.php b/apps/dav/lib/Connector/Sabre/FilesPlugin.php index efc9a42e5f5..726dd13cced 100644 --- a/apps/dav/lib/Connector/Sabre/FilesPlugin.php +++ b/apps/dav/lib/Connector/Sabre/FilesPlugin.php @@ -196,14 +196,14 @@ class FilesPlugin extends ServerPlugin { if (!$sourceNode instanceof Node) { return; } - list($sourceDir,) = \Sabre\HTTP\URLUtil::splitPath($source); - list($destinationDir,) = \Sabre\HTTP\URLUtil::splitPath($destination); + list($sourceDir,) = \Sabre\Uri\split($source); + list($destinationDir,) = \Sabre\Uri\split($destination); if ($sourceDir !== $destinationDir) { $sourceNodeFileInfo = $sourceNode->getFileInfo(); - if (is_null($sourceNodeFileInfo)) { + if ($sourceNodeFileInfo === null) { throw new NotFound($source . ' does not exist'); - } + } if (!$sourceNodeFileInfo->isDeletable()) { throw new Forbidden($source . " cannot be deleted"); @@ -434,7 +434,7 @@ class FilesPlugin extends ServerPlugin { public function sendFileIdHeader($filePath, \Sabre\DAV\INode $node = null) { // chunked upload handling if (isset($_SERVER['HTTP_OC_CHUNKED'])) { - list($path, $name) = \Sabre\HTTP\URLUtil::splitPath($filePath); + list($path, $name) = \Sabre\Uri\split($filePath); $info = \OC_FileChunking::decodeName($name); if (!empty($info)) { $filePath = $path . '/' . $info['name']; diff --git a/apps/dav/lib/Connector/Sabre/Node.php b/apps/dav/lib/Connector/Sabre/Node.php index 06933f53e76..b6d4090bf8f 100644 --- a/apps/dav/lib/Connector/Sabre/Node.php +++ b/apps/dav/lib/Connector/Sabre/Node.php @@ -126,8 +126,8 @@ abstract class Node implements \Sabre\DAV\INode { throw new \Sabre\DAV\Exception\Forbidden(); } - list($parentPath,) = \Sabre\HTTP\URLUtil::splitPath($this->path); - list(, $newName) = \Sabre\HTTP\URLUtil::splitPath($name); + list($parentPath,) = \Sabre\Uri\split($this->path); + list(, $newName) = \Sabre\Uri\split($name); // verify path of the target $this->verifyPath(); diff --git a/apps/dav/lib/Connector/Sabre/ObjectTree.php b/apps/dav/lib/Connector/Sabre/ObjectTree.php index acc6dcc3be3..3371c655f29 100644 --- a/apps/dav/lib/Connector/Sabre/ObjectTree.php +++ b/apps/dav/lib/Connector/Sabre/ObjectTree.php @@ -80,8 +80,8 @@ class ObjectTree extends \Sabre\DAV\Tree { private function resolveChunkFile($path) { if (isset($_SERVER['HTTP_OC_CHUNKED'])) { // resolve to real file name to find the proper node - list($dir, $name) = \Sabre\HTTP\URLUtil::splitPath($path); - if ($dir == '/' || $dir == '.') { + list($dir, $name) = \Sabre\Uri\split($path); + if ($dir === '/' || $dir === '.') { $dir = ''; } @@ -221,7 +221,7 @@ class ObjectTree extends \Sabre\DAV\Tree { // this will trigger existence check $this->getNodeForPath($source); - list($destinationDir, $destinationName) = \Sabre\HTTP\URLUtil::splitPath($destination); + list($destinationDir, $destinationName) = \Sabre\Uri\split($destination); try { $this->fileView->verifyPath($destinationDir, $destinationName); } catch (\OCP\Files\InvalidPathException $ex) { @@ -238,7 +238,7 @@ class ObjectTree extends \Sabre\DAV\Tree { throw new FileLocked($e->getMessage(), $e->getCode(), $e); } - list($destinationDir,) = \Sabre\HTTP\URLUtil::splitPath($destination); + list($destinationDir,) = \Sabre\Uri\split($destination); $this->markDirty($destinationDir); } } diff --git a/apps/dav/lib/Connector/Sabre/Principal.php b/apps/dav/lib/Connector/Sabre/Principal.php index 8713f61767b..dfcbf1e1ca0 100644 --- a/apps/dav/lib/Connector/Sabre/Principal.php +++ b/apps/dav/lib/Connector/Sabre/Principal.php @@ -100,7 +100,7 @@ class Principal implements BackendInterface { * @return array */ public function getPrincipalByPath($path) { - list($prefix, $name) = URLUtil::splitPath($path); + list($prefix, $name) = \Sabre\Uri\split($path); if ($prefix === $this->principalPrefix) { $user = $this->userManager->get($name); @@ -138,7 +138,7 @@ class Principal implements BackendInterface { * @throws Exception */ public function getGroupMembership($principal, $needGroups = false) { - list($prefix, $name) = URLUtil::splitPath($principal); + list($prefix, $name) = \Sabre\Uri\split($principal); if ($prefix === $this->principalPrefix) { $user = $this->userManager->get($name); diff --git a/apps/dav/lib/Connector/Sabre/QuotaPlugin.php b/apps/dav/lib/Connector/Sabre/QuotaPlugin.php index f0958c353a1..92f1f6e2e74 100644 --- a/apps/dav/lib/Connector/Sabre/QuotaPlugin.php +++ b/apps/dav/lib/Connector/Sabre/QuotaPlugin.php @@ -91,7 +91,7 @@ class QuotaPlugin extends \Sabre\DAV\ServerPlugin { if (substr($uri, 0, 1) !== '/') { $uri = '/' . $uri; } - list($parentUri, $newName) = URLUtil::splitPath($uri); + list($parentUri, $newName) = \Sabre\Uri\split($uri); if(is_null($parentUri)) { $parentUri = ''; } diff --git a/apps/dav/lib/DAV/Sharing/Backend.php b/apps/dav/lib/DAV/Sharing/Backend.php index f662d8e1b80..6cc5e3b6f50 100644 --- a/apps/dav/lib/DAV/Sharing/Backend.php +++ b/apps/dav/lib/DAV/Sharing/Backend.php @@ -170,7 +170,7 @@ class Backend { 'href' => "principal:${row['principaluri']}", 'commonName' => isset($p['{DAV:}displayname']) ? $p['{DAV:}displayname'] : '', 'status' => 1, - 'readOnly' => ($row['access'] == self::ACCESS_READ), + 'readOnly' => ((int) $row['access'] === self::ACCESS_READ), '{http://owncloud.org/ns}principal' => $row['principaluri'], '{http://owncloud.org/ns}group-share' => is_null($p) ]; diff --git a/apps/dav/lib/DAV/SystemPrincipalBackend.php b/apps/dav/lib/DAV/SystemPrincipalBackend.php index 6a71909c6fd..8c19e92499d 100644 --- a/apps/dav/lib/DAV/SystemPrincipalBackend.php +++ b/apps/dav/lib/DAV/SystemPrincipalBackend.php @@ -163,7 +163,7 @@ class SystemPrincipalBackend extends AbstractBackend { * @return array */ function getGroupMembership($principal) { - list($prefix, $name) = URLUtil::splitPath($principal); + list($prefix, $name) = \Sabre\Uri\split($principal); if ($prefix === 'principals/system') { $principal = $this->getPrincipalByPath($principal); diff --git a/apps/dav/lib/Files/FilesHome.php b/apps/dav/lib/Files/FilesHome.php index 78fd1f4d6d6..8768d6313b1 100644 --- a/apps/dav/lib/Files/FilesHome.php +++ b/apps/dav/lib/Files/FilesHome.php @@ -53,7 +53,7 @@ class FilesHome extends Directory { } function getName() { - list(,$name) = URLUtil::splitPath($this->principalInfo['uri']); + list(,$name) = \Sabre\Uri\split($this->principalInfo['uri']); return $name; } diff --git a/apps/dav/lib/Files/RootCollection.php b/apps/dav/lib/Files/RootCollection.php index c73d7c175ce..66e3160eaf8 100644 --- a/apps/dav/lib/Files/RootCollection.php +++ b/apps/dav/lib/Files/RootCollection.php @@ -39,7 +39,7 @@ class RootCollection extends AbstractPrincipalCollection { * @return INode */ function getChildForPrincipal(array $principalInfo) { - list(,$name) = URLUtil::splitPath($principalInfo['uri']); + list(,$name) = \Sabre\Uri\split($principalInfo['uri']); $user = \OC::$server->getUserSession()->getUser(); if (is_null($user) || $name !== $user->getUID()) { // a user is only allowed to see their own home contents, so in case another collection diff --git a/apps/encryption/l10n/es_MX.js b/apps/encryption/l10n/es_MX.js index 32993e64514..b0704a1bd65 100644 --- a/apps/encryption/l10n/es_MX.js +++ b/apps/encryption/l10n/es_MX.js @@ -30,7 +30,7 @@ OC.L10N.register( "Missing Signature" : "Firma faltante", "one-time password for server-side-encryption" : "Contraseña de una-sola-vez para la encripción del lado del servidor", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es posible decriptar este archivo, posiblemente sea un archivo compartido. Por favor solicita al dueño del archivo que lo vuelva a compartir contigo.", - "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es posible leer este archivo, posiblemente sea un archivo compatido. Por favor solicita al dueño que vuelva a compartirlo contigo.", + "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es posible leer este archivo, posiblemente sea un archivo compartido. Por favor solicita al dueño que vuelva a compartirlo contigo.", "Default encryption module" : "Módulo de encripción predeterminado", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hola,\n\nel administrador ha habilitado la encripción de lado del servidor. Tus archivos fueron encriptados usando la contraseña '%s'\n\nPor favor inicia sesión en la interface web, ve a la sección \"módulo de encripción básica\" de tus configuraciones personales y actualiza su contraseña de encripción ingresando esta contraseña en el campo 'contraseña de inicio de sesión anterior' y tu contraseña de inicio de sesión actual. \n", "The share will expire on %s." : "El elemento compartido expirará el %s.", diff --git a/apps/encryption/l10n/es_MX.json b/apps/encryption/l10n/es_MX.json index a2c72aed1ce..206e3d661ec 100644 --- a/apps/encryption/l10n/es_MX.json +++ b/apps/encryption/l10n/es_MX.json @@ -28,7 +28,7 @@ "Missing Signature" : "Firma faltante", "one-time password for server-side-encryption" : "Contraseña de una-sola-vez para la encripción del lado del servidor", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es posible decriptar este archivo, posiblemente sea un archivo compartido. Por favor solicita al dueño del archivo que lo vuelva a compartir contigo.", - "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es posible leer este archivo, posiblemente sea un archivo compatido. Por favor solicita al dueño que vuelva a compartirlo contigo.", + "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es posible leer este archivo, posiblemente sea un archivo compartido. Por favor solicita al dueño que vuelva a compartirlo contigo.", "Default encryption module" : "Módulo de encripción predeterminado", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hola,\n\nel administrador ha habilitado la encripción de lado del servidor. Tus archivos fueron encriptados usando la contraseña '%s'\n\nPor favor inicia sesión en la interface web, ve a la sección \"módulo de encripción básica\" de tus configuraciones personales y actualiza su contraseña de encripción ingresando esta contraseña en el campo 'contraseña de inicio de sesión anterior' y tu contraseña de inicio de sesión actual. \n", "The share will expire on %s." : "El elemento compartido expirará el %s.", diff --git a/apps/encryption/l10n/sq.js b/apps/encryption/l10n/sq.js index df44d8b4154..923708c2964 100644 --- a/apps/encryption/l10n/sq.js +++ b/apps/encryption/l10n/sq.js @@ -1,7 +1,7 @@ OC.L10N.register( "encryption", { - "Missing recovery key password" : "Mungon fjalëkalim kyçi rimarrjesh", + "Missing recovery key password" : "Mungon fjalëkalimi kyç i rigjenerimit ", "Please repeat the recovery key password" : "Ju lutemi, rijepni fjalëkalimin për kyç rimarrjesh", "Repeated recovery key password does not match the provided recovery key password" : "Fjalëkalimi i ridhënë për kyç rimarrjesh s’përputhet me fjalëkalimin e dhënë për kyç rimarrjesh", "Recovery key successfully enabled" : "Kyçi i rimarrjeve u aktivizua me sukses", @@ -23,6 +23,8 @@ OC.L10N.register( "Private key password successfully updated." : "Fjalëkalimi për kyçin privat u përditësua me sukses.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Lypset të kaloni kyçet tuaj të fshehtëzimeve nga versioni i vjetër i fshehtëzimeve (ownCloud <= 8.0) te i riu. Ju lutemi, ekzekutoni run 'occ encryption:migrate' ose lidhuni me përgjegjësin tuaj", "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Kyç privat i pavlefshëm për aplikacionin e fshehtëzimeve. Ju lutemi, përditësoni fjalëkalimin tuaj të kyçit privat te rregullimet tuaja personale që të rimerrni hyrje te kartelat tuaja të fshehtëzuara.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Aplikacioni i Enkriptimit është i aktivizuar, por kyçet tuaj s’janë vënë në punë, ju lutemi, dilni dhe rihyni përsëri", + "Please enable server side encryption in the admin settings in order to use the encryption module." : "Ju lutem aktivizoni ekriptimin në anën e serverit në konfigurimet e administratorit në mënyrë që të përdorni modulin e enkriptimit.", "Encryption app is enabled and ready" : "Aplikacioni i Fshehtëzimeve u aktivizua dhe është gati", "Bad Signature" : "Nënshkrim i Keq", "Missing Signature" : "Mungon Nënshkrimi", diff --git a/apps/encryption/l10n/sq.json b/apps/encryption/l10n/sq.json index 9805faaf3dd..ed251fd57a7 100644 --- a/apps/encryption/l10n/sq.json +++ b/apps/encryption/l10n/sq.json @@ -1,5 +1,5 @@ { "translations": { - "Missing recovery key password" : "Mungon fjalëkalim kyçi rimarrjesh", + "Missing recovery key password" : "Mungon fjalëkalimi kyç i rigjenerimit ", "Please repeat the recovery key password" : "Ju lutemi, rijepni fjalëkalimin për kyç rimarrjesh", "Repeated recovery key password does not match the provided recovery key password" : "Fjalëkalimi i ridhënë për kyç rimarrjesh s’përputhet me fjalëkalimin e dhënë për kyç rimarrjesh", "Recovery key successfully enabled" : "Kyçi i rimarrjeve u aktivizua me sukses", @@ -21,6 +21,8 @@ "Private key password successfully updated." : "Fjalëkalimi për kyçin privat u përditësua me sukses.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Lypset të kaloni kyçet tuaj të fshehtëzimeve nga versioni i vjetër i fshehtëzimeve (ownCloud <= 8.0) te i riu. Ju lutemi, ekzekutoni run 'occ encryption:migrate' ose lidhuni me përgjegjësin tuaj", "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Kyç privat i pavlefshëm për aplikacionin e fshehtëzimeve. Ju lutemi, përditësoni fjalëkalimin tuaj të kyçit privat te rregullimet tuaja personale që të rimerrni hyrje te kartelat tuaja të fshehtëzuara.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Aplikacioni i Enkriptimit është i aktivizuar, por kyçet tuaj s’janë vënë në punë, ju lutemi, dilni dhe rihyni përsëri", + "Please enable server side encryption in the admin settings in order to use the encryption module." : "Ju lutem aktivizoni ekriptimin në anën e serverit në konfigurimet e administratorit në mënyrë që të përdorni modulin e enkriptimit.", "Encryption app is enabled and ready" : "Aplikacioni i Fshehtëzimeve u aktivizua dhe është gati", "Bad Signature" : "Nënshkrim i Keq", "Missing Signature" : "Mungon Nënshkrimi", diff --git a/apps/encryption/lib/Crypto/Crypt.php b/apps/encryption/lib/Crypto/Crypt.php index 9a9ac27b96f..6e1b7387c88 100644 --- a/apps/encryption/lib/Crypto/Crypt.php +++ b/apps/encryption/lib/Crypto/Crypt.php @@ -605,7 +605,7 @@ class Crypt { $element = array_shift($exploded); - while ($element != self::HEADER_END) { + while ($element !== self::HEADER_END) { $result[$element] = array_shift($exploded); $element = array_shift($exploded); } diff --git a/apps/encryption/lib/Crypto/Encryption.php b/apps/encryption/lib/Crypto/Encryption.php index 1f8c8a8012e..4d20c103a5d 100644 --- a/apps/encryption/lib/Crypto/Encryption.php +++ b/apps/encryption/lib/Crypto/Encryption.php @@ -449,13 +449,13 @@ class Encryption implements IEncryptionModule { return false; } - if ($parts[2] == 'files') { + if ($parts[2] === 'files') { return true; } - if ($parts[2] == 'files_versions') { + if ($parts[2] === 'files_versions') { return true; } - if ($parts[2] == 'files_trashbin') { + if ($parts[2] === 'files_trashbin') { return true; } diff --git a/apps/federatedfilesharing/l10n/el.js b/apps/federatedfilesharing/l10n/el.js index f59ca88ed69..6928eb29cbc 100644 --- a/apps/federatedfilesharing/l10n/el.js +++ b/apps/federatedfilesharing/l10n/el.js @@ -1,22 +1,55 @@ OC.L10N.register( "federatedfilesharing", { + "Federated sharing" : "Ομόσποσνδος διαμοιρασμός", + "Do you want to add the remote share {name} from {owner}@{remote}?" : "Θέλετε να προσθέσουμε τον απομακρυσμένο κοινόχρηστο φάκελο {name} από {owner}@{remote}?", + "Remote share" : "Απομακρυσμένος κοινόχρηστος φάκελος", + "Remote share password" : "Συνθηματικό απομακρυσμένου κοινόχρηστου φακέλου", + "Cancel" : "Άκυρο", + "Add remote share" : "Προσθήκη απομακρυσμένου κοινόχρηστου φακέλου", + "Copy" : "Αντιγραφή", + "Copied!" : "Αντιγράφτηκε!", + "Not supported!" : "Δεν υποστηρίζεται!", + "Press ⌘-C to copy." : "Για αντιγραφή πατήστε ⌘-C.", + "Press Ctrl-C to copy." : "Για αντιγραφή πατήστε Ctrl-C.", "Invalid Federated Cloud ID" : "Μη έγκυρο Federated Cloud ID", + "Server to server sharing is not enabled on this server" : "Ο διαμοιρασμός μεταξύ διακομιστών δεν έχει ενεργοποιηθεί σε αυτόν το διακομιστή", + "Couldn't establish a federated share." : "Αδυναμία επίτευξης ομόσπονδου κοινόχρηστου φακέλου", + "Couldn't establish a federated share, maybe the password was wrong." : "Δεν μπόρεσε να γίνει ένας federated διαμοιρασμός, μπορεί να ήταν λάθος το συνθηματικό", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Το αίτημα για Federate διαμοιρασμό εστάλη, θα λάβεις μια πρόσκληση. Έλεγξε τις ειδοποιήσεις.", + "The mountpoint name contains invalid characters." : "Το σημείο προσάρτησης περιέχει μη έγκυρους χαρακτήρες.", + "Not allowed to create a federated share with the owner." : "Δεν επιτρέπεται η δημιουργία federated διαμοιρασμού με τον ιδιοκτήτη", + "Invalid or untrusted SSL certificate" : "Μη έγκυρο ή μη έμπιστο πιστοποιητικό SSL", + "Could not authenticate to remote share, password might be wrong" : "Αδυναμία πιστοποίησης απομακρυσμένου κοινόχρηστου, το συνθηματικό μπορεί να είναι εσφαλμένο", + "Storage not valid" : "Μη έγκυρος αποθηκευτικός χώρος", + "Federated share added" : "O Federated διαμοιρασμός προστέθηκε", + "Couldn't add remote share" : "Αδυναμία προσθήκης απομακρυσμένου κοινόχρηστου φακέλου", "Sharing %s failed, because this item is already shared with %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αντικείμενο είναι διαμοιρασμένο ήδη με τον χρήστη %s", - "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Αποτυχία διαμοιρασμού %s, δεν βρέθηκε το %s, μπορεί ο διακομιστής να είναι προσωρινά απροσπέλαστος.", + "Not allowed to create a federated share with the same user" : "Δεν επιτρέπεται η δημιουργία federated διαμοιρασμού με τον ίδιο χρήστη", + "File is already shared with %s" : "Το αρχείο είναι ήδη κοινόχρηστο με %s", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Η κοινή χρήση του %s απέτυχε, δεν ήταν δυνατή η εύρεση του %s, ίσως ο διακομιστής δεν είναι προσβάσιμος αυτήν τη στιγμή ή χρησιμοποιεί πιστοποιητικό που έχει υπογράψει αυτόματα.", + "Could not find share" : "Αδυναμία εύρεσης κοινόχρηστου", "Accept" : "Αποδοχή", "Decline" : "Απόρριψη", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Διαμοιρασμός με εμένα μέσω του #Nextcloud Federated Cloud ID μου, δείτε %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Διαμοιρασμός με εμένα μέσω του #Nextcloud Federated Cloud ID μου", - "Federated Cloud Sharing" : "Διαμοιρασμός σε ομόσπονδα σύννεφα ", - "Open documentation" : "Ανοιχτή τεκμηρίωση.", + "Sharing" : "Διαμοιρασμός", + "Federated file sharing" : "Federated διαμοιρασμός αρχείου", + "Federated Cloud Sharing" : "Διαμοιρασμός Federated Cloud", + "Open documentation" : "Άνοιγμα τεκμηρίωσης", + "Adjust how people can share between servers." : "Προσαρμόστε το πως τα άτομα θα διαμοιράζονται μεταξύ των διακομιστών", "Allow users on this server to send shares to other servers" : "Να επιτρέπεται σε χρήστες αυτού του διακομιστή να στέλνουν διαμοιρασμένους φακέλους σε άλλους διακομιστές", "Allow users on this server to receive shares from other servers" : "Να επιτρέπεται στους χρίστες του διακομιστή να λαμβάνουν διαμοιρασμένα αρχεία από άλλους διακομιστές", - "Federated Cloud" : "Federated σύννεφο", + "Search global and public address book for users" : "Αναζήτηση σε γενικό και δημόσιο βιβλίο διευθύνσεων για χρήστες", + "Allow users to publish their data to a global and public address book" : "Επιτρέψτε στους χρήστες να δημοσιεύουν τα δεδομένα τους σε ένα γενικό και δημόσιο βιβλίο διευθύνσεων", + "Federated Cloud" : "Federated Cloud", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Μπορείτε να διαμοιράζεστε με οποιονδήποτε χρησιμοποιεί Nextcloud, ownCloud η Pydio! Απλά προσθέστε το Federated Cloud ID στο πλαίσιο διαλόγου διαμοιρασμού. Θα μοιάζει με person@cloud.example.com", "Your Federated Cloud ID:" : "Το ID σας στο Federated Cloud:", - "Share it:" : "Μοιραστείτε το:", + "Share it so your friends can share files with you:" : "Διαμοιραστείτε το ώστε οι φίλοι σας να μπορούν να διαμοιράζονται αρχεία με εσάς:", "Add to your website" : "Προσθήκη στην ιστοσελίδα σας", - "Share with me via Nextcloud" : "Διαμοιρασμός με εμένα μέσω του ", - "HTML Code:" : "Κώδικας HTML:" + "Share with me via Nextcloud" : "Διαμοιραστείτε με εμένα μέσω του Nextcloud", + "HTML Code:" : "Κώδικας HTML:", + "Search global and public address book for users and let local users publish their data" : "Αναζήτηση σε γενικό και δημόσιο βιβλίο διευθύνσεων για χρήστες και επιτρέψτε τους τοπικούς χρήστες να δημοσιεύουν τα δεδομένα τους", + "Share it:" : "Μοιραστείτε το:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federatedfilesharing/l10n/el.json b/apps/federatedfilesharing/l10n/el.json index d5d2e3c3fc6..b49122ddd51 100644 --- a/apps/federatedfilesharing/l10n/el.json +++ b/apps/federatedfilesharing/l10n/el.json @@ -1,20 +1,53 @@ { "translations": { + "Federated sharing" : "Ομόσποσνδος διαμοιρασμός", + "Do you want to add the remote share {name} from {owner}@{remote}?" : "Θέλετε να προσθέσουμε τον απομακρυσμένο κοινόχρηστο φάκελο {name} από {owner}@{remote}?", + "Remote share" : "Απομακρυσμένος κοινόχρηστος φάκελος", + "Remote share password" : "Συνθηματικό απομακρυσμένου κοινόχρηστου φακέλου", + "Cancel" : "Άκυρο", + "Add remote share" : "Προσθήκη απομακρυσμένου κοινόχρηστου φακέλου", + "Copy" : "Αντιγραφή", + "Copied!" : "Αντιγράφτηκε!", + "Not supported!" : "Δεν υποστηρίζεται!", + "Press ⌘-C to copy." : "Για αντιγραφή πατήστε ⌘-C.", + "Press Ctrl-C to copy." : "Για αντιγραφή πατήστε Ctrl-C.", "Invalid Federated Cloud ID" : "Μη έγκυρο Federated Cloud ID", + "Server to server sharing is not enabled on this server" : "Ο διαμοιρασμός μεταξύ διακομιστών δεν έχει ενεργοποιηθεί σε αυτόν το διακομιστή", + "Couldn't establish a federated share." : "Αδυναμία επίτευξης ομόσπονδου κοινόχρηστου φακέλου", + "Couldn't establish a federated share, maybe the password was wrong." : "Δεν μπόρεσε να γίνει ένας federated διαμοιρασμός, μπορεί να ήταν λάθος το συνθηματικό", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Το αίτημα για Federate διαμοιρασμό εστάλη, θα λάβεις μια πρόσκληση. Έλεγξε τις ειδοποιήσεις.", + "The mountpoint name contains invalid characters." : "Το σημείο προσάρτησης περιέχει μη έγκυρους χαρακτήρες.", + "Not allowed to create a federated share with the owner." : "Δεν επιτρέπεται η δημιουργία federated διαμοιρασμού με τον ιδιοκτήτη", + "Invalid or untrusted SSL certificate" : "Μη έγκυρο ή μη έμπιστο πιστοποιητικό SSL", + "Could not authenticate to remote share, password might be wrong" : "Αδυναμία πιστοποίησης απομακρυσμένου κοινόχρηστου, το συνθηματικό μπορεί να είναι εσφαλμένο", + "Storage not valid" : "Μη έγκυρος αποθηκευτικός χώρος", + "Federated share added" : "O Federated διαμοιρασμός προστέθηκε", + "Couldn't add remote share" : "Αδυναμία προσθήκης απομακρυσμένου κοινόχρηστου φακέλου", "Sharing %s failed, because this item is already shared with %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αντικείμενο είναι διαμοιρασμένο ήδη με τον χρήστη %s", - "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Αποτυχία διαμοιρασμού %s, δεν βρέθηκε το %s, μπορεί ο διακομιστής να είναι προσωρινά απροσπέλαστος.", + "Not allowed to create a federated share with the same user" : "Δεν επιτρέπεται η δημιουργία federated διαμοιρασμού με τον ίδιο χρήστη", + "File is already shared with %s" : "Το αρχείο είναι ήδη κοινόχρηστο με %s", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Η κοινή χρήση του %s απέτυχε, δεν ήταν δυνατή η εύρεση του %s, ίσως ο διακομιστής δεν είναι προσβάσιμος αυτήν τη στιγμή ή χρησιμοποιεί πιστοποιητικό που έχει υπογράψει αυτόματα.", + "Could not find share" : "Αδυναμία εύρεσης κοινόχρηστου", "Accept" : "Αποδοχή", "Decline" : "Απόρριψη", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Διαμοιρασμός με εμένα μέσω του #Nextcloud Federated Cloud ID μου, δείτε %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Διαμοιρασμός με εμένα μέσω του #Nextcloud Federated Cloud ID μου", - "Federated Cloud Sharing" : "Διαμοιρασμός σε ομόσπονδα σύννεφα ", - "Open documentation" : "Ανοιχτή τεκμηρίωση.", + "Sharing" : "Διαμοιρασμός", + "Federated file sharing" : "Federated διαμοιρασμός αρχείου", + "Federated Cloud Sharing" : "Διαμοιρασμός Federated Cloud", + "Open documentation" : "Άνοιγμα τεκμηρίωσης", + "Adjust how people can share between servers." : "Προσαρμόστε το πως τα άτομα θα διαμοιράζονται μεταξύ των διακομιστών", "Allow users on this server to send shares to other servers" : "Να επιτρέπεται σε χρήστες αυτού του διακομιστή να στέλνουν διαμοιρασμένους φακέλους σε άλλους διακομιστές", "Allow users on this server to receive shares from other servers" : "Να επιτρέπεται στους χρίστες του διακομιστή να λαμβάνουν διαμοιρασμένα αρχεία από άλλους διακομιστές", - "Federated Cloud" : "Federated σύννεφο", + "Search global and public address book for users" : "Αναζήτηση σε γενικό και δημόσιο βιβλίο διευθύνσεων για χρήστες", + "Allow users to publish their data to a global and public address book" : "Επιτρέψτε στους χρήστες να δημοσιεύουν τα δεδομένα τους σε ένα γενικό και δημόσιο βιβλίο διευθύνσεων", + "Federated Cloud" : "Federated Cloud", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Μπορείτε να διαμοιράζεστε με οποιονδήποτε χρησιμοποιεί Nextcloud, ownCloud η Pydio! Απλά προσθέστε το Federated Cloud ID στο πλαίσιο διαλόγου διαμοιρασμού. Θα μοιάζει με person@cloud.example.com", "Your Federated Cloud ID:" : "Το ID σας στο Federated Cloud:", - "Share it:" : "Μοιραστείτε το:", + "Share it so your friends can share files with you:" : "Διαμοιραστείτε το ώστε οι φίλοι σας να μπορούν να διαμοιράζονται αρχεία με εσάς:", "Add to your website" : "Προσθήκη στην ιστοσελίδα σας", - "Share with me via Nextcloud" : "Διαμοιρασμός με εμένα μέσω του ", - "HTML Code:" : "Κώδικας HTML:" + "Share with me via Nextcloud" : "Διαμοιραστείτε με εμένα μέσω του Nextcloud", + "HTML Code:" : "Κώδικας HTML:", + "Search global and public address book for users and let local users publish their data" : "Αναζήτηση σε γενικό και δημόσιο βιβλίο διευθύνσεων για χρήστες και επιτρέψτε τους τοπικούς χρήστες να δημοσιεύουν τα δεδομένα τους", + "Share it:" : "Μοιραστείτε το:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/is.js b/apps/federatedfilesharing/l10n/is.js index 1029a8097b0..d384d56dba6 100644 --- a/apps/federatedfilesharing/l10n/is.js +++ b/apps/federatedfilesharing/l10n/is.js @@ -16,11 +16,13 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Deiling frá þjóni til þjóns er ekki virk á þessum þjóni", "Couldn't establish a federated share." : "Gat ekki bætt við skýjasambandssameign.", "Couldn't establish a federated share, maybe the password was wrong." : "Gat ekki bætt við skýjasambandssameign, hugsanlega var lykilorðið ekki rétt.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Sendi beiðni um skýjasambandssameign, þú munt fá boðskort. Athugaðu skilaboð til þín.", "The mountpoint name contains invalid characters." : "Heiti tengipunktsins inniheldur ógilda stafi.", "Not allowed to create a federated share with the owner." : "Ekki er heimilt að búa til skýjasambandssameign með eigandanum.", "Invalid or untrusted SSL certificate" : "Ógilt eða vantreyst SSL-skilríki", "Could not authenticate to remote share, password might be wrong" : "Gat ekki auðkennt á fjartengdri sameign, lykilorð gæti verið rangt", "Storage not valid" : "Geymslan er ekki gild", + "Federated share added" : "Bætti við skýjasambandssameign", "Couldn't add remote share" : "Gat ekki bætt við fjartengdri sameign", "Sharing %s failed, because this item is already shared with %s" : "Deiling %s mistókst, því þessu atriði er þegar deilt með %s", "Not allowed to create a federated share with the same user" : "Ekki er heimilt að búa til skýjasambandssameign með sama notanda", diff --git a/apps/federatedfilesharing/l10n/is.json b/apps/federatedfilesharing/l10n/is.json index bc372945150..6d0a065c83d 100644 --- a/apps/federatedfilesharing/l10n/is.json +++ b/apps/federatedfilesharing/l10n/is.json @@ -14,11 +14,13 @@ "Server to server sharing is not enabled on this server" : "Deiling frá þjóni til þjóns er ekki virk á þessum þjóni", "Couldn't establish a federated share." : "Gat ekki bætt við skýjasambandssameign.", "Couldn't establish a federated share, maybe the password was wrong." : "Gat ekki bætt við skýjasambandssameign, hugsanlega var lykilorðið ekki rétt.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Sendi beiðni um skýjasambandssameign, þú munt fá boðskort. Athugaðu skilaboð til þín.", "The mountpoint name contains invalid characters." : "Heiti tengipunktsins inniheldur ógilda stafi.", "Not allowed to create a federated share with the owner." : "Ekki er heimilt að búa til skýjasambandssameign með eigandanum.", "Invalid or untrusted SSL certificate" : "Ógilt eða vantreyst SSL-skilríki", "Could not authenticate to remote share, password might be wrong" : "Gat ekki auðkennt á fjartengdri sameign, lykilorð gæti verið rangt", "Storage not valid" : "Geymslan er ekki gild", + "Federated share added" : "Bætti við skýjasambandssameign", "Couldn't add remote share" : "Gat ekki bætt við fjartengdri sameign", "Sharing %s failed, because this item is already shared with %s" : "Deiling %s mistókst, því þessu atriði er þegar deilt með %s", "Not allowed to create a federated share with the same user" : "Ekki er heimilt að búa til skýjasambandssameign með sama notanda", diff --git a/apps/federatedfilesharing/l10n/sq.js b/apps/federatedfilesharing/l10n/sq.js index cca776554f1..6a34e89a915 100644 --- a/apps/federatedfilesharing/l10n/sq.js +++ b/apps/federatedfilesharing/l10n/sq.js @@ -6,6 +6,7 @@ OC.L10N.register( "Remote share" : "Ndarje në largësi", "Remote share password" : "Fjalëkalim ndarjeje të largët", "Cancel" : "Anulo", + "Add remote share" : "Shto shpëendarje në distancë", "Copy" : "Kopjo", "Copied!" : "U kopjua!", "Not supported!" : "Nuk mbështetet!", @@ -13,34 +14,46 @@ OC.L10N.register( "Press Ctrl-C to copy." : "Shtypni Ctrl-C për të kopjuar", "Invalid Federated Cloud ID" : "ID Federated Cloud e pavlefshme", "Server to server sharing is not enabled on this server" : "Shpërndarja server në server nuk është e mundësuar në këtë server", - "Couldn't establish a federated share." : "Nuk mund të vendosni një shpërndarje të federuar", + "Couldn't establish a federated share." : "Nuk mund të vendosej një shpërndarje e federuar.", "Couldn't establish a federated share, maybe the password was wrong." : "Nuk mund të vendoset një shpërndarje e federuar, ndoshta fjalëkalimi ishte gabim.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Kërkesa për shpërndarje te federuar ishte e suksesshme, ju do të merrni një ftesë. Kontrolloni njoftimet tuaja.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Kërkesa Ndarja Federative u dërgua, ju do të merrni një ftesë. Kontrolloni njoftimet tuaja.", + "The mountpoint name contains invalid characters." : "Emri mountpoint përmban karaktere të pavlefshme.", "Not allowed to create a federated share with the owner." : "Nuk lejohet te krijoni një shpërndarje të federuar me zotëruesin", "Invalid or untrusted SSL certificate" : "Çertifikatë SSL e pavlefshme ose e dyshimtë", + "Could not authenticate to remote share, password might be wrong" : "Nuk mund të vërtetohej në pjesën e largët, fjalëkalimi mund të jetë i gabuar", "Storage not valid" : "memorja nuk është e vlefshme", + "Federated share added" : "Ndarje e federuar u shtua", "Couldn't add remote share" : "Nuk mund të shtohet ndarja në largësi", "Sharing %s failed, because this item is already shared with %s" : "Ndarja për %s dështoi, ngaqë ky objekt është ndarë një herë me %s", "Not allowed to create a federated share with the same user" : "S’i lejohet të krijojë një ndarje të federuar me të njëjtin përdorues", "File is already shared with %s" : "Skedari është ndarë tashmë me %s", "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Ndarja e %s dështoi, nuk mund të gjendet %s, ndoshta serveri është për momentin i paaksesueshëm ose përdor një çertifikatë të vetë-nënshkruar", "Could not find share" : "Nuk mund të gjenim ndarjen", + "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Ju pranuat \"%3$s\" si një shpërndarje në distancë nga %1$s (në emër të %2$s)", "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Ju ", "You received \"%3$s\" as a remote share from %1$s" : "Ju pranuat \"%3$s\" si një shpërndarje në distancë nga %1$s", + "You received {share} as a remote share from {user}" : "Ju morët {share} si një ndarje të largët nga {user}", "Accept" : "Pranoje", "Decline" : "Hidhe poshtë", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Ndani me mua përmes ID-së time për #Nextcloud Federated Cloud, shihni %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Ndani me mua përmes ID-së time për #Nextcloud Federated Cloud", "Sharing" : "Ndarje", + "Federated file sharing" : "Shpërndarja e skedarëve të federuar", "Federated Cloud Sharing" : "Ndarje Në Re të Federuar ", "Open documentation" : "Hap dokumentimin", + "Adjust how people can share between servers." : "Përshtatni mënyrën se si njerëzit mund të ndajnë midis serverëve.", "Allow users on this server to send shares to other servers" : "Lejoju përdoruesve në këtë shërbyes të dërgojnë ndarje në shërbyes të tjerë", "Allow users on this server to receive shares from other servers" : "Lejoju përdoruesve në këtë shërbyes të marrin ndarje nga shërbyes të tjerë", + "Search global and public address book for users" : "Kërko librin e adresave globale dhe publike për përdoruesit", + "Allow users to publish their data to a global and public address book" : "Lejo përdoruesit të publikojnë të dhënat e tyre në një libër adresash botërore dhe globale", "Federated Cloud" : "Re e Federuar", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Ju mund të ndani me këdo që përdor Nextcloud, ownCloud ose Pydio! Vetëm vendosni ID e tyre të Federated Cloud në dialogun e shpërndarjeve. Duket si person@cloud.example.com", "Your Federated Cloud ID:" : "ID-ja juaj për Re të Federuar:", + "Share it so your friends can share files with you:" : "Shërndajeni që miqtë tuaj mund të ndajnë skedarë me ju:", "Add to your website" : "Shtojeni te sajti juaj", "Share with me via Nextcloud" : "Ndani me mua përmes Nextcloud-it", "HTML Code:" : "Kod HTML:", + "Search global and public address book for users and let local users publish their data" : "Kërko librin e adresave globale dhe publike për përdoruesit dhe lejo që përdoruesit lokal të publikojnë të dhënat e tyre", "Share it:" : "Ndajeni:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federatedfilesharing/l10n/sq.json b/apps/federatedfilesharing/l10n/sq.json index 683231deae0..31e0211bff5 100644 --- a/apps/federatedfilesharing/l10n/sq.json +++ b/apps/federatedfilesharing/l10n/sq.json @@ -4,6 +4,7 @@ "Remote share" : "Ndarje në largësi", "Remote share password" : "Fjalëkalim ndarjeje të largët", "Cancel" : "Anulo", + "Add remote share" : "Shto shpëendarje në distancë", "Copy" : "Kopjo", "Copied!" : "U kopjua!", "Not supported!" : "Nuk mbështetet!", @@ -11,34 +12,46 @@ "Press Ctrl-C to copy." : "Shtypni Ctrl-C për të kopjuar", "Invalid Federated Cloud ID" : "ID Federated Cloud e pavlefshme", "Server to server sharing is not enabled on this server" : "Shpërndarja server në server nuk është e mundësuar në këtë server", - "Couldn't establish a federated share." : "Nuk mund të vendosni një shpërndarje të federuar", + "Couldn't establish a federated share." : "Nuk mund të vendosej një shpërndarje e federuar.", "Couldn't establish a federated share, maybe the password was wrong." : "Nuk mund të vendoset një shpërndarje e federuar, ndoshta fjalëkalimi ishte gabim.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Kërkesa për shpërndarje te federuar ishte e suksesshme, ju do të merrni një ftesë. Kontrolloni njoftimet tuaja.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Kërkesa Ndarja Federative u dërgua, ju do të merrni një ftesë. Kontrolloni njoftimet tuaja.", + "The mountpoint name contains invalid characters." : "Emri mountpoint përmban karaktere të pavlefshme.", "Not allowed to create a federated share with the owner." : "Nuk lejohet te krijoni një shpërndarje të federuar me zotëruesin", "Invalid or untrusted SSL certificate" : "Çertifikatë SSL e pavlefshme ose e dyshimtë", + "Could not authenticate to remote share, password might be wrong" : "Nuk mund të vërtetohej në pjesën e largët, fjalëkalimi mund të jetë i gabuar", "Storage not valid" : "memorja nuk është e vlefshme", + "Federated share added" : "Ndarje e federuar u shtua", "Couldn't add remote share" : "Nuk mund të shtohet ndarja në largësi", "Sharing %s failed, because this item is already shared with %s" : "Ndarja për %s dështoi, ngaqë ky objekt është ndarë një herë me %s", "Not allowed to create a federated share with the same user" : "S’i lejohet të krijojë një ndarje të federuar me të njëjtin përdorues", "File is already shared with %s" : "Skedari është ndarë tashmë me %s", "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Ndarja e %s dështoi, nuk mund të gjendet %s, ndoshta serveri është për momentin i paaksesueshëm ose përdor një çertifikatë të vetë-nënshkruar", "Could not find share" : "Nuk mund të gjenim ndarjen", + "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Ju pranuat \"%3$s\" si një shpërndarje në distancë nga %1$s (në emër të %2$s)", "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Ju ", "You received \"%3$s\" as a remote share from %1$s" : "Ju pranuat \"%3$s\" si një shpërndarje në distancë nga %1$s", + "You received {share} as a remote share from {user}" : "Ju morët {share} si një ndarje të largët nga {user}", "Accept" : "Pranoje", "Decline" : "Hidhe poshtë", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Ndani me mua përmes ID-së time për #Nextcloud Federated Cloud, shihni %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Ndani me mua përmes ID-së time për #Nextcloud Federated Cloud", "Sharing" : "Ndarje", + "Federated file sharing" : "Shpërndarja e skedarëve të federuar", "Federated Cloud Sharing" : "Ndarje Në Re të Federuar ", "Open documentation" : "Hap dokumentimin", + "Adjust how people can share between servers." : "Përshtatni mënyrën se si njerëzit mund të ndajnë midis serverëve.", "Allow users on this server to send shares to other servers" : "Lejoju përdoruesve në këtë shërbyes të dërgojnë ndarje në shërbyes të tjerë", "Allow users on this server to receive shares from other servers" : "Lejoju përdoruesve në këtë shërbyes të marrin ndarje nga shërbyes të tjerë", + "Search global and public address book for users" : "Kërko librin e adresave globale dhe publike për përdoruesit", + "Allow users to publish their data to a global and public address book" : "Lejo përdoruesit të publikojnë të dhënat e tyre në një libër adresash botërore dhe globale", "Federated Cloud" : "Re e Federuar", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Ju mund të ndani me këdo që përdor Nextcloud, ownCloud ose Pydio! Vetëm vendosni ID e tyre të Federated Cloud në dialogun e shpërndarjeve. Duket si person@cloud.example.com", "Your Federated Cloud ID:" : "ID-ja juaj për Re të Federuar:", + "Share it so your friends can share files with you:" : "Shërndajeni që miqtë tuaj mund të ndajnë skedarë me ju:", "Add to your website" : "Shtojeni te sajti juaj", "Share with me via Nextcloud" : "Ndani me mua përmes Nextcloud-it", "HTML Code:" : "Kod HTML:", + "Search global and public address book for users and let local users publish their data" : "Kërko librin e adresave globale dhe publike për përdoruesit dhe lejo që përdoruesit lokal të publikojnë të dhënat e tyre", "Share it:" : "Ndajeni:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/lib/BackgroundJob/RetryJob.php b/apps/federatedfilesharing/lib/BackgroundJob/RetryJob.php index 821647e5e39..bb07c2717f9 100644 --- a/apps/federatedfilesharing/lib/BackgroundJob/RetryJob.php +++ b/apps/federatedfilesharing/lib/BackgroundJob/RetryJob.php @@ -81,7 +81,7 @@ class RetryJob extends Job { * run the job, then remove it from the jobList * * @param JobList $jobList - * @param ILogger $logger + * @param ILogger|null $logger */ public function execute($jobList, ILogger $logger = null) { diff --git a/apps/federatedfilesharing/templates/settings-personal.php b/apps/federatedfilesharing/templates/settings-personal.php index c6be2a45f16..26365d2b70c 100644 --- a/apps/federatedfilesharing/templates/settings-personal.php +++ b/apps/federatedfilesharing/templates/settings-personal.php @@ -7,7 +7,7 @@ style('federatedfilesharing', 'settings-personal'); <?php if ($_['outgoingServer2serverShareEnabled']): ?> <div id="fileSharingSettings" class="section"> - <h2><?php p($l->t('Federated Cloud')); ?></h2> + <h2 data-anchor-name="federated-cloud"><?php p($l->t('Federated Cloud')); ?></h2> <p class="settings-hint"><?php p($l->t('You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com')); ?></p> <p> diff --git a/apps/federation/lib/AppInfo/Application.php b/apps/federation/lib/AppInfo/Application.php index 55647622915..38bbe293a56 100644 --- a/apps/federation/lib/AppInfo/Application.php +++ b/apps/federation/lib/AppInfo/Application.php @@ -24,75 +24,29 @@ namespace OCA\Federation\AppInfo; -use OCA\Federation\Controller\SettingsController; use OCA\Federation\DAV\FedAuth; -use OCA\Federation\DbHandler; use OCA\Federation\Hooks; use OCA\Federation\Middleware\AddServerMiddleware; -use OCA\Federation\SyncFederationAddressBooks; -use OCA\Federation\TrustedServers; -use OCP\AppFramework\IAppContainer; +use OCP\AppFramework\App; use OCP\SabrePluginEvent; use OCP\Util; use Sabre\DAV\Auth\Plugin; +use Sabre\DAV\Server; -class Application extends \OCP\AppFramework\App { +class Application extends App { /** * @param array $urlParams */ - public function __construct($urlParams = array()) { + public function __construct($urlParams = []) { parent::__construct('federation', $urlParams); - $this->registerService(); $this->registerMiddleware(); } - private function registerService() { - $container = $this->getContainer(); - - $container->registerService('addServerMiddleware', function(IAppContainer $c) { - return new AddServerMiddleware( - $c->getAppName(), - \OC::$server->getL10N($c->getAppName()), - \OC::$server->getLogger() - ); - }); - - $container->registerService('DbHandler', function(IAppContainer $c) { - return new DbHandler( - \OC::$server->getDatabaseConnection(), - \OC::$server->getL10N($c->getAppName()) - ); - }); - - $container->registerService('TrustedServers', function(IAppContainer $c) { - $server = $c->getServer(); - return new TrustedServers( - $c->query('DbHandler'), - $server->getHTTPClientService(), - $server->getLogger(), - $server->getJobList(), - $server->getSecureRandom(), - $server->getConfig(), - $server->getEventDispatcher() - ); - }); - - $container->registerService('SettingsController', function (IAppContainer $c) { - $server = $c->getServer(); - return new SettingsController( - $c->getAppName(), - $server->getRequest(), - $server->getL10N($c->getAppName()), - $c->query('TrustedServers') - ); - }); - - } - private function registerMiddleware() { $container = $this->getContainer(); - $container->registerMiddleware('addServerMiddleware'); + $container->registerAlias('AddServerMiddleware', AddServerMiddleware::class); + $container->registerMiddleWare('AddServerMiddleware'); } /** @@ -102,7 +56,7 @@ class Application extends \OCP\AppFramework\App { public function registerHooks() { $container = $this->getContainer(); - $hooksManager = new Hooks($container->query('TrustedServers')); + $hooksManager = $container->query(Hooks::class); Util::connectHook( 'OCP\Share', @@ -111,28 +65,18 @@ class Application extends \OCP\AppFramework\App { 'addServerHook' ); - $dispatcher = $this->getContainer()->getServer()->getEventDispatcher(); + $dispatcher = $container->getServer()->getEventDispatcher(); $dispatcher->addListener('OCA\DAV\Connector\Sabre::authInit', function($event) use($container) { if ($event instanceof SabrePluginEvent) { - $authPlugin = $event->getServer()->getPlugin('auth'); - if ($authPlugin instanceof Plugin) { - $h = new DbHandler($container->getServer()->getDatabaseConnection(), - $container->getServer()->getL10N('federation') - ); - $authPlugin->addBackend(new FedAuth($h)); + $server = $event->getServer(); + if ($server instanceof Server) { + $authPlugin = $server->getPlugin('auth'); + if ($authPlugin instanceof Plugin) { + $authPlugin->addBackend($container->query(FedAuth::class)); + } } } }); } - /** - * @return SyncFederationAddressBooks - */ - public function getSyncService() { - $syncService = \OC::$server->query('CardDAVSyncService'); - $dbHandler = $this->getContainer()->query('DbHandler'); - $discoveryService = \OC::$server->query(\OCP\OCS\IDiscoveryService::class); - return new SyncFederationAddressBooks($dbHandler, $syncService, $discoveryService); - } - } diff --git a/apps/federation/lib/BackgroundJob/GetSharedSecret.php b/apps/federation/lib/BackgroundJob/GetSharedSecret.php index b1367be9524..bf9f58999db 100644 --- a/apps/federation/lib/BackgroundJob/GetSharedSecret.php +++ b/apps/federation/lib/BackgroundJob/GetSharedSecret.php @@ -32,8 +32,10 @@ use OC\BackgroundJob\Job; use OCA\Federation\DbHandler; use OCA\Federation\TrustedServers; use OCP\AppFramework\Http; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; use OCP\Http\Client\IClient; +use OCP\Http\Client\IClientService; use OCP\Http\Client\IResponse; use OCP\ILogger; use OCP\IURLGenerator; @@ -46,7 +48,7 @@ use OCP\OCS\IDiscoveryService; * * @package OCA\Federation\Backgroundjob */ -class GetSharedSecret extends Job{ +class GetSharedSecret extends Job { /** @var IClient */ private $httpClient; @@ -69,6 +71,9 @@ class GetSharedSecret extends Job{ /** @var ILogger */ private $logger; + /** @var ITimeFactory */ + private $timeFactory; + /** @var bool */ protected $retainJob = false; @@ -76,52 +81,46 @@ class GetSharedSecret extends Job{ private $defaultEndPoint = '/ocs/v2.php/apps/federation/api/v1/shared-secret'; + /** @var int 30 day = 2592000sec */ + private $maxLifespan = 2592000; + /** * RequestSharedSecret constructor. * - * @param IClient $httpClient + * @param IClientService $httpClientService * @param IURLGenerator $urlGenerator * @param IJobList $jobList * @param TrustedServers $trustedServers * @param ILogger $logger * @param DbHandler $dbHandler * @param IDiscoveryService $ocsDiscoveryService + * @param ITimeFactory $timeFactory */ public function __construct( - IClient $httpClient = null, - IURLGenerator $urlGenerator = null, - IJobList $jobList = null, - TrustedServers $trustedServers = null, - ILogger $logger = null, - DbHandler $dbHandler = null, - IDiscoveryService $ocsDiscoveryService = null + IClientService $httpClientService, + IURLGenerator $urlGenerator, + IJobList $jobList, + TrustedServers $trustedServers, + ILogger $logger, + DbHandler $dbHandler, + IDiscoveryService $ocsDiscoveryService, + ITimeFactory $timeFactory ) { - $this->logger = $logger ? $logger : \OC::$server->getLogger(); - $this->httpClient = $httpClient ? $httpClient : \OC::$server->getHTTPClientService()->newClient(); - $this->jobList = $jobList ? $jobList : \OC::$server->getJobList(); - $this->urlGenerator = $urlGenerator ? $urlGenerator : \OC::$server->getURLGenerator(); - $this->dbHandler = $dbHandler ? $dbHandler : new DbHandler(\OC::$server->getDatabaseConnection(), \OC::$server->getL10N('federation')); - $this->ocsDiscoveryService = $ocsDiscoveryService ? $ocsDiscoveryService : \OC::$server->query(\OCP\OCS\IDiscoveryService::class); - if ($trustedServers) { - $this->trustedServers = $trustedServers; - } else { - $this->trustedServers = new TrustedServers( - $this->dbHandler, - \OC::$server->getHTTPClientService(), - $this->logger, - $this->jobList, - \OC::$server->getSecureRandom(), - \OC::$server->getConfig(), - \OC::$server->getEventDispatcher() - ); - } + $this->logger = $logger; + $this->httpClient = $httpClientService->newClient(); + $this->jobList = $jobList; + $this->urlGenerator = $urlGenerator; + $this->dbHandler = $dbHandler; + $this->ocsDiscoveryService = $ocsDiscoveryService; + $this->trustedServers = $trustedServers; + $this->timeFactory = $timeFactory; } /** * run the job, then remove it from the joblist * * @param JobList $jobList - * @param ILogger $logger + * @param ILogger|null $logger */ public function execute($jobList, ILogger $logger = null) { $target = $this->argument['url']; @@ -130,8 +129,10 @@ class GetSharedSecret extends Job{ $this->parentExecute($jobList, $logger); } - if (!$this->retainJob) { - $jobList->remove($this, $this->argument); + $jobList->remove($this, $this->argument); + + if ($this->retainJob) { + $this->reAddJob($this->argument); } } @@ -147,14 +148,24 @@ class GetSharedSecret extends Job{ protected function run($argument) { $target = $argument['url']; + $created = isset($argument['created']) ? (int)$argument['created'] : $this->timeFactory->getTime(); + $currentTime = $this->timeFactory->getTime(); $source = $this->urlGenerator->getAbsoluteURL('/'); $source = rtrim($source, '/'); $token = $argument['token']; + // kill job after 30 days of trying + $deadline = $currentTime - $this->maxLifespan; + if ($created < $deadline) { + $this->retainJob = false; + $this->trustedServers->setServerStatus($target,TrustedServers::STATUS_FAILURE); + return; + } + $endPoints = $this->ocsDiscoveryService->discover($target, 'FEDERATED_SHARING'); $endPoint = isset($endPoints['shared-secret']) ? $endPoints['shared-secret'] : $this->defaultEndPoint; - // make sure that we have a well formated url + // make sure that we have a well formatted url $url = rtrim($target, '/') . '/' . trim($endPoint, '/') . $this->format; $result = null; @@ -215,4 +226,23 @@ class GetSharedSecret extends Job{ } } + + /** + * re-add background job + * + * @param array $argument + */ + protected function reAddJob(array $argument) { + $url = $argument['url']; + $created = isset($argument['created']) ? (int)$argument['created'] : $this->timeFactory->getTime(); + $token = $argument['token']; + $this->jobList->add( + GetSharedSecret::class, + [ + 'url' => $url, + 'token' => $token, + 'created' => $created + ] + ); + } } diff --git a/apps/federation/lib/BackgroundJob/RequestSharedSecret.php b/apps/federation/lib/BackgroundJob/RequestSharedSecret.php index 9123e37300d..7effb838d8b 100644 --- a/apps/federation/lib/BackgroundJob/RequestSharedSecret.php +++ b/apps/federation/lib/BackgroundJob/RequestSharedSecret.php @@ -33,8 +33,10 @@ use OC\BackgroundJob\Job; use OCA\Federation\DbHandler; use OCA\Federation\TrustedServers; use OCP\AppFramework\Http; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; use OCP\Http\Client\IClient; +use OCP\Http\Client\IClientService; use OCP\ILogger; use OCP\IURLGenerator; use OCP\OCS\IDiscoveryService; @@ -69,6 +71,9 @@ class RequestSharedSecret extends Job { /** @var ILogger */ private $logger; + /** @var ITimeFactory */ + private $timeFactory; + /** @var bool */ protected $retainJob = false; @@ -76,43 +81,39 @@ class RequestSharedSecret extends Job { private $defaultEndPoint = '/ocs/v2.php/apps/federation/api/v1/request-shared-secret'; + /** @var int 30 day = 2592000sec */ + private $maxLifespan = 2592000; + /** * RequestSharedSecret constructor. * - * @param IClient $httpClient + * @param IClientService $httpClientService * @param IURLGenerator $urlGenerator * @param IJobList $jobList * @param TrustedServers $trustedServers * @param DbHandler $dbHandler * @param IDiscoveryService $ocsDiscoveryService + * @param ILogger $logger + * @param ITimeFactory $timeFactory */ public function __construct( - IClient $httpClient = null, - IURLGenerator $urlGenerator = null, - IJobList $jobList = null, - TrustedServers $trustedServers = null, - DbHandler $dbHandler = null, - IDiscoveryService $ocsDiscoveryService = null + IClientService $httpClientService, + IURLGenerator $urlGenerator, + IJobList $jobList, + TrustedServers $trustedServers, + DbHandler $dbHandler, + IDiscoveryService $ocsDiscoveryService, + ILogger $logger, + ITimeFactory $timeFactory ) { - $this->httpClient = $httpClient ? $httpClient : \OC::$server->getHTTPClientService()->newClient(); - $this->jobList = $jobList ? $jobList : \OC::$server->getJobList(); - $this->urlGenerator = $urlGenerator ? $urlGenerator : \OC::$server->getURLGenerator(); - $this->dbHandler = $dbHandler ? $dbHandler : new DbHandler(\OC::$server->getDatabaseConnection(), \OC::$server->getL10N('federation')); - $this->logger = \OC::$server->getLogger(); - $this->ocsDiscoveryService = $ocsDiscoveryService ? $ocsDiscoveryService : \OC::$server->query(\OCP\OCS\IDiscoveryService::class); - if ($trustedServers) { - $this->trustedServers = $trustedServers; - } else { - $this->trustedServers = new TrustedServers( - $this->dbHandler, - \OC::$server->getHTTPClientService(), - $this->logger, - $this->jobList, - \OC::$server->getSecureRandom(), - \OC::$server->getConfig(), - \OC::$server->getEventDispatcher() - ); - } + $this->httpClient = $httpClientService->newClient(); + $this->jobList = $jobList; + $this->urlGenerator = $urlGenerator; + $this->dbHandler = $dbHandler; + $this->logger = $logger; + $this->ocsDiscoveryService = $ocsDiscoveryService; + $this->trustedServers = $trustedServers; + $this->timeFactory = $timeFactory; } @@ -120,7 +121,7 @@ class RequestSharedSecret extends Job { * run the job, then remove it from the joblist * * @param JobList $jobList - * @param ILogger $logger + * @param ILogger|null $logger */ public function execute($jobList, ILogger $logger = null) { $target = $this->argument['url']; @@ -129,8 +130,10 @@ class RequestSharedSecret extends Job { $this->parentExecute($jobList, $logger); } - if (!$this->retainJob) { - $jobList->remove($this, $this->argument); + $jobList->remove($this, $this->argument); + + if ($this->retainJob) { + $this->reAddJob($this->argument); } } @@ -147,10 +150,20 @@ class RequestSharedSecret extends Job { protected function run($argument) { $target = $argument['url']; + $created = isset($argument['created']) ? (int)$argument['created'] : $this->timeFactory->getTime(); + $currentTime = $this->timeFactory->getTime(); $source = $this->urlGenerator->getAbsoluteURL('/'); $source = rtrim($source, '/'); $token = $argument['token']; + // kill job after 30 days of trying + $deadline = $currentTime - $this->maxLifespan; + if ($created < $deadline) { + $this->retainJob = false; + $this->trustedServers->setServerStatus($target, TrustedServers::STATUS_FAILURE); + return; + } + $endPoints = $this->ocsDiscoveryService->discover($target, 'FEDERATED_SHARING'); $endPoint = isset($endPoints['shared-secret']) ? $endPoints['shared-secret'] : $this->defaultEndPoint; @@ -198,4 +211,24 @@ class RequestSharedSecret extends Job { } } + + /** + * re-add background job + * + * @param array $argument + */ + protected function reAddJob(array $argument) { + $url = $argument['url']; + $created = isset($argument['created']) ? (int)$argument['created'] : $this->timeFactory->getTime(); + $token = $argument['token']; + + $this->jobList->add( + RequestSharedSecret::class, + [ + 'url' => $url, + 'token' => $token, + 'created' => $created + ] + ); + } } diff --git a/apps/federation/lib/Command/SyncFederationAddressBooks.php b/apps/federation/lib/Command/SyncFederationAddressBooks.php index fb3a2749ff8..db332d3d7ad 100644 --- a/apps/federation/lib/Command/SyncFederationAddressBooks.php +++ b/apps/federation/lib/Command/SyncFederationAddressBooks.php @@ -36,7 +36,7 @@ class SyncFederationAddressBooks extends Command { /** * @param \OCA\Federation\SyncFederationAddressBooks $syncService */ - function __construct(\OCA\Federation\SyncFederationAddressBooks $syncService) { + public function __construct(\OCA\Federation\SyncFederationAddressBooks $syncService) { parent::__construct(); $this->syncService = $syncService; diff --git a/apps/federation/lib/Controller/OCSAuthAPIController.php b/apps/federation/lib/Controller/OCSAuthAPIController.php index 594299a2d02..b0594877b23 100644 --- a/apps/federation/lib/Controller/OCSAuthAPIController.php +++ b/apps/federation/lib/Controller/OCSAuthAPIController.php @@ -32,6 +32,7 @@ use OCA\Federation\TrustedServers; use OCP\AppFramework\Http; use OCP\AppFramework\OCS\OCSForbiddenException; use OCP\AppFramework\OCSController; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; use OCP\ILogger; use OCP\IRequest; @@ -61,6 +62,9 @@ class OCSAuthAPIController extends OCSController{ /** @var ILogger */ private $logger; + /** @var ITimeFactory */ + private $timeFactory; + /** * OCSAuthAPI constructor. * @@ -71,6 +75,7 @@ class OCSAuthAPIController extends OCSController{ * @param TrustedServers $trustedServers * @param DbHandler $dbHandler * @param ILogger $logger + * @param ITimeFactory $timeFactory */ public function __construct( $appName, @@ -79,7 +84,8 @@ class OCSAuthAPIController extends OCSController{ IJobList $jobList, TrustedServers $trustedServers, DbHandler $dbHandler, - ILogger $logger + ILogger $logger, + ITimeFactory $timeFactory ) { parent::__construct($appName, $request); @@ -88,6 +94,7 @@ class OCSAuthAPIController extends OCSController{ $this->trustedServers = $trustedServers; $this->dbHandler = $dbHandler; $this->logger = $logger; + $this->timeFactory = $timeFactory; } /** @@ -149,20 +156,12 @@ class OCSAuthAPIController extends OCSController{ throw new OCSForbiddenException(); } - // we ask for the shared secret so we no longer have to ask the other server - // to request the shared secret - $this->jobList->remove('OCA\Federation\BackgroundJob\RequestSharedSecret', - [ - 'url' => $url, - 'token' => $localToken - ] - ); - $this->jobList->add( 'OCA\Federation\BackgroundJob\GetSharedSecret', [ 'url' => $url, 'token' => $token, + 'created' => $this->timeFactory->getTime() ] ); @@ -210,5 +209,4 @@ class OCSAuthAPIController extends OCSController{ $storedToken = $this->dbHandler->getToken($url); return hash_equals($storedToken, $token); } - } diff --git a/apps/federation/lib/Controller/SettingsController.php b/apps/federation/lib/Controller/SettingsController.php index afbaa4abeee..68267dcb73c 100644 --- a/apps/federation/lib/Controller/SettingsController.php +++ b/apps/federation/lib/Controller/SettingsController.php @@ -26,7 +26,6 @@ namespace OCA\Federation\Controller; use OC\HintException; use OCA\Federation\TrustedServers; use OCP\AppFramework\Controller; -use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; use OCP\IL10N; use OCP\IRequest; diff --git a/apps/federation/lib/DAV/FedAuth.php b/apps/federation/lib/DAV/FedAuth.php index ae78ffeded9..511888f7683 100644 --- a/apps/federation/lib/DAV/FedAuth.php +++ b/apps/federation/lib/DAV/FedAuth.php @@ -63,6 +63,6 @@ class FedAuth extends AbstractBasic { /** * @inheritdoc */ - function challenge(RequestInterface $request, ResponseInterface $response) { + public function challenge(RequestInterface $request, ResponseInterface $response) { } } diff --git a/apps/federation/lib/DbHandler.php b/apps/federation/lib/DbHandler.php index c938cfb1583..04968daf0fd 100644 --- a/apps/federation/lib/DbHandler.php +++ b/apps/federation/lib/DbHandler.php @@ -88,11 +88,11 @@ class DbHandler { if ($result) { return (int)$this->connection->lastInsertId('*PREFIX*'.$this->dbTable); - } else { - $message = 'Internal failure, Could not add trusted server: ' . $url; - $message_t = $this->IL10N->t('Could not add server'); - throw new HintException($message, $message_t); } + + $message = 'Internal failure, Could not add trusted server: ' . $url; + $message_t = $this->IL10N->t('Could not add server'); + throw new HintException($message, $message_t); } /** @@ -137,8 +137,11 @@ class DbHandler { */ public function getAllServer() { $query = $this->connection->getQueryBuilder(); - $query->select(['url', 'url_hash', 'id', 'status', 'shared_secret', 'sync_token'])->from($this->dbTable); - $result = $query->execute()->fetchAll(); + $query->select(['url', 'url_hash', 'id', 'status', 'shared_secret', 'sync_token']) + ->from($this->dbTable); + $statement = $query->execute(); + $result = $statement->fetchAll(); + $statement->closeCursor(); return $result; } @@ -151,10 +154,13 @@ class DbHandler { public function serverExists($url) { $hash = $this->hash($url); $query = $this->connection->getQueryBuilder(); - $query->select('url')->from($this->dbTable) + $query->select('url') + ->from($this->dbTable) ->where($query->expr()->eq('url_hash', $query->createParameter('url_hash'))) ->setParameter('url_hash', $hash); - $result = $query->execute()->fetchAll(); + $statement = $query->execute(); + $result = $statement->fetchAll(); + $statement->closeCursor(); return !empty($result); } @@ -190,7 +196,9 @@ class DbHandler { ->where($query->expr()->eq('url_hash', $query->createParameter('url_hash'))) ->setParameter('url_hash', $hash); - $result = $query->execute()->fetch(); + $statement = $query->execute(); + $result = $statement->fetch(); + $statement->closeCursor(); if (!isset($result['token'])) { throw new \Exception('No token found for: ' . $url); @@ -229,7 +237,9 @@ class DbHandler { ->where($query->expr()->eq('url_hash', $query->createParameter('url_hash'))) ->setParameter('url_hash', $hash); - $result = $query->execute()->fetch(); + $statement = $query->execute(); + $result = $statement->fetch(); + $statement->closeCursor(); return $result['shared_secret']; } @@ -265,7 +275,9 @@ class DbHandler { ->where($query->expr()->eq('url_hash', $query->createParameter('url_hash'))) ->setParameter('url_hash', $hash); - $result = $query->execute()->fetch(); + $statement = $query->execute(); + $result = $statement->fetch(); + $statement->closeCursor(); return (int)$result['status']; } @@ -314,7 +326,9 @@ class DbHandler { $query->select('url')->from($this->dbTable) ->where($query->expr()->eq('shared_secret', $query->createNamedParameter($password))); - $result = $query->execute()->fetch(); + $statement = $query->execute(); + $result = $statement->fetch(); + $statement->closeCursor(); return !empty($result); } diff --git a/apps/federation/lib/Middleware/AddServerMiddleware.php b/apps/federation/lib/Middleware/AddServerMiddleware.php index 71e517f6b87..082596216c8 100644 --- a/apps/federation/lib/Middleware/AddServerMiddleware.php +++ b/apps/federation/lib/Middleware/AddServerMiddleware.php @@ -26,6 +26,7 @@ namespace OCA\Federation\Middleware; use OC\HintException; use OCA\Federation\Controller\SettingsController; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http; use OCP\AppFramework\Http\JSONResponse; use OCP\AppFramework\Middleware; @@ -43,6 +44,11 @@ class AddServerMiddleware extends Middleware { /** @var ILogger */ protected $logger; + /** + * @param string $appName + * @param IL10N $l + * @param ILogger $logger + */ public function __construct($appName, IL10N $l, ILogger $logger) { $this->appName = $appName; $this->l = $l; @@ -52,10 +58,11 @@ class AddServerMiddleware extends Middleware { /** * Log error message and return a response which can be displayed to the user * - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * @param \Exception $exception * @return JSONResponse + * @throws \Exception */ public function afterException($controller, $methodName, \Exception $exception) { if (($controller instanceof SettingsController) === false) { diff --git a/apps/federation/lib/SyncJob.php b/apps/federation/lib/SyncJob.php index 060504efb7b..2e5d1578ba2 100644 --- a/apps/federation/lib/SyncJob.php +++ b/apps/federation/lib/SyncJob.php @@ -24,20 +24,31 @@ namespace OCA\Federation; use OC\BackgroundJob\TimedJob; use OCA\Federation\AppInfo\Application; +use OCP\ILogger; class SyncJob extends TimedJob { - public function __construct() { + /** @var SyncFederationAddressBooks */ + protected $syncService; + + /** @var ILogger */ + protected $logger; + + /** + * @param SyncFederationAddressBooks $syncService + * @param ILogger $logger + */ + public function __construct(SyncFederationAddressBooks $syncService, ILogger $logger) { // Run once a day $this->setInterval(24 * 60 * 60); + $this->syncService = $syncService; + $this->logger = $logger; } protected function run($argument) { - $app = new Application(); - $ss = $app->getSyncService(); - $ss->syncThemAll(function($url, $ex) { + $this->syncService->syncThemAll(function($url, $ex) { if ($ex instanceof \Exception) { - \OC::$server->getLogger()->error("Error while syncing $url : " . $ex->getMessage(), ['app' => 'fed-sync']); + $this->logger->error("Error while syncing $url : " . $ex->getMessage(), ['app' => 'fed-sync']); } }); } diff --git a/apps/federation/lib/TrustedServers.php b/apps/federation/lib/TrustedServers.php index 9bf1452eab3..067cf671a96 100644 --- a/apps/federation/lib/TrustedServers.php +++ b/apps/federation/lib/TrustedServers.php @@ -28,6 +28,7 @@ namespace OCA\Federation; use OC\HintException; use OCP\AppFramework\Http; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; use OCP\Http\Client\IClientService; use OCP\IConfig; @@ -68,6 +69,9 @@ class TrustedServers { /** @var EventDispatcherInterface */ private $dispatcher; + /** @var ITimeFactory */ + private $timeFactory; + /** * @param DbHandler $dbHandler * @param IClientService $httpClientService @@ -76,6 +80,7 @@ class TrustedServers { * @param ISecureRandom $secureRandom * @param IConfig $config * @param EventDispatcherInterface $dispatcher + * @param ITimeFactory $timeFactory */ public function __construct( DbHandler $dbHandler, @@ -84,7 +89,8 @@ class TrustedServers { IJobList $jobList, ISecureRandom $secureRandom, IConfig $config, - EventDispatcherInterface $dispatcher + EventDispatcherInterface $dispatcher, + ITimeFactory $timeFactory ) { $this->dbHandler = $dbHandler; $this->httpClientService = $httpClientService; @@ -93,6 +99,7 @@ class TrustedServers { $this->secureRandom = $secureRandom; $this->config = $config; $this->dispatcher = $dispatcher; + $this->timeFactory = $timeFactory; } /** @@ -111,7 +118,8 @@ class TrustedServers { 'OCA\Federation\BackgroundJob\RequestSharedSecret', [ 'url' => $url, - 'token' => $token + 'token' => $token, + 'created' => $this->timeFactory->getTime() ] ); } diff --git a/apps/federation/tests/BackgroundJob/GetSharedSecretTest.php b/apps/federation/tests/BackgroundJob/GetSharedSecretTest.php index 6364ddaedff..8759392caea 100644 --- a/apps/federation/tests/BackgroundJob/GetSharedSecretTest.php +++ b/apps/federation/tests/BackgroundJob/GetSharedSecretTest.php @@ -31,8 +31,10 @@ use OCA\Files_Sharing\Tests\TestCase; use OCA\Federation\DbHandler; use OCA\Federation\TrustedServers; use OCP\AppFramework\Http; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; use OCP\Http\Client\IClient; +use OCP\Http\Client\IClientService; use OCP\Http\Client\IResponse; use OCP\ILogger; use OCP\IURLGenerator; @@ -47,36 +49,43 @@ use OCP\OCS\IDiscoveryService; */ class GetSharedSecretTest extends TestCase { - /** @var \PHPUnit_Framework_MockObject_MockObject | IClient */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IClient */ private $httpClient; - /** @var \PHPUnit_Framework_MockObject_MockObject | IJobList */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IClientService */ + private $httpClientService; + + /** @var \PHPUnit_Framework_MockObject_MockObject|IJobList */ private $jobList; - /** @var \PHPUnit_Framework_MockObject_MockObject | IURLGenerator */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IURLGenerator */ private $urlGenerator; - /** @var \PHPUnit_Framework_MockObject_MockObject | TrustedServers */ + /** @var \PHPUnit_Framework_MockObject_MockObject|TrustedServers */ private $trustedServers; - /** @var \PHPUnit_Framework_MockObject_MockObject | DbHandler */ + /** @var \PHPUnit_Framework_MockObject_MockObject|DbHandler */ private $dbHandler; - /** @var \PHPUnit_Framework_MockObject_MockObject | ILogger */ + /** @var \PHPUnit_Framework_MockObject_MockObject|ILogger */ private $logger; - /** @var \PHPUnit_Framework_MockObject_MockObject | IResponse */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IResponse */ private $response; - /** @var \PHPUnit_Framework_MockObject_MockObject | IDiscoveryService */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IDiscoveryService */ private $discoverService; + /** @var \PHPUnit_Framework_MockObject_MockObject|ITimeFactory */ + private $timeFactory; + /** @var GetSharedSecret */ private $getSharedSecret; public function setUp() { parent::setUp(); + $this->httpClientService = $this->createMock(IClientService::class); $this->httpClient = $this->getMockBuilder(IClient::class)->getMock(); $this->jobList = $this->getMockBuilder(IJobList::class)->getMock(); $this->urlGenerator = $this->getMockBuilder(IURLGenerator::class)->getMock(); @@ -87,17 +96,20 @@ class GetSharedSecretTest extends TestCase { $this->logger = $this->getMockBuilder(ILogger::class)->getMock(); $this->response = $this->getMockBuilder(IResponse::class)->getMock(); $this->discoverService = $this->getMockBuilder(IDiscoveryService::class)->getMock(); + $this->timeFactory = $this->createMock(ITimeFactory::class); $this->discoverService->expects($this->any())->method('discover')->willReturn([]); + $this->httpClientService->expects($this->any())->method('newClient')->willReturn($this->httpClient); $this->getSharedSecret = new GetSharedSecret( - $this->httpClient, + $this->httpClientService, $this->urlGenerator, $this->jobList, $this->trustedServers, $this->logger, $this->dbHandler, - $this->discoverService + $this->discoverService, + $this->timeFactory ); } @@ -112,16 +124,17 @@ class GetSharedSecretTest extends TestCase { $getSharedSecret = $this->getMockBuilder('OCA\Federation\BackgroundJob\GetSharedSecret') ->setConstructorArgs( [ - $this->httpClient, + $this->httpClientService, $this->urlGenerator, $this->jobList, $this->trustedServers, $this->logger, $this->dbHandler, - $this->discoverService + $this->discoverService, + $this->timeFactory ] )->setMethods(['parentExecute'])->getMock(); - $this->invokePrivate($getSharedSecret, 'argument', [['url' => 'url']]); + $this->invokePrivate($getSharedSecret, 'argument', [['url' => 'url', 'token' => 'token']]); $this->trustedServers->expects($this->once())->method('isTrustedServer') ->with('url')->willReturn($isTrustedServer); @@ -131,10 +144,23 @@ class GetSharedSecretTest extends TestCase { $getSharedSecret->expects($this->never())->method('parentExecute'); } $this->invokePrivate($getSharedSecret, 'retainJob', [$retainBackgroundJob]); + $this->jobList->expects($this->once())->method('remove'); + + $this->timeFactory->method('getTime')->willReturn(42); + if ($retainBackgroundJob) { - $this->jobList->expects($this->never())->method('remove'); + $this->jobList->expects($this->once()) + ->method('add') + ->with( + GetSharedSecret::class, + [ + 'url' => 'url', + 'token' => 'token', + 'created' => 42, + ] + ); } else { - $this->jobList->expects($this->once())->method('remove'); + $this->jobList->expects($this->never())->method('add'); } $getSharedSecret->execute($this->jobList); @@ -155,13 +181,15 @@ class GetSharedSecretTest extends TestCase { * @param int $statusCode */ public function testRun($statusCode) { - $target = 'targetURL'; $source = 'sourceURL'; $token = 'token'; $argument = ['url' => $target, 'token' => $token]; + $this->timeFactory->method('getTime') + ->willReturn(42); + $this->urlGenerator->expects($this->once())->method('getAbsoluteURL')->with('/') ->willReturn($source); $this->httpClient->expects($this->once())->method('get') @@ -208,7 +236,6 @@ class GetSharedSecretTest extends TestCase { } else { $this->assertFalse($this->invokePrivate($this->getSharedSecret, 'retainJob')); } - } public function dataTestRun() { @@ -219,4 +246,33 @@ class GetSharedSecretTest extends TestCase { ]; } + public function testRunExpired() { + $target = 'targetURL'; + $source = 'sourceURL'; + $token = 'token'; + $created = 42; + + $argument = [ + 'url' => $target, + 'token' => $token, + 'created' => $created, + ]; + + $this->urlGenerator->expects($this->once()) + ->method('getAbsoluteURL') + ->with('/') + ->willReturn($source); + + $this->timeFactory->method('getTime') + ->willReturn($created + 2592000 + 1); + + $this->trustedServers->expects($this->once()) + ->method('setServerStatus') + ->with( + $target, + TrustedServers::STATUS_FAILURE + ); + + $this->invokePrivate($this->getSharedSecret, 'run', [$argument]); + } } diff --git a/apps/federation/tests/BackgroundJob/RequestSharedSecretTest.php b/apps/federation/tests/BackgroundJob/RequestSharedSecretTest.php index 06da29d17fc..276180e5137 100644 --- a/apps/federation/tests/BackgroundJob/RequestSharedSecretTest.php +++ b/apps/federation/tests/BackgroundJob/RequestSharedSecretTest.php @@ -29,42 +29,55 @@ use OCA\Federation\BackgroundJob\RequestSharedSecret; use OCA\Federation\DbHandler; use OCA\Federation\TrustedServers; use OCP\AppFramework\Http; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; use OCP\Http\Client\IClient; +use OCP\Http\Client\IClientService; use OCP\Http\Client\IResponse; +use OCP\ILogger; use OCP\IURLGenerator; use OCP\OCS\IDiscoveryService; use Test\TestCase; class RequestSharedSecretTest extends TestCase { - /** @var \PHPUnit_Framework_MockObject_MockObject | IClient */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IClientService */ + private $httpClientService; + + /** @var \PHPUnit_Framework_MockObject_MockObject|IClient */ private $httpClient; - /** @var \PHPUnit_Framework_MockObject_MockObject | IJobList */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IJobList */ private $jobList; - /** @var \PHPUnit_Framework_MockObject_MockObject | IURLGenerator */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IURLGenerator */ private $urlGenerator; - /** @var \PHPUnit_Framework_MockObject_MockObject | DbHandler */ + /** @var \PHPUnit_Framework_MockObject_MockObject|DbHandler */ private $dbHandler; - /** @var \PHPUnit_Framework_MockObject_MockObject | TrustedServers */ + /** @var \PHPUnit_Framework_MockObject_MockObject|TrustedServers */ private $trustedServers; - /** @var \PHPUnit_Framework_MockObject_MockObject | IResponse */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IResponse */ private $response; - /** @var \PHPUnit_Framework_MockObject_MockObject | IDiscoveryService */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IDiscoveryService */ private $discoveryService; + /** @var \PHPUnit_Framework_MockObject_MockObject|ILogger */ + private $logger; + + /** @var \PHPUnit_Framework_MockObject_MockObject|ITimeFactory */ + private $timeFactory; + /** @var RequestSharedSecret */ private $requestSharedSecret; public function setUp() { parent::setUp(); + $this->httpClientService = $this->createMock(IClientService::class); $this->httpClient = $this->getMockBuilder(IClient::class)->getMock(); $this->jobList = $this->getMockBuilder(IJobList::class)->getMock(); $this->urlGenerator = $this->getMockBuilder(IURLGenerator::class)->getMock(); @@ -74,16 +87,21 @@ class RequestSharedSecretTest extends TestCase { ->disableOriginalConstructor()->getMock(); $this->response = $this->getMockBuilder(IResponse::class)->getMock(); $this->discoveryService = $this->getMockBuilder(IDiscoveryService::class)->getMock(); + $this->logger = $this->createMock(ILogger::class); + $this->timeFactory = $this->createMock(ITimeFactory::class); $this->discoveryService->expects($this->any())->method('discover')->willReturn([]); + $this->httpClientService->expects($this->any())->method('newClient')->willReturn($this->httpClient); $this->requestSharedSecret = new RequestSharedSecret( - $this->httpClient, + $this->httpClientService, $this->urlGenerator, $this->jobList, $this->trustedServers, $this->dbHandler, - $this->discoveryService + $this->discoveryService, + $this->logger, + $this->timeFactory ); } @@ -98,15 +116,17 @@ class RequestSharedSecretTest extends TestCase { $requestSharedSecret = $this->getMockBuilder('OCA\Federation\BackgroundJob\RequestSharedSecret') ->setConstructorArgs( [ - $this->httpClient, + $this->httpClientService, $this->urlGenerator, $this->jobList, $this->trustedServers, $this->dbHandler, - $this->discoveryService + $this->discoveryService, + $this->logger, + $this->timeFactory ] )->setMethods(['parentExecute'])->getMock(); - $this->invokePrivate($requestSharedSecret, 'argument', [['url' => 'url']]); + $this->invokePrivate($requestSharedSecret, 'argument', [['url' => 'url', 'token' => 'token']]); $this->trustedServers->expects($this->once())->method('isTrustedServer') ->with('url')->willReturn($isTrustedServer); @@ -116,10 +136,23 @@ class RequestSharedSecretTest extends TestCase { $requestSharedSecret->expects($this->never())->method('parentExecute'); } $this->invokePrivate($requestSharedSecret, 'retainJob', [$retainBackgroundJob]); + $this->jobList->expects($this->once())->method('remove'); + + $this->timeFactory->method('getTime')->willReturn(42); + if ($retainBackgroundJob) { - $this->jobList->expects($this->never())->method('remove'); + $this->jobList->expects($this->once()) + ->method('add') + ->with( + RequestSharedSecret::class, + [ + 'url' => 'url', + 'token' => 'token', + 'created' => 42, + ] + ); } else { - $this->jobList->expects($this->once())->method('remove'); + $this->jobList->expects($this->never())->method('add'); } $requestSharedSecret->execute($this->jobList); @@ -147,6 +180,8 @@ class RequestSharedSecretTest extends TestCase { $argument = ['url' => $target, 'token' => $token]; + $this->timeFactory->method('getTime')->willReturn(42); + $this->urlGenerator->expects($this->once())->method('getAbsoluteURL')->with('/') ->willReturn($source); $this->httpClient->expects($this->once())->method('post') @@ -195,4 +230,34 @@ class RequestSharedSecretTest extends TestCase { [Http::STATUS_CONFLICT], ]; } + + public function testRunExpired() { + $target = 'targetURL'; + $source = 'sourceURL'; + $token = 'token'; + $created = 42; + + $argument = [ + 'url' => $target, + 'token' => $token, + 'created' => $created, + ]; + + $this->urlGenerator->expects($this->once()) + ->method('getAbsoluteURL') + ->with('/') + ->willReturn($source); + + $this->timeFactory->method('getTime') + ->willReturn($created + 2592000 + 1); + + $this->trustedServers->expects($this->once()) + ->method('setServerStatus') + ->with( + $target, + TrustedServers::STATUS_FAILURE + ); + + $this->invokePrivate($this->requestSharedSecret, 'run', [$argument]); + } } diff --git a/apps/federation/tests/Controller/OCSAuthAPIControllerTest.php b/apps/federation/tests/Controller/OCSAuthAPIControllerTest.php index 2b231b4fca0..ef6c7c80bfc 100644 --- a/apps/federation/tests/Controller/OCSAuthAPIControllerTest.php +++ b/apps/federation/tests/Controller/OCSAuthAPIControllerTest.php @@ -29,8 +29,8 @@ use OC\BackgroundJob\JobList; use OCA\Federation\Controller\OCSAuthAPIController; use OCA\Federation\DbHandler; use OCA\Federation\TrustedServers; -use OCP\AppFramework\Http; use OCP\AppFramework\OCS\OCSForbiddenException; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\ILogger; use OCP\IRequest; use OCP\Security\ISecureRandom; @@ -38,40 +38,45 @@ use Test\TestCase; class OCSAuthAPIControllerTest extends TestCase { - /** @var \PHPUnit_Framework_MockObject_MockObject | IRequest */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IRequest */ private $request; - /** @var \PHPUnit_Framework_MockObject_MockObject | ISecureRandom */ + /** @var \PHPUnit_Framework_MockObject_MockObject|ISecureRandom */ private $secureRandom; - /** @var \PHPUnit_Framework_MockObject_MockObject | JobList */ + /** @var \PHPUnit_Framework_MockObject_MockObject|JobList */ private $jobList; - /** @var \PHPUnit_Framework_MockObject_MockObject | TrustedServers */ + /** @var \PHPUnit_Framework_MockObject_MockObject|TrustedServers */ private $trustedServers; - /** @var \PHPUnit_Framework_MockObject_MockObject | DbHandler */ + /** @var \PHPUnit_Framework_MockObject_MockObject|DbHandler */ private $dbHandler; - /** @var \PHPUnit_Framework_MockObject_MockObject | ILogger */ + /** @var \PHPUnit_Framework_MockObject_MockObject|ILogger */ private $logger; + /** @var \PHPUnit_Framework_MockObject_MockObject|ITimeFactory */ + private $timeFactory; + + /** @var OCSAuthAPIController */ private $ocsAuthApi; + /** @var int simulated timestamp */ + private $currentTime = 1234567; + public function setUp() { parent::setUp(); - $this->request = $this->getMockBuilder('OCP\IRequest')->getMock(); - $this->secureRandom = $this->getMockBuilder('OCP\Security\ISecureRandom')->getMock(); - $this->trustedServers = $this->getMockBuilder('OCA\Federation\TrustedServers') - ->disableOriginalConstructor()->getMock(); - $this->dbHandler = $this->getMockBuilder('OCA\Federation\DbHandler') - ->disableOriginalConstructor()->getMock(); - $this->jobList = $this->getMockBuilder('OC\BackgroundJob\JobList') - ->disableOriginalConstructor()->getMock(); - $this->logger = $this->getMockBuilder('OCP\ILogger') - ->disableOriginalConstructor()->getMock(); + $this->request = $this->createMock(IRequest::class); + $this->secureRandom = $this->createMock(ISecureRandom::class); + $this->trustedServers = $this->createMock(TrustedServers::class); + $this->dbHandler = $this->createMock(DbHandler::class); + $this->jobList = $this->createMock(JobList::class); + $this->logger = $this->createMock(ILogger::class); + $this->timeFactory = $this->createMock(ITimeFactory::class); + $this->ocsAuthApi = new OCSAuthAPIController( 'federation', @@ -80,9 +85,13 @@ class OCSAuthAPIControllerTest extends TestCase { $this->jobList, $this->trustedServers, $this->dbHandler, - $this->logger + $this->logger, + $this->timeFactory ); + $this->timeFactory->method('getTime') + ->willReturn($this->currentTime); + } /** @@ -105,9 +114,7 @@ class OCSAuthAPIControllerTest extends TestCase { if ($ok) { $this->jobList->expects($this->once())->method('add') - ->with('OCA\Federation\BackgroundJob\GetSharedSecret', ['url' => $url, 'token' => $token]); - $this->jobList->expects($this->once())->method('remove') - ->with('OCA\Federation\BackgroundJob\RequestSharedSecret', ['url' => $url, 'token' => $localToken]); + ->with('OCA\Federation\BackgroundJob\GetSharedSecret', ['url' => $url, 'token' => $token, 'created' => $this->currentTime]); } else { $this->jobList->expects($this->never())->method('add'); $this->jobList->expects($this->never())->method('remove'); @@ -151,7 +158,8 @@ class OCSAuthAPIControllerTest extends TestCase { $this->jobList, $this->trustedServers, $this->dbHandler, - $this->logger + $this->logger, + $this->timeFactory ] )->setMethods(['isValidToken'])->getMock(); diff --git a/apps/federation/tests/TrustedServersTest.php b/apps/federation/tests/TrustedServersTest.php index 598c2f01c90..5995c5e4462 100644 --- a/apps/federation/tests/TrustedServersTest.php +++ b/apps/federation/tests/TrustedServersTest.php @@ -29,6 +29,7 @@ namespace OCA\Federation\Tests; use OCA\Federation\DbHandler; use OCA\Federation\TrustedServers; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; use OCP\Http\Client\IClient; use OCP\Http\Client\IClientService; @@ -71,6 +72,9 @@ class TrustedServersTest extends TestCase { /** @var \PHPUnit_Framework_MockObject_MockObject | EventDispatcherInterface */ private $dispatcher; + /** @var \PHPUnit_Framework_MockObject_MockObject|ITimeFactory */ + private $timeFactory; + public function setUp() { parent::setUp(); @@ -85,6 +89,7 @@ class TrustedServersTest extends TestCase { $this->jobList = $this->getMockBuilder(IJobList::class)->getMock(); $this->secureRandom = $this->getMockBuilder(ISecureRandom::class)->getMock(); $this->config = $this->getMockBuilder(IConfig::class)->getMock(); + $this->timeFactory = $this->createMock(ITimeFactory::class); $this->trustedServers = new TrustedServers( $this->dbHandler, @@ -93,7 +98,8 @@ class TrustedServersTest extends TestCase { $this->jobList, $this->secureRandom, $this->config, - $this->dispatcher + $this->dispatcher, + $this->timeFactory ); } @@ -114,13 +120,16 @@ class TrustedServersTest extends TestCase { $this->jobList, $this->secureRandom, $this->config, - $this->dispatcher + $this->dispatcher, + $this->timeFactory ] ) ->setMethods(['normalizeUrl', 'updateProtocol']) ->getMock(); $trustedServers->expects($this->once())->method('updateProtocol') ->with('url')->willReturn('https://url'); + $this->timeFactory->method('getTime') + ->willReturn(1234567); $this->dbHandler->expects($this->once())->method('addServer')->with('https://url') ->willReturn($success); @@ -130,7 +139,7 @@ class TrustedServersTest extends TestCase { $this->dbHandler->expects($this->once())->method('addToken')->with('https://url', 'token'); $this->jobList->expects($this->once())->method('add') ->with('OCA\Federation\BackgroundJob\RequestSharedSecret', - ['url' => 'https://url', 'token' => 'token']); + ['url' => 'https://url', 'token' => 'token', 'created' => 1234567]); } else { $this->jobList->expects($this->never())->method('add'); } @@ -272,7 +281,8 @@ class TrustedServersTest extends TestCase { $this->jobList, $this->secureRandom, $this->config, - $this->dispatcher + $this->dispatcher, + $this->timeFactory ] ) ->setMethods(['checkOwnCloudVersion']) diff --git a/apps/files/ajax/download.php b/apps/files/ajax/download.php index 17a7fd8b322..7c33cdec6dd 100644 --- a/apps/files/ajax/download.php +++ b/apps/files/ajax/download.php @@ -51,7 +51,7 @@ if(isset($_GET['downloadStartSecret']) setcookie('ocDownloadStarted', $_GET['downloadStartSecret'], time() + 20, '/'); } -$server_params = array( 'head' => \OC::$server->getRequest()->getMethod() == 'HEAD' ); +$server_params = array( 'head' => \OC::$server->getRequest()->getMethod() === 'HEAD' ); /** * Http range requests support diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js index 8779fa0da2f..1d13642f842 100644 --- a/apps/files/l10n/ja.js +++ b/apps/files/l10n/ja.js @@ -102,7 +102,9 @@ OC.L10N.register( "A file has been added to or removed from your <strong>favorites</strong>" : "<strong>お気に入り</strong>にファイルが追加または削除されたとき", "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "ファイルまたはフォルダが <strong>更新</ strong>されたか、<strong>名前が変更</strong>されたとき", "A new file or folder has been <strong>created</strong>" : "新しいファイルまたはフォルダーを<strong>作成</strong>したとき", + "A file or folder has been <strong>deleted</strong>" : "ファイルまたはフォルダーが <strong>削除されました</strong>", "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "<strong>お気に入りファイル</strong>の作成と変更の通知を制限する<em>(ストリームのみ)</em>", + "A file or folder has been <strong>restored</strong>" : "ファイルまたはフォルダーが <strong>復元されました</strong>", "Unlimited" : "無制限", "Upload (max. %s)" : "アップロード ( 最大 %s )", "File handling" : "ファイル操作", diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json index 62d9d29fdbc..99c46c8d0a6 100644 --- a/apps/files/l10n/ja.json +++ b/apps/files/l10n/ja.json @@ -100,7 +100,9 @@ "A file has been added to or removed from your <strong>favorites</strong>" : "<strong>お気に入り</strong>にファイルが追加または削除されたとき", "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "ファイルまたはフォルダが <strong>更新</ strong>されたか、<strong>名前が変更</strong>されたとき", "A new file or folder has been <strong>created</strong>" : "新しいファイルまたはフォルダーを<strong>作成</strong>したとき", + "A file or folder has been <strong>deleted</strong>" : "ファイルまたはフォルダーが <strong>削除されました</strong>", "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "<strong>お気に入りファイル</strong>の作成と変更の通知を制限する<em>(ストリームのみ)</em>", + "A file or folder has been <strong>restored</strong>" : "ファイルまたはフォルダーが <strong>復元されました</strong>", "Unlimited" : "無制限", "Upload (max. %s)" : "アップロード ( 最大 %s )", "File handling" : "ファイル操作", diff --git a/apps/files/l10n/sq.js b/apps/files/l10n/sq.js index e71ecf8a408..56666e1d820 100644 --- a/apps/files/l10n/sq.js +++ b/apps/files/l10n/sq.js @@ -45,6 +45,7 @@ OC.L10N.register( "Could not create file \"{file}\" because it already exists" : "S’u krijua dot kartela \"{file}\" ngaqë ka një të tillë", "Could not create folder \"{dir}\" because it already exists" : "S’u krijua dot dosja \"{dir}\" ngaqë ka një të tillë", "Error deleting file \"{fileName}\"." : "Gabim në fshirjen e kartelës \"{fileName}\".", + "No search results in other folders for {tag}{filter}{endtag}" : "Asnjë rezultat i kërkimit në dosjet e tjera për {tag} {filter} {endtag}", "Name" : "Emër", "Size" : "Madhësi", "Modified" : "Ndryshuar më", @@ -57,6 +58,7 @@ OC.L10N.register( "New" : "E re", "\"{name}\" is an invalid file name." : "\"{name}\" është emër i pavlefshëm kartele.", "File name cannot be empty." : "Emri i kartelës s’mund të jetë i zbrazët.", + "\"{name}\" is not an allowed filetype" : "\"{name}\" nuk është një lloj skedari i lejuar", "Storage of {owner} is full, files can not be updated or synced anymore!" : "Depozita e {owner} është plot, kartelat s’mund të përditësohen ose sinkronizohet më!", "Your storage is full, files can not be updated or synced anymore!" : "Depozita juaj është plot, kartelat s’mund të përditësohen ose sinkronizohet më!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Depozita e {owner} është thuasje plot ({usedSpacePercent}%)", @@ -64,6 +66,7 @@ OC.L10N.register( "_matches '{filter}'_::_match '{filter}'_" : ["ka përputhje me '{filter}'","ka përputhje me '{filter}'"], "View in folder" : "Shikoje në dosje", "Copied!" : "E kopjuar!", + "Copy direct link (only works for users who have access to this file/folder)" : "Kopjo lidhjen e drejtpërdrejtë (funksionon vetëm për përdoruesit që kanë qasje në këtë skedar/dosje)", "Path" : "Rrugë", "_%n byte_::_%n bytes_" : ["%n bajt","%n bajte"], "Favorited" : "U kalua e parapëlqyer", @@ -82,6 +85,7 @@ OC.L10N.register( "Restored by {user}" : "U rikthye nga {user}", "Renamed by {user}" : "U riemërua nga {user}", "Moved by {user}" : "U ndryshua nga {user}", + "\"remote user\"" : "\"përdorues i largët\"", "You created {file}" : "Ju krijuat {file}", "{user} created {file}" : "{user} krijoj {file}", "{file} was created in a public folder" : "{file} u krijua në një folder publik", @@ -98,7 +102,9 @@ OC.L10N.register( "A file has been added to or removed from your <strong>favorites</strong>" : "Një skedar është shtuar ose është hequr nga <strong>të preferuarat</strong> tuaja", "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Një skedar ose dosje është <strong>ndryshuar</strong> ose <strong>riemëruar</strong>", "A new file or folder has been <strong>created</strong>" : "<strong>U krijua</strong> një kartelë ose dosje e re", + "A file or folder has been <strong>deleted</strong>" : "Një skedar ose dosje është <strong> fshirë </strong>", "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Kufizojini njoftimet mbi krijim dhe ndryshim kartelash vetëm për <strong>kartelat tuaja të parapëlqyera</strong> <em>(Vetëm te rrjedha)</em>", + "A file or folder has been <strong>restored</strong>" : "Një skedar ose dosje është <strong> rikthyer </strong>", "Unlimited" : "E palimituar", "Upload (max. %s)" : "Ngarkim (max. %s)", "File handling" : "Trajtim kartele", @@ -107,6 +113,8 @@ OC.L10N.register( "Save" : "Ruaje", "With PHP-FPM it might take 5 minutes for changes to be applied." : "Me PHP-FPM mund të duhen 5 minuta që ndryshimet të hyjnë në fuqi.", "Missing permissions to edit from here." : "Mungojnë lejet për përpunim që nga këtu.", + "%s of %s used" : "%s nga %s është përdorur", + "%s used" : "%s të përdorura", "Settings" : "Rregullime", "Show hidden files" : "Shfaq kartela të fshehura", "WebDAV" : "WebDAV", @@ -117,6 +125,7 @@ OC.L10N.register( "Select all" : "Përzgjidhe krejt", "Upload too large" : "Ngarkim shumë i madh", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Kartelat që po rrekeni të ngarkoni e tejkalojnë madhësinë maksimale për ngarkime kartelash në këtë shërbyes.", + "No favorites yet" : "Asnjë preferencë akoma", "Files and folders you mark as favorite will show up here" : "Këtu do të duken kartelat dhe dosjet që i shënoni si të parapëlqyera", "Shared with you" : "E ndarë me ju", "Shared with others" : "E ndarë me të tjerët", @@ -125,13 +134,16 @@ OC.L10N.register( "Deleted files" : "Skedar të fshirë", "Text file" : "Kartelë tekst", "New text file.txt" : "Kartelë e re file.txt", + "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["{hours}:{minutes}:{seconds} orë të mbetura","{hours}:{minutes}:{seconds} orë të mbetura"], "{hours}:{minutes}h" : "{hours}:{minutes}h", + "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["{minutes}:{seconds} minuta të mbetura","{minutes}:{seconds} minuta të mbetura"], "{minutes}:{seconds}m" : "{minutes}:{seconds}m", + "_{seconds} second left_::_{seconds} seconds left_" : ["{seconds} sekonda të mbetura","{seconds} sekonda të mbetura"], "{seconds}s" : "{seconds}s", "Any moment now..." : "Në çdo çast tani…", "Soon..." : "Së shpejti…", "File upload is in progress. Leaving the page now will cancel the upload." : "Ngarkimi i skedarit është në punë e sipër. Largimi nga faqja do të anulojë ngarkimin.", - "Copy local link" : "Kopjo lidhjen lokale", + "Copy local link" : "Kopjo linkun lokale", "Folder" : "Dosje", "Upload" : "Ngarkoje", "A new file or folder has been <strong>deleted</strong>" : "Një skedar ose dosje e re është <strong>fshirë</strong>", diff --git a/apps/files/l10n/sq.json b/apps/files/l10n/sq.json index 3bba80cfd92..4ba2864e80e 100644 --- a/apps/files/l10n/sq.json +++ b/apps/files/l10n/sq.json @@ -43,6 +43,7 @@ "Could not create file \"{file}\" because it already exists" : "S’u krijua dot kartela \"{file}\" ngaqë ka një të tillë", "Could not create folder \"{dir}\" because it already exists" : "S’u krijua dot dosja \"{dir}\" ngaqë ka një të tillë", "Error deleting file \"{fileName}\"." : "Gabim në fshirjen e kartelës \"{fileName}\".", + "No search results in other folders for {tag}{filter}{endtag}" : "Asnjë rezultat i kërkimit në dosjet e tjera për {tag} {filter} {endtag}", "Name" : "Emër", "Size" : "Madhësi", "Modified" : "Ndryshuar më", @@ -55,6 +56,7 @@ "New" : "E re", "\"{name}\" is an invalid file name." : "\"{name}\" është emër i pavlefshëm kartele.", "File name cannot be empty." : "Emri i kartelës s’mund të jetë i zbrazët.", + "\"{name}\" is not an allowed filetype" : "\"{name}\" nuk është një lloj skedari i lejuar", "Storage of {owner} is full, files can not be updated or synced anymore!" : "Depozita e {owner} është plot, kartelat s’mund të përditësohen ose sinkronizohet më!", "Your storage is full, files can not be updated or synced anymore!" : "Depozita juaj është plot, kartelat s’mund të përditësohen ose sinkronizohet më!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Depozita e {owner} është thuasje plot ({usedSpacePercent}%)", @@ -62,6 +64,7 @@ "_matches '{filter}'_::_match '{filter}'_" : ["ka përputhje me '{filter}'","ka përputhje me '{filter}'"], "View in folder" : "Shikoje në dosje", "Copied!" : "E kopjuar!", + "Copy direct link (only works for users who have access to this file/folder)" : "Kopjo lidhjen e drejtpërdrejtë (funksionon vetëm për përdoruesit që kanë qasje në këtë skedar/dosje)", "Path" : "Rrugë", "_%n byte_::_%n bytes_" : ["%n bajt","%n bajte"], "Favorited" : "U kalua e parapëlqyer", @@ -80,6 +83,7 @@ "Restored by {user}" : "U rikthye nga {user}", "Renamed by {user}" : "U riemërua nga {user}", "Moved by {user}" : "U ndryshua nga {user}", + "\"remote user\"" : "\"përdorues i largët\"", "You created {file}" : "Ju krijuat {file}", "{user} created {file}" : "{user} krijoj {file}", "{file} was created in a public folder" : "{file} u krijua në një folder publik", @@ -96,7 +100,9 @@ "A file has been added to or removed from your <strong>favorites</strong>" : "Një skedar është shtuar ose është hequr nga <strong>të preferuarat</strong> tuaja", "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Një skedar ose dosje është <strong>ndryshuar</strong> ose <strong>riemëruar</strong>", "A new file or folder has been <strong>created</strong>" : "<strong>U krijua</strong> një kartelë ose dosje e re", + "A file or folder has been <strong>deleted</strong>" : "Një skedar ose dosje është <strong> fshirë </strong>", "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Kufizojini njoftimet mbi krijim dhe ndryshim kartelash vetëm për <strong>kartelat tuaja të parapëlqyera</strong> <em>(Vetëm te rrjedha)</em>", + "A file or folder has been <strong>restored</strong>" : "Një skedar ose dosje është <strong> rikthyer </strong>", "Unlimited" : "E palimituar", "Upload (max. %s)" : "Ngarkim (max. %s)", "File handling" : "Trajtim kartele", @@ -105,6 +111,8 @@ "Save" : "Ruaje", "With PHP-FPM it might take 5 minutes for changes to be applied." : "Me PHP-FPM mund të duhen 5 minuta që ndryshimet të hyjnë në fuqi.", "Missing permissions to edit from here." : "Mungojnë lejet për përpunim që nga këtu.", + "%s of %s used" : "%s nga %s është përdorur", + "%s used" : "%s të përdorura", "Settings" : "Rregullime", "Show hidden files" : "Shfaq kartela të fshehura", "WebDAV" : "WebDAV", @@ -115,6 +123,7 @@ "Select all" : "Përzgjidhe krejt", "Upload too large" : "Ngarkim shumë i madh", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Kartelat që po rrekeni të ngarkoni e tejkalojnë madhësinë maksimale për ngarkime kartelash në këtë shërbyes.", + "No favorites yet" : "Asnjë preferencë akoma", "Files and folders you mark as favorite will show up here" : "Këtu do të duken kartelat dhe dosjet që i shënoni si të parapëlqyera", "Shared with you" : "E ndarë me ju", "Shared with others" : "E ndarë me të tjerët", @@ -123,13 +132,16 @@ "Deleted files" : "Skedar të fshirë", "Text file" : "Kartelë tekst", "New text file.txt" : "Kartelë e re file.txt", + "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["{hours}:{minutes}:{seconds} orë të mbetura","{hours}:{minutes}:{seconds} orë të mbetura"], "{hours}:{minutes}h" : "{hours}:{minutes}h", + "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["{minutes}:{seconds} minuta të mbetura","{minutes}:{seconds} minuta të mbetura"], "{minutes}:{seconds}m" : "{minutes}:{seconds}m", + "_{seconds} second left_::_{seconds} seconds left_" : ["{seconds} sekonda të mbetura","{seconds} sekonda të mbetura"], "{seconds}s" : "{seconds}s", "Any moment now..." : "Në çdo çast tani…", "Soon..." : "Së shpejti…", "File upload is in progress. Leaving the page now will cancel the upload." : "Ngarkimi i skedarit është në punë e sipër. Largimi nga faqja do të anulojë ngarkimin.", - "Copy local link" : "Kopjo lidhjen lokale", + "Copy local link" : "Kopjo linkun lokale", "Folder" : "Dosje", "Upload" : "Ngarkoje", "A new file or folder has been <strong>deleted</strong>" : "Një skedar ose dosje e re është <strong>fshirë</strong>", diff --git a/apps/files/lib/Helper.php b/apps/files/lib/Helper.php index d2cebce5ddc..4a5595999d2 100644 --- a/apps/files/lib/Helper.php +++ b/apps/files/lib/Helper.php @@ -227,7 +227,7 @@ class Helper { foreach ($filesById as $key => $fileWithTags) { foreach($fileList as $key2 => $file){ - if( $file[$fileIdentifier] == $key){ + if( $file[$fileIdentifier] === $key){ $fileList[$key2] = $fileWithTags; } } diff --git a/apps/files/lib/Settings/Admin.php b/apps/files/lib/Settings/Admin.php index da1d5deaf35..faaeb5b89c1 100644 --- a/apps/files/lib/Settings/Admin.php +++ b/apps/files/lib/Settings/Admin.php @@ -46,7 +46,7 @@ class Admin implements ISettings { * @return TemplateResponse */ public function getForm() { - $htaccessWorking = (getenv('htaccessWorking') == 'true'); + $htaccessWorking = (getenv('htaccessWorking') === 'true'); $htaccessWritable = is_writable(\OC::$SERVERROOT.'/.htaccess'); $userIniWritable = is_writable(\OC::$SERVERROOT.'/.user.ini'); diff --git a/apps/files_external/ajax/oauth2.php b/apps/files_external/ajax/oauth2.php index db2570800af..8b257b77ef6 100644 --- a/apps/files_external/ajax/oauth2.php +++ b/apps/files_external/ajax/oauth2.php @@ -46,8 +46,8 @@ if (isset($_POST['client_id']) && isset($_POST['client_secret']) && isset($_POST $client->setApprovalPrompt('force'); $client->setAccessType('offline'); if (isset($_POST['step'])) { - $step = $_POST['step']; - if ($step == 1) { + $step = (int) $_POST['step']; + if ($step === 1) { try { $authUrl = $client->createAuthUrl(); OCP\JSON::success(array('data' => array( @@ -58,7 +58,7 @@ if (isset($_POST['client_id']) && isset($_POST['client_secret']) && isset($_POST 'message' => $l->t('Step 1 failed. Exception: %s', array($exception->getMessage())) ))); } - } else if ($step == 2 && isset($_POST['code'])) { + } else if ($step === 2 && isset($_POST['code'])) { try { $token = $client->authenticate((string)$_POST['code']); OCP\JSON::success(array('data' => array( diff --git a/apps/files_external/l10n/ja.js b/apps/files_external/l10n/ja.js index 9afb655d950..e76aece67ae 100644 --- a/apps/files_external/l10n/ja.js +++ b/apps/files_external/l10n/ja.js @@ -24,11 +24,13 @@ OC.L10N.register( "Saving..." : "保存中...", "Save" : "保存", "Empty response from the server" : "サーバーから空の応答がありました", + "Couldn't access. Please log out and in again to activate this mount point" : "アクセスできません。ログアウトして、再度このマウントポイントをアクティベートしてください。", "Couldn't get the information from the remote server: {code} {type}" : "リモートサーバーから情報を取得できませんでした:{code} {type}", "Couldn't get the list of external mount points: {type}" : "外部マウントポイントのリストを取得出来ませんでした。: {type}", "There was an error with message: " : "メッセージ付きのエラーが発生しました:", "External mount error" : "外部マウントエラー", "external-storage" : "外部ストレージ", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Windowsネットワークドライブのマウントポイントのリストが取得できませんでした: サーバーからのレスポンスは空でした。", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "いくつかの設定済み外部マウントポイントに接続できませんでした。詳細情報は赤い行をクリックしてください", "Please enter the credentials for the {mount} mount" : " {mount} のマウントのために必要な資格情報を入力してください", "Username" : "ユーザー名", diff --git a/apps/files_external/l10n/ja.json b/apps/files_external/l10n/ja.json index a1997a0c136..09243f9b1c7 100644 --- a/apps/files_external/l10n/ja.json +++ b/apps/files_external/l10n/ja.json @@ -22,11 +22,13 @@ "Saving..." : "保存中...", "Save" : "保存", "Empty response from the server" : "サーバーから空の応答がありました", + "Couldn't access. Please log out and in again to activate this mount point" : "アクセスできません。ログアウトして、再度このマウントポイントをアクティベートしてください。", "Couldn't get the information from the remote server: {code} {type}" : "リモートサーバーから情報を取得できませんでした:{code} {type}", "Couldn't get the list of external mount points: {type}" : "外部マウントポイントのリストを取得出来ませんでした。: {type}", "There was an error with message: " : "メッセージ付きのエラーが発生しました:", "External mount error" : "外部マウントエラー", "external-storage" : "外部ストレージ", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Windowsネットワークドライブのマウントポイントのリストが取得できませんでした: サーバーからのレスポンスは空でした。", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "いくつかの設定済み外部マウントポイントに接続できませんでした。詳細情報は赤い行をクリックしてください", "Please enter the credentials for the {mount} mount" : " {mount} のマウントのために必要な資格情報を入力してください", "Username" : "ユーザー名", diff --git a/apps/files_external/l10n/sq.js b/apps/files_external/l10n/sq.js index 05e18fe3336..8999e01abc1 100644 --- a/apps/files_external/l10n/sq.js +++ b/apps/files_external/l10n/sq.js @@ -24,11 +24,13 @@ OC.L10N.register( "Saving..." : "Po ruhet …", "Save" : "Ruaje", "Empty response from the server" : "Përgjigje e zbrazët prej serverit", + "Couldn't access. Please log out and in again to activate this mount point" : "Nuk mund të ketë akses. Ju lutemi, dilni dhe hyni që të aktivizohet kjo pikë montimi", "Couldn't get the information from the remote server: {code} {type}" : "Nuk u morën dot të dhëna nga shërbyesi në largësi: {code} {type}", "Couldn't get the list of external mount points: {type}" : "S’u mor dot lista e pikave të jashtme të montimit: {type}", "There was an error with message: " : "Pati një gabim me këtë mesazh:", "External mount error" : "Gabim i jashtëm montimi", "external-storage" : "ruajtje-jashtme", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "S’u mor dot lista e pikave të montimit Windows network drive: përgjigje e zbrazët nga shërbyesi", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Disa nga pikat e jashtme të formësuara të montimit s’janë të lidhura. Ju lutemi, klikoni në shigjetën(at) e kuqe për më tepër të dhëna", "Please enter the credentials for the {mount} mount" : "Ju lutemi, jepni kredencialet për pikën e montimit {mount}", "Username" : "Emër përdoruesi", @@ -36,6 +38,7 @@ OC.L10N.register( "Credentials saved" : "Kredencialet u ruajtën", "Credentials saving failed" : "Ruajtja e kredencialeve dështoi", "Credentials required" : "Lypsen kredenciale", + "Storage with ID \"%d\" not found" : "Ruajtja me ID \"%d\" nuk u gjet", "Invalid backend or authentication mechanism class" : "Mekanizëm shërbimi ose klasë mekanizmi mirëfilltësimi e palvefshme", "Invalid mount point" : "Pikë montimi e pavlefshme", "Objectstore forbidden" : "Objectstore e ndaluar", @@ -46,6 +49,7 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Parametra mekanizmi mirëfilltësimi të papërmbushur", "Insufficient data: %s" : "Të dhëna të pamjaftueshme: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Ruajtja me ID \"%d\" nuk është i editueshëm nga përdorues", "Access key" : "Kyç hyrjesh", "Secret key" : "Kyç i fshehtë", "Builtin" : "I brendshëm", @@ -101,6 +105,7 @@ OC.L10N.register( "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Mbështetja e cURL në PHP nuk është e instaluar ose e aktivizuar. Lidhja e %s nuk është e mundur. Ju lutemi kërkojini administratorin të sistemit tuaj që ta instaloj.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Mbështetja e FTP në PHP nuk është e aktivizuar ose instaluar.Lidhja e %s nuk është e mundur.Ju lutem kërkojini administratorit të sistemit tuaj që ta instalojë.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" nuk është instaluar.Montimi i %s nuk është i mundur.Ju lutem kërkojini administratorit të sistemit tuaj ta instalojë.", + "External storage support" : "Suport i kujtesë së jashtme", "No external storage configured" : "Pa depozita të jashtme të formësuara", "You can add external storages in the personal settings" : "Depozita të jashtme mund të shtoni që prej rregullimeve personale", "Name" : "Emër", diff --git a/apps/files_external/l10n/sq.json b/apps/files_external/l10n/sq.json index a46ee3b89e4..2b2e224c5ba 100644 --- a/apps/files_external/l10n/sq.json +++ b/apps/files_external/l10n/sq.json @@ -22,11 +22,13 @@ "Saving..." : "Po ruhet …", "Save" : "Ruaje", "Empty response from the server" : "Përgjigje e zbrazët prej serverit", + "Couldn't access. Please log out and in again to activate this mount point" : "Nuk mund të ketë akses. Ju lutemi, dilni dhe hyni që të aktivizohet kjo pikë montimi", "Couldn't get the information from the remote server: {code} {type}" : "Nuk u morën dot të dhëna nga shërbyesi në largësi: {code} {type}", "Couldn't get the list of external mount points: {type}" : "S’u mor dot lista e pikave të jashtme të montimit: {type}", "There was an error with message: " : "Pati një gabim me këtë mesazh:", "External mount error" : "Gabim i jashtëm montimi", "external-storage" : "ruajtje-jashtme", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "S’u mor dot lista e pikave të montimit Windows network drive: përgjigje e zbrazët nga shërbyesi", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Disa nga pikat e jashtme të formësuara të montimit s’janë të lidhura. Ju lutemi, klikoni në shigjetën(at) e kuqe për më tepër të dhëna", "Please enter the credentials for the {mount} mount" : "Ju lutemi, jepni kredencialet për pikën e montimit {mount}", "Username" : "Emër përdoruesi", @@ -34,6 +36,7 @@ "Credentials saved" : "Kredencialet u ruajtën", "Credentials saving failed" : "Ruajtja e kredencialeve dështoi", "Credentials required" : "Lypsen kredenciale", + "Storage with ID \"%d\" not found" : "Ruajtja me ID \"%d\" nuk u gjet", "Invalid backend or authentication mechanism class" : "Mekanizëm shërbimi ose klasë mekanizmi mirëfilltësimi e palvefshme", "Invalid mount point" : "Pikë montimi e pavlefshme", "Objectstore forbidden" : "Objectstore e ndaluar", @@ -44,6 +47,7 @@ "Unsatisfied authentication mechanism parameters" : "Parametra mekanizmi mirëfilltësimi të papërmbushur", "Insufficient data: %s" : "Të dhëna të pamjaftueshme: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Ruajtja me ID \"%d\" nuk është i editueshëm nga përdorues", "Access key" : "Kyç hyrjesh", "Secret key" : "Kyç i fshehtë", "Builtin" : "I brendshëm", @@ -99,6 +103,7 @@ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Mbështetja e cURL në PHP nuk është e instaluar ose e aktivizuar. Lidhja e %s nuk është e mundur. Ju lutemi kërkojini administratorin të sistemit tuaj që ta instaloj.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Mbështetja e FTP në PHP nuk është e aktivizuar ose instaluar.Lidhja e %s nuk është e mundur.Ju lutem kërkojini administratorit të sistemit tuaj që ta instalojë.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" nuk është instaluar.Montimi i %s nuk është i mundur.Ju lutem kërkojini administratorit të sistemit tuaj ta instalojë.", + "External storage support" : "Suport i kujtesë së jashtme", "No external storage configured" : "Pa depozita të jashtme të formësuara", "You can add external storages in the personal settings" : "Depozita të jashtme mund të shtoni që prej rregullimeve personale", "Name" : "Emër", diff --git a/apps/files_external/lib/Command/Applicable.php b/apps/files_external/lib/Command/Applicable.php index c7c2f6aa216..2e8311db9ec 100644 --- a/apps/files_external/lib/Command/Applicable.php +++ b/apps/files_external/lib/Command/Applicable.php @@ -71,27 +71,27 @@ class Applicable extends Base { 'The id of the mount to edit' )->addOption( 'add-user', - null, + '', InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'user to add as applicable' )->addOption( 'remove-user', - null, + '', InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'user to remove as applicable' )->addOption( 'add-group', - null, + '', InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'group to add as applicable' )->addOption( 'remove-group', - null, + '', InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'group to remove as applicable' )->addOption( 'remove-all', - null, + '', InputOption::VALUE_NONE, 'Set the mount to be globally applicable' ); diff --git a/apps/files_external/lib/Command/Create.php b/apps/files_external/lib/Command/Create.php index d5b320dcfc2..ff9fa3ae878 100644 --- a/apps/files_external/lib/Command/Create.php +++ b/apps/files_external/lib/Command/Create.php @@ -83,7 +83,7 @@ class Create extends Base { ->setDescription('Create a new mount configuration') ->addOption( 'user', - null, + '', InputOption::VALUE_OPTIONAL, 'user to add the mount configuration for, if not set the mount will be added as system mount' ) @@ -110,7 +110,7 @@ class Create extends Base { ) ->addOption( 'dry', - null, + '', InputOption::VALUE_NONE, 'Don\'t save the created mount, only list the new mount' ); @@ -180,7 +180,7 @@ class Create extends Base { if ($input->getOption('output') === self::OUTPUT_FORMAT_PLAIN) { $output->writeln('<info>Storage created with id ' . $mount->getId() . '</info>'); } else { - $output->writeln($mount->getId()); + $output->writeln((string)$mount->getId()); } } return 0; diff --git a/apps/files_external/lib/Command/Delete.php b/apps/files_external/lib/Command/Delete.php index d63aa35050c..015995ec14f 100644 --- a/apps/files_external/lib/Command/Delete.php +++ b/apps/files_external/lib/Command/Delete.php @@ -103,7 +103,7 @@ class Delete extends Base { $question = new ConfirmationQuestion('Delete this mount? [y/N] ', false); if (!$questionHelper->ask($input, $output, $question)) { - return; + return null; } } diff --git a/apps/files_external/lib/Command/Import.php b/apps/files_external/lib/Command/Import.php index 2159c0a001e..712a8851c8a 100644 --- a/apps/files_external/lib/Command/Import.php +++ b/apps/files_external/lib/Command/Import.php @@ -87,7 +87,7 @@ class Import extends Base { ->setDescription('Import mount configurations') ->addOption( 'user', - null, + '', InputOption::VALUE_OPTIONAL, 'user to add the mount configurations for, if not set the mount will be added as system mount' ) @@ -98,7 +98,7 @@ class Import extends Base { ) ->addOption( 'dry', - null, + '', InputOption::VALUE_NONE, 'Don\'t save the imported mounts, only list the new mounts' ); @@ -161,8 +161,8 @@ class Import extends Base { if ( $existingMount->getMountPoint() === $mount->getMountPoint() && $existingMount->getApplicableGroups() === $mount->getApplicableGroups() && - $existingMount->getApplicableUsers() == $mount->getApplicableUsers() && - $existingMount->getBackendOptions() == $mount->getBackendOptions() + $existingMount->getApplicableUsers() === $mount->getApplicableUsers() && + $existingMount->getBackendOptions() === $mount->getBackendOptions() ) { $output->writeln("<error>Duplicate mount (" . $mount->getMountPoint() . ")</error>"); return 1; diff --git a/apps/files_external/lib/Command/ListCommand.php b/apps/files_external/lib/Command/ListCommand.php index fc1f2bf6c5a..a9618854b34 100644 --- a/apps/files_external/lib/Command/ListCommand.php +++ b/apps/files_external/lib/Command/ListCommand.php @@ -77,7 +77,7 @@ class ListCommand extends Base { 'user id to list the personal mounts for, if no user is provided admin mounts will be listed' )->addOption( 'show-password', - null, + '', InputOption::VALUE_NONE, 'show passwords and secrets' )->addOption( diff --git a/apps/files_external/lib/Command/Notify.php b/apps/files_external/lib/Command/Notify.php index 6bb56373d33..3c5c3af9ac2 100644 --- a/apps/files_external/lib/Command/Notify.php +++ b/apps/files_external/lib/Command/Notify.php @@ -79,7 +79,7 @@ class Notify extends Base { 'The password for the remote mount (required only for some mount configuration that don\'t store credentials)' )->addOption( 'path', - null, + '', InputOption::VALUE_REQUIRED, 'The directory in the storage to listen for updates in', '/' diff --git a/apps/files_external/lib/Lib/Auth/AuthMechanism.php b/apps/files_external/lib/Lib/Auth/AuthMechanism.php index 1229fd7f07e..b18579163a3 100644 --- a/apps/files_external/lib/Lib/Auth/AuthMechanism.php +++ b/apps/files_external/lib/Lib/Auth/AuthMechanism.php @@ -80,7 +80,7 @@ class AuthMechanism implements \JsonSerializable { /** * @param string $scheme - * @return self + * @return $this */ public function setScheme($scheme) { $this->scheme = $scheme; diff --git a/apps/files_external/lib/Lib/Backend/Backend.php b/apps/files_external/lib/Lib/Backend/Backend.php index 3ce524d3c55..3b6f7c3eeed 100644 --- a/apps/files_external/lib/Lib/Backend/Backend.php +++ b/apps/files_external/lib/Lib/Backend/Backend.php @@ -82,7 +82,7 @@ class Backend implements \JsonSerializable { /** * @param string $class - * @return self + * @return $this */ public function setStorageClass($class) { $this->storageClass = $class; diff --git a/apps/files_external/lib/Lib/FrontendDefinitionTrait.php b/apps/files_external/lib/Lib/FrontendDefinitionTrait.php index ae4b8ec4c37..03b39927d97 100644 --- a/apps/files_external/lib/Lib/FrontendDefinitionTrait.php +++ b/apps/files_external/lib/Lib/FrontendDefinitionTrait.php @@ -49,7 +49,7 @@ trait FrontendDefinitionTrait { /** * @param string $text - * @return self + * @return $this */ public function setText($text) { $this->text = $text; diff --git a/apps/files_external/lib/Lib/IdentifierTrait.php b/apps/files_external/lib/Lib/IdentifierTrait.php index dd583728545..38f2d4cd33f 100644 --- a/apps/files_external/lib/Lib/IdentifierTrait.php +++ b/apps/files_external/lib/Lib/IdentifierTrait.php @@ -46,7 +46,7 @@ trait IdentifierTrait { /** * @param string $identifier - * @return self + * @return $this */ public function setIdentifier($identifier) { $this->identifier = $identifier; @@ -63,7 +63,7 @@ trait IdentifierTrait { /** * @param string $alias - * @return self + * @return $this */ public function addIdentifierAlias($alias) { $this->identifierAliases[] = $alias; diff --git a/apps/files_external/lib/Lib/InsufficientDataForMeaningfulAnswerException.php b/apps/files_external/lib/Lib/InsufficientDataForMeaningfulAnswerException.php index 925dae7030d..6b335f82b56 100644 --- a/apps/files_external/lib/Lib/InsufficientDataForMeaningfulAnswerException.php +++ b/apps/files_external/lib/Lib/InsufficientDataForMeaningfulAnswerException.php @@ -34,7 +34,7 @@ class InsufficientDataForMeaningfulAnswerException extends StorageNotAvailableEx * * @param string $message * @param int $code - * @param \Exception $previous + * @param \Exception|null $previous * @since 6.0.0 */ public function __construct($message = '', $code = self::STATUS_INDETERMINATE, \Exception $previous = null) { diff --git a/apps/files_external/lib/Lib/Storage/Dropbox.php b/apps/files_external/lib/Lib/Storage/Dropbox.php index d2ba1cca751..fad85650e9b 100644 --- a/apps/files_external/lib/Lib/Storage/Dropbox.php +++ b/apps/files_external/lib/Lib/Storage/Dropbox.php @@ -47,7 +47,7 @@ class Dropbox extends \OC\Files\Storage\Common { private $oauth; public function __construct($params) { - if (isset($params['configured']) && $params['configured'] == 'true' + if (isset($params['configured']) && $params['configured'] === 'true' && isset($params['app_key']) && isset($params['app_secret']) && isset($params['token']) @@ -187,12 +187,12 @@ class Dropbox extends \OC\Files\Storage\Common { } public function filetype($path) { - if ($path == '' || $path == '/') { + if ($path === '' || $path === '/') { return 'dir'; } else { $metaData = $this->getDropBoxMetaData($path); if ($metaData) { - if ($metaData['is_dir'] == 'true') { + if ($metaData['is_dir'] === 'true') { return 'dir'; } else { return 'file'; @@ -203,7 +203,7 @@ class Dropbox extends \OC\Files\Storage\Common { } public function file_exists($path) { - if ($path == '' || $path == '/') { + if ($path === '' || $path === '/') { return true; } if ($this->getDropBoxMetaData($path)) { diff --git a/apps/files_external/lib/Lib/Storage/FTP.php b/apps/files_external/lib/Lib/Storage/FTP.php index 22fe2090f30..1bbdfaba468 100644 --- a/apps/files_external/lib/Lib/Storage/FTP.php +++ b/apps/files_external/lib/Lib/Storage/FTP.php @@ -56,7 +56,7 @@ class FTP extends StreamWrapper{ $this->secure = false; } $this->root=isset($params['root'])?$params['root']:'/'; - if ( ! $this->root || $this->root[0]!='/') { + if ( ! $this->root || $this->root[0]!=='/') { $this->root='/'.$this->root; } if (substr($this->root, -1) !== '/') { diff --git a/apps/files_external/lib/Lib/Storage/OwnCloud.php b/apps/files_external/lib/Lib/Storage/OwnCloud.php index 9669b5f3dad..34838b9891e 100644 --- a/apps/files_external/lib/Lib/Storage/OwnCloud.php +++ b/apps/files_external/lib/Lib/Storage/OwnCloud.php @@ -40,10 +40,10 @@ class OwnCloud extends \OC\Files\Storage\DAV{ // (owncloud install path on host) $host = $params['host']; // strip protocol - if (substr($host, 0, 8) == "https://") { + if (substr($host, 0, 8) === "https://") { $host = substr($host, 8); $params['secure'] = true; - } else if (substr($host, 0, 7) == "http://") { + } else if (substr($host, 0, 7) === "http://") { $host = substr($host, 7); $params['secure'] = false; } diff --git a/apps/files_external/lib/Lib/Storage/SFTP.php b/apps/files_external/lib/Lib/Storage/SFTP.php index a4dfea94bf7..8d489551264 100644 --- a/apps/files_external/lib/Lib/Storage/SFTP.php +++ b/apps/files_external/lib/Lib/Storage/SFTP.php @@ -102,11 +102,11 @@ class SFTP extends \OC\Files\Storage\Common { $this->root = isset($params['root']) ? $this->cleanPath($params['root']) : '/'; - if ($this->root[0] != '/') { + if ($this->root[0] !== '/') { $this->root = '/' . $this->root; } - if (substr($this->root, -1, 1) != '/') { + if (substr($this->root, -1, 1) !== '/') { $this->root .= '/'; } } @@ -128,7 +128,7 @@ class SFTP extends \OC\Files\Storage\Common { // The SSH Host Key MUST be verified before login(). $currentHostKey = $this->client->getServerPublicHostKey(); if (array_key_exists($this->host, $hostKeys)) { - if ($hostKeys[$this->host] != $currentHostKey) { + if ($hostKeys[$this->host] !== $currentHostKey) { throw new \Exception('Host public key does not match known key'); } } else { @@ -248,7 +248,7 @@ class SFTP extends \OC\Files\Storage\Common { if ($lines) { foreach ($lines as $line) { $hostKeyArray = explode("::", $line, 2); - if (count($hostKeyArray) == 2) { + if (count($hostKeyArray) === 2) { $hosts[] = $hostKeyArray[0]; $keys[] = $hostKeyArray[1]; } @@ -300,7 +300,7 @@ class SFTP extends \OC\Files\Storage\Common { $id = md5('sftp:' . $path); $dirStream = array(); foreach($list as $file) { - if ($file != '.' && $file != '..') { + if ($file !== '.' && $file !== '..') { $dirStream[] = $file; } } @@ -316,11 +316,11 @@ class SFTP extends \OC\Files\Storage\Common { public function filetype($path) { try { $stat = $this->getConnection()->stat($this->absPath($path)); - if ($stat['type'] == NET_SFTP_TYPE_REGULAR) { + if ((int) $stat['type'] === NET_SFTP_TYPE_REGULAR) { return 'file'; } - if ($stat['type'] == NET_SFTP_TYPE_DIRECTORY) { + if ((int) $stat['type'] === NET_SFTP_TYPE_DIRECTORY) { return 'dir'; } } catch (\Exception $e) { diff --git a/apps/files_external/lib/Lib/Storage/SMB.php b/apps/files_external/lib/Lib/Storage/SMB.php index 7afdb746a98..4af6df5d84a 100644 --- a/apps/files_external/lib/Lib/Storage/SMB.php +++ b/apps/files_external/lib/Lib/Storage/SMB.php @@ -81,10 +81,10 @@ class SMB extends Common implements INotifyStorage { $this->share = $this->server->getShare(trim($params['share'], '/')); $this->root = isset($params['root']) ? $params['root'] : '/'; - if (!$this->root || $this->root[0] != '/') { + if (!$this->root || $this->root[0] !== '/') { $this->root = '/' . $this->root; } - if (substr($this->root, -1, 1) != '/') { + if (substr($this->root, -1, 1) !== '/') { $this->root .= '/'; } } else { diff --git a/apps/files_external/lib/Lib/Storage/Swift.php b/apps/files_external/lib/Lib/Storage/Swift.php index db5b5bf6d95..57df4aa01a5 100644 --- a/apps/files_external/lib/Lib/Storage/Swift.php +++ b/apps/files_external/lib/Lib/Storage/Swift.php @@ -435,7 +435,7 @@ class Swift extends \OC\Files\Storage\Common { } $metadata = array('timestamp' => $mtime); if ($this->file_exists($path)) { - if ($this->is_dir($path) && $path != '.') { + if ($this->is_dir($path) && $path !== '.') { $path .= '/'; } @@ -640,7 +640,7 @@ class Swift extends \OC\Files\Storage\Common { }, $cachedContent); sort($cachedNames); sort($content); - return $cachedNames != $content; + return $cachedNames !== $content; } /** diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php index 7a10d4bbc24..4900de57b64 100644 --- a/apps/files_external/lib/config.php +++ b/apps/files_external/lib/config.php @@ -313,11 +313,11 @@ class OC_Mount_Config { private static function getSingleDependencyMessage(\OCP\IL10N $l, $module, $backend) { switch (strtolower($module)) { case 'curl': - return (string)$l->t('The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.', $backend); + return (string)$l->t('The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.', [$backend]); case 'ftp': - return (string)$l->t('The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.', $backend); + return (string)$l->t('The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.', [$backend]); default: - return (string)$l->t('"%s" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it.', array($module, $backend)); + return (string)$l->t('"%s" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it.', [$module, $backend]); } } diff --git a/apps/files_external/templates/settings.php b/apps/files_external/templates/settings.php index e463a0d3c37..1d703e0c1b3 100644 --- a/apps/files_external/templates/settings.php +++ b/apps/files_external/templates/settings.php @@ -89,7 +89,7 @@ <form data-can-create="<?php echo $canCreateMounts?'true':'false' ?>" id="files_external" class="section" data-encryption-enabled="<?php echo $_['encryptionEnabled']?'true': 'false'; ?>"> <h2 data-anchor-name="external-storage"><?php p($l->t('External storages')); ?></h2> - <?php if (isset($_['dependencies']) and ($_['dependencies']<>'') and $canCreateMounts) print_unescaped(''.$_['dependencies'].''); ?> + <?php if (isset($_['dependencies']) and ($_['dependencies'] !== '') and $canCreateMounts) print_unescaped(''.$_['dependencies'].''); ?> <table id="externalStorage" class="grid" data-admin='<?php print_unescaped(json_encode($_['visibilityType'] === BackendService::VISIBILITY_ADMIN)); ?>'> <thead> <tr> @@ -169,10 +169,10 @@ <?php if ($_['visibilityType'] === BackendService::VISIBILITY_ADMIN): ?> <input type="checkbox" name="allowUserMounting" id="allowUserMounting" class="checkbox" - value="1" <?php if ($_['allowUserMounting'] == 'yes') print_unescaped(' checked="checked"'); ?> /> + value="1" <?php if ($_['allowUserMounting'] === 'yes') print_unescaped(' checked="checked"'); ?> /> <label for="allowUserMounting"><?php p($l->t('Allow users to mount external storage')); ?></label> <span id="userMountingMsg" class="msg"></span> - <p id="userMountingBackends"<?php if ($_['allowUserMounting'] != 'yes'): ?> class="hidden"<?php endif; ?>> + <p id="userMountingBackends"<?php if ($_['allowUserMounting'] !== 'yes'): ?> class="hidden"<?php endif; ?>> <?php p($l->t('Allow users to mount the following external storage')); ?><br /> <?php $userBackends = array_filter($_['backends'], function($backend) { diff --git a/apps/files_sharing/l10n/cs.js b/apps/files_sharing/l10n/cs.js index fa065a2f367..cde421e029f 100644 --- a/apps/files_sharing/l10n/cs.js +++ b/apps/files_sharing/l10n/cs.js @@ -103,6 +103,7 @@ OC.L10N.register( "the link expired" : "platnost odkazu vypršela", "sharing is disabled" : "sdílení je zakázané", "For more info, please ask the person who sent this link." : "Pro více informací kontaktujte osobu, která vám zaslala tento odkaz.", + "shared by %s" : "Sdílel %s", "Add to your Nextcloud" : "Přidat do Nextcloud", "Download" : "Stáhnout", "Download %s" : "Stáhnout %s", diff --git a/apps/files_sharing/l10n/cs.json b/apps/files_sharing/l10n/cs.json index e56596365e3..3abe58b72e6 100644 --- a/apps/files_sharing/l10n/cs.json +++ b/apps/files_sharing/l10n/cs.json @@ -101,6 +101,7 @@ "the link expired" : "platnost odkazu vypršela", "sharing is disabled" : "sdílení je zakázané", "For more info, please ask the person who sent this link." : "Pro více informací kontaktujte osobu, která vám zaslala tento odkaz.", + "shared by %s" : "Sdílel %s", "Add to your Nextcloud" : "Přidat do Nextcloud", "Download" : "Stáhnout", "Download %s" : "Stáhnout %s", diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js index 2026a08fe32..951109d6937 100644 --- a/apps/files_sharing/l10n/es.js +++ b/apps/files_sharing/l10n/es.js @@ -103,6 +103,7 @@ OC.L10N.register( "the link expired" : "el enlace expiró", "sharing is disabled" : "compartir está desactivado", "For more info, please ask the person who sent this link." : "Para mayor información, contacte a la persona que le envió el enlace.", + "shared by %s" : "compartido por %s", "Add to your Nextcloud" : "Añadir a tu Nextcloud", "Download" : "Descargar", "Download %s" : "Descargar %s", diff --git a/apps/files_sharing/l10n/es.json b/apps/files_sharing/l10n/es.json index 50cf0dda66f..fd9a4cbd8fa 100644 --- a/apps/files_sharing/l10n/es.json +++ b/apps/files_sharing/l10n/es.json @@ -101,6 +101,7 @@ "the link expired" : "el enlace expiró", "sharing is disabled" : "compartir está desactivado", "For more info, please ask the person who sent this link." : "Para mayor información, contacte a la persona que le envió el enlace.", + "shared by %s" : "compartido por %s", "Add to your Nextcloud" : "Añadir a tu Nextcloud", "Download" : "Descargar", "Download %s" : "Descargar %s", diff --git a/apps/files_sharing/l10n/es_MX.js b/apps/files_sharing/l10n/es_MX.js index a10175a03ea..d4b27e24204 100644 --- a/apps/files_sharing/l10n/es_MX.js +++ b/apps/files_sharing/l10n/es_MX.js @@ -40,7 +40,7 @@ OC.L10N.register( "You shared {file} as public link" : "Compartiste {file} como una liga pública", "You removed public link for {file}" : "Eliminaste la liga pública de {file}", "Public link expired for {file}" : "La liga pública para {file} ha expirado", - "{actor} shared {file} as public link" : "{actor} ha compatido {file} como una liga pública", + "{actor} shared {file} as public link" : "{actor} ha compartido {file} como una liga pública", "{actor} removed public link for {file}" : "{actor} eliminó la liga pública de {file}", "Public link of {actor} for {file} expired" : "La liga pública de {actor} para {file} ha expirado", "{user} accepted the remote share" : "{user} aceptó el elemento compartido remoto", diff --git a/apps/files_sharing/l10n/es_MX.json b/apps/files_sharing/l10n/es_MX.json index 9bc4fda0c3d..ecd94ae66b4 100644 --- a/apps/files_sharing/l10n/es_MX.json +++ b/apps/files_sharing/l10n/es_MX.json @@ -38,7 +38,7 @@ "You shared {file} as public link" : "Compartiste {file} como una liga pública", "You removed public link for {file}" : "Eliminaste la liga pública de {file}", "Public link expired for {file}" : "La liga pública para {file} ha expirado", - "{actor} shared {file} as public link" : "{actor} ha compatido {file} como una liga pública", + "{actor} shared {file} as public link" : "{actor} ha compartido {file} como una liga pública", "{actor} removed public link for {file}" : "{actor} eliminó la liga pública de {file}", "Public link of {actor} for {file} expired" : "La liga pública de {actor} para {file} ha expirado", "{user} accepted the remote share" : "{user} aceptó el elemento compartido remoto", diff --git a/apps/files_sharing/l10n/nb.js b/apps/files_sharing/l10n/nb.js index 4ebb9b64d42..88e11921211 100644 --- a/apps/files_sharing/l10n/nb.js +++ b/apps/files_sharing/l10n/nb.js @@ -61,7 +61,7 @@ OC.L10N.register( "{actor} removed {user} from {file}" : "{actor} fjernet {user} fra {file}", "{actor} shared {file} with you" : "{actor} delte {file} med deg", "{actor} removed you from {file}" : "{actor} fjernet deg fra {file}", - "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "En fil eller mappe delt via e-post eller offentlig lenke ble <strong>lastet ned</strong>", + "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Ei fil eller mappe delt via e-post eller offentlig lenke ble <strong>lastet ned</strong>", "A file or folder was shared from <strong>another server</strong>" : "En fil eller mappe ble delt fra <strong>en annen tjener</strong>", "A file or folder has been <strong>shared</strong>" : "En fil eller mappe ble <strong>delt</strong>", "Wrong share ID, share doesn't exist" : "Feil ressurs ID, ressursen finnes ikke", @@ -74,7 +74,7 @@ OC.L10N.register( "Please specify a valid user" : "Oppgi en gyldig bruker", "Group sharing is disabled by the administrator" : "Gruppedeling er deaktivert av administratoren", "Please specify a valid group" : "Oppgi en gyldig gruppe", - "Public link sharing is disabled by the administrator" : "Offentlig deling er deaktivert av administratoren", + "Public link sharing is disabled by the administrator" : "Administratoren har skrudd av offentlig lenkedeling", "Public upload disabled by the administrator" : "Offentlig opplasting er deaktivert av administratoren", "Public upload is only possible for publicly shared folders" : "Offentlig opplasting er kun mulig i offentlig delte mapper", "Invalid date, date format must be YYYY-MM-DD" : "Feil dato, dato må være i formatet YYYY-MM-DD", diff --git a/apps/files_sharing/l10n/nb.json b/apps/files_sharing/l10n/nb.json index e0a02d7c93e..b3fdf4258bd 100644 --- a/apps/files_sharing/l10n/nb.json +++ b/apps/files_sharing/l10n/nb.json @@ -59,7 +59,7 @@ "{actor} removed {user} from {file}" : "{actor} fjernet {user} fra {file}", "{actor} shared {file} with you" : "{actor} delte {file} med deg", "{actor} removed you from {file}" : "{actor} fjernet deg fra {file}", - "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "En fil eller mappe delt via e-post eller offentlig lenke ble <strong>lastet ned</strong>", + "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Ei fil eller mappe delt via e-post eller offentlig lenke ble <strong>lastet ned</strong>", "A file or folder was shared from <strong>another server</strong>" : "En fil eller mappe ble delt fra <strong>en annen tjener</strong>", "A file or folder has been <strong>shared</strong>" : "En fil eller mappe ble <strong>delt</strong>", "Wrong share ID, share doesn't exist" : "Feil ressurs ID, ressursen finnes ikke", @@ -72,7 +72,7 @@ "Please specify a valid user" : "Oppgi en gyldig bruker", "Group sharing is disabled by the administrator" : "Gruppedeling er deaktivert av administratoren", "Please specify a valid group" : "Oppgi en gyldig gruppe", - "Public link sharing is disabled by the administrator" : "Offentlig deling er deaktivert av administratoren", + "Public link sharing is disabled by the administrator" : "Administratoren har skrudd av offentlig lenkedeling", "Public upload disabled by the administrator" : "Offentlig opplasting er deaktivert av administratoren", "Public upload is only possible for publicly shared folders" : "Offentlig opplasting er kun mulig i offentlig delte mapper", "Invalid date, date format must be YYYY-MM-DD" : "Feil dato, dato må være i formatet YYYY-MM-DD", diff --git a/apps/files_sharing/l10n/sq.js b/apps/files_sharing/l10n/sq.js index 1f2c81b0407..ad8b6ca84c5 100644 --- a/apps/files_sharing/l10n/sq.js +++ b/apps/files_sharing/l10n/sq.js @@ -19,10 +19,10 @@ OC.L10N.register( "Shared by" : "Ndarë nga", "Sharing" : "Ndarje", "File shares" : "Ndarja e skedarëve", - "Downloaded via public link" : "Shkarkuar përmes një lidhjeje publike", + "Downloaded via public link" : "Shkarkuar nga një link publik", "Downloaded by {email}" : "Shkarkuar nga {email}", "{file} downloaded via public link" : "{file} shkarkuar përmes një lidhjeje publike", - "{email} downloaded {file}" : "{email} shkarkuar {file}", + "{email} downloaded {file}" : "{email} shkarkoi {file}", "Shared with group {group}" : "U nda me grupin {group}", "Removed share for group {group}" : "Hoqi ndarjen për grupin {group}", "{actor} shared with group {group}" : "{actor} u nda me grupin {group}", @@ -36,10 +36,13 @@ OC.L10N.register( "Public link expired" : "Lidhja publike skadoi", "{actor} shared as public link" : "{actor} u nda si një lidhje publike", "{actor} removed public link" : "{actor} hoqi lidhje publike", + "Public link of {actor} expired" : "Lidhja publike e {actor} skadoi", "You shared {file} as public link" : "Ndatë {file} si një lidhje publike", "You removed public link for {file}" : "Hoqët lidhje publike për {file}", + "Public link expired for {file}" : "Lidhja publike skadoi për {file}", "{actor} shared {file} as public link" : "{actor} u nda {file} si një lidhje publike", "{actor} removed public link for {file}" : "{actor} hoqi lidhje publike për {file}", + "Public link of {actor} for {file} expired" : "Lidhja publike e {actor} për {file} ka skaduar", "{user} accepted the remote share" : "{user} pranoi ndarjen e largët", "{user} declined the remote share" : "{user} hodhi tej ndarjen e largët", "You received a new remote share {file} from {user}" : "Morët një ndarje të largët {file} nga {user}", @@ -76,6 +79,8 @@ OC.L10N.register( "Public upload is only possible for publicly shared folders" : "Ngarkimi publik është i mundshëm vetëm për dosje të ndara publikisht", "Invalid date, date format must be YYYY-MM-DD" : "Datë e pavlefshme, formati i datës duhet të jetë VVVV-MM-DD", "Sharing %s failed because the back end does not allow shares from type %s" : "Ndarja e %s dështoi, ngaqë pjesa përgjegjëse e shërbyesit nuk lejon ndarje prej llojit %s", + "You cannot share to a Circle if the app is not enabled" : "Nuk mund të shpërndani në një rreth nëse aplikacioni nuk është i aktivizuar", + "Please specify a valid circle" : "Ju lutem specifikoni një rreth i vlefshëm", "Unknown share type" : "Lloj i panjohur ndarjesh", "Not a directory" : "S’është drejtori", "Could not lock path" : "S’u kyç dot shtegu", @@ -84,6 +89,7 @@ OC.L10N.register( "Cannot increase permissions" : "S’mund të fuqizohen lejet", "%s is publicly shared" : "%s është ndarë publikisht", "Share API is disabled" : "API i ndarjeve është çaktivizuar", + "File sharing" : "Shpërndarja e skedarëve", "This share is password-protected" : "Kjo pjesë është e mbrojtur me fjalëkalim", "The password is wrong. Try again." : "Fjalëkalimi është i gabuar. Riprovoni.", "Password" : "Fjalëkalim", @@ -97,6 +103,7 @@ OC.L10N.register( "the link expired" : "lidhja ka skaduar", "sharing is disabled" : "ndarjet janë çaktivizuar", "For more info, please ask the person who sent this link." : "Për më shumë të dhëna, ju lutemi, pyetni personin që ju dërgoi këtë lidhje.", + "shared by %s" : "ndarë nga %s", "Add to your Nextcloud" : "Shtojeni tek Nextcloud-i juaj", "Download" : "Shkarko", "Download %s" : "Shkarko %s", diff --git a/apps/files_sharing/l10n/sq.json b/apps/files_sharing/l10n/sq.json index fa46d606c70..d70569e8d49 100644 --- a/apps/files_sharing/l10n/sq.json +++ b/apps/files_sharing/l10n/sq.json @@ -17,10 +17,10 @@ "Shared by" : "Ndarë nga", "Sharing" : "Ndarje", "File shares" : "Ndarja e skedarëve", - "Downloaded via public link" : "Shkarkuar përmes një lidhjeje publike", + "Downloaded via public link" : "Shkarkuar nga një link publik", "Downloaded by {email}" : "Shkarkuar nga {email}", "{file} downloaded via public link" : "{file} shkarkuar përmes një lidhjeje publike", - "{email} downloaded {file}" : "{email} shkarkuar {file}", + "{email} downloaded {file}" : "{email} shkarkoi {file}", "Shared with group {group}" : "U nda me grupin {group}", "Removed share for group {group}" : "Hoqi ndarjen për grupin {group}", "{actor} shared with group {group}" : "{actor} u nda me grupin {group}", @@ -34,10 +34,13 @@ "Public link expired" : "Lidhja publike skadoi", "{actor} shared as public link" : "{actor} u nda si një lidhje publike", "{actor} removed public link" : "{actor} hoqi lidhje publike", + "Public link of {actor} expired" : "Lidhja publike e {actor} skadoi", "You shared {file} as public link" : "Ndatë {file} si një lidhje publike", "You removed public link for {file}" : "Hoqët lidhje publike për {file}", + "Public link expired for {file}" : "Lidhja publike skadoi për {file}", "{actor} shared {file} as public link" : "{actor} u nda {file} si një lidhje publike", "{actor} removed public link for {file}" : "{actor} hoqi lidhje publike për {file}", + "Public link of {actor} for {file} expired" : "Lidhja publike e {actor} për {file} ka skaduar", "{user} accepted the remote share" : "{user} pranoi ndarjen e largët", "{user} declined the remote share" : "{user} hodhi tej ndarjen e largët", "You received a new remote share {file} from {user}" : "Morët një ndarje të largët {file} nga {user}", @@ -74,6 +77,8 @@ "Public upload is only possible for publicly shared folders" : "Ngarkimi publik është i mundshëm vetëm për dosje të ndara publikisht", "Invalid date, date format must be YYYY-MM-DD" : "Datë e pavlefshme, formati i datës duhet të jetë VVVV-MM-DD", "Sharing %s failed because the back end does not allow shares from type %s" : "Ndarja e %s dështoi, ngaqë pjesa përgjegjëse e shërbyesit nuk lejon ndarje prej llojit %s", + "You cannot share to a Circle if the app is not enabled" : "Nuk mund të shpërndani në një rreth nëse aplikacioni nuk është i aktivizuar", + "Please specify a valid circle" : "Ju lutem specifikoni një rreth i vlefshëm", "Unknown share type" : "Lloj i panjohur ndarjesh", "Not a directory" : "S’është drejtori", "Could not lock path" : "S’u kyç dot shtegu", @@ -82,6 +87,7 @@ "Cannot increase permissions" : "S’mund të fuqizohen lejet", "%s is publicly shared" : "%s është ndarë publikisht", "Share API is disabled" : "API i ndarjeve është çaktivizuar", + "File sharing" : "Shpërndarja e skedarëve", "This share is password-protected" : "Kjo pjesë është e mbrojtur me fjalëkalim", "The password is wrong. Try again." : "Fjalëkalimi është i gabuar. Riprovoni.", "Password" : "Fjalëkalim", @@ -95,6 +101,7 @@ "the link expired" : "lidhja ka skaduar", "sharing is disabled" : "ndarjet janë çaktivizuar", "For more info, please ask the person who sent this link." : "Për më shumë të dhëna, ju lutemi, pyetni personin që ju dërgoi këtë lidhje.", + "shared by %s" : "ndarë nga %s", "Add to your Nextcloud" : "Shtojeni tek Nextcloud-i juaj", "Download" : "Shkarko", "Download %s" : "Shkarko %s", diff --git a/apps/files_sharing/lib/Activity/Settings/RemoteShare.php b/apps/files_sharing/lib/Activity/Settings/RemoteShare.php index ef506999fc4..2a5cdcd995f 100644 --- a/apps/files_sharing/lib/Activity/Settings/RemoteShare.php +++ b/apps/files_sharing/lib/Activity/Settings/RemoteShare.php @@ -92,7 +92,7 @@ class RemoteShare implements ISetting { * @since 11.0.0 */ public function isDefaultEnabledMail() { - return true; + return false; } } diff --git a/apps/files_sharing/lib/Activity/Settings/Shared.php b/apps/files_sharing/lib/Activity/Settings/Shared.php index 847469d25fd..97318dc79b3 100644 --- a/apps/files_sharing/lib/Activity/Settings/Shared.php +++ b/apps/files_sharing/lib/Activity/Settings/Shared.php @@ -92,7 +92,7 @@ class Shared implements ISetting { * @since 11.0.0 */ public function isDefaultEnabledMail() { - return true; + return false; } } diff --git a/apps/files_sharing/lib/Controller/ShareController.php b/apps/files_sharing/lib/Controller/ShareController.php index df6f379d119..14fc8d63381 100644 --- a/apps/files_sharing/lib/Controller/ShareController.php +++ b/apps/files_sharing/lib/Controller/ShareController.php @@ -514,7 +514,7 @@ class ShareController extends Controller { $this->emitAccessShareHook($share); - $server_params = array( 'head' => $this->request->getMethod() == 'HEAD' ); + $server_params = array( 'head' => $this->request->getMethod() === 'HEAD' ); /** * Http range requests support diff --git a/apps/files_sharing/lib/Helper.php b/apps/files_sharing/lib/Helper.php index a659da9292f..c8f46fa8132 100644 --- a/apps/files_sharing/lib/Helper.php +++ b/apps/files_sharing/lib/Helper.php @@ -132,7 +132,7 @@ class Helper { Filesystem::initMountPoints($owner); $info = Filesystem::getFileInfo($target); $ownerView = new View('/'.$owner.'/files'); - if ( $owner != User::getUser() ) { + if ( $owner !== User::getUser() ) { $path = $ownerView->getPath($info['fileid']); } else { $path = $target; @@ -183,7 +183,7 @@ class Helper { $uid = User::getUser(); } Filesystem::initMountPoints($uid); - if ( $uid != User::getUser() ) { + if ( $uid !== User::getUser() ) { $info = Filesystem::getFileInfo($filename); $ownerView = new View('/'.$uid.'/files'); try { diff --git a/apps/files_sharing/lib/Middleware/OCSShareAPIMiddleware.php b/apps/files_sharing/lib/Middleware/OCSShareAPIMiddleware.php index 5d2c168e876..9df0229ab8c 100644 --- a/apps/files_sharing/lib/Middleware/OCSShareAPIMiddleware.php +++ b/apps/files_sharing/lib/Middleware/OCSShareAPIMiddleware.php @@ -3,6 +3,7 @@ namespace OCA\Files_Sharing\Middleware; use OCA\Files_Sharing\Controller\ShareAPIController; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http\Response; use OCP\AppFramework\Middleware; use OCP\AppFramework\OCS\OCSNotFoundException; @@ -22,7 +23,7 @@ class OCSShareAPIMiddleware extends Middleware { } /** - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * * @throws OCSNotFoundException @@ -36,7 +37,7 @@ class OCSShareAPIMiddleware extends Middleware { } /** - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * @param Response $response * @return Response diff --git a/apps/files_sharing/lib/Middleware/SharingCheckMiddleware.php b/apps/files_sharing/lib/Middleware/SharingCheckMiddleware.php index 9dd8d2e5ae9..e1a77fdec30 100644 --- a/apps/files_sharing/lib/Middleware/SharingCheckMiddleware.php +++ b/apps/files_sharing/lib/Middleware/SharingCheckMiddleware.php @@ -28,6 +28,7 @@ namespace OCA\Files_Sharing\Middleware; use OCA\Files_Sharing\Controller\ExternalSharesController; use OCA\Files_Sharing\Controller\ShareController; use OCP\App\IAppManager; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http\NotFoundResponse; use OCP\AppFramework\Middleware; use OCP\Files\NotFoundException; @@ -85,7 +86,7 @@ class SharingCheckMiddleware extends Middleware { /** * Check if sharing is enabled before the controllers is executed * - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * @throws NotFoundException * @throws S2SException @@ -112,7 +113,7 @@ class SharingCheckMiddleware extends Middleware { /** * Return 404 page in case of a not found exception * - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * @param \Exception $exception * @return NotFoundResponse diff --git a/apps/files_sharing/lib/ShareBackend/File.php b/apps/files_sharing/lib/ShareBackend/File.php index aecb63c60e4..83474546581 100644 --- a/apps/files_sharing/lib/ShareBackend/File.php +++ b/apps/files_sharing/lib/ShareBackend/File.php @@ -123,7 +123,7 @@ class File implements \OCP\Share_Backend_File_Dependent { } public function formatItems($items, $format, $parameters = null) { - if ($format == self::FORMAT_SHARED_STORAGE) { + if ($format === self::FORMAT_SHARED_STORAGE) { // Only 1 item should come through for this format call $item = array_shift($items); return array( @@ -133,7 +133,7 @@ class File implements \OCP\Share_Backend_File_Dependent { 'permissions' => $item['permissions'], 'uid_owner' => $item['uid_owner'], ); - } else if ($format == self::FORMAT_GET_FOLDER_CONTENTS) { + } else if ($format === self::FORMAT_GET_FOLDER_CONTENTS) { $files = array(); foreach ($items as $item) { $file = array(); @@ -156,13 +156,13 @@ class File implements \OCP\Share_Backend_File_Dependent { $files[] = $file; } return $files; - } else if ($format == self::FORMAT_OPENDIR) { + } else if ($format === self::FORMAT_OPENDIR) { $files = array(); foreach ($items as $item) { $files[] = basename($item['file_target']); } return $files; - } else if ($format == self::FORMAT_GET_ALL) { + } else if ($format === self::FORMAT_GET_ALL) { $ids = array(); foreach ($items as $item) { $ids[] = $item['file_source']; diff --git a/apps/files_sharing/lib/ShareBackend/Folder.php b/apps/files_sharing/lib/ShareBackend/Folder.php index 07e353cc6a6..55c2eff6fe0 100644 --- a/apps/files_sharing/lib/ShareBackend/Folder.php +++ b/apps/files_sharing/lib/ShareBackend/Folder.php @@ -83,7 +83,7 @@ class Folder extends File implements \OCP\Share_Backend_Collection { $query = \OCP\DB::prepare('SELECT `id` FROM `*PREFIX*mimetypes` WHERE `mimetype` = ?'); $result = $query->execute(array('httpd/unix-directory')); if ($row = $result->fetchRow()) { - $mimetype = $row['id']; + $mimetype = (int) $row['id']; } else { $mimetype = -1; } @@ -96,7 +96,7 @@ class Folder extends File implements \OCP\Share_Backend_Collection { while ($file = $result->fetchRow()) { $children[] = array('source' => $file['fileid'], 'file_path' => $file['name']); // If a child folder is found look inside it - if ($file['mimetype'] == $mimetype) { + if ((int) $file['mimetype'] === $mimetype) { $parents[] = $file['fileid']; } } diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php index 30f4dda8684..2514fa3f921 100644 --- a/apps/files_sharing/templates/public.php +++ b/apps/files_sharing/templates/public.php @@ -75,7 +75,7 @@ $maxUploadFilesize = min($upload_max_filesize, $post_max_size); <?php if (isset($_['folder'])): ?> <?php print_unescaped($_['folder']); ?> <?php else: ?> - <?php if ($_['previewEnabled'] && substr($_['mimetype'], 0, strpos($_['mimetype'], '/')) == 'video'): ?> + <?php if ($_['previewEnabled'] && substr($_['mimetype'], 0, strpos($_['mimetype'], '/')) === 'video'): ?> <div id="imgframe"> <video tabindex="0" controls="" preload="none" style="max-width: <?php p($_['previewMaxX']); ?>px; max-height: <?php p($_['previewMaxY']); ?>px"> <source src="<?php p($_['downloadURL']); ?>" type="<?php p($_['mimetype']); ?>" /> diff --git a/apps/files_trashbin/l10n/sq.js b/apps/files_trashbin/l10n/sq.js index 45348ca24b3..e32063e9a25 100644 --- a/apps/files_trashbin/l10n/sq.js +++ b/apps/files_trashbin/l10n/sq.js @@ -1,7 +1,7 @@ OC.L10N.register( "files_trashbin", { - "Couldn't delete %s permanently" : "S’u fshi dot përgjithmonë %s", + "Couldn't delete %s permanently" : "%s s'u fshi dot përgjithmonë", "Couldn't restore %s" : "S’u rikthye dot %s", "Deleted files" : "Kartela të fshira", "Restore" : "Riktheje", diff --git a/apps/files_trashbin/l10n/sq.json b/apps/files_trashbin/l10n/sq.json index a28078058c9..f9854dc904d 100644 --- a/apps/files_trashbin/l10n/sq.json +++ b/apps/files_trashbin/l10n/sq.json @@ -1,5 +1,5 @@ { "translations": { - "Couldn't delete %s permanently" : "S’u fshi dot përgjithmonë %s", + "Couldn't delete %s permanently" : "%s s'u fshi dot përgjithmonë", "Couldn't restore %s" : "S’u rikthye dot %s", "Deleted files" : "Kartela të fshira", "Restore" : "Riktheje", diff --git a/apps/files_trashbin/lib/Storage.php b/apps/files_trashbin/lib/Storage.php index e3fe648281c..fdc7081b137 100644 --- a/apps/files_trashbin/lib/Storage.php +++ b/apps/files_trashbin/lib/Storage.php @@ -206,7 +206,7 @@ class Storage extends Wrapper { return false; } - if ($this->userManager->userExists($parts[1]) && $parts[2] == 'files') { + if ($this->userManager->userExists($parts[1]) && $parts[2] === 'files') { return true; } diff --git a/apps/files_trashbin/lib/Trashbin.php b/apps/files_trashbin/lib/Trashbin.php index 88d23cee711..0d336664e38 100644 --- a/apps/files_trashbin/lib/Trashbin.php +++ b/apps/files_trashbin/lib/Trashbin.php @@ -95,7 +95,7 @@ class Trashbin { return [null, null]; } Filesystem::initMountPoints($uid); - if ($uid != User::getUser()) { + if ($uid !== User::getUser()) { $info = Filesystem::getFileInfo($filename); $ownerView = new View('/' . $uid . '/files'); try { diff --git a/apps/files_versions/lib/Hooks.php b/apps/files_versions/lib/Hooks.php index 3753d8b5016..a9ebb153eff 100644 --- a/apps/files_versions/lib/Hooks.php +++ b/apps/files_versions/lib/Hooks.php @@ -57,7 +57,7 @@ class Hooks { if (\OCP\App::isEnabled('files_versions')) { $path = $params[\OC\Files\Filesystem::signal_param_path]; - if($path<>'') { + if($path !== '') { Storage::store($path); } } @@ -75,7 +75,7 @@ class Hooks { if (\OCP\App::isEnabled('files_versions')) { $path = $params[\OC\Files\Filesystem::signal_param_path]; - if($path<>'') { + if($path !== '') { Storage::delete($path); } } @@ -87,7 +87,7 @@ class Hooks { */ public static function pre_remove_hook($params) { $path = $params[\OC\Files\Filesystem::signal_param_path]; - if($path<>'') { + if($path !== '') { Storage::markDeletedFile($path); } } @@ -104,7 +104,7 @@ class Hooks { if (\OCP\App::isEnabled('files_versions')) { $oldpath = $params['oldpath']; $newpath = $params['newpath']; - if($oldpath<>'' && $newpath<>'') { + if($oldpath !== '' && $newpath !== '') { Storage::renameOrCopy($oldpath, $newpath, 'rename'); } } @@ -122,7 +122,7 @@ class Hooks { if (\OCP\App::isEnabled('files_versions')) { $oldpath = $params['oldpath']; $newpath = $params['newpath']; - if($oldpath<>'' && $newpath<>'') { + if($oldpath !== '' && $newpath !== '') { Storage::renameOrCopy($oldpath, $newpath, 'copy'); } } diff --git a/apps/files_versions/lib/Storage.php b/apps/files_versions/lib/Storage.php index 9aa9e6d5260..5e3f87b3646 100644 --- a/apps/files_versions/lib/Storage.php +++ b/apps/files_versions/lib/Storage.php @@ -102,7 +102,7 @@ class Storage { $uid = User::getUser(); } Filesystem::initMountPoints($uid); - if ( $uid != User::getUser() ) { + if ( $uid !== User::getUser() ) { $info = Filesystem::getFileInfo($filename); $ownerView = new View('/'.$uid.'/files'); try { @@ -161,41 +161,39 @@ class Storage { * store a new version of a file. */ public static function store($filename) { - if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { - // if the file gets streamed we need to remove the .part extension - // to get the right target - $ext = pathinfo($filename, PATHINFO_EXTENSION); - if ($ext === 'part') { - $filename = substr($filename, 0, strlen($filename) - 5); - } + // if the file gets streamed we need to remove the .part extension + // to get the right target + $ext = pathinfo($filename, PATHINFO_EXTENSION); + if ($ext === 'part') { + $filename = substr($filename, 0, strlen($filename) - 5); + } - // we only handle existing files - if (! Filesystem::file_exists($filename) || Filesystem::is_dir($filename)) { - return false; - } + // we only handle existing files + if (! Filesystem::file_exists($filename) || Filesystem::is_dir($filename)) { + return false; + } - list($uid, $filename) = self::getUidAndFilename($filename); + list($uid, $filename) = self::getUidAndFilename($filename); - $files_view = new View('/'.$uid .'/files'); - $users_view = new View('/'.$uid); + $files_view = new View('/'.$uid .'/files'); + $users_view = new View('/'.$uid); - // no use making versions for empty files - if ($files_view->filesize($filename) === 0) { - return false; - } + // no use making versions for empty files + if ($files_view->filesize($filename) === 0) { + return false; + } - // create all parent folders - self::createMissingDirectories($filename, $users_view); + // create all parent folders + self::createMissingDirectories($filename, $users_view); - self::scheduleExpire($uid, $filename); + self::scheduleExpire($uid, $filename); - // store a new version of a file - $mtime = $users_view->filemtime('files/' . $filename); - $users_view->copy('files/' . $filename, 'files_versions/' . $filename . '.v' . $mtime); - // call getFileInfo to enforce a file cache entry for the new version - $users_view->getFileInfo('files_versions/' . $filename . '.v' . $mtime); - } + // store a new version of a file + $mtime = $users_view->filemtime('files/' . $filename); + $users_view->copy('files/' . $filename, 'files_versions/' . $filename . '.v' . $mtime); + // call getFileInfo to enforce a file cache entry for the new version + $users_view->getFileInfo('files_versions/' . $filename . '.v' . $mtime); } @@ -320,61 +318,60 @@ class Storage { */ public static function rollback($file, $revision) { - if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { - // add expected leading slash - $file = '/' . ltrim($file, '/'); - list($uid, $filename) = self::getUidAndFilename($file); - if ($uid === null || trim($filename, '/') === '') { - return false; - } + // add expected leading slash + $file = '/' . ltrim($file, '/'); + list($uid, $filename) = self::getUidAndFilename($file); + if ($uid === null || trim($filename, '/') === '') { + return false; + } - $users_view = new View('/'.$uid); - $files_view = new View('/'. User::getUser().'/files'); + $users_view = new View('/'.$uid); + $files_view = new View('/'. User::getUser().'/files'); - $versionCreated = false; + $versionCreated = false; - $fileInfo = $files_view->getFileInfo($file); + $fileInfo = $files_view->getFileInfo($file); - // check if user has the permissions to revert a version - if (!$fileInfo->isUpdateable()) { - return false; - } + // check if user has the permissions to revert a version + if (!$fileInfo->isUpdateable()) { + return false; + } - //first create a new version - $version = 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename); - if (!$users_view->file_exists($version)) { - $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename)); - $versionCreated = true; - } + //first create a new version + $version = 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename); + if (!$users_view->file_exists($version)) { + $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename)); + $versionCreated = true; + } - $fileToRestore = 'files_versions' . $filename . '.v' . $revision; - - // Restore encrypted version of the old file for the newly restored file - // This has to happen manually here since the file is manually copied below - $oldVersion = $users_view->getFileInfo($fileToRestore)->getEncryptedVersion(); - $oldFileInfo = $users_view->getFileInfo($fileToRestore); - $cache = $fileInfo->getStorage()->getCache(); - $cache->update( - $fileInfo->getId(), [ - 'encrypted' => $oldVersion, - 'encryptedVersion' => $oldVersion, - 'size' => $oldFileInfo->getSize() - ] - ); - - // rollback - if (self::copyFileContents($users_view, $fileToRestore, 'files' . $filename)) { - $files_view->touch($file, $revision); - Storage::scheduleExpire($uid, $file); - \OC_Hook::emit('\OCP\Versions', 'rollback', array( - 'path' => $filename, - 'revision' => $revision, - )); - return true; - } else if ($versionCreated) { - self::deleteVersion($users_view, $version); - } + $fileToRestore = 'files_versions' . $filename . '.v' . $revision; + + // Restore encrypted version of the old file for the newly restored file + // This has to happen manually here since the file is manually copied below + $oldVersion = $users_view->getFileInfo($fileToRestore)->getEncryptedVersion(); + $oldFileInfo = $users_view->getFileInfo($fileToRestore); + $cache = $fileInfo->getStorage()->getCache(); + $cache->update( + $fileInfo->getId(), [ + 'encrypted' => $oldVersion, + 'encryptedVersion' => $oldVersion, + 'size' => $oldFileInfo->getSize() + ] + ); + + // rollback + if (self::copyFileContents($users_view, $fileToRestore, 'files' . $filename)) { + $files_view->touch($file, $revision); + Storage::scheduleExpire($uid, $file); + \OC_Hook::emit('\OCP\Versions', 'rollback', array( + 'path' => $filename, + 'revision' => $revision, + )); + return true; + } else if ($versionCreated) { + self::deleteVersion($users_view, $version); } + return false; } @@ -629,7 +626,7 @@ class Storage { $interval = 1; $step = Storage::$max_versions_per_interval[$interval]['step']; - if (Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'] == -1) { + if (Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'] === -1) { $nextInterval = -1; } else { $nextInterval = $time - Storage::$max_versions_per_interval[$interval]['intervalEndsAfter']; @@ -644,7 +641,7 @@ class Storage { foreach ($versions as $key => $version) { $newInterval = true; while ($newInterval) { - if ($nextInterval == -1 || $prevTimestamp > $nextInterval) { + if ($nextInterval === -1 || $prevTimestamp > $nextInterval) { if ($version['version'] > $nextVersion) { //distance between two version too small, mark to delete $toDelete[$key] = $version['path'] . '.v' . $version['version']; @@ -659,7 +656,7 @@ class Storage { $interval++; $step = Storage::$max_versions_per_interval[$interval]['step']; $nextVersion = $prevTimestamp - $step; - if (Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'] == -1) { + if (Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'] === -1) { $nextInterval = -1; } else { $nextInterval = $time - Storage::$max_versions_per_interval[$interval]['intervalEndsAfter']; @@ -698,10 +695,9 @@ class Storage { * @return bool|int|null */ public static function expire($filename, $uid) { - $config = \OC::$server->getConfig(); $expiration = self::getExpiration(); - if($config->getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' && $expiration->isEnabled()) { + if ($expiration->isEnabled()) { // get available disk space for user $user = \OC::$server->getUserManager()->get($uid); if (is_null($user)) { diff --git a/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php b/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php index 3bc955f2fc1..c0fba230a26 100644 --- a/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php +++ b/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php @@ -59,7 +59,7 @@ class RetryJob extends Job { * run the job, then remove it from the jobList * * @param JobList $jobList - * @param ILogger $logger + * @param ILogger|null $logger */ public function execute($jobList, ILogger $logger = null) { if ($this->shouldRun($this->argument)) { diff --git a/apps/oauth2/l10n/ca.js b/apps/oauth2/l10n/ca.js new file mode 100644 index 00000000000..dc7bad39f35 --- /dev/null +++ b/apps/oauth2/l10n/ca.js @@ -0,0 +1,14 @@ +OC.L10N.register( + "oauth2", + { + "OAuth 2.0" : "OAuth 2.0", + "OAuth 2.0 clients" : "clients OAuth 2.0", + "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 permet que els serveis externs sol·licitin accés a %s.", + "Name" : "Nom", + "Redirection URI" : "URl redirecció", + "Client Identifier" : "Identificador de client", + "Secret" : "Secret", + "Add client" : "Afegir client", + "Add" : "Afegir" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/oauth2/l10n/ca.json b/apps/oauth2/l10n/ca.json new file mode 100644 index 00000000000..983ff83872e --- /dev/null +++ b/apps/oauth2/l10n/ca.json @@ -0,0 +1,12 @@ +{ "translations": { + "OAuth 2.0" : "OAuth 2.0", + "OAuth 2.0 clients" : "clients OAuth 2.0", + "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 permet que els serveis externs sol·licitin accés a %s.", + "Name" : "Nom", + "Redirection URI" : "URl redirecció", + "Client Identifier" : "Identificador de client", + "Secret" : "Secret", + "Add client" : "Afegir client", + "Add" : "Afegir" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/oauth2/l10n/sq.js b/apps/oauth2/l10n/sq.js new file mode 100644 index 00000000000..04e485efb81 --- /dev/null +++ b/apps/oauth2/l10n/sq.js @@ -0,0 +1,14 @@ +OC.L10N.register( + "oauth2", + { + "OAuth 2.0" : "O.Auth 2.0", + "OAuth 2.0 clients" : "Klientë OAuth 2.0", + "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 lejon shërbime të jashtme të kërkojnë akses në %s", + "Name" : "Emri", + "Redirection URI" : "URI Ridrejtimi", + "Client Identifier" : "Identifikues Klienti", + "Secret" : "Sekret", + "Add client" : "Shto klient", + "Add" : "Shto " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/oauth2/l10n/sq.json b/apps/oauth2/l10n/sq.json new file mode 100644 index 00000000000..5d54396f02a --- /dev/null +++ b/apps/oauth2/l10n/sq.json @@ -0,0 +1,12 @@ +{ "translations": { + "OAuth 2.0" : "O.Auth 2.0", + "OAuth 2.0 clients" : "Klientë OAuth 2.0", + "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 lejon shërbime të jashtme të kërkojnë akses në %s", + "Name" : "Emri", + "Redirection URI" : "URI Ridrejtimi", + "Client Identifier" : "Identifikues Klienti", + "Secret" : "Sekret", + "Add client" : "Shto klient", + "Add" : "Shto " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/provisioning_api/lib/Middleware/ProvisioningApiMiddleware.php b/apps/provisioning_api/lib/Middleware/ProvisioningApiMiddleware.php index d9afe596027..e21f9b22878 100644 --- a/apps/provisioning_api/lib/Middleware/ProvisioningApiMiddleware.php +++ b/apps/provisioning_api/lib/Middleware/ProvisioningApiMiddleware.php @@ -3,6 +3,7 @@ namespace OCA\Provisioning_API\Middleware; use OCA\Provisioning_API\Middleware\Exceptions\NotSubAdminException; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http\Response; use OCP\AppFramework\Middleware; use OCP\AppFramework\OCS\OCSException; @@ -36,7 +37,7 @@ class ProvisioningApiMiddleware extends Middleware { } /** - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * * @throws NotSubAdminException @@ -48,7 +49,7 @@ class ProvisioningApiMiddleware extends Middleware { } /** - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * @param \Exception $exception * @throws \Exception @@ -61,4 +62,4 @@ class ProvisioningApiMiddleware extends Middleware { throw $exception; } -}
\ No newline at end of file +} diff --git a/apps/provisioning_api/tests/Controller/GroupsControllerTest.php b/apps/provisioning_api/tests/Controller/GroupsControllerTest.php index caf6ae109f7..344f1fe6352 100644 --- a/apps/provisioning_api/tests/Controller/GroupsControllerTest.php +++ b/apps/provisioning_api/tests/Controller/GroupsControllerTest.php @@ -28,6 +28,7 @@ namespace OCA\Provisioning_API\Tests\Controller; use OCA\Provisioning_API\Controller\GroupsController; use OCP\IGroupManager; +use OCP\ILogger; use OCP\IUserSession; class GroupsControllerTest extends \Test\TestCase { diff --git a/apps/sharebymail/l10n/sq.js b/apps/sharebymail/l10n/sq.js new file mode 100644 index 00000000000..2d30b819d74 --- /dev/null +++ b/apps/sharebymail/l10n/sq.js @@ -0,0 +1,50 @@ +OC.L10N.register( + "sharebymail", + { + "Shared with %1$s" : "E ndarë me %1$s ", + "Shared with {email}" : "Të shpërndara me {email}", + "Shared with %1$s by %2$s" : "E ndarë me %1$s nga %2$s", + "Shared with {email} by {actor}" : "Ndarë me {email} nga {actor}", + "Password for mail share sent to %1$s" : "Fjalëkalimi per ndarjen e mail-it dërguar tek %1$s", + "Password for mail share sent to {email}" : "Fjalëkali për ndarje mail-i u dërgua tek {email}", + "Password for mail share sent to you" : "Fjalëkalimi për ndarjen e mail ju është dërguar ", + "You shared %1$s with %2$s by mail" : "Ju ndatë %1$s me %2$s me anë të mail", + "You shared {file} with {email} by mail" : "Ju ndatë {skedarin} me {email} me anë të mailit ", + "%3$s shared %1$s with %2$s by mail" : "%3$s ndau %1$s me%2$s me anë të mail", + "{actor} shared {file} with {email} by mail" : "{aktori} shpërndau {skedarin} me{email} nga email", + "Password to access %1$s was sent to %2s" : "Fjalëkalimi për akses %1$s ju dërgua %2s", + "Password to access {file} was sent to {email}" : "Fjalëkalimi për akses {file} dërguar tek {email}", + "Password to access %1$s was sent to you" : "Fjalëkalimi për të aksesuar %1$s ju është dërguar", + "Password to access {file} was sent to you" : "Fjalëkalimi për akses {file} tu dërgua ", + "Sharing %s failed, this item is already shared with %s" : "Shpërndarja %s dështoi, ky artikull është aktualisht i shpërndarë me %s", + "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "S'mund t'jua dergojmë fjalëkalimin e gjeneruar automatikisht. Ju lutem vendosni një adresë emaili të vlefshme ne mjedisin tuaj personal dhe provoni përseri. ", + "Failed to send share by email" : "Ndarja e dërguar me anë të email dështoi ", + "%s shared »%s« with you" : "%s ndarë »%s« me ju", + "%s shared »%s« with you." : "%s ndarë »%s« me ju.", + "Click the button below to open it." : "Klikoni butonin poshtë për ta hapur.", + "Open »%s«" : "Hap »%s«", + "%s via %s" : "%s përmes %s", + "Password to access »%s« shared to you by %s" : "Fjalëkalimi për të hyrë »%s« ndarë me ju nda %s", + "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%sndau »%s« me ju. \nJu duhet të keni marrë tashmë një mail të veçantë me një lidhje për të aksesuar atë.\n", + "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s ndau »%s« me ju. Ju duhet të keni marrë tashmë një mail të veçantë me një lidhje për të aksesuar atë.", + "Password to access »%s«" : "Fjalëkalimi për akses »%s«", + "It is protected with the following password: %s" : "Është i mbrojtur me fjalëkalimin e mëposhtëm: %s", + "Password to access »%s« shared with %s" : "Fjalëkalimi për të hyrë »%s« ndarë me %s", + "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Ju sapo ndatë »« me %s%s. Pjesa ishte dërguar tashmë tek marrësi. Për shkak të politikave të sigurisë të përcaktuara nga administratori %s secila ndarje duhet të mbrohet me fjalëkalim dhe nuk lejohet të dërgojë fjalëkalimin drejtpërdrejt te marrësi. Prandaj ju duhet ta kaloni fjalëkalimin manualisht tek marrësi.", + "This is the password: %s" : "Ky është fjalëkalimi: %s", + "You can choose a different password at any time in the share dialog." : "Ju mund të zgjidhni një fjalëkalim tjetër në çdo kohë në dialogun e ndarjes.", + "Could not find share" : "Nuk mund të gjej shpërndarje", + "Share by mail" : "Shpërnda me mail", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Lejo përdoruesit të ndajnë një lidhje të personalizuar me një skedar ose dosje duke e vendosur në një adresë e-mail.", + "Send password by mail" : "Dërgo fjalëkalimin me mail", + "Enforce password protection" : "Forco mbrojtjen e fjalëkalimit", + "Failed to send share by E-mail" : "Dështoi në dërgimin e shpërndarjeve me anë të E-mail", + "%s shared »%s« with you on behalf of %s" : "%s ndarë »%s« me ju në emër të %s", + "Failed to create the E-mail" : "Dështuat për të krijuar E-mail", + "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Çkemi\n\n ndau »%s%s« me ju në emër të %s.\n\n%s\n\n", + "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Çkemi\n\n%s ndau »%s» me ju.\n\n%s\n\n", + "Cheers!" : "Gëzuar!", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you on behalf of %s.<br><br>" : "Çkemi, <br> <br> %s ndau <a href=\"%s\"> %s </a> me ju në emër të %s. <br> <br>", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "Çkemi, <br> <br> %s ndau <a href=\"%s\"> %s </a> me ju. <br> <br>" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/sharebymail/l10n/sq.json b/apps/sharebymail/l10n/sq.json new file mode 100644 index 00000000000..1027fe6a677 --- /dev/null +++ b/apps/sharebymail/l10n/sq.json @@ -0,0 +1,48 @@ +{ "translations": { + "Shared with %1$s" : "E ndarë me %1$s ", + "Shared with {email}" : "Të shpërndara me {email}", + "Shared with %1$s by %2$s" : "E ndarë me %1$s nga %2$s", + "Shared with {email} by {actor}" : "Ndarë me {email} nga {actor}", + "Password for mail share sent to %1$s" : "Fjalëkalimi per ndarjen e mail-it dërguar tek %1$s", + "Password for mail share sent to {email}" : "Fjalëkali për ndarje mail-i u dërgua tek {email}", + "Password for mail share sent to you" : "Fjalëkalimi për ndarjen e mail ju është dërguar ", + "You shared %1$s with %2$s by mail" : "Ju ndatë %1$s me %2$s me anë të mail", + "You shared {file} with {email} by mail" : "Ju ndatë {skedarin} me {email} me anë të mailit ", + "%3$s shared %1$s with %2$s by mail" : "%3$s ndau %1$s me%2$s me anë të mail", + "{actor} shared {file} with {email} by mail" : "{aktori} shpërndau {skedarin} me{email} nga email", + "Password to access %1$s was sent to %2s" : "Fjalëkalimi për akses %1$s ju dërgua %2s", + "Password to access {file} was sent to {email}" : "Fjalëkalimi për akses {file} dërguar tek {email}", + "Password to access %1$s was sent to you" : "Fjalëkalimi për të aksesuar %1$s ju është dërguar", + "Password to access {file} was sent to you" : "Fjalëkalimi për akses {file} tu dërgua ", + "Sharing %s failed, this item is already shared with %s" : "Shpërndarja %s dështoi, ky artikull është aktualisht i shpërndarë me %s", + "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "S'mund t'jua dergojmë fjalëkalimin e gjeneruar automatikisht. Ju lutem vendosni një adresë emaili të vlefshme ne mjedisin tuaj personal dhe provoni përseri. ", + "Failed to send share by email" : "Ndarja e dërguar me anë të email dështoi ", + "%s shared »%s« with you" : "%s ndarë »%s« me ju", + "%s shared »%s« with you." : "%s ndarë »%s« me ju.", + "Click the button below to open it." : "Klikoni butonin poshtë për ta hapur.", + "Open »%s«" : "Hap »%s«", + "%s via %s" : "%s përmes %s", + "Password to access »%s« shared to you by %s" : "Fjalëkalimi për të hyrë »%s« ndarë me ju nda %s", + "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%sndau »%s« me ju. \nJu duhet të keni marrë tashmë një mail të veçantë me një lidhje për të aksesuar atë.\n", + "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s ndau »%s« me ju. Ju duhet të keni marrë tashmë një mail të veçantë me një lidhje për të aksesuar atë.", + "Password to access »%s«" : "Fjalëkalimi për akses »%s«", + "It is protected with the following password: %s" : "Është i mbrojtur me fjalëkalimin e mëposhtëm: %s", + "Password to access »%s« shared with %s" : "Fjalëkalimi për të hyrë »%s« ndarë me %s", + "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Ju sapo ndatë »« me %s%s. Pjesa ishte dërguar tashmë tek marrësi. Për shkak të politikave të sigurisë të përcaktuara nga administratori %s secila ndarje duhet të mbrohet me fjalëkalim dhe nuk lejohet të dërgojë fjalëkalimin drejtpërdrejt te marrësi. Prandaj ju duhet ta kaloni fjalëkalimin manualisht tek marrësi.", + "This is the password: %s" : "Ky është fjalëkalimi: %s", + "You can choose a different password at any time in the share dialog." : "Ju mund të zgjidhni një fjalëkalim tjetër në çdo kohë në dialogun e ndarjes.", + "Could not find share" : "Nuk mund të gjej shpërndarje", + "Share by mail" : "Shpërnda me mail", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Lejo përdoruesit të ndajnë një lidhje të personalizuar me një skedar ose dosje duke e vendosur në një adresë e-mail.", + "Send password by mail" : "Dërgo fjalëkalimin me mail", + "Enforce password protection" : "Forco mbrojtjen e fjalëkalimit", + "Failed to send share by E-mail" : "Dështoi në dërgimin e shpërndarjeve me anë të E-mail", + "%s shared »%s« with you on behalf of %s" : "%s ndarë »%s« me ju në emër të %s", + "Failed to create the E-mail" : "Dështuat për të krijuar E-mail", + "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Çkemi\n\n ndau »%s%s« me ju në emër të %s.\n\n%s\n\n", + "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Çkemi\n\n%s ndau »%s» me ju.\n\n%s\n\n", + "Cheers!" : "Gëzuar!", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you on behalf of %s.<br><br>" : "Çkemi, <br> <br> %s ndau <a href=\"%s\"> %s </a> me ju në emër të %s. <br> <br>", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "Çkemi, <br> <br> %s ndau <a href=\"%s\"> %s </a> me ju. <br> <br>" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/systemtags/l10n/lv.js b/apps/systemtags/l10n/lv.js index c18aca68c8f..116f7a366ec 100644 --- a/apps/systemtags/l10n/lv.js +++ b/apps/systemtags/l10n/lv.js @@ -28,13 +28,22 @@ OC.L10N.register( "{actor} deleted system tag {systemtag}" : "{actor} izdzēsa sistēmas atzīmi {systemtag}", "You updated system tag %2$s to %1$s" : "Tu atjaunoji sistēmas atzīmi %2$s uz %1$s", "You updated system tag {oldsystemtag} to {newsystemtag}" : "Jūs atjaunināt sistēmas atzīmi {oldsystemtag} uz {newsystemtag}", + "%1$s updated system tag %3$s to %2$s" : "%1$spārmainija sistēmas atzīmi %3$s uz %2$s", + "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} atjaunināja sistēmas atzīmi {oldsystemtag} uz {newsystemtag}", "You added system tag %2$s to %1$s" : "Tu pievienoji sistēmas atzīmi %2$s uz %1$s", + "You added system tag {systemtag} to {file}" : "Tu pievienoji sistēmas atzīmi {systemtag} failam {file}", + "%1$s added system tag %3$s to %2$s" : "%1$spievienoja sistēmas atzīmi %3$s uz %2$s", "{actor} added system tag {systemtag} to {file}" : "{actor} added system tag {systemtag} to {file}", "You removed system tag %2$s from %1$s" : "Tu noņēmi sistēmas atzīmi %2$s no %1$s", "You removed system tag {systemtag} from {file}" : "TU noņēmi sistēmas atzīmi {systemtag} no {file}", + "%1$s removed system tag %3$s from %2$s" : "%1$s noņēma sistēmas atzīmi %3$s no %2$s", + "{actor} removed system tag {systemtag} from {file}" : "{actor} noņēma sistēmas atzīmi {systemtag} no {file}", "%s (restricted)" : "%s (ierobežots)", "%s (invisible)" : "%s (neredzams)", + "<strong>System tags</strong> for a file have been modified" : "<strong>Sistēmas atzīmes</strong> failam tikušas mainītas", "Collaborative tags" : "Sadarbības atzīmes", + "Create and edit collaborative tags. These tags affect all users." : "Izveido un rediģē sadarbības atzīmes. Šīs atzīmes ietekmē visus lietotājus.", + "Select tag …" : "Izvēlies atzīmi...", "Name" : "Nosaukums", "Delete" : "Dzēst", "Public" : "Publisks", diff --git a/apps/systemtags/l10n/lv.json b/apps/systemtags/l10n/lv.json index f73c14c6e24..7359422ea9e 100644 --- a/apps/systemtags/l10n/lv.json +++ b/apps/systemtags/l10n/lv.json @@ -26,13 +26,22 @@ "{actor} deleted system tag {systemtag}" : "{actor} izdzēsa sistēmas atzīmi {systemtag}", "You updated system tag %2$s to %1$s" : "Tu atjaunoji sistēmas atzīmi %2$s uz %1$s", "You updated system tag {oldsystemtag} to {newsystemtag}" : "Jūs atjaunināt sistēmas atzīmi {oldsystemtag} uz {newsystemtag}", + "%1$s updated system tag %3$s to %2$s" : "%1$spārmainija sistēmas atzīmi %3$s uz %2$s", + "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} atjaunināja sistēmas atzīmi {oldsystemtag} uz {newsystemtag}", "You added system tag %2$s to %1$s" : "Tu pievienoji sistēmas atzīmi %2$s uz %1$s", + "You added system tag {systemtag} to {file}" : "Tu pievienoji sistēmas atzīmi {systemtag} failam {file}", + "%1$s added system tag %3$s to %2$s" : "%1$spievienoja sistēmas atzīmi %3$s uz %2$s", "{actor} added system tag {systemtag} to {file}" : "{actor} added system tag {systemtag} to {file}", "You removed system tag %2$s from %1$s" : "Tu noņēmi sistēmas atzīmi %2$s no %1$s", "You removed system tag {systemtag} from {file}" : "TU noņēmi sistēmas atzīmi {systemtag} no {file}", + "%1$s removed system tag %3$s from %2$s" : "%1$s noņēma sistēmas atzīmi %3$s no %2$s", + "{actor} removed system tag {systemtag} from {file}" : "{actor} noņēma sistēmas atzīmi {systemtag} no {file}", "%s (restricted)" : "%s (ierobežots)", "%s (invisible)" : "%s (neredzams)", + "<strong>System tags</strong> for a file have been modified" : "<strong>Sistēmas atzīmes</strong> failam tikušas mainītas", "Collaborative tags" : "Sadarbības atzīmes", + "Create and edit collaborative tags. These tags affect all users." : "Izveido un rediģē sadarbības atzīmes. Šīs atzīmes ietekmē visus lietotājus.", + "Select tag …" : "Izvēlies atzīmi...", "Name" : "Nosaukums", "Delete" : "Dzēst", "Public" : "Publisks", diff --git a/apps/systemtags/l10n/sq.js b/apps/systemtags/l10n/sq.js index d54ec6179d0..775fb16dc7b 100644 --- a/apps/systemtags/l10n/sq.js +++ b/apps/systemtags/l10n/sq.js @@ -19,7 +19,9 @@ OC.L10N.register( "%1$s removed system tag %2$s" : "%1$s hoqi etiketën %2$s të sistemit ", "{actor} removed system tag {systemtag}" : "{actor} hoqi etiketën e sistemit {systemtag}", "You created system tag %1$s" : "Ju krijuat etiketën %1$s të sistemit", + "You created system tag {systemtag}" : "Ju keni krijuar etiketimin e sistemit {systemtag}", "%1$s created system tag %2$s" : "%1$s krijoi etiketën e sistemit %2$s", + "{actor} created system tag {systemtag}" : "{actor} krijoi etiketimin e sistemit {systemtag}", "You deleted system tag %1$s" : "Ju fshit etiketën %1$s të sistemit", "You deleted system tag {systemtag}" : "Ju fshit etiketën {systemtag} të sistemit", "%1$s deleted system tag %2$s" : "%1$s fshiu etiketën e sistemit %2$s", @@ -27,13 +29,21 @@ OC.L10N.register( "You updated system tag %2$s to %1$s" : "Ju përditësuat etiketën e sistemit nga %2$s në %1$s", "You updated system tag {oldsystemtag} to {newsystemtag}" : "Ju përditësuat etiketën e sistemit nga {oldsystemtag} në {newsystemtag}", "%1$s updated system tag %3$s to %2$s" : "%1$s përditësoi etiketën e sistemit %3$s si %2$s", + "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} përditësoi etiketimin e sistemit {oldsystemtag} në {newsystemtag}", "You added system tag %2$s to %1$s" : "Ju shtuat tagun e sistemit%2$s në %1$s", "You added system tag {systemtag} to {file}" : "Ju shtuat tagun e sistemit{systemtag} në{file}", + "%1$s added system tag %3$s to %2$s" : "%1$s shtoi etiketën e sistemit %3$s në %2$s", + "{actor} added system tag {systemtag} to {file}" : "{actor} shtoi etiketimin e sistemit {systemtag} në {file}", + "You removed system tag %2$s from %1$s" : "Ju hoqët etiketimin e sistemit %2$s nga %1$s", "You removed system tag {systemtag} from {file}" : "Hoqët etiketën e sistemit {systemtag} nga {file}", + "%1$s removed system tag %3$s from %2$s" : "%1$s hoqi etiketimin e sistemit %3$s nga %2$s", + "{actor} removed system tag {systemtag} from {file}" : "{actor} hoqi etiketimin e sistemit {systemtag} nga {file}", "%s (restricted)" : "%s (e kufizuar)", "%s (invisible)" : "%s (e padukshme)", "<strong>System tags</strong> for a file have been modified" : "U ndryshyan <strong>etiketa sistemi</strong>për një kartelë", "Collaborative tags" : "Etiketa bashkëpunuese", + "Create and edit collaborative tags. These tags affect all users." : "Krijo dhe ndrysho etiketa bashkëpunuese. Këto etiketa ndikojnë tek të gjithë përdoruesit.", + "Select tag …" : "Zgjidh etiketimin", "Name" : "Emër", "Delete" : "Fshije", "Public" : "Publik", diff --git a/apps/systemtags/l10n/sq.json b/apps/systemtags/l10n/sq.json index c9d9d1b333c..e4cbc8ddcd3 100644 --- a/apps/systemtags/l10n/sq.json +++ b/apps/systemtags/l10n/sq.json @@ -17,7 +17,9 @@ "%1$s removed system tag %2$s" : "%1$s hoqi etiketën %2$s të sistemit ", "{actor} removed system tag {systemtag}" : "{actor} hoqi etiketën e sistemit {systemtag}", "You created system tag %1$s" : "Ju krijuat etiketën %1$s të sistemit", + "You created system tag {systemtag}" : "Ju keni krijuar etiketimin e sistemit {systemtag}", "%1$s created system tag %2$s" : "%1$s krijoi etiketën e sistemit %2$s", + "{actor} created system tag {systemtag}" : "{actor} krijoi etiketimin e sistemit {systemtag}", "You deleted system tag %1$s" : "Ju fshit etiketën %1$s të sistemit", "You deleted system tag {systemtag}" : "Ju fshit etiketën {systemtag} të sistemit", "%1$s deleted system tag %2$s" : "%1$s fshiu etiketën e sistemit %2$s", @@ -25,13 +27,21 @@ "You updated system tag %2$s to %1$s" : "Ju përditësuat etiketën e sistemit nga %2$s në %1$s", "You updated system tag {oldsystemtag} to {newsystemtag}" : "Ju përditësuat etiketën e sistemit nga {oldsystemtag} në {newsystemtag}", "%1$s updated system tag %3$s to %2$s" : "%1$s përditësoi etiketën e sistemit %3$s si %2$s", + "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} përditësoi etiketimin e sistemit {oldsystemtag} në {newsystemtag}", "You added system tag %2$s to %1$s" : "Ju shtuat tagun e sistemit%2$s në %1$s", "You added system tag {systemtag} to {file}" : "Ju shtuat tagun e sistemit{systemtag} në{file}", + "%1$s added system tag %3$s to %2$s" : "%1$s shtoi etiketën e sistemit %3$s në %2$s", + "{actor} added system tag {systemtag} to {file}" : "{actor} shtoi etiketimin e sistemit {systemtag} në {file}", + "You removed system tag %2$s from %1$s" : "Ju hoqët etiketimin e sistemit %2$s nga %1$s", "You removed system tag {systemtag} from {file}" : "Hoqët etiketën e sistemit {systemtag} nga {file}", + "%1$s removed system tag %3$s from %2$s" : "%1$s hoqi etiketimin e sistemit %3$s nga %2$s", + "{actor} removed system tag {systemtag} from {file}" : "{actor} hoqi etiketimin e sistemit {systemtag} nga {file}", "%s (restricted)" : "%s (e kufizuar)", "%s (invisible)" : "%s (e padukshme)", "<strong>System tags</strong> for a file have been modified" : "U ndryshyan <strong>etiketa sistemi</strong>për një kartelë", "Collaborative tags" : "Etiketa bashkëpunuese", + "Create and edit collaborative tags. These tags affect all users." : "Krijo dhe ndrysho etiketa bashkëpunuese. Këto etiketa ndikojnë tek të gjithë përdoruesit.", + "Select tag …" : "Zgjidh etiketimin", "Name" : "Emër", "Delete" : "Fshije", "Public" : "Publik", diff --git a/apps/theming/l10n/ca.js b/apps/theming/l10n/ca.js new file mode 100644 index 00000000000..ae523acb2b1 --- /dev/null +++ b/apps/theming/l10n/ca.js @@ -0,0 +1,31 @@ +OC.L10N.register( + "theming", + { + "Loading preview…" : "Carregant vista prèvia ...", + "Saved" : "Guardat", + "Admin" : "Admin", + "a safe home for all your data" : "un lloc segur per a les teves dades", + "The given name is too long" : "El nom introduït és massa llarg", + "The given web address is too long" : "L'adreça web proporcionada és massa llarga", + "The given slogan is too long" : "El lema indicat és massa llarg", + "The given color is invalid" : "El color donat no és vàlid", + "No file uploaded" : "No s'ha carregat cap fitxer", + "Unsupported image type" : "Tipus d'imatge no compatible", + "You are already using a custom theme" : "Ja esteu utilitzant un tema personalitzat", + "Theming" : "Adaptació de temes", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "L'adaptació de temes permet personalitzar fàcilment l'aspecte de la vostra instància i els clients compatibles. Això serà visible per a tots els usuaris.", + "Name" : "Nom", + "Reset to default" : "Restablir al valor predeterminat", + "Web address" : "Adreça web", + "Web address https://…" : "Adreça del servidor https://…", + "Slogan" : "Lema", + "Color" : "Color", + "Logo" : "Logotip", + "Upload new logo" : "Penjar un nou logotip", + "Login image" : "Login logo", + "Upload new login background" : "Carregar nou fons d'inici de sessió", + "Remove background image" : "Elimina la imatge de fons", + "reset to default" : "restablir a configuració predeterminada", + "Log in image" : "Imatge d'entrada" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/theming/l10n/ca.json b/apps/theming/l10n/ca.json new file mode 100644 index 00000000000..794bf8ba05c --- /dev/null +++ b/apps/theming/l10n/ca.json @@ -0,0 +1,29 @@ +{ "translations": { + "Loading preview…" : "Carregant vista prèvia ...", + "Saved" : "Guardat", + "Admin" : "Admin", + "a safe home for all your data" : "un lloc segur per a les teves dades", + "The given name is too long" : "El nom introduït és massa llarg", + "The given web address is too long" : "L'adreça web proporcionada és massa llarga", + "The given slogan is too long" : "El lema indicat és massa llarg", + "The given color is invalid" : "El color donat no és vàlid", + "No file uploaded" : "No s'ha carregat cap fitxer", + "Unsupported image type" : "Tipus d'imatge no compatible", + "You are already using a custom theme" : "Ja esteu utilitzant un tema personalitzat", + "Theming" : "Adaptació de temes", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "L'adaptació de temes permet personalitzar fàcilment l'aspecte de la vostra instància i els clients compatibles. Això serà visible per a tots els usuaris.", + "Name" : "Nom", + "Reset to default" : "Restablir al valor predeterminat", + "Web address" : "Adreça web", + "Web address https://…" : "Adreça del servidor https://…", + "Slogan" : "Lema", + "Color" : "Color", + "Logo" : "Logotip", + "Upload new logo" : "Penjar un nou logotip", + "Login image" : "Login logo", + "Upload new login background" : "Carregar nou fons d'inici de sessió", + "Remove background image" : "Elimina la imatge de fons", + "reset to default" : "restablir a configuració predeterminada", + "Log in image" : "Imatge d'entrada" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/theming/l10n/ja.js b/apps/theming/l10n/ja.js index c900a8adb40..7cf3019f55f 100644 --- a/apps/theming/l10n/ja.js +++ b/apps/theming/l10n/ja.js @@ -4,6 +4,7 @@ OC.L10N.register( "Loading preview…" : "プレビューを読込み中...", "Saved" : "保存済み", "Admin" : "管理者", + "a safe home for all your data" : "あなたのデータを安全に保管するプラットフォーム", "The given name is too long" : "名前が長すぎます", "The given web address is too long" : "Webアドレスが長すぎます", "The given slogan is too long" : "スローガンが長すぎます", diff --git a/apps/theming/l10n/ja.json b/apps/theming/l10n/ja.json index 48fe11440ea..69c37a17500 100644 --- a/apps/theming/l10n/ja.json +++ b/apps/theming/l10n/ja.json @@ -2,6 +2,7 @@ "Loading preview…" : "プレビューを読込み中...", "Saved" : "保存済み", "Admin" : "管理者", + "a safe home for all your data" : "あなたのデータを安全に保管するプラットフォーム", "The given name is too long" : "名前が長すぎます", "The given web address is too long" : "Webアドレスが長すぎます", "The given slogan is too long" : "スローガンが長すぎます", diff --git a/apps/theming/l10n/lv.js b/apps/theming/l10n/lv.js new file mode 100644 index 00000000000..e579c6338f9 --- /dev/null +++ b/apps/theming/l10n/lv.js @@ -0,0 +1,31 @@ +OC.L10N.register( + "theming", + { + "Loading preview…" : "Ielādē priekšskatījumu...", + "Saved" : "Saglabāts", + "Admin" : "Admin", + "a safe home for all your data" : "droša vieta visiem jūsu datiem", + "The given name is too long" : "Norādītais nosaukums ir pārāk garš", + "The given web address is too long" : "Norādītā adrese ir pārāk gara", + "The given slogan is too long" : "Norādītais teiciens ir pārāk garšs", + "The given color is invalid" : "Norādītā krāsa ir nederīga", + "No file uploaded" : "Nav augšupielādēta faila", + "Unsupported image type" : "Neatbalstīts attēla tips", + "You are already using a custom theme" : "Tu jau izmanto pielāgotu tēmu", + "Theming" : "Dizains", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Tēmošana padara iespējamu viegli pielāgot savas instances un atbalstošo klientaplikāciju izskatu un sajūtu. Tas būs redzams visiem lietotājiem.", + "Name" : "Nosaukums", + "Reset to default" : "Atiestatīt", + "Web address" : "Tīmekļa adrese", + "Web address https://…" : "Servera adrese https://…", + "Slogan" : "Sauklis", + "Color" : "Krāsa", + "Logo" : "Logo", + "Upload new logo" : "Augšupielādēt jaunu logo", + "Login image" : "Pieslēgšanās fona attēls", + "Upload new login background" : "Augšupielādēt jaunu pieslēgšanās fona attēlu", + "Remove background image" : "Noņemt fona attēlu", + "reset to default" : "Atiestatīt", + "Log in image" : "Pieslēgšanas fona attēls" +}, +"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"); diff --git a/apps/theming/l10n/lv.json b/apps/theming/l10n/lv.json new file mode 100644 index 00000000000..6c0bbaa90a8 --- /dev/null +++ b/apps/theming/l10n/lv.json @@ -0,0 +1,29 @@ +{ "translations": { + "Loading preview…" : "Ielādē priekšskatījumu...", + "Saved" : "Saglabāts", + "Admin" : "Admin", + "a safe home for all your data" : "droša vieta visiem jūsu datiem", + "The given name is too long" : "Norādītais nosaukums ir pārāk garš", + "The given web address is too long" : "Norādītā adrese ir pārāk gara", + "The given slogan is too long" : "Norādītais teiciens ir pārāk garšs", + "The given color is invalid" : "Norādītā krāsa ir nederīga", + "No file uploaded" : "Nav augšupielādēta faila", + "Unsupported image type" : "Neatbalstīts attēla tips", + "You are already using a custom theme" : "Tu jau izmanto pielāgotu tēmu", + "Theming" : "Dizains", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Tēmošana padara iespējamu viegli pielāgot savas instances un atbalstošo klientaplikāciju izskatu un sajūtu. Tas būs redzams visiem lietotājiem.", + "Name" : "Nosaukums", + "Reset to default" : "Atiestatīt", + "Web address" : "Tīmekļa adrese", + "Web address https://…" : "Servera adrese https://…", + "Slogan" : "Sauklis", + "Color" : "Krāsa", + "Logo" : "Logo", + "Upload new logo" : "Augšupielādēt jaunu logo", + "Login image" : "Pieslēgšanās fona attēls", + "Upload new login background" : "Augšupielādēt jaunu pieslēgšanās fona attēlu", + "Remove background image" : "Noņemt fona attēlu", + "reset to default" : "Atiestatīt", + "Log in image" : "Pieslēgšanas fona attēls" +},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);" +}
\ No newline at end of file diff --git a/apps/theming/l10n/sq.js b/apps/theming/l10n/sq.js new file mode 100644 index 00000000000..a8bb7640d2f --- /dev/null +++ b/apps/theming/l10n/sq.js @@ -0,0 +1,31 @@ +OC.L10N.register( + "theming", + { + "Loading preview…" : "Duke ngarkuar pamjen paraprake...", + "Saved" : "E ruajtur", + "Admin" : "Admin", + "a safe home for all your data" : "një vënd i sigurtë për të dhënat e tua ", + "The given name is too long" : "Emri i dhënë është tepër i gjatë ", + "The given web address is too long" : "Adresa e dhënë e ueb-it është tepër e gjate ", + "The given slogan is too long" : "Slogani i dhënë është shumë i gjatë ", + "The given color is invalid" : "Ngjyra e dhënë është invalide ", + "No file uploaded" : "Asnjë skedar i ngarkuar", + "Unsupported image type" : "Lloj imazhi i pa suportuar", + "You are already using a custom theme" : "Ju jeni duke përdorur një temë të zakonshme tashmë", + "Theming" : "Duke vendosur theme-n", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming bën të mundur për të përshtatur lehtësisht pamjen dhe ndjenjën e instancës suaj dhe klientëve të mbështetur. Kjo do të jetë e dukshme për të gjithë përdoruesit.", + "Name" : "Emri", + "Reset to default" : "Rivendos tek të paracaktuarat", + "Web address" : "Adresa e Web", + "Web address https://…" : "Adresë uebi https://...", + "Slogan" : "Sllogan", + "Color" : "Ngjyrë ", + "Logo" : "Logo", + "Upload new logo" : "Ngarko logo të re ", + "Login image" : "Imazhi i hyrjes", + "Upload new login background" : "Ngarko background të ri hyrjeje", + "Remove background image" : "Hiqni imazhin në sfond", + "reset to default" : "rivendos tek të paracaktuarat", + "Log in image" : "Imazhi i identifikimit" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/theming/l10n/sq.json b/apps/theming/l10n/sq.json new file mode 100644 index 00000000000..be6b236c56f --- /dev/null +++ b/apps/theming/l10n/sq.json @@ -0,0 +1,29 @@ +{ "translations": { + "Loading preview…" : "Duke ngarkuar pamjen paraprake...", + "Saved" : "E ruajtur", + "Admin" : "Admin", + "a safe home for all your data" : "një vënd i sigurtë për të dhënat e tua ", + "The given name is too long" : "Emri i dhënë është tepër i gjatë ", + "The given web address is too long" : "Adresa e dhënë e ueb-it është tepër e gjate ", + "The given slogan is too long" : "Slogani i dhënë është shumë i gjatë ", + "The given color is invalid" : "Ngjyra e dhënë është invalide ", + "No file uploaded" : "Asnjë skedar i ngarkuar", + "Unsupported image type" : "Lloj imazhi i pa suportuar", + "You are already using a custom theme" : "Ju jeni duke përdorur një temë të zakonshme tashmë", + "Theming" : "Duke vendosur theme-n", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming bën të mundur për të përshtatur lehtësisht pamjen dhe ndjenjën e instancës suaj dhe klientëve të mbështetur. Kjo do të jetë e dukshme për të gjithë përdoruesit.", + "Name" : "Emri", + "Reset to default" : "Rivendos tek të paracaktuarat", + "Web address" : "Adresa e Web", + "Web address https://…" : "Adresë uebi https://...", + "Slogan" : "Sllogan", + "Color" : "Ngjyrë ", + "Logo" : "Logo", + "Upload new logo" : "Ngarko logo të re ", + "Login image" : "Imazhi i hyrjes", + "Upload new login background" : "Ngarko background të ri hyrjeje", + "Remove background image" : "Hiqni imazhin në sfond", + "reset to default" : "rivendos tek të paracaktuarat", + "Log in image" : "Imazhi i identifikimit" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/twofactor_backupcodes/l10n/sq.js b/apps/twofactor_backupcodes/l10n/sq.js new file mode 100644 index 00000000000..83a7afbf272 --- /dev/null +++ b/apps/twofactor_backupcodes/l10n/sq.js @@ -0,0 +1,19 @@ +OC.L10N.register( + "twofactor_backupcodes", + { + "Generate backup codes" : "Gjenero kodet rezerve", + "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Kodet rezervë janë gjeneruar. {{të përdorura}} nga {{totali}} kode janë përdorur.", + "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Këto janë kodet tuaja rezervë. Ju lutemi ruajini dhe/ose printojini ato pasi nuk do të jeni në gjendje që ti lexoni më vonë", + "Save backup codes" : "Ruaj kodet e kopjuara", + "Print backup codes" : "Printo kodet rezervë ", + "Regenerate backup codes" : "Gjenero kodet e kopjuara", + "If you regenerate backup codes, you automatically invalidate old codes." : "Nëse gjeneroni kode rezervë, automaktikisht ju çaktivizoni kodet e vjetra.", + "An error occurred while generating your backup codes" : "Ndodhi një problem ndërsa ishin duke u prodhuar kodet tuaja rezervë", + "Nextcloud backup codes" : "Kodet rezervë të Nextcloud", + "You created two-factor backup codes for your account" : "Ju krijuat kodet rezervë me dy faktorë për llogarinë tuaj", + "Backup code" : "Kod i kopjuar", + "Use backup code" : "Përdorni kodin e kopjimit", + "Two factor backup codes" : "Dy kopje rezervë të faktorëve", + "Second-factor backup codes" : "Kodet e rezervimit të dytë të faktorëve" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/twofactor_backupcodes/l10n/sq.json b/apps/twofactor_backupcodes/l10n/sq.json new file mode 100644 index 00000000000..f7ec11b3ecf --- /dev/null +++ b/apps/twofactor_backupcodes/l10n/sq.json @@ -0,0 +1,17 @@ +{ "translations": { + "Generate backup codes" : "Gjenero kodet rezerve", + "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Kodet rezervë janë gjeneruar. {{të përdorura}} nga {{totali}} kode janë përdorur.", + "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Këto janë kodet tuaja rezervë. Ju lutemi ruajini dhe/ose printojini ato pasi nuk do të jeni në gjendje që ti lexoni më vonë", + "Save backup codes" : "Ruaj kodet e kopjuara", + "Print backup codes" : "Printo kodet rezervë ", + "Regenerate backup codes" : "Gjenero kodet e kopjuara", + "If you regenerate backup codes, you automatically invalidate old codes." : "Nëse gjeneroni kode rezervë, automaktikisht ju çaktivizoni kodet e vjetra.", + "An error occurred while generating your backup codes" : "Ndodhi një problem ndërsa ishin duke u prodhuar kodet tuaja rezervë", + "Nextcloud backup codes" : "Kodet rezervë të Nextcloud", + "You created two-factor backup codes for your account" : "Ju krijuat kodet rezervë me dy faktorë për llogarinë tuaj", + "Backup code" : "Kod i kopjuar", + "Use backup code" : "Përdorni kodin e kopjimit", + "Two factor backup codes" : "Dy kopje rezervë të faktorëve", + "Second-factor backup codes" : "Kodet e rezervimit të dytë të faktorëve" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/updatenotification/css/admin.css b/apps/updatenotification/css/admin.css new file mode 100644 index 00000000000..59c8f056fbc --- /dev/null +++ b/apps/updatenotification/css/admin.css @@ -0,0 +1,3 @@ +#oca_updatenotification_section p { + margin: 25px 0; +} diff --git a/apps/updatenotification/l10n/is.js b/apps/updatenotification/l10n/is.js index f6b3825b56b..801b6f7c3fe 100644 --- a/apps/updatenotification/l10n/is.js +++ b/apps/updatenotification/l10n/is.js @@ -18,6 +18,7 @@ OC.L10N.register( "Checked on %s" : "Athugað þann %s", "Update channel:" : "Uppfærslurás:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Þú getur alltaf uppfært í nýrri útgáfu eða tilraunaútgáfurás. En þú getur aldrei niðurfært í stöðugri rás.", + "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Athugaðu að það getur tekið nokkurn tíma áður en nýjar útgáfur birtast hér. Við dreifum útgáfum yfir tíma auk þess sem stundum er útgáfum sleppt ef í þeim finnast hnökrar.", "Notify members of the following groups about available updates:" : "Tilkynna meðlimum eftirfarandi hópa um tiltækar uppfærslur:", "Only notification for app updates are available." : "Eingöngu eru eru tiltækar tilkynningar fyrir uppfærslur forrita.", "The selected update channel makes dedicated notifications for the server obsolete." : "Valda uppfærslurásin gerir úreltar sértækar tilkynningar fyrir vefþjóninn.", diff --git a/apps/updatenotification/l10n/is.json b/apps/updatenotification/l10n/is.json index c24c469b2f2..8ff7e4a004f 100644 --- a/apps/updatenotification/l10n/is.json +++ b/apps/updatenotification/l10n/is.json @@ -16,6 +16,7 @@ "Checked on %s" : "Athugað þann %s", "Update channel:" : "Uppfærslurás:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Þú getur alltaf uppfært í nýrri útgáfu eða tilraunaútgáfurás. En þú getur aldrei niðurfært í stöðugri rás.", + "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Athugaðu að það getur tekið nokkurn tíma áður en nýjar útgáfur birtast hér. Við dreifum útgáfum yfir tíma auk þess sem stundum er útgáfum sleppt ef í þeim finnast hnökrar.", "Notify members of the following groups about available updates:" : "Tilkynna meðlimum eftirfarandi hópa um tiltækar uppfærslur:", "Only notification for app updates are available." : "Eingöngu eru eru tiltækar tilkynningar fyrir uppfærslur forrita.", "The selected update channel makes dedicated notifications for the server obsolete." : "Valda uppfærslurásin gerir úreltar sértækar tilkynningar fyrir vefþjóninn.", diff --git a/apps/updatenotification/l10n/sq.js b/apps/updatenotification/l10n/sq.js index 6f0b0683ef5..0aba2eb911a 100644 --- a/apps/updatenotification/l10n/sq.js +++ b/apps/updatenotification/l10n/sq.js @@ -18,6 +18,7 @@ OC.L10N.register( "Checked on %s" : "Kontrolluar më %s", "Update channel:" : "Kanal përditësimesh:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Mundeni përherë ta përditësoni me një version të ri / kanal eksperimental. Por nuk mund ta ulni kurrë versionin në një version më të qëndrueshëm.", + "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Vini re se pas një lëshimi të ri mund të duhet pak kohë para se të shfaqet këtu. Ne hapim versione të reja të shpërndara me kalimin e kohës tek përdoruesit tanë dhe nganjëherë kalojmë një version kur gjenden çështjet.", "Notify members of the following groups about available updates:" : "Njoftoji anëtarët e grupeve vijues për përditësime të gatshme:", "Only notification for app updates are available." : "Vetëm njoftime për përditësime aplikacionesh janë të disponueshme.", "The selected update channel makes dedicated notifications for the server obsolete." : "Kanali i zgjedhur i përditësimit i bën njoftimet për shërbyesin të papërdorshme.", diff --git a/apps/updatenotification/l10n/sq.json b/apps/updatenotification/l10n/sq.json index e013aa84452..a5f5f4a1c46 100644 --- a/apps/updatenotification/l10n/sq.json +++ b/apps/updatenotification/l10n/sq.json @@ -16,6 +16,7 @@ "Checked on %s" : "Kontrolluar më %s", "Update channel:" : "Kanal përditësimesh:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Mundeni përherë ta përditësoni me një version të ri / kanal eksperimental. Por nuk mund ta ulni kurrë versionin në një version më të qëndrueshëm.", + "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Vini re se pas një lëshimi të ri mund të duhet pak kohë para se të shfaqet këtu. Ne hapim versione të reja të shpërndara me kalimin e kohës tek përdoruesit tanë dhe nganjëherë kalojmë një version kur gjenden çështjet.", "Notify members of the following groups about available updates:" : "Njoftoji anëtarët e grupeve vijues për përditësime të gatshme:", "Only notification for app updates are available." : "Vetëm njoftime për përditësime aplikacionesh janë të disponueshme.", "The selected update channel makes dedicated notifications for the server obsolete." : "Kanali i zgjedhur i përditësimit i bën njoftimet për shërbyesin të papërdorshme.", diff --git a/apps/updatenotification/lib/Controller/AdminController.php b/apps/updatenotification/lib/Controller/AdminController.php index 0a867f1267c..fd68a6dd962 100644 --- a/apps/updatenotification/lib/Controller/AdminController.php +++ b/apps/updatenotification/lib/Controller/AdminController.php @@ -86,9 +86,8 @@ class AdminController extends Controller implements ISettings { * @return TemplateResponse */ public function displayPanel() { - $lastUpdateCheck = $this->dateTimeFormatter->formatDateTime( - $this->config->getAppValue('core', 'lastupdatedat') - ); + $lastUpdateCheckTimestamp = $this->config->getAppValue('core', 'lastupdatedat'); + $lastUpdateCheck = $this->dateTimeFormatter->formatDateTime($lastUpdateCheckTimestamp); $channels = [ 'daily', @@ -106,15 +105,20 @@ class AdminController extends Controller implements ISettings { $notifyGroups = json_decode($this->config->getAppValue('updatenotification', 'notify_groups', '["admin"]'), true); + $defaultUpdateServerURL = 'https://updates.nextcloud.com/server/'; + $updateServerURL = $this->config->getSystemValue('updater.server.url', $defaultUpdateServerURL); + $params = [ 'isNewVersionAvailable' => !empty($updateState['updateAvailable']), + 'isUpdateChecked' => $lastUpdateCheckTimestamp > 0, 'lastChecked' => $lastUpdateCheck, 'currentChannel' => $currentChannel, 'channels' => $channels, 'newVersionString' => (empty($updateState['updateVersion'])) ? '' : $updateState['updateVersion'], 'downloadLink' => (empty($updateState['downloadLink'])) ? '' : $updateState['downloadLink'], 'updaterEnabled' => (empty($updateState['updaterEnabled'])) ? false : $updateState['updaterEnabled'], - + 'isDefaultUpdateServerURL' => $updateServerURL === $defaultUpdateServerURL, + 'updateServerURL' => $updateServerURL, 'notify_groups' => implode('|', $notifyGroups), ]; diff --git a/apps/updatenotification/lib/Notification/Notifier.php b/apps/updatenotification/lib/Notification/Notifier.php index e512825da04..2fc1d36b0cb 100644 --- a/apps/updatenotification/lib/Notification/Notifier.php +++ b/apps/updatenotification/lib/Notification/Notifier.php @@ -117,7 +117,7 @@ class Notifier implements INotifier { } $notification->setParsedSubject($l->t('Update for %1$s to version %2$s is available.', [$appName, $notification->getObjectId()])) - ->setRichSubject($l->t('Update for {app} to version %s is available.', $notification->getObjectId()), [ + ->setRichSubject($l->t('Update for {app} to version %s is available.', [$notification->getObjectId()]), [ 'app' => [ 'type' => 'app', 'id' => $notification->getObjectType(), diff --git a/apps/updatenotification/templates/admin.php b/apps/updatenotification/templates/admin.php index 369d4905a40..e09d19848e7 100644 --- a/apps/updatenotification/templates/admin.php +++ b/apps/updatenotification/templates/admin.php @@ -1,31 +1,50 @@ <?php script('updatenotification', 'admin'); + style('updatenotification', 'admin'); /** @var array $_ */ /** @var bool $isNewVersionAvailable */ $isNewVersionAvailable = $_['isNewVersionAvailable']; /** @var string $newVersionString */ $newVersionString = $_['newVersionString']; + /** @var bool $isUpdateChecked */ + $isUpdateChecked = $_['isUpdateChecked']; /** @var string $lastCheckedDate */ $lastCheckedDate = $_['lastChecked']; /** @var array $channels */ $channels = $_['channels']; /** @var string $currentChannel */ $currentChannel = $_['currentChannel']; + /** @var string $updateServerURL */ + $updateServerURL = $_['updateServerURL']; + /** @var bool $isDefaultUpdateServerURL */ + $isDefaultUpdateServerURL = $_['isDefaultUpdateServerURL']; ?> <form id="oca_updatenotification_section" class="followupsection"> - <?php if($isNewVersionAvailable === true) { ?> - <strong><?php p($l->t('A new version is available: %s', [$newVersionString])); ?></strong> - <?php if ($_['updaterEnabled']) { ?> - <input type="button" id="oca_updatenotification_button" value="<?php p($l->t('Open updater')) ?>"> + <p> + <?php if ($isNewVersionAvailable === true) { ?> + <strong><?php p($l->t('A new version is available: %s', [$newVersionString])); ?></strong> + <?php if ($_['updaterEnabled']) { ?> + <input type="button" id="oca_updatenotification_button" value="<?php p($l->t('Open updater')) ?>"> + <?php } ?> + <?php if (!empty($_['downloadLink'])) { ?> + <a href="<?php p($_['downloadLink']); ?>" class="button<?php if ($_['updaterEnabled']) { p(' hidden'); } ?>"><?php p($l->t('Download now')) ?></a> + <?php } ?> + <?php } elseif (!$isUpdateChecked) { ?> + <?php p($l->t('The update check is not yet finished. Please refresh the page.')); ?> + <?php } else { ?> + <?php p($l->t('Your version is up to date.')); ?> + <span class="icon-info svg" title="<?php p($l->t('Checked on %s', [$lastCheckedDate])) ?>"></span> <?php } ?> - <?php if (!empty($_['downloadLink'])) { ?> - <a href="<?php p($_['downloadLink']); ?>" class="button<?php if ($_['updaterEnabled']) { p(' hidden'); } ?>"><?php p($l->t('Download now')) ?></a> + + <?php if (!$isDefaultUpdateServerURL) { ?> + <br /> + <em> + <?php p($l->t("A non-default update server is in use to be checked for updates:")); ?> + <code><?php p($updateServerURL); ?></code> + </em> <?php } ?> - <?php } else { ?> - <?php p($l->t('Your version is up to date.')); ?> - <span class="icon-info svg" title="<?php p($l->t('Checked on %s', [$lastCheckedDate])) ?>"></span> - <?php } ?> + </p> <p> <label for="release-channel"><?php p($l->t('Update channel:')) ?></label> @@ -37,20 +56,16 @@ </option> <?php } ?> </select> - <span id="channel_save_msg" class="msg"></span> - </p> - <p> - <em><?php p($l->t('You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel.')); ?></em> + <span id="channel_save_msg" class="msg"></span><br /> + <em><?php p($l->t('You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel.')); ?></em><br /> <em><?php p($l->t('Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found.')); ?></em> </p> <p id="oca_updatenotification_groups"> - <br /> <?php p($l->t('Notify members of the following groups about available updates:')); ?> - <input name="oca_updatenotification_groups_list" type="hidden" id="oca_updatenotification_groups_list" value="<?php p($_['notify_groups']) ?>" style="width: 400px"> + <input name="oca_updatenotification_groups_list" type="hidden" id="oca_updatenotification_groups_list" value="<?php p($_['notify_groups']) ?>" style="width: 400px"><br /> <em class="<?php if (!in_array($currentChannel, ['daily', 'git'])) p('hidden'); ?>"> - <br /> <?php p($l->t('Only notification for app updates are available.')); ?> <?php if ($currentChannel === 'daily') p($l->t('The selected update channel makes dedicated notifications for the server obsolete.')); ?> <?php if ($currentChannel === 'git') p($l->t('The selected update channel does not support updates of the server.')); ?> diff --git a/apps/updatenotification/tests/Controller/AdminControllerTest.php b/apps/updatenotification/tests/Controller/AdminControllerTest.php index 31e852a9e2e..ebf044abffd 100644 --- a/apps/updatenotification/tests/Controller/AdminControllerTest.php +++ b/apps/updatenotification/tests/Controller/AdminControllerTest.php @@ -103,6 +103,11 @@ class AdminControllerTest extends TestCase { ['core', 'lastupdatedat', '', '12345'], ['updatenotification', 'notify_groups', '["admin"]', '["admin"]'], ]); + $this->config + ->expects($this->once()) + ->method('getSystemValue') + ->with('updater.server.url', 'https://updates.nextcloud.com/server/') + ->willReturn('https://updates.nextcloud.com/server/'); $this->dateTimeFormatter ->expects($this->once()) ->method('formatDateTime') @@ -120,12 +125,15 @@ class AdminControllerTest extends TestCase { $params = [ 'isNewVersionAvailable' => true, + 'isUpdateChecked' => true, 'lastChecked' => 'LastCheckedReturnValue', 'currentChannel' => \OCP\Util::getChannel(), 'channels' => $channels, 'newVersionString' => '8.1.2', 'downloadLink' => 'https://downloads.nextcloud.org/server', 'updaterEnabled' => true, + 'isDefaultUpdateServerURL' => true, + 'updateServerURL' => 'https://updates.nextcloud.com/server/', 'notify_groups' => 'admin', ]; @@ -154,6 +162,11 @@ class AdminControllerTest extends TestCase { ['core', 'lastupdatedat', '', '12345'], ['updatenotification', 'notify_groups', '["admin"]', '["admin"]'], ]); + $this->config + ->expects($this->once()) + ->method('getSystemValue') + ->with('updater.server.url', 'https://updates.nextcloud.com/server/') + ->willReturn('https://updates.nextcloud.com/server/'); $this->dateTimeFormatter ->expects($this->once()) ->method('formatDateTime') @@ -166,12 +179,15 @@ class AdminControllerTest extends TestCase { $params = [ 'isNewVersionAvailable' => false, + 'isUpdateChecked' => true, 'lastChecked' => 'LastCheckedReturnValue', 'currentChannel' => \OCP\Util::getChannel(), 'channels' => $channels, 'newVersionString' => '', 'downloadLink' => '', 'updaterEnabled' => 0, + 'isDefaultUpdateServerURL' => true, + 'updateServerURL' => 'https://updates.nextcloud.com/server/', 'notify_groups' => 'admin', ]; diff --git a/apps/user_ldap/appinfo/install.php b/apps/user_ldap/appinfo/install.php index 43ec69a950b..09f9b412342 100644 --- a/apps/user_ldap/appinfo/install.php +++ b/apps/user_ldap/appinfo/install.php @@ -21,10 +21,11 @@ * along with this program. If not, see <http://www.gnu.org/licenses/> * */ -$state = OCP\Config::getSystemValue('ldapIgnoreNamingRules', 'doSet'); +$config = \OC::$server->getConfig(); +$state = $config->getSystemValue('ldapIgnoreNamingRules', 'doSet'); if($state === 'doSet') { OCP\Config::setSystemValue('ldapIgnoreNamingRules', false); } -$helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig()); +$helper = new \OCA\User_LDAP\Helper($config); $helper->setLDAPProvider(); diff --git a/apps/user_ldap/l10n/sq.js b/apps/user_ldap/l10n/sq.js index cf54ed6ea46..874615ed51c 100644 --- a/apps/user_ldap/l10n/sq.js +++ b/apps/user_ldap/l10n/sq.js @@ -3,6 +3,10 @@ OC.L10N.register( { "Failed to clear the mappings." : "Dështoi në heqjen e përshoqërimeve.", "Failed to delete the server configuration" : "Dështoi në fshirjen e formësimit të serverit", + "Invalid configuration: Anonymous binding is not allowed." : "Konfigurim i pavlefshëm: Lidhja anonim nuk është e lejueshme.", + "Valid configuration, connection established!" : "Konfigurim i vlefshëm, lidhja u krijuar!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Konfigurime të vlefshme, por lidhja dështoi. Ju lutem kontrolloni konfigurimet dhe kredencialet e serverit.", + "Invalid configuration. Please have a look at the logs for further details." : "Konfigurime të pavlefshme. Ju lutem shikoni hyrjet për detaje të mëtejshme.", "No action specified" : "S’është treguar veprim", "No configuration specified" : "S’u dha formësim", "No data specified" : "S’u treguan të dhëna", @@ -41,18 +45,24 @@ OC.L10N.register( "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Këmbimi i mënyrë do të lejojë kërkesa LDAP automatike. Në varësi të madhësisë për LDAP-in tuaj, kjo mund të hajë ca kohë. Doni prapë të këmbehet mënyra?", "Mode switch" : "Këmbim mënyre", "Select attributes" : "Përzgjidhni atribute", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Përdoruesi nuk u gjet. Ju lutemi kontrolloni atributet tuaja të identifikimit dhe emrin e përdoruesit. Filtër efektiv (për të kopjuar dhe ngjitur për validimin e rreshtit të komandës): <br/>", "User found and settings verified." : "Përdoruesi u gjet dhe rregullimet u verifikuan.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Konsideroni të kufizoni kërkimin tuaj, pasi ai përfshin shumë përdorues, vetëm i pari ij të cilëve do të jetë në gjendje të hyjë.", + "An unspecified error occurred. Please check log and settings." : "Një gabim i pa specifikuar ndodhi. Ju lutem kontrolloni hyrjet dhe konfigurimet.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtri i kërkimit është i pavlefshëm, ndoshta për shkak problemesh sintakse, të tillë si një numër jo i njëjtë kllpash të hapura dhe mbyllura. Ju lutemi, rishikojeni.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Ndodhi një gabim lidhje te LDAP / AD, ju lutemi, kontrolloni strehën, portën dhe kredencialet.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Vendi \"%uis\" po mungon. Do të zëvendësohet me emrin e identifikimit kur të kërkohet LDAP / AD.", "Please provide a login name to test against" : "Ju lutemi, jepni një emër hyrjesh që të ritestohet", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Kutia e grupeve u çaktivizua, ngaqë shërbyesi LDAP / AD nuk mbulon memberOf.", "Password change rejected. Hint: " : "Ndryshimi i fjalëkalimit u refuzua. Informatë:", "Please login with the new password" : "Ju lutem kyçuni me fjalëkalimin e ri", "Your password will expire tomorrow." : "Fjalëkalimi juaj do të skadojë nesër", "Your password will expire today." : "Fjalëkalimi juaj do të skadojë sot.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Fjalëkalimi juaj do të skadojë brenad %n ditëve","Fjalëkalimi juaj do të skadojë brenad %n ditëve"], "LDAP / AD integration" : "Integrimi LDAP / AD", "_%s group found_::_%s groups found_" : ["U gjet %s grup","U gjetën %s grupe"], "_%s user found_::_%s users found_" : ["U gjet %s përdorues","U gjetën %s përdorues"], + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nuk mund të zbulohej atributi i emrit të ekranit të përdoruesit. Ju lutemi specifikoni vetë në avancë parametrat e LDAP.", "Could not find the desired feature" : "S’u gjet dot veçoria e dëshiruar", "Invalid Host" : "Strehë e Pavlefshme", "Test Configuration" : "Provoni konfigurimet", @@ -66,8 +76,10 @@ OC.L10N.register( "Edit LDAP Query" : "Përpunoni Kërkesë LDAP", "LDAP Filter:" : "Filtër LDAP:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Filtri përcakton se cilët grupe LDAP do të kenë hyrje te instanca %s.", + "Verify settings and count the groups" : "Verifiko konfigurimet dhe numëro grupet", "When logging in, %s will find the user based on the following attributes:" : "Kur hyhet, %s do ta gjejë përdoruesin duke u bazuar në atributet vijues:", "LDAP / AD Username:" : "Emër përdoruesi LDAP / AD:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Lejon hyrjen në emrin e përdoruesit LDAP / AD, që është ose uid ose sAMAccountName dhe do të zbulohet.", "LDAP / AD Email Address:" : "Adresë Email LDAP / AD:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Lejon hyrje kundrejt një atributi email. Do të lejohen Mail dhe mailPrimaryAddress.", "Other Attributes:" : "Atribute të Tjerë:", @@ -76,9 +88,11 @@ OC.L10N.register( "Verify settings" : "Verifikoni rregullimet", "1. Server" : "1. Shërbyes", "%s. Server:" : "%s. Shërbyes:", + "Add a new configuration" : "Shto një konfigurim të ri", "Copy current configuration into new directory binding" : "Kopjojeni formësimin e tanishëm te një lidhmë e re drejtorie", "Delete the current configuration" : "Fshije formësimin e tanishëm", "Host" : "Strehë", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Ju mund të hiqni protokollin, nëse nuk keni nevojë për SSL. Nëse po, filloni me ldaps: //", "Port" : "Portë", "Detect Port" : "Zbulo Portë", "User DN" : "DN Përdoruesi", @@ -91,14 +105,19 @@ OC.L10N.register( "Test Base DN" : "Testo DN Bazë", "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Shmang kërkesa LDAP automatike. Më e përshtatshme për instalime më të mëdha, por lyp ca dije rreth LDAP-it.", "Manually enter LDAP filters (recommended for large directories)" : "Jepni filtra LDAP dorazi (e këshilluar për drejtori të mëdha)", + "Listing and searching for users is constrained by these criteria:" : "Listimi dhe kërkimi i përdoruesve është i kufizuar nga këto kritere:", "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Klasat më të rëndomta objektesh për përdoruesit janë organizationalPerson, person, user, dhe inetOrgPerson. Nëse s’jeni i sigurt cilën klasë objekti të përzgjidhni, ju lutemi, lidhuni me përgjegjësin e drejtorisë suaj.", "The filter specifies which LDAP users shall have access to the %s instance." : "Filtri përcakton se cilët përdorues LDAP do të kenë hyrje te instanca %s.", "Verify settings and count users" : "Verifiko rregullimet dhe numëro përdoruesit", "Saving" : "Po ruhet", "Back" : "Mbrapsht", "Continue" : "Vazhdo", + "Please renew your password." : "Ju lutem rinovoni fjalëkalimin tuaj", + "An internal error occurred." : "Ndodhi një gabim i brendshëm.", + "Please try again or contact your administrator." : "Ju lutem provoni përsëri ose kontaktoni administratorin tuaj.", "Current password" : "Fjalëkalimi aktual", "New password" : "Fjalëkalim i ri", + "Renew password" : "Rinovo fjalëkalimin", "Wrong password. Reset it?" : "Fjalëkalim i gabuar. Do ta rivendosësh?", "Wrong password." : "Fjalëkalim i gabuar.", "Cancel" : "Anullo", @@ -122,7 +141,7 @@ OC.L10N.register( "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "E pakëshillueshme, përdoreni vetëm për testim! Nëse lidhja funksionon vetëm me këtë mundësi, importoni te shërbyesi juaj %s dëshminë SSL të shërbyesit LDAP.", "Cache Time-To-Live" : "Cache Time-To-Live", "in seconds. A change empties the cache." : "në sekonda. Ndryshimi e zbraz fshehtinën.", - "Directory Settings" : "Rregullime Drejtorie", + "Directory Settings" : "Konfigurime Direktorish", "User Display Name Field" : "Fushë Emri Përdoruesi Në Ekran", "The LDAP attribute to use to generate the user's display name." : "Atribut LDAP që përdoret për të prodhuar emër ekrani për përdoruesin.", "2nd User Display Name Field" : "Fushë e 2-të Emri Përdoruesi Në Ekran", @@ -143,14 +162,22 @@ OC.L10N.register( "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Kur aktivizohet, grupet që përmbajnë grupe mbulohen. (Funksionon vetëm nëse atributi për anëtar grupi përmban DN-ra.)", "Paging chunksize" : "Madhësi copash faqosjeje", "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Madhësi copash të përdorura për kërkime LDAP të sistemuara në faqe, kërkime që japin përfundime të papërpunuara, të tilla si numër përdoruesish ose grupesh. (Caktimi si 0 i çaktivizon kërkimet e faqosura LDAP për këto raste.)", + "Enable LDAP password changes per user" : "Aktivizo ndryshimet LDPA e fjalëkalimit për përdorues", + "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Lejo përdoruesit të LDAP të ndryshojnë fjalëkalimin e tyre dhe lejojnë Administratorët Super dhe Administratorët e Grupit të ndryshojnë fjalëkalimin e përdoruesve të tyre të LDAP. Vepron vetëm kur politikat e kontrollit të qasjes janë konfiguruar në përputhje me rrethanat në serverin LDAP. Ndërkohë që fjalëkalimet u dërgohen në mënyrë të thjeshtë tek serveri LDAP, duhet të përdoret enkriptimi i transportit dhe duhet të konfigurohet hashja e fjalëkalimit në serverin LDAP.", "(New password is sent as plain text to LDAP)" : "(Fjalëkalimi i ri është dërgur si text i thjeshtë te LDAP)", + "Default password policy DN" : "Politika e fjalëkalimit të parazgjedhur DN", + "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "DN e një politike të parazgjedhur të fjalëkalimit që do të përdoret për trajtimin e skadimit të fjalëkalimit. Punon vetëm kur ndryshimet e fjalëkalimeve LDAP për përdorues janë të aktivizuara dhe mbështetet vetëm nga OpenLDAP. Lëreni bosh për të çaktivizuar trajtimin e skadimit të fjalëkalimit.", "Special Attributes" : "Atribute Speciale", "Quota Field" : "Fushë Kuotash", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Lër bosh për kuotën e parazgjedhur të përdoruesit. Përndryshe, specifikoni një atribut LDAP/AD.", "Quota Default" : "Parazgjedhje Kuotash", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Mbishkruaj mbi kuotën e parazgjedhur për përdoruesit e LDAP që nuk kanë një kuotë të caktuar në Fushën e Kuotës.", "Email Field" : "Fushë Email-i", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Vendos emailin e përdoruesit nga atributi i tyre LDAP. Lëreni bosh për sjelljen e paracaktuar.", "User Home Folder Naming Rule" : "Rregull Emërtimi Dosjeje Kreu të Përdoruesit", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Lëreni bosh për emrin e përdoruesit (I Paracaktuar). Ose, përcaktoni një atribut LDAP/AD.", "Internal Username" : "Emër i Brendshëm Përdoruesi", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Në paracaktim, emri i brendshëm i përdoruesit do të krijohet nga atributi UUID. Sigurohuni që emri i përdoruesit është unik dhe karakteret nuk kanë nevojë të konvertohen. Emri i përdoruesit të brendshëm ka kufizim që lejohen vetëm këto karaktere: [a-zA-Z0-9 _. @ -]. Karaktere të tjera zëvendësohen me korrespondencën e tyre ASCII ose thjesht hiqen. Për goditjet një numër do të shtohet / rritet. Emri i brendshëm përdoret për të identifikuar një përdorues brenda. Është gjithashtu emri i parazgjedhur për dosjen e përdoruesit në shtëpi. Është gjithashtu një pjesë e URL-ve të largëta, për shembull për të gjitha shërbimet * DAV. Me këtë cilësim, sjellja e parazgjedhur mund të fshihet. Lëreni bosh për sjelljen e paracaktuar. Ndryshimet do të kenë efekt vetëm në përdoruesit e sapo hartuar (shtuar) LDAP.", "Internal Username Attribute:" : "Atribut Emër i Brendshëm Përdoruesi:", "Override UUID detection" : "Anashkalo zbullim UUID-je", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Si parazgjedhje, atributi UUID zbulohet automatikisht. Atributi UUID përdoret për të identifikuar pa dyshime përdorues dhe grupe LDAP. Gjithashtu, emri i brendshëm i përdoruesi do të krijohet mbi bazën e UUID-së, në mos u përcaktoftë ndryshe më sipër. Mund ta anashkaloni rregullimin dhe të jepni një atribut tuajin sipas dëshirës. Duhet të siguroni që atributi sipas dëshirës të mund të jepet si për përdorues, ashtu edhe për grupe, dhe se është unik. Lëreni të zbrazët që të ruhet sjellja parazgjedhje. Ndryshimet do të kenë efekt vetëm etëm mbi përdorues LDAP të përshoqëruar (shtuar) rishtas.", diff --git a/apps/user_ldap/l10n/sq.json b/apps/user_ldap/l10n/sq.json index d9da64fe0e0..3c01d607e02 100644 --- a/apps/user_ldap/l10n/sq.json +++ b/apps/user_ldap/l10n/sq.json @@ -1,6 +1,10 @@ { "translations": { "Failed to clear the mappings." : "Dështoi në heqjen e përshoqërimeve.", "Failed to delete the server configuration" : "Dështoi në fshirjen e formësimit të serverit", + "Invalid configuration: Anonymous binding is not allowed." : "Konfigurim i pavlefshëm: Lidhja anonim nuk është e lejueshme.", + "Valid configuration, connection established!" : "Konfigurim i vlefshëm, lidhja u krijuar!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Konfigurime të vlefshme, por lidhja dështoi. Ju lutem kontrolloni konfigurimet dhe kredencialet e serverit.", + "Invalid configuration. Please have a look at the logs for further details." : "Konfigurime të pavlefshme. Ju lutem shikoni hyrjet për detaje të mëtejshme.", "No action specified" : "S’është treguar veprim", "No configuration specified" : "S’u dha formësim", "No data specified" : "S’u treguan të dhëna", @@ -39,18 +43,24 @@ "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Këmbimi i mënyrë do të lejojë kërkesa LDAP automatike. Në varësi të madhësisë për LDAP-in tuaj, kjo mund të hajë ca kohë. Doni prapë të këmbehet mënyra?", "Mode switch" : "Këmbim mënyre", "Select attributes" : "Përzgjidhni atribute", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Përdoruesi nuk u gjet. Ju lutemi kontrolloni atributet tuaja të identifikimit dhe emrin e përdoruesit. Filtër efektiv (për të kopjuar dhe ngjitur për validimin e rreshtit të komandës): <br/>", "User found and settings verified." : "Përdoruesi u gjet dhe rregullimet u verifikuan.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Konsideroni të kufizoni kërkimin tuaj, pasi ai përfshin shumë përdorues, vetëm i pari ij të cilëve do të jetë në gjendje të hyjë.", + "An unspecified error occurred. Please check log and settings." : "Një gabim i pa specifikuar ndodhi. Ju lutem kontrolloni hyrjet dhe konfigurimet.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtri i kërkimit është i pavlefshëm, ndoshta për shkak problemesh sintakse, të tillë si një numër jo i njëjtë kllpash të hapura dhe mbyllura. Ju lutemi, rishikojeni.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Ndodhi një gabim lidhje te LDAP / AD, ju lutemi, kontrolloni strehën, portën dhe kredencialet.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Vendi \"%uis\" po mungon. Do të zëvendësohet me emrin e identifikimit kur të kërkohet LDAP / AD.", "Please provide a login name to test against" : "Ju lutemi, jepni një emër hyrjesh që të ritestohet", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Kutia e grupeve u çaktivizua, ngaqë shërbyesi LDAP / AD nuk mbulon memberOf.", "Password change rejected. Hint: " : "Ndryshimi i fjalëkalimit u refuzua. Informatë:", "Please login with the new password" : "Ju lutem kyçuni me fjalëkalimin e ri", "Your password will expire tomorrow." : "Fjalëkalimi juaj do të skadojë nesër", "Your password will expire today." : "Fjalëkalimi juaj do të skadojë sot.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Fjalëkalimi juaj do të skadojë brenad %n ditëve","Fjalëkalimi juaj do të skadojë brenad %n ditëve"], "LDAP / AD integration" : "Integrimi LDAP / AD", "_%s group found_::_%s groups found_" : ["U gjet %s grup","U gjetën %s grupe"], "_%s user found_::_%s users found_" : ["U gjet %s përdorues","U gjetën %s përdorues"], + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nuk mund të zbulohej atributi i emrit të ekranit të përdoruesit. Ju lutemi specifikoni vetë në avancë parametrat e LDAP.", "Could not find the desired feature" : "S’u gjet dot veçoria e dëshiruar", "Invalid Host" : "Strehë e Pavlefshme", "Test Configuration" : "Provoni konfigurimet", @@ -64,8 +74,10 @@ "Edit LDAP Query" : "Përpunoni Kërkesë LDAP", "LDAP Filter:" : "Filtër LDAP:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Filtri përcakton se cilët grupe LDAP do të kenë hyrje te instanca %s.", + "Verify settings and count the groups" : "Verifiko konfigurimet dhe numëro grupet", "When logging in, %s will find the user based on the following attributes:" : "Kur hyhet, %s do ta gjejë përdoruesin duke u bazuar në atributet vijues:", "LDAP / AD Username:" : "Emër përdoruesi LDAP / AD:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Lejon hyrjen në emrin e përdoruesit LDAP / AD, që është ose uid ose sAMAccountName dhe do të zbulohet.", "LDAP / AD Email Address:" : "Adresë Email LDAP / AD:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Lejon hyrje kundrejt një atributi email. Do të lejohen Mail dhe mailPrimaryAddress.", "Other Attributes:" : "Atribute të Tjerë:", @@ -74,9 +86,11 @@ "Verify settings" : "Verifikoni rregullimet", "1. Server" : "1. Shërbyes", "%s. Server:" : "%s. Shërbyes:", + "Add a new configuration" : "Shto një konfigurim të ri", "Copy current configuration into new directory binding" : "Kopjojeni formësimin e tanishëm te një lidhmë e re drejtorie", "Delete the current configuration" : "Fshije formësimin e tanishëm", "Host" : "Strehë", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Ju mund të hiqni protokollin, nëse nuk keni nevojë për SSL. Nëse po, filloni me ldaps: //", "Port" : "Portë", "Detect Port" : "Zbulo Portë", "User DN" : "DN Përdoruesi", @@ -89,14 +103,19 @@ "Test Base DN" : "Testo DN Bazë", "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Shmang kërkesa LDAP automatike. Më e përshtatshme për instalime më të mëdha, por lyp ca dije rreth LDAP-it.", "Manually enter LDAP filters (recommended for large directories)" : "Jepni filtra LDAP dorazi (e këshilluar për drejtori të mëdha)", + "Listing and searching for users is constrained by these criteria:" : "Listimi dhe kërkimi i përdoruesve është i kufizuar nga këto kritere:", "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Klasat më të rëndomta objektesh për përdoruesit janë organizationalPerson, person, user, dhe inetOrgPerson. Nëse s’jeni i sigurt cilën klasë objekti të përzgjidhni, ju lutemi, lidhuni me përgjegjësin e drejtorisë suaj.", "The filter specifies which LDAP users shall have access to the %s instance." : "Filtri përcakton se cilët përdorues LDAP do të kenë hyrje te instanca %s.", "Verify settings and count users" : "Verifiko rregullimet dhe numëro përdoruesit", "Saving" : "Po ruhet", "Back" : "Mbrapsht", "Continue" : "Vazhdo", + "Please renew your password." : "Ju lutem rinovoni fjalëkalimin tuaj", + "An internal error occurred." : "Ndodhi një gabim i brendshëm.", + "Please try again or contact your administrator." : "Ju lutem provoni përsëri ose kontaktoni administratorin tuaj.", "Current password" : "Fjalëkalimi aktual", "New password" : "Fjalëkalim i ri", + "Renew password" : "Rinovo fjalëkalimin", "Wrong password. Reset it?" : "Fjalëkalim i gabuar. Do ta rivendosësh?", "Wrong password." : "Fjalëkalim i gabuar.", "Cancel" : "Anullo", @@ -120,7 +139,7 @@ "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "E pakëshillueshme, përdoreni vetëm për testim! Nëse lidhja funksionon vetëm me këtë mundësi, importoni te shërbyesi juaj %s dëshminë SSL të shërbyesit LDAP.", "Cache Time-To-Live" : "Cache Time-To-Live", "in seconds. A change empties the cache." : "në sekonda. Ndryshimi e zbraz fshehtinën.", - "Directory Settings" : "Rregullime Drejtorie", + "Directory Settings" : "Konfigurime Direktorish", "User Display Name Field" : "Fushë Emri Përdoruesi Në Ekran", "The LDAP attribute to use to generate the user's display name." : "Atribut LDAP që përdoret për të prodhuar emër ekrani për përdoruesin.", "2nd User Display Name Field" : "Fushë e 2-të Emri Përdoruesi Në Ekran", @@ -141,14 +160,22 @@ "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Kur aktivizohet, grupet që përmbajnë grupe mbulohen. (Funksionon vetëm nëse atributi për anëtar grupi përmban DN-ra.)", "Paging chunksize" : "Madhësi copash faqosjeje", "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Madhësi copash të përdorura për kërkime LDAP të sistemuara në faqe, kërkime që japin përfundime të papërpunuara, të tilla si numër përdoruesish ose grupesh. (Caktimi si 0 i çaktivizon kërkimet e faqosura LDAP për këto raste.)", + "Enable LDAP password changes per user" : "Aktivizo ndryshimet LDPA e fjalëkalimit për përdorues", + "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Lejo përdoruesit të LDAP të ndryshojnë fjalëkalimin e tyre dhe lejojnë Administratorët Super dhe Administratorët e Grupit të ndryshojnë fjalëkalimin e përdoruesve të tyre të LDAP. Vepron vetëm kur politikat e kontrollit të qasjes janë konfiguruar në përputhje me rrethanat në serverin LDAP. Ndërkohë që fjalëkalimet u dërgohen në mënyrë të thjeshtë tek serveri LDAP, duhet të përdoret enkriptimi i transportit dhe duhet të konfigurohet hashja e fjalëkalimit në serverin LDAP.", "(New password is sent as plain text to LDAP)" : "(Fjalëkalimi i ri është dërgur si text i thjeshtë te LDAP)", + "Default password policy DN" : "Politika e fjalëkalimit të parazgjedhur DN", + "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "DN e një politike të parazgjedhur të fjalëkalimit që do të përdoret për trajtimin e skadimit të fjalëkalimit. Punon vetëm kur ndryshimet e fjalëkalimeve LDAP për përdorues janë të aktivizuara dhe mbështetet vetëm nga OpenLDAP. Lëreni bosh për të çaktivizuar trajtimin e skadimit të fjalëkalimit.", "Special Attributes" : "Atribute Speciale", "Quota Field" : "Fushë Kuotash", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Lër bosh për kuotën e parazgjedhur të përdoruesit. Përndryshe, specifikoni një atribut LDAP/AD.", "Quota Default" : "Parazgjedhje Kuotash", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Mbishkruaj mbi kuotën e parazgjedhur për përdoruesit e LDAP që nuk kanë një kuotë të caktuar në Fushën e Kuotës.", "Email Field" : "Fushë Email-i", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Vendos emailin e përdoruesit nga atributi i tyre LDAP. Lëreni bosh për sjelljen e paracaktuar.", "User Home Folder Naming Rule" : "Rregull Emërtimi Dosjeje Kreu të Përdoruesit", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Lëreni bosh për emrin e përdoruesit (I Paracaktuar). Ose, përcaktoni një atribut LDAP/AD.", "Internal Username" : "Emër i Brendshëm Përdoruesi", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Në paracaktim, emri i brendshëm i përdoruesit do të krijohet nga atributi UUID. Sigurohuni që emri i përdoruesit është unik dhe karakteret nuk kanë nevojë të konvertohen. Emri i përdoruesit të brendshëm ka kufizim që lejohen vetëm këto karaktere: [a-zA-Z0-9 _. @ -]. Karaktere të tjera zëvendësohen me korrespondencën e tyre ASCII ose thjesht hiqen. Për goditjet një numër do të shtohet / rritet. Emri i brendshëm përdoret për të identifikuar një përdorues brenda. Është gjithashtu emri i parazgjedhur për dosjen e përdoruesit në shtëpi. Është gjithashtu një pjesë e URL-ve të largëta, për shembull për të gjitha shërbimet * DAV. Me këtë cilësim, sjellja e parazgjedhur mund të fshihet. Lëreni bosh për sjelljen e paracaktuar. Ndryshimet do të kenë efekt vetëm në përdoruesit e sapo hartuar (shtuar) LDAP.", "Internal Username Attribute:" : "Atribut Emër i Brendshëm Përdoruesi:", "Override UUID detection" : "Anashkalo zbullim UUID-je", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Si parazgjedhje, atributi UUID zbulohet automatikisht. Atributi UUID përdoret për të identifikuar pa dyshime përdorues dhe grupe LDAP. Gjithashtu, emri i brendshëm i përdoruesi do të krijohet mbi bazën e UUID-së, në mos u përcaktoftë ndryshe më sipër. Mund ta anashkaloni rregullimin dhe të jepni një atribut tuajin sipas dëshirës. Duhet të siguroni që atributi sipas dëshirës të mund të jepet si për përdorues, ashtu edhe për grupe, dhe se është unik. Lëreni të zbrazët që të ruhet sjellja parazgjedhje. Ndryshimet do të kenë efekt vetëm etëm mbi përdorues LDAP të përshoqëruar (shtuar) rishtas.", diff --git a/apps/user_ldap/lib/Configuration.php b/apps/user_ldap/lib/Configuration.php index 851ff03cbb4..c65e6e34e2c 100644 --- a/apps/user_ldap/lib/Configuration.php +++ b/apps/user_ldap/lib/Configuration.php @@ -349,7 +349,7 @@ class Configuration { */ protected function getSystemValue($varName) { //FIXME: if another system value is added, softcode the default value - return \OCP\Config::getSystemValue($varName, false); + return \OC::$server->getConfig()->getSystemValue($varName, false); } /** diff --git a/apps/user_ldap/lib/Notification/Notifier.php b/apps/user_ldap/lib/Notification/Notifier.php index 0099d764f03..795d8d4c344 100644 --- a/apps/user_ldap/lib/Notification/Notifier.php +++ b/apps/user_ldap/lib/Notification/Notifier.php @@ -63,9 +63,9 @@ class Notifier implements INotifier { $params = $notification->getSubjectParameters(); $days = (int) $params[0]; if ($days === 2) { - $notification->setParsedSubject($l->t('Your password will expire tomorrow.', $days)); + $notification->setParsedSubject($l->t('Your password will expire tomorrow.')); } else if ($days === 1) { - $notification->setParsedSubject($l->t('Your password will expire today.', $days)); + $notification->setParsedSubject($l->t('Your password will expire today.')); } else { $notification->setParsedSubject($l->n( 'Your password will expire within %n day.', diff --git a/apps/user_ldap/lib/Wizard.php b/apps/user_ldap/lib/Wizard.php index dfbde31314e..f6b78208fd2 100644 --- a/apps/user_ldap/lib/Wizard.php +++ b/apps/user_ldap/lib/Wizard.php @@ -905,7 +905,7 @@ class Wizard extends LDAPUtility { $er = $this->ldap->firstEntry($cr, $rr); $attrs = $this->ldap->getAttributes($cr, $er); $dn = $this->ldap->getDN($cr, $er); - if ($dn == false || $dn === '') { + if ($dn === false || $dn === '') { continue; } $filterPart = '(memberof=' . $dn . ')'; diff --git a/apps/workflowengine/l10n/lv.js b/apps/workflowengine/l10n/lv.js index 3245afed086..1e96ec1d72e 100644 --- a/apps/workflowengine/l10n/lv.js +++ b/apps/workflowengine/l10n/lv.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Saved" : "Saglabāts", "Saving failed:" : "Saglabāšana neizdevās:", + "File MIME type" : "Faila MIME tips", "is" : "ir", "is not" : "nav", "matches" : "atbilst", @@ -58,6 +59,7 @@ OC.L10N.register( "Check %s is invalid" : "Pārbaude %s ir nederīga", "Check #%s does not exist" : "Pārbaude #%s nepastāv", "Workflow" : "Darbplūsma", + "Files workflow engine" : "Faila darblūsmas programma", "Open documentation" : "Atvērt dokumentāciju", "Add rule group" : "Pievienot kārtulu grupas", "Short rule description" : "Īss kārtulas apraksts", diff --git a/apps/workflowengine/l10n/lv.json b/apps/workflowengine/l10n/lv.json index fabd7d15577..90bd428f4b9 100644 --- a/apps/workflowengine/l10n/lv.json +++ b/apps/workflowengine/l10n/lv.json @@ -1,6 +1,7 @@ { "translations": { "Saved" : "Saglabāts", "Saving failed:" : "Saglabāšana neizdevās:", + "File MIME type" : "Faila MIME tips", "is" : "ir", "is not" : "nav", "matches" : "atbilst", @@ -56,6 +57,7 @@ "Check %s is invalid" : "Pārbaude %s ir nederīga", "Check #%s does not exist" : "Pārbaude #%s nepastāv", "Workflow" : "Darbplūsma", + "Files workflow engine" : "Faila darblūsmas programma", "Open documentation" : "Atvērt dokumentāciju", "Add rule group" : "Pievienot kārtulu grupas", "Short rule description" : "Īss kārtulas apraksts", diff --git a/apps/workflowengine/lib/Manager.php b/apps/workflowengine/lib/Manager.php index e93498b5075..48d29cf207e 100644 --- a/apps/workflowengine/lib/Manager.php +++ b/apps/workflowengine/lib/Manager.php @@ -165,7 +165,7 @@ class Manager implements IManager { return $row; } - throw new \UnexpectedValueException($this->l->t('Operation #%s does not exist', $id)); + throw new \UnexpectedValueException($this->l->t('Operation #%s does not exist', [$id])); } /** @@ -250,11 +250,11 @@ class Manager implements IManager { /** @var IOperation $instance */ $instance = $this->container->query($class); } catch (QueryException $e) { - throw new \UnexpectedValueException($this->l->t('Operation %s does not exist', $class)); + throw new \UnexpectedValueException($this->l->t('Operation %s does not exist', [$class])); } if (!($instance instanceof IOperation)) { - throw new \UnexpectedValueException($this->l->t('Operation %s is invalid', $class)); + throw new \UnexpectedValueException($this->l->t('Operation %s is invalid', [$class])); } $instance->validateOperation($name, $checks, $operation); @@ -264,11 +264,11 @@ class Manager implements IManager { /** @var ICheck $instance */ $instance = $this->container->query($check['class']); } catch (QueryException $e) { - throw new \UnexpectedValueException($this->l->t('Check %s does not exist', $class)); + throw new \UnexpectedValueException($this->l->t('Check %s does not exist', [$class])); } if (!($instance instanceof ICheck)) { - throw new \UnexpectedValueException($this->l->t('Check %s is invalid', $class)); + throw new \UnexpectedValueException($this->l->t('Check %s is invalid', [$class])); } $instance->validateCheck($check['operator'], $check['value']); diff --git a/core/Command/App/ListApps.php b/core/Command/App/ListApps.php index e03e3ce8f56..c933a2519ef 100644 --- a/core/Command/App/ListApps.php +++ b/core/Command/App/ListApps.php @@ -73,7 +73,7 @@ class ListApps extends Base { //sort enabled apps above disabled apps foreach ($apps as $app) { - if ($shippedFilter !== null && \OC_App::isShipped($app) !== $shippedFilter){ + if ($shippedFilter !== null && $this->manager->isShipped($app) !== $shippedFilter){ continue; } if ($this->manager->isInstalled($app)) { diff --git a/core/Controller/AvatarController.php b/core/Controller/AvatarController.php index 5a3d6309149..cb0ece9fa45 100644 --- a/core/Controller/AvatarController.php +++ b/core/Controller/AvatarController.php @@ -173,6 +173,7 @@ class AvatarController extends Controller { if (isset($path)) { $path = stripslashes($path); $userFolder = $this->rootFolder->getUserFolder($this->userId); + /** @var File $node */ $node = $userFolder->get($path); if (!($node instanceof File)) { return new JSONResponse(['data' => ['message' => $this->l->t('Please select a file.')]]); @@ -296,7 +297,7 @@ class AvatarController extends Controller { Http::STATUS_OK, ['Content-Type' => $image->mimeType()]); - $resp->setETag(crc32($image->data())); + $resp->setETag((string)crc32($image->data())); $resp->cacheFor(0); $resp->setLastModified(new \DateTime('now', new \DateTimeZone('GMT'))); return $resp; @@ -328,7 +329,7 @@ class AvatarController extends Controller { } $image = new \OC_Image($tmpAvatar); - $image->crop($crop['x'], $crop['y'], round($crop['w']), round($crop['h'])); + $image->crop($crop['x'], $crop['y'], (int)round($crop['w']), (int)round($crop['h'])); try { $avatar = $this->avatarManager->getAvatar($this->userId); $avatar->set($image); diff --git a/core/Controller/ContactsMenuController.php b/core/Controller/ContactsMenuController.php index bbb990f1a4f..76eaf11085d 100644 --- a/core/Controller/ContactsMenuController.php +++ b/core/Controller/ContactsMenuController.php @@ -54,7 +54,7 @@ class ContactsMenuController extends Controller { * @NoAdminRequired * * @param string|null filter - * @return JSONResponse + * @return \JsonSerializable[] */ public function index($filter = null) { return $this->manager->getEntries($this->userSession->getUser(), $filter); @@ -65,15 +65,14 @@ class ContactsMenuController extends Controller { * * @param integer $shareType * @param string $shareWith - * @return JSONResponse + * @return JSONResponse|\JsonSerializable */ public function findOne($shareType, $shareWith) { $contact = $this->manager->findOne($this->userSession->getUser(), $shareType, $shareWith); if ($contact) { return $contact; - } else { - return new JSONResponse([], Http::STATUS_NOT_FOUND); } + return new JSONResponse([], Http::STATUS_NOT_FOUND); } } diff --git a/core/Controller/LoginController.php b/core/Controller/LoginController.php index 1c75b1f3c8b..12431571256 100644 --- a/core/Controller/LoginController.php +++ b/core/Controller/LoginController.php @@ -248,7 +248,7 @@ class LoginController extends Controller { $args['redirect_url'] = $redirect_url; } $response = new RedirectResponse($this->urlGenerator->linkToRoute('core.login.showLoginForm', $args)); - $response->throttle(); + $response->throttle(['user' => $user]); $this->session->set('loginMessages', [ ['invalidpassword'], [] ]); diff --git a/core/Controller/OCSController.php b/core/Controller/OCSController.php index 35eac3a3d8b..ff939f71a4f 100644 --- a/core/Controller/OCSController.php +++ b/core/Controller/OCSController.php @@ -122,11 +122,11 @@ class OCSController extends \OCP\AppFramework\OCSController { ]); } - $response = new DataResponse(null, 102); + $response = new DataResponse([], 102); $response->throttle(); return $response; } - return new DataResponse(null, 101); + return new DataResponse([], 101); } /** @@ -146,6 +146,6 @@ class OCSController extends \OCP\AppFramework\OCSController { return new DataResponse($data); } - return new DataResponse('User not found', 404); + return new DataResponse(['User not found'], 404); } } diff --git a/core/Middleware/TwoFactorMiddleware.php b/core/Middleware/TwoFactorMiddleware.php index e35c53d4049..a4e0d7219ec 100644 --- a/core/Middleware/TwoFactorMiddleware.php +++ b/core/Middleware/TwoFactorMiddleware.php @@ -104,7 +104,7 @@ class TwoFactorMiddleware extends Middleware { // TODO: dont check/enforce 2FA if a auth token is used } - private function checkTwoFactor($controller, $methodName, IUser $user) { + private function checkTwoFactor(Controller $controller, $methodName, IUser $user) { // If two-factor auth is in progress disallow access to any controllers // defined within "LoginController". $needsSecondFactor = $this->twoFactorManager->needsSecondFactor($user); diff --git a/core/ajax/update.php b/core/ajax/update.php index d23e3b0d56d..818291d3eff 100644 --- a/core/ajax/update.php +++ b/core/ajax/update.php @@ -50,6 +50,10 @@ class FeedBackHandler { private $progressStateStep = 0; /** @var string */ private $currentStep; + /** @var \OCP\IEventSource */ + private $eventSource; + /** @var \OCP\IL10N */ + private $l10n; public function __construct(\OCP\IEventSource $eventSource, \OCP\IL10N $l10n) { $this->eventSource = $eventSource; @@ -220,7 +224,7 @@ if (OC::checkUpgrade(false)) { if (!empty($disabledApps)) { $eventSource->send('notice', - (string)$l->t('Following apps have been disabled: %s', implode(', ', $disabledApps))); + (string)$l->t('Following apps have been disabled: %s', [implode(', ', $disabledApps)])); } } else { $eventSource->send('notice', (string)$l->t('Already up to date')); diff --git a/core/css/icons.scss b/core/css/icons.scss index ae6df353f1e..b2702a29950 100644 --- a/core/css/icons.scss +++ b/core/css/icons.scss @@ -369,6 +369,10 @@ img, object, video, button, textarea, input, select { background-image: url('../img/actions/toggle.svg?v=1'); } +.icon-toggle-pictures { + background-image: url('../img/actions/toggle-pictures.svg?v=1'); +} + .icon-triangle-e { background-image: url('../img/actions/triangle-e.svg?v=1'); } diff --git a/core/js/tests/specs/setupchecksSpec.js b/core/js/tests/specs/setupchecksSpec.js index 507abd7e774..35279f3501e 100644 --- a/core/js/tests/specs/setupchecksSpec.js +++ b/core/js/tests/specs/setupchecksSpec.js @@ -151,7 +151,7 @@ describe('OC.SetupChecks tests', function() { JSON.stringify({ isUrandomAvailable: true, serverHasInternetConnection: false, - memcacheDocs: 'https://doc.owncloud.org/server/go.php?to=admin-performance', + memcacheDocs: 'https://docs.nextcloud.com/server/go.php?to=admin-performance', forwardedForHeadersWorking: true, isCorrectMemcachedPHPModuleInstalled: true, hasPassedCodeIntegrityCheck: true, @@ -166,7 +166,7 @@ describe('OC.SetupChecks tests', function() { msg: 'This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features.', type: OC.SetupChecks.MESSAGE_TYPE_WARNING }, { - msg: 'No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href="https://doc.owncloud.org/server/go.php?to=admin-performance" rel="noreferrer">documentation</a>.', + msg: 'No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href="https://docs.nextcloud.com/server/go.php?to=admin-performance" rel="noreferrer">documentation</a>.', type: OC.SetupChecks.MESSAGE_TYPE_INFO }]); done(); @@ -184,7 +184,7 @@ describe('OC.SetupChecks tests', function() { JSON.stringify({ isUrandomAvailable: true, serverHasInternetConnection: false, - memcacheDocs: 'https://doc.owncloud.org/server/go.php?to=admin-performance', + memcacheDocs: 'https://docs.nextcloud.com/server/go.php?to=admin-performance', forwardedForHeadersWorking: true, isCorrectMemcachedPHPModuleInstalled: true, hasPassedCodeIntegrityCheck: true, @@ -200,7 +200,7 @@ describe('OC.SetupChecks tests', function() { type: OC.SetupChecks.MESSAGE_TYPE_WARNING }, { - msg: 'No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href="https://doc.owncloud.org/server/go.php?to=admin-performance" rel="noreferrer">documentation</a>.', + msg: 'No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href="https://docs.nextcloud.com/server/go.php?to=admin-performance" rel="noreferrer">documentation</a>.', type: OC.SetupChecks.MESSAGE_TYPE_INFO }]); done(); diff --git a/core/l10n/ca.js b/core/l10n/ca.js index 1a8db86ed9f..7040a5cf748 100644 --- a/core/l10n/ca.js +++ b/core/l10n/ca.js @@ -3,7 +3,7 @@ OC.L10N.register( { "Please select a file." : "Seleccioneu un fitxer.", "File is too big" : "El fitxer és massa gran", - "The selected file is not an image." : "El fitxer seleccionat no és una imatge", + "The selected file is not an image." : "El fitxer seleccionat no és una imatge.", "The selected file cannot be read." : "El fitxer seleccionat no es pot llegir.", "Invalid file provided" : "El fitxer proporcionat no és vàlid", "No image or file provided" : "No s'han proporcionat imatges o fitxers", @@ -21,25 +21,29 @@ OC.L10N.register( "Could not send reset email because there is no email address for this username. Please contact your administrator." : "No s'ha pogut enviar correu de restabliment. No hi ha correu per aquest compte. Contacteu amb l'administrador.", "Password reset" : "Canvi de contrasenya", "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Prem el següent botó per reinicialitzar la teva contrasenya. Si no has sol·licitat un canvi de contrasenya, ignora aquest correu.", + "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Feu clic al següent enllaç per restablir la contrasenya. Si no sol·liciteu la reinicialització de contrasenya, llavors ignoreu aquest correu electrònic.", "Reset your password" : "Canvia la teva contrasenya", "%s password reset" : "restableix la contrasenya %s", "Couldn't send reset email. Please contact your administrator." : "No s'ha pogut restablir el correu. Contacteu amb l'administrador.", "Couldn't send reset email. Please make sure your username is correct." : "No s'ha pogut enviar el correu de restabliment. Assegureu-vos que el vostre nom d'usuari és correcte.", "Preparing update" : "Preparant l'actualització", "[%d / %d]: %s" : "[%d / %d]: %s", - "Repair warning: " : "Advertiment de reparació:", - "Repair error: " : "Error de reparació:", + "Repair warning: " : "Advertiment de reparació: ", + "Repair error: " : "Error de reparació: ", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Utilitzeu l’actualitzador de línia de comandes perquè l'actualització automàtica està deshabilitada en el config.php.", "[%d / %d]: Checking table %s" : "[%d / %d]: Revisant la taula %s", "Turned on maintenance mode" : "Activat el mode de manteniment", "Turned off maintenance mode" : "Desactivat el mode de manteniment", "Maintenance mode is kept active" : "El mode de manteniment es manté activat", "Updating database schema" : "Actualitzant l'esquema de la base de dades", "Updated database" : "Actualitzada la base de dades", + "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Comprovar si l'esquema de base de dades es pot actualitzar (això pot trigar temps segons la mida de la base de dades)", "Checked database schema update" : "S'ha comprobat l'actualització de l'esquema de la base de dades", "Checking updates of apps" : "Comprovant les actualitzacions d'aplicacions", "Checking for update of app \"%s\" in appstore" : "Comprovant les actualitzacions de l'aplicació \"%s\" al repositori", "Update app \"%s\" from appstore" : "Actualitza l'aplicació \"%s\" del repositori", "Checked for update of app \"%s\" in appstore" : "Comprovades les actualitzacions de l'aplicació \"%s\" al repositori", + "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Comprovar si l'esquema de base de dades per %s pot ser actualitzat (això pot trigar temps segons la mida de la base de dades)", "Checked database schema update for apps" : "S'ha comprobat l'actualització de l'esquema de la base de dades per les apps", "Updated \"%s\" to %s" : "Actualitzat \"%s\" a %s", "Set log level to debug" : "Modifica el nivell de registre a depuració", @@ -50,11 +54,11 @@ OC.L10N.register( "%s (incompatible)" : "%s (incompatible)", "Following apps have been disabled: %s" : "Les aplicacions següents s'han deshabilitat: %s", "Already up to date" : "Ja actualitzat", - "Search contacts …" : "Cerca contactes ...", + "Search contacts …" : "Cerca contactes …", "No contacts found" : "No s'han trobat contactes", - "Show all contacts …" : "Mostra tots els contactes...", + "Show all contacts …" : "Mostra tots els contactes …", "There was an error loading your contacts" : "Hi ha hagut un error al carregar els teus contactes", - "Loading your contacts …" : "Carregant els teus contactes...", + "Loading your contacts …" : "Carregant els teus contactes …", "Looking for {term} …" : "Buscant {term} …", "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Hi ha hagut problemes amb la comprovació d'integritat del codi. Més informació…</a>", "No action available" : "Cap acció disponible", @@ -71,7 +75,7 @@ OC.L10N.register( "Confirm" : "Confirma", "Failed to authenticate, try again" : "Error d'autenticació, torna-ho a intentar", "seconds ago" : "segons enrere", - "Logging in …" : "Accedint a...", + "Logging in …" : "Accedint a …", "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "L'enllaç per reiniciar la vostra contrasenya s'ha enviat al vostre correu. Si no el rebeu en un temps raonable comproveu les carpetes de spam. <br>Si no és allà, pregunteu a l'administrador local.", "Your files are encrypted. There will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Els vostres fitxers estan encriptats. No hi haurà manera de recuperar les dades després que reestabliu la contrasenya. <br />Si no esteu segurs del que feu, contacteu amb l'administrador abans de continuar.<br />Voleu continuar?", "I know what I'm doing" : "Sé el que faig", @@ -83,7 +87,7 @@ OC.L10N.register( "Error loading file picker template: {error}" : "Error en carregar la plantilla de càrrega de fitxers: {error}", "OK" : "D'acord", "Error loading message template: {error}" : "Error en carregar la plantilla de missatge: {error}", - "read-only" : "Només de lectura", + "read-only" : "només de lectura", "_{count} file conflict_::_{count} file conflicts_" : ["{count} conflicte de fitxer","{count} conflictes de fitxer"], "One file conflict" : "Un fitxer en conflicte", "New Files" : "Fitxers nous", @@ -101,8 +105,21 @@ OC.L10N.register( "Good password" : "Contrasenya bona", "Strong password" : "Contrasenya forta", "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "El servidor web no està configurat correctament per permetre la sincronització de fitxers perquè la interfície WebDAV sembla no funcionar correctament.", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "El teu servidor web no està configurat correctament per resoldre \"{url}\". Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.", + "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Aquest servidor no té cap connexió a Internet operativa: múltiples punts finals no es van poder contactar. Això significa que algunes de les funcions com muntatge d'emmagatzematge extern, notificacions sobre les actualitzacions o instal·lació d'apps de terceres parts no funcionarà. L’accés remot a arxius i l’enviament d'e-mail de notificació podrien no funcionar tampoc. Suggerim habilitar la connexió a Internet per a aquest servidor si voleu tenir tota la funcionalitat.", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "No s’ha configurat cap memòria cau. Per millorar el seu rendiment configureu un memcache si està disponible. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom no és llegible per PHP que no és gens recomenable per motius de seguretat. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Actualment esteu executant PHP {version}. Us animem a actualitzar la versió de PHP que feu servir per tenir avantatge d’<a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">actualitzacions de rendiment i seguretat proporcionats pel PHP Group</a> tan aviat com ho suporti la vostra distribució.", + "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "La configuració de les capçaleres del proxi invers és incorrecta o estàs accedint a Nextcloud des d'un proxy de confiança. Si no estàs accedint a Nextcloud des d'un proxy de confiança, això és un risc de seguretat i pot permetre a un atacant suplantar la teva adreça d'IP com visible a Nextcloud. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached es configura com a una memoria cau distribuïda, però s’ha instal·lat el mòdul erroni de PHP \"memcache\". \\OC\\Memcache\\Memcached només dóna suport a “memcached\" i no \"memcache\". Mireu el <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">wiki de memcached sobre ambdós mòduls</a>.", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alguns fitxers no han passat la comprovació d'integritat. Trobareu més informació sobre com resoldre aquest assumpte a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Llista de fitxers no vàlids...</a> / <a href=\"{rescanEndpoint}\">Reescannejar...</a>)", + "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend</a> to use following settings in the <code>php.ini</code>:" : "La OPcache de PHP no està configurada correctament. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Per millor rendiment recomanem</a> utilitzar-la seguint la configuració en el <code>php.ini</code>:", + "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "La funció PHP \"set_time_limit\" no està disponible. Això podria resultar en scripts que s’aturin a mig execució, trencant la instal·lació. Us recomanem activar aquesta funció.", "Error occurred while checking server setup" : "Hi ha hagut un error en comprovar la configuració del servidor", - "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Esteu accedint aquesta web a través de HTTP. Us recomanem que configureu el servidor per requerir HTTPS tal i com es descriu als <a href=\"{docUrl}\">consells de seguretat</a>", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "El teu directori de dades i fitxers són probablement accessibles des d'Internet. L'arxiu .htaccess no està funcionant. Es recomana que configureu el servidor web de manera que el directori de dades no estigui accessible o moure el directori de dades fora de l'arrel de document de servidor de web.", + "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "L'encapçalament “{header}” HTTP no està configurat per ser igual a “{expected}”. Aquest és un potencial risc de seguretat o privacitat, i es recomana ajustar aquesta configuració.", + "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "La capçalera HTTP “Strict-Transport-Security” no està configurada a un mínim de “{seconds}” segons. Per millor seguretat recomanem permetre HSTS com es descriu en els nostres <a href=\"{docUrl}\" rel=\"noreferrer\">consells de seguretat</a>.", + "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Esteu accedint aquesta web a través de HTTP. Us recomanem que configureu el servidor per requerir HTTPS tal i com es descriu als <a href=\"{docUrl}\">consells de seguretat</a>.", "Shared" : "Compartit", "Shared with {recipients}" : "Compartit amb {recipients}", "Error setting expiration date" : "Error en establir la data de venciment", @@ -135,7 +152,7 @@ OC.L10N.register( "group" : "grup", "remote" : "remot", "email" : "email", - "shared by {sharer}" : "Compartit per {sharer}", + "shared by {sharer}" : "compartit per {sharer}", "Unshare" : "Deixa de compartir", "Can reshare" : "Pot recompartir", "Can edit" : "Pot editar", @@ -147,16 +164,21 @@ OC.L10N.register( "Error while sharing" : "Error en compartir", "Share details could not be loaded for this item." : "No s'han pogut carregar els detalls de compartició de l'element.", "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Com a mínim cal {count} caràcter per a l'autocompletat","Com a mínim calen {count} caràcters per a l'autocompletat"], + "This list is maybe truncated - please refine your search term to see more results." : "Aquesta llista potser està truncada - refineu el vostre terme de cerca per veure més resultats.", "No users or groups found for {search}" : "No s'han trobat usuaris ni grups per {search}", "No users found for {search}" : "No s'han trobat usuaris per {search}", - "An error occurred. Please try again" : "S'ha produït un error. Si us plau, torni a intentar-ho.", + "An error occurred. Please try again" : "S'ha produït un error. Si us plau, torni a intentar-ho", "{sharee} (group)" : "{sharee} (grup)", "{sharee} (remote)" : "{sharee} (remot)", "{sharee} (email)" : "{sharee} (email)", "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", "Share" : "Comparteix", + "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Compartir amb altres persones introduint un usuari o grup, un ID de núvol federat o una adreça d’email.", + "Share with other people by entering a user or group or a federated cloud ID." : "Compartir amb altres persones introduint un usuari o grup o ID de núvol federat.", + "Share with other people by entering a user or group or an email address." : "Compartir amb altres persones introduint un usuari o grup o una adreça d’email.", "Name or email address..." : "Nom o adreça electrònica...", - "Name or federated cloud ID..." : "Nom o ID de Núvol Federat:", + "Name or federated cloud ID..." : "Nom o ID de Núvol Federat…", + "Name, federated cloud ID or email address..." : "Nom, ID de núvol federat o adreça d’email…", "Name..." : "Nom...", "Error" : "Error", "Error removing share" : "Error al treure compartició", @@ -173,13 +195,19 @@ OC.L10N.register( "sunny" : "asolellat", "Hello {name}, the weather is {weather}" : "Hola {name}, el temps és {weather}", "Hello {name}" : "Hola {name}", - "new" : "Nou", - "_download %n file_::_download %n files_" : ["descarregar l'arxiu %n","descarregar arxius %n "], + "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Aquests són els resultats de la cerca<script>alert(1)</script></strong>", + "new" : "nou", + "_download %n file_::_download %n files_" : ["descarregar l'arxiu %n","descarregar arxius %n"], + "The update is in progress, leaving this page might interrupt the process in some environments." : "L'actualització està en marxa, abandonar aquesta pàgina podria interrompre el procés en alguns entorns.", "Update to {version}" : "Actualitza a {version}", - "An error occurred." : "S'ha produït un error", + "An error occurred." : "S'ha produït un error.", "Please reload the page." : "Carregueu la pàgina de nou.", + "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "L'actualització no va tenir èxit. Per a més informació <a href=\"{url}\">consulta la nostra nota al fòrum</a> que cobreix aquest assumpte.", + "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "L'actualització no va tenir èxit. Si us plau reporti aquest assumpte a la <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">comunitat Nextcloud</a>.", "Continue to Nextcloud" : "Continua a Nextcloud", + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["L'actualització va ser reeixida. Redirigint a Nextcloud en %n segon.","L’actualització va ser reeixida. Redirigint a Nextcloud en %n segons."], "Searching other places" : "Buscant altres ubicacions", + "No search results in other folders for {tag}{filter}{endtag}" : "No hi ha resultats de la cerca en altres carpetes per {tag}{filter}{endtag}", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} resultat de cerca en altres carpetes","{count} resultats de cerca en altres carpetes"], "Personal" : "Personal", "Users" : "Usuaris", @@ -196,7 +224,7 @@ OC.L10N.register( "More details can be found in the server log." : "Pots trobar més detalls al llistat del servidor.", "Technical details" : "Detalls tècnics", "Remote Address: %s" : "Adreça remota: %s", - "Request ID: %s" : "Sol·licitud ID: %s ", + "Request ID: %s" : "Sol·licitud ID: %s", "Type: %s" : "Tipus: %s", "Code: %s" : "Codi: %s", "Message: %s" : "Missatge: %s", @@ -205,12 +233,13 @@ OC.L10N.register( "Trace" : "Traça", "Security warning" : "Advertiment de seguretat", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "La carpeta de dades i els seus fitxers probablement són accessibles des d'internet perquè el fitxer .htaccess no funciona.", + "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Per a informació sobre com configurar correctament el servidor, podeu consultar la <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentació</a>.", "Create an <strong>admin account</strong>" : "Crea un <strong>compte d'administrador</strong>", "Username" : "Nom d'usuari", "Storage & database" : "Emmagatzematge i base de dades", "Data folder" : "Carpeta de dades", "Configure the database" : "Configura la base de dades", - "Only %s is available." : "Només hi ha disponible %s", + "Only %s is available." : "Només hi ha disponible %s.", "Install and activate additional PHP modules to choose other database types." : "Instal·la i activa mòduls PHP addicionals per seleccionar altres tipus de bases de dades.", "For more details check out the documentation." : "Per més detalls consulteu la documentació.", "Database user" : "Usuari de la base de dades", @@ -218,17 +247,19 @@ OC.L10N.register( "Database name" : "Nom de la base de dades", "Database tablespace" : "Espai de taula de la base de dades", "Database host" : "Ordinador central de la base de dades", + "Please specify the port number along with the host name (e.g., localhost:5432)." : "Si us plau, especifiqueu el nombre de port juntament amb el nom de servidor (per exemple, localhost:5432).", "Performance warning" : "Alerta de rendiment", "SQLite will be used as database." : "SQLite s'utilitzarà com a base de dades.", "For larger installations we recommend to choose a different database backend." : "Per a instal·lacions més grans es recomana triar una base de dades diferent.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "L'ús de SQLite està desaconsellat especialment quan s'usa el client d'escriptori per sincronitzar els fitxers.", "Finish setup" : "Acaba la configuració", - "Finishing …" : "Acabant...", + "Finishing …" : "Acabant …", "Need help?" : "Necessites ajuda?", "See the documentation" : "Consulti la documentació", "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Aquesta aplicació requereix Javascript per al seu correcte funcionament . Per favor, {linkstart}habiliti Javascript{linkend} i torni a carregar la pàgina.", "More apps" : "Més aplicacions", "Search" : "Cerca", + "This action requires you to confirm your password:" : "Aquesta acció necessita que confirmis la teva contrasenya:", "Confirm your password" : "Confirma la teva contrasenya", "Server side authentication failed!" : "L'autenticació del servidor ha fallat!", "Please contact your administrator." : "Contacteu amb l'administrador.", @@ -243,28 +274,32 @@ OC.L10N.register( "You are about to grant \"%s\" access to your %s account." : "Estàs a punt de concedir accés \"%s\" al teu %s compte.", "App token" : "Testimoni d'aplicació", "Alternative login using app token" : "Acreditació alternativa utilitzat testimoni d'aplicació", - "Redirecting …" : "Redirigint...", + "Redirecting …" : "Redirigint …", "New password" : "Contrasenya nova", "New Password" : "Contrasenya nova", "Reset password" : "Reinicialitza la contrasenya", "Two-factor authentication" : "Segon factor d'autenticació", + "Enhanced security is enabled for your account. Please authenticate using a second factor." : "La seguretat millorada està habilitada per al vostre compte. Si us plau autentica’t amb un segon factor.", "Cancel log in" : "Cancel·la l'accés a", "Use backup code" : "Utilitza un codi de copia de seguretat", "Error while validating your second factor" : "Error al validar el segon factor d'autenticació", - "You are accessing the server from an untrusted domain." : "Esteu accedint al servidor des d'un domini no fiable", + "You are accessing the server from an untrusted domain." : "Esteu accedint al servidor des d'un domini no fiable.", + "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Contacteu amb l'administrador. Si ets un administrador d'aquesta instància, configurar la opció \"trusted_domains\" en config/config.php. Config/config.sample.php ofereix una configuració d'exemple.", "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "En funció de la teva configuració, com a administrador podries utilitzar el botó d'abaix per confiar en aquest domini.", "Add \"%s\" as trusted domain" : "Afegeix \"%s\" com a domini de confiança", "App update required" : "Cal que actualitzeu la aplicació", "%s will be updated to version %s" : "%s s'actualitzarà a la versió %s", "These apps will be updated:" : "Aquestes aplicacions s'actualitzaran:", "These incompatible apps will be disabled:" : "Aquestes aplicacions incompatibles es desactivaran:", - "The theme %s has been disabled." : "S'ha desactivat el tema %s", + "The theme %s has been disabled." : "S'ha desactivat el tema %s.", "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Assegureu-vos que heu fet una còpia de seguretat de la base de dades, del fitxer de configuració i de la carpeta de dades abans de continuar.", "Start update" : "Inicia l'actualització", - "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Per evitar que s'esgoti el temps d'espera en instalacions grans, pots en el seu lloc fer córrer la següent comanda en el directori d'instalació. ", + "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Per evitar que s'esgoti el temps d'espera en instalacions grans, pots en el seu lloc fer córrer la següent comanda en el directori d'instalació:", "Detailed logs" : "Registres detallats", "Update needed" : "Actualització necessaria", + "Please use the command line updater because you have a big instance with more than 50 users." : "Utilitzeu l'updater de línia de comandes perquè tens un gran instància amb més de 50 usuàries.", "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Per obtenir ajuda, mira la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentació</a>.", + "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sé que si continuo fent l'actualització mitjançant l’interfície d’usuari web té el risc que la sol·licitud esgoti un temps d'espera, que podria causa pèrdua de dades, però tinc una còpia de seguretat i se com restaurar la meva instància en cas de fallada.", "Upgrade via web on my own risk" : "Actualitza via web sota la teva responsabilitat", "This %s instance is currently in maintenance mode, which may take a while." : "Aquesta instància %s està actualment en manteniment i podria trigar una estona.", "This page will refresh itself when the %s instance is available again." : "Aquesta pàgina s'actualitzarà automàticament quan la instància %s estigui disponible de nou.", @@ -279,8 +314,9 @@ OC.L10N.register( "can edit" : "pot editar", "can create" : "pot crear", "can change" : "pot canviar", - "can delete" : "Pot esborrar", + "can delete" : "pot esborrar", "access control" : "control d'accés", + "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "Compartir amb gent a altres servidors utilitzant els seus ID de núvol federats usuari@exemple.com/nextcloud", "Share with users or by mail..." : "Comparteix amb usuaris o per correu...", "Share with users or remote users..." : "Comparteix amb usuaris o usuaris remots ...", "Share with users, remote users or by mail..." : "Comparteix amb usuaris, usuaris remots o per correu...", diff --git a/core/l10n/ca.json b/core/l10n/ca.json index 64ae6beed53..ff7af7846f1 100644 --- a/core/l10n/ca.json +++ b/core/l10n/ca.json @@ -1,7 +1,7 @@ { "translations": { "Please select a file." : "Seleccioneu un fitxer.", "File is too big" : "El fitxer és massa gran", - "The selected file is not an image." : "El fitxer seleccionat no és una imatge", + "The selected file is not an image." : "El fitxer seleccionat no és una imatge.", "The selected file cannot be read." : "El fitxer seleccionat no es pot llegir.", "Invalid file provided" : "El fitxer proporcionat no és vàlid", "No image or file provided" : "No s'han proporcionat imatges o fitxers", @@ -19,25 +19,29 @@ "Could not send reset email because there is no email address for this username. Please contact your administrator." : "No s'ha pogut enviar correu de restabliment. No hi ha correu per aquest compte. Contacteu amb l'administrador.", "Password reset" : "Canvi de contrasenya", "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Prem el següent botó per reinicialitzar la teva contrasenya. Si no has sol·licitat un canvi de contrasenya, ignora aquest correu.", + "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Feu clic al següent enllaç per restablir la contrasenya. Si no sol·liciteu la reinicialització de contrasenya, llavors ignoreu aquest correu electrònic.", "Reset your password" : "Canvia la teva contrasenya", "%s password reset" : "restableix la contrasenya %s", "Couldn't send reset email. Please contact your administrator." : "No s'ha pogut restablir el correu. Contacteu amb l'administrador.", "Couldn't send reset email. Please make sure your username is correct." : "No s'ha pogut enviar el correu de restabliment. Assegureu-vos que el vostre nom d'usuari és correcte.", "Preparing update" : "Preparant l'actualització", "[%d / %d]: %s" : "[%d / %d]: %s", - "Repair warning: " : "Advertiment de reparació:", - "Repair error: " : "Error de reparació:", + "Repair warning: " : "Advertiment de reparació: ", + "Repair error: " : "Error de reparació: ", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Utilitzeu l’actualitzador de línia de comandes perquè l'actualització automàtica està deshabilitada en el config.php.", "[%d / %d]: Checking table %s" : "[%d / %d]: Revisant la taula %s", "Turned on maintenance mode" : "Activat el mode de manteniment", "Turned off maintenance mode" : "Desactivat el mode de manteniment", "Maintenance mode is kept active" : "El mode de manteniment es manté activat", "Updating database schema" : "Actualitzant l'esquema de la base de dades", "Updated database" : "Actualitzada la base de dades", + "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Comprovar si l'esquema de base de dades es pot actualitzar (això pot trigar temps segons la mida de la base de dades)", "Checked database schema update" : "S'ha comprobat l'actualització de l'esquema de la base de dades", "Checking updates of apps" : "Comprovant les actualitzacions d'aplicacions", "Checking for update of app \"%s\" in appstore" : "Comprovant les actualitzacions de l'aplicació \"%s\" al repositori", "Update app \"%s\" from appstore" : "Actualitza l'aplicació \"%s\" del repositori", "Checked for update of app \"%s\" in appstore" : "Comprovades les actualitzacions de l'aplicació \"%s\" al repositori", + "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Comprovar si l'esquema de base de dades per %s pot ser actualitzat (això pot trigar temps segons la mida de la base de dades)", "Checked database schema update for apps" : "S'ha comprobat l'actualització de l'esquema de la base de dades per les apps", "Updated \"%s\" to %s" : "Actualitzat \"%s\" a %s", "Set log level to debug" : "Modifica el nivell de registre a depuració", @@ -48,11 +52,11 @@ "%s (incompatible)" : "%s (incompatible)", "Following apps have been disabled: %s" : "Les aplicacions següents s'han deshabilitat: %s", "Already up to date" : "Ja actualitzat", - "Search contacts …" : "Cerca contactes ...", + "Search contacts …" : "Cerca contactes …", "No contacts found" : "No s'han trobat contactes", - "Show all contacts …" : "Mostra tots els contactes...", + "Show all contacts …" : "Mostra tots els contactes …", "There was an error loading your contacts" : "Hi ha hagut un error al carregar els teus contactes", - "Loading your contacts …" : "Carregant els teus contactes...", + "Loading your contacts …" : "Carregant els teus contactes …", "Looking for {term} …" : "Buscant {term} …", "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Hi ha hagut problemes amb la comprovació d'integritat del codi. Més informació…</a>", "No action available" : "Cap acció disponible", @@ -69,7 +73,7 @@ "Confirm" : "Confirma", "Failed to authenticate, try again" : "Error d'autenticació, torna-ho a intentar", "seconds ago" : "segons enrere", - "Logging in …" : "Accedint a...", + "Logging in …" : "Accedint a …", "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "L'enllaç per reiniciar la vostra contrasenya s'ha enviat al vostre correu. Si no el rebeu en un temps raonable comproveu les carpetes de spam. <br>Si no és allà, pregunteu a l'administrador local.", "Your files are encrypted. There will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Els vostres fitxers estan encriptats. No hi haurà manera de recuperar les dades després que reestabliu la contrasenya. <br />Si no esteu segurs del que feu, contacteu amb l'administrador abans de continuar.<br />Voleu continuar?", "I know what I'm doing" : "Sé el que faig", @@ -81,7 +85,7 @@ "Error loading file picker template: {error}" : "Error en carregar la plantilla de càrrega de fitxers: {error}", "OK" : "D'acord", "Error loading message template: {error}" : "Error en carregar la plantilla de missatge: {error}", - "read-only" : "Només de lectura", + "read-only" : "només de lectura", "_{count} file conflict_::_{count} file conflicts_" : ["{count} conflicte de fitxer","{count} conflictes de fitxer"], "One file conflict" : "Un fitxer en conflicte", "New Files" : "Fitxers nous", @@ -99,8 +103,21 @@ "Good password" : "Contrasenya bona", "Strong password" : "Contrasenya forta", "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "El servidor web no està configurat correctament per permetre la sincronització de fitxers perquè la interfície WebDAV sembla no funcionar correctament.", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "El teu servidor web no està configurat correctament per resoldre \"{url}\". Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.", + "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Aquest servidor no té cap connexió a Internet operativa: múltiples punts finals no es van poder contactar. Això significa que algunes de les funcions com muntatge d'emmagatzematge extern, notificacions sobre les actualitzacions o instal·lació d'apps de terceres parts no funcionarà. L’accés remot a arxius i l’enviament d'e-mail de notificació podrien no funcionar tampoc. Suggerim habilitar la connexió a Internet per a aquest servidor si voleu tenir tota la funcionalitat.", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "No s’ha configurat cap memòria cau. Per millorar el seu rendiment configureu un memcache si està disponible. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom no és llegible per PHP que no és gens recomenable per motius de seguretat. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Actualment esteu executant PHP {version}. Us animem a actualitzar la versió de PHP que feu servir per tenir avantatge d’<a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">actualitzacions de rendiment i seguretat proporcionats pel PHP Group</a> tan aviat com ho suporti la vostra distribució.", + "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "La configuració de les capçaleres del proxi invers és incorrecta o estàs accedint a Nextcloud des d'un proxy de confiança. Si no estàs accedint a Nextcloud des d'un proxy de confiança, això és un risc de seguretat i pot permetre a un atacant suplantar la teva adreça d'IP com visible a Nextcloud. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached es configura com a una memoria cau distribuïda, però s’ha instal·lat el mòdul erroni de PHP \"memcache\". \\OC\\Memcache\\Memcached només dóna suport a “memcached\" i no \"memcache\". Mireu el <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">wiki de memcached sobre ambdós mòduls</a>.", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alguns fitxers no han passat la comprovació d'integritat. Trobareu més informació sobre com resoldre aquest assumpte a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Llista de fitxers no vàlids...</a> / <a href=\"{rescanEndpoint}\">Reescannejar...</a>)", + "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend</a> to use following settings in the <code>php.ini</code>:" : "La OPcache de PHP no està configurada correctament. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Per millor rendiment recomanem</a> utilitzar-la seguint la configuració en el <code>php.ini</code>:", + "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "La funció PHP \"set_time_limit\" no està disponible. Això podria resultar en scripts que s’aturin a mig execució, trencant la instal·lació. Us recomanem activar aquesta funció.", "Error occurred while checking server setup" : "Hi ha hagut un error en comprovar la configuració del servidor", - "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Esteu accedint aquesta web a través de HTTP. Us recomanem que configureu el servidor per requerir HTTPS tal i com es descriu als <a href=\"{docUrl}\">consells de seguretat</a>", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "El teu directori de dades i fitxers són probablement accessibles des d'Internet. L'arxiu .htaccess no està funcionant. Es recomana que configureu el servidor web de manera que el directori de dades no estigui accessible o moure el directori de dades fora de l'arrel de document de servidor de web.", + "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "L'encapçalament “{header}” HTTP no està configurat per ser igual a “{expected}”. Aquest és un potencial risc de seguretat o privacitat, i es recomana ajustar aquesta configuració.", + "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "La capçalera HTTP “Strict-Transport-Security” no està configurada a un mínim de “{seconds}” segons. Per millor seguretat recomanem permetre HSTS com es descriu en els nostres <a href=\"{docUrl}\" rel=\"noreferrer\">consells de seguretat</a>.", + "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Esteu accedint aquesta web a través de HTTP. Us recomanem que configureu el servidor per requerir HTTPS tal i com es descriu als <a href=\"{docUrl}\">consells de seguretat</a>.", "Shared" : "Compartit", "Shared with {recipients}" : "Compartit amb {recipients}", "Error setting expiration date" : "Error en establir la data de venciment", @@ -133,7 +150,7 @@ "group" : "grup", "remote" : "remot", "email" : "email", - "shared by {sharer}" : "Compartit per {sharer}", + "shared by {sharer}" : "compartit per {sharer}", "Unshare" : "Deixa de compartir", "Can reshare" : "Pot recompartir", "Can edit" : "Pot editar", @@ -145,16 +162,21 @@ "Error while sharing" : "Error en compartir", "Share details could not be loaded for this item." : "No s'han pogut carregar els detalls de compartició de l'element.", "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Com a mínim cal {count} caràcter per a l'autocompletat","Com a mínim calen {count} caràcters per a l'autocompletat"], + "This list is maybe truncated - please refine your search term to see more results." : "Aquesta llista potser està truncada - refineu el vostre terme de cerca per veure més resultats.", "No users or groups found for {search}" : "No s'han trobat usuaris ni grups per {search}", "No users found for {search}" : "No s'han trobat usuaris per {search}", - "An error occurred. Please try again" : "S'ha produït un error. Si us plau, torni a intentar-ho.", + "An error occurred. Please try again" : "S'ha produït un error. Si us plau, torni a intentar-ho", "{sharee} (group)" : "{sharee} (grup)", "{sharee} (remote)" : "{sharee} (remot)", "{sharee} (email)" : "{sharee} (email)", "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", "Share" : "Comparteix", + "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Compartir amb altres persones introduint un usuari o grup, un ID de núvol federat o una adreça d’email.", + "Share with other people by entering a user or group or a federated cloud ID." : "Compartir amb altres persones introduint un usuari o grup o ID de núvol federat.", + "Share with other people by entering a user or group or an email address." : "Compartir amb altres persones introduint un usuari o grup o una adreça d’email.", "Name or email address..." : "Nom o adreça electrònica...", - "Name or federated cloud ID..." : "Nom o ID de Núvol Federat:", + "Name or federated cloud ID..." : "Nom o ID de Núvol Federat…", + "Name, federated cloud ID or email address..." : "Nom, ID de núvol federat o adreça d’email…", "Name..." : "Nom...", "Error" : "Error", "Error removing share" : "Error al treure compartició", @@ -171,13 +193,19 @@ "sunny" : "asolellat", "Hello {name}, the weather is {weather}" : "Hola {name}, el temps és {weather}", "Hello {name}" : "Hola {name}", - "new" : "Nou", - "_download %n file_::_download %n files_" : ["descarregar l'arxiu %n","descarregar arxius %n "], + "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Aquests són els resultats de la cerca<script>alert(1)</script></strong>", + "new" : "nou", + "_download %n file_::_download %n files_" : ["descarregar l'arxiu %n","descarregar arxius %n"], + "The update is in progress, leaving this page might interrupt the process in some environments." : "L'actualització està en marxa, abandonar aquesta pàgina podria interrompre el procés en alguns entorns.", "Update to {version}" : "Actualitza a {version}", - "An error occurred." : "S'ha produït un error", + "An error occurred." : "S'ha produït un error.", "Please reload the page." : "Carregueu la pàgina de nou.", + "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "L'actualització no va tenir èxit. Per a més informació <a href=\"{url}\">consulta la nostra nota al fòrum</a> que cobreix aquest assumpte.", + "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "L'actualització no va tenir èxit. Si us plau reporti aquest assumpte a la <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">comunitat Nextcloud</a>.", "Continue to Nextcloud" : "Continua a Nextcloud", + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["L'actualització va ser reeixida. Redirigint a Nextcloud en %n segon.","L’actualització va ser reeixida. Redirigint a Nextcloud en %n segons."], "Searching other places" : "Buscant altres ubicacions", + "No search results in other folders for {tag}{filter}{endtag}" : "No hi ha resultats de la cerca en altres carpetes per {tag}{filter}{endtag}", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} resultat de cerca en altres carpetes","{count} resultats de cerca en altres carpetes"], "Personal" : "Personal", "Users" : "Usuaris", @@ -194,7 +222,7 @@ "More details can be found in the server log." : "Pots trobar més detalls al llistat del servidor.", "Technical details" : "Detalls tècnics", "Remote Address: %s" : "Adreça remota: %s", - "Request ID: %s" : "Sol·licitud ID: %s ", + "Request ID: %s" : "Sol·licitud ID: %s", "Type: %s" : "Tipus: %s", "Code: %s" : "Codi: %s", "Message: %s" : "Missatge: %s", @@ -203,12 +231,13 @@ "Trace" : "Traça", "Security warning" : "Advertiment de seguretat", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "La carpeta de dades i els seus fitxers probablement són accessibles des d'internet perquè el fitxer .htaccess no funciona.", + "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Per a informació sobre com configurar correctament el servidor, podeu consultar la <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentació</a>.", "Create an <strong>admin account</strong>" : "Crea un <strong>compte d'administrador</strong>", "Username" : "Nom d'usuari", "Storage & database" : "Emmagatzematge i base de dades", "Data folder" : "Carpeta de dades", "Configure the database" : "Configura la base de dades", - "Only %s is available." : "Només hi ha disponible %s", + "Only %s is available." : "Només hi ha disponible %s.", "Install and activate additional PHP modules to choose other database types." : "Instal·la i activa mòduls PHP addicionals per seleccionar altres tipus de bases de dades.", "For more details check out the documentation." : "Per més detalls consulteu la documentació.", "Database user" : "Usuari de la base de dades", @@ -216,17 +245,19 @@ "Database name" : "Nom de la base de dades", "Database tablespace" : "Espai de taula de la base de dades", "Database host" : "Ordinador central de la base de dades", + "Please specify the port number along with the host name (e.g., localhost:5432)." : "Si us plau, especifiqueu el nombre de port juntament amb el nom de servidor (per exemple, localhost:5432).", "Performance warning" : "Alerta de rendiment", "SQLite will be used as database." : "SQLite s'utilitzarà com a base de dades.", "For larger installations we recommend to choose a different database backend." : "Per a instal·lacions més grans es recomana triar una base de dades diferent.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "L'ús de SQLite està desaconsellat especialment quan s'usa el client d'escriptori per sincronitzar els fitxers.", "Finish setup" : "Acaba la configuració", - "Finishing …" : "Acabant...", + "Finishing …" : "Acabant …", "Need help?" : "Necessites ajuda?", "See the documentation" : "Consulti la documentació", "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Aquesta aplicació requereix Javascript per al seu correcte funcionament . Per favor, {linkstart}habiliti Javascript{linkend} i torni a carregar la pàgina.", "More apps" : "Més aplicacions", "Search" : "Cerca", + "This action requires you to confirm your password:" : "Aquesta acció necessita que confirmis la teva contrasenya:", "Confirm your password" : "Confirma la teva contrasenya", "Server side authentication failed!" : "L'autenticació del servidor ha fallat!", "Please contact your administrator." : "Contacteu amb l'administrador.", @@ -241,28 +272,32 @@ "You are about to grant \"%s\" access to your %s account." : "Estàs a punt de concedir accés \"%s\" al teu %s compte.", "App token" : "Testimoni d'aplicació", "Alternative login using app token" : "Acreditació alternativa utilitzat testimoni d'aplicació", - "Redirecting …" : "Redirigint...", + "Redirecting …" : "Redirigint …", "New password" : "Contrasenya nova", "New Password" : "Contrasenya nova", "Reset password" : "Reinicialitza la contrasenya", "Two-factor authentication" : "Segon factor d'autenticació", + "Enhanced security is enabled for your account. Please authenticate using a second factor." : "La seguretat millorada està habilitada per al vostre compte. Si us plau autentica’t amb un segon factor.", "Cancel log in" : "Cancel·la l'accés a", "Use backup code" : "Utilitza un codi de copia de seguretat", "Error while validating your second factor" : "Error al validar el segon factor d'autenticació", - "You are accessing the server from an untrusted domain." : "Esteu accedint al servidor des d'un domini no fiable", + "You are accessing the server from an untrusted domain." : "Esteu accedint al servidor des d'un domini no fiable.", + "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Contacteu amb l'administrador. Si ets un administrador d'aquesta instància, configurar la opció \"trusted_domains\" en config/config.php. Config/config.sample.php ofereix una configuració d'exemple.", "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "En funció de la teva configuració, com a administrador podries utilitzar el botó d'abaix per confiar en aquest domini.", "Add \"%s\" as trusted domain" : "Afegeix \"%s\" com a domini de confiança", "App update required" : "Cal que actualitzeu la aplicació", "%s will be updated to version %s" : "%s s'actualitzarà a la versió %s", "These apps will be updated:" : "Aquestes aplicacions s'actualitzaran:", "These incompatible apps will be disabled:" : "Aquestes aplicacions incompatibles es desactivaran:", - "The theme %s has been disabled." : "S'ha desactivat el tema %s", + "The theme %s has been disabled." : "S'ha desactivat el tema %s.", "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Assegureu-vos que heu fet una còpia de seguretat de la base de dades, del fitxer de configuració i de la carpeta de dades abans de continuar.", "Start update" : "Inicia l'actualització", - "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Per evitar que s'esgoti el temps d'espera en instalacions grans, pots en el seu lloc fer córrer la següent comanda en el directori d'instalació. ", + "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Per evitar que s'esgoti el temps d'espera en instalacions grans, pots en el seu lloc fer córrer la següent comanda en el directori d'instalació:", "Detailed logs" : "Registres detallats", "Update needed" : "Actualització necessaria", + "Please use the command line updater because you have a big instance with more than 50 users." : "Utilitzeu l'updater de línia de comandes perquè tens un gran instància amb més de 50 usuàries.", "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Per obtenir ajuda, mira la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentació</a>.", + "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sé que si continuo fent l'actualització mitjançant l’interfície d’usuari web té el risc que la sol·licitud esgoti un temps d'espera, que podria causa pèrdua de dades, però tinc una còpia de seguretat i se com restaurar la meva instància en cas de fallada.", "Upgrade via web on my own risk" : "Actualitza via web sota la teva responsabilitat", "This %s instance is currently in maintenance mode, which may take a while." : "Aquesta instància %s està actualment en manteniment i podria trigar una estona.", "This page will refresh itself when the %s instance is available again." : "Aquesta pàgina s'actualitzarà automàticament quan la instància %s estigui disponible de nou.", @@ -277,8 +312,9 @@ "can edit" : "pot editar", "can create" : "pot crear", "can change" : "pot canviar", - "can delete" : "Pot esborrar", + "can delete" : "pot esborrar", "access control" : "control d'accés", + "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "Compartir amb gent a altres servidors utilitzant els seus ID de núvol federats usuari@exemple.com/nextcloud", "Share with users or by mail..." : "Comparteix amb usuaris o per correu...", "Share with users or remote users..." : "Comparteix amb usuaris o usuaris remots ...", "Share with users, remote users or by mail..." : "Comparteix amb usuaris, usuaris remots o per correu...", diff --git a/core/l10n/es_MX.js b/core/l10n/es_MX.js index 4251e633b80..a191d2cba5d 100644 --- a/core/l10n/es_MX.js +++ b/core/l10n/es_MX.js @@ -148,7 +148,7 @@ OC.L10N.register( "Shared with you and the group {group} by {owner}" : "Compartido contigo y el grupo {group} por {owner}", "Shared with you by {owner}" : "Compartido contigo por {owner}", "Choose a password for the mail share" : "Elige una contraseña para el elemento compartido por correo", - "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compatido mediante una liga", + "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga", "group" : "grupo", "remote" : "remoto", "email" : "correo electrónico", diff --git a/core/l10n/es_MX.json b/core/l10n/es_MX.json index 89fe3637bac..66bb66957a5 100644 --- a/core/l10n/es_MX.json +++ b/core/l10n/es_MX.json @@ -146,7 +146,7 @@ "Shared with you and the group {group} by {owner}" : "Compartido contigo y el grupo {group} por {owner}", "Shared with you by {owner}" : "Compartido contigo por {owner}", "Choose a password for the mail share" : "Elige una contraseña para el elemento compartido por correo", - "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compatido mediante una liga", + "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga", "group" : "grupo", "remote" : "remoto", "email" : "correo electrónico", diff --git a/core/l10n/lv.js b/core/l10n/lv.js index 7e23a0887e5..f1c3af371ce 100644 --- a/core/l10n/lv.js +++ b/core/l10n/lv.js @@ -54,6 +54,7 @@ OC.L10N.register( "%s (incompatible)" : "%s (nesaderīgs)", "Following apps have been disabled: %s" : "Sekojošas programmas tika atslēgtas: %s", "Already up to date" : "Jau ir jaunākā", + "Search contacts …" : "Meklēt kontaktpersonu", "No contacts found" : "Nav atrasta ne viena kontaktpersona", "Show all contacts …" : "Rādīt visas kontaktpersonas", "There was an error loading your contacts" : "Notikusi kļūda ielādējot kontaktpersonu sarakstu", @@ -96,11 +97,14 @@ OC.L10N.register( "Continue" : "Turpināt", "(all selected)" : "(visus iezīmētos)", "({count} selected)" : "({count} iezīmēti)", + "Pending" : "Gaida", "Very weak password" : "Ļoti vāja parole", "Weak password" : "Vāja parole", "So-so password" : "Normāla parole", "Good password" : "Laba parole", "Strong password" : "Lieliska parole", + "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Jūsu serveris nav pareizi uzstādīts lai atļautu failu sinhronizēšanu jo WebDAV interfeiss šķiet salūzis.", + "Error occurred while checking server setup" : "Radās kļūda, pārbaudot servera ", "Shared" : "Koplietots", "Shared with {recipients}" : "Koplietots ar {recipients}", "Error setting expiration date" : "Kļūda, iestatot termiņa datumu", @@ -108,12 +112,14 @@ OC.L10N.register( "Expiration" : "Termiņš", "Expiration date" : "Termiņa datums", "Choose a password for the public link" : "Izvēlies paroli publiskai saitei", + "Choose a password for the public link or press the \"Enter\" key" : "Izvēlies paroli publiskai saitei vai nospiediet \"Enter\" taustiņu", "Copied!" : "Nokopēts!", "Copy" : "Kopēt", "Not supported!" : "Nav atbalstīts!", "Press ⌘-C to copy." : "Spiet ⌘-C lai kopētu.", "Press Ctrl-C to copy." : "Spiet Ctrl-C lai kopētu.", "Resharing is not allowed" : "Atkārtota dalīšanās nav atļauta", + "Share to {name}" : "Dalīties ar {name}", "Share link" : "Koplietot saiti", "Link" : "Saite", "Password protect" : "Aizsargāt ar paroli", @@ -121,13 +127,20 @@ OC.L10N.register( "Email link to person" : "Sūtīt saiti personai pa e-pastu", "Send" : "Sūtīt", "Allow upload and editing" : "Atļaut augšupielādi un rediģēšanu", + "Read only" : "Tikai lasāms", "Shared with you and the group {group} by {owner}" : "{owner} koplietoja ar jums un grupu {group}", "Shared with you by {owner}" : "{owner} koplietoja ar jums", "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} koplietots ar saiti", "group" : "grupa", "remote" : "attālināti", "email" : "e-pasts", + "shared by {sharer}" : "Koplietoja {sharer}", "Unshare" : "Pārtraukt koplietošanu", + "Can edit" : "Var rediģēt", + "Can create" : "Var izveidot", + "Can change" : "Var mainīt", + "Can delete" : "Var dzēst", + "Access control" : "Piekļuves vadība", "Could not unshare" : "Nevarēja pārtraukt koplietošanu", "Error while sharing" : "Kļūda, daloties", "Share details could not be loaded for this item." : "Šim nevarēja ielādēt koplietošanas detaļas.", @@ -137,7 +150,15 @@ OC.L10N.register( "{sharee} (group)" : "{sharee} (grupa)", "{sharee} (remote)" : "{sharee} (attālināti)", "{sharee} (email)" : "{sharee} (e-pasts)", + "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", "Share" : "Koplietot", + "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu, federated cloud ID vai e-pasta adresi.", + "Share with other people by entering a user or group or a federated cloud ID." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu vai federated cloud ID.", + "Share with other people by entering a user or group or an email address." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu vai e-pasta adresi.", + "Name or email address..." : "Vārds vai e-pasta adrese...", + "Name or federated cloud ID..." : "Vārds vai federated cloud ID", + "Name, federated cloud ID or email address..." : "Vārds, federated cloud ID vai e-pasta adrese...", + "Name..." : "Vārds...", "Error" : "Kļūda", "Error removing share" : "Kļūda, noņemot koplietošanu", "restricted" : "ierobežots", @@ -154,11 +175,16 @@ OC.L10N.register( "Hello {name}" : "Sveiks {name}", "new" : "jauns", "_download %n file_::_download %n files_" : ["lejupielādēt %n failus","lejupielādēt %n failus","lejupielādēt %n failus"], + "The update is in progress, leaving this page might interrupt the process in some environments." : "Notiek atjaunināšana, šīs lapas atstāšana var pārtraukt procesu dažās vidēs.", "Update to {version}" : "Atjaunināts uz {version}", "An error occurred." : "Radās kļūda.", "Please reload the page." : "Lūdzu, atkārtoti ielādējiet lapu.", + "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Atjauninājums nebija veiksmīgs. Plašāku informāciju skatiet <a href=\"{url}\">mūsu foruma rakstā</a> par šo problēmu.", + "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Atjauninājums nebija veiksmīgs. Lūdzu ziņojiet šo ķļūdu <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud kopienā</a>.", "Continue to Nextcloud" : "Turpināt ar Nextcloud", + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Atjaunināšana ir bijusi veiksmīga. Novirzīsim jūs uz Nextcloud pēc %n sekundēm.","Atjaunināšana ir bijusi veiksmīga. Novirzīsim jūs uz Nextcloud pēc %n sekundes.","Atjaunināšana ir bijusi veiksmīga. Novirzīsim jūs uz Nextcloud pēc %n sekundēm."], "Searching other places" : "Meklēt citās vietās", + "No search results in other folders for {tag}{filter}{endtag}" : "Nav nekas atrasts citā mapēs {tag}{filter}{endtag}", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} meklēšanas rezultāti citās mapēs","{count} meklēšanas rezultāti citās mapēs","{count} meklēšanas rezultāti citās mapēs"], "Personal" : "Personīgi", "Users" : "Lietotāji", @@ -171,6 +197,7 @@ OC.L10N.register( "You can click here to return to %s." : "Jūs varat noklikšķināt šeit, lai atgrieztos uz %s.", "Internal Server Error" : "Iekšēja servera kļūda", "The server encountered an internal error and was unable to complete your request." : "Serverī radās iekšēja kļūda, un tas nevarēja pabeigt jūsu pieprasījumu.", + "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Lūdzu sazinieties ar servera administrātoru ja šī kļūda parādās vairākas reizes, lūdzu iekļaujiet zemāk redzamās tehniskās detaļas jūsu ziņojumā.", "More details can be found in the server log." : "Sīkāka informācija atrodama servera žurnāl failā.", "Technical details" : "Tehniskās detaļas", "Remote Address: %s" : "Attālinātā adrese: %s", @@ -183,12 +210,15 @@ OC.L10N.register( "Trace" : "Izsekot", "Security warning" : "Drošības brīdinājums", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Visticamāk, jūsu datu direktorija un datnes ir pieejamas no interneta, jo .htaccess datne nedarbojas.", + "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Priekš informācijas kā pareizi konfigurēt jūsu serveri skatiet <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">dokumentācijā</a>.", "Create an <strong>admin account</strong>" : "Izveidot <strong>administratora kontu</strong>", "Username" : "Lietotājvārds", "Storage & database" : "Krātuve & datubāze", "Data folder" : "Datu mape", "Configure the database" : "Konfigurēt datubāzi", "Only %s is available." : "Tikai %s ir pieejams.", + "Install and activate additional PHP modules to choose other database types." : "Instalējiet un aktivizējiet papildus PHP moduļus lai izvēlētos citus datubāžu tipus.", + "For more details check out the documentation." : "Sīkākai informācijai skatiet dokumentāciju.", "Database user" : "Datubāzes lietotājs", "Database password" : "Datubāzes parole", "Database name" : "Datubāzes nosaukums", @@ -197,10 +227,14 @@ OC.L10N.register( "Please specify the port number along with the host name (e.g., localhost:5432)." : "Lūdzu, norādiet porta numuru kopā ar resursdatora nosaukumu (piemēram, localhost: 5432).", "Performance warning" : "Veiktspējas brīdinājums", "SQLite will be used as database." : "SQLite tiks izmantota kā datu bāze.", + "For larger installations we recommend to choose a different database backend." : "Priekš lielākām instalācijām mēs iesakām izvēlēties citu datubāzes serveri.", + "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "It sevišķi, ja, izmantojot darbvirsmas klientu, lai veiktu failu sinhronizāciju SQLite izmantošana nav ieteicama.", "Finish setup" : "Pabeigt iestatīšanu", "Finishing …" : "Pabeidz ...", "Need help?" : "Vajadzīga palīdzība?", "See the documentation" : "Skatiet dokumentāciju", + "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Šai programmai nepieciešams JavaScript. Lūdzu {linkstart}ieslēdziet JavasScript{linkend} un pārlādējiet lapu.", + "More apps" : "Vairāk programmu", "Search" : "Meklēt", "This action requires you to confirm your password:" : "Šī darbība ir nepieciešama, lai apstiprinātu jūsu paroli:", "Confirm your password" : "Apstipriniet paroli", @@ -214,29 +248,44 @@ OC.L10N.register( "Log in" : "Ierakstīties", "Stay logged in" : "Palikt ierakstītam", "Alternative Logins" : "Alternatīvās pieteikšanās", + "App token" : "Programmas pilnvara", + "Alternative login using app token" : "Alternatīvās pieteikšanās izmantojot programmas pilnvaru.", + "Redirecting …" : "Novirzam ...", "New password" : "Jauna parole", "New Password" : "Jauna parole", "Reset password" : "Mainīt paroli", "Two-factor authentication" : "Divpakāpju autentifikācija", + "Enhanced security is enabled for your account. Please authenticate using a second factor." : "Uzlabota drošība ir iespējota jūsu kontam. Lūdzu autentificējies izmantojot otru faktoru.", "Cancel log in" : "Atcelt pierakstīšanos", "Use backup code" : "Izmantojiet dublēšanas kodu", + "Error while validating your second factor" : "Kļūda validējot jūsu otru faktoru.", "You are accessing the server from an untrusted domain." : "Jums ir piekļuve serverim no neuzticama domēna.", + "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Lūdzu sazinieties ar jūsu administrātoru. Ja jūs esat šīs instances administrātors, konfigurējiet \"trusted_domains\" iestatījumu config/config.php failā. Piemēra konfigurācija ir pieejama config/config.sample.php failā.", + "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Atkarīgi no jūsu konfigurācijas, kā administrātors jūs varētu izmantot zemāk redzamo pogu lai uzticētos šim domēnam.", "Add \"%s\" as trusted domain" : "Pievienot \"%s\" kā uzticamu domēnu", "App update required" : "Programmai nepieciešama atjaunināšana", "%s will be updated to version %s" : "%s tiks atjaunināts uz versiju %s", "These apps will be updated:" : "Šīs programmas tiks atjauninātas:", + "These incompatible apps will be disabled:" : "Šīs nesaderīgās programmas tiks atspējotas:", "The theme %s has been disabled." : "Tēma %s ir atspējota.", + "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Lūdzu pārliecinieties ka datubāze, config mape un data mape ir dublētas pirms turpināšanas.", "Start update" : "Sākt atjaunināšanu", + "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Lai izvairītos no noliedzes ar lielākām instalācijām, jūs varat palaist sekojošo komandu no jūsu instalācijas mapes:", "Detailed logs" : "Detalizētas informācijas žurnālfaili", "Update needed" : "Nepieciešama atjaunināšana", + "Please use the command line updater because you have a big instance with more than 50 users." : "Lūdzu, izmantojiet komandrindas atjauninātāju, jo jums ir vairāk nekā 50 lietotāji.", "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Lai saņemtu palīdzību, skatiet <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentāciju</a>.", + "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Es zinu ka ja es turpināšu atjauninājumu caur tīmekļa atjauninātāju ir risks ka pieprasījumam būs noliedze , kas var radīt datu zudumu, bet man ir dublējumkopija un es zinu kā atjaunot instanci neveiksmes gadijumā.", + "Upgrade via web on my own risk" : "Atjaunināt caur tīmekļa atjauninātāju uz mana paša risku.", "This %s instance is currently in maintenance mode, which may take a while." : "Šis %s serveris pašlaik darbojas uzturēšanas režīmā, tas var ilgt kādu laiku.", + "This page will refresh itself when the %s instance is available again." : "Lapa tiks atsvaidzināta kad %s instance atkal ir pieejama.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Sazinieties ar sistēmas administratoru, ja šis ziņojums tiek rādīts.. vai parādījās negaidīti", "Thank you for your patience." : "Paldies par jūsu pacietību.", "Problem loading page, reloading in 5 seconds" : "Problēma ielādējot lapu, pārlādēšana pēc 5 sekundēm", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Jūsu faili ir šifrēti. Ja neesat iespējojis atkopšanas atslēgu, nevarēsiet atgūt datus atpakaļ, pēc jūsu paroles atiestatīšanas.<br />Ja neesat pārliecināts par to, ko darīt, lūdzu, pirms turpināt, sazinieties ar administratoru. <br />Vai tiešām vēlaties turpināt?", "Ok" : "Labi", "Error while unsharing" : "Kļūda, beidzot dalīties", + "can reshare" : "var atkārtoti kopīgot", "can edit" : "var rediģēt", "can create" : "var izveidot", "can change" : "var mainīt", @@ -249,11 +298,13 @@ OC.L10N.register( "Share with users or groups..." : "Koplietot ar lietotājiem vai grupām...", "Share with users, groups or by mail..." : "Koplietot ar lietotājiem, grupām vai izmantojot e-pastu...", "Share with users, groups or remote users..." : "Koplietot ar lietotājiem, grupām vai attāliem lietotājiem...", + "Share with users, groups, remote users or by mail..." : "Koplietot ar lietotājiem, grupām, attāliem lietotājiem vai izmantojot e-pastu...", "Share with users..." : "Koplietots ar lietotājiem...", "The object type is not specified." : "Nav norādīts objekta tips.", "Enter new" : "Ievadīt jaunu", "Add" : "Pievienot", "Edit tags" : "Rediģēt atzīmes", + "Error loading dialog template: {error}" : "Kļūda ielādējot dialoga veidni: {error}", "The update was successful. Redirecting you to Nextcloud now." : "Atjaunināšana ir bijusi veiksmīga. Tagad novirzīsim jūs uz Nextcloud.", "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Sveiki,\n\ninformējam, ka %s koplietoja ar jums %s.\nApskati to: %s\n", "The share will expire on %s." : "Koplietošana beigsies %s.", diff --git a/core/l10n/lv.json b/core/l10n/lv.json index 9a56aa3a1f6..a40a9fa831b 100644 --- a/core/l10n/lv.json +++ b/core/l10n/lv.json @@ -52,6 +52,7 @@ "%s (incompatible)" : "%s (nesaderīgs)", "Following apps have been disabled: %s" : "Sekojošas programmas tika atslēgtas: %s", "Already up to date" : "Jau ir jaunākā", + "Search contacts …" : "Meklēt kontaktpersonu", "No contacts found" : "Nav atrasta ne viena kontaktpersona", "Show all contacts …" : "Rādīt visas kontaktpersonas", "There was an error loading your contacts" : "Notikusi kļūda ielādējot kontaktpersonu sarakstu", @@ -94,11 +95,14 @@ "Continue" : "Turpināt", "(all selected)" : "(visus iezīmētos)", "({count} selected)" : "({count} iezīmēti)", + "Pending" : "Gaida", "Very weak password" : "Ļoti vāja parole", "Weak password" : "Vāja parole", "So-so password" : "Normāla parole", "Good password" : "Laba parole", "Strong password" : "Lieliska parole", + "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Jūsu serveris nav pareizi uzstādīts lai atļautu failu sinhronizēšanu jo WebDAV interfeiss šķiet salūzis.", + "Error occurred while checking server setup" : "Radās kļūda, pārbaudot servera ", "Shared" : "Koplietots", "Shared with {recipients}" : "Koplietots ar {recipients}", "Error setting expiration date" : "Kļūda, iestatot termiņa datumu", @@ -106,12 +110,14 @@ "Expiration" : "Termiņš", "Expiration date" : "Termiņa datums", "Choose a password for the public link" : "Izvēlies paroli publiskai saitei", + "Choose a password for the public link or press the \"Enter\" key" : "Izvēlies paroli publiskai saitei vai nospiediet \"Enter\" taustiņu", "Copied!" : "Nokopēts!", "Copy" : "Kopēt", "Not supported!" : "Nav atbalstīts!", "Press ⌘-C to copy." : "Spiet ⌘-C lai kopētu.", "Press Ctrl-C to copy." : "Spiet Ctrl-C lai kopētu.", "Resharing is not allowed" : "Atkārtota dalīšanās nav atļauta", + "Share to {name}" : "Dalīties ar {name}", "Share link" : "Koplietot saiti", "Link" : "Saite", "Password protect" : "Aizsargāt ar paroli", @@ -119,13 +125,20 @@ "Email link to person" : "Sūtīt saiti personai pa e-pastu", "Send" : "Sūtīt", "Allow upload and editing" : "Atļaut augšupielādi un rediģēšanu", + "Read only" : "Tikai lasāms", "Shared with you and the group {group} by {owner}" : "{owner} koplietoja ar jums un grupu {group}", "Shared with you by {owner}" : "{owner} koplietoja ar jums", "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} koplietots ar saiti", "group" : "grupa", "remote" : "attālināti", "email" : "e-pasts", + "shared by {sharer}" : "Koplietoja {sharer}", "Unshare" : "Pārtraukt koplietošanu", + "Can edit" : "Var rediģēt", + "Can create" : "Var izveidot", + "Can change" : "Var mainīt", + "Can delete" : "Var dzēst", + "Access control" : "Piekļuves vadība", "Could not unshare" : "Nevarēja pārtraukt koplietošanu", "Error while sharing" : "Kļūda, daloties", "Share details could not be loaded for this item." : "Šim nevarēja ielādēt koplietošanas detaļas.", @@ -135,7 +148,15 @@ "{sharee} (group)" : "{sharee} (grupa)", "{sharee} (remote)" : "{sharee} (attālināti)", "{sharee} (email)" : "{sharee} (e-pasts)", + "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", "Share" : "Koplietot", + "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu, federated cloud ID vai e-pasta adresi.", + "Share with other people by entering a user or group or a federated cloud ID." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu vai federated cloud ID.", + "Share with other people by entering a user or group or an email address." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu vai e-pasta adresi.", + "Name or email address..." : "Vārds vai e-pasta adrese...", + "Name or federated cloud ID..." : "Vārds vai federated cloud ID", + "Name, federated cloud ID or email address..." : "Vārds, federated cloud ID vai e-pasta adrese...", + "Name..." : "Vārds...", "Error" : "Kļūda", "Error removing share" : "Kļūda, noņemot koplietošanu", "restricted" : "ierobežots", @@ -152,11 +173,16 @@ "Hello {name}" : "Sveiks {name}", "new" : "jauns", "_download %n file_::_download %n files_" : ["lejupielādēt %n failus","lejupielādēt %n failus","lejupielādēt %n failus"], + "The update is in progress, leaving this page might interrupt the process in some environments." : "Notiek atjaunināšana, šīs lapas atstāšana var pārtraukt procesu dažās vidēs.", "Update to {version}" : "Atjaunināts uz {version}", "An error occurred." : "Radās kļūda.", "Please reload the page." : "Lūdzu, atkārtoti ielādējiet lapu.", + "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Atjauninājums nebija veiksmīgs. Plašāku informāciju skatiet <a href=\"{url}\">mūsu foruma rakstā</a> par šo problēmu.", + "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Atjauninājums nebija veiksmīgs. Lūdzu ziņojiet šo ķļūdu <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud kopienā</a>.", "Continue to Nextcloud" : "Turpināt ar Nextcloud", + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Atjaunināšana ir bijusi veiksmīga. Novirzīsim jūs uz Nextcloud pēc %n sekundēm.","Atjaunināšana ir bijusi veiksmīga. Novirzīsim jūs uz Nextcloud pēc %n sekundes.","Atjaunināšana ir bijusi veiksmīga. Novirzīsim jūs uz Nextcloud pēc %n sekundēm."], "Searching other places" : "Meklēt citās vietās", + "No search results in other folders for {tag}{filter}{endtag}" : "Nav nekas atrasts citā mapēs {tag}{filter}{endtag}", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} meklēšanas rezultāti citās mapēs","{count} meklēšanas rezultāti citās mapēs","{count} meklēšanas rezultāti citās mapēs"], "Personal" : "Personīgi", "Users" : "Lietotāji", @@ -169,6 +195,7 @@ "You can click here to return to %s." : "Jūs varat noklikšķināt šeit, lai atgrieztos uz %s.", "Internal Server Error" : "Iekšēja servera kļūda", "The server encountered an internal error and was unable to complete your request." : "Serverī radās iekšēja kļūda, un tas nevarēja pabeigt jūsu pieprasījumu.", + "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Lūdzu sazinieties ar servera administrātoru ja šī kļūda parādās vairākas reizes, lūdzu iekļaujiet zemāk redzamās tehniskās detaļas jūsu ziņojumā.", "More details can be found in the server log." : "Sīkāka informācija atrodama servera žurnāl failā.", "Technical details" : "Tehniskās detaļas", "Remote Address: %s" : "Attālinātā adrese: %s", @@ -181,12 +208,15 @@ "Trace" : "Izsekot", "Security warning" : "Drošības brīdinājums", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Visticamāk, jūsu datu direktorija un datnes ir pieejamas no interneta, jo .htaccess datne nedarbojas.", + "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Priekš informācijas kā pareizi konfigurēt jūsu serveri skatiet <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">dokumentācijā</a>.", "Create an <strong>admin account</strong>" : "Izveidot <strong>administratora kontu</strong>", "Username" : "Lietotājvārds", "Storage & database" : "Krātuve & datubāze", "Data folder" : "Datu mape", "Configure the database" : "Konfigurēt datubāzi", "Only %s is available." : "Tikai %s ir pieejams.", + "Install and activate additional PHP modules to choose other database types." : "Instalējiet un aktivizējiet papildus PHP moduļus lai izvēlētos citus datubāžu tipus.", + "For more details check out the documentation." : "Sīkākai informācijai skatiet dokumentāciju.", "Database user" : "Datubāzes lietotājs", "Database password" : "Datubāzes parole", "Database name" : "Datubāzes nosaukums", @@ -195,10 +225,14 @@ "Please specify the port number along with the host name (e.g., localhost:5432)." : "Lūdzu, norādiet porta numuru kopā ar resursdatora nosaukumu (piemēram, localhost: 5432).", "Performance warning" : "Veiktspējas brīdinājums", "SQLite will be used as database." : "SQLite tiks izmantota kā datu bāze.", + "For larger installations we recommend to choose a different database backend." : "Priekš lielākām instalācijām mēs iesakām izvēlēties citu datubāzes serveri.", + "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "It sevišķi, ja, izmantojot darbvirsmas klientu, lai veiktu failu sinhronizāciju SQLite izmantošana nav ieteicama.", "Finish setup" : "Pabeigt iestatīšanu", "Finishing …" : "Pabeidz ...", "Need help?" : "Vajadzīga palīdzība?", "See the documentation" : "Skatiet dokumentāciju", + "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Šai programmai nepieciešams JavaScript. Lūdzu {linkstart}ieslēdziet JavasScript{linkend} un pārlādējiet lapu.", + "More apps" : "Vairāk programmu", "Search" : "Meklēt", "This action requires you to confirm your password:" : "Šī darbība ir nepieciešama, lai apstiprinātu jūsu paroli:", "Confirm your password" : "Apstipriniet paroli", @@ -212,29 +246,44 @@ "Log in" : "Ierakstīties", "Stay logged in" : "Palikt ierakstītam", "Alternative Logins" : "Alternatīvās pieteikšanās", + "App token" : "Programmas pilnvara", + "Alternative login using app token" : "Alternatīvās pieteikšanās izmantojot programmas pilnvaru.", + "Redirecting …" : "Novirzam ...", "New password" : "Jauna parole", "New Password" : "Jauna parole", "Reset password" : "Mainīt paroli", "Two-factor authentication" : "Divpakāpju autentifikācija", + "Enhanced security is enabled for your account. Please authenticate using a second factor." : "Uzlabota drošība ir iespējota jūsu kontam. Lūdzu autentificējies izmantojot otru faktoru.", "Cancel log in" : "Atcelt pierakstīšanos", "Use backup code" : "Izmantojiet dublēšanas kodu", + "Error while validating your second factor" : "Kļūda validējot jūsu otru faktoru.", "You are accessing the server from an untrusted domain." : "Jums ir piekļuve serverim no neuzticama domēna.", + "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Lūdzu sazinieties ar jūsu administrātoru. Ja jūs esat šīs instances administrātors, konfigurējiet \"trusted_domains\" iestatījumu config/config.php failā. Piemēra konfigurācija ir pieejama config/config.sample.php failā.", + "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Atkarīgi no jūsu konfigurācijas, kā administrātors jūs varētu izmantot zemāk redzamo pogu lai uzticētos šim domēnam.", "Add \"%s\" as trusted domain" : "Pievienot \"%s\" kā uzticamu domēnu", "App update required" : "Programmai nepieciešama atjaunināšana", "%s will be updated to version %s" : "%s tiks atjaunināts uz versiju %s", "These apps will be updated:" : "Šīs programmas tiks atjauninātas:", + "These incompatible apps will be disabled:" : "Šīs nesaderīgās programmas tiks atspējotas:", "The theme %s has been disabled." : "Tēma %s ir atspējota.", + "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Lūdzu pārliecinieties ka datubāze, config mape un data mape ir dublētas pirms turpināšanas.", "Start update" : "Sākt atjaunināšanu", + "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Lai izvairītos no noliedzes ar lielākām instalācijām, jūs varat palaist sekojošo komandu no jūsu instalācijas mapes:", "Detailed logs" : "Detalizētas informācijas žurnālfaili", "Update needed" : "Nepieciešama atjaunināšana", + "Please use the command line updater because you have a big instance with more than 50 users." : "Lūdzu, izmantojiet komandrindas atjauninātāju, jo jums ir vairāk nekā 50 lietotāji.", "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Lai saņemtu palīdzību, skatiet <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentāciju</a>.", + "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Es zinu ka ja es turpināšu atjauninājumu caur tīmekļa atjauninātāju ir risks ka pieprasījumam būs noliedze , kas var radīt datu zudumu, bet man ir dublējumkopija un es zinu kā atjaunot instanci neveiksmes gadijumā.", + "Upgrade via web on my own risk" : "Atjaunināt caur tīmekļa atjauninātāju uz mana paša risku.", "This %s instance is currently in maintenance mode, which may take a while." : "Šis %s serveris pašlaik darbojas uzturēšanas režīmā, tas var ilgt kādu laiku.", + "This page will refresh itself when the %s instance is available again." : "Lapa tiks atsvaidzināta kad %s instance atkal ir pieejama.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Sazinieties ar sistēmas administratoru, ja šis ziņojums tiek rādīts.. vai parādījās negaidīti", "Thank you for your patience." : "Paldies par jūsu pacietību.", "Problem loading page, reloading in 5 seconds" : "Problēma ielādējot lapu, pārlādēšana pēc 5 sekundēm", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Jūsu faili ir šifrēti. Ja neesat iespējojis atkopšanas atslēgu, nevarēsiet atgūt datus atpakaļ, pēc jūsu paroles atiestatīšanas.<br />Ja neesat pārliecināts par to, ko darīt, lūdzu, pirms turpināt, sazinieties ar administratoru. <br />Vai tiešām vēlaties turpināt?", "Ok" : "Labi", "Error while unsharing" : "Kļūda, beidzot dalīties", + "can reshare" : "var atkārtoti kopīgot", "can edit" : "var rediģēt", "can create" : "var izveidot", "can change" : "var mainīt", @@ -247,11 +296,13 @@ "Share with users or groups..." : "Koplietot ar lietotājiem vai grupām...", "Share with users, groups or by mail..." : "Koplietot ar lietotājiem, grupām vai izmantojot e-pastu...", "Share with users, groups or remote users..." : "Koplietot ar lietotājiem, grupām vai attāliem lietotājiem...", + "Share with users, groups, remote users or by mail..." : "Koplietot ar lietotājiem, grupām, attāliem lietotājiem vai izmantojot e-pastu...", "Share with users..." : "Koplietots ar lietotājiem...", "The object type is not specified." : "Nav norādīts objekta tips.", "Enter new" : "Ievadīt jaunu", "Add" : "Pievienot", "Edit tags" : "Rediģēt atzīmes", + "Error loading dialog template: {error}" : "Kļūda ielādējot dialoga veidni: {error}", "The update was successful. Redirecting you to Nextcloud now." : "Atjaunināšana ir bijusi veiksmīga. Tagad novirzīsim jūs uz Nextcloud.", "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Sveiki,\n\ninformējam, ka %s koplietoja ar jums %s.\nApskati to: %s\n", "The share will expire on %s." : "Koplietošana beigsies %s.", diff --git a/core/l10n/ro.js b/core/l10n/ro.js index 0c348180d69..6a347d4ce37 100644 --- a/core/l10n/ro.js +++ b/core/l10n/ro.js @@ -17,6 +17,7 @@ OC.L10N.register( "Couldn't reset password because the token is invalid" : "Parola nu a putut fi resetată deoarece token-ul este invalid", "Couldn't reset password because the token is expired" : "Parola nu a putut fi resetată deoarece token-ul a expirat", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nu a putut fi trimis un email pentru resetare deoarece nu există o adresă email pentru acest utilizator. Contactează-ți administratorul.", + "Password reset" : "Resetare parolă", "%s password reset" : "%s resetare parola", "Couldn't send reset email. Please contact your administrator." : "Expedierea email-ului de resetare a eşuat. Vă rugăm să contactaţi administratorul dvs.", "Couldn't send reset email. Please make sure your username is correct." : "Nu a putut fi trimis un email pentru resetare. Asigură-te că numele de utilizator este corect.", @@ -45,6 +46,8 @@ OC.L10N.register( "%s (incompatible)" : "%s (incompatibil)", "Following apps have been disabled: %s" : "Următoarele aplicații au fost dezactivate: %s", "Already up to date" : "Deja actualizat", + "Search contacts …" : "Cauta contacte ...", + "Show all contacts …" : "Arata toate contactele ...", "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Au apărut probleme la verificarea integrității codului. Mai multe informații…</a>", "Settings" : "Setări", "Connection to server lost" : "S-a pierdut conexiunea la server", @@ -127,7 +130,9 @@ OC.L10N.register( "group" : "grup", "remote" : "de la distanță", "email" : "email", + "shared by {sharer}" : "partajat de {sharer}", "Unshare" : "Anulare partajare", + "Access control" : "Control acces", "Could not unshare" : "Nu s-a putut elimina partajarea", "Error while sharing" : "Eroare la partajare", "Share details could not be loaded for this item." : "Nu s-au putut încărca detaliile de partajare pentru acest element.", @@ -140,6 +145,7 @@ OC.L10N.register( "{sharee} (remote)" : "{sharee} (distanță)", "{sharee} (email)" : "{sharee} (email)", "Share" : "Partajează", + "Name..." : "Nume ...", "Error" : "Eroare", "Error removing share" : "Eroare la înlăturarea elementului partajat", "Non-existing tag #{tag}" : "Etichetă inexistentă #{tag}", @@ -214,6 +220,7 @@ OC.L10N.register( "Need help?" : "Ai nevoie de ajutor?", "See the documentation" : "Vezi documentația", "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Această aplicație necesită JavaScript pentru a funcționa corect. {linkstart}Activează JavaScript{linkend} și reîncarcă pagina.", + "More apps" : "Mai multe aplicatii", "Search" : "Căutare", "This action requires you to confirm your password:" : "Această acțiune necesită confirmarea parolei tale:", "Confirm your password" : "Confirmă parola:", @@ -228,7 +235,7 @@ OC.L10N.register( "Stay logged in" : "Rămâi autentificat", "Alternative Logins" : "Conectări alternative", "New password" : "Noua parolă", - "New Password" : "Noua parolă", + "New Password" : "Noua Parolă", "Reset password" : "Resetează parola", "Two-factor authentication" : "Autentificare în doi-factori", "Enhanced security is enabled for your account. Please authenticate using a second factor." : "Securitatea îmbunătățită este activată pentru contul tău. Autentifică-te utilizând un al doilea factor.", diff --git a/core/l10n/ro.json b/core/l10n/ro.json index ec0daa559d7..3e9b393e5e4 100644 --- a/core/l10n/ro.json +++ b/core/l10n/ro.json @@ -15,6 +15,7 @@ "Couldn't reset password because the token is invalid" : "Parola nu a putut fi resetată deoarece token-ul este invalid", "Couldn't reset password because the token is expired" : "Parola nu a putut fi resetată deoarece token-ul a expirat", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nu a putut fi trimis un email pentru resetare deoarece nu există o adresă email pentru acest utilizator. Contactează-ți administratorul.", + "Password reset" : "Resetare parolă", "%s password reset" : "%s resetare parola", "Couldn't send reset email. Please contact your administrator." : "Expedierea email-ului de resetare a eşuat. Vă rugăm să contactaţi administratorul dvs.", "Couldn't send reset email. Please make sure your username is correct." : "Nu a putut fi trimis un email pentru resetare. Asigură-te că numele de utilizator este corect.", @@ -43,6 +44,8 @@ "%s (incompatible)" : "%s (incompatibil)", "Following apps have been disabled: %s" : "Următoarele aplicații au fost dezactivate: %s", "Already up to date" : "Deja actualizat", + "Search contacts …" : "Cauta contacte ...", + "Show all contacts …" : "Arata toate contactele ...", "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Au apărut probleme la verificarea integrității codului. Mai multe informații…</a>", "Settings" : "Setări", "Connection to server lost" : "S-a pierdut conexiunea la server", @@ -125,7 +128,9 @@ "group" : "grup", "remote" : "de la distanță", "email" : "email", + "shared by {sharer}" : "partajat de {sharer}", "Unshare" : "Anulare partajare", + "Access control" : "Control acces", "Could not unshare" : "Nu s-a putut elimina partajarea", "Error while sharing" : "Eroare la partajare", "Share details could not be loaded for this item." : "Nu s-au putut încărca detaliile de partajare pentru acest element.", @@ -138,6 +143,7 @@ "{sharee} (remote)" : "{sharee} (distanță)", "{sharee} (email)" : "{sharee} (email)", "Share" : "Partajează", + "Name..." : "Nume ...", "Error" : "Eroare", "Error removing share" : "Eroare la înlăturarea elementului partajat", "Non-existing tag #{tag}" : "Etichetă inexistentă #{tag}", @@ -212,6 +218,7 @@ "Need help?" : "Ai nevoie de ajutor?", "See the documentation" : "Vezi documentația", "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Această aplicație necesită JavaScript pentru a funcționa corect. {linkstart}Activează JavaScript{linkend} și reîncarcă pagina.", + "More apps" : "Mai multe aplicatii", "Search" : "Căutare", "This action requires you to confirm your password:" : "Această acțiune necesită confirmarea parolei tale:", "Confirm your password" : "Confirmă parola:", @@ -226,7 +233,7 @@ "Stay logged in" : "Rămâi autentificat", "Alternative Logins" : "Conectări alternative", "New password" : "Noua parolă", - "New Password" : "Noua parolă", + "New Password" : "Noua Parolă", "Reset password" : "Resetează parola", "Two-factor authentication" : "Autentificare în doi-factori", "Enhanced security is enabled for your account. Please authenticate using a second factor." : "Securitatea îmbunătățită este activată pentru contul tău. Autentifică-te utilizând un al doilea factor.", diff --git a/core/l10n/sq.js b/core/l10n/sq.js index 02466598abc..5da0e92c386 100644 --- a/core/l10n/sq.js +++ b/core/l10n/sq.js @@ -2,7 +2,7 @@ OC.L10N.register( "core", { "Please select a file." : "Ju lutem përzgjidhni një skedar.", - "File is too big" : "Kartela është shumë e madhe", + "File is too big" : "Skedari është shumë i madh", "The selected file is not an image." : "Skedari i zgjedhur nuk është një imazh", "The selected file cannot be read." : "Skedari i zgjedhur nuk mund të lexohet", "Invalid file provided" : "U dha kartelë e pavlefshme", @@ -13,18 +13,20 @@ OC.L10N.register( "No temporary profile picture available, try again" : "S’ka gati foto të përkohshme profili, riprovoni", "No crop data provided" : "S’u dhanë të dhëna qethjeje", "No valid crop data provided" : "S’u dhanë të dhëna qethjeje të vlefshme", - "Crop is not square" : "Qethja s’është katrore", + "Crop is not square" : "Prerja s’është katrore", + "State token does not match" : "Shenja shtetërore nuk përputhet", "Password reset is disabled" : "Opsioni për rigjenerimin e fjalëkalimit është çaktivizuar", "Couldn't reset password because the token is invalid" : "S’u ricaktua dot fjalëkalimi, ngaqë token-i është i pavlefshëm", "Couldn't reset password because the token is expired" : "S’u ricaktua dot fjalëkalimi, ngaqë token-i ka skaduar", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "S’u dërgua dot email ricaktimi, ngaqë s’ka adresë email për këtë përdoruesi. Ju lutemi, lidhuni me përgjegjësin tuaj.", "Password reset" : "Fjalkalimi u rivendos", + "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Klikoni butonin më poshtë për të rivendosur fjalëkalimin tuaj. Nëse nuk keni kërkuar rivendosjen e fjalëkalimit, atëherë injorojeni këtë email.", "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Klikoni ne 'link-un' e rradhes per te rivendosur fjalekalimin tuaj.Nese nuk e keni vendosur akoma fjalekalimin atehere mos e merrni parasysh kete email.", "Reset your password" : "Rivendosni nje fjalekalim te ri", "%s password reset" : "U ricaktua fjalëkalimi për %s", "Couldn't send reset email. Please contact your administrator." : "S’u dërgua dot email-i i ricaktimit. Ju lutemi, lidhuni me përgjegjësin tuaj.", "Couldn't send reset email. Please make sure your username is correct." : "S’u dërgua dot email ricaktimi. Ju lutemi, sigurohuni që emri juaj i përdoruesit është i saktë.", - "Preparing update" : "Po përgatitet përditësimi", + "Preparing update" : "Duke përgatitur përditësimin", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Sinjalizim ndreqjeje: ", "Repair error: " : "Gabim ndreqjeje: ", @@ -60,8 +62,10 @@ OC.L10N.register( "Looking for {term} …" : "Duke kërkuar {për] ...", "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Pati probleme me kontrollin e integritetit të kodit. Më tepër të dhëna…</a>", "No action available" : "Jo veprim i mundur", + "Error fetching contact actions" : "Gabim gjatë marrjes së veprimeve të kontaktit", "Settings" : "Rregullime", "Connection to server lost" : "Lidhja me serverin u shkëput", + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problem gjatë ngarkimit të faqes, rifreskimi në %n sekonda","Problem gjatë ngarkimit të faqes, rifreskimi në %n sekonda"], "Saving..." : "Po ruhet …", "Dismiss" : "Mos e merr parasysh", "This action requires you to confirm your password" : "Ky veprim kërkon që të konfirmoni fjalëkalimin tuaj.", @@ -81,6 +85,7 @@ OC.L10N.register( "No files in here" : "Jo skedar këtu", "Choose" : "Zgjidhni", "Error loading file picker template: {error}" : "Gabim në ngarkimin e gjedhes së marrësit të kartelave: {error}", + "OK" : "OK", "Error loading message template: {error}" : "Gabim gjatë ngarkimit të gjedhes së mesazheve: {error}", "read-only" : "vetëm për lexim", "_{count} file conflict_::_{count} file conflicts_" : ["{count} përplasje kartelash","{count} përplasje kartelash"], @@ -108,7 +113,10 @@ OC.L10N.register( "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "E anasjellta e konfigurimit të kryeve proxy është e pasaktë, ose ju po aksesoni Nextcloud nga një proxy i besuar. Nëse nuk jeni duke aksesuar Nextcloud nga një proxy i besuar, kjo është një çështje sigurie dhe mund të lejoj një sulmues të manipuloj adresën e tyre IP si të dukshme nga Nextcloud. Informacione të mëtejshme mund të gjendet në <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>.", "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached është formësuar si fshehtinë e shpërndarë, por është instaluar moduli i gabuar PHP \"memcache\". \\OC\\Memcache\\Memcached mbulon vetëm \"memcached\" dhe jo \"memcache\". Shihni <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">wiki-n mbi memcached rreth të dy moduleve</a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Disa kartela s’e kaluan dot kontrollin e pacenueshmërisë. Më tepër të dhëna se si të zgjidhet ky problem mund të gjeni te <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentimi</a> ynë. (<a href=\"{codeIntegrityDownloadEndpoint}\">Listë e kartelave të pavlefshme…</a> / <a href=\"{rescanEndpoint}\">Rikontrollojini…</a>)", + "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend</a> to use following settings in the <code>php.ini</code>:" : "PHP OPcache nuk ësht konfiguruar siç duhet. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\"> Për performancë më të mirë ne rekomandojmë </a>të përdorni konfigurimet e mëposhtme në <code> php.ini </code>:", + "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "Funksioni i PHP \"set_time_limit\" nuk është i disponueshëm. Kjo mund të rezultoj që skriptet te ndalohen në mes të ekzekutimit dhe të ndërpresin instalimin tuaj. Ne ju rekomandojmë që ju ta bëni aktiv këtë funksion.", "Error occurred while checking server setup" : "Ndodhi një gabim gjatë kontrollit të rregullimit të shërbyesit", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Drejtoria juaj e të dhënave dhe kartelat tuaja ka shumë mundësi të jenë të arritshme që nga interneti. Kartela .htaccess s’funksionon. Këshillojmë me forcë që ta formësoni shërbyesin tuaj web në një mënyrë që drejtoria e të dhënave të mos lejojë më hyrje, ose ta zhvendosni drejtorinë e të dhënave jashtë rrënjës së dokumenteve të shërbyesit web.", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "Kryet HTTP \"{header}\" s’është formësuar të jetë i njëjtë me \"{expected}\". Ky është një rrezik potencial sigurie dhe privatësie dhe këshillojmë të ndreqet ky rregullim.", "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "Parametri \"Strict-Transport-Security\" HTTP s’është formësuar të paktën \"{seconds}\" sekonda. Për siguri të thelluar, ju këshillojmë aktivizimin e HSTS-së, ashtu si përshkruhet në <a href=\"{docUrl}\" rel=\"noreferrer\">këshillat tona mbi sigurinë</a>.", "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Po e përdorni këtë sajt përmes HTTP-je. Këshillojmë me forcë ta formësoni shërbyesin tuaj të kërkojë medoemos përdorimin e HTTPS-së, siç përshkruhet te <a href=\"{docUrl}\">këshillat tona mbi sigurinë</a>.", @@ -120,40 +128,57 @@ OC.L10N.register( "Expiration" : "Skadim", "Expiration date" : "Datë skadimi", "Choose a password for the public link" : "Zgjidhni një fjalëkalim për lidhjen publike", + "Choose a password for the public link or press the \"Enter\" key" : "Zgjidhni një fjalëkalim për lidhjen publike ose shtypni butonin \"Enter\"", "Copied!" : "U kopjua!", "Copy" : "Kopjo", "Not supported!" : "Jo i përshtatshëm!", "Press ⌘-C to copy." : "Shtyp ⌘-C për të kopjuar.", "Press Ctrl-C to copy." : "Shtypni Ctrl-C për të kopjuar.", "Resharing is not allowed" : "Nuk lejohen rindarjet", + "Share to {name}" : "Ndaj tek {name}", "Share link" : "Lidhje ndarjeje", "Link" : "Lidhje", "Password protect" : "Mbroje me fjalëkalim", "Allow editing" : "Lejo përpunim", "Email link to person" : "Dërgoja personit lidhjen me email", - "Send" : "Dërgoje", + "Send" : "Dërgo", "Allow upload and editing" : "Lejo ngarkim dhe editim", "Read only" : "Vetëm i lexueshëm", "File drop (upload only)" : "Lësho skedar (vetëm ngarkim)", "Shared with you and the group {group} by {owner}" : "Ndarë me ju dhe me grupin {group} nga {owner}", "Shared with you by {owner}" : "Ndarë me ju nga {owner}", + "Choose a password for the mail share" : "Zgjidh një fjalëkalim për shpërndarjen e mail-it", "{{shareInitiatorDisplayName}} shared via link" : "{{shpërndaEmrinEShfaqurTëNismëtarit}} shpërnda nëpërmjet linkut", "group" : "grup", "remote" : "i largët", "email" : "postë elektronike", + "shared by {sharer}" : "ndarë nga {ndarësi}", "Unshare" : "Hiqe ndarjen", + "Can reshare" : "Mund të rishpërdajë", + "Can edit" : "Mund të editojë", + "Can create" : "Mund të krijoni", + "Can change" : "Mund të ndryshojë", + "Can delete" : "Mund të fshijë", + "Access control" : "Kontrolli i aksesit", "Could not unshare" : "S’e shndau dot", "Error while sharing" : "Gabim gjatë ndarjes", "Share details could not be loaded for this item." : "Për këtë objekt s’u ngarkuan dot hollësi ndarjeje.", + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Të paktën {count} karaktere janë të nevojshëm për vetëpërmbushje","Të paktën {count} karaktere janë të nevojshëm për vetëpërmbushje"], + "This list is maybe truncated - please refine your search term to see more results." : "Kjo listë ndoshta është e prerë - ju lutemi të përmirësoni termat e kërkimit tuaj për të parë më shumë rezultate.", "No users or groups found for {search}" : "S’u gjetën përdorues ose grupe për {search}", "No users found for {search}" : "S’u gjet përdorues për {search}", "An error occurred. Please try again" : "Ndodhi një gabim. Ju lutemi, riprovoni", "{sharee} (group)" : "{sharee} (grup)", "{sharee} (remote)" : "{sharee} (i largët)", - "{sharee} (email)" : "{shpërnda} (postë elektronike)", + "{sharee} (email)" : "{sharee} (email)", + "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", "Share" : "Ndaje", + "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Shpërndaje me persona të tjerë duke vendosur një përdorues ose një grup, një ID reje të federuar ose një adresë emaili", + "Share with other people by entering a user or group or a federated cloud ID." : "Ndaj me njerëz të tjerë duke futur një pëdorues ose grup ose një ID reje federale.", "Share with other people by entering a user or group or an email address." : "Shpërndaje me persona të tjerë duke vendosur një perdorues ose një grup ose një adresë emaili", "Name or email address..." : "Emri ose adresa e email-it", + "Name or federated cloud ID..." : "Emri ose ID e resë të fedferuar", + "Name, federated cloud ID or email address..." : "Emri, ID e resë të federuar ose adresën e email-it...", "Name..." : "Emër", "Error" : "Gabim", "Error removing share" : "Gabim në heqjen e ndarjes", @@ -171,7 +196,7 @@ OC.L10N.register( "Hello {name}, the weather is {weather}" : "Tungjatjeta {name}, koha është {weather}", "Hello {name}" : "Tungjatjeta {name}", "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Këto janë rezultatet e juaj të kërkimit<script> alarm(1)", - "new" : "re", + "new" : "i/e re", "_download %n file_::_download %n files_" : ["shkarko %n kartelë","shkarko %n kartela"], "The update is in progress, leaving this page might interrupt the process in some environments." : "Përditësimi është në zhvillim, largimi nga faqja mund të ndërpres procesin në disa mjedise.", "Update to {version}" : "Përditëso në {version}", @@ -180,7 +205,8 @@ OC.L10N.register( "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Përditësimi qe i pasuksesshëm. Për më tepër të dhëna <a href=\"{url}\">shihni postimin te forumi ynë</a> lidhur me këtë çështje.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Përditësimi ishte i pasuksesshëm. Ju lutem raportoni këtë problem në <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>.", "Continue to Nextcloud" : "Vazhdoni tek Nextcloud", - "Searching other places" : "Po kërkohet në vende të tjera", + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Përditësimi ishte i suksesshëm. Ju ridrejtojmë në Nextcloud për %n sekonda.","Përditësimi ishte i suksesshëm. Ju ridrejtojmë në Nextcloud për %n sekonda."], + "Searching other places" : "Duke kërkuar në vende të tjera", "No search results in other folders for {tag}{filter}{endtag}" : "Jo rezultate nga kërkimi në dosjet e tjera për '{etiketim}{filtrim}{përfundoetiketimin}'", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} përfundim kërkimi në një tjetër dosje","{count} përfundime kërkimi në dosje të tjera"], "Personal" : "Personale", @@ -274,6 +300,7 @@ OC.L10N.register( "Please use the command line updater because you have a big instance with more than 50 users." : "Ju lutemi,përdorni përditësuesin e rreshtit të urdhrave, sepse keni një instalim me mbi 50 përdorues", "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Për ndihmë, shihni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentimin</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Në qofte se unë vazhdoj të kryej përditësimin nëpëmjet web UI ka rrezik, që kërkesa mund të ndaloj dhe shkakton humbje të të dhënave, por unë di si ti rikthej të dhënat ne rast dështimi.", + "Upgrade via web on my own risk" : "Përditëso me anë të internetit në rrezikun tim", "This %s instance is currently in maintenance mode, which may take a while." : "Kjo instancë %s hëpërhë gjendet nën mënyrën mirëmbajtje, çka mund të zgjasë ca.", "This page will refresh itself when the %s instance is available again." : "Kjo faqe do të rifreskohet vetiu, sapo instanca %s të jetë sërish gati.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Nëse ky mesazh shfaqet vazhdimisht ose u shfaq papritmas, lidhuni me përgjegjësin e sistemit.", @@ -294,7 +321,7 @@ OC.L10N.register( "Share with users or remote users..." : "Shpërnda me përdoruesit ose me përdoruesit në distancë...", "Share with users, remote users or by mail..." : "Shpërnda me përdoruesit, përdoruesit në distancë ose nga posta elektronike...", "Share with users or groups..." : "Shpërnda me përdoruesit ose grupet...", - "Share with users, groups or by mail..." : "Shpërnda me përdoruesit, grupet ose nga posta elektronike...", + "Share with users, groups or by mail..." : "Nda me përdoruesit, grupet ose nga posta elektronike...", "Share with users, groups or remote users..." : "Shpërnda me përdoruesit, grupet ose përdoruesit në distancë...", "Share with users, groups, remote users or by mail..." : "Shpërnda me përdoruesit, grupet, përdoruesit në distancë ose nga posta elektronike...", "Share with users..." : "Shpërnda me përdoruesit...", diff --git a/core/l10n/sq.json b/core/l10n/sq.json index ddb8a7ae4a5..0b09482432d 100644 --- a/core/l10n/sq.json +++ b/core/l10n/sq.json @@ -1,6 +1,6 @@ { "translations": { "Please select a file." : "Ju lutem përzgjidhni një skedar.", - "File is too big" : "Kartela është shumë e madhe", + "File is too big" : "Skedari është shumë i madh", "The selected file is not an image." : "Skedari i zgjedhur nuk është një imazh", "The selected file cannot be read." : "Skedari i zgjedhur nuk mund të lexohet", "Invalid file provided" : "U dha kartelë e pavlefshme", @@ -11,18 +11,20 @@ "No temporary profile picture available, try again" : "S’ka gati foto të përkohshme profili, riprovoni", "No crop data provided" : "S’u dhanë të dhëna qethjeje", "No valid crop data provided" : "S’u dhanë të dhëna qethjeje të vlefshme", - "Crop is not square" : "Qethja s’është katrore", + "Crop is not square" : "Prerja s’është katrore", + "State token does not match" : "Shenja shtetërore nuk përputhet", "Password reset is disabled" : "Opsioni për rigjenerimin e fjalëkalimit është çaktivizuar", "Couldn't reset password because the token is invalid" : "S’u ricaktua dot fjalëkalimi, ngaqë token-i është i pavlefshëm", "Couldn't reset password because the token is expired" : "S’u ricaktua dot fjalëkalimi, ngaqë token-i ka skaduar", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "S’u dërgua dot email ricaktimi, ngaqë s’ka adresë email për këtë përdoruesi. Ju lutemi, lidhuni me përgjegjësin tuaj.", "Password reset" : "Fjalkalimi u rivendos", + "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Klikoni butonin më poshtë për të rivendosur fjalëkalimin tuaj. Nëse nuk keni kërkuar rivendosjen e fjalëkalimit, atëherë injorojeni këtë email.", "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Klikoni ne 'link-un' e rradhes per te rivendosur fjalekalimin tuaj.Nese nuk e keni vendosur akoma fjalekalimin atehere mos e merrni parasysh kete email.", "Reset your password" : "Rivendosni nje fjalekalim te ri", "%s password reset" : "U ricaktua fjalëkalimi për %s", "Couldn't send reset email. Please contact your administrator." : "S’u dërgua dot email-i i ricaktimit. Ju lutemi, lidhuni me përgjegjësin tuaj.", "Couldn't send reset email. Please make sure your username is correct." : "S’u dërgua dot email ricaktimi. Ju lutemi, sigurohuni që emri juaj i përdoruesit është i saktë.", - "Preparing update" : "Po përgatitet përditësimi", + "Preparing update" : "Duke përgatitur përditësimin", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Sinjalizim ndreqjeje: ", "Repair error: " : "Gabim ndreqjeje: ", @@ -58,8 +60,10 @@ "Looking for {term} …" : "Duke kërkuar {për] ...", "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Pati probleme me kontrollin e integritetit të kodit. Më tepër të dhëna…</a>", "No action available" : "Jo veprim i mundur", + "Error fetching contact actions" : "Gabim gjatë marrjes së veprimeve të kontaktit", "Settings" : "Rregullime", "Connection to server lost" : "Lidhja me serverin u shkëput", + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problem gjatë ngarkimit të faqes, rifreskimi në %n sekonda","Problem gjatë ngarkimit të faqes, rifreskimi në %n sekonda"], "Saving..." : "Po ruhet …", "Dismiss" : "Mos e merr parasysh", "This action requires you to confirm your password" : "Ky veprim kërkon që të konfirmoni fjalëkalimin tuaj.", @@ -79,6 +83,7 @@ "No files in here" : "Jo skedar këtu", "Choose" : "Zgjidhni", "Error loading file picker template: {error}" : "Gabim në ngarkimin e gjedhes së marrësit të kartelave: {error}", + "OK" : "OK", "Error loading message template: {error}" : "Gabim gjatë ngarkimit të gjedhes së mesazheve: {error}", "read-only" : "vetëm për lexim", "_{count} file conflict_::_{count} file conflicts_" : ["{count} përplasje kartelash","{count} përplasje kartelash"], @@ -106,7 +111,10 @@ "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "E anasjellta e konfigurimit të kryeve proxy është e pasaktë, ose ju po aksesoni Nextcloud nga një proxy i besuar. Nëse nuk jeni duke aksesuar Nextcloud nga një proxy i besuar, kjo është një çështje sigurie dhe mund të lejoj një sulmues të manipuloj adresën e tyre IP si të dukshme nga Nextcloud. Informacione të mëtejshme mund të gjendet në <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>.", "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached është formësuar si fshehtinë e shpërndarë, por është instaluar moduli i gabuar PHP \"memcache\". \\OC\\Memcache\\Memcached mbulon vetëm \"memcached\" dhe jo \"memcache\". Shihni <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">wiki-n mbi memcached rreth të dy moduleve</a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Disa kartela s’e kaluan dot kontrollin e pacenueshmërisë. Më tepër të dhëna se si të zgjidhet ky problem mund të gjeni te <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentimi</a> ynë. (<a href=\"{codeIntegrityDownloadEndpoint}\">Listë e kartelave të pavlefshme…</a> / <a href=\"{rescanEndpoint}\">Rikontrollojini…</a>)", + "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend</a> to use following settings in the <code>php.ini</code>:" : "PHP OPcache nuk ësht konfiguruar siç duhet. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\"> Për performancë më të mirë ne rekomandojmë </a>të përdorni konfigurimet e mëposhtme në <code> php.ini </code>:", + "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "Funksioni i PHP \"set_time_limit\" nuk është i disponueshëm. Kjo mund të rezultoj që skriptet te ndalohen në mes të ekzekutimit dhe të ndërpresin instalimin tuaj. Ne ju rekomandojmë që ju ta bëni aktiv këtë funksion.", "Error occurred while checking server setup" : "Ndodhi një gabim gjatë kontrollit të rregullimit të shërbyesit", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Drejtoria juaj e të dhënave dhe kartelat tuaja ka shumë mundësi të jenë të arritshme që nga interneti. Kartela .htaccess s’funksionon. Këshillojmë me forcë që ta formësoni shërbyesin tuaj web në një mënyrë që drejtoria e të dhënave të mos lejojë më hyrje, ose ta zhvendosni drejtorinë e të dhënave jashtë rrënjës së dokumenteve të shërbyesit web.", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "Kryet HTTP \"{header}\" s’është formësuar të jetë i njëjtë me \"{expected}\". Ky është një rrezik potencial sigurie dhe privatësie dhe këshillojmë të ndreqet ky rregullim.", "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "Parametri \"Strict-Transport-Security\" HTTP s’është formësuar të paktën \"{seconds}\" sekonda. Për siguri të thelluar, ju këshillojmë aktivizimin e HSTS-së, ashtu si përshkruhet në <a href=\"{docUrl}\" rel=\"noreferrer\">këshillat tona mbi sigurinë</a>.", "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Po e përdorni këtë sajt përmes HTTP-je. Këshillojmë me forcë ta formësoni shërbyesin tuaj të kërkojë medoemos përdorimin e HTTPS-së, siç përshkruhet te <a href=\"{docUrl}\">këshillat tona mbi sigurinë</a>.", @@ -118,40 +126,57 @@ "Expiration" : "Skadim", "Expiration date" : "Datë skadimi", "Choose a password for the public link" : "Zgjidhni një fjalëkalim për lidhjen publike", + "Choose a password for the public link or press the \"Enter\" key" : "Zgjidhni një fjalëkalim për lidhjen publike ose shtypni butonin \"Enter\"", "Copied!" : "U kopjua!", "Copy" : "Kopjo", "Not supported!" : "Jo i përshtatshëm!", "Press ⌘-C to copy." : "Shtyp ⌘-C për të kopjuar.", "Press Ctrl-C to copy." : "Shtypni Ctrl-C për të kopjuar.", "Resharing is not allowed" : "Nuk lejohen rindarjet", + "Share to {name}" : "Ndaj tek {name}", "Share link" : "Lidhje ndarjeje", "Link" : "Lidhje", "Password protect" : "Mbroje me fjalëkalim", "Allow editing" : "Lejo përpunim", "Email link to person" : "Dërgoja personit lidhjen me email", - "Send" : "Dërgoje", + "Send" : "Dërgo", "Allow upload and editing" : "Lejo ngarkim dhe editim", "Read only" : "Vetëm i lexueshëm", "File drop (upload only)" : "Lësho skedar (vetëm ngarkim)", "Shared with you and the group {group} by {owner}" : "Ndarë me ju dhe me grupin {group} nga {owner}", "Shared with you by {owner}" : "Ndarë me ju nga {owner}", + "Choose a password for the mail share" : "Zgjidh një fjalëkalim për shpërndarjen e mail-it", "{{shareInitiatorDisplayName}} shared via link" : "{{shpërndaEmrinEShfaqurTëNismëtarit}} shpërnda nëpërmjet linkut", "group" : "grup", "remote" : "i largët", "email" : "postë elektronike", + "shared by {sharer}" : "ndarë nga {ndarësi}", "Unshare" : "Hiqe ndarjen", + "Can reshare" : "Mund të rishpërdajë", + "Can edit" : "Mund të editojë", + "Can create" : "Mund të krijoni", + "Can change" : "Mund të ndryshojë", + "Can delete" : "Mund të fshijë", + "Access control" : "Kontrolli i aksesit", "Could not unshare" : "S’e shndau dot", "Error while sharing" : "Gabim gjatë ndarjes", "Share details could not be loaded for this item." : "Për këtë objekt s’u ngarkuan dot hollësi ndarjeje.", + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Të paktën {count} karaktere janë të nevojshëm për vetëpërmbushje","Të paktën {count} karaktere janë të nevojshëm për vetëpërmbushje"], + "This list is maybe truncated - please refine your search term to see more results." : "Kjo listë ndoshta është e prerë - ju lutemi të përmirësoni termat e kërkimit tuaj për të parë më shumë rezultate.", "No users or groups found for {search}" : "S’u gjetën përdorues ose grupe për {search}", "No users found for {search}" : "S’u gjet përdorues për {search}", "An error occurred. Please try again" : "Ndodhi një gabim. Ju lutemi, riprovoni", "{sharee} (group)" : "{sharee} (grup)", "{sharee} (remote)" : "{sharee} (i largët)", - "{sharee} (email)" : "{shpërnda} (postë elektronike)", + "{sharee} (email)" : "{sharee} (email)", + "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", "Share" : "Ndaje", + "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Shpërndaje me persona të tjerë duke vendosur një përdorues ose një grup, një ID reje të federuar ose një adresë emaili", + "Share with other people by entering a user or group or a federated cloud ID." : "Ndaj me njerëz të tjerë duke futur një pëdorues ose grup ose një ID reje federale.", "Share with other people by entering a user or group or an email address." : "Shpërndaje me persona të tjerë duke vendosur një perdorues ose një grup ose një adresë emaili", "Name or email address..." : "Emri ose adresa e email-it", + "Name or federated cloud ID..." : "Emri ose ID e resë të fedferuar", + "Name, federated cloud ID or email address..." : "Emri, ID e resë të federuar ose adresën e email-it...", "Name..." : "Emër", "Error" : "Gabim", "Error removing share" : "Gabim në heqjen e ndarjes", @@ -169,7 +194,7 @@ "Hello {name}, the weather is {weather}" : "Tungjatjeta {name}, koha është {weather}", "Hello {name}" : "Tungjatjeta {name}", "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Këto janë rezultatet e juaj të kërkimit<script> alarm(1)", - "new" : "re", + "new" : "i/e re", "_download %n file_::_download %n files_" : ["shkarko %n kartelë","shkarko %n kartela"], "The update is in progress, leaving this page might interrupt the process in some environments." : "Përditësimi është në zhvillim, largimi nga faqja mund të ndërpres procesin në disa mjedise.", "Update to {version}" : "Përditëso në {version}", @@ -178,7 +203,8 @@ "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Përditësimi qe i pasuksesshëm. Për më tepër të dhëna <a href=\"{url}\">shihni postimin te forumi ynë</a> lidhur me këtë çështje.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Përditësimi ishte i pasuksesshëm. Ju lutem raportoni këtë problem në <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>.", "Continue to Nextcloud" : "Vazhdoni tek Nextcloud", - "Searching other places" : "Po kërkohet në vende të tjera", + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Përditësimi ishte i suksesshëm. Ju ridrejtojmë në Nextcloud për %n sekonda.","Përditësimi ishte i suksesshëm. Ju ridrejtojmë në Nextcloud për %n sekonda."], + "Searching other places" : "Duke kërkuar në vende të tjera", "No search results in other folders for {tag}{filter}{endtag}" : "Jo rezultate nga kërkimi në dosjet e tjera për '{etiketim}{filtrim}{përfundoetiketimin}'", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} përfundim kërkimi në një tjetër dosje","{count} përfundime kërkimi në dosje të tjera"], "Personal" : "Personale", @@ -272,6 +298,7 @@ "Please use the command line updater because you have a big instance with more than 50 users." : "Ju lutemi,përdorni përditësuesin e rreshtit të urdhrave, sepse keni një instalim me mbi 50 përdorues", "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Për ndihmë, shihni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentimin</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Në qofte se unë vazhdoj të kryej përditësimin nëpëmjet web UI ka rrezik, që kërkesa mund të ndaloj dhe shkakton humbje të të dhënave, por unë di si ti rikthej të dhënat ne rast dështimi.", + "Upgrade via web on my own risk" : "Përditëso me anë të internetit në rrezikun tim", "This %s instance is currently in maintenance mode, which may take a while." : "Kjo instancë %s hëpërhë gjendet nën mënyrën mirëmbajtje, çka mund të zgjasë ca.", "This page will refresh itself when the %s instance is available again." : "Kjo faqe do të rifreskohet vetiu, sapo instanca %s të jetë sërish gati.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Nëse ky mesazh shfaqet vazhdimisht ose u shfaq papritmas, lidhuni me përgjegjësin e sistemit.", @@ -292,7 +319,7 @@ "Share with users or remote users..." : "Shpërnda me përdoruesit ose me përdoruesit në distancë...", "Share with users, remote users or by mail..." : "Shpërnda me përdoruesit, përdoruesit në distancë ose nga posta elektronike...", "Share with users or groups..." : "Shpërnda me përdoruesit ose grupet...", - "Share with users, groups or by mail..." : "Shpërnda me përdoruesit, grupet ose nga posta elektronike...", + "Share with users, groups or by mail..." : "Nda me përdoruesit, grupet ose nga posta elektronike...", "Share with users, groups or remote users..." : "Shpërnda me përdoruesit, grupet ose përdoruesit në distancë...", "Share with users, groups, remote users or by mail..." : "Shpërnda me përdoruesit, grupet, përdoruesit në distancë ose nga posta elektronike...", "Share with users..." : "Shpërnda me përdoruesit...", diff --git a/core/templates/403.php b/core/templates/403.php index 7d07c72c873..e053fad764a 100644 --- a/core/templates/403.php +++ b/core/templates/403.php @@ -1,10 +1,10 @@ <?php // @codeCoverageIgnoreStart -if(!isset($_)) {//also provide standalone error page +if(!isset($_)) {//standalone page is not supported anymore - redirect to / require_once '../../lib/base.php'; - - $tmpl = new OC_Template( '', '403', 'guest' ); - $tmpl->printPage(); + + $urlGenerator = \OC::$server->getURLGenerator(); + header('Location: ' . $urlGenerator->getAbsoluteURL('/')); exit; } // @codeCoverageIgnoreEnd diff --git a/core/templates/404.php b/core/templates/404.php index cc45cbeaf5d..0f7318e937a 100644 --- a/core/templates/404.php +++ b/core/templates/404.php @@ -3,11 +3,11 @@ /** @var $l \OCP\IL10N */ /** @var $theme OCP\Defaults */ // @codeCoverageIgnoreStart -if(!isset($_)) {//also provide standalone error page +if(!isset($_)) {//standalone page is not supported anymore - redirect to / require_once '../../lib/base.php'; - - $tmpl = new OC_Template( '', '404', 'guest' ); - $tmpl->printPage(); + + $urlGenerator = \OC::$server->getURLGenerator(); + header('Location: ' . $urlGenerator->getAbsoluteURL('/')); exit; } // @codeCoverageIgnoreEnd diff --git a/lib/l10n/ast.js b/lib/l10n/ast.js index ae1f84e3edd..806f011b473 100644 --- a/lib/l10n/ast.js +++ b/lib/l10n/ast.js @@ -90,6 +90,8 @@ OC.L10N.register( "Sharing %s failed, because the sharing backend for %s could not find its source" : "Compartir %s falló porque'l motor compartíu pa %s podría nun atopar el so orixe", "Sharing %s failed, because the file could not be found in the file cache" : "Compartir %s falló, yá que'l ficheru nun pudo atopase na caché de ficheru", "Expiration date is in the past" : "La data de caducidá ta nel pasáu.", + "%s shared »%s« with you" : "%s compartió »%s« contigo", + "%s via %s" : "%s via %s", "Could not find category \"%s\"" : "Nun pudo alcontrase la estaya \"%s.\"", "Sunday" : "Domingu", "Monday" : "Llunes", @@ -168,8 +170,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Nun esiste'l módulu con id: %s . Por favor, activalu na configuración d'aplicaciones o contauta col alministrador.", "Server settings" : "Axustes del sirvidor", "You need to enter either an existing account or the administrator." : "Tienes d'inxertar una cuenta esistente o la del alministrador.", - "%s shared »%s« with you" : "%s compartió »%s« contigo", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Nun se pueden aumentar los permisos de %s", "Files can't be shared with delete permissions" : "Los ficheros nun pueden compartise con permisos desaniciaos", "Files can't be shared with create permissions" : "Los ficheros nun pueden compartise con crear permisos", diff --git a/lib/l10n/ast.json b/lib/l10n/ast.json index 13fcccab920..dee5d90f45d 100644 --- a/lib/l10n/ast.json +++ b/lib/l10n/ast.json @@ -88,6 +88,8 @@ "Sharing %s failed, because the sharing backend for %s could not find its source" : "Compartir %s falló porque'l motor compartíu pa %s podría nun atopar el so orixe", "Sharing %s failed, because the file could not be found in the file cache" : "Compartir %s falló, yá que'l ficheru nun pudo atopase na caché de ficheru", "Expiration date is in the past" : "La data de caducidá ta nel pasáu.", + "%s shared »%s« with you" : "%s compartió »%s« contigo", + "%s via %s" : "%s via %s", "Could not find category \"%s\"" : "Nun pudo alcontrase la estaya \"%s.\"", "Sunday" : "Domingu", "Monday" : "Llunes", @@ -166,8 +168,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Nun esiste'l módulu con id: %s . Por favor, activalu na configuración d'aplicaciones o contauta col alministrador.", "Server settings" : "Axustes del sirvidor", "You need to enter either an existing account or the administrator." : "Tienes d'inxertar una cuenta esistente o la del alministrador.", - "%s shared »%s« with you" : "%s compartió »%s« contigo", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Nun se pueden aumentar los permisos de %s", "Files can't be shared with delete permissions" : "Los ficheros nun pueden compartise con permisos desaniciaos", "Files can't be shared with create permissions" : "Los ficheros nun pueden compartise con crear permisos", diff --git a/lib/l10n/cs.js b/lib/l10n/cs.js index 7a09bd8bdbd..ac5dd783f57 100644 --- a/lib/l10n/cs.js +++ b/lib/l10n/cs.js @@ -12,6 +12,7 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s a %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s a %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s a %5$s", + "Education Edition" : "Edice pro výuku", "Enterprise bundle" : "Enterprise balíček", "Groupware bundle" : "Balíček groupware", "Social sharing bundle" : "Balíček sociálního sdílení", @@ -120,6 +121,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Soubory nelze sdílet s oprávněními k vytváření", "Expiration date is in the past" : "Datum vypršení je v minulosti", "Can’t set expiration date more than %s days in the future" : "Nelze nastavit datum vypršení platnosti více než %s dní v budoucnu", + "%s shared »%s« with you" : "%s s vámi sdílí »%s«", + "%s via %s" : "%s pomocí %s", "The requested share does not exist anymore" : "Požadované sdílení již neexistuje", "Could not find category \"%s\"" : "Nelze nalézt kategorii \"%s\"", "Sunday" : "Neděle", @@ -224,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s id: %s neexistuje. Povolte ho prosím ve svých nastaveních aplikací nebo kontaktujte svého administrátora.", "Server settings" : "Nastavení serveru", "You need to enter either an existing account or the administrator." : "Musíte zadat existující účet či správce.", - "%s shared »%s« with you" : "%s s vámi sdílí »%s«", - "%s via %s" : "%s pomocí %s", "Cannot increase permissions of %s" : "Nelze navýšit oprávnění u %s", "Files can't be shared with delete permissions" : "Soubory nelze sdílet s oprávněními ke smazání", "Files can't be shared with create permissions" : "Soubory nelze sdílet s vytvořenými oprávněními", diff --git a/lib/l10n/cs.json b/lib/l10n/cs.json index bd5275d2911..a94a24ce006 100644 --- a/lib/l10n/cs.json +++ b/lib/l10n/cs.json @@ -10,6 +10,7 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s a %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s a %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s a %5$s", + "Education Edition" : "Edice pro výuku", "Enterprise bundle" : "Enterprise balíček", "Groupware bundle" : "Balíček groupware", "Social sharing bundle" : "Balíček sociálního sdílení", @@ -118,6 +119,8 @@ "Files can’t be shared with create permissions" : "Soubory nelze sdílet s oprávněními k vytváření", "Expiration date is in the past" : "Datum vypršení je v minulosti", "Can’t set expiration date more than %s days in the future" : "Nelze nastavit datum vypršení platnosti více než %s dní v budoucnu", + "%s shared »%s« with you" : "%s s vámi sdílí »%s«", + "%s via %s" : "%s pomocí %s", "The requested share does not exist anymore" : "Požadované sdílení již neexistuje", "Could not find category \"%s\"" : "Nelze nalézt kategorii \"%s\"", "Sunday" : "Neděle", @@ -222,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s id: %s neexistuje. Povolte ho prosím ve svých nastaveních aplikací nebo kontaktujte svého administrátora.", "Server settings" : "Nastavení serveru", "You need to enter either an existing account or the administrator." : "Musíte zadat existující účet či správce.", - "%s shared »%s« with you" : "%s s vámi sdílí »%s«", - "%s via %s" : "%s pomocí %s", "Cannot increase permissions of %s" : "Nelze navýšit oprávnění u %s", "Files can't be shared with delete permissions" : "Soubory nelze sdílet s oprávněními ke smazání", "Files can't be shared with create permissions" : "Soubory nelze sdílet s vytvořenými oprávněními", diff --git a/lib/l10n/de.js b/lib/l10n/de.js index 5cb71095a52..7c02be0ee32 100644 --- a/lib/l10n/de.js +++ b/lib/l10n/de.js @@ -121,6 +121,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden", "Expiration date is in the past" : "Das Ablaufdatum liegt in der Vergangenheit.", "Can’t set expiration date more than %s days in the future" : "Das Ablaufdatum kann nicht mehr als %s Tage in die Zukunft liegen", + "%s shared »%s« with you" : "%s hat „%s“ mit Dir geteilt", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr", "Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden", "Sunday" : "Sonntag", @@ -225,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Das Modul mit der ID: %s existiert nicht. Bitte die Aktivierung in Deinen App-Einstellungen vornehmen oder Deine Administrator kontaktieren.", "Server settings" : "Servereinstellungen", "You need to enter either an existing account or the administrator." : "Du musst entweder ein existierendes Benutzerkonto oder das Administratorenkonto angeben.", - "%s shared »%s« with you" : "%s hat „%s“ mit Dir geteilt", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Kann die Berechtigungen von %s nicht erhöhen", "Files can't be shared with delete permissions" : "Dateien mit Lösch-Berechtigungen können nicht geteilt werden", "Files can't be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden", diff --git a/lib/l10n/de.json b/lib/l10n/de.json index cbe4d07ae17..476a5d57c81 100644 --- a/lib/l10n/de.json +++ b/lib/l10n/de.json @@ -119,6 +119,8 @@ "Files can’t be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden", "Expiration date is in the past" : "Das Ablaufdatum liegt in der Vergangenheit.", "Can’t set expiration date more than %s days in the future" : "Das Ablaufdatum kann nicht mehr als %s Tage in die Zukunft liegen", + "%s shared »%s« with you" : "%s hat „%s“ mit Dir geteilt", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr", "Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden", "Sunday" : "Sonntag", @@ -223,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Das Modul mit der ID: %s existiert nicht. Bitte die Aktivierung in Deinen App-Einstellungen vornehmen oder Deine Administrator kontaktieren.", "Server settings" : "Servereinstellungen", "You need to enter either an existing account or the administrator." : "Du musst entweder ein existierendes Benutzerkonto oder das Administratorenkonto angeben.", - "%s shared »%s« with you" : "%s hat „%s“ mit Dir geteilt", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Kann die Berechtigungen von %s nicht erhöhen", "Files can't be shared with delete permissions" : "Dateien mit Lösch-Berechtigungen können nicht geteilt werden", "Files can't be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden", diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js index 2e5708c7972..035377346ac 100644 --- a/lib/l10n/de_DE.js +++ b/lib/l10n/de_DE.js @@ -121,6 +121,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden", "Expiration date is in the past" : "Das Ablaufdatum liegt in der Vergangenheit.", "Can’t set expiration date more than %s days in the future" : "Das Ablaufdatum kann nicht mehr als %s Tage in die Zukunft liegen", + "%s shared »%s« with you" : "%s hat „%s“ mit Ihnen geteilt", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr", "Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden", "Sunday" : "Sonntag", @@ -225,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Das Modul mit der ID: %s existiert nicht. Bitte aktivieren Sie es in Ihren App-Einstellungen oder kontaktieren Sie Ihren Administrator.", "Server settings" : "Servereinstellungen", "You need to enter either an existing account or the administrator." : "Sie müssen entweder ein existierendes Benutzerkonto oder das Administratorenkonto angeben.", - "%s shared »%s« with you" : "%s hat „%s“ mit Ihnen geteilt", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Kann die Berechtigungen von %s nicht erhöhen", "Files can't be shared with delete permissions" : "Dateien mit Lösch-Berechtigungen können nicht geteilt werden", "Files can't be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden", diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json index ff3cd62c04d..789d48eb2ba 100644 --- a/lib/l10n/de_DE.json +++ b/lib/l10n/de_DE.json @@ -119,6 +119,8 @@ "Files can’t be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden", "Expiration date is in the past" : "Das Ablaufdatum liegt in der Vergangenheit.", "Can’t set expiration date more than %s days in the future" : "Das Ablaufdatum kann nicht mehr als %s Tage in die Zukunft liegen", + "%s shared »%s« with you" : "%s hat „%s“ mit Ihnen geteilt", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr", "Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden", "Sunday" : "Sonntag", @@ -223,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Das Modul mit der ID: %s existiert nicht. Bitte aktivieren Sie es in Ihren App-Einstellungen oder kontaktieren Sie Ihren Administrator.", "Server settings" : "Servereinstellungen", "You need to enter either an existing account or the administrator." : "Sie müssen entweder ein existierendes Benutzerkonto oder das Administratorenkonto angeben.", - "%s shared »%s« with you" : "%s hat „%s“ mit Ihnen geteilt", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Kann die Berechtigungen von %s nicht erhöhen", "Files can't be shared with delete permissions" : "Dateien mit Lösch-Berechtigungen können nicht geteilt werden", "Files can't be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden", diff --git a/lib/l10n/el.js b/lib/l10n/el.js index 2cb0bdebb64..38d6f312be7 100644 --- a/lib/l10n/el.js +++ b/lib/l10n/el.js @@ -12,6 +12,7 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s και %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s και %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s και %5$s", + "Education Edition" : "Εκπαιδευτική Έκδοση", "Enterprise bundle" : "Πακέτο επιχειρήσεων", "Groupware bundle" : "Ομάδα δέσμης", "Social sharing bundle" : "Πακέτο κοινωνικού διαμοιρασμού", @@ -62,7 +63,9 @@ OC.L10N.register( "Additional settings" : "Επιπρόσθετες ρυθμίσεις", "Tips & tricks" : "Συμβουλές & κόλπα", "Personal info" : "Προσωπικές πληροφορίες", + "Sync clients" : "Εφαρμογές συγχρονισμού", "Unlimited" : "Απεριόριστα", + "__language_name__" : "__language_name__", "Verifying" : "Γίνεται επαλήθευση", "Verifying …" : "Γίνεται επαλήθευση ...", "Verify" : "Επαλήθευση", @@ -97,6 +100,7 @@ OC.L10N.register( "Sharing %s failed, because %s is not a member of the group %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s δεν είναι μέλος της ομάδας %s", "You need to provide a password to create a public link, only protected links are allowed" : "Πρέπει να εισάγετε έναν κωδικό για να δημιουργήσετε έναν δημόσιο σύνδεσμο. Μόνο προστατευμένοι σύνδεσμοι επιτρέπονται", "Sharing %s failed, because sharing with links is not allowed" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν επιτρέπεται ο διαμοιρασμός με συνδέσμους", + "Not allowed to create a federated share with the same user" : "Δεν επιτρέπεται η δημιουργία federated διαμοιρασμού με τον ίδιο χρήστη", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Αποτυχία διαμοιρασμού %s, δεν βρέθηκε το %s, μπορεί ο διακομιστής να είναι προσωρινά απροσπέλαστος.", "Share type %s is not valid for %s" : "Ο τύπος διαμοιρασμού %s δεν είναι έγκυρος για το %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Ο ορισμός δικαιωμάτων για το %s απέτυχε, γιατί τα δικαιώματα υπερτερούν αυτά που είναι ορισμένα για το %s", @@ -117,6 +121,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Δεν μπορεί να γίνει διαμοιρασμός αρχείων με δικαιώματα δημιουργίας", "Expiration date is in the past" : "Η ημερομηνία λήξης είναι στο παρελθόν", "Can’t set expiration date more than %s days in the future" : "Δεν είναι δυνατό να τεθεί η ημερομηνία λήξης σε περισσότερες από %s ημέρες στο μέλλον", + "%s shared »%s« with you" : "Ο %s διαμοιράστηκε μαζί σας το »%s«", + "%s via %s" : "%s μέσω %s", "The requested share does not exist anymore" : "Το διαμοιρασμένο που ζητήθηκε δεν υπάρχει πλέον", "Could not find category \"%s\"" : "Αδυναμία εύρεσης κατηγορίας \"%s\"", "Sunday" : "Κυριακή", @@ -221,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Το άρθρωμα με id: %s δεν υπάρχει. Παρακαλώ ενεργοποιήστε το από τις ρυθμίσεις των εφαρμογών ή επικοινωνήστε με τον διαχειριστή.", "Server settings" : "Ρυθμίσεις διακομιστή", "You need to enter either an existing account or the administrator." : "Χρειάζεται να εισάγετε είτε έναν υπάρχον λογαριασμό ή του διαχειριστή.", - "%s shared »%s« with you" : "Ο %s διαμοιράστηκε μαζί σας το »%s«", - "%s via %s" : "%s μέσω %s", "Cannot increase permissions of %s" : "Αδυναμία αύξησης των δικαιωμάτων του %s", "Files can't be shared with delete permissions" : "Δεν μπορεί να γίνει διαμοιρασμός αρχείων με δικαιώματα διαγραφής", "Files can't be shared with create permissions" : "Δεν μπορεί να γίνει διαμοιρασμός αρχείων με δικαιώματα δημιουργίας", diff --git a/lib/l10n/el.json b/lib/l10n/el.json index c569b9b6e89..30e95a12a18 100644 --- a/lib/l10n/el.json +++ b/lib/l10n/el.json @@ -10,6 +10,7 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s και %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s και %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s και %5$s", + "Education Edition" : "Εκπαιδευτική Έκδοση", "Enterprise bundle" : "Πακέτο επιχειρήσεων", "Groupware bundle" : "Ομάδα δέσμης", "Social sharing bundle" : "Πακέτο κοινωνικού διαμοιρασμού", @@ -60,7 +61,9 @@ "Additional settings" : "Επιπρόσθετες ρυθμίσεις", "Tips & tricks" : "Συμβουλές & κόλπα", "Personal info" : "Προσωπικές πληροφορίες", + "Sync clients" : "Εφαρμογές συγχρονισμού", "Unlimited" : "Απεριόριστα", + "__language_name__" : "__language_name__", "Verifying" : "Γίνεται επαλήθευση", "Verifying …" : "Γίνεται επαλήθευση ...", "Verify" : "Επαλήθευση", @@ -95,6 +98,7 @@ "Sharing %s failed, because %s is not a member of the group %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s δεν είναι μέλος της ομάδας %s", "You need to provide a password to create a public link, only protected links are allowed" : "Πρέπει να εισάγετε έναν κωδικό για να δημιουργήσετε έναν δημόσιο σύνδεσμο. Μόνο προστατευμένοι σύνδεσμοι επιτρέπονται", "Sharing %s failed, because sharing with links is not allowed" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν επιτρέπεται ο διαμοιρασμός με συνδέσμους", + "Not allowed to create a federated share with the same user" : "Δεν επιτρέπεται η δημιουργία federated διαμοιρασμού με τον ίδιο χρήστη", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Αποτυχία διαμοιρασμού %s, δεν βρέθηκε το %s, μπορεί ο διακομιστής να είναι προσωρινά απροσπέλαστος.", "Share type %s is not valid for %s" : "Ο τύπος διαμοιρασμού %s δεν είναι έγκυρος για το %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Ο ορισμός δικαιωμάτων για το %s απέτυχε, γιατί τα δικαιώματα υπερτερούν αυτά που είναι ορισμένα για το %s", @@ -115,6 +119,8 @@ "Files can’t be shared with create permissions" : "Δεν μπορεί να γίνει διαμοιρασμός αρχείων με δικαιώματα δημιουργίας", "Expiration date is in the past" : "Η ημερομηνία λήξης είναι στο παρελθόν", "Can’t set expiration date more than %s days in the future" : "Δεν είναι δυνατό να τεθεί η ημερομηνία λήξης σε περισσότερες από %s ημέρες στο μέλλον", + "%s shared »%s« with you" : "Ο %s διαμοιράστηκε μαζί σας το »%s«", + "%s via %s" : "%s μέσω %s", "The requested share does not exist anymore" : "Το διαμοιρασμένο που ζητήθηκε δεν υπάρχει πλέον", "Could not find category \"%s\"" : "Αδυναμία εύρεσης κατηγορίας \"%s\"", "Sunday" : "Κυριακή", @@ -219,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Το άρθρωμα με id: %s δεν υπάρχει. Παρακαλώ ενεργοποιήστε το από τις ρυθμίσεις των εφαρμογών ή επικοινωνήστε με τον διαχειριστή.", "Server settings" : "Ρυθμίσεις διακομιστή", "You need to enter either an existing account or the administrator." : "Χρειάζεται να εισάγετε είτε έναν υπάρχον λογαριασμό ή του διαχειριστή.", - "%s shared »%s« with you" : "Ο %s διαμοιράστηκε μαζί σας το »%s«", - "%s via %s" : "%s μέσω %s", "Cannot increase permissions of %s" : "Αδυναμία αύξησης των δικαιωμάτων του %s", "Files can't be shared with delete permissions" : "Δεν μπορεί να γίνει διαμοιρασμός αρχείων με δικαιώματα διαγραφής", "Files can't be shared with create permissions" : "Δεν μπορεί να γίνει διαμοιρασμός αρχείων με δικαιώματα δημιουργίας", diff --git a/lib/l10n/en_GB.js b/lib/l10n/en_GB.js index 525dcaf4b8e..650fd184acc 100644 --- a/lib/l10n/en_GB.js +++ b/lib/l10n/en_GB.js @@ -12,6 +12,7 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s and %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s and %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s and %5$s", + "Education Edition" : "Education Edition", "Enterprise bundle" : "Enterprise bundle", "Groupware bundle" : "Groupware bundle", "Social sharing bundle" : "Social sharing bundle", @@ -120,6 +121,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Files can’t be shared with create permissions", "Expiration date is in the past" : "Expiration date is in the past", "Can’t set expiration date more than %s days in the future" : "Can’t set expiration date more than %s days in the future", + "%s shared »%s« with you" : "%s shared \"%s\" with you", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "The requested share does not exist anymore", "Could not find category \"%s\"" : "Could not find category \"%s\"", "Sunday" : "Sunday", @@ -224,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator.", "Server settings" : "Server settings", "You need to enter either an existing account or the administrator." : "You need to enter either an existing account or the administrator.", - "%s shared »%s« with you" : "%s shared \"%s\" with you", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Cannot increase permissions of %s", "Files can't be shared with delete permissions" : "Files can't be shared with delete permissions", "Files can't be shared with create permissions" : "Files can't be shared with create permissions", diff --git a/lib/l10n/en_GB.json b/lib/l10n/en_GB.json index 6ee6bde4a22..8ad0399e6b1 100644 --- a/lib/l10n/en_GB.json +++ b/lib/l10n/en_GB.json @@ -10,6 +10,7 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s and %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s and %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s and %5$s", + "Education Edition" : "Education Edition", "Enterprise bundle" : "Enterprise bundle", "Groupware bundle" : "Groupware bundle", "Social sharing bundle" : "Social sharing bundle", @@ -118,6 +119,8 @@ "Files can’t be shared with create permissions" : "Files can’t be shared with create permissions", "Expiration date is in the past" : "Expiration date is in the past", "Can’t set expiration date more than %s days in the future" : "Can’t set expiration date more than %s days in the future", + "%s shared »%s« with you" : "%s shared \"%s\" with you", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "The requested share does not exist anymore", "Could not find category \"%s\"" : "Could not find category \"%s\"", "Sunday" : "Sunday", @@ -222,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator.", "Server settings" : "Server settings", "You need to enter either an existing account or the administrator." : "You need to enter either an existing account or the administrator.", - "%s shared »%s« with you" : "%s shared \"%s\" with you", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Cannot increase permissions of %s", "Files can't be shared with delete permissions" : "Files can't be shared with delete permissions", "Files can't be shared with create permissions" : "Files can't be shared with create permissions", diff --git a/lib/l10n/es.js b/lib/l10n/es.js index bd4fbae9ebd..fca51d17089 100644 --- a/lib/l10n/es.js +++ b/lib/l10n/es.js @@ -12,6 +12,7 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s y %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s, y %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s y %5$s", + "Education Edition" : "Edición Educación", "Enterprise bundle" : "Conjunto para empresas", "Groupware bundle" : "Conjunto de groupware", "Social sharing bundle" : "Conjunto para compartir en redes", @@ -120,6 +121,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Los archivos no se pueden compartir con permisos de creación", "Expiration date is in the past" : "Ha pasado la fecha de caducidad", "Can’t set expiration date more than %s days in the future" : "No se puede establecer la fecha de expiración a más de %s días en el futuro", + "%s shared »%s« with you" : "%s ha compartido »%s« contigo", + "%s via %s" : "%s vía %s", "The requested share does not exist anymore" : "El recurso compartido solicitado ya no existe", "Could not find category \"%s\"" : "No puede encontrar la categoría \"%s\"", "Sunday" : "Domingo", @@ -224,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Módulo con id: %s no existe. Por favor habilítelo en los ajustes de sus aplicaciones o contáctese con su administrador.", "Server settings" : "Configuración del servidor", "You need to enter either an existing account or the administrator." : "Tiene que ingresar una cuenta existente o la del administrador.", - "%s shared »%s« with you" : "%s ha compartido »%s« contigo", - "%s via %s" : "%s vía %s", "Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s", "Files can't be shared with delete permissions" : "Los archivos no pueden ser compartidos con permisos de borrado", "Files can't be shared with create permissions" : "Los arhivos no pueden ser compartidos con permisos de creación", diff --git a/lib/l10n/es.json b/lib/l10n/es.json index cff0f78bd8c..0de0963431c 100644 --- a/lib/l10n/es.json +++ b/lib/l10n/es.json @@ -10,6 +10,7 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s y %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s, y %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s y %5$s", + "Education Edition" : "Edición Educación", "Enterprise bundle" : "Conjunto para empresas", "Groupware bundle" : "Conjunto de groupware", "Social sharing bundle" : "Conjunto para compartir en redes", @@ -118,6 +119,8 @@ "Files can’t be shared with create permissions" : "Los archivos no se pueden compartir con permisos de creación", "Expiration date is in the past" : "Ha pasado la fecha de caducidad", "Can’t set expiration date more than %s days in the future" : "No se puede establecer la fecha de expiración a más de %s días en el futuro", + "%s shared »%s« with you" : "%s ha compartido »%s« contigo", + "%s via %s" : "%s vía %s", "The requested share does not exist anymore" : "El recurso compartido solicitado ya no existe", "Could not find category \"%s\"" : "No puede encontrar la categoría \"%s\"", "Sunday" : "Domingo", @@ -222,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Módulo con id: %s no existe. Por favor habilítelo en los ajustes de sus aplicaciones o contáctese con su administrador.", "Server settings" : "Configuración del servidor", "You need to enter either an existing account or the administrator." : "Tiene que ingresar una cuenta existente o la del administrador.", - "%s shared »%s« with you" : "%s ha compartido »%s« contigo", - "%s via %s" : "%s vía %s", "Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s", "Files can't be shared with delete permissions" : "Los archivos no pueden ser compartidos con permisos de borrado", "Files can't be shared with create permissions" : "Los arhivos no pueden ser compartidos con permisos de creación", diff --git a/lib/l10n/es_AR.js b/lib/l10n/es_AR.js index 5c1c692a430..df848e72134 100644 --- a/lib/l10n/es_AR.js +++ b/lib/l10n/es_AR.js @@ -108,6 +108,8 @@ OC.L10N.register( "Sharing %s failed, because the sharing backend for %s could not find its source" : "Se presentó una falla al compartir %s porque el backend que comparte %s no pudo encontrar su origen", "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos", "Expiration date is in the past" : "La fecha de expiración ya ha pasado", + "%s shared »%s« with you" : "%s ha compartido »%s« con usted", + "%s via %s" : "%s por %s", "Could not find category \"%s\"" : "No fue posible encontrar la categoria \"%s\"", "Sunday" : "Domingo", "Monday" : "Lunes", @@ -210,8 +212,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con id: %s no existe. Favor de habilitarlo en sus configuraciones de aplicación o contacte a su administrador. ", "Server settings" : "Configuraciones del servidor", "You need to enter either an existing account or the administrator." : "Necesita ingresar una cuenta ya sea existente o la del administrador.", - "%s shared »%s« with you" : "%s ha compartido »%s« con usted", - "%s via %s" : "%s por %s", "Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s", "Files can't be shared with delete permissions" : "No es posible compartir archivos con permisos de borrado", "Files can't be shared with create permissions" : "No es posible compartir archivos con permisos de creación", diff --git a/lib/l10n/es_AR.json b/lib/l10n/es_AR.json index c9738329caf..28b998e45db 100644 --- a/lib/l10n/es_AR.json +++ b/lib/l10n/es_AR.json @@ -106,6 +106,8 @@ "Sharing %s failed, because the sharing backend for %s could not find its source" : "Se presentó una falla al compartir %s porque el backend que comparte %s no pudo encontrar su origen", "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos", "Expiration date is in the past" : "La fecha de expiración ya ha pasado", + "%s shared »%s« with you" : "%s ha compartido »%s« con usted", + "%s via %s" : "%s por %s", "Could not find category \"%s\"" : "No fue posible encontrar la categoria \"%s\"", "Sunday" : "Domingo", "Monday" : "Lunes", @@ -208,8 +210,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con id: %s no existe. Favor de habilitarlo en sus configuraciones de aplicación o contacte a su administrador. ", "Server settings" : "Configuraciones del servidor", "You need to enter either an existing account or the administrator." : "Necesita ingresar una cuenta ya sea existente o la del administrador.", - "%s shared »%s« with you" : "%s ha compartido »%s« con usted", - "%s via %s" : "%s por %s", "Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s", "Files can't be shared with delete permissions" : "No es posible compartir archivos con permisos de borrado", "Files can't be shared with create permissions" : "No es posible compartir archivos con permisos de creación", diff --git a/lib/l10n/es_MX.js b/lib/l10n/es_MX.js index b55c5d349fa..2a7e3ad93a3 100644 --- a/lib/l10n/es_MX.js +++ b/lib/l10n/es_MX.js @@ -12,6 +12,7 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s y %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s y %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s y %5$s", + "Education Edition" : "Edición Educativa", "Enterprise bundle" : "Paquete empresarial", "Groupware bundle" : "Paquete de Groupware", "Social sharing bundle" : "Paquete para compartir en redes sociales", @@ -120,6 +121,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Los archivos no se pueden compartir con permisos de creación", "Expiration date is in the past" : "La fecha de expiración se encuentra en el pasado", "Can’t set expiration date more than %s days in the future" : "No es posible establecer la fecha de expiración más allá de %s días en el futuro", + "%s shared »%s« with you" : "%s ha compartido »%s« contigo", + "%s via %s" : "%s por %s", "The requested share does not exist anymore" : "El recurso compartido solicitado ya no existe", "Could not find category \"%s\"" : "No fue posible encontrar la categoria \"%s\"", "Sunday" : "Domingo", @@ -224,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con id: %s no existe. Por favor habilítalo en tus configuraciones de aplicación o contacta a tu administrador. ", "Server settings" : "Configuraciones del servidor", "You need to enter either an existing account or the administrator." : "Necesitas ingresar una cuenta ya existente o la del administrador.", - "%s shared »%s« with you" : "%s ha compartido »%s« contigo", - "%s via %s" : "%s por %s", "Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s", "Files can't be shared with delete permissions" : "No es posible compartir archivos con permisos de borrado", "Files can't be shared with create permissions" : "No es posible compartir archivos con permisos de creación", diff --git a/lib/l10n/es_MX.json b/lib/l10n/es_MX.json index 889a51bda26..be7cb19b12b 100644 --- a/lib/l10n/es_MX.json +++ b/lib/l10n/es_MX.json @@ -10,6 +10,7 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s y %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s y %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s y %5$s", + "Education Edition" : "Edición Educativa", "Enterprise bundle" : "Paquete empresarial", "Groupware bundle" : "Paquete de Groupware", "Social sharing bundle" : "Paquete para compartir en redes sociales", @@ -118,6 +119,8 @@ "Files can’t be shared with create permissions" : "Los archivos no se pueden compartir con permisos de creación", "Expiration date is in the past" : "La fecha de expiración se encuentra en el pasado", "Can’t set expiration date more than %s days in the future" : "No es posible establecer la fecha de expiración más allá de %s días en el futuro", + "%s shared »%s« with you" : "%s ha compartido »%s« contigo", + "%s via %s" : "%s por %s", "The requested share does not exist anymore" : "El recurso compartido solicitado ya no existe", "Could not find category \"%s\"" : "No fue posible encontrar la categoria \"%s\"", "Sunday" : "Domingo", @@ -222,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con id: %s no existe. Por favor habilítalo en tus configuraciones de aplicación o contacta a tu administrador. ", "Server settings" : "Configuraciones del servidor", "You need to enter either an existing account or the administrator." : "Necesitas ingresar una cuenta ya existente o la del administrador.", - "%s shared »%s« with you" : "%s ha compartido »%s« contigo", - "%s via %s" : "%s por %s", "Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s", "Files can't be shared with delete permissions" : "No es posible compartir archivos con permisos de borrado", "Files can't be shared with create permissions" : "No es posible compartir archivos con permisos de creación", diff --git a/lib/l10n/fi.js b/lib/l10n/fi.js index 1abbed103c6..aa660a6a981 100644 --- a/lib/l10n/fi.js +++ b/lib/l10n/fi.js @@ -102,6 +102,7 @@ OC.L10N.register( "Sharing %s failed, because resharing is not allowed" : "Kohteen %s jakaminen epäonnistui, koska jakaminen uudelleen ei ole sallittu", "Sharing %s failed, because the file could not be found in the file cache" : "Kohteen %s jakaminen epäonnistui, koska tiedostoa ei löytynyt tiedostovälimuistista", "Expiration date is in the past" : "Vanhenemispäivä on menneisyydessä", + "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi", "Could not find category \"%s\"" : "Luokkaa \"%s\" ei löytynyt", "Sunday" : "sunnuntai", "Monday" : "maanantai", @@ -198,7 +199,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduulia tunnisteella %s ei ole olemassa. Ota se käyttöön sovellusasetuksista tai ota yhteys ylläpitoon.", "Server settings" : "Palvelimen asetukset", "You need to enter either an existing account or the administrator." : "Sinun täytyy antaa joko olemassa oleva tili tai ylläpitäjä.", - "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi", "Cannot increase permissions of %s" : "Kohteen %s käyttöoikeuksien lisääminen ei onnistu", "Files can't be shared with delete permissions" : "Tiedostoja ei voi jakaa poistamisoikeusilla", "Files can't be shared with create permissions" : "Tiedostoja ei voi jakaa luomisoikeuksilla", diff --git a/lib/l10n/fi.json b/lib/l10n/fi.json index a3aaada740b..715c34d8279 100644 --- a/lib/l10n/fi.json +++ b/lib/l10n/fi.json @@ -100,6 +100,7 @@ "Sharing %s failed, because resharing is not allowed" : "Kohteen %s jakaminen epäonnistui, koska jakaminen uudelleen ei ole sallittu", "Sharing %s failed, because the file could not be found in the file cache" : "Kohteen %s jakaminen epäonnistui, koska tiedostoa ei löytynyt tiedostovälimuistista", "Expiration date is in the past" : "Vanhenemispäivä on menneisyydessä", + "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi", "Could not find category \"%s\"" : "Luokkaa \"%s\" ei löytynyt", "Sunday" : "sunnuntai", "Monday" : "maanantai", @@ -196,7 +197,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduulia tunnisteella %s ei ole olemassa. Ota se käyttöön sovellusasetuksista tai ota yhteys ylläpitoon.", "Server settings" : "Palvelimen asetukset", "You need to enter either an existing account or the administrator." : "Sinun täytyy antaa joko olemassa oleva tili tai ylläpitäjä.", - "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi", "Cannot increase permissions of %s" : "Kohteen %s käyttöoikeuksien lisääminen ei onnistu", "Files can't be shared with delete permissions" : "Tiedostoja ei voi jakaa poistamisoikeusilla", "Files can't be shared with create permissions" : "Tiedostoja ei voi jakaa luomisoikeuksilla", diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js index 1f1e14fc867..8e28836ce01 100644 --- a/lib/l10n/fr.js +++ b/lib/l10n/fr.js @@ -121,6 +121,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Les fichiers ne peuvent pas être partagés avec les autorisations de création", "Expiration date is in the past" : "La date d'expiration est dans le passé", "Can’t set expiration date more than %s days in the future" : "Impossible de définir la date d'expiration à plus de %s jours dans le futur", + "%s shared »%s« with you" : "%s a partagé «%s» avec vous", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "Le partage demandé n'existe plus", "Could not find category \"%s\"" : "Impossible de trouver la catégorie \"%s\"", "Sunday" : "Dimanche", @@ -225,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Le module avec l'id: %s n'existe pas. Merci de l'activer dans les paramètres d'applications ou de contacter votre administrateur.", "Server settings" : "Paramètres serveur", "You need to enter either an existing account or the administrator." : "Vous devez indiquer un compte existant ou celui de l'administrateur.", - "%s shared »%s« with you" : "%s a partagé «%s» avec vous", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Impossible d'augmenter les permissions de %s", "Files can't be shared with delete permissions" : "Les fichiers ne peuvent pas être partagés avec les autorisations de suppression", "Files can't be shared with create permissions" : "Les fichiers ne peuvent pas être partagés avec les autorisations de création", diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json index 9ce75adbe6e..f04c1f683e8 100644 --- a/lib/l10n/fr.json +++ b/lib/l10n/fr.json @@ -119,6 +119,8 @@ "Files can’t be shared with create permissions" : "Les fichiers ne peuvent pas être partagés avec les autorisations de création", "Expiration date is in the past" : "La date d'expiration est dans le passé", "Can’t set expiration date more than %s days in the future" : "Impossible de définir la date d'expiration à plus de %s jours dans le futur", + "%s shared »%s« with you" : "%s a partagé «%s» avec vous", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "Le partage demandé n'existe plus", "Could not find category \"%s\"" : "Impossible de trouver la catégorie \"%s\"", "Sunday" : "Dimanche", @@ -223,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Le module avec l'id: %s n'existe pas. Merci de l'activer dans les paramètres d'applications ou de contacter votre administrateur.", "Server settings" : "Paramètres serveur", "You need to enter either an existing account or the administrator." : "Vous devez indiquer un compte existant ou celui de l'administrateur.", - "%s shared »%s« with you" : "%s a partagé «%s» avec vous", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Impossible d'augmenter les permissions de %s", "Files can't be shared with delete permissions" : "Les fichiers ne peuvent pas être partagés avec les autorisations de suppression", "Files can't be shared with create permissions" : "Les fichiers ne peuvent pas être partagés avec les autorisations de création", diff --git a/lib/l10n/he.js b/lib/l10n/he.js index 8cbcee2ada2..932eedee7ea 100644 --- a/lib/l10n/he.js +++ b/lib/l10n/he.js @@ -82,6 +82,8 @@ OC.L10N.register( "Sharing %s failed, because the sharing backend for %s could not find its source" : "השיתוף %s נכשל, כיוון שבצד אחורי לשיתוף עבור %s לא ניתן היה לאתר את מקורו", "Sharing %s failed, because the file could not be found in the file cache" : "השיתוף %s נכשל, כייון שלא ניתן היה למצוא את הקובץ בזכרון המטמון", "Expiration date is in the past" : "תאריך תפוגה הנו בעבר", + "%s shared »%s« with you" : "%s שיתף/שיתפה איתך את »%s«", + "%s via %s" : "%s על בסיס %s", "Could not find category \"%s\"" : "לא ניתן למצוא את הקטגוריה „%s“", "Sunday" : "יום ראשון", "Monday" : "יום שני", @@ -173,8 +175,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "מודול עם זהות: %s אינו קיים. יש לאפשר את זה בהגדרות היישומים או ליצור קשר עם המנהל.", "Server settings" : "הגדרות שרת", "You need to enter either an existing account or the administrator." : "יש להכניס חשבון קיים או מנהל.", - "%s shared »%s« with you" : "%s שיתף/שיתפה איתך את »%s«", - "%s via %s" : "%s על בסיס %s", "Cannot increase permissions of %s" : "לא ניתן להגדיל את ההיתרים של %s", "Files can't be shared with delete permissions" : "קובץ לא ניתן לשיתוף בפעולת מחיקת הרשאות", "Files can't be shared with create permissions" : "קובץ לא ניתן לשיתוף בפעולת יצירת הרשאות", diff --git a/lib/l10n/he.json b/lib/l10n/he.json index 9e24f4eeea3..ef1176d789b 100644 --- a/lib/l10n/he.json +++ b/lib/l10n/he.json @@ -80,6 +80,8 @@ "Sharing %s failed, because the sharing backend for %s could not find its source" : "השיתוף %s נכשל, כיוון שבצד אחורי לשיתוף עבור %s לא ניתן היה לאתר את מקורו", "Sharing %s failed, because the file could not be found in the file cache" : "השיתוף %s נכשל, כייון שלא ניתן היה למצוא את הקובץ בזכרון המטמון", "Expiration date is in the past" : "תאריך תפוגה הנו בעבר", + "%s shared »%s« with you" : "%s שיתף/שיתפה איתך את »%s«", + "%s via %s" : "%s על בסיס %s", "Could not find category \"%s\"" : "לא ניתן למצוא את הקטגוריה „%s“", "Sunday" : "יום ראשון", "Monday" : "יום שני", @@ -171,8 +173,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "מודול עם זהות: %s אינו קיים. יש לאפשר את זה בהגדרות היישומים או ליצור קשר עם המנהל.", "Server settings" : "הגדרות שרת", "You need to enter either an existing account or the administrator." : "יש להכניס חשבון קיים או מנהל.", - "%s shared »%s« with you" : "%s שיתף/שיתפה איתך את »%s«", - "%s via %s" : "%s על בסיס %s", "Cannot increase permissions of %s" : "לא ניתן להגדיל את ההיתרים של %s", "Files can't be shared with delete permissions" : "קובץ לא ניתן לשיתוף בפעולת מחיקת הרשאות", "Files can't be shared with create permissions" : "קובץ לא ניתן לשיתוף בפעולת יצירת הרשאות", diff --git a/lib/l10n/hu.js b/lib/l10n/hu.js index 0a71f5f8bf1..f0d72cd3937 100644 --- a/lib/l10n/hu.js +++ b/lib/l10n/hu.js @@ -100,6 +100,8 @@ OC.L10N.register( "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s megosztása nem sikerült, mert %s megosztási alrendszere nem találja", "Sharing %s failed, because the file could not be found in the file cache" : "%s megosztása nem sikerült, mert a fájl nem található a gyorsítótárban", "Expiration date is in the past" : "A lejárati dátum már elmúlt", + "%s shared »%s« with you" : "%s megosztotta veled ezt: »%s«", + "%s via %s" : "%s - %s", "Could not find category \"%s\"" : "Ez a kategória nem található: \"%s\"", "Sunday" : "Vasárnap", "Monday" : "Hétfő", @@ -194,8 +196,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "A modul nem létezik, id: %s. Kérlek engedélyezd az alkalmazás beállításoknál vagy keresd az adminisztrátort.", "Server settings" : "Szerver beállítások", "You need to enter either an existing account or the administrator." : "Vagy egy létező felhasználó vagy az adminisztrátor bejelentkezési nevét kell megadnia", - "%s shared »%s« with you" : "%s megosztotta veled ezt: »%s«", - "%s via %s" : "%s - %s", "Cannot increase permissions of %s" : "%s jogosultságait nem lehet megemelni", "Files can't be shared with delete permissions" : "A fájlokat nem lehet megosztani a törlési jogosultságokkal", "Files can't be shared with create permissions" : "A fájlokat nem lehet megosztani a létrehozási jogosultságokkal", diff --git a/lib/l10n/hu.json b/lib/l10n/hu.json index 6c7b3085502..3039b4979d6 100644 --- a/lib/l10n/hu.json +++ b/lib/l10n/hu.json @@ -98,6 +98,8 @@ "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s megosztása nem sikerült, mert %s megosztási alrendszere nem találja", "Sharing %s failed, because the file could not be found in the file cache" : "%s megosztása nem sikerült, mert a fájl nem található a gyorsítótárban", "Expiration date is in the past" : "A lejárati dátum már elmúlt", + "%s shared »%s« with you" : "%s megosztotta veled ezt: »%s«", + "%s via %s" : "%s - %s", "Could not find category \"%s\"" : "Ez a kategória nem található: \"%s\"", "Sunday" : "Vasárnap", "Monday" : "Hétfő", @@ -192,8 +194,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "A modul nem létezik, id: %s. Kérlek engedélyezd az alkalmazás beállításoknál vagy keresd az adminisztrátort.", "Server settings" : "Szerver beállítások", "You need to enter either an existing account or the administrator." : "Vagy egy létező felhasználó vagy az adminisztrátor bejelentkezési nevét kell megadnia", - "%s shared »%s« with you" : "%s megosztotta veled ezt: »%s«", - "%s via %s" : "%s - %s", "Cannot increase permissions of %s" : "%s jogosultságait nem lehet megemelni", "Files can't be shared with delete permissions" : "A fájlokat nem lehet megosztani a törlési jogosultságokkal", "Files can't be shared with create permissions" : "A fájlokat nem lehet megosztani a létrehozási jogosultságokkal", diff --git a/lib/l10n/is.js b/lib/l10n/is.js index 8daa0140b19..e2c2abd773a 100644 --- a/lib/l10n/is.js +++ b/lib/l10n/is.js @@ -12,6 +12,7 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s og %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s og %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s og %5$s", + "Education Edition" : "Kennsluútgáfa", "Enterprise bundle" : "Fyrirtækjavöndull", "Groupware bundle" : "Hópvinnsluvöndull", "Social sharing bundle" : "Deilivöndull fyrir samfélagsmiðla", @@ -50,6 +51,7 @@ OC.L10N.register( "This is an automatically sent email, please do not reply." : "Þetta er sjálfvirk tölvupóstsending, ekki svara þessu.", "Help" : "Hjálp", "Apps" : "Forrit", + "Settings" : "Stillingar", "Log out" : "Skrá út", "Users" : "Notendur", "APCu" : "APCu", @@ -60,6 +62,13 @@ OC.L10N.register( "Encryption" : "Dulritun", "Additional settings" : "Valfrjálsar stillingar", "Tips & tricks" : "Ábendingar og góð ráð", + "Personal info" : "Persónulegar upplýsingar", + "Sync clients" : "Samstilla biðlara", + "Unlimited" : "Ótakmarkað", + "__language_name__" : "Íslenska", + "Verifying" : "Sannreyni", + "Verifying …" : "Sannreyni …", + "Verify" : "Sannreyna", "%s enter the database username and name." : "%s settu inn notandanafn og nafn á gagnagrunni.", "%s enter the database username." : "%s settu inn notandanafn í gagnagrunni.", "%s enter the database name." : "%s settu inn nafn á gagnagrunni.", @@ -107,7 +116,13 @@ OC.L10N.register( "Sharing %s failed, because resharing is not allowed" : "Deiling %s mistókst, því endurdeiling er ekki leyfð", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Deiling %s mistókst, því bakvinnslukerfið fyrir %s fann ekki upptök þess", "Sharing %s failed, because the file could not be found in the file cache" : "Deiling %s mistókst, því skráin fannst ekki í skyndiminni skráa", + "Can’t increase permissions of %s" : "Get ekki aukið aðgangsheimildir %s", + "Files can’t be shared with delete permissions" : "Ekki er hægt að deila skrá með eyða-heimildum", + "Files can’t be shared with create permissions" : "Ekki er hægt að deila skrá með búa-til-heimildum", "Expiration date is in the past" : "Gildistíminn er þegar runninn út", + "Can’t set expiration date more than %s days in the future" : "Ekki er hægt að setja lokadagsetningu meira en %s daga fram í tímann", + "%s shared »%s« with you" : "%s deildi »%s« með þér", + "%s via %s" : "%s með %s", "The requested share does not exist anymore" : "Umbeðin sameign er ekki lengur til", "Could not find category \"%s\"" : "Fann ekki flokkinn \"%s\"", "Sunday" : "Sunnudagur", @@ -212,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Eining með auðkenni: %s er ekki til. Virkjaðu hana í forritastillingum eða hafðu samband við kerfisstjóra.", "Server settings" : "Stillingar þjóns", "You need to enter either an existing account or the administrator." : "Þú verður að setja inn fyrirliggjandi notandaaðgang eða kerfisstjóra.", - "%s shared »%s« with you" : "%s deildi »%s« með þér", - "%s via %s" : "%s með %s", "Cannot increase permissions of %s" : "Get ekki aukið aðgangsheimildir %s", "Files can't be shared with delete permissions" : "Ekki er hægt að deila skrá með eyða-heimildum", "Files can't be shared with create permissions" : "Ekki er hægt að deila skrá með búa-til-heimildum", diff --git a/lib/l10n/is.json b/lib/l10n/is.json index 59159d10396..9957d7f8089 100644 --- a/lib/l10n/is.json +++ b/lib/l10n/is.json @@ -10,6 +10,7 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s og %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s og %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s og %5$s", + "Education Edition" : "Kennsluútgáfa", "Enterprise bundle" : "Fyrirtækjavöndull", "Groupware bundle" : "Hópvinnsluvöndull", "Social sharing bundle" : "Deilivöndull fyrir samfélagsmiðla", @@ -48,6 +49,7 @@ "This is an automatically sent email, please do not reply." : "Þetta er sjálfvirk tölvupóstsending, ekki svara þessu.", "Help" : "Hjálp", "Apps" : "Forrit", + "Settings" : "Stillingar", "Log out" : "Skrá út", "Users" : "Notendur", "APCu" : "APCu", @@ -58,6 +60,13 @@ "Encryption" : "Dulritun", "Additional settings" : "Valfrjálsar stillingar", "Tips & tricks" : "Ábendingar og góð ráð", + "Personal info" : "Persónulegar upplýsingar", + "Sync clients" : "Samstilla biðlara", + "Unlimited" : "Ótakmarkað", + "__language_name__" : "Íslenska", + "Verifying" : "Sannreyni", + "Verifying …" : "Sannreyni …", + "Verify" : "Sannreyna", "%s enter the database username and name." : "%s settu inn notandanafn og nafn á gagnagrunni.", "%s enter the database username." : "%s settu inn notandanafn í gagnagrunni.", "%s enter the database name." : "%s settu inn nafn á gagnagrunni.", @@ -105,7 +114,13 @@ "Sharing %s failed, because resharing is not allowed" : "Deiling %s mistókst, því endurdeiling er ekki leyfð", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Deiling %s mistókst, því bakvinnslukerfið fyrir %s fann ekki upptök þess", "Sharing %s failed, because the file could not be found in the file cache" : "Deiling %s mistókst, því skráin fannst ekki í skyndiminni skráa", + "Can’t increase permissions of %s" : "Get ekki aukið aðgangsheimildir %s", + "Files can’t be shared with delete permissions" : "Ekki er hægt að deila skrá með eyða-heimildum", + "Files can’t be shared with create permissions" : "Ekki er hægt að deila skrá með búa-til-heimildum", "Expiration date is in the past" : "Gildistíminn er þegar runninn út", + "Can’t set expiration date more than %s days in the future" : "Ekki er hægt að setja lokadagsetningu meira en %s daga fram í tímann", + "%s shared »%s« with you" : "%s deildi »%s« með þér", + "%s via %s" : "%s með %s", "The requested share does not exist anymore" : "Umbeðin sameign er ekki lengur til", "Could not find category \"%s\"" : "Fann ekki flokkinn \"%s\"", "Sunday" : "Sunnudagur", @@ -210,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Eining með auðkenni: %s er ekki til. Virkjaðu hana í forritastillingum eða hafðu samband við kerfisstjóra.", "Server settings" : "Stillingar þjóns", "You need to enter either an existing account or the administrator." : "Þú verður að setja inn fyrirliggjandi notandaaðgang eða kerfisstjóra.", - "%s shared »%s« with you" : "%s deildi »%s« með þér", - "%s via %s" : "%s með %s", "Cannot increase permissions of %s" : "Get ekki aukið aðgangsheimildir %s", "Files can't be shared with delete permissions" : "Ekki er hægt að deila skrá með eyða-heimildum", "Files can't be shared with create permissions" : "Ekki er hægt að deila skrá með búa-til-heimildum", diff --git a/lib/l10n/it.js b/lib/l10n/it.js index d77a82343a8..fb74583dbe8 100644 --- a/lib/l10n/it.js +++ b/lib/l10n/it.js @@ -117,6 +117,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "I file non possono essere condivisi con permessi di creazione", "Expiration date is in the past" : "La data di scadenza è nel passato", "Can’t set expiration date more than %s days in the future" : "Impossibile impostare la data di scadenza a più di %s giorni nel futuro", + "%s shared »%s« with you" : "%s ha condiviso «%s» con te", + "%s via %s" : "%s tramite %s", "The requested share does not exist anymore" : "La condivisione richiesta non esiste più", "Could not find category \"%s\"" : "Impossibile trovare la categoria \"%s\"", "Sunday" : "Domenica", @@ -221,8 +223,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Il modulo con id: %s non esiste. Abilitalo nelle impostazioni delle applicazioni o contatta il tuo amministratore.", "Server settings" : "Impostazioni server", "You need to enter either an existing account or the administrator." : "È necessario inserire un account esistente o l'amministratore.", - "%s shared »%s« with you" : "%s ha condiviso «%s» con te", - "%s via %s" : "%s tramite %s", "Cannot increase permissions of %s" : "Impossibile aumentare i permessi di %s", "Files can't be shared with delete permissions" : "I file non possono essere condivisi con permessi di eliminazione", "Files can't be shared with create permissions" : "I file non possono essere condivisi con permessi di creazione", diff --git a/lib/l10n/it.json b/lib/l10n/it.json index 388c6c95055..bd3a35cdef1 100644 --- a/lib/l10n/it.json +++ b/lib/l10n/it.json @@ -115,6 +115,8 @@ "Files can’t be shared with create permissions" : "I file non possono essere condivisi con permessi di creazione", "Expiration date is in the past" : "La data di scadenza è nel passato", "Can’t set expiration date more than %s days in the future" : "Impossibile impostare la data di scadenza a più di %s giorni nel futuro", + "%s shared »%s« with you" : "%s ha condiviso «%s» con te", + "%s via %s" : "%s tramite %s", "The requested share does not exist anymore" : "La condivisione richiesta non esiste più", "Could not find category \"%s\"" : "Impossibile trovare la categoria \"%s\"", "Sunday" : "Domenica", @@ -219,8 +221,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Il modulo con id: %s non esiste. Abilitalo nelle impostazioni delle applicazioni o contatta il tuo amministratore.", "Server settings" : "Impostazioni server", "You need to enter either an existing account or the administrator." : "È necessario inserire un account esistente o l'amministratore.", - "%s shared »%s« with you" : "%s ha condiviso «%s» con te", - "%s via %s" : "%s tramite %s", "Cannot increase permissions of %s" : "Impossibile aumentare i permessi di %s", "Files can't be shared with delete permissions" : "I file non possono essere condivisi con permessi di eliminazione", "Files can't be shared with create permissions" : "I file non possono essere condivisi con permessi di creazione", diff --git a/lib/l10n/ja.js b/lib/l10n/ja.js index fd98eaeb918..70f61ce0c8d 100644 --- a/lib/l10n/ja.js +++ b/lib/l10n/ja.js @@ -102,6 +102,8 @@ OC.L10N.register( "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s の共有に失敗しました。%s のバックエンド共有に必要なソースが見つかりませんでした。", "Sharing %s failed, because the file could not be found in the file cache" : "%s の共有に失敗しました。ファイルキャッシュにファイルがありませんでした。", "Expiration date is in the past" : "有効期限が切れています", + "%s shared »%s« with you" : "%sが あなたと »%s«を共有しました", + "%s via %s" : "%s に %s から", "Could not find category \"%s\"" : "カテゴリ \"%s\" が見つかりませんでした", "Sunday" : "日曜日", "Monday" : "月曜日", @@ -199,8 +201,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "id: %sのモジュールは存在しません。アプリ設定で有効にするか、管理者に問い合わせてください。", "Server settings" : "サーバー設定", "You need to enter either an existing account or the administrator." : "既存のアカウントもしくは管理者のどちらかを入力する必要があります。", - "%s shared »%s« with you" : "%sが あなたと »%s«を共有しました", - "%s via %s" : "%s に %s から", "Cannot increase permissions of %s" : "%s の権限を強化できません", "Files can't be shared with delete permissions" : "削除権限つきでファイルを共有できません。", "Files can't be shared with create permissions" : "作成権限つきでファイルを共有できません。", diff --git a/lib/l10n/ja.json b/lib/l10n/ja.json index 247905f240b..f1cbdb72f70 100644 --- a/lib/l10n/ja.json +++ b/lib/l10n/ja.json @@ -100,6 +100,8 @@ "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s の共有に失敗しました。%s のバックエンド共有に必要なソースが見つかりませんでした。", "Sharing %s failed, because the file could not be found in the file cache" : "%s の共有に失敗しました。ファイルキャッシュにファイルがありませんでした。", "Expiration date is in the past" : "有効期限が切れています", + "%s shared »%s« with you" : "%sが あなたと »%s«を共有しました", + "%s via %s" : "%s に %s から", "Could not find category \"%s\"" : "カテゴリ \"%s\" が見つかりませんでした", "Sunday" : "日曜日", "Monday" : "月曜日", @@ -197,8 +199,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "id: %sのモジュールは存在しません。アプリ設定で有効にするか、管理者に問い合わせてください。", "Server settings" : "サーバー設定", "You need to enter either an existing account or the administrator." : "既存のアカウントもしくは管理者のどちらかを入力する必要があります。", - "%s shared »%s« with you" : "%sが あなたと »%s«を共有しました", - "%s via %s" : "%s に %s から", "Cannot increase permissions of %s" : "%s の権限を強化できません", "Files can't be shared with delete permissions" : "削除権限つきでファイルを共有できません。", "Files can't be shared with create permissions" : "作成権限つきでファイルを共有できません。", diff --git a/lib/l10n/ko.js b/lib/l10n/ko.js index 66ca7aab6b4..a56411b6bf4 100644 --- a/lib/l10n/ko.js +++ b/lib/l10n/ko.js @@ -107,6 +107,8 @@ OC.L10N.register( "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s을(를) 공유할 수 없습니다. %s의 공유 백엔드에서 원본 파일을 찾을 수 없습니다", "Sharing %s failed, because the file could not be found in the file cache" : "%s을(를) 공유할 수 없습니다. 파일 캐시에서 찾을 수 없습니다", "Expiration date is in the past" : "만료 날짜가 과거입니다", + "%s shared »%s« with you" : "%s 님이 %s을(를) 공유했습니다", + "%s via %s" : "%s(%s 경유)", "Could not find category \"%s\"" : "분류 \"%s\"을(를) 찾을 수 없습니다", "Sunday" : "일요일", "Monday" : "월요일", @@ -206,8 +208,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "ID: %s인 모듈이 존재하지 않습니다. 앱 설정에서 활성화하거나 관리자에게 연락하십시오.", "Server settings" : "서버 설정", "You need to enter either an existing account or the administrator." : "기존 계정이나 administrator(관리자)를 입력해야 합니다.", - "%s shared »%s« with you" : "%s 님이 %s을(를) 공유했습니다", - "%s via %s" : "%s(%s 경유)", "Cannot increase permissions of %s" : "%s의 권한을 늘릴 수 없습니다", "Files can't be shared with delete permissions" : "파일을 삭제 권한으로 공유할 수 없습니다", "Files can't be shared with create permissions" : "파일을 생성 권한으로 공유할 수 없습니다", diff --git a/lib/l10n/ko.json b/lib/l10n/ko.json index 1a1a4d1b7ea..21602cf109f 100644 --- a/lib/l10n/ko.json +++ b/lib/l10n/ko.json @@ -105,6 +105,8 @@ "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s을(를) 공유할 수 없습니다. %s의 공유 백엔드에서 원본 파일을 찾을 수 없습니다", "Sharing %s failed, because the file could not be found in the file cache" : "%s을(를) 공유할 수 없습니다. 파일 캐시에서 찾을 수 없습니다", "Expiration date is in the past" : "만료 날짜가 과거입니다", + "%s shared »%s« with you" : "%s 님이 %s을(를) 공유했습니다", + "%s via %s" : "%s(%s 경유)", "Could not find category \"%s\"" : "분류 \"%s\"을(를) 찾을 수 없습니다", "Sunday" : "일요일", "Monday" : "월요일", @@ -204,8 +206,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "ID: %s인 모듈이 존재하지 않습니다. 앱 설정에서 활성화하거나 관리자에게 연락하십시오.", "Server settings" : "서버 설정", "You need to enter either an existing account or the administrator." : "기존 계정이나 administrator(관리자)를 입력해야 합니다.", - "%s shared »%s« with you" : "%s 님이 %s을(를) 공유했습니다", - "%s via %s" : "%s(%s 경유)", "Cannot increase permissions of %s" : "%s의 권한을 늘릴 수 없습니다", "Files can't be shared with delete permissions" : "파일을 삭제 권한으로 공유할 수 없습니다", "Files can't be shared with create permissions" : "파일을 생성 권한으로 공유할 수 없습니다", diff --git a/lib/l10n/nb.js b/lib/l10n/nb.js index 47a1daa6466..9e1a5ec5766 100644 --- a/lib/l10n/nb.js +++ b/lib/l10n/nb.js @@ -121,6 +121,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Filer kan ikke deles med tilgang til opprettelse", "Expiration date is in the past" : "Utløpsdato er i fortid", "Can’t set expiration date more than %s days in the future" : "Kan ikke sette utløpsdato mer enn %s dager i fremtiden", + "%s shared »%s« with you" : "%s delte »%s« med deg", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "Forespurt ressurs finnes ikke lenger", "Could not find category \"%s\"" : "Kunne ikke finne kategori \"%s\"", "Sunday" : "Søndag", @@ -225,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul med ID: %s finnes ikke. Skru den på i programinnstillingene eller kontakt en administrator.", "Server settings" : "Tjenerinnstillinger", "You need to enter either an existing account or the administrator." : "Du må legge inn enten en eksisterende konto eller administratoren.", - "%s shared »%s« with you" : "%s delte »%s« med deg", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Kan ikke øke tillatelser for %s", "Files can't be shared with delete permissions" : "Filer kan ikke deles med rettigheter til sletting", "Files can't be shared with create permissions" : "Filer kan ikke deles med rettigheter til å opprette", diff --git a/lib/l10n/nb.json b/lib/l10n/nb.json index 3f6be7ddfa5..5471aa887ab 100644 --- a/lib/l10n/nb.json +++ b/lib/l10n/nb.json @@ -119,6 +119,8 @@ "Files can’t be shared with create permissions" : "Filer kan ikke deles med tilgang til opprettelse", "Expiration date is in the past" : "Utløpsdato er i fortid", "Can’t set expiration date more than %s days in the future" : "Kan ikke sette utløpsdato mer enn %s dager i fremtiden", + "%s shared »%s« with you" : "%s delte »%s« med deg", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "Forespurt ressurs finnes ikke lenger", "Could not find category \"%s\"" : "Kunne ikke finne kategori \"%s\"", "Sunday" : "Søndag", @@ -223,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul med ID: %s finnes ikke. Skru den på i programinnstillingene eller kontakt en administrator.", "Server settings" : "Tjenerinnstillinger", "You need to enter either an existing account or the administrator." : "Du må legge inn enten en eksisterende konto eller administratoren.", - "%s shared »%s« with you" : "%s delte »%s« med deg", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Kan ikke øke tillatelser for %s", "Files can't be shared with delete permissions" : "Filer kan ikke deles med rettigheter til sletting", "Files can't be shared with create permissions" : "Filer kan ikke deles med rettigheter til å opprette", diff --git a/lib/l10n/nl.js b/lib/l10n/nl.js index 9ccea90667a..88d88563f63 100644 --- a/lib/l10n/nl.js +++ b/lib/l10n/nl.js @@ -120,6 +120,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met 'creëer' permissies", "Expiration date is in the past" : "De vervaldatum ligt in het verleden", "Can’t set expiration date more than %s days in the future" : "Kan de vervaldatum niet meer dan %s dagen in de toekomst instellen", + "%s shared »%s« with you" : "%s deelde »%s« met jou", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "De vezochte share bestaat niet meer", "Could not find category \"%s\"" : "Kon categorie \"%s\" niet vinden", "Sunday" : "Zondag", @@ -224,8 +226,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Module met id: %s bestaat niet. Activeer het in je apps instellingen, of neem contact op met je beheerder.", "Server settings" : "Serverinstellingen", "You need to enter either an existing account or the administrator." : "Geef of een bestaand account op, of het beheerdersaccount.", - "%s shared »%s« with you" : "%s deelde »%s« met jou", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Kan de rechten van %s niet verruimen", "Files can't be shared with delete permissions" : "Bestanden kunnen niet worden gedeeld met verwijder rechten", "Files can't be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met creatie rechten", diff --git a/lib/l10n/nl.json b/lib/l10n/nl.json index 48bb43d4704..55e7f71d6c6 100644 --- a/lib/l10n/nl.json +++ b/lib/l10n/nl.json @@ -118,6 +118,8 @@ "Files can’t be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met 'creëer' permissies", "Expiration date is in the past" : "De vervaldatum ligt in het verleden", "Can’t set expiration date more than %s days in the future" : "Kan de vervaldatum niet meer dan %s dagen in de toekomst instellen", + "%s shared »%s« with you" : "%s deelde »%s« met jou", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "De vezochte share bestaat niet meer", "Could not find category \"%s\"" : "Kon categorie \"%s\" niet vinden", "Sunday" : "Zondag", @@ -222,8 +224,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Module met id: %s bestaat niet. Activeer het in je apps instellingen, of neem contact op met je beheerder.", "Server settings" : "Serverinstellingen", "You need to enter either an existing account or the administrator." : "Geef of een bestaand account op, of het beheerdersaccount.", - "%s shared »%s« with you" : "%s deelde »%s« met jou", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Kan de rechten van %s niet verruimen", "Files can't be shared with delete permissions" : "Bestanden kunnen niet worden gedeeld met verwijder rechten", "Files can't be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met creatie rechten", diff --git a/lib/l10n/pl.js b/lib/l10n/pl.js index 01a2d5f7012..f359bbd4052 100644 --- a/lib/l10n/pl.js +++ b/lib/l10n/pl.js @@ -119,6 +119,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Pliki nie mogą zostać udostępnione z prawem do tworzenia", "Expiration date is in the past" : "Data ważności jest przeszła", "Can’t set expiration date more than %s days in the future" : "Nie można ustawić daty ważności dłuższej niż 1%s dni", + "%s shared »%s« with you" : "%s współdzieli »%s« z tobą", + "%s via %s" : "%s przez %s", "The requested share does not exist anymore" : "Żądany obiekt współdzielony już nie istnieje", "Could not find category \"%s\"" : "Nie można odnaleźć kategorii \"%s\"", "Sunday" : "Niedziela", @@ -223,8 +225,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduł z id: %s nie istnieje. Należy go włączyć w ustawieniach aplikacji lub skontaktować się z administratorem.", "Server settings" : "Ustawienia serwera", "You need to enter either an existing account or the administrator." : "Należy wprowadzić istniejące konto użytkownika lub administratora.", - "%s shared »%s« with you" : "%s współdzieli »%s« z tobą", - "%s via %s" : "%s przez %s", "Cannot increase permissions of %s" : "Nie można zwiększyć uprawnienia %s", "Files can't be shared with delete permissions" : "Pliki nie mogą być współdzielone z uprawnieniami kasowania", "Files can't be shared with create permissions" : "Pliki nie mogą być współdzielony z uprawnieniami tworzenia", diff --git a/lib/l10n/pl.json b/lib/l10n/pl.json index fa0ac561c5a..e089c1c710c 100644 --- a/lib/l10n/pl.json +++ b/lib/l10n/pl.json @@ -117,6 +117,8 @@ "Files can’t be shared with create permissions" : "Pliki nie mogą zostać udostępnione z prawem do tworzenia", "Expiration date is in the past" : "Data ważności jest przeszła", "Can’t set expiration date more than %s days in the future" : "Nie można ustawić daty ważności dłuższej niż 1%s dni", + "%s shared »%s« with you" : "%s współdzieli »%s« z tobą", + "%s via %s" : "%s przez %s", "The requested share does not exist anymore" : "Żądany obiekt współdzielony już nie istnieje", "Could not find category \"%s\"" : "Nie można odnaleźć kategorii \"%s\"", "Sunday" : "Niedziela", @@ -221,8 +223,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduł z id: %s nie istnieje. Należy go włączyć w ustawieniach aplikacji lub skontaktować się z administratorem.", "Server settings" : "Ustawienia serwera", "You need to enter either an existing account or the administrator." : "Należy wprowadzić istniejące konto użytkownika lub administratora.", - "%s shared »%s« with you" : "%s współdzieli »%s« z tobą", - "%s via %s" : "%s przez %s", "Cannot increase permissions of %s" : "Nie można zwiększyć uprawnienia %s", "Files can't be shared with delete permissions" : "Pliki nie mogą być współdzielone z uprawnieniami kasowania", "Files can't be shared with create permissions" : "Pliki nie mogą być współdzielony z uprawnieniami tworzenia", diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js index cbcad026291..122fa0d7c79 100644 --- a/lib/l10n/pt_BR.js +++ b/lib/l10n/pt_BR.js @@ -121,6 +121,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Os arquivos não podem ser compartilhados com permissões de criação", "Expiration date is in the past" : "Data de expiração está no passado", "Can’t set expiration date more than %s days in the future" : "Não é possível definir a expiração mais do que %s dias no futuro", + "%s shared »%s« with you" : "%s compartilhou »%s« com você", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "O compartilhamento solicitado não existe mais", "Could not find category \"%s\"" : "Impossível localizar a categoria \"%s\"", "Sunday" : "Domingo", @@ -225,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "O módulo com ID: %s não existe. Ative-o em suas configurações de aplicativos ou contacte o administrador.", "Server settings" : "Configurações do servidor", "You need to enter either an existing account or the administrator." : "Você precisa inserir uma conta existente ou a conta do administrador.", - "%s shared »%s« with you" : "%s compartilhou »%s« com você", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Não foi possível aumentar as permissões de %s", "Files can't be shared with delete permissions" : "Os arquivos não podem ser compartilhadas com permissões de exclusão", "Files can't be shared with create permissions" : "Os arquivos não podem ser compartilhados com permissões de criação", diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json index d9c52a6f043..03ff121e39b 100644 --- a/lib/l10n/pt_BR.json +++ b/lib/l10n/pt_BR.json @@ -119,6 +119,8 @@ "Files can’t be shared with create permissions" : "Os arquivos não podem ser compartilhados com permissões de criação", "Expiration date is in the past" : "Data de expiração está no passado", "Can’t set expiration date more than %s days in the future" : "Não é possível definir a expiração mais do que %s dias no futuro", + "%s shared »%s« with you" : "%s compartilhou »%s« com você", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "O compartilhamento solicitado não existe mais", "Could not find category \"%s\"" : "Impossível localizar a categoria \"%s\"", "Sunday" : "Domingo", @@ -223,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "O módulo com ID: %s não existe. Ative-o em suas configurações de aplicativos ou contacte o administrador.", "Server settings" : "Configurações do servidor", "You need to enter either an existing account or the administrator." : "Você precisa inserir uma conta existente ou a conta do administrador.", - "%s shared »%s« with you" : "%s compartilhou »%s« com você", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Não foi possível aumentar as permissões de %s", "Files can't be shared with delete permissions" : "Os arquivos não podem ser compartilhadas com permissões de exclusão", "Files can't be shared with create permissions" : "Os arquivos não podem ser compartilhados com permissões de criação", diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js index d17439fa17c..e5f3ec70d99 100644 --- a/lib/l10n/ru.js +++ b/lib/l10n/ru.js @@ -12,6 +12,7 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s и %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s и %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s и %5$s", + "Education Edition" : "Образовательная редакция", "Enterprise bundle" : "Корпоративный пакет", "Groupware bundle" : "Пакет для групп", "Social sharing bundle" : "Пакет для соц. сетей", @@ -120,6 +121,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Файлы не могут иметь общий доступ с правами на создание", "Expiration date is in the past" : "Дата окончания срока действия уже прошла", "Can’t set expiration date more than %s days in the future" : "Невозможно установить дату окончания срока действия более %s дней", + "%s shared »%s« with you" : "%s поделился »%s« с вами", + "%s via %s" : "%s через %s", "The requested share does not exist anymore" : "Запрошенный общий ресурс более не существует.", "Could not find category \"%s\"" : "Категория «%s» не найдена", "Sunday" : "Воскресенье", @@ -224,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Модуль с ID %s не существует. Пожалуйста включите его в настройках приложений или обратитесь к администратору.", "Server settings" : "Настройки сервера", "You need to enter either an existing account or the administrator." : "Вы должны войти или в существующий аккаунт или под администратором.", - "%s shared »%s« with you" : "%s поделился »%s« с вами", - "%s via %s" : "%s через %s", "Cannot increase permissions of %s" : "Невозможно увеличить права доступа для %s", "Files can't be shared with delete permissions" : "Файлы не могут иметь общий доступ с правами на удаление", "Files can't be shared with create permissions" : "Файлы не могут иметь общий доступ с правами на создание", diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json index 039cf8b6c1b..92348342feb 100644 --- a/lib/l10n/ru.json +++ b/lib/l10n/ru.json @@ -10,6 +10,7 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s и %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s и %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s и %5$s", + "Education Edition" : "Образовательная редакция", "Enterprise bundle" : "Корпоративный пакет", "Groupware bundle" : "Пакет для групп", "Social sharing bundle" : "Пакет для соц. сетей", @@ -118,6 +119,8 @@ "Files can’t be shared with create permissions" : "Файлы не могут иметь общий доступ с правами на создание", "Expiration date is in the past" : "Дата окончания срока действия уже прошла", "Can’t set expiration date more than %s days in the future" : "Невозможно установить дату окончания срока действия более %s дней", + "%s shared »%s« with you" : "%s поделился »%s« с вами", + "%s via %s" : "%s через %s", "The requested share does not exist anymore" : "Запрошенный общий ресурс более не существует.", "Could not find category \"%s\"" : "Категория «%s» не найдена", "Sunday" : "Воскресенье", @@ -222,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Модуль с ID %s не существует. Пожалуйста включите его в настройках приложений или обратитесь к администратору.", "Server settings" : "Настройки сервера", "You need to enter either an existing account or the administrator." : "Вы должны войти или в существующий аккаунт или под администратором.", - "%s shared »%s« with you" : "%s поделился »%s« с вами", - "%s via %s" : "%s через %s", "Cannot increase permissions of %s" : "Невозможно увеличить права доступа для %s", "Files can't be shared with delete permissions" : "Файлы не могут иметь общий доступ с правами на удаление", "Files can't be shared with create permissions" : "Файлы не могут иметь общий доступ с правами на создание", diff --git a/lib/l10n/sk.js b/lib/l10n/sk.js index d0817e42409..0a7e397b569 100644 --- a/lib/l10n/sk.js +++ b/lib/l10n/sk.js @@ -97,6 +97,8 @@ OC.L10N.register( "Sharing %s failed, because the sharing backend for %s could not find its source" : "Sprístupnenie %s zlyhalo, backend nenašiel zdrojový %s", "Sharing %s failed, because the file could not be found in the file cache" : "Sprístupnenie %s zlyhalo, pretože súbor sa nenachádza vo vyrovnávacej pamäti súborov", "Expiration date is in the past" : "Dátum konca platnosti je v minulosti", + "%s shared »%s« with you" : "%s vám sprístupnil »%s«", + "%s via %s" : "%s cez %s", "Could not find category \"%s\"" : "Nemožno nájsť danú kategóriu \"%s\"", "Sunday" : "Nedeľa", "Monday" : "Pondelok", @@ -188,8 +190,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s ID: %s neexistuje. Povoľte ho prosím vo vašom nastavení aplikácií alebo konaktujte správcu.", "Server settings" : "Nastavenia servera", "You need to enter either an existing account or the administrator." : "Musíte zadať jestvujúci účet alebo administrátora.", - "%s shared »%s« with you" : "%s vám sprístupnil »%s«", - "%s via %s" : "%s cez %s", "Cannot set expiration date more than %s days in the future" : "Nie je možné nastaviť dátum konca platnosti viac ako %s dní v budúcnosti", "Personal" : "Osobné", "Admin" : "Administrátor", diff --git a/lib/l10n/sk.json b/lib/l10n/sk.json index b7c9acf31db..a7c5a331614 100644 --- a/lib/l10n/sk.json +++ b/lib/l10n/sk.json @@ -95,6 +95,8 @@ "Sharing %s failed, because the sharing backend for %s could not find its source" : "Sprístupnenie %s zlyhalo, backend nenašiel zdrojový %s", "Sharing %s failed, because the file could not be found in the file cache" : "Sprístupnenie %s zlyhalo, pretože súbor sa nenachádza vo vyrovnávacej pamäti súborov", "Expiration date is in the past" : "Dátum konca platnosti je v minulosti", + "%s shared »%s« with you" : "%s vám sprístupnil »%s«", + "%s via %s" : "%s cez %s", "Could not find category \"%s\"" : "Nemožno nájsť danú kategóriu \"%s\"", "Sunday" : "Nedeľa", "Monday" : "Pondelok", @@ -186,8 +188,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s ID: %s neexistuje. Povoľte ho prosím vo vašom nastavení aplikácií alebo konaktujte správcu.", "Server settings" : "Nastavenia servera", "You need to enter either an existing account or the administrator." : "Musíte zadať jestvujúci účet alebo administrátora.", - "%s shared »%s« with you" : "%s vám sprístupnil »%s«", - "%s via %s" : "%s cez %s", "Cannot set expiration date more than %s days in the future" : "Nie je možné nastaviť dátum konca platnosti viac ako %s dní v budúcnosti", "Personal" : "Osobné", "Admin" : "Administrátor", diff --git a/lib/l10n/sq.js b/lib/l10n/sq.js index 8de60a08071..cdda2c2aaba 100644 --- a/lib/l10n/sq.js +++ b/lib/l10n/sq.js @@ -4,6 +4,7 @@ OC.L10N.register( "Cannot write into \"config\" directory!" : "Nuk shkruhet dot te drejtoria \"config\"!", "This can usually be fixed by giving the webserver write access to the config directory" : "Zakonisht kjo mund të ndreqet duke i akorduar shërbyesit web të drejta shkrimi mbi drejtorinë e formësimeve", "See %s" : "Shihni %s", + "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Kjo zakonisht mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria config. Shih %s", "The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Skedarët e aplikacionit %$1s nuk u zëvëndësuan në mënyrë korrekte. Sigurohuni që është një version që përputhet me serverin.", "Sample configuration detected" : "U gjet formësim shembull", "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "U pa se është kopjuar shembulli për formësime. Kjo mund të prishë instalimin tuaj dhe nuk mbulohet. Ju lutemi, lexoni dokumentimin, përpara se të kryeni ndryshime te config.php", @@ -11,6 +12,10 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s dhe %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s dhe %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s dhe %5$s", + "Education Edition" : "Variant Edukativ", + "Enterprise bundle" : "Pakoja e ndërmarrjeve", + "Groupware bundle" : "Pako groupware", + "Social sharing bundle" : "Pakoja e ndarjes sociale", "PHP %s or higher is required." : "Kërkohet PHP %s ose më sipër.", "PHP with a version lower than %s is required." : "Lypset PHP me një version më të ulët se sa %s.", "%sbit or higher PHP required." : "Lypset PHP %sbit ose më i ri.", @@ -35,6 +40,7 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["%n orë më parë","%n orë më parë"], "_%n minute ago_::_%n minutes ago_" : ["%n minutë më parë","%n minuta më parë"], "seconds ago" : "sekonda më parë", + "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduli me ID: %s nuk ekziston. Ju lutem aktivizojeni atë në konfigurimet e aplikacionit tuaj ose kontaktoni administratorin tuaj.", "File name is a reserved word" : "Emri i kartelës është një emër i rezervuar", "File name contains at least one invalid character" : "Emri i kartelës përmban të paktën një shenjë të pavlefshme", "File name is too long" : "Emri i kartelës është shumë i gjatë", @@ -45,12 +51,12 @@ OC.L10N.register( "This is an automatically sent email, please do not reply." : "Ky është një email i dërguar automatikisht, ju lutem mos u përgjigjni.", "Help" : "Ndihmë", "Apps" : "Aplikacione", - "Settings" : "Settings", + "Settings" : "Konfigurime", "Log out" : "Shkyçu", "Users" : "Përdorues", "APCu" : "APCu", "Redis" : "Redis", - "Basic settings" : "Settings bazike", + "Basic settings" : "Konfigurime bazike", "Sharing" : "Ndarja", "Security" : "Siguria", "Encryption" : "Enkriptimi", @@ -70,7 +76,8 @@ OC.L10N.register( "Oracle connection could not be established" : "S’u vendos dot lidhje me Oracle", "Oracle username and/or password not valid" : "Emër përdoruesi dhe/ose fjalëkalim Oracle-i i pavlefshëm", "DB Error: \"%s\"" : "Gabim DB-je: \"%s\"", - "Offending command was: \"%s\"" : "Urdhri shkaktar qe: \"%s\"", + "Offending command was: \"%s\"" : "Urdhëri shkaktar ishte: \"%s\"", + "You need to enter details of an existing account." : "Duhet të futni detajet e një llogarie ekzistuese.", "Offending command was: \"%s\", name: %s, password: %s" : "Urdhri shkaktar qe: \"%s\", emër: %s, fjalëkalim: %s", "PostgreSQL username and/or password not valid" : "Emër përdoruesi dhe/ose fjalëkalim PostgreSQL jo të vlefshëm", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nuk mbulohet dhe %s s’do të funksionojë si duhet në këtë platformë. Përdoreni nën përgjegjësinë tuaj! ", @@ -109,15 +116,22 @@ OC.L10N.register( "Sharing %s failed, because resharing is not allowed" : "Ndarja e %s me të tjerët dështoi, ngaqë nuk lejohen rindarje", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Ndarja e %s dështoi, ngaqë mekanizmi i shërbimit për ndarje për %s s’gjeti dot burimin për të", "Sharing %s failed, because the file could not be found in the file cache" : "Ndarja e %s me të tjerët dështoi, ngaqë kartela s’u gjet dot te fshehtina e kartelave", + "Can’t increase permissions of %s" : "Nuk mund të shtohen lejet e %s", + "Files can’t be shared with delete permissions" : "Skedarët nuk mund të ndahen me leje të fshira", + "Files can’t be shared with create permissions" : "matchSkedarët nuk mund të ndahen me leje të krijuara", "Expiration date is in the past" : "Data e skadimit bie në të kaluarën", + "Can’t set expiration date more than %s days in the future" : "Nuk mund të caktohet data e skadimit më shumë se %s ditë në të ardhmen", + "%s shared »%s« with you" : "%s ndau me ju »%s«", + "%s via %s" : "%s përmes %s", + "The requested share does not exist anymore" : "Ndarja e kërkuar nuk ekziston më", "Could not find category \"%s\"" : "S’u gjet kategori \"%s\"", - "Sunday" : "E diel", - "Monday" : "E hënë", - "Tuesday" : "E martë", - "Wednesday" : "E mërkurë", - "Thursday" : "E enjte", - "Friday" : "E premte", - "Saturday" : "E shtunë", + "Sunday" : "E Dielë", + "Monday" : "E Hënë", + "Tuesday" : "E Martë", + "Wednesday" : "E Mërkurë", + "Thursday" : "E Enjte", + "Friday" : "E Premte", + "Saturday" : "E Shtunë", "Sun." : "Die.", "Mon." : "Hën.", "Tue." : "Mar.", @@ -128,7 +142,7 @@ OC.L10N.register( "Su" : "Di", "Mo" : "Hë", "Tu" : "Ma", - "We" : "Më", + "We" : "Ne", "Th" : "En", "Fr" : "Pr", "Sa" : "Sh", @@ -159,6 +173,7 @@ OC.L10N.register( "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Në një emër përdoruesi lejohen vetëm shenjat vijuese: \"a-z\", \"A-Z\", \"0-9\", dhe \"_.@-\"", "A valid username must be provided" : "Duhet dhënë një emër i vlefshëm përdoruesi", "Username contains whitespace at the beginning or at the end" : "Emri i përdoruesit përmban hapësirë në fillim ose në fund", + "Username must not consist of dots only" : "Emri i përdoruesit nuk duhet të përbëhet vetëm nga pika", "A valid password must be provided" : "Duhet dhënë një fjalëkalim i vlefshëm", "The username is already being used" : "Emri i përdoruesit është tashmë i përdorur", "User disabled" : "Përdorues i çaktivizuar", @@ -171,11 +186,15 @@ OC.L10N.register( "Can't read file" : "S'lexohet dot kartela", "Application is not enabled" : "Aplikacioni s’është aktivizuar", "Authentication error" : "Gabim mirëfilltësimi", - "Token expired. Please reload page." : "Token-i ka skaduar. Ju lutemi, ringarkoni faqen.", + "Token expired. Please reload page." : "Token-i ka skaduar. Ju lutem ringarkoni faqen.", "Unknown user" : "Përdorues i panjohur", "No database drivers (sqlite, mysql, or postgresql) installed." : "S’ka baza të dhënash (sqlite, mysql, ose postgresql) të instaluara.", "Cannot write into \"config\" directory" : "S’shkruhet dot te drejtoria \"config\"", "Cannot write into \"apps\" directory" : "S’shkruhet dot te drejtoria \"apps\"", + "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Zakonisht kjo mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria e aplikacioneve ose duke çaktivizuar appstore në skedarin config. Shih %s", + "Cannot create \"data\" directory" : "Nuk mund të krijohet direktoria \"data\"", + "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Kjo zakonisht mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria rrënjë. Shih %s", + "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Zakonisht lejet mund të rregullohen duke i dhënë serverit të web-it akses shkrimi tek direktoria rrënjë. Shih %s.", "Setting locale to %s failed" : "Caktimi i gjuhës si %s dështoi", "Please install one of these locales on your system and restart your webserver." : "Ju lutemi, instaloni te sistemi juaj një prej këtyre vendoreve dhe rinisni shërbyesin tuaj web.", "Please ask your server administrator to install the module." : "Ju lutemi, kërkojini përgjegjësit të shërbyesit ta instalojë modulin.", @@ -197,6 +216,7 @@ OC.L10N.register( "Your data directory must be an absolute path" : "Direktoria juaj e të dhënave duhet të jetë një path absolut", "Check the value of \"datadirectory\" in your configuration" : "Kontrolloni vlerën e \"datadirectory\" te formësimi juaj", "Your data directory is invalid" : "Direktoria juaj e të dhënave është i pavlefshëm", + "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Sigurohu që ekziston një skedar i quajtur \".ocdata\" në rrënjën e direktorisë së të dhënave.", "Could not obtain lock type %d on \"%s\"." : "S’u mor dot lloj kyçjeje %d në \"%s\".", "Storage unauthorized. %s" : "Depozitë e paautorizuar. %s", "Storage incomplete configuration. %s" : "Formësim jo i plotë i depozitës. %s", @@ -207,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "S’ka modul me id: %s. Ju lutemi, aktivizojeni te rregullimet tuaja për aplikacionin ose lidhuni me përgjegjësin tuaj.", "Server settings" : "Konfigurimi i serverit", "You need to enter either an existing account or the administrator." : "Lypset të jepni ose një llogari ekzistuese, ose llogarinë e përgjegjësit.", - "%s shared »%s« with you" : "%s ndau me ju »%s«", - "%s via %s" : "%s përmes %s", "Cannot increase permissions of %s" : "S’mund të shtohen lejet për %s", "Files can't be shared with delete permissions" : "Kartelat s’mund të ndahen me leje fshirjeje", "Files can't be shared with create permissions" : "Kartelat s’mund të ndahen me leje krijimi", diff --git a/lib/l10n/sq.json b/lib/l10n/sq.json index bc20a1d9ad2..7de9e1620aa 100644 --- a/lib/l10n/sq.json +++ b/lib/l10n/sq.json @@ -2,6 +2,7 @@ "Cannot write into \"config\" directory!" : "Nuk shkruhet dot te drejtoria \"config\"!", "This can usually be fixed by giving the webserver write access to the config directory" : "Zakonisht kjo mund të ndreqet duke i akorduar shërbyesit web të drejta shkrimi mbi drejtorinë e formësimeve", "See %s" : "Shihni %s", + "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Kjo zakonisht mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria config. Shih %s", "The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Skedarët e aplikacionit %$1s nuk u zëvëndësuan në mënyrë korrekte. Sigurohuni që është një version që përputhet me serverin.", "Sample configuration detected" : "U gjet formësim shembull", "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "U pa se është kopjuar shembulli për formësime. Kjo mund të prishë instalimin tuaj dhe nuk mbulohet. Ju lutemi, lexoni dokumentimin, përpara se të kryeni ndryshime te config.php", @@ -9,6 +10,10 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s dhe %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s dhe %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s dhe %5$s", + "Education Edition" : "Variant Edukativ", + "Enterprise bundle" : "Pakoja e ndërmarrjeve", + "Groupware bundle" : "Pako groupware", + "Social sharing bundle" : "Pakoja e ndarjes sociale", "PHP %s or higher is required." : "Kërkohet PHP %s ose më sipër.", "PHP with a version lower than %s is required." : "Lypset PHP me një version më të ulët se sa %s.", "%sbit or higher PHP required." : "Lypset PHP %sbit ose më i ri.", @@ -33,6 +38,7 @@ "_%n hour ago_::_%n hours ago_" : ["%n orë më parë","%n orë më parë"], "_%n minute ago_::_%n minutes ago_" : ["%n minutë më parë","%n minuta më parë"], "seconds ago" : "sekonda më parë", + "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduli me ID: %s nuk ekziston. Ju lutem aktivizojeni atë në konfigurimet e aplikacionit tuaj ose kontaktoni administratorin tuaj.", "File name is a reserved word" : "Emri i kartelës është një emër i rezervuar", "File name contains at least one invalid character" : "Emri i kartelës përmban të paktën një shenjë të pavlefshme", "File name is too long" : "Emri i kartelës është shumë i gjatë", @@ -43,12 +49,12 @@ "This is an automatically sent email, please do not reply." : "Ky është një email i dërguar automatikisht, ju lutem mos u përgjigjni.", "Help" : "Ndihmë", "Apps" : "Aplikacione", - "Settings" : "Settings", + "Settings" : "Konfigurime", "Log out" : "Shkyçu", "Users" : "Përdorues", "APCu" : "APCu", "Redis" : "Redis", - "Basic settings" : "Settings bazike", + "Basic settings" : "Konfigurime bazike", "Sharing" : "Ndarja", "Security" : "Siguria", "Encryption" : "Enkriptimi", @@ -68,7 +74,8 @@ "Oracle connection could not be established" : "S’u vendos dot lidhje me Oracle", "Oracle username and/or password not valid" : "Emër përdoruesi dhe/ose fjalëkalim Oracle-i i pavlefshëm", "DB Error: \"%s\"" : "Gabim DB-je: \"%s\"", - "Offending command was: \"%s\"" : "Urdhri shkaktar qe: \"%s\"", + "Offending command was: \"%s\"" : "Urdhëri shkaktar ishte: \"%s\"", + "You need to enter details of an existing account." : "Duhet të futni detajet e një llogarie ekzistuese.", "Offending command was: \"%s\", name: %s, password: %s" : "Urdhri shkaktar qe: \"%s\", emër: %s, fjalëkalim: %s", "PostgreSQL username and/or password not valid" : "Emër përdoruesi dhe/ose fjalëkalim PostgreSQL jo të vlefshëm", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nuk mbulohet dhe %s s’do të funksionojë si duhet në këtë platformë. Përdoreni nën përgjegjësinë tuaj! ", @@ -107,15 +114,22 @@ "Sharing %s failed, because resharing is not allowed" : "Ndarja e %s me të tjerët dështoi, ngaqë nuk lejohen rindarje", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Ndarja e %s dështoi, ngaqë mekanizmi i shërbimit për ndarje për %s s’gjeti dot burimin për të", "Sharing %s failed, because the file could not be found in the file cache" : "Ndarja e %s me të tjerët dështoi, ngaqë kartela s’u gjet dot te fshehtina e kartelave", + "Can’t increase permissions of %s" : "Nuk mund të shtohen lejet e %s", + "Files can’t be shared with delete permissions" : "Skedarët nuk mund të ndahen me leje të fshira", + "Files can’t be shared with create permissions" : "matchSkedarët nuk mund të ndahen me leje të krijuara", "Expiration date is in the past" : "Data e skadimit bie në të kaluarën", + "Can’t set expiration date more than %s days in the future" : "Nuk mund të caktohet data e skadimit më shumë se %s ditë në të ardhmen", + "%s shared »%s« with you" : "%s ndau me ju »%s«", + "%s via %s" : "%s përmes %s", + "The requested share does not exist anymore" : "Ndarja e kërkuar nuk ekziston më", "Could not find category \"%s\"" : "S’u gjet kategori \"%s\"", - "Sunday" : "E diel", - "Monday" : "E hënë", - "Tuesday" : "E martë", - "Wednesday" : "E mërkurë", - "Thursday" : "E enjte", - "Friday" : "E premte", - "Saturday" : "E shtunë", + "Sunday" : "E Dielë", + "Monday" : "E Hënë", + "Tuesday" : "E Martë", + "Wednesday" : "E Mërkurë", + "Thursday" : "E Enjte", + "Friday" : "E Premte", + "Saturday" : "E Shtunë", "Sun." : "Die.", "Mon." : "Hën.", "Tue." : "Mar.", @@ -126,7 +140,7 @@ "Su" : "Di", "Mo" : "Hë", "Tu" : "Ma", - "We" : "Më", + "We" : "Ne", "Th" : "En", "Fr" : "Pr", "Sa" : "Sh", @@ -157,6 +171,7 @@ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Në një emër përdoruesi lejohen vetëm shenjat vijuese: \"a-z\", \"A-Z\", \"0-9\", dhe \"_.@-\"", "A valid username must be provided" : "Duhet dhënë një emër i vlefshëm përdoruesi", "Username contains whitespace at the beginning or at the end" : "Emri i përdoruesit përmban hapësirë në fillim ose në fund", + "Username must not consist of dots only" : "Emri i përdoruesit nuk duhet të përbëhet vetëm nga pika", "A valid password must be provided" : "Duhet dhënë një fjalëkalim i vlefshëm", "The username is already being used" : "Emri i përdoruesit është tashmë i përdorur", "User disabled" : "Përdorues i çaktivizuar", @@ -169,11 +184,15 @@ "Can't read file" : "S'lexohet dot kartela", "Application is not enabled" : "Aplikacioni s’është aktivizuar", "Authentication error" : "Gabim mirëfilltësimi", - "Token expired. Please reload page." : "Token-i ka skaduar. Ju lutemi, ringarkoni faqen.", + "Token expired. Please reload page." : "Token-i ka skaduar. Ju lutem ringarkoni faqen.", "Unknown user" : "Përdorues i panjohur", "No database drivers (sqlite, mysql, or postgresql) installed." : "S’ka baza të dhënash (sqlite, mysql, ose postgresql) të instaluara.", "Cannot write into \"config\" directory" : "S’shkruhet dot te drejtoria \"config\"", "Cannot write into \"apps\" directory" : "S’shkruhet dot te drejtoria \"apps\"", + "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Zakonisht kjo mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria e aplikacioneve ose duke çaktivizuar appstore në skedarin config. Shih %s", + "Cannot create \"data\" directory" : "Nuk mund të krijohet direktoria \"data\"", + "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Kjo zakonisht mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria rrënjë. Shih %s", + "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Zakonisht lejet mund të rregullohen duke i dhënë serverit të web-it akses shkrimi tek direktoria rrënjë. Shih %s.", "Setting locale to %s failed" : "Caktimi i gjuhës si %s dështoi", "Please install one of these locales on your system and restart your webserver." : "Ju lutemi, instaloni te sistemi juaj një prej këtyre vendoreve dhe rinisni shërbyesin tuaj web.", "Please ask your server administrator to install the module." : "Ju lutemi, kërkojini përgjegjësit të shërbyesit ta instalojë modulin.", @@ -195,6 +214,7 @@ "Your data directory must be an absolute path" : "Direktoria juaj e të dhënave duhet të jetë një path absolut", "Check the value of \"datadirectory\" in your configuration" : "Kontrolloni vlerën e \"datadirectory\" te formësimi juaj", "Your data directory is invalid" : "Direktoria juaj e të dhënave është i pavlefshëm", + "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Sigurohu që ekziston një skedar i quajtur \".ocdata\" në rrënjën e direktorisë së të dhënave.", "Could not obtain lock type %d on \"%s\"." : "S’u mor dot lloj kyçjeje %d në \"%s\".", "Storage unauthorized. %s" : "Depozitë e paautorizuar. %s", "Storage incomplete configuration. %s" : "Formësim jo i plotë i depozitës. %s", @@ -205,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "S’ka modul me id: %s. Ju lutemi, aktivizojeni te rregullimet tuaja për aplikacionin ose lidhuni me përgjegjësin tuaj.", "Server settings" : "Konfigurimi i serverit", "You need to enter either an existing account or the administrator." : "Lypset të jepni ose një llogari ekzistuese, ose llogarinë e përgjegjësit.", - "%s shared »%s« with you" : "%s ndau me ju »%s«", - "%s via %s" : "%s përmes %s", "Cannot increase permissions of %s" : "S’mund të shtohen lejet për %s", "Files can't be shared with delete permissions" : "Kartelat s’mund të ndahen me leje fshirjeje", "Files can't be shared with create permissions" : "Kartelat s’mund të ndahen me leje krijimi", diff --git a/lib/l10n/sv.js b/lib/l10n/sv.js index 29e0611f950..b9fc016f631 100644 --- a/lib/l10n/sv.js +++ b/lib/l10n/sv.js @@ -103,6 +103,8 @@ OC.L10N.register( "Sharing %s failed, because the sharing backend for %s could not find its source" : "Delning %s misslyckades därför att delningsgränsnittet för %s inte kunde hitta sin källa", "Sharing %s failed, because the file could not be found in the file cache" : "Delning %s misslyckades därför att filen inte kunde hittas i filcachen", "Expiration date is in the past" : "Utgångsdatum är i det förflutna", + "%s shared »%s« with you" : "%s delade »%s« med dig", + "%s via %s" : "%s via %s", "Could not find category \"%s\"" : "Kunde inte hitta kategorin \"%s\"", "Sunday" : "Söndag", "Monday" : "Måndag", @@ -202,8 +204,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modulen med id: %s finns inte. Vänligen aktivera det i dina app-inställningar eller kontakta din administratör.", "Server settings" : "Serverinställningar", "You need to enter either an existing account or the administrator." : "Du måste antingen ange ett befintligt konto eller administratör.", - "%s shared »%s« with you" : "%s delade »%s« med dig", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Kan ej öka behörigheterna för %s", "Files can't be shared with delete permissions" : "Filerna kan ej delas med \"radera behörigheter\"", "Files can't be shared with create permissions" : "Filerna kan ej delas med \"skapa behörigheter\"", diff --git a/lib/l10n/sv.json b/lib/l10n/sv.json index f5dc6cd86fb..0ff89c129e0 100644 --- a/lib/l10n/sv.json +++ b/lib/l10n/sv.json @@ -101,6 +101,8 @@ "Sharing %s failed, because the sharing backend for %s could not find its source" : "Delning %s misslyckades därför att delningsgränsnittet för %s inte kunde hitta sin källa", "Sharing %s failed, because the file could not be found in the file cache" : "Delning %s misslyckades därför att filen inte kunde hittas i filcachen", "Expiration date is in the past" : "Utgångsdatum är i det förflutna", + "%s shared »%s« with you" : "%s delade »%s« med dig", + "%s via %s" : "%s via %s", "Could not find category \"%s\"" : "Kunde inte hitta kategorin \"%s\"", "Sunday" : "Söndag", "Monday" : "Måndag", @@ -200,8 +202,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modulen med id: %s finns inte. Vänligen aktivera det i dina app-inställningar eller kontakta din administratör.", "Server settings" : "Serverinställningar", "You need to enter either an existing account or the administrator." : "Du måste antingen ange ett befintligt konto eller administratör.", - "%s shared »%s« with you" : "%s delade »%s« med dig", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Kan ej öka behörigheterna för %s", "Files can't be shared with delete permissions" : "Filerna kan ej delas med \"radera behörigheter\"", "Files can't be shared with create permissions" : "Filerna kan ej delas med \"skapa behörigheter\"", diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js index d4477b8002d..56bc9fad258 100644 --- a/lib/l10n/tr.js +++ b/lib/l10n/tr.js @@ -121,6 +121,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Ekleme izni ile dosya paylaşılamaz", "Expiration date is in the past" : "Son kullanma tarihi geçmişte", "Can’t set expiration date more than %s days in the future" : "Son kullanma tarihi %sgünden sonrası olarak ayarlanamaz", + "%s shared »%s« with you" : "%s sizinle »%s« ögesini paylaştı", + "%s via %s" : "%s, %s aracılığıyla", "The requested share does not exist anymore" : "Erişilmek istenilen paylaşım artık yok", "Could not find category \"%s\"" : "\"%s\" kategorisi bulunamadı", "Sunday" : "Pazar", @@ -225,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "%s kodlu modül bulunamadı. Lütfen uygulamalarınız içinden modülü etkinleştirin ya da sistem yöneticinizle görüşün.", "Server settings" : "Sunucu ayarları", "You need to enter either an existing account or the administrator." : "Varolan bir hesap ya da yönetici hesabı yazmalısınız.", - "%s shared »%s« with you" : "%s sizinle »%s« ögesini paylaştı", - "%s via %s" : "%s, %s aracılığıyla", "Cannot increase permissions of %s" : "%s izinleri yükseltilemiyor", "Files can't be shared with delete permissions" : "Dosyalar silme izniyle paylaşılamaz", "Files can't be shared with create permissions" : "Dosyalar oluşturma izniyle paylaşılamaz", diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json index cdd37b07a30..6382ebc40ee 100644 --- a/lib/l10n/tr.json +++ b/lib/l10n/tr.json @@ -119,6 +119,8 @@ "Files can’t be shared with create permissions" : "Ekleme izni ile dosya paylaşılamaz", "Expiration date is in the past" : "Son kullanma tarihi geçmişte", "Can’t set expiration date more than %s days in the future" : "Son kullanma tarihi %sgünden sonrası olarak ayarlanamaz", + "%s shared »%s« with you" : "%s sizinle »%s« ögesini paylaştı", + "%s via %s" : "%s, %s aracılığıyla", "The requested share does not exist anymore" : "Erişilmek istenilen paylaşım artık yok", "Could not find category \"%s\"" : "\"%s\" kategorisi bulunamadı", "Sunday" : "Pazar", @@ -223,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "%s kodlu modül bulunamadı. Lütfen uygulamalarınız içinden modülü etkinleştirin ya da sistem yöneticinizle görüşün.", "Server settings" : "Sunucu ayarları", "You need to enter either an existing account or the administrator." : "Varolan bir hesap ya da yönetici hesabı yazmalısınız.", - "%s shared »%s« with you" : "%s sizinle »%s« ögesini paylaştı", - "%s via %s" : "%s, %s aracılığıyla", "Cannot increase permissions of %s" : "%s izinleri yükseltilemiyor", "Files can't be shared with delete permissions" : "Dosyalar silme izniyle paylaşılamaz", "Files can't be shared with create permissions" : "Dosyalar oluşturma izniyle paylaşılamaz", diff --git a/lib/l10n/zh_CN.js b/lib/l10n/zh_CN.js index aee9d512d9a..0402c802a46 100644 --- a/lib/l10n/zh_CN.js +++ b/lib/l10n/zh_CN.js @@ -12,6 +12,7 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s 和 %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s 和 %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s 和 %5$s", + "Education Edition" : "教育版", "Enterprise bundle" : "企业捆绑包", "Groupware bundle" : "群组捆绑包", "Social sharing bundle" : "社交分享捆绑包", @@ -120,6 +121,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "无法分享有创建权限的文件", "Expiration date is in the past" : "到期日期已过.", "Can’t set expiration date more than %s days in the future" : "无法将过期日期设置为超过 %s 天.", + "%s shared »%s« with you" : "%s 向您分享了 »%s«", + "%s via %s" : "%s 通过 %s", "The requested share does not exist anymore" : "当前请求的共享已经不存在", "Could not find category \"%s\"" : "无法找到分类 \"%s\"", "Sunday" : "星期日", @@ -224,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "ID 为 %s 的模块不存在. 请在应用设置中启用或联系您的管理员.", "Server settings" : "服务器设置", "You need to enter either an existing account or the administrator." : "你需要输入一个数据库中已有的账户或管理员账户。", - "%s shared »%s« with you" : "%s 向您分享了 »%s«", - "%s via %s" : "%s 通过 %s", "Cannot increase permissions of %s" : "无法提升 %s 的权限", "Files can't be shared with delete permissions" : "无法分享有删除权限的文件", "Files can't be shared with create permissions" : "无法分享有创建权限的文件", diff --git a/lib/l10n/zh_CN.json b/lib/l10n/zh_CN.json index 40af580cd2d..de4f91d70d1 100644 --- a/lib/l10n/zh_CN.json +++ b/lib/l10n/zh_CN.json @@ -10,6 +10,7 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s 和 %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s 和 %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s 和 %5$s", + "Education Edition" : "教育版", "Enterprise bundle" : "企业捆绑包", "Groupware bundle" : "群组捆绑包", "Social sharing bundle" : "社交分享捆绑包", @@ -118,6 +119,8 @@ "Files can’t be shared with create permissions" : "无法分享有创建权限的文件", "Expiration date is in the past" : "到期日期已过.", "Can’t set expiration date more than %s days in the future" : "无法将过期日期设置为超过 %s 天.", + "%s shared »%s« with you" : "%s 向您分享了 »%s«", + "%s via %s" : "%s 通过 %s", "The requested share does not exist anymore" : "当前请求的共享已经不存在", "Could not find category \"%s\"" : "无法找到分类 \"%s\"", "Sunday" : "星期日", @@ -222,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "ID 为 %s 的模块不存在. 请在应用设置中启用或联系您的管理员.", "Server settings" : "服务器设置", "You need to enter either an existing account or the administrator." : "你需要输入一个数据库中已有的账户或管理员账户。", - "%s shared »%s« with you" : "%s 向您分享了 »%s«", - "%s via %s" : "%s 通过 %s", "Cannot increase permissions of %s" : "无法提升 %s 的权限", "Files can't be shared with delete permissions" : "无法分享有删除权限的文件", "Files can't be shared with create permissions" : "无法分享有创建权限的文件", diff --git a/lib/l10n/zh_TW.js b/lib/l10n/zh_TW.js index fcde5a9016a..dc33fd82ac4 100644 --- a/lib/l10n/zh_TW.js +++ b/lib/l10n/zh_TW.js @@ -92,6 +92,8 @@ OC.L10N.register( "Sharing %s failed, because the sharing backend for %s could not find its source" : "分享 %s 失敗,因為 %s 的分享後端找不到它的來源", "Sharing %s failed, because the file could not be found in the file cache" : "分享 %s 失敗,因為在快取中找不到該檔案", "Expiration date is in the past" : "到期日是之前的時間", + "%s shared »%s« with you" : "%s 與您分享了 %s", + "%s via %s" : "%s 經由 %s", "Could not find category \"%s\"" : "找不到分類:\"%s\"", "Sunday" : "週日", "Monday" : "週一", @@ -185,8 +187,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "模組編號: %s 不存在,請在應用程式設定中開啟,或是聯絡系統管理員", "Server settings" : "伺服器設定", "You need to enter either an existing account or the administrator." : "您必須輸入一個現有的帳號或管理員帳號。", - "%s shared »%s« with you" : "%s 與您分享了 %s", - "%s via %s" : "%s 經由 %s", "Cannot increase permissions of %s" : "無法增加%s的權限", "Files can't be shared with delete permissions" : "無法分享具有刪除權限的檔案", "Files can't be shared with create permissions" : "無法分享具有新建權限的檔案", diff --git a/lib/l10n/zh_TW.json b/lib/l10n/zh_TW.json index 40c0a83ffcc..130d64680eb 100644 --- a/lib/l10n/zh_TW.json +++ b/lib/l10n/zh_TW.json @@ -90,6 +90,8 @@ "Sharing %s failed, because the sharing backend for %s could not find its source" : "分享 %s 失敗,因為 %s 的分享後端找不到它的來源", "Sharing %s failed, because the file could not be found in the file cache" : "分享 %s 失敗,因為在快取中找不到該檔案", "Expiration date is in the past" : "到期日是之前的時間", + "%s shared »%s« with you" : "%s 與您分享了 %s", + "%s via %s" : "%s 經由 %s", "Could not find category \"%s\"" : "找不到分類:\"%s\"", "Sunday" : "週日", "Monday" : "週一", @@ -183,8 +185,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "模組編號: %s 不存在,請在應用程式設定中開啟,或是聯絡系統管理員", "Server settings" : "伺服器設定", "You need to enter either an existing account or the administrator." : "您必須輸入一個現有的帳號或管理員帳號。", - "%s shared »%s« with you" : "%s 與您分享了 %s", - "%s via %s" : "%s 經由 %s", "Cannot increase permissions of %s" : "無法增加%s的權限", "Files can't be shared with delete permissions" : "無法分享具有刪除權限的檔案", "Files can't be shared with create permissions" : "無法分享具有新建權限的檔案", diff --git a/lib/private/App/CodeChecker/MigrationSchemaChecker.php b/lib/private/App/CodeChecker/MigrationSchemaChecker.php index 9dee358327d..ea403ad7758 100644 --- a/lib/private/App/CodeChecker/MigrationSchemaChecker.php +++ b/lib/private/App/CodeChecker/MigrationSchemaChecker.php @@ -36,6 +36,12 @@ class MigrationSchemaChecker extends NodeVisitorAbstract { /** @var array */ public $errors = []; + /** + * @param Node $node + * @return void + * + * @suppress PhanUndeclaredProperty + */ public function enterNode(Node $node) { /** * Check tables diff --git a/lib/private/App/DependencyAnalyzer.php b/lib/private/App/DependencyAnalyzer.php index 1ec028b9728..4e998c71f32 100644 --- a/lib/private/App/DependencyAnalyzer.php +++ b/lib/private/App/DependencyAnalyzer.php @@ -179,7 +179,7 @@ class DependencyAnalyzer { }, $supportedDatabases); $currentDatabase = $this->platform->getDatabase(); if (!in_array($currentDatabase, $supportedDatabases)) { - $missing[] = (string)$this->l->t('Following databases are supported: %s', implode(', ', $supportedDatabases)); + $missing[] = (string)$this->l->t('Following databases are supported: %s', [implode(', ', $supportedDatabases)]); } return $missing; } @@ -282,7 +282,7 @@ class DependencyAnalyzer { } $currentOS = $this->platform->getOS(); if (!in_array($currentOS, $oss)) { - $missing[] = (string)$this->l->t('Following platforms are supported: %s', implode(', ', $oss)); + $missing[] = (string)$this->l->t('Following platforms are supported: %s', [implode(', ', $oss)]); } return $missing; } @@ -315,12 +315,12 @@ class DependencyAnalyzer { if (!is_null($minVersion)) { if ($this->compareSmaller($this->platform->getOcVersion(), $minVersion)) { - $missing[] = (string)$this->l->t('Server version %s or higher is required.', $this->toVisibleVersion($minVersion)); + $missing[] = (string)$this->l->t('Server version %s or higher is required.', [$this->toVisibleVersion($minVersion)]); } } if (!is_null($maxVersion)) { if ($this->compareBigger($this->platform->getOcVersion(), $maxVersion)) { - $missing[] = (string)$this->l->t('Server version %s or lower is required.', $this->toVisibleVersion($maxVersion)); + $missing[] = (string)$this->l->t('Server version %s or lower is required.', [$this->toVisibleVersion($maxVersion)]); } } return $missing; diff --git a/lib/private/AppFramework/DependencyInjection/DIContainer.php b/lib/private/AppFramework/DependencyInjection/DIContainer.php index b233f3ca9b6..d0c69c3bf32 100644 --- a/lib/private/AppFramework/DependencyInjection/DIContainer.php +++ b/lib/private/AppFramework/DependencyInjection/DIContainer.php @@ -75,7 +75,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { * Put your class dependencies in here * @param string $appName the name of the app * @param array $urlParams - * @param ServerContainer $server + * @param ServerContainer|null $server */ public function __construct($appName, $urlParams = array(), ServerContainer $server = null){ parent::__construct(); diff --git a/lib/private/AppFramework/Http/Request.php b/lib/private/AppFramework/Http/Request.php index 09e18f74177..956744e5d5e 100644 --- a/lib/private/AppFramework/Http/Request.php +++ b/lib/private/AppFramework/Http/Request.php @@ -721,7 +721,7 @@ class Request implements \ArrayAccess, \Countable, IRequest { // strip off the script name's dir and file name // FIXME: Sabre does not really belong here - list($path, $name) = \Sabre\HTTP\URLUtil::splitPath($scriptName); + list($path, $name) = \Sabre\Uri\split($scriptName); if (!empty($path)) { if($path === $pathInfo || strpos($pathInfo, $path.'/') === 0) { $pathInfo = substr($pathInfo, strlen($path)); diff --git a/lib/private/AppFramework/Middleware/OCSMiddleware.php b/lib/private/AppFramework/Middleware/OCSMiddleware.php index 0fc7bb0f0ec..46f2881b076 100644 --- a/lib/private/AppFramework/Middleware/OCSMiddleware.php +++ b/lib/private/AppFramework/Middleware/OCSMiddleware.php @@ -52,7 +52,7 @@ class OCSMiddleware extends Middleware { } /** - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName */ public function beforeController($controller, $methodName) { @@ -67,7 +67,7 @@ class OCSMiddleware extends Middleware { } /** - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * @param \Exception $exception * @throws \Exception @@ -87,7 +87,7 @@ class OCSMiddleware extends Middleware { } /** - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * @param Response $response * @return \OCP\AppFramework\Http\Response @@ -120,7 +120,7 @@ class OCSMiddleware extends Middleware { * @param string $message * @return V1Response|V2Response */ - private function buildNewResponse($controller, $code, $message) { + private function buildNewResponse(Controller $controller, $code, $message) { $format = $this->getFormat($controller); $data = new DataResponse(); @@ -135,10 +135,10 @@ class OCSMiddleware extends Middleware { } /** - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @return string */ - private function getFormat($controller) { + private function getFormat(Controller $controller) { // get format from the url format or request format parameter $format = $this->request->getParam('format'); diff --git a/lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php b/lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php index b361f453bdb..e349960115d 100644 --- a/lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php +++ b/lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php @@ -23,6 +23,7 @@ namespace OC\AppFramework\Middleware\Security; use OC\AppFramework\Utility\ControllerMethodReflector; use OC\Security\Bruteforce\Throttler; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http\Response; use OCP\AppFramework\Middleware; use OCP\IRequest; @@ -75,7 +76,7 @@ class BruteForceMiddleware extends Middleware { $action = $this->reflector->getAnnotationParameter('BruteForceProtection', 'action'); $ip = $this->request->getRemoteAddress(); $this->throttler->sleepDelay($ip, $action); - $this->throttler->registerAttempt($action, $ip); + $this->throttler->registerAttempt($action, $ip, $response->getThrottleMetadata()); } return parent::afterController($controller, $methodName, $response); diff --git a/lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php b/lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php index e9fcc1fdea5..28ef8b43ffc 100644 --- a/lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php +++ b/lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php @@ -24,6 +24,7 @@ namespace OC\AppFramework\Middleware\Security; use OC\AppFramework\Utility\ControllerMethodReflector; use OC\Security\RateLimiting\Exception\RateLimitExceededException; use OC\Security\RateLimiting\Limiter; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http\JSONResponse; use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Middleware; diff --git a/lib/private/AppFramework/Middleware/SessionMiddleware.php b/lib/private/AppFramework/Middleware/SessionMiddleware.php index c5fefa77fc4..dd2029bf053 100644 --- a/lib/private/AppFramework/Middleware/SessionMiddleware.php +++ b/lib/private/AppFramework/Middleware/SessionMiddleware.php @@ -24,6 +24,7 @@ namespace OC\AppFramework\Middleware; use OC\AppFramework\Utility\ControllerMethodReflector; +use OCP\AppFramework\Controller; use OCP\IRequest; use OCP\AppFramework\Http\Response; use OCP\AppFramework\Middleware; @@ -55,7 +56,7 @@ class SessionMiddleware extends Middleware { } /** - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName */ public function beforeController($controller, $methodName) { @@ -66,7 +67,7 @@ class SessionMiddleware extends Middleware { } /** - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * @param Response $response * @return Response diff --git a/lib/private/BackgroundJob/Job.php b/lib/private/BackgroundJob/Job.php index cb9328f01b9..bf0195b0a1f 100644 --- a/lib/private/BackgroundJob/Job.php +++ b/lib/private/BackgroundJob/Job.php @@ -45,7 +45,7 @@ abstract class Job implements IJob { /** * @param JobList $jobList - * @param ILogger $logger + * @param ILogger|null $logger */ public function execute($jobList, ILogger $logger = null) { $jobList->setLastRun($this); diff --git a/lib/private/BackgroundJob/QueuedJob.php b/lib/private/BackgroundJob/QueuedJob.php index e5afc792331..2abfd257a4c 100644 --- a/lib/private/BackgroundJob/QueuedJob.php +++ b/lib/private/BackgroundJob/QueuedJob.php @@ -36,7 +36,7 @@ abstract class QueuedJob extends Job { * run the job, then remove it from the joblist * * @param JobList $jobList - * @param ILogger $logger + * @param ILogger|null $logger */ public function execute($jobList, ILogger $logger = null) { $jobList->remove($this, $this->argument); diff --git a/lib/private/BackgroundJob/TimedJob.php b/lib/private/BackgroundJob/TimedJob.php index 22b48a80371..9179cf258e2 100644 --- a/lib/private/BackgroundJob/TimedJob.php +++ b/lib/private/BackgroundJob/TimedJob.php @@ -47,7 +47,7 @@ abstract class TimedJob extends Job { * run the job if * * @param JobList $jobList - * @param ILogger $logger + * @param ILogger|null $logger */ public function execute($jobList, ILogger $logger = null) { if ((time() - $this->lastRun) > $this->interval) { diff --git a/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php b/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php index 27ebf1a04f9..26aedb9a8bb 100644 --- a/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php +++ b/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php @@ -25,6 +25,6 @@ use OC\DB\QueryBuilder\QueryFunction; class PgSqlFunctionBuilder extends FunctionBuilder { public function concat($x, $y) { - return new QueryFunction($this->helper->quoteColumnName($x) . ' || ' . $this->helper->quoteColumnName($y)); + return new QueryFunction('(' . $this->helper->quoteColumnName($x) . ' || ' . $this->helper->quoteColumnName($y) . ')'); } } diff --git a/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php b/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php index e985b7306a4..f38445a6d36 100644 --- a/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php +++ b/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php @@ -25,6 +25,6 @@ use OC\DB\QueryBuilder\QueryFunction; class SqliteFunctionBuilder extends FunctionBuilder { public function concat($x, $y) { - return new QueryFunction($this->helper->quoteColumnName($x) . ' || ' . $this->helper->quoteColumnName($y)); + return new QueryFunction('(' . $this->helper->quoteColumnName($x) . ' || ' . $this->helper->quoteColumnName($y) . ')'); } } diff --git a/lib/private/DB/QueryBuilder/QueryBuilder.php b/lib/private/DB/QueryBuilder/QueryBuilder.php index eac13b452ac..217789ce728 100644 --- a/lib/private/DB/QueryBuilder/QueryBuilder.php +++ b/lib/private/DB/QueryBuilder/QueryBuilder.php @@ -242,7 +242,7 @@ class QueryBuilder implements IQueryBuilder { * * @param string|integer $key The parameter position or name. * @param mixed $value The parameter value. - * @param string|null $type One of the IQueryBuilder::PARAM_* constants. + * @param string|null|int $type One of the IQueryBuilder::PARAM_* constants. * * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance. */ diff --git a/lib/private/Files/Cache/Scanner.php b/lib/private/Files/Cache/Scanner.php index 229c6fc7d66..a81c34c31fa 100644 --- a/lib/private/Files/Cache/Scanner.php +++ b/lib/private/Files/Cache/Scanner.php @@ -88,7 +88,7 @@ class Scanner extends BasicEmitter implements IScanner { $this->storage = $storage; $this->storageId = $this->storage->getId(); $this->cache = $storage->getCache(); - $this->cacheActive = !Config::getSystemValue('filesystem_cache_readonly', false); + $this->cacheActive = !\OC::$server->getConfig()->getSystemValue('filesystem_cache_readonly', false); $this->lockingProvider = \OC::$server->getLockingProvider(); } diff --git a/lib/private/Files/Storage/Common.php b/lib/private/Files/Storage/Common.php index 5a57532f71c..b842d86f6a7 100644 --- a/lib/private/Files/Storage/Common.php +++ b/lib/private/Files/Storage/Common.php @@ -52,6 +52,7 @@ use OCP\Files\InvalidDirectoryException; use OCP\Files\InvalidPathException; use OCP\Files\ReservedWordException; use OCP\Files\Storage\ILockingStorage; +use OCP\Files\Storage\IStorage; use OCP\Lock\ILockingProvider; use OCP\Lock\LockedException; @@ -578,13 +579,13 @@ abstract class Common implements Storage, ILockingStorage { } /** - * @param \OCP\Files\Storage $sourceStorage + * @param IStorage $sourceStorage * @param string $sourceInternalPath * @param string $targetInternalPath * @param bool $preserveMtime * @return bool */ - public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = false) { + public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = false) { if ($sourceStorage === $this) { return $this->copy($sourceInternalPath, $targetInternalPath); } @@ -625,12 +626,12 @@ abstract class Common implements Storage, ILockingStorage { } /** - * @param \OCP\Files\Storage $sourceStorage + * @param IStorage $sourceStorage * @param string $sourceInternalPath * @param string $targetInternalPath * @return bool */ - public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) { + public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) { if ($sourceStorage === $this) { return $this->rename($sourceInternalPath, $targetInternalPath); } diff --git a/lib/private/Files/Storage/FailedStorage.php b/lib/private/Files/Storage/FailedStorage.php index f717c798c5a..d2aae33bb21 100644 --- a/lib/private/Files/Storage/FailedStorage.php +++ b/lib/private/Files/Storage/FailedStorage.php @@ -25,6 +25,7 @@ namespace OC\Files\Storage; use OC\Files\Cache\FailedCache; +use OCP\Files\Storage\IStorage; use \OCP\Lock\ILockingProvider; use \OCP\Files\StorageNotAvailableException; @@ -183,11 +184,11 @@ class FailedStorage extends Common { return true; } - public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) { + public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) { throw new StorageNotAvailableException($this->e->getMessage(), $this->e->getCode(), $this->e); } - public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) { + public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) { throw new StorageNotAvailableException($this->e->getMessage(), $this->e->getCode(), $this->e); } diff --git a/lib/private/Files/Storage/Local.php b/lib/private/Files/Storage/Local.php index 70cb2e0ccc4..c19427e5f9b 100644 --- a/lib/private/Files/Storage/Local.php +++ b/lib/private/Files/Storage/Local.php @@ -37,6 +37,7 @@ namespace OC\Files\Storage; use OC\Files\Storage\Wrapper\Jail; use OCP\Files\ForbiddenException; +use OCP\Files\Storage\IStorage; /** * for local filestore, we only have to map the paths @@ -404,12 +405,12 @@ class Local extends \OC\Files\Storage\Common { } /** - * @param \OCP\Files\Storage $sourceStorage + * @param IStorage $sourceStorage * @param string $sourceInternalPath * @param string $targetInternalPath * @return bool */ - public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = false) { + public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = false) { if ($sourceStorage->instanceOfStorage('\OC\Files\Storage\Local')) { /** * @var \OC\Files\Storage\Local $sourceStorage @@ -422,12 +423,12 @@ class Local extends \OC\Files\Storage\Common { } /** - * @param \OCP\Files\Storage $sourceStorage + * @param IStorage $sourceStorage * @param string $sourceInternalPath * @param string $targetInternalPath * @return bool */ - public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) { + public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) { if ($sourceStorage->instanceOfStorage(Local::class)) { if ($sourceStorage->instanceOfStorage(Jail::class)) { /** diff --git a/lib/private/Files/Storage/Wrapper/Availability.php b/lib/private/Files/Storage/Wrapper/Availability.php index 2a44a3a17d5..1fd38b5d6b7 100644 --- a/lib/private/Files/Storage/Wrapper/Availability.php +++ b/lib/private/Files/Storage/Wrapper/Availability.php @@ -22,6 +22,8 @@ */ namespace OC\Files\Storage\Wrapper; +use OCP\Files\Storage\IStorage; + /** * Availability checker for storages * @@ -432,7 +434,7 @@ class Availability extends Wrapper { } /** {@inheritdoc} */ - public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) { + public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) { $this->checkAvailability(); try { return parent::copyFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath); @@ -443,7 +445,7 @@ class Availability extends Wrapper { } /** {@inheritdoc} */ - public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) { + public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) { $this->checkAvailability(); try { return parent::moveFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath); diff --git a/lib/private/Files/Storage/Wrapper/Encoding.php b/lib/private/Files/Storage/Wrapper/Encoding.php index 389da06f7b7..240a1f3e049 100644 --- a/lib/private/Files/Storage/Wrapper/Encoding.php +++ b/lib/private/Files/Storage/Wrapper/Encoding.php @@ -22,6 +22,7 @@ namespace OC\Files\Storage\Wrapper; +use OCP\Files\Storage\IStorage; use OCP\ICache; use OC\Cache\CappedMemoryCache; @@ -483,12 +484,12 @@ class Encoding extends Wrapper { } /** - * @param \OCP\Files\Storage $sourceStorage + * @param IStorage $sourceStorage * @param string $sourceInternalPath * @param string $targetInternalPath * @return bool */ - public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) { + public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) { if ($sourceStorage === $this) { return $this->copy($sourceInternalPath, $this->findPathToUse($targetInternalPath)); } @@ -501,12 +502,12 @@ class Encoding extends Wrapper { } /** - * @param \OCP\Files\Storage $sourceStorage + * @param IStorage $sourceStorage * @param string $sourceInternalPath * @param string $targetInternalPath * @return bool */ - public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) { + public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) { if ($sourceStorage === $this) { $result = $this->rename($sourceInternalPath, $this->findPathToUse($targetInternalPath)); if ($result) { diff --git a/lib/private/Files/Storage/Wrapper/Encryption.php b/lib/private/Files/Storage/Wrapper/Encryption.php index 793849914d7..e359e86319c 100644 --- a/lib/private/Files/Storage/Wrapper/Encryption.php +++ b/lib/private/Files/Storage/Wrapper/Encryption.php @@ -590,13 +590,13 @@ class Encryption extends Wrapper { } /** - * @param Storage $sourceStorage + * @param Storage\IStorage $sourceStorage * @param string $sourceInternalPath * @param string $targetInternalPath * @param bool $preserveMtime * @return bool */ - public function moveFromStorage(Storage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = true) { + public function moveFromStorage(Storage\IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = true) { if ($sourceStorage === $this) { return $this->rename($sourceInternalPath, $targetInternalPath); } @@ -624,14 +624,14 @@ class Encryption extends Wrapper { /** - * @param Storage $sourceStorage + * @param Storage\IStorage $sourceStorage * @param string $sourceInternalPath * @param string $targetInternalPath * @param bool $preserveMtime * @param bool $isRename * @return bool */ - public function copyFromStorage(Storage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = false, $isRename = false) { + public function copyFromStorage(Storage\IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = false, $isRename = false) { // TODO clean this up once the underlying moveFromStorage in OC\Files\Storage\Wrapper\Common is fixed: // - call $this->storage->copyFromStorage() instead of $this->copyBetweenStorage @@ -645,12 +645,12 @@ class Encryption extends Wrapper { /** * Update the encrypted cache version in the database * - * @param Storage $sourceStorage + * @param Storage\IStorage $sourceStorage * @param string $sourceInternalPath * @param string $targetInternalPath * @param bool $isRename */ - private function updateEncryptedVersion(Storage $sourceStorage, $sourceInternalPath, $targetInternalPath, $isRename) { + private function updateEncryptedVersion(Storage\IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, $isRename) { $isEncrypted = $this->encryptionManager->isEnabled() && $this->shouldEncrypt($targetInternalPath) ? 1 : 0; $cacheInformation = [ 'encrypted' => (bool)$isEncrypted, @@ -682,7 +682,7 @@ class Encryption extends Wrapper { /** * copy file between two storages * - * @param Storage $sourceStorage + * @param Storage\IStorage $sourceStorage * @param string $sourceInternalPath * @param string $targetInternalPath * @param bool $preserveMtime @@ -690,7 +690,7 @@ class Encryption extends Wrapper { * @return bool * @throws \Exception */ - private function copyBetweenStorage(Storage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime, $isRename) { + private function copyBetweenStorage(Storage\IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime, $isRename) { // for versions we have nothing to do, because versions should always use the // key from the original file. Just create a 1:1 copy and done diff --git a/lib/private/Files/Storage/Wrapper/Jail.php b/lib/private/Files/Storage/Wrapper/Jail.php index 4fa2428c968..d30563341cb 100644 --- a/lib/private/Files/Storage/Wrapper/Jail.php +++ b/lib/private/Files/Storage/Wrapper/Jail.php @@ -26,6 +26,7 @@ namespace OC\Files\Storage\Wrapper; use OC\Files\Cache\Wrapper\CacheJail; use OC\Files\Cache\Wrapper\JailPropagator; +use OCP\Files\Storage\IStorage; use OCP\Lock\ILockingProvider; /** @@ -465,12 +466,12 @@ class Jail extends Wrapper { } /** - * @param \OCP\Files\Storage $sourceStorage + * @param IStorage $sourceStorage * @param string $sourceInternalPath * @param string $targetInternalPath * @return bool */ - public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) { + public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) { if ($sourceStorage === $this) { return $this->copy($sourceInternalPath, $targetInternalPath); } @@ -478,12 +479,12 @@ class Jail extends Wrapper { } /** - * @param \OCP\Files\Storage $sourceStorage + * @param IStorage $sourceStorage * @param string $sourceInternalPath * @param string $targetInternalPath * @return bool */ - public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) { + public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) { if ($sourceStorage === $this) { return $this->rename($sourceInternalPath, $targetInternalPath); } diff --git a/lib/private/Files/Storage/Wrapper/Quota.php b/lib/private/Files/Storage/Wrapper/Quota.php index 7312ed61dcc..e89a8d08de7 100644 --- a/lib/private/Files/Storage/Wrapper/Quota.php +++ b/lib/private/Files/Storage/Wrapper/Quota.php @@ -27,6 +27,7 @@ namespace OC\Files\Storage\Wrapper; use OCP\Files\Cache\ICacheEntry; +use OCP\Files\Storage\IStorage; class Quota extends Wrapper { @@ -170,12 +171,12 @@ class Quota extends Wrapper { } /** - * @param \OCP\Files\Storage $sourceStorage + * @param IStorage $sourceStorage * @param string $sourceInternalPath * @param string $targetInternalPath * @return bool */ - public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) { + public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) { $free = $this->free_space(''); if ($free < 0 or $this->getSize($sourceInternalPath, $sourceStorage) < $free) { return $this->storage->copyFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath); @@ -185,12 +186,12 @@ class Quota extends Wrapper { } /** - * @param \OCP\Files\Storage $sourceStorage + * @param IStorage $sourceStorage * @param string $sourceInternalPath * @param string $targetInternalPath * @return bool */ - public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) { + public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) { $free = $this->free_space(''); if ($free < 0 or $this->getSize($sourceInternalPath, $sourceStorage) < $free) { return $this->storage->moveFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath); diff --git a/lib/private/Files/Storage/Wrapper/Wrapper.php b/lib/private/Files/Storage/Wrapper/Wrapper.php index d7cd4b729db..847a714f7dd 100644 --- a/lib/private/Files/Storage/Wrapper/Wrapper.php +++ b/lib/private/Files/Storage/Wrapper/Wrapper.php @@ -28,6 +28,7 @@ namespace OC\Files\Storage\Wrapper; use OCP\Files\InvalidPathException; use OCP\Files\Storage\ILockingStorage; +use OCP\Files\Storage\IStorage; use OCP\Lock\ILockingProvider; class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage { @@ -542,12 +543,12 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage { } /** - * @param \OCP\Files\Storage $sourceStorage + * @param IStorage $sourceStorage * @param string $sourceInternalPath * @param string $targetInternalPath * @return bool */ - public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) { + public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) { if ($sourceStorage === $this) { return $this->copy($sourceInternalPath, $targetInternalPath); } @@ -556,12 +557,12 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage { } /** - * @param \OCP\Files\Storage $sourceStorage + * @param IStorage $sourceStorage * @param string $sourceInternalPath * @param string $targetInternalPath * @return bool */ - public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) { + public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) { if ($sourceStorage === $this) { return $this->rename($sourceInternalPath, $targetInternalPath); } diff --git a/lib/private/Group/Group.php b/lib/private/Group/Group.php index 69dce215694..32ab79adab3 100644 --- a/lib/private/Group/Group.php +++ b/lib/private/Group/Group.php @@ -29,6 +29,7 @@ namespace OC\Group; use OCP\IGroup; +use OCP\IUser; class Group implements IGroup { /** @var null|string */ @@ -119,10 +120,10 @@ class Group implements IGroup { /** * check if a user is in the group * - * @param \OC\User\User $user + * @param IUser $user * @return bool */ - public function inGroup($user) { + public function inGroup(IUser $user) { if (isset($this->users[$user->getUID()])) { return true; } @@ -138,9 +139,9 @@ class Group implements IGroup { /** * add a user to the group * - * @param \OC\User\User $user + * @param IUser $user */ - public function addUser($user) { + public function addUser(IUser $user) { if ($this->inGroup($user)) { return; } diff --git a/lib/private/Group/Manager.php b/lib/private/Group/Manager.php index 61b47fdd448..6d4f5a091c6 100644 --- a/lib/private/Group/Manager.php +++ b/lib/private/Group/Manager.php @@ -246,10 +246,10 @@ class Manager extends PublicEmitter implements IGroupManager { } /** - * @param \OC\User\User|null $user + * @param IUser|null $user * @return \OC\Group\Group[] */ - public function getUserGroups($user) { + public function getUserGroups(IUser $user= null) { if (!$user instanceof IUser) { return []; } @@ -303,10 +303,10 @@ class Manager extends PublicEmitter implements IGroupManager { /** * get a list of group ids for a user - * @param \OC\User\User $user + * @param IUser $user * @return array with group ids */ - public function getUserGroupIds($user) { + public function getUserGroupIds(IUser $user) { return array_map(function($value) { return (string) $value; }, array_keys($this->getUserGroups($user))); diff --git a/lib/private/L10N/L10NString.php b/lib/private/L10N/L10NString.php index fd2f14f9f28..75fcd7f5e44 100644 --- a/lib/private/L10N/L10NString.php +++ b/lib/private/L10N/L10NString.php @@ -73,7 +73,7 @@ class L10NString implements \JsonSerializable { } // Replace %n first (won't interfere with vsprintf) - $text = str_replace('%n', $this->count, $text); + $text = str_replace('%n', (string)$this->count, $text); return vsprintf($text, $this->parameters); } diff --git a/lib/private/Lockdown/Filesystem/NullStorage.php b/lib/private/Lockdown/Filesystem/NullStorage.php index ea911b90064..831d8a8b2a0 100644 --- a/lib/private/Lockdown/Filesystem/NullStorage.php +++ b/lib/private/Lockdown/Filesystem/NullStorage.php @@ -22,6 +22,7 @@ namespace OC\Lockdown\Filesystem; use Icewind\Streams\IteratorDirectory; use OC\Files\FileInfo; use OC\Files\Storage\Common; +use OCP\Files\Storage\IStorage; class NullStorage extends Common { public function __construct($parameters) { @@ -156,11 +157,11 @@ class NullStorage extends Common { return false; } - public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) { + public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) { throw new \OC\ForbiddenException('This request is not allowed to access the filesystem'); } - public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) { + public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) { throw new \OC\ForbiddenException('This request is not allowed to access the filesystem'); } diff --git a/lib/private/Mail/EMailTemplate.php b/lib/private/Mail/EMailTemplate.php index 8227e69ef06..a55e6f9e5b5 100644 --- a/lib/private/Mail/EMailTemplate.php +++ b/lib/private/Mail/EMailTemplate.php @@ -365,7 +365,7 @@ EOF; * Adds a heading to the email * * @param string $title - * @param string $plainTitle|bool Title that is used in the plain text email + * @param string|bool $plainTitle Title that is used in the plain text email * if empty the $title is used, if false none will be used */ public function addHeading($title, $plainTitle = '') { diff --git a/lib/private/Migration/BackgroundRepair.php b/lib/private/Migration/BackgroundRepair.php index 495b868607c..cf4abbce15e 100644 --- a/lib/private/Migration/BackgroundRepair.php +++ b/lib/private/Migration/BackgroundRepair.php @@ -53,7 +53,7 @@ class BackgroundRepair extends TimedJob { * run the job, then remove it from the job list * * @param JobList $jobList - * @param ILogger $logger + * @param ILogger|null $logger */ public function execute($jobList, ILogger $logger = null) { // add an interval of 15 mins diff --git a/lib/private/OCS/Exception.php b/lib/private/OCS/Exception.php index 58b13f52df9..485c5c4d40f 100644 --- a/lib/private/OCS/Exception.php +++ b/lib/private/OCS/Exception.php @@ -25,7 +25,11 @@ namespace OC\OCS; class Exception extends \Exception { + /** @var Result */ + private $result; + public function __construct(Result $result) { + parent::__construct(); $this->result = $result; } diff --git a/lib/private/Preview/Office.php b/lib/private/Preview/Office.php index a05ffef9e9a..322b254e38e 100644 --- a/lib/private/Preview/Office.php +++ b/lib/private/Preview/Office.php @@ -42,7 +42,7 @@ abstract class Office extends Provider { $tmpDir = \OC::$server->getTempManager()->getTempBaseDir(); $defaultParameters = ' -env:UserInstallation=file://' . escapeshellarg($tmpDir . '/owncloud-' . \OC_Util::getInstanceId() . '/') . ' --headless --nologo --nofirststartwizard --invisible --norestore --convert-to pdf --outdir '; - $clParameters = \OCP\Config::getSystemValue('preview_office_cl_parameters', $defaultParameters); + $clParameters = \OC::$server->getConfig()->getSystemValue('preview_office_cl_parameters', $defaultParameters); $exec = $this->cmd . $clParameters . escapeshellarg($tmpDir) . ' ' . escapeshellarg($absPath); diff --git a/lib/private/Search/Result/File.php b/lib/private/Search/Result/File.php index eb4750d8de3..98ebef8753a 100644 --- a/lib/private/Search/Result/File.php +++ b/lib/private/Search/Result/File.php @@ -91,7 +91,7 @@ class File extends \OCP\Search\Result { $this->path = $path; $this->size = $data->getSize(); $this->modified = $data->getMtime(); - $this->mime = $data->getMimetype(); + $this->mime_type = $data->getMimetype(); } /** diff --git a/lib/private/Security/CSRF/CsrfToken.php b/lib/private/Security/CSRF/CsrfToken.php index e9bdf5b5204..09195fcc3b7 100644 --- a/lib/private/Security/CSRF/CsrfToken.php +++ b/lib/private/Security/CSRF/CsrfToken.php @@ -62,7 +62,7 @@ class CsrfToken { * The unencrypted value of the token. Used for decrypting an already * encrypted token. * - * @return int + * @return string */ public function getDecryptedValue() { $token = explode(':', $this->value); diff --git a/lib/private/Security/CertificateManager.php b/lib/private/Security/CertificateManager.php index 58c44b88ba6..ea7b045c205 100644 --- a/lib/private/Security/CertificateManager.php +++ b/lib/private/Security/CertificateManager.php @@ -209,7 +209,7 @@ class CertificateManager implements ICertificateManager { /** * Get the path to the certificate bundle for this user * - * @param string $uid (optional) user to get the certificate bundle for, use `null` to get the system bundle + * @param string|null $uid (optional) user to get the certificate bundle for, use `null` to get the system bundle * @return string */ public function getCertificateBundle($uid = '') { @@ -241,7 +241,7 @@ class CertificateManager implements ICertificateManager { } /** - * @param string $uid (optional) user to get the certificate path for, use `null` to get the system path + * @param string|null $uid (optional) user to get the certificate path for, use `null` to get the system path * @return string */ private function getPathToCertificates($uid = '') { diff --git a/lib/private/Server.php b/lib/private/Server.php index 5efbcfecf32..60a5de97bbf 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -964,7 +964,10 @@ class Server extends ServerContainer implements IServerContainer { $factory, $c->getUserManager(), $c->getLazyRootFolder(), - $c->getEventDispatcher() + $c->getEventDispatcher(), + $c->getMailer(), + $c->getURLGenerator(), + $c->getThemingDefaults() ); return $manager; @@ -1249,7 +1252,6 @@ class Server extends ServerContainer implements IServerContainer { } /** - * @internal For internal use only * @return \OC\SystemConfig */ public function getSystemConfig() { diff --git a/lib/private/Session/CryptoWrapper.php b/lib/private/Session/CryptoWrapper.php index 67a673cb309..1cec2670650 100644 --- a/lib/private/Session/CryptoWrapper.php +++ b/lib/private/Session/CryptoWrapper.php @@ -50,14 +50,16 @@ use OCP\Security\ISecureRandom; class CryptoWrapper { const COOKIE_NAME = 'oc_sessionPassphrase'; + /** @var IConfig */ + protected $config; /** @var ISession */ protected $session; - - /** @var \OCP\Security\ICrypto */ + /** @var ICrypto */ protected $crypto; - /** @var ISecureRandom */ protected $random; + /** @var string */ + protected $passphrase; /** * @param IConfig $config diff --git a/lib/private/Settings/RemoveOrphaned.php b/lib/private/Settings/RemoveOrphaned.php index fbee95c8879..29c7cf212b5 100644 --- a/lib/private/Settings/RemoveOrphaned.php +++ b/lib/private/Settings/RemoveOrphaned.php @@ -58,7 +58,7 @@ class RemoveOrphaned extends TimedJob { * run the job, then remove it from the job list * * @param JobList $jobList - * @param ILogger $logger + * @param ILogger|null $logger */ public function execute($jobList, ILogger $logger = null) { // add an interval of 15 mins diff --git a/lib/private/Setup.php b/lib/private/Setup.php index f5bfca604a9..521a8f75f8e 100644 --- a/lib/private/Setup.php +++ b/lib/private/Setup.php @@ -223,7 +223,7 @@ class Setup { 'error' => $this->l10n->t( 'Mac OS X is not supported and %s will not work properly on this platform. ' . 'Use it at your own risk! ', - $this->defaults->getName() + [$this->defaults->getName()] ), 'hint' => $this->l10n->t('For the best results, please consider using a GNU/Linux server instead.') ); @@ -234,7 +234,7 @@ class Setup { 'error' => $this->l10n->t( 'It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. ' . 'This will lead to problems with files over 4 GB and is highly discouraged.', - $this->defaults->getName() + [$this->defaults->getName()] ), 'hint' => $this->l10n->t('Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP.') ); @@ -449,10 +449,10 @@ class Setup { $htaccessContent = explode($content, $htaccessContent, 2)[0]; //custom 403 error page - $content.= "\nErrorDocument 403 ".$webRoot."/core/templates/403.php"; + $content.= "\nErrorDocument 403 ".$webRoot."/"; //custom 404 error page - $content.= "\nErrorDocument 404 ".$webRoot."/core/templates/404.php"; + $content.= "\nErrorDocument 404 ".$webRoot."/"; // Add rewrite rules if the RewriteBase is configured $rewriteBase = $config->getValue('htaccess.RewriteBase', ''); diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php index ca9d8e2843f..9eee9a505ee 100644 --- a/lib/private/Share20/Manager.php +++ b/lib/private/Share20/Manager.php @@ -31,6 +31,7 @@ use OC\Cache\CappedMemoryCache; use OC\Files\Mount\MoveableMount; use OC\HintException; use OC\Share20\Exception\ProviderException; +use OCP\Defaults; use OCP\Files\File; use OCP\Files\Folder; use OCP\Files\IRootFolder; @@ -40,7 +41,10 @@ use OCP\IConfig; use OCP\IGroupManager; use OCP\IL10N; use OCP\ILogger; +use OCP\IURLGenerator; +use OCP\IUser; use OCP\IUserManager; +use OCP\Mail\IMailer; use OCP\Security\IHasher; use OCP\Security\ISecureRandom; use OCP\Share\Exceptions\GenericShareException; @@ -82,6 +86,12 @@ class Manager implements IManager { private $eventDispatcher; /** @var LegacyHooks */ private $legacyHooks; + /** @var IMailer */ + private $mailer; + /** @var IURLGenerator */ + private $urlGenerator; + /** @var \OC_Defaults */ + private $defaults; /** @@ -98,6 +108,9 @@ class Manager implements IManager { * @param IUserManager $userManager * @param IRootFolder $rootFolder * @param EventDispatcher $eventDispatcher + * @param IMailer $mailer + * @param IURLGenerator $urlGenerator + * @param \OC_Defaults $defaults */ public function __construct( ILogger $logger, @@ -110,7 +123,10 @@ class Manager implements IManager { IProviderFactory $factory, IUserManager $userManager, IRootFolder $rootFolder, - EventDispatcher $eventDispatcher + EventDispatcher $eventDispatcher, + IMailer $mailer, + IURLGenerator $urlGenerator, + \OC_Defaults $defaults ) { $this->logger = $logger; $this->config = $config; @@ -125,6 +141,9 @@ class Manager implements IManager { $this->eventDispatcher = $eventDispatcher; $this->sharingDisabledForUsersCache = new CappedMemoryCache(); $this->legacyHooks = new LegacyHooks($this->eventDispatcher); + $this->mailer = $mailer; + $this->urlGenerator = $urlGenerator; + $this->defaults = $defaults; } /** @@ -664,10 +683,91 @@ class Manager implements IManager { \OC_Hook::emit('OCP\Share', 'post_shared', $postHookData); + if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) { + $user = $this->userManager->get($share->getSharedWith()); + if ($user !== null) { + $emailAddress = $user->getEMailAddress(); + if ($emailAddress !== null && $emailAddress !== '') { + $this->sendMailNotification( + $share->getNode()->getName(), + $this->urlGenerator->linkToRouteAbsolute('files.viewcontroller.showFile', [ 'fileid' => $share->getNode()->getId() ]), + $share->getSharedBy(), + $emailAddress + ); + $this->logger->debug('Send share notification to ' . $emailAddress . ' for share with ID ' . $share->getId(), ['app' => 'share']); + } else { + $this->logger->debug('Share notification not send to ' . $share->getSharedWith() . ' because email address is not set.', ['app' => 'share']); + } + } else { + $this->logger->debug('Share notification not send to ' . $share->getSharedWith() . ' because user could not be found.', ['app' => 'share']); + } + } + return $share; } /** + * @param string $filename file/folder name + * @param string $link link to the file/folder + * @param string $initiator user ID of share sender + * @param string $shareWith email address of share receiver + * @throws \Exception If mail couldn't be sent + */ + protected function sendMailNotification($filename, + $link, + $initiator, + $shareWith) { + $initiatorUser = $this->userManager->get($initiator); + $initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator; + $subject = (string)$this->l->t('%s shared »%s« with you', array($initiatorDisplayName, $filename)); + + $message = $this->mailer->createMessage(); + + $emailTemplate = $this->mailer->createEMailTemplate(); + + $emailTemplate->addHeader(); + $emailTemplate->addHeading($this->l->t('%s shared »%s« with you', [$initiatorDisplayName, $filename]), false); + $text = $this->l->t('%s shared »%s« with you.', [$initiatorDisplayName, $filename]); + + $emailTemplate->addBodyText( + $text . ' ' . $this->l->t('Click the button below to open it.'), + $text + ); + $emailTemplate->addBodyButton( + $this->l->t('Open »%s«', [$filename]), + $link + ); + + $message->setTo([$shareWith]); + + // The "From" contains the sharers name + $instanceName = $this->defaults->getName(); + $senderName = $this->l->t( + '%s via %s', + [ + $initiatorDisplayName, + $instanceName + ] + ); + $message->setFrom([\OCP\Util::getDefaultEmailAddress($instanceName) => $senderName]); + + // The "Reply-To" is set to the sharer if an mail address is configured + // also the default footer contains a "Do not reply" which needs to be adjusted. + $initiatorEmail = $initiatorUser->getEMailAddress(); + if($initiatorEmail !== null) { + $message->setReplyTo([$initiatorEmail => $initiatorDisplayName]); + $emailTemplate->addFooter($instanceName . ' - ' . $this->defaults->getSlogan()); + } else { + $emailTemplate->addFooter(); + } + + $message->setSubject($subject); + $message->setPlainBody($emailTemplate->renderText()); + $message->setHtmlBody($emailTemplate->renderHtml()); + $this->mailer->send($message); + } + + /** * Update a share * * @param \OCP\Share\IShare $share diff --git a/lib/private/Tags.php b/lib/private/Tags.php index 3ec1af00e3f..b63435ff838 100644 --- a/lib/private/Tags.php +++ b/lib/private/Tags.php @@ -274,7 +274,7 @@ class Tags implements \OCP\ITags { if($tagId === false) { $l10n = \OC::$server->getL10N('core'); throw new \Exception( - $l10n->t('Could not find category "%s"', $tag) + $l10n->t('Could not find category "%s"', [$tag]) ); } diff --git a/lib/private/Updater.php b/lib/private/Updater.php index 6c23a43c354..902d22f6679 100644 --- a/lib/private/Updater.php +++ b/lib/private/Updater.php @@ -315,10 +315,11 @@ class Updater extends BasicEmitter { $apps = \OC_App::getEnabledApps(); $this->emit('\OC\Updater', 'appUpgradeCheckBefore'); + $appManager = \OC::$server->getAppManager(); foreach ($apps as $appId) { $info = \OC_App::getAppInfo($appId); $compatible = \OC_App::isAppCompatible($version, $info); - $isShipped = \OC_App::isShipped($appId); + $isShipped = $appManager->isShipped($appId); if ($compatible && $isShipped && \OC_App::shouldUpgrade($appId)) { /** @@ -407,11 +408,12 @@ class Updater extends BasicEmitter { $apps = OC_App::getEnabledApps(); $version = Util::getVersion(); $disabledApps = []; + $appManager = \OC::$server->getAppManager(); foreach ($apps as $app) { // check if the app is compatible with this version of ownCloud $info = OC_App::getAppInfo($app); if(!OC_App::isAppCompatible($version, $info)) { - if (OC_App::isShipped($app)) { + if ($appManager->isShipped($app)) { throw new \UnexpectedValueException('The files of the app "' . $app . '" were not correctly replaced before running the update'); } OC_App::disable($app); @@ -422,7 +424,7 @@ class Updater extends BasicEmitter { continue; } // shipped apps will remain enabled - if (OC_App::isShipped($app)) { + if ($appManager->isShipped($app)) { continue; } // authentication and session apps will remain enabled as well diff --git a/lib/private/legacy/api.php b/lib/private/legacy/api.php index 894aee28560..f65275bf1da 100644 --- a/lib/private/legacy/api.php +++ b/lib/private/legacy/api.php @@ -123,13 +123,14 @@ class OC_API { $name = $parameters['_route']; // Foreach registered action $responses = array(); + $appManager = \OC::$server->getAppManager(); foreach(self::$actions[$name] as $action) { // Check authentication and availability if(!self::isAuthorised($action)) { $responses[] = array( 'app' => $action['app'], 'response' => new OC_OCS_Result(null, API::RESPOND_UNAUTHORISED, 'Unauthorised'), - 'shipped' => OC_App::isShipped($action['app']), + 'shipped' => $appManager->isShipped($action['app']), ); continue; } @@ -137,7 +138,7 @@ class OC_API { $responses[] = array( 'app' => $action['app'], 'response' => new OC_OCS_Result(null, API::RESPOND_NOT_FOUND, 'Api method not found'), - 'shipped' => OC_App::isShipped($action['app']), + 'shipped' => $appManager->isShipped($action['app']), ); continue; } @@ -145,7 +146,7 @@ class OC_API { $responses[] = array( 'app' => $action['app'], 'response' => call_user_func($action['action'], $parameters), - 'shipped' => OC_App::isShipped($action['app']), + 'shipped' => $appManager->isShipped($action['app']), ); } $response = self::mergeResponses($responses); diff --git a/lib/private/legacy/app.php b/lib/private/legacy/app.php index 9f6932b3a89..872c1c120ac 100644 --- a/lib/private/legacy/app.php +++ b/lib/private/legacy/app.php @@ -283,18 +283,6 @@ class OC_App { } /** - * check if app is shipped - * - * @param string $appId the id of the app to check - * @return bool - * - * Check if an app that is installed is a shipped app or installed from the appstore. - */ - public static function isShipped($appId) { - return \OC::$server->getAppManager()->isShipped($appId); - } - - /** * get all enabled apps */ protected static $enabledAppsCache = array(); @@ -396,7 +384,7 @@ class OC_App { * @return bool */ public static function removeApp($app) { - if (self::isShipped($app)) { + if (\OC::$server->getAppManager()->isShipped($app)) { return false; } @@ -777,8 +765,9 @@ class OC_App { public function listAllApps() { $installedApps = OC_App::getAllApps(); + $appManager = \OC::$server->getAppManager(); //we don't want to show configuration for these - $blacklist = \OC::$server->getAppManager()->getAlwaysEnabledApps(); + $blacklist = $appManager->getAlwaysEnabledApps(); $appList = array(); $langCode = \OC::$server->getL10N('core')->getLanguageCode(); $urlGenerator = \OC::$server->getURLGenerator(); @@ -810,7 +799,7 @@ class OC_App { $info['active'] = $active; - if (self::isShipped($app)) { + if ($appManager->isShipped($app)) { $info['internal'] = true; $info['level'] = self::officialApp; $info['removable'] = false; @@ -823,12 +812,12 @@ class OC_App { if($appPath !== false) { $appIcon = $appPath . '/img/' . $app . '.svg'; if (file_exists($appIcon)) { - $info['preview'] = \OC::$server->getURLGenerator()->imagePath($app, $app . '.svg'); + $info['preview'] = $urlGenerator->imagePath($app, $app . '.svg'); $info['previewAsIcon'] = true; } else { $appIcon = $appPath . '/img/app.svg'; if (file_exists($appIcon)) { - $info['preview'] = \OC::$server->getURLGenerator()->imagePath($app, 'app.svg'); + $info['preview'] = $urlGenerator->imagePath($app, 'app.svg'); $info['previewAsIcon'] = true; } } diff --git a/lib/private/legacy/db.php b/lib/private/legacy/db.php index 9e4d619d953..843970d7d53 100644 --- a/lib/private/legacy/db.php +++ b/lib/private/legacy/db.php @@ -45,9 +45,9 @@ class OC_DB { /** * Prepare a SQL query * @param string $query Query string - * @param int $limit - * @param int $offset - * @param bool $isManipulation + * @param int|null $limit + * @param int|null $offset + * @param bool|null $isManipulation * @throws \OC\DatabaseException * @return OC_DB_StatementWrapper prepared SQL query * @@ -104,7 +104,7 @@ class OC_DB { * @param mixed $stmt OC_DB_StatementWrapper, * an array with 'sql' and optionally 'limit' and 'offset' keys * .. or a simple sql query string - * @param array $parameters + * @param array|null $parameters * @return OC_DB_StatementWrapper * @throws \OC\DatabaseException */ @@ -151,7 +151,6 @@ class OC_DB { /** * saves database schema to xml file * @param string $file name of file - * @param int $mode * @return bool * * TODO: write more documentation @@ -179,6 +178,7 @@ class OC_DB { * @param string $file file to read structure from * @throws Exception * @return string|boolean + * @suppress PhanDeprecatedFunction */ public static function updateDbFromStructure($file) { $schemaManager = self::getMDB2SchemaManager(); diff --git a/lib/private/legacy/db/statementwrapper.php b/lib/private/legacy/db/statementwrapper.php index 53f7b484d04..cac4598e650 100644 --- a/lib/private/legacy/db/statementwrapper.php +++ b/lib/private/legacy/db/statementwrapper.php @@ -62,7 +62,7 @@ class OC_DB_StatementWrapper { * make execute return the result instead of a bool * * @param array $input - * @return \OC_DB_StatementWrapper|int + * @return \OC_DB_StatementWrapper|int|bool */ public function execute($input= []) { $this->lastArguments = $input; diff --git a/lib/private/legacy/eventsource.php b/lib/private/legacy/eventsource.php index 6211d851426..74beb157e18 100644 --- a/lib/private/legacy/eventsource.php +++ b/lib/private/legacy/eventsource.php @@ -97,6 +97,7 @@ class OC_EventSource implements \OCP\IEventSource { * * @throws \BadMethodCallException * if only one parameter is given, a typeless message will be send with that parameter as data + * @suppress PhanDeprecatedFunction */ public function send($type, $data = null) { if ($data and !preg_match('/^[A-Za-z0-9_]+$/', $type)) { diff --git a/lib/private/legacy/helper.php b/lib/private/legacy/helper.php index 6775fe99dcd..48b7d037c58 100644 --- a/lib/private/legacy/helper.php +++ b/lib/private/legacy/helper.php @@ -131,7 +131,7 @@ class OC_Helper { /** * Make a computer file size * @param string $str file size in human readable format - * @return float a file size in bytes + * @return float|bool a file size in bytes * * Makes 2kB to 2048. * @@ -395,7 +395,7 @@ class OC_Helper { * performs a search in a nested array * @param array $haystack the array to be searched * @param string $needle the search string - * @param string $index optional, only search this key name + * @param mixed $index optional, only search this key name * @return mixed the key of the matching field, otherwise false * * performs a search in a nested array diff --git a/lib/private/legacy/json.php b/lib/private/legacy/json.php index 9b90daccac9..180dd7c448d 100644 --- a/lib/private/legacy/json.php +++ b/lib/private/legacy/json.php @@ -52,6 +52,7 @@ class OC_JSON{ * Check if the app is enabled, send json error msg if not * @param string $app * @deprecated Use the AppFramework instead. It will automatically check if the app is enabled. + * @suppress PhanDeprecatedFunction */ public static function checkAppEnabled($app) { if( !OC_App::isEnabled($app)) { @@ -64,6 +65,7 @@ class OC_JSON{ /** * Check if the user is logged in, send json error msg if not * @deprecated Use annotation based ACLs from the AppFramework instead + * @suppress PhanDeprecatedFunction */ public static function checkLoggedIn() { $twoFactorAuthManger = \OC::$server->getTwoFactorAuthManager(); @@ -79,6 +81,7 @@ class OC_JSON{ /** * Check an ajax get/post call if the request token is valid, send json error msg if not. * @deprecated Use annotation based CSRF checks from the AppFramework instead + * @suppress PhanDeprecatedFunction */ public static function callCheck() { if(!\OC::$server->getRequest()->passesStrictCookieCheck()) { @@ -96,6 +99,7 @@ class OC_JSON{ /** * Check if the user is a admin, send json error msg if not. * @deprecated Use annotation based ACLs from the AppFramework instead + * @suppress PhanDeprecatedFunction */ public static function checkAdminUser() { if( !OC_User::isAdminUser(OC_User::getUser())) { @@ -109,6 +113,7 @@ class OC_JSON{ * Check is a given user exists - send json error msg if not * @param string $user * @deprecated Use a AppFramework JSONResponse instead + * @suppress PhanDeprecatedFunction */ public static function checkUserExists($user) { if (!OCP\User::userExists($user)) { @@ -122,6 +127,7 @@ class OC_JSON{ /** * Check if the user is a subadmin, send json error msg if not * @deprecated Use annotation based ACLs from the AppFramework instead + * @suppress PhanDeprecatedFunction */ public static function checkSubAdminUser() { $userObject = \OC::$server->getUserSession()->getUser(); @@ -140,6 +146,7 @@ class OC_JSON{ /** * Send json error msg * @deprecated Use a AppFramework JSONResponse instead + * @suppress PhanDeprecatedFunction */ public static function error($data = array()) { $data['status'] = 'error'; @@ -149,6 +156,7 @@ class OC_JSON{ /** * Send json success msg * @deprecated Use a AppFramework JSONResponse instead + * @suppress PhanDeprecatedFunction */ public static function success($data = array()) { $data['status'] = 'success'; @@ -167,6 +175,7 @@ class OC_JSON{ /** * Encode and print $data in json format * @deprecated Use a AppFramework JSONResponse instead + * @suppress PhanDeprecatedFunction */ public static function encodedPrint($data, $setContentType=true) { if($setContentType) { diff --git a/lib/private/legacy/response.php b/lib/private/legacy/response.php index fa73f3d6d0d..e45fe616e49 100644 --- a/lib/private/legacy/response.php +++ b/lib/private/legacy/response.php @@ -116,11 +116,11 @@ class OC_Response { } /** - * Set response expire time - * @param string|DateTime $expires date-time when the response expires - * string for DateInterval from now - * DateTime object when to expire response - */ + * Set response expire time + * @param string|DateTime|int $expires date-time when the response expires + * string for DateInterval from now + * DateTime object when to expire response + */ static public function setExpiresHeader($expires) { if (is_string($expires) && $expires[0] == 'P') { $interval = $expires; diff --git a/lib/private/legacy/template.php b/lib/private/legacy/template.php index f5ee2336831..8c6185cd556 100644 --- a/lib/private/legacy/template.php +++ b/lib/private/legacy/template.php @@ -291,10 +291,11 @@ class OC_Template extends \OC\Template\Base { } /** - * Print a fatal error page and terminates the script - * @param string $error_msg The error message to show - * @param string $hint An optional hint message - needs to be properly escaped - */ + * Print a fatal error page and terminates the script + * @param string $error_msg The error message to show + * @param string $hint An optional hint message - needs to be properly escape + * @suppress PhanAccessMethodInternal + */ public static function printErrorPage( $error_msg, $hint = '' ) { if (\OC_App::isEnabled('theming') && !\OC_App::isAppLoaded('theming')) { \OC_App::loadApp('theming'); @@ -325,7 +326,10 @@ class OC_Template extends \OC\Template\Base { /** * print error page using Exception details - * @param Exception | Throwable $exception + * @param Exception|Throwable $exception + * @param bool $fetchPage + * @return bool|string + * @suppress PhanAccessMethodInternal */ public static function printExceptionErrorPage($exception, $fetchPage = false) { try { diff --git a/lib/private/legacy/template/functions.php b/lib/private/legacy/template/functions.php index 65179a94108..bca16b48c1a 100644 --- a/lib/private/legacy/template/functions.php +++ b/lib/private/legacy/template/functions.php @@ -57,7 +57,7 @@ function emit_css_tag($href, $opts = '') { /** * Prints all tags for CSS loading - * @param hash $obj all the script information from template + * @param array $obj all the script information from template */ function emit_css_loading_tags($obj) { foreach($obj['cssfiles'] as $css) { @@ -72,7 +72,6 @@ function emit_css_loading_tags($obj) { * Prints a <script> tag with nonce and defer depending on config * @param string $src the source URL, ignored when empty * @param string $script_content the inline script content, ignored when empty - * @param bool $defer_flag deferred loading or not */ function emit_script_tag($src, $script_content='') { $defer_str=' defer'; @@ -93,7 +92,7 @@ function emit_script_tag($src, $script_content='') { /** * Print all <script> tags for loading JS - * @param hash $obj all the script information from template + * @param array $obj all the script information from template */ function emit_script_loading_tags($obj) { foreach($obj['jsfiles'] as $jsfile) { @@ -250,7 +249,7 @@ function mimetype_icon( $mimetype ) { * make preview_icon available as a simple function * Returns the path to the preview of the image. * @param string $path path of file - * @return link to the preview + * @return string link to the preview */ function preview_icon( $path ) { return \OC::$server->getURLGenerator()->linkToRoute('core.Preview.getPreview', ['x' => 32, 'y' => 32, 'file' => $path]); @@ -258,6 +257,8 @@ function preview_icon( $path ) { /** * @param string $path + * @param string $token + * @return string */ function publicPreview_icon ( $path, $token ) { return \OC::$server->getURLGenerator()->linkToRoute('files_sharing.PublicPreview.getPreview', ['x' => 32, 'y' => 32, 'file' => $path, 't' => $token]); @@ -289,8 +290,8 @@ function strip_time($timestamp){ * Formats timestamp relatively to the current time using * a human-friendly format like "x minutes ago" or "yesterday" * @param int $timestamp timestamp to format - * @param int $fromTime timestamp to compare from, defaults to current time - * @param bool $dateOnly whether to strip time information + * @param int|null $fromTime timestamp to compare from, defaults to current time + * @param bool|null $dateOnly whether to strip time information * @return string timestamp */ function relative_modified_date($timestamp, $fromTime = null, $dateOnly = false) { diff --git a/lib/private/legacy/user.php b/lib/private/legacy/user.php index feed6f836ca..210e428a2e0 100644 --- a/lib/private/legacy/user.php +++ b/lib/private/legacy/user.php @@ -78,6 +78,7 @@ class OC_User { * @return bool * * Set the User Authentication Module + * @suppress PhanDeprecatedFunction */ public static function useBackend($backend = 'database') { if ($backend instanceof \OCP\UserInterface) { @@ -123,6 +124,7 @@ class OC_User { /** * setup the configured backends in config.php + * @suppress PhanDeprecatedFunction */ public static function setupBackends() { OC_App::loadApps(['prelogin']); @@ -173,18 +175,6 @@ class OC_User { if ($uid) { if (self::getUser() !== $uid) { self::setUserId($uid); - $setUidAsDisplayName = true; - if($backend instanceof \OCP\UserInterface - && $backend->implementsActions(\OC\User\Backend::GET_DISPLAYNAME)) { - - $backendDisplayName = $backend->getDisplayName($uid); - if(is_string($backendDisplayName) && trim($backendDisplayName) !== '') { - $setUidAsDisplayName = false; - } - } - if($setUidAsDisplayName) { - self::setDisplayName($uid); - } $userSession = self::getUserSession(); $userSession->setLoginName($uid); $request = OC::$server->getRequest(); @@ -347,7 +337,7 @@ class OC_User { * get the display name of the user currently logged in. * * @param string $uid - * @return string uid or false + * @return string|bool uid or false */ public static function getDisplayName($uid = null) { if ($uid) { diff --git a/lib/private/legacy/util.php b/lib/private/legacy/util.php index 18ba44ac204..f0fef027ec2 100644 --- a/lib/private/legacy/util.php +++ b/lib/private/legacy/util.php @@ -91,6 +91,7 @@ class OC_Util { * TODO make home storage aware of this and use the object storage instead of local disk access * * @param array $config containing 'class' and optional 'arguments' + * @suppress PhanDeprecatedFunction */ private static function initObjectStoreRootFS($config) { // check misconfiguration @@ -124,6 +125,7 @@ class OC_Util { * necessity of a data folder being present. * * @param array $config containing 'class' and optional 'arguments' + * @suppress PhanDeprecatedFunction */ private static function initObjectStoreMultibucketRootFS($config) { // check misconfiguration @@ -165,6 +167,8 @@ class OC_Util { * @param string $user * @return boolean * @description configure the initial filesystem based on the configuration + * @suppress PhanDeprecatedFunction + * @suppress PhanAccessMethodInternal */ public static function setupFS($user = '') { //setting up the filesystem twice can only lead to trouble @@ -202,7 +206,7 @@ class OC_Util { return $storage; }); - \OC\Files\Filesystem::addStorageWrapper('enable_sharing', function ($mountPoint, \OCP\Files\Storage $storage, \OCP\Files\Mount\IMountPoint $mount) { + \OC\Files\Filesystem::addStorageWrapper('enable_sharing', function ($mountPoint, \OCP\Files\Storage\IStorage $storage, \OCP\Files\Mount\IMountPoint $mount) { if (!$mount->getOption('enable_sharing', true)) { return new \OC\Files\Storage\Wrapper\PermissionsMask([ 'storage' => $storage, @@ -213,7 +217,7 @@ class OC_Util { }); // install storage availability wrapper, before most other wrappers - \OC\Files\Filesystem::addStorageWrapper('oc_availability', function ($mountPoint, $storage) { + \OC\Files\Filesystem::addStorageWrapper('oc_availability', function ($mountPoint, \OCP\Files\Storage\IStorage $storage) { if (!$storage->instanceOfStorage('\OCA\Files_Sharing\SharedStorage') && !$storage->isLocal()) { return new \OC\Files\Storage\Wrapper\Availability(['storage' => $storage]); } @@ -289,6 +293,7 @@ class OC_Util { * check if a password is required for each public link * * @return boolean + * @suppress PhanDeprecatedFunction */ public static function isPublicLinkPasswordRequired() { $appConfig = \OC::$server->getAppConfig(); @@ -329,6 +334,7 @@ class OC_Util { * check if share API enforces a default expire date * * @return boolean + * @suppress PhanDeprecatedFunction */ public static function isDefaultExpireDateEnforced() { $isDefaultExpireDateEnabled = \OCP\Config::getAppValue('core', 'shareapi_default_expire_date', 'no'); @@ -345,7 +351,7 @@ class OC_Util { * Get the quota of a user * * @param string $userId - * @return int Quota bytes + * @return float Quota bytes */ public static function getUserQuota($userId) { $user = \OC::$server->getUserManager()->get($userId); @@ -365,6 +371,7 @@ class OC_Util { * @param String $userId * @param \OCP\Files\Folder $userDirectory * @throws \RuntimeException + * @suppress PhanDeprecatedFunction */ public static function copySkeleton($userId, \OCP\Files\Folder $userDirectory) { @@ -431,6 +438,7 @@ class OC_Util { /** * @return void + * @suppress PhanUndeclaredMethod */ public static function tearDownFS() { \OC\Files\Filesystem::tearDown(); @@ -487,6 +495,7 @@ class OC_Util { /** * @description load the version.php into the session as cache + * @suppress PhanUndeclaredVariable */ private static function loadVersion() { if (self::$versionCache !== null) { @@ -563,8 +572,8 @@ class OC_Util { * add a translation JS file * * @param string $application application id - * @param string $languageCode language code, defaults to the current language - * @param bool $prepend prepend the Script to the beginning of the list + * @param string|null $languageCode language code, defaults to the current language + * @param bool|null $prepend prepend the Script to the beginning of the list */ public static function addTranslations($application, $languageCode = null, $prepend = false) { if (is_null($languageCode)) { @@ -1068,6 +1077,7 @@ class OC_Util { * the apps visible for the current user * * @return string URL + * @suppress PhanDeprecatedFunction */ public static function getDefaultPageUrl() { $urlGenerator = \OC::$server->getURLGenerator(); @@ -1081,7 +1091,8 @@ class OC_Util { $location = $urlGenerator->getAbsoluteURL($defaultPage); } else { $appId = 'files'; - $defaultApps = explode(',', \OCP\Config::getSystemValue('defaultapp', 'files')); + $config = \OC::$server->getConfig(); + $defaultApps = explode(',', $config->getSystemValue('defaultapp', 'files')); // find the first app that is enabled for the current user foreach ($defaultApps as $defaultApp) { $defaultApp = OC_App::cleanAppId(strip_tags($defaultApp)); @@ -1091,7 +1102,7 @@ class OC_Util { } } - if(\OC::$server->getConfig()->getSystemValue('htaccess.IgnoreFrontController', false) === true || getenv('front_controller_active') === 'true') { + if($config->getSystemValue('htaccess.IgnoreFrontController', false) === true || getenv('front_controller_active') === 'true') { $location = $urlGenerator->getAbsoluteURL('/apps/' . $appId . '/'); } else { $location = $urlGenerator->getAbsoluteURL('/index.php/apps/' . $appId . '/'); @@ -1346,6 +1357,8 @@ class OC_Util { * in case the opcode cache does not re-validate files * * @return void + * @suppress PhanDeprecatedFunction + * @suppress PhanUndeclaredConstant */ public static function clearOpcodeCache() { // APC diff --git a/lib/public/App/ManagerEvent.php b/lib/public/App/ManagerEvent.php index b25ea55aee6..c983114fe75 100644 --- a/lib/public/App/ManagerEvent.php +++ b/lib/public/App/ManagerEvent.php @@ -45,7 +45,7 @@ class ManagerEvent extends Event { protected $event; /** @var string */ protected $appID; - /** @var \OCP\IGroup[] */ + /** @var \OCP\IGroup[]|null */ protected $groups; /** @@ -53,7 +53,7 @@ class ManagerEvent extends Event { * * @param string $event * @param $appID - * @param \OCP\IGroup[] $groups + * @param \OCP\IGroup[]|null $groups * @since 9.0.0 */ public function __construct($event, $appID, array $groups = null) { diff --git a/lib/public/AppFramework/ApiController.php b/lib/public/AppFramework/ApiController.php index 857cb19101a..243ab1846ba 100644 --- a/lib/public/AppFramework/ApiController.php +++ b/lib/public/AppFramework/ApiController.php @@ -88,7 +88,7 @@ abstract class ApiController extends Controller { $response = new Response(); $response->addHeader('Access-Control-Allow-Origin', $origin); $response->addHeader('Access-Control-Allow-Methods', $this->corsMethods); - $response->addHeader('Access-Control-Max-Age', $this->corsMaxAge); + $response->addHeader('Access-Control-Max-Age', (string)$this->corsMaxAge); $response->addHeader('Access-Control-Allow-Headers', $this->corsAllowedHeaders); $response->addHeader('Access-Control-Allow-Credentials', 'false'); return $response; diff --git a/lib/public/AppFramework/App.php b/lib/public/AppFramework/App.php index 313f1e490a1..e5cd832563d 100644 --- a/lib/public/AppFramework/App.php +++ b/lib/public/AppFramework/App.php @@ -95,6 +95,7 @@ class App { * @param \OCP\Route\IRouter $router * @param array $routes * @since 6.0.0 + * @suppress PhanAccessMethodInternal */ public function registerRoutes($router, $routes) { $routeConfig = new RouteConfig($this->container, $router, $routes); diff --git a/lib/public/AppFramework/Http/OCSResponse.php b/lib/public/AppFramework/Http/OCSResponse.php index cfda8ea4f75..8614e76805f 100644 --- a/lib/public/AppFramework/Http/OCSResponse.php +++ b/lib/public/AppFramework/Http/OCSResponse.php @@ -80,6 +80,7 @@ class OCSResponse extends Response { * @return string * @since 8.1.0 * @deprecated 9.2.0 To implement an OCS endpoint extend the OCSController + * @suppress PhanDeprecatedClass */ public function render() { $r = new \OC_OCS_Result($this->data, $this->statuscode, $this->message); diff --git a/lib/public/AppFramework/Http/Response.php b/lib/public/AppFramework/Http/Response.php index 087522386be..94f09a55737 100644 --- a/lib/public/AppFramework/Http/Response.php +++ b/lib/public/AppFramework/Http/Response.php @@ -83,6 +83,8 @@ class Response { /** @var bool */ private $throttled = false; + /** @var array */ + private $throttleMetadata = []; /** * Caches the response @@ -228,7 +230,7 @@ class Response { /** * By default renders no output - * @return null + * @return string|null * @since 6.0.0 */ public function render() { @@ -328,10 +330,22 @@ class Response { * Marks the response as to throttle. Will be throttled when the * @BruteForceProtection annotation is added. * + * @param array $metadata * @since 12.0.0 */ - public function throttle() { + public function throttle(array $metadata = []) { $this->throttled = true; + $this->throttleMetadata = $metadata; + } + + /** + * Returns the throttle metadata, defaults to empty array + * + * @return array + * @since 13.0.0 + */ + public function getThrottleMetadata() { + return $this->throttleMetadata; } /** diff --git a/lib/public/BackgroundJob/IJob.php b/lib/public/BackgroundJob/IJob.php index 05927989b64..0b14257075a 100644 --- a/lib/public/BackgroundJob/IJob.php +++ b/lib/public/BackgroundJob/IJob.php @@ -36,7 +36,7 @@ interface IJob { * Run the background job with the registered argument * * @param \OCP\BackgroundJob\IJobList $jobList The job list that manages the state of this job - * @param ILogger $logger + * @param ILogger|null $logger * @since 7.0.0 */ public function execute($jobList, ILogger $logger = null); diff --git a/lib/public/Comments/ICommentsManager.php b/lib/public/Comments/ICommentsManager.php index f088ad9f70d..61633af95cd 100644 --- a/lib/public/Comments/ICommentsManager.php +++ b/lib/public/Comments/ICommentsManager.php @@ -104,7 +104,7 @@ interface ICommentsManager { * @param int $limit optional, number of maximum comments to be returned. if * not specified, all comments are returned. * @param int $offset optional, starting point - * @param \DateTime $notOlderThan optional, timestamp of the oldest comments + * @param \DateTime|null $notOlderThan optional, timestamp of the oldest comments * that may be returned * @return IComment[] * @since 9.0.0 @@ -120,7 +120,7 @@ interface ICommentsManager { /** * @param $objectType string the object type, e.g. 'files' * @param $objectId string the id of the object - * @param \DateTime $notOlderThan optional, timestamp of the oldest comments + * @param \DateTime|null $notOlderThan optional, timestamp of the oldest comments * that may be returned * @return Int * @since 9.0.0 diff --git a/lib/public/DB.php b/lib/public/DB.php index 5018392f650..645f77076db 100644 --- a/lib/public/DB.php +++ b/lib/public/DB.php @@ -90,7 +90,7 @@ class DB { * @since 4.5.0 */ public static function insertid($table=null) { - return \OC::$server->getDatabaseConnection()->lastInsertId($table); + return (string)\OC::$server->getDatabaseConnection()->lastInsertId($table); } /** diff --git a/lib/public/DB/QueryBuilder/IQueryBuilder.php b/lib/public/DB/QueryBuilder/IQueryBuilder.php index a176bb917a3..59ec4fd3ba5 100644 --- a/lib/public/DB/QueryBuilder/IQueryBuilder.php +++ b/lib/public/DB/QueryBuilder/IQueryBuilder.php @@ -176,7 +176,7 @@ interface IQueryBuilder { * * @param string|integer $key The parameter position or name. * @param mixed $value The parameter value. - * @param string|null $type One of the IQueryBuilder::PARAM_* constants. + * @param string|null|int $type One of the IQueryBuilder::PARAM_* constants. * * @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance. * @since 8.2.0 diff --git a/lib/public/Diagnostics/IQueryLogger.php b/lib/public/Diagnostics/IQueryLogger.php index 32723a56cb9..4e45fa33d9d 100644 --- a/lib/public/Diagnostics/IQueryLogger.php +++ b/lib/public/Diagnostics/IQueryLogger.php @@ -39,8 +39,8 @@ interface IQueryLogger extends SQLLogger { * query is finished finalized with stopQuery() method. * * @param string $sql - * @param array $params - * @param array $types + * @param array|null $params + * @param array|null $types * @since 8.0.0 */ public function startQuery($sql, array $params = null, array $types = null); diff --git a/lib/public/Encryption/Exceptions/GenericEncryptionException.php b/lib/public/Encryption/Exceptions/GenericEncryptionException.php index ac880c43067..7515d9c368d 100644 --- a/lib/public/Encryption/Exceptions/GenericEncryptionException.php +++ b/lib/public/Encryption/Exceptions/GenericEncryptionException.php @@ -39,7 +39,7 @@ class GenericEncryptionException extends HintException { * @param string $message * @param string $hint * @param int $code - * @param \Exception $previous + * @param \Exception|null $previous * @since 8.1.0 */ public function __construct($message = '', $hint = '', $code = 0, \Exception $previous = null) { diff --git a/lib/public/Files/ForbiddenException.php b/lib/public/Files/ForbiddenException.php index 5492b8538b4..7a7c011691b 100644 --- a/lib/public/Files/ForbiddenException.php +++ b/lib/public/Files/ForbiddenException.php @@ -38,7 +38,7 @@ class ForbiddenException extends \Exception { /** * @param string $message * @param bool $retry - * @param \Exception $previous previous exception for cascading + * @param \Exception|null $previous previous exception for cascading * @since 9.0.0 */ public function __construct($message, $retry, \Exception $previous = null) { diff --git a/lib/public/Files/IAppData.php b/lib/public/Files/IAppData.php index bf612996c53..fd0d0649810 100644 --- a/lib/public/Files/IAppData.php +++ b/lib/public/Files/IAppData.php @@ -29,7 +29,6 @@ use OCP\Files\SimpleFS\ISimpleRoot; * * @package OCP\Files * @since 11.0.0 - * @internal This interface is experimental and might change for NC12 */ interface IAppData extends ISimpleRoot { diff --git a/lib/public/Files/SimpleFS/ISimpleFile.php b/lib/public/Files/SimpleFS/ISimpleFile.php index 660580ae464..e9182377cb5 100644 --- a/lib/public/Files/SimpleFS/ISimpleFile.php +++ b/lib/public/Files/SimpleFS/ISimpleFile.php @@ -29,7 +29,6 @@ use OCP\Files\NotPermittedException; * * @package OCP\Files\SimpleFS * @since 11.0.0 - * @internal This interface is experimental and might change for NC12 */ interface ISimpleFile { diff --git a/lib/public/Files/SimpleFS/ISimpleFolder.php b/lib/public/Files/SimpleFS/ISimpleFolder.php index 66f80816216..54fbd466e46 100644 --- a/lib/public/Files/SimpleFS/ISimpleFolder.php +++ b/lib/public/Files/SimpleFS/ISimpleFolder.php @@ -30,7 +30,6 @@ use OCP\Files\NotPermittedException; * * @package OCP\Files\SimpleFS * @since 11.0.0 - * @internal This interface is experimental and might change for NC12 */ interface ISimpleFolder { /** diff --git a/lib/public/Files/SimpleFS/ISimpleRoot.php b/lib/public/Files/SimpleFS/ISimpleRoot.php index 3bfea656965..35b97f665a7 100644 --- a/lib/public/Files/SimpleFS/ISimpleRoot.php +++ b/lib/public/Files/SimpleFS/ISimpleRoot.php @@ -30,7 +30,6 @@ use OCP\Files\NotPermittedException; * * @package OCP\Files\SimpleFS * @since 11.0.0 - * @internal This interface is experimental and might change for NC12 */ interface ISimpleRoot { /** diff --git a/lib/public/Files/Storage.php b/lib/public/Files/Storage.php index 213bbc0e549..ee89b9fd205 100644 --- a/lib/public/Files/Storage.php +++ b/lib/public/Files/Storage.php @@ -395,22 +395,22 @@ interface Storage extends IStorage { public function verifyPath($path, $fileName); /** - * @param \OCP\Files\Storage $sourceStorage + * @param IStorage $sourceStorage * @param string $sourceInternalPath * @param string $targetInternalPath * @return bool * @since 8.1.0 */ - public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath); + public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath); /** - * @param \OCP\Files\Storage $sourceStorage + * @param IStorage $sourceStorage * @param string $sourceInternalPath * @param string $targetInternalPath * @return bool * @since 8.1.0 */ - public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath); + public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath); /** * @param string $path The path of the file to acquire the lock for diff --git a/lib/public/Files/Storage/IStorage.php b/lib/public/Files/Storage/IStorage.php index 27b8f1d0697..d5176aab463 100644 --- a/lib/public/Files/Storage/IStorage.php +++ b/lib/public/Files/Storage/IStorage.php @@ -383,22 +383,22 @@ interface IStorage { public function verifyPath($path, $fileName); /** - * @param \OCP\Files\Storage|\OCP\Files\Storage\IStorage $sourceStorage + * @param IStorage $sourceStorage * @param string $sourceInternalPath * @param string $targetInternalPath * @return bool * @since 9.0.0 */ - public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath); + public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath); /** - * @param \OCP\Files\Storage|\OCP\Files\Storage\IStorage $sourceStorage + * @param IStorage $sourceStorage * @param string $sourceInternalPath * @param string $targetInternalPath * @return bool * @since 9.0.0 */ - public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath); + public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath); /** * Test a storage for availability diff --git a/lib/public/Files/StorageAuthException.php b/lib/public/Files/StorageAuthException.php index f73915df9d9..8a04a2c70f4 100644 --- a/lib/public/Files/StorageAuthException.php +++ b/lib/public/Files/StorageAuthException.php @@ -31,12 +31,11 @@ class StorageAuthException extends StorageNotAvailableException { * StorageAuthException constructor. * * @param string $message - * @param int $code - * @param \Exception $previous + * @param \Exception|null $previous * @since 9.0.0 */ public function __construct($message = '', \Exception $previous = null) { $l = \OC::$server->getL10N('core'); - parent::__construct($l->t('Storage unauthorized. %s', $message), self::STATUS_UNAUTHORIZED, $previous); + parent::__construct($l->t('Storage unauthorized. %s', [$message]), self::STATUS_UNAUTHORIZED, $previous); } } diff --git a/lib/public/Files/StorageBadConfigException.php b/lib/public/Files/StorageBadConfigException.php index a3a96a80dc1..d6ee6a267e7 100644 --- a/lib/public/Files/StorageBadConfigException.php +++ b/lib/public/Files/StorageBadConfigException.php @@ -31,13 +31,12 @@ class StorageBadConfigException extends StorageNotAvailableException { * ExtStorageBadConfigException constructor. * * @param string $message - * @param int $code - * @param \Exception $previous + * @param \Exception|null $previous * @since 9.0.0 */ public function __construct($message = '', \Exception $previous = null) { $l = \OC::$server->getL10N('core'); - parent::__construct($l->t('Storage incomplete configuration. %s', $message), self::STATUS_INCOMPLETE_CONF, $previous); + parent::__construct($l->t('Storage incomplete configuration. %s', [$message]), self::STATUS_INCOMPLETE_CONF, $previous); } } diff --git a/lib/public/Files/StorageConnectionException.php b/lib/public/Files/StorageConnectionException.php index 7a5381aef73..f12c84653b7 100644 --- a/lib/public/Files/StorageConnectionException.php +++ b/lib/public/Files/StorageConnectionException.php @@ -31,12 +31,11 @@ class StorageConnectionException extends StorageNotAvailableException { * StorageConnectionException constructor. * * @param string $message - * @param int $code - * @param \Exception $previous + * @param \Exception|null $previous * @since 9.0.0 */ public function __construct($message = '', \Exception $previous = null) { $l = \OC::$server->getL10N('core'); - parent::__construct($l->t('Storage connection error. %s', $message), self::STATUS_NETWORK_ERROR, $previous); + parent::__construct($l->t('Storage connection error. %s', [$message]), self::STATUS_NETWORK_ERROR, $previous); } } diff --git a/lib/public/Files/StorageNotAvailableException.php b/lib/public/Files/StorageNotAvailableException.php index b6a5a70718a..b3f6e1a6b76 100644 --- a/lib/public/Files/StorageNotAvailableException.php +++ b/lib/public/Files/StorageNotAvailableException.php @@ -53,7 +53,7 @@ class StorageNotAvailableException extends HintException { * * @param string $message * @param int $code - * @param \Exception $previous + * @param \Exception|null $previous * @since 6.0.0 */ public function __construct($message = '', $code = self::STATUS_ERROR, \Exception $previous = null) { diff --git a/lib/public/Files/StorageTimeoutException.php b/lib/public/Files/StorageTimeoutException.php index 16675710dff..b5566ada9b5 100644 --- a/lib/public/Files/StorageTimeoutException.php +++ b/lib/public/Files/StorageTimeoutException.php @@ -31,12 +31,11 @@ class StorageTimeoutException extends StorageNotAvailableException { * StorageTimeoutException constructor. * * @param string $message - * @param int $code - * @param \Exception $previous + * @param \Exception|null $previous * @since 9.0.0 */ public function __construct($message = '', \Exception $previous = null) { $l = \OC::$server->getL10N('core'); - parent::__construct($l->t('Storage connection timeout. %s', $message), self::STATUS_TIMEOUT, $previous); + parent::__construct($l->t('Storage connection timeout. %s', [$message]), self::STATUS_TIMEOUT, $previous); } } diff --git a/lib/public/IDateTimeFormatter.php b/lib/public/IDateTimeFormatter.php index 20b01467e29..a97eca2860e 100644 --- a/lib/public/IDateTimeFormatter.php +++ b/lib/public/IDateTimeFormatter.php @@ -40,8 +40,8 @@ interface IDateTimeFormatter { * medium: e.g. 'MMM d, y' => 'Aug 20, 2014' * short: e.g. 'M/d/yy' => '8/20/14' * The exact format is dependent on the language - * @param \DateTimeZone $timeZone The timezone to use - * @param \OCP\IL10N $l The locale to use + * @param \DateTimeZone|null $timeZone The timezone to use + * @param \OCP\IL10N|null $l The locale to use * @return string Formatted date string * @since 8.0.0 */ @@ -58,8 +58,8 @@ interface IDateTimeFormatter { * short: e.g. 'M/d/yy' => '8/20/14' * The exact format is dependent on the language * Uses 'Today', 'Yesterday' and 'Tomorrow' when applicable - * @param \DateTimeZone $timeZone The timezone to use - * @param \OCP\IL10N $l The locale to use + * @param \DateTimeZone|null $timeZone The timezone to use + * @param \OCP\IL10N|null $l The locale to use * @return string Formatted relative date string * @since 8.0.0 */ @@ -70,13 +70,12 @@ interface IDateTimeFormatter { * Only works for past dates * * @param int|\DateTime $timestamp - * @param int|\DateTime $baseTimestamp Timestamp to compare $timestamp against, defaults to current time + * @param int|\DateTime|null $baseTimestamp Timestamp to compare $timestamp against, defaults to current time + * @param \OCP\IL10N|null $l The locale to use * @return string Dates returned are: * < 1 month => Today, Yesterday, n days ago * < 13 month => last month, n months ago * >= 13 month => last year, n years ago - * @param \OCP\IL10N $l The locale to use - * @return string Formatted date span * @since 8.0.0 */ public function formatDateSpan($timestamp, $baseTimestamp = null, \OCP\IL10N $l = null); @@ -91,8 +90,8 @@ interface IDateTimeFormatter { * medium: e.g. 'h:mm:ss a' => '11:42:13 AM' * short: e.g. 'h:mm a' => '11:42 AM' * The exact format is dependent on the language - * @param \DateTimeZone $timeZone The timezone to use - * @param \OCP\IL10N $l The locale to use + * @param \DateTimeZone|null $timeZone The timezone to use + * @param \OCP\IL10N|null $l The locale to use * @return string Formatted time string * @since 8.0.0 */ @@ -102,7 +101,8 @@ interface IDateTimeFormatter { * Gives the relative past time of the timestamp * * @param int|\DateTime $timestamp - * @param int|\DateTime $baseTimestamp Timestamp to compare $timestamp against, defaults to current time + * @param int|\DateTime|null $baseTimestamp Timestamp to compare $timestamp against, defaults to current time + * @param \OCP\IL10N|null $l The locale to use * @return string Dates returned are: * < 60 sec => seconds ago * < 1 hour => n minutes ago @@ -110,8 +110,6 @@ interface IDateTimeFormatter { * < 1 month => Yesterday, n days ago * < 13 month => last month, n months ago * >= 13 month => last year, n years ago - * @param \OCP\IL10N $l The locale to use - * @return string Formatted time span * @since 8.0.0 */ public function formatTimeSpan($timestamp, $baseTimestamp = null, \OCP\IL10N $l = null); @@ -122,8 +120,8 @@ interface IDateTimeFormatter { * @param int|\DateTime $timestamp * @param string $formatDate See formatDate() for description * @param string $formatTime See formatTime() for description - * @param \DateTimeZone $timeZone The timezone to use - * @param \OCP\IL10N $l The locale to use + * @param \DateTimeZone|null $timeZone The timezone to use + * @param \OCP\IL10N|null $l The locale to use * @return string Formatted date and time string * @since 8.0.0 */ @@ -136,8 +134,8 @@ interface IDateTimeFormatter { * @param string $formatDate See formatDate() for description * Uses 'Today', 'Yesterday' and 'Tomorrow' when applicable * @param string $formatTime See formatTime() for description - * @param \DateTimeZone $timeZone The timezone to use - * @param \OCP\IL10N $l The locale to use + * @param \DateTimeZone|null $timeZone The timezone to use + * @param \OCP\IL10N|null $l The locale to use * @return string Formatted relative date and time string * @since 8.0.0 */ diff --git a/lib/public/IGroup.php b/lib/public/IGroup.php index aa51e51046c..788287b4f86 100644 --- a/lib/public/IGroup.php +++ b/lib/public/IGroup.php @@ -60,7 +60,7 @@ interface IGroup { * @return bool * @since 8.0.0 */ - public function inGroup($user); + public function inGroup(IUser $user); /** * add a user to the group @@ -68,7 +68,7 @@ interface IGroup { * @param \OCP\IUser $user * @since 8.0.0 */ - public function addUser($user); + public function addUser(IUser $user); /** * remove a user from the group diff --git a/lib/public/IGroupManager.php b/lib/public/IGroupManager.php index 4d76fa76fb3..be322b64325 100644 --- a/lib/public/IGroupManager.php +++ b/lib/public/IGroupManager.php @@ -100,14 +100,14 @@ interface IGroupManager { * @return \OCP\IGroup[] * @since 8.0.0 */ - public function getUserGroups($user); + public function getUserGroups(IUser $user = null); /** * @param \OCP\IUser $user * @return array with group names * @since 8.0.0 */ - public function getUserGroupIds($user); + public function getUserGroupIds(IUser $user); /** * get a list of all display names in a group diff --git a/lib/public/ILogger.php b/lib/public/ILogger.php index 2d1bf4b804d..28cc3b1433f 100644 --- a/lib/public/ILogger.php +++ b/lib/public/ILogger.php @@ -136,7 +136,7 @@ interface ILogger { * ]); * </code> * - * @param \Exception | \Throwable $exception + * @param \Exception|\Throwable $exception * @param array $context * @return void * @since 8.2.0 diff --git a/lib/public/JSON.php b/lib/public/JSON.php index 7db61ff1571..b289c2038a1 100644 --- a/lib/public/JSON.php +++ b/lib/public/JSON.php @@ -45,6 +45,8 @@ class JSON { * @param array $data The data to use * @param bool $setContentType the optional content type * @deprecated 8.1.0 Use a AppFramework JSONResponse instead + * + * @suppress PhanDeprecatedFunction */ public static function encodedPrint( $data, $setContentType=true ) { \OC_JSON::encodedPrint($data, $setContentType); @@ -63,6 +65,8 @@ class JSON { * Add this call to the start of all ajax method files that requires * an authenticated user. * @deprecated 8.1.0 Use annotation based ACLs from the AppFramework instead + * + * @suppress PhanDeprecatedFunction */ public static function checkLoggedIn() { \OC_JSON::checkLoggedIn(); @@ -86,6 +90,8 @@ class JSON { * parameter to the ajax call, then assign it to the template and finally * add a hidden input field also named 'requesttoken' containing the value. * @deprecated 8.1.0 Use annotation based CSRF checks from the AppFramework instead + * + * @suppress PhanDeprecatedFunction */ public static function callCheck() { \OC_JSON::callCheck(); @@ -98,8 +104,8 @@ class JSON { * @see \OCP\JSON::error() for the format to use. * * @param array $data The data to use - * @return string json formatted string. * @deprecated 8.1.0 Use a AppFramework JSONResponse instead + * @suppress PhanDeprecatedFunction */ public static function success( $data = array() ) { \OC_JSON::success($data); @@ -121,17 +127,18 @@ class JSON { * {"status":"error","data":{"message":"An error happened", "id":[some value]}} * * @param array $data The data to use - * @return string json formatted error string. * @deprecated 8.1.0 Use a AppFramework JSONResponse instead + * @suppress PhanDeprecatedFunction */ public static function error( $data = array() ) { - \OC_JSON::error( $data ); + \OC_JSON::error($data); } /** * Set Content-Type header to jsonrequest * @param string $type The content type header * @deprecated 8.1.0 Use a AppFramework JSONResponse instead + * @suppress PhanDeprecatedFunction */ public static function setContentTypeHeader( $type='application/json' ) { \OC_JSON::setContentTypeHeader($type); @@ -152,6 +159,7 @@ class JSON { * * @param string $app The app to check * @deprecated 8.1.0 Use the AppFramework instead. It will automatically check if the app is enabled. + * @suppress PhanDeprecatedFunction */ public static function checkAppEnabled( $app ) { \OC_JSON::checkAppEnabled($app); @@ -171,6 +179,7 @@ class JSON { * administrative rights. * * @deprecated 8.1.0 Use annotation based ACLs from the AppFramework instead + * @suppress PhanDeprecatedFunction */ public static function checkAdminUser() { \OC_JSON::checkAdminUser(); @@ -181,6 +190,7 @@ class JSON { * @param array $data * @return string * @deprecated 8.1.0 Use a AppFramework JSONResponse instead + * @suppress PhanDeprecatedFunction */ public static function encode($data) { return \OC_JSON::encode($data); @@ -190,6 +200,7 @@ class JSON { * Check is a given user exists - send json error msg if not * @param string $user * @deprecated 8.1.0 Use a AppFramework JSONResponse instead + * @suppress PhanDeprecatedFunction */ public static function checkUserExists($user) { \OC_JSON::checkUserExists($user); diff --git a/lib/public/Lock/LockedException.php b/lib/public/Lock/LockedException.php index 87ae4511ac9..c371c6c56b0 100644 --- a/lib/public/Lock/LockedException.php +++ b/lib/public/Lock/LockedException.php @@ -43,7 +43,7 @@ class LockedException extends \Exception { * LockedException constructor. * * @param string $path locked path - * @param \Exception $previous previous exception for cascading + * @param \Exception|null $previous previous exception for cascading * * @since 8.1.0 */ diff --git a/lib/public/Mail/IEMailTemplate.php b/lib/public/Mail/IEMailTemplate.php index 6df83b4d10e..6d0591b019b 100644 --- a/lib/public/Mail/IEMailTemplate.php +++ b/lib/public/Mail/IEMailTemplate.php @@ -62,7 +62,7 @@ interface IEMailTemplate { * Adds a heading to the email * * @param string $title - * @param string $plainTitle|bool Title that is used in the plain text email + * @param string|bool $plainTitle Title that is used in the plain text email * if empty the $title is used, if false none will be used * * @since 12.0.0 diff --git a/lib/public/Response.php b/lib/public/Response.php index b68da644352..dd029e12dbf 100644 --- a/lib/public/Response.php +++ b/lib/public/Response.php @@ -109,6 +109,7 @@ class Response { * @param string $filepath of file to send * @since 4.0.0 * @deprecated 8.1.0 - Use \OCP\AppFramework\Http\StreamResponse or another AppFramework controller instead + * @suppress PhanDeprecatedFunction */ static public function sendFile( $filepath ) { \OC_Response::sendFile( $filepath ); diff --git a/lib/public/Search/PagedProvider.php b/lib/public/Search/PagedProvider.php index 3bd5b75cc2d..b1294fa6dc4 100644 --- a/lib/public/Search/PagedProvider.php +++ b/lib/public/Search/PagedProvider.php @@ -53,7 +53,7 @@ abstract class PagedProvider extends Provider { */ public function search($query) { // old apps might assume they get all results, so we use SIZE_ALL - $this->searchPaged($query, 1, self::SIZE_ALL); + return $this->searchPaged($query, 1, self::SIZE_ALL); } /** diff --git a/lib/public/Share.php b/lib/public/Share.php index ec3a7c8db1b..f3a0b53efec 100644 --- a/lib/public/Share.php +++ b/lib/public/Share.php @@ -265,8 +265,8 @@ class Share extends \OC\Share\Constants { * @param string $shareWith User or group the item is being shared with * @param int $permissions CRUDS * @param string $itemSourceName - * @param \DateTime $expirationDate - * @param bool $passwordChanged + * @param \DateTime|null $expirationDate + * @param bool|null $passwordChanged * @return bool|string Returns true on success or false on failure, Returns token on success for links * @throws \OC\HintException when the share type is remote and the shareWith is invalid * @throws \Exception diff --git a/lib/public/Share/Exceptions/GenericShareException.php b/lib/public/Share/Exceptions/GenericShareException.php index 8410a2d0037..21a3b2caa5b 100644 --- a/lib/public/Share/Exceptions/GenericShareException.php +++ b/lib/public/Share/Exceptions/GenericShareException.php @@ -35,7 +35,7 @@ class GenericShareException extends HintException { * @param string $message * @param string $hint * @param int $code - * @param \Exception $previous + * @param \Exception|null $previous * @since 9.0.0 */ public function __construct($message = '', $hint = '', $code = 0, \Exception $previous = null) { diff --git a/lib/public/SystemTag/ManagerEvent.php b/lib/public/SystemTag/ManagerEvent.php index 85e7863492e..f7a9b8d6da7 100644 --- a/lib/public/SystemTag/ManagerEvent.php +++ b/lib/public/SystemTag/ManagerEvent.php @@ -48,7 +48,7 @@ class ManagerEvent extends Event { * * @param string $event * @param ISystemTag $tag - * @param ISystemTag $beforeTag + * @param ISystemTag|null $beforeTag * @since 9.0.0 */ public function __construct($event, ISystemTag $tag, ISystemTag $beforeTag = null) { diff --git a/lib/public/SystemTag/TagNotFoundException.php b/lib/public/SystemTag/TagNotFoundException.php index c983e2afc80..49008d1adde 100644 --- a/lib/public/SystemTag/TagNotFoundException.php +++ b/lib/public/SystemTag/TagNotFoundException.php @@ -38,7 +38,7 @@ class TagNotFoundException extends \RuntimeException { * * @param string $message * @param int $code - * @param \Exception $previous + * @param \Exception|null $previous * @param string[] $tags * @since 9.0.0 */ diff --git a/lib/public/Template.php b/lib/public/Template.php index 3dcee14d880..edea99f9ef3 100644 --- a/lib/public/Template.php +++ b/lib/public/Template.php @@ -48,6 +48,7 @@ namespace OCP; * * @see \OCP\IURLGenerator::imagePath * @deprecated 8.0.0 Use \OCP\Template::image_path() instead + * @suppress PhanDeprecatedFunction */ function image_path($app, $image) { return \image_path($app, $image); @@ -59,6 +60,7 @@ function image_path($app, $image) { * @param string $mimetype * @return string to the image of this file type. * @deprecated 8.0.0 Use \OCP\Template::mimetype_icon() instead + * @suppress PhanDeprecatedFunction */ function mimetype_icon($mimetype) { return \mimetype_icon($mimetype); @@ -69,6 +71,7 @@ function mimetype_icon($mimetype) { * @param string $path path to file * @return string to the preview of the image * @deprecated 8.0.0 Use \OCP\Template::preview_icon() instead + * @suppress PhanDeprecatedFunction */ function preview_icon($path) { return \preview_icon($path); @@ -81,6 +84,7 @@ function preview_icon($path) { * @param string $token * @return string link to the preview * @deprecated 8.0.0 Use \OCP\Template::publicPreview_icon() instead + * @suppress PhanDeprecatedFunction */ function publicPreview_icon($path, $token) { return \publicPreview_icon($path, $token); @@ -92,6 +96,7 @@ function publicPreview_icon($path, $token) { * @param int $bytes in bytes * @return string size as string * @deprecated 8.0.0 Use \OCP\Template::human_file_size() instead + * @suppress PhanDeprecatedFunction */ function human_file_size($bytes) { return \human_file_size($bytes); @@ -105,6 +110,8 @@ function human_file_size($bytes) { * @return string human readable interpretation of the timestamp * * @deprecated 8.0.0 Use \OCP\Template::relative_modified_date() instead + * @suppress PhanDeprecatedFunction + * @suppress PhanTypeMismatchArgument */ function relative_modified_date($timestamp, $dateOnly = false) { return \relative_modified_date($timestamp, null, $dateOnly); @@ -116,6 +123,7 @@ function relative_modified_date($timestamp, $dateOnly = false) { * @param integer $bytes size of a file in byte * @return string human readable interpretation of a file size * @deprecated 8.0.0 Use \OCP\Template::human_file_size() instead + * @suppress PhanDeprecatedFunction */ function simple_file_size($bytes) { return \human_file_size($bytes); @@ -129,6 +137,7 @@ function simple_file_size($bytes) { * @param array $params the parameters * @return string html options * @deprecated 8.0.0 Use \OCP\Template::html_select_options() instead + * @suppress PhanDeprecatedFunction */ function html_select_options($options, $selected, $params=array()) { return \html_select_options($options, $selected, $params); @@ -151,6 +160,7 @@ class Template extends \OC_Template { * @param string $image * @return string to the image * @since 8.0.0 + * @suppress PhanDeprecatedFunction */ public static function image_path($app, $image) { return \image_path($app, $image); @@ -163,6 +173,7 @@ class Template extends \OC_Template { * @param string $mimetype * @return string to the image of this file type. * @since 8.0.0 + * @suppress PhanDeprecatedFunction */ public static function mimetype_icon($mimetype) { return \mimetype_icon($mimetype); @@ -174,6 +185,7 @@ class Template extends \OC_Template { * @param string $path path to file * @return string to the preview of the image * @since 8.0.0 + * @suppress PhanDeprecatedFunction */ public static function preview_icon($path) { return \preview_icon($path); @@ -187,6 +199,7 @@ class Template extends \OC_Template { * @param string $token * @return string link to the preview * @since 8.0.0 + * @suppress PhanDeprecatedFunction */ public static function publicPreview_icon($path, $token) { return \publicPreview_icon($path, $token); @@ -199,6 +212,7 @@ class Template extends \OC_Template { * @param int $bytes in bytes * @return string size as string * @since 8.0.0 + * @suppress PhanDeprecatedFunction */ public static function human_file_size($bytes) { return \human_file_size($bytes); @@ -211,6 +225,8 @@ class Template extends \OC_Template { * @param boolean $dateOnly * @return string human readable interpretation of the timestamp * @since 8.0.0 + * @suppress PhanDeprecatedFunction + * @suppress PhanTypeMismatchArgument */ public static function relative_modified_date($timestamp, $dateOnly = false) { return \relative_modified_date($timestamp, null, $dateOnly); @@ -224,6 +240,7 @@ class Template extends \OC_Template { * @param array $params the parameters * @return string html options * @since 8.0.0 + * @suppress PhanDeprecatedFunction */ public static function html_select_options($options, $selected, $params=array()) { return \html_select_options($options, $selected, $params); diff --git a/lib/public/User.php b/lib/public/User.php index 64398a7f1f8..ef0096deab4 100644 --- a/lib/public/User.php +++ b/lib/public/User.php @@ -89,6 +89,7 @@ class User { * @return array an array of all display names (value) and the correspondig uids (key) * @deprecated 8.1.0 use method searchDisplayName() of \OCP\IUserManager - \OC::$server->getUserManager() * @since 5.0.0 + * @suppress PhanDeprecatedFunction */ public static function getDisplayNames( $search = '', $limit = null, $offset = null ) { return \OC_User::getDisplayNames( $search, $limit, $offset ); @@ -111,8 +112,8 @@ class User { * @deprecated 8.1.0 use method userExists() of \OCP\IUserManager - \OC::$server->getUserManager() * @since 5.0.0 */ - public static function userExists( $uid, $excludingBackend = null ) { - return \OC_User::userExists( $uid, $excludingBackend ); + public static function userExists($uid, $excludingBackend = null) { + return \OC_User::userExists($uid); } /** * Logs the user out including all the session data diff --git a/lib/public/Util.php b/lib/public/Util.php index 6f2e455c3e4..e4ebdb5bfa7 100644 --- a/lib/public/Util.php +++ b/lib/public/Util.php @@ -252,6 +252,7 @@ class Util { * * @deprecated 8.0.0 Use \OC::$server->query('DateTimeFormatter') instead * @since 4.0.0 + * @suppress PhanDeprecatedFunction */ public static function formatDate($timestamp, $dateOnly=false, $timeZone = null) { return \OC_Util::formatDate($timestamp, $dateOnly, $timeZone); @@ -351,7 +352,7 @@ class Util { * @since 5.0.0 */ public static function getServerHostName() { - $host_name = self::getServerHost(); + $host_name = \OC::$server->getRequest()->getServerHost(); // strip away port number (if existing) $colon_pos = strpos($host_name, ':'); if ($colon_pos != FALSE) { @@ -447,7 +448,7 @@ class Util { /** * Make a computer file size (2 kB to 2048) * @param string $str file size in a fancy format - * @return int a file size in bytes + * @return float a file size in bytes * * Inspired by: http://www.php.net/manual/en/function.filesize.php#92418 * @since 4.0.0 @@ -602,7 +603,7 @@ class Util { * * @param array $haystack the array to be searched * @param string $needle the search string - * @param int $index optional, only search this key name + * @param mixed $index optional, only search this key name * @return mixed the key of the matching field, otherwise false * @since 4.5.0 */ @@ -648,6 +649,7 @@ class Util { * @return bool true if the file name is valid, false otherwise * @deprecated 8.1.0 use \OC\Files\View::verifyPath() * @since 7.0.0 + * @suppress PhanDeprecatedFunction */ public static function isValidFileName($file) { return \OC_Util::isValidFileName($file); diff --git a/ocs/providers.php b/ocs/providers.php index 9efca14768e..1961a68ec2d 100644 --- a/ocs/providers.php +++ b/ocs/providers.php @@ -34,7 +34,7 @@ $url = $request->getServerProtocol() . '://' . substr($request->getServerHost() $writer = new XMLWriter(); $writer->openURI('php://output'); $writer->startDocument('1.0','UTF-8'); -$writer->setIndent(4); +$writer->setIndent(true); $writer->startElement('providers'); $writer->startElement('provider'); $writer->writeElement('id', 'ownCloud'); diff --git a/public.php b/public.php index a9365d6db63..efa59267125 100644 --- a/public.php +++ b/public.php @@ -51,8 +51,8 @@ try { $pathInfo = trim($pathInfo, '/'); list($service) = explode('/', $pathInfo); } - $file = OCP\Config::getAppValue('core', 'public_' . strip_tags($service)); - if (is_null($file)) { + $file = \OC::$server->getConfig()->getAppValue('core', 'public_' . strip_tags($service)); + if ($file === null) { header('HTTP/1.0 404 Not Found'); exit; } diff --git a/remote.php b/remote.php index 8e74967365d..1d83e5a7f83 100644 --- a/remote.php +++ b/remote.php @@ -41,7 +41,7 @@ class RemoteException extends Exception { } /** - * @param Exception | Error $e + * @param Exception|Error $e */ function handleException($e) { $request = \OC::$server->getRequest(); diff --git a/settings/BackgroundJobs/VerifyUserData.php b/settings/BackgroundJobs/VerifyUserData.php index 5e5b2b9c678..90f9e1fc678 100644 --- a/settings/BackgroundJobs/VerifyUserData.php +++ b/settings/BackgroundJobs/VerifyUserData.php @@ -87,7 +87,7 @@ class VerifyUserData extends Job { * run the job, then remove it from the jobList * * @param JobList $jobList - * @param ILogger $logger + * @param ILogger|null $logger */ public function execute($jobList, ILogger $logger = null) { diff --git a/settings/Controller/AuthSettingsController.php b/settings/Controller/AuthSettingsController.php index d1ce567afb9..7b68fc4c289 100644 --- a/settings/Controller/AuthSettingsController.php +++ b/settings/Controller/AuthSettingsController.php @@ -76,11 +76,11 @@ class AuthSettingsController extends Controller { * @NoAdminRequired * @NoSubadminRequired * - * @return JSONResponse + * @return JSONResponse|array */ public function index() { $user = $this->userManager->get($this->uid); - if (is_null($user)) { + if ($user === null) { return []; } $tokens = $this->tokenProvider->getTokenByUser($user); @@ -147,6 +147,9 @@ class AuthSettingsController extends Controller { ]); } + /** + * @return JSONResponse + */ private function getServiceNotAvailableResponse() { $resp = new JSONResponse(); $resp->setStatus(Http::STATUS_SERVICE_UNAVAILABLE); @@ -172,7 +175,7 @@ class AuthSettingsController extends Controller { * @NoAdminRequired * @NoSubadminRequired * - * @return JSONResponse + * @return array */ public function destroy($id) { $user = $this->userManager->get($this->uid); @@ -190,9 +193,10 @@ class AuthSettingsController extends Controller { * * @param int $id * @param array $scope + * @return array */ public function update($id, array $scope) { - $token = $this->tokenProvider->getTokenById($id); + $token = $this->tokenProvider->getTokenById((string)$id); $token->setScope([ 'filesystem' => $scope['filesystem'] ]); diff --git a/settings/Controller/CertificateController.php b/settings/Controller/CertificateController.php index 1cf9e03effb..c5f7e89f3fc 100644 --- a/settings/Controller/CertificateController.php +++ b/settings/Controller/CertificateController.php @@ -72,7 +72,7 @@ class CertificateController extends Controller { * * @NoAdminRequired * @NoSubadminRequired - * @return array + * @return DataResponse */ public function addPersonalRootCertificate() { return $this->addCertificate($this->userCertificateManager); @@ -114,7 +114,7 @@ class CertificateController extends Controller { $headers ); } catch (\Exception $e) { - return new DataResponse('An error occurred.', Http::STATUS_UNPROCESSABLE_ENTITY, $headers); + return new DataResponse(['An error occurred.'], Http::STATUS_UNPROCESSABLE_ENTITY, $headers); } } @@ -129,7 +129,7 @@ class CertificateController extends Controller { public function removePersonalRootCertificate($certificateIdentifier) { if ($this->isCertificateImportAllowed() === false) { - return new DataResponse('Individual certificate management disabled', Http::STATUS_FORBIDDEN); + return new DataResponse(['Individual certificate management disabled'], Http::STATUS_FORBIDDEN); } $this->userCertificateManager->removeCertificate($certificateIdentifier); @@ -156,7 +156,7 @@ class CertificateController extends Controller { /** * Add a new personal root certificate to the system's trust store * - * @return array + * @return DataResponse */ public function addSystemRootCertificate() { return $this->addCertificate($this->systemCertificateManager); @@ -171,7 +171,7 @@ class CertificateController extends Controller { public function removeSystemRootCertificate($certificateIdentifier) { if ($this->isCertificateImportAllowed() === false) { - return new DataResponse('Individual certificate management disabled', Http::STATUS_FORBIDDEN); + return new DataResponse(['Individual certificate management disabled'], Http::STATUS_FORBIDDEN); } $this->systemCertificateManager->removeCertificate($certificateIdentifier); diff --git a/settings/Controller/ChangePasswordController.php b/settings/Controller/ChangePasswordController.php index cb1a97386a6..a758180e858 100644 --- a/settings/Controller/ChangePasswordController.php +++ b/settings/Controller/ChangePasswordController.php @@ -22,6 +22,7 @@ namespace OC\Settings\Controller; use OC\HintException; +use OC\User\Session; use OCP\App\IAppManager; use OCP\AppFramework\Controller; use OCP\AppFramework\Http\JSONResponse; @@ -46,7 +47,7 @@ class ChangePasswordController extends Controller { /** @var IGroupManager */ private $groupManager; - /** @var IUserSession */ + /** @var Session */ private $userSession; /** @var IAppManager */ diff --git a/settings/Controller/UsersController.php b/settings/Controller/UsersController.php index 76394fcb6c6..4b03cf91a10 100644 --- a/settings/Controller/UsersController.php +++ b/settings/Controller/UsersController.php @@ -45,7 +45,6 @@ use OCP\Files\Config\IUserMountCache; use OCP\Encryption\IEncryptionModule; use OCP\Encryption\IManager; use OCP\IConfig; -use OCP\IGroupManager; use OCP\IL10N; use OCP\ILogger; use OCP\IRequest; @@ -71,7 +70,7 @@ class UsersController extends Controller { private $isAdmin; /** @var IUserManager */ private $userManager; - /** @var IGroupManager */ + /** @var \OC\Group\Manager */ private $groupManager; /** @var IConfig */ private $config; @@ -113,7 +112,7 @@ class UsersController extends Controller { * @param string $appName * @param IRequest $request * @param IUserManager $userManager - * @param IGroupManager $groupManager + * @param \OC\Group\Manager $groupManager * @param IUserSession $userSession * @param IConfig $config * @param bool $isAdmin @@ -136,7 +135,7 @@ class UsersController extends Controller { public function __construct($appName, IRequest $request, IUserManager $userManager, - IGroupManager $groupManager, + \OC\Group\Manager $groupManager, IUserSession $userSession, IConfig $config, $isAdmin, @@ -180,14 +179,14 @@ class UsersController extends Controller { $this->isEncryptionAppEnabled = $appManager->isEnabledForUser('encryption'); if ($this->isEncryptionAppEnabled) { // putting this directly in empty is possible in PHP 5.5+ - $result = $config->getAppValue('encryption', 'recoveryAdminEnabled', 0); + $result = $config->getAppValue('encryption', 'recoveryAdminEnabled', '0'); $this->isRestoreEnabled = !empty($result); } } /** * @param IUser $user - * @param array $userGroups + * @param array|null $userGroups * @return array */ private function formatUserForIndex(IUser $user, array $userGroups = null) { diff --git a/settings/Hooks.php b/settings/Hooks.php index 2cc5ce30bbe..115f62a9a2a 100644 --- a/settings/Hooks.php +++ b/settings/Hooks.php @@ -119,7 +119,7 @@ class Hooks { if ($user->getEMailAddress() !== null) { $template = $this->mailer->createEMailTemplate(); $template->addHeader(); - $template->addHeading($this->l->t('Password changed for %s', $user->getDisplayName()), false); + $template->addHeading($this->l->t('Password changed for %s', [$user->getDisplayName()]), false); $template->addBodyText($text . ' ' . $this->l->t('If you did not request this, please contact an administrator.')); $template->addFooter(); @@ -185,10 +185,10 @@ class Hooks { if ($oldMailAddress !== null) { $template = $this->mailer->createEMailTemplate(); $template->addHeader(); - $template->addHeading($this->l->t('Email address changed for %s', $user->getDisplayName()), false); + $template->addHeading($this->l->t('Email address changed for %s', [$user->getDisplayName()]), false); $template->addBodyText($text . ' ' . $this->l->t('If you did not request this, please contact an administrator.')); if ($user->getEMailAddress()) { - $template->addBodyText($this->l->t('The new email address is %s', $user->getEMailAddress())); + $template->addBodyText($this->l->t('The new email address is %s', [$user->getEMailAddress()])); } $template->addFooter(); diff --git a/settings/Middleware/SubadminMiddleware.php b/settings/Middleware/SubadminMiddleware.php index df34b80656b..9914d65af02 100644 --- a/settings/Middleware/SubadminMiddleware.php +++ b/settings/Middleware/SubadminMiddleware.php @@ -27,6 +27,7 @@ namespace OC\Settings\Middleware; use OC\AppFramework\Http; use OC\AppFramework\Middleware\Security\Exceptions\NotAdminException; use OC\AppFramework\Utility\ControllerMethodReflector; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Middleware; @@ -54,7 +55,7 @@ class SubadminMiddleware extends Middleware { /** * Check if sharing is enabled before the controllers is executed - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * @throws \Exception */ @@ -68,7 +69,7 @@ class SubadminMiddleware extends Middleware { /** * Return 403 page in case of an exception - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * @param \Exception $exception * @return TemplateResponse diff --git a/settings/l10n/cs.js b/settings/l10n/cs.js index 06e7e36216c..d4ef3099ab9 100644 --- a/settings/l10n/cs.js +++ b/settings/l10n/cs.js @@ -249,7 +249,6 @@ OC.L10N.register( "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Musíte přenést své šifrovací klíče ze staré verze šifrování (ownCloud <= 8.0) na novou.", "Start migration" : "Spustit migraci", "Security & setup warnings" : "Upozornění zabezpečení a nastavení", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Pro optimální zabezpečení a výkon instance je důležitě, aby vše bylo správně nakonfigurováno. Abychom vám v tom pomohli, automaticky ověřujeme některá nastavení. Pro více informací nahlédněte do sekce Tipy a Triky a do dokumentace.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP není nejspíše správně nastaveno pro dotazování na proměnné hodnoty systému. Test s getenv(\"PATH\") vrací pouze prázdnou odpověď.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Zkontrolujte prosím konfiguraci PHP podle <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">instalační dokumentace ↗</a>, hlavně při použití php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Konfigurace je nastavena pouze pro čtení. Toto znemožňuje některá nastavení přes webové rozhraní. Dále musí být pro každou změnu povolen zápis do konfiguračního souboru ručně.", @@ -440,6 +439,7 @@ OC.L10N.register( "Subscribe to our newsletter!" : "Odebírejte náš newsletter!", "Show last log in" : "Poslední přihlášení", "Verifying" : "Ověřování", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Pro optimální zabezpečení a výkon instance je důležitě, aby vše bylo správně nakonfigurováno. Abychom vám v tom pomohli, automaticky ověřujeme některá nastavení. Pro více informací nahlédněte do sekce Tipy a Triky a do dokumentace.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP modul 'fileinfo' chybí. Velmi ho kvůli lepším výsledkům detekce MIME typu souburu doporučujeme povolit.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Weboví, desktopoví a mobilní klienti a hesla v aplikacích, která aktuálně mají přístup k vašemu účtu.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Zde můžete vytvořit hesla pro jednotlivé aplikace, takže nemusíte sdělovat vaše heslo. Také je zde můžete kdykoliv zneplatnit.", diff --git a/settings/l10n/cs.json b/settings/l10n/cs.json index 00315bd9f69..5111c5b57e6 100644 --- a/settings/l10n/cs.json +++ b/settings/l10n/cs.json @@ -247,7 +247,6 @@ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Musíte přenést své šifrovací klíče ze staré verze šifrování (ownCloud <= 8.0) na novou.", "Start migration" : "Spustit migraci", "Security & setup warnings" : "Upozornění zabezpečení a nastavení", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Pro optimální zabezpečení a výkon instance je důležitě, aby vše bylo správně nakonfigurováno. Abychom vám v tom pomohli, automaticky ověřujeme některá nastavení. Pro více informací nahlédněte do sekce Tipy a Triky a do dokumentace.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP není nejspíše správně nastaveno pro dotazování na proměnné hodnoty systému. Test s getenv(\"PATH\") vrací pouze prázdnou odpověď.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Zkontrolujte prosím konfiguraci PHP podle <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">instalační dokumentace ↗</a>, hlavně při použití php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Konfigurace je nastavena pouze pro čtení. Toto znemožňuje některá nastavení přes webové rozhraní. Dále musí být pro každou změnu povolen zápis do konfiguračního souboru ručně.", @@ -438,6 +437,7 @@ "Subscribe to our newsletter!" : "Odebírejte náš newsletter!", "Show last log in" : "Poslední přihlášení", "Verifying" : "Ověřování", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Pro optimální zabezpečení a výkon instance je důležitě, aby vše bylo správně nakonfigurováno. Abychom vám v tom pomohli, automaticky ověřujeme některá nastavení. Pro více informací nahlédněte do sekce Tipy a Triky a do dokumentace.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP modul 'fileinfo' chybí. Velmi ho kvůli lepším výsledkům detekce MIME typu souburu doporučujeme povolit.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Weboví, desktopoví a mobilní klienti a hesla v aplikacích, která aktuálně mají přístup k vašemu účtu.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Zde můžete vytvořit hesla pro jednotlivé aplikace, takže nemusíte sdělovat vaše heslo. Také je zde můžete kdykoliv zneplatnit.", diff --git a/settings/l10n/de.js b/settings/l10n/de.js index 58702db5295..76b5ae7b1f6 100644 --- a/settings/l10n/de.js +++ b/settings/l10n/de.js @@ -249,7 +249,6 @@ OC.L10N.register( "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du musst Deinen Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren.", "Start migration" : "Migration beginnen", "Security & setup warnings" : "Sicherheits- & Einrichtungswarnungen", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Für die Sicherheit und Geschwindigkeit Deiner Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Dir hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen findest Du im Tipps & Tricks- Abschnitt und in der Dokumentation.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP scheint zur Abfrage von Systemumgebungsvariablen nicht richtig eingerichtet zu sein. Der Test mit getenv(\"PATH\") liefert nur eine leere Antwort zurück.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Bitte die <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">Installationsdokumentation ↗</a> auf Hinweise zur PHP-Konfiguration durchlesen, sowie die PHP-Konfiguration Deines Servers überprüfen, insbesondere dann, wenn PHP-FPM eingesetzt wird.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Die schreibgeschützte Konfiguration wurde aktiviert. Dies verhindert das Setzen einiger Einstellungen über die Web-Schnittstelle. Weiterhin muss bei jedem Update der Schreibzugriff auf die Datei händisch aktiviert werden.", @@ -440,6 +439,7 @@ OC.L10N.register( "Subscribe to our newsletter!" : "Abonniere unseren Newsletter!", "Show last log in" : "Letzte Anmeldung anzeigen", "Verifying" : "Überprüfe", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Für die Sicherheit und Geschwindigkeit Deiner Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Dir hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen findest Du im Tipps & Tricks- Abschnitt und in der Dokumentation.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Das PHP Modul 'fileinfo' fehlt. Wir empfehlen dringend, das Modul zu aktivieren, um beste Ergebnisse mit MIME-Typ-Erkennung zu erhalten.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Passwörter für die Web-Oberfläche, Desktop- oder Mobil-Clients und Apps, die Zugriff auf Dein Konto haben", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Hier können individuelle Passwörter for Apps erzeugt werden. So must Du nicht Dein Passwort verteilen. Jedes Passwort kann individuell widerrufen werden.", diff --git a/settings/l10n/de.json b/settings/l10n/de.json index 0eb754da537..93cac0da14e 100644 --- a/settings/l10n/de.json +++ b/settings/l10n/de.json @@ -247,7 +247,6 @@ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du musst Deinen Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren.", "Start migration" : "Migration beginnen", "Security & setup warnings" : "Sicherheits- & Einrichtungswarnungen", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Für die Sicherheit und Geschwindigkeit Deiner Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Dir hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen findest Du im Tipps & Tricks- Abschnitt und in der Dokumentation.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP scheint zur Abfrage von Systemumgebungsvariablen nicht richtig eingerichtet zu sein. Der Test mit getenv(\"PATH\") liefert nur eine leere Antwort zurück.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Bitte die <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">Installationsdokumentation ↗</a> auf Hinweise zur PHP-Konfiguration durchlesen, sowie die PHP-Konfiguration Deines Servers überprüfen, insbesondere dann, wenn PHP-FPM eingesetzt wird.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Die schreibgeschützte Konfiguration wurde aktiviert. Dies verhindert das Setzen einiger Einstellungen über die Web-Schnittstelle. Weiterhin muss bei jedem Update der Schreibzugriff auf die Datei händisch aktiviert werden.", @@ -438,6 +437,7 @@ "Subscribe to our newsletter!" : "Abonniere unseren Newsletter!", "Show last log in" : "Letzte Anmeldung anzeigen", "Verifying" : "Überprüfe", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Für die Sicherheit und Geschwindigkeit Deiner Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Dir hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen findest Du im Tipps & Tricks- Abschnitt und in der Dokumentation.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Das PHP Modul 'fileinfo' fehlt. Wir empfehlen dringend, das Modul zu aktivieren, um beste Ergebnisse mit MIME-Typ-Erkennung zu erhalten.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Passwörter für die Web-Oberfläche, Desktop- oder Mobil-Clients und Apps, die Zugriff auf Dein Konto haben", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Hier können individuelle Passwörter for Apps erzeugt werden. So must Du nicht Dein Passwort verteilen. Jedes Passwort kann individuell widerrufen werden.", diff --git a/settings/l10n/de_DE.js b/settings/l10n/de_DE.js index 4de0621b351..e79fdc92902 100644 --- a/settings/l10n/de_DE.js +++ b/settings/l10n/de_DE.js @@ -249,7 +249,6 @@ OC.L10N.register( "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Sie müssen Ihre Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren.", "Start migration" : "Migration beginnen", "Security & setup warnings" : "Sicherheits- & Einrichtungswarnungen", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Für die Sicherheit und Geschwindigkeit Deiner Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Ihnen hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen finden Sie im Tipps & Tricks- Abschnitt und in der Dokumentation.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP scheint zur Abfrage von Systemumgebungsvariablen nicht richtig eingerichtet zu sein. Der Test mit getenv(\"PATH\") liefert nur eine leere Antwort zurück.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Bitte die <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">Installationsdokumentation ↗</a> auf Hinweise zur PHP-Konfiguration durchlesen, sowie die PHP-Konfiguration Ihres Servers überprüfen, insbesondere dann, wenn PHP-FPM eingesetzt wird.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Die schreibgeschützte Konfiguration wurde aktiviert. Dies verhindert das Setzen einiger Einstellungen über die Web-Schnittstelle. Weiterhin muss bei jedem Update der Schreibzugriff auf die Datei händisch aktiviert werden.", @@ -440,6 +439,7 @@ OC.L10N.register( "Subscribe to our newsletter!" : "Abonnieren Sie unseren Newsletter!", "Show last log in" : "Letzte Anmeldung anzeigen", "Verifying" : "Überprüfe", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Für die Sicherheit und Geschwindigkeit Deiner Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Ihnen hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen finden Sie im Tipps & Tricks- Abschnitt und in der Dokumentation.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Das PHP Modul 'fileinfo' fehlt. Wir empfehlen dringend, das Modul zu aktivieren, um beste Ergebnisse mit MIME-Typ-Erkennung zu erhalten.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Passwörter für die Web-Oberfläche, Desktop- oder Mobil-Clients und Apps, die Zugriff auf Ihr Konto haben.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Hier können individuelle Passwörter for Apps erzeugt werden. So müssen Sie nicht Ihr Passwort verteilen. Jedes Passwort kann individuell widerrufen werden.", diff --git a/settings/l10n/de_DE.json b/settings/l10n/de_DE.json index 580d5c32275..c91caccd9da 100644 --- a/settings/l10n/de_DE.json +++ b/settings/l10n/de_DE.json @@ -247,7 +247,6 @@ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Sie müssen Ihre Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren.", "Start migration" : "Migration beginnen", "Security & setup warnings" : "Sicherheits- & Einrichtungswarnungen", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Für die Sicherheit und Geschwindigkeit Deiner Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Ihnen hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen finden Sie im Tipps & Tricks- Abschnitt und in der Dokumentation.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP scheint zur Abfrage von Systemumgebungsvariablen nicht richtig eingerichtet zu sein. Der Test mit getenv(\"PATH\") liefert nur eine leere Antwort zurück.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Bitte die <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">Installationsdokumentation ↗</a> auf Hinweise zur PHP-Konfiguration durchlesen, sowie die PHP-Konfiguration Ihres Servers überprüfen, insbesondere dann, wenn PHP-FPM eingesetzt wird.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Die schreibgeschützte Konfiguration wurde aktiviert. Dies verhindert das Setzen einiger Einstellungen über die Web-Schnittstelle. Weiterhin muss bei jedem Update der Schreibzugriff auf die Datei händisch aktiviert werden.", @@ -438,6 +437,7 @@ "Subscribe to our newsletter!" : "Abonnieren Sie unseren Newsletter!", "Show last log in" : "Letzte Anmeldung anzeigen", "Verifying" : "Überprüfe", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Für die Sicherheit und Geschwindigkeit Deiner Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Ihnen hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen finden Sie im Tipps & Tricks- Abschnitt und in der Dokumentation.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Das PHP Modul 'fileinfo' fehlt. Wir empfehlen dringend, das Modul zu aktivieren, um beste Ergebnisse mit MIME-Typ-Erkennung zu erhalten.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Passwörter für die Web-Oberfläche, Desktop- oder Mobil-Clients und Apps, die Zugriff auf Ihr Konto haben.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Hier können individuelle Passwörter for Apps erzeugt werden. So müssen Sie nicht Ihr Passwort verteilen. Jedes Passwort kann individuell widerrufen werden.", diff --git a/settings/l10n/en_GB.js b/settings/l10n/en_GB.js index 2e8ce2b7660..768afb4f51a 100644 --- a/settings/l10n/en_GB.js +++ b/settings/l10n/en_GB.js @@ -249,7 +249,6 @@ OC.L10N.register( "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one.", "Start migration" : "Start migration", "Security & setup warnings" : "Security & setup warnings", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update.", @@ -440,6 +439,7 @@ OC.L10N.register( "Subscribe to our newsletter!" : "Subscribe to our newsletter!", "Show last log in" : "Show last log in", "Verifying" : "Verifying", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Web, desktop, mobile clients and app specific passwords that currently have access to your account.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too.", diff --git a/settings/l10n/en_GB.json b/settings/l10n/en_GB.json index 259a43e1c2e..3b49b6a65d9 100644 --- a/settings/l10n/en_GB.json +++ b/settings/l10n/en_GB.json @@ -247,7 +247,6 @@ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one.", "Start migration" : "Start migration", "Security & setup warnings" : "Security & setup warnings", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update.", @@ -438,6 +437,7 @@ "Subscribe to our newsletter!" : "Subscribe to our newsletter!", "Show last log in" : "Show last log in", "Verifying" : "Verifying", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Web, desktop, mobile clients and app specific passwords that currently have access to your account.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too.", diff --git a/settings/l10n/es.js b/settings/l10n/es.js index 0a8029c894f..39e89675e20 100644 --- a/settings/l10n/es.js +++ b/settings/l10n/es.js @@ -249,7 +249,6 @@ OC.L10N.register( "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Se necesita migrar las claves de cifrado del antiguo sistema (ownCloud <= 8.0) al nuevo sistema.", "Start migration" : "Iniciar migración", "Security & setup warnings" : "Avisos de seguridad y configuración", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y buen funcionamiento de tu instancia que todo esté configurado correctamente. Para ayudarte con esto, vamos a hacer algunas comprobaciones automáticas. Por favor, comprueba la sección 'Sugerencias y trucos' y la documentación para más información.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP parece que no está configurado correctamente para solicitar las variables de entorno del sistema. La prueba con getenv(\"PATH\") sólo devuelve una respuesta vacía.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Por favor revisa la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentación de instalación ↗</a> para ver notas de configuración de PHP y comprobar la configuración PHP de tu servidor, especialmente cuando se está usando php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Se ha habilitado la configuración de sólo lectura. Esto evita tener que ajustar algunas configuraciones a través de la interfaz web. Además, el archivo debe hacerse modificable manualmente para cada actualización.", @@ -440,6 +439,7 @@ OC.L10N.register( "Subscribe to our newsletter!" : "¡Suscríbete a nuestro boletín!", "Show last log in" : "Mostrar el último inicio de sesión", "Verifying" : "Verificando", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y buen funcionamiento de tu instancia que todo esté configurado correctamente. Para ayudarte con esto, vamos a hacer algunas comprobaciones automáticas. Por favor, comprueba la sección 'Sugerencias y trucos' y la documentación para más información.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Falta el módulo PHP 'fileinfo'. Recomendamos encarecidamente activar este módulo para conseguir mejores resultados en la detección de los tipos MIME.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Contraseñas específicas para los clientes web, de escritorio y móviles, y también apps que tienen actualmente acceso a tu cuenta.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Aquí puedes generar contraseñas individuales para apps para que no tengas que dar tu propia contraseña. También puedes revocarlas individualmente.", diff --git a/settings/l10n/es.json b/settings/l10n/es.json index 719b759c024..b9419ca63bb 100644 --- a/settings/l10n/es.json +++ b/settings/l10n/es.json @@ -247,7 +247,6 @@ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Se necesita migrar las claves de cifrado del antiguo sistema (ownCloud <= 8.0) al nuevo sistema.", "Start migration" : "Iniciar migración", "Security & setup warnings" : "Avisos de seguridad y configuración", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y buen funcionamiento de tu instancia que todo esté configurado correctamente. Para ayudarte con esto, vamos a hacer algunas comprobaciones automáticas. Por favor, comprueba la sección 'Sugerencias y trucos' y la documentación para más información.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP parece que no está configurado correctamente para solicitar las variables de entorno del sistema. La prueba con getenv(\"PATH\") sólo devuelve una respuesta vacía.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Por favor revisa la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentación de instalación ↗</a> para ver notas de configuración de PHP y comprobar la configuración PHP de tu servidor, especialmente cuando se está usando php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Se ha habilitado la configuración de sólo lectura. Esto evita tener que ajustar algunas configuraciones a través de la interfaz web. Además, el archivo debe hacerse modificable manualmente para cada actualización.", @@ -438,6 +437,7 @@ "Subscribe to our newsletter!" : "¡Suscríbete a nuestro boletín!", "Show last log in" : "Mostrar el último inicio de sesión", "Verifying" : "Verificando", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y buen funcionamiento de tu instancia que todo esté configurado correctamente. Para ayudarte con esto, vamos a hacer algunas comprobaciones automáticas. Por favor, comprueba la sección 'Sugerencias y trucos' y la documentación para más información.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Falta el módulo PHP 'fileinfo'. Recomendamos encarecidamente activar este módulo para conseguir mejores resultados en la detección de los tipos MIME.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Contraseñas específicas para los clientes web, de escritorio y móviles, y también apps que tienen actualmente acceso a tu cuenta.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Aquí puedes generar contraseñas individuales para apps para que no tengas que dar tu propia contraseña. También puedes revocarlas individualmente.", diff --git a/settings/l10n/es_AR.js b/settings/l10n/es_AR.js index 5c3dade3926..88242cb589b 100644 --- a/settings/l10n/es_AR.js +++ b/settings/l10n/es_AR.js @@ -245,7 +245,6 @@ OC.L10N.register( "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Usted necesita migar sus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", "Start migration" : "Comenzar migración", "Security & setup warnings" : "Advertencias de seguridad y configuración", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y desempeño de su instancia que todo esté configurado correctamente. Para ayudarlo con esto, estamos haciendo algunas verficaciones automáticas. Favor de consultar la sección de Consejos & Trucos de la documentación para más información. ", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "La configuración de Sólo Lectura ha sido habilitada. Esto previene establecer algunas configuraciones mediante la interface web. Adicionalmente, el archivo necesita que se le establezcan tener permisos de escritura manualemente en cada actualización. ", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Esto es posiblemente causado por un caché/acelerador tal como Zend OPcache o eAccelerator. ", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Su base de datos no puede correr con el nivel de aislamiento de transacción de \"READ COMMITTED\". Puede causar problemas cuando mútiples acciones sean ejecutadas en paralelo.", @@ -420,6 +419,7 @@ OC.L10N.register( "Subscribe to our newsletter!" : "¡Suscribase a nuestro boletín!", "Show last log in" : "Mostrar el último inicio de sesión", "Verifying" : "Verificando", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y desempeño de su instancia que todo esté configurado correctamente. Para ayudarlo con esto, estamos haciendo algunas verficaciones automáticas. Favor de consultar la sección de Consejos & Trucos de la documentación para más información. ", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "El modulo PHP 'fileinfo' no ha sido encontrado. Le recomendamos ámpliamente que habilite este módulo para obtener los mejores resultados en la detección de tipos MIME.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Aquí usted puede generar contraseñas individuales para las aplicaciones para que usted no tenga que dar su contraseña. También puede revocalras individualmente. ", "Follow us on Google+!" : "¡Síganos en Google+!", diff --git a/settings/l10n/es_AR.json b/settings/l10n/es_AR.json index 01069df01c0..e0e2397f47e 100644 --- a/settings/l10n/es_AR.json +++ b/settings/l10n/es_AR.json @@ -243,7 +243,6 @@ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Usted necesita migar sus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", "Start migration" : "Comenzar migración", "Security & setup warnings" : "Advertencias de seguridad y configuración", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y desempeño de su instancia que todo esté configurado correctamente. Para ayudarlo con esto, estamos haciendo algunas verficaciones automáticas. Favor de consultar la sección de Consejos & Trucos de la documentación para más información. ", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "La configuración de Sólo Lectura ha sido habilitada. Esto previene establecer algunas configuraciones mediante la interface web. Adicionalmente, el archivo necesita que se le establezcan tener permisos de escritura manualemente en cada actualización. ", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Esto es posiblemente causado por un caché/acelerador tal como Zend OPcache o eAccelerator. ", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Su base de datos no puede correr con el nivel de aislamiento de transacción de \"READ COMMITTED\". Puede causar problemas cuando mútiples acciones sean ejecutadas en paralelo.", @@ -418,6 +417,7 @@ "Subscribe to our newsletter!" : "¡Suscribase a nuestro boletín!", "Show last log in" : "Mostrar el último inicio de sesión", "Verifying" : "Verificando", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y desempeño de su instancia que todo esté configurado correctamente. Para ayudarlo con esto, estamos haciendo algunas verficaciones automáticas. Favor de consultar la sección de Consejos & Trucos de la documentación para más información. ", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "El modulo PHP 'fileinfo' no ha sido encontrado. Le recomendamos ámpliamente que habilite este módulo para obtener los mejores resultados en la detección de tipos MIME.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Aquí usted puede generar contraseñas individuales para las aplicaciones para que usted no tenga que dar su contraseña. También puede revocalras individualmente. ", "Follow us on Google+!" : "¡Síganos en Google+!", diff --git a/settings/l10n/es_MX.js b/settings/l10n/es_MX.js index 468d3b803fa..b248199686a 100644 --- a/settings/l10n/es_MX.js +++ b/settings/l10n/es_MX.js @@ -249,7 +249,6 @@ OC.L10N.register( "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", "Start migration" : "Iniciar migración", "Security & setup warnings" : "Advertencias de seguridad y configuración", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y desempeño de su instancia que todo esté configurado correctamente. Para ayudarlo con esto, estamos haciendo algunas verficaciones automáticas. Por favor consulta la sección de Consejos & Trucos de la documentación para más información. ", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP no parece estar configurado correctamente para consultar las variables de ambiente. La prueba con getenv(\"PATH\") sólo regresa una respuesta vacía.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Por favor verifica la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentación de instalación ↗</a> en relación a las notas de configuración de PHP y la configuración de PHP en tu servidorr, especialmente cuando se usa php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "La configuración de Sólo Lectura ha sido habilitada. Esto previene establecer algunas configuraciones mediante la interface web. Adicionalmente, el archivo necesita que se le establezca tener permisos de escritura manualmente en cada actualización. ", @@ -440,6 +439,7 @@ OC.L10N.register( "Subscribe to our newsletter!" : "¡Suscríbete a nuestro boletín!", "Show last log in" : "Mostrar el último inicio de sesión", "Verifying" : "Verificando", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y desempeño de su instancia que todo esté configurado correctamente. Para ayudarlo con esto, estamos haciendo algunas verficaciones automáticas. Por favor consulta la sección de Consejos & Trucos de la documentación para más información. ", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "El modulo PHP 'fileinfo' no ha sido encontrado. Te recomendamos ámpliamente que habilites este módulo para obtener los mejores resultados en la detección de tipos MIME.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "A continuación se presenta un listado de las sesiones, dispositivos y eventos que se han presentado en tu cuenta. ", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Aquí puedes generar contraseñas individuales para las aplicaciones para que no tengas que dar tu contraseña. También puedes revocalras individualmente. ", diff --git a/settings/l10n/es_MX.json b/settings/l10n/es_MX.json index 8230402ccf7..4bab0692c09 100644 --- a/settings/l10n/es_MX.json +++ b/settings/l10n/es_MX.json @@ -247,7 +247,6 @@ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", "Start migration" : "Iniciar migración", "Security & setup warnings" : "Advertencias de seguridad y configuración", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y desempeño de su instancia que todo esté configurado correctamente. Para ayudarlo con esto, estamos haciendo algunas verficaciones automáticas. Por favor consulta la sección de Consejos & Trucos de la documentación para más información. ", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP no parece estar configurado correctamente para consultar las variables de ambiente. La prueba con getenv(\"PATH\") sólo regresa una respuesta vacía.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Por favor verifica la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentación de instalación ↗</a> en relación a las notas de configuración de PHP y la configuración de PHP en tu servidorr, especialmente cuando se usa php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "La configuración de Sólo Lectura ha sido habilitada. Esto previene establecer algunas configuraciones mediante la interface web. Adicionalmente, el archivo necesita que se le establezca tener permisos de escritura manualmente en cada actualización. ", @@ -438,6 +437,7 @@ "Subscribe to our newsletter!" : "¡Suscríbete a nuestro boletín!", "Show last log in" : "Mostrar el último inicio de sesión", "Verifying" : "Verificando", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Es importante para la seguridad y desempeño de su instancia que todo esté configurado correctamente. Para ayudarlo con esto, estamos haciendo algunas verficaciones automáticas. Por favor consulta la sección de Consejos & Trucos de la documentación para más información. ", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "El modulo PHP 'fileinfo' no ha sido encontrado. Te recomendamos ámpliamente que habilites este módulo para obtener los mejores resultados en la detección de tipos MIME.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "A continuación se presenta un listado de las sesiones, dispositivos y eventos que se han presentado en tu cuenta. ", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Aquí puedes generar contraseñas individuales para las aplicaciones para que no tengas que dar tu contraseña. También puedes revocalras individualmente. ", diff --git a/settings/l10n/fr.js b/settings/l10n/fr.js index e865516aa18..92816807289 100644 --- a/settings/l10n/fr.js +++ b/settings/l10n/fr.js @@ -249,7 +249,6 @@ OC.L10N.register( "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Vous devez migrer vos clés de chiffrement de l'ancienne version (ownCloud <= 8.0) vers la nouvelle.", "Start migration" : "Démarrer la migration", "Security & setup warnings" : "Avertissements de sécurité & configuration", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "C'est important pour la sécurité et la performance de votre instance que tout soit configuré correctement. Pour vous aider, nous effectuons quelques vérifications automatiques. Veuillez consulter la section Trucs & Astuces et la documentation pour plus d'informations.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP ne semble pas être configuré de manière à récupérer les valeurs des variables d’environnement. Le test de la commande getenv(\"PATH\") retourne seulement une réponse vide. ", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Veuillez consulter <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">la documentation d'installation ↗</a> pour savoir comment configurer PHP sur votre serveur, en particulier en cas d'utilisation de php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "La configuration est en mode lecture seule. Ceci empêche la modification de certaines configurations via l'interface web. De plus, le fichier doit être passé manuellement en lecture-écriture avant chaque mise à jour.", @@ -440,6 +439,7 @@ OC.L10N.register( "Subscribe to our newsletter!" : "Abonnez-vous à notre newsletter!", "Show last log in" : "Montrer la dernière connexion", "Verifying" : "Vérification en cours", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "C'est important pour la sécurité et la performance de votre instance que tout soit configuré correctement. Pour vous aider, nous effectuons quelques vérifications automatiques. Veuillez consulter la section Trucs & Astuces et la documentation pour plus d'informations.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Le module PHP 'fileinfo' est manquant. Il est vivement recommandé de l'activer afin d'obtenir de meilleurs résultats de détection du type MIME.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Clients web, desktop, mobiles et mots de passe spécifiques d'application qui ont actuellement accès à votre compte.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Ici vous pouvez générer des mots de passe individuels pour les applications pour éviter de communiquer votre mot de passe. Vous pouvez aussi les révoquer individuellement.", diff --git a/settings/l10n/fr.json b/settings/l10n/fr.json index b6b013e01b0..f5a9828a2ac 100644 --- a/settings/l10n/fr.json +++ b/settings/l10n/fr.json @@ -247,7 +247,6 @@ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Vous devez migrer vos clés de chiffrement de l'ancienne version (ownCloud <= 8.0) vers la nouvelle.", "Start migration" : "Démarrer la migration", "Security & setup warnings" : "Avertissements de sécurité & configuration", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "C'est important pour la sécurité et la performance de votre instance que tout soit configuré correctement. Pour vous aider, nous effectuons quelques vérifications automatiques. Veuillez consulter la section Trucs & Astuces et la documentation pour plus d'informations.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP ne semble pas être configuré de manière à récupérer les valeurs des variables d’environnement. Le test de la commande getenv(\"PATH\") retourne seulement une réponse vide. ", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Veuillez consulter <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">la documentation d'installation ↗</a> pour savoir comment configurer PHP sur votre serveur, en particulier en cas d'utilisation de php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "La configuration est en mode lecture seule. Ceci empêche la modification de certaines configurations via l'interface web. De plus, le fichier doit être passé manuellement en lecture-écriture avant chaque mise à jour.", @@ -438,6 +437,7 @@ "Subscribe to our newsletter!" : "Abonnez-vous à notre newsletter!", "Show last log in" : "Montrer la dernière connexion", "Verifying" : "Vérification en cours", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "C'est important pour la sécurité et la performance de votre instance que tout soit configuré correctement. Pour vous aider, nous effectuons quelques vérifications automatiques. Veuillez consulter la section Trucs & Astuces et la documentation pour plus d'informations.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Le module PHP 'fileinfo' est manquant. Il est vivement recommandé de l'activer afin d'obtenir de meilleurs résultats de détection du type MIME.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Clients web, desktop, mobiles et mots de passe spécifiques d'application qui ont actuellement accès à votre compte.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Ici vous pouvez générer des mots de passe individuels pour les applications pour éviter de communiquer votre mot de passe. Vous pouvez aussi les révoquer individuellement.", diff --git a/settings/l10n/is.js b/settings/l10n/is.js index 486fd03bf4c..a6084b1c628 100644 --- a/settings/l10n/is.js +++ b/settings/l10n/is.js @@ -101,6 +101,8 @@ OC.L10N.register( "Enable" : "Virkja", "Enabling app …" : "Virkja forrit …", "Error while enabling app" : "Villa við að virkja forrit", + "Error: This app can not be enabled because it makes the server unstable" : "Villa: ekki er hægt að virkja þetta forrit því það gerir þjóninn óstöðugan.", + "Error: Could not disable broken app" : "Villa: gat ekki gert bilaða forritið óvirkt", "Error while disabling broken app" : "Villa við að gera bilaða forritið óvirkt", "Updating...." : "Uppfæri...", "Error while updating app" : "Villa við að uppfæra forrit", @@ -247,12 +249,20 @@ OC.L10N.register( "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Þú verður að yfirfæra dulritunarlyklana þína úr gömlu dulrituninni (ownCloud <= 8.0) yfir í þá nýju.", "Start migration" : "Hefja yfirfærslu", "Security & setup warnings" : "Öryggi og aðvaranir vegna uppsetningar", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Það er mikilvægt fyrir öryggi og afköst uppsetningarinnar þinnar að allt sé rétt stillt. Til að hjálpa við að svo sé, eru gerðar ýmsar sjálfvirkar prófanir. Skoðaðu 'Ábendingar og góð ráð' (Tips & Tricks) og hjálparskjölin til að sjá ítarlegar upplýsingar.", + "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "Það lítur út eins og að PHP sé ekki rétt sett upp varðandi fyrirspurnir um umhverfisbreytur. Prófun með getenv(\"PATH\") skilar auðu svari.", + "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Endilega skoðaðu <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">hjálparskjöl uppsetningarinnar ↗</a> varðandi athugasemdir vegna uppsetningar PHP og sjálfa uppsetningu PHP-þjónsins, Sérstaklega ef þú notar php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Skrifvarða stillingaskráin hefur verið virkjuð. Þetta kemur í veg fyrir að hægt sé að sýsla með sumar stillingar í gegnum vefviðmótið. Að auki þarf þessi skrá að vera skrifanleg við hverja uppfærslu.", + "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP virðist vera sett upp to fjarlægja innantextablokkir (inline doc blocks). Þetta mun gera ýmis kjarnaforrit óaðgengileg.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Þessu veldur væntanlega biðminni/hraðall á borð við Zend OPcache eða eAccelerator.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Gagnagrunnurinn keyrir ekki með \"READ COMMITTED\" færsluaðgreiningarstiginu. Þetta getur valdið vandamálum þegar margar aðgerðir eru keyrðar í einu.", + "%1$s below version %2$s is installed, for stability and performance reasons it is recommended to update to a newer %1$s version." : "%1$s eldra en útgáfa %2$s er uppsett, en vegna stöðugleika og afkasta mælum við með að útgáfa %1$s verði sett upp.", + "The PHP module 'fileinfo' is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "PHP-eininguna 'fileinfo' vantar. Við mælum eindregið með notkun þessarar einingar til að fá bestu útkomu við greiningu á MIME-skráagerðum.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Færslulæsing skráa (transactional file locking) er óvirk, þetta gæti leitt til vandamála út frá forgangsskilyrðum (race conditions). Virkjaðu 'filelocking.enabled' í config.php til að forðast slík vandamál. Skoðaðu <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">hjálparskjölin ↗</a> til að sjá nánari upplýsingar.", "System locale can not be set to a one which supports UTF-8." : "Ekki var hægt að setja staðfærslu kerfisins á neina sem styður UTF-8.", + "This means that there might be problems with certain characters in filenames." : "Þetta þýðir að það geta komið upp vandamál við að birta ákveðna stafi í skráaheitum.", + "It is strongly proposed to install the required packages on your system to support one of the following locales: %s." : "Við mælum eindregið með því að þessir nauðsynlegu pakkar séu á kerfinu til stuðnings einnar af eftirfarandi staðfærslum: %s", + "If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Ef uppsetningin þín er ekki á rót lénsins og þú notar cron stýrikerfisins, þá geta komið upp vandamál við gerð URL-slóða. Til að forðast slík vandamál, skaltu stilla \"overwrite.cli.url\" valkostinn í config.php skránni þinni á slóð vefrótarinnar (webroot) í uppsetningunni (tillaga: \"%s\")", + "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Ekki var hægt að keyra cron-verkið á skipanalínu. Eftirfarandi tæknilegar villur komu upp:", "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Yfirfarðu vandlega <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">uppsetningarleiðbeiningarnar ↗</a>, og athugaðu hvort nokkrar villumeldingar eða aðvaranir séu í <a href=\"%s\">annálnum</a>.", "All checks passed." : "Stóðst allar prófanir.", "Background jobs" : "Verk í bakgrunni", @@ -261,8 +271,10 @@ OC.L10N.register( "Background job didn’t run yet!" : "Bakgrunnsverk hefur ekki ennþá verið keyrt!", "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Til að ná bestum afköstum er mikilvægt að stilla bakgrunnsverk rétt. Fyrir stórar uppsetningar er mælt með því að nota 'cron' kerfisins. Skoðaðu hjálparskjölin til að sjá ítarlegar upplýsingar.", "Execute one task with each page loaded" : "Framkvæma eitt verk með hverri innhlaðinni síðu", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php er skráð á webcron-þjónustu til að kalla á cron.php á 15 mínútna fresti yfir HTTP.", "Use system cron service to call the cron.php file every 15 minutes." : "Nota cron-þjónustu kerfisins til að kalla á cron.php skrána á 15 mínútna fresti.", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php verður að vera keyrt af kerfisnotandanum \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Til að keyra þetta þarftu að hafa PHP-POSIX-viðaukann (extension). Skoðaðu {linkstart}PHP-hjálparskjölin{linkend} fyrir nánari útlistun.", "Version" : "Útgáfa", "Sharing" : "Deiling", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Sem stjórnandi geturðu fínstillt hegðun við deilingu. Endilega kíktu á hjálparskjölin til að sjá ítarlegri upplýsingar.", @@ -337,6 +349,11 @@ OC.L10N.register( "Username" : "Notandanafn", "Done" : "Lokið", "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Þróað af {communityopen}Nextcloud samfélaginu{linkclose}, {githubopen}grunnkóðinn{linkclose} er gefinn út með {licenseopen}AGPL{linkclose} notkunarleyfinu.", + "Follow us on Google+" : "Fylgstu með okkur á Google+", + "Like our Facebook page" : "Líkaðu við Facebook-síðuna okkar", + "Follow us on Twitter" : "Fylgstu með okkur á Twitter", + "Check out our blog" : "Kíktu á bloggið okkar", + "Subscribe to our newsletter" : "Gerstu áskrifandi að fréttabréfinu okkar", "Settings" : "Stillingar", "Show storage location" : "Birta staðsetningu gagnageymslu", "Show user backend" : "Birta bakenda notanda", @@ -422,6 +439,7 @@ OC.L10N.register( "Subscribe to our newsletter!" : "Gerstu áskrifandi að fréttabréfinu okkar!", "Show last log in" : "Birta síðustu innskráningu", "Verifying" : "Sannreyni", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Það er mikilvægt fyrir öryggi og afköst uppsetningarinnar þinnar að allt sé rétt stillt. Til að hjálpa við að svo sé, eru gerðar ýmsar sjálfvirkar prófanir. Skoðaðu 'Ábendingar og góð ráð' (Tips & Tricks) og hjálparskjölin til að sjá ítarlegar upplýsingar.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP-eininguna 'fileinfo' vantar. Við mælum eindregið með notkun þessarar einingar til að fá bestu útkomu við greiningu á MIME-skráagerðum.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Veftól, tölvur, símar og sértæk lykilorð forrita sem núna hafa aðgang inn á aðganginn þinn.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Hér geturðu útbúið sérstök lykilorð fyrir hvert forrit svo að þú þurfir ekki að gefa upp lykilorðið þitt. Þú getur líka afturkallað þau hvert fyrir sig.", diff --git a/settings/l10n/is.json b/settings/l10n/is.json index 40c04d1c61a..9b8b7578135 100644 --- a/settings/l10n/is.json +++ b/settings/l10n/is.json @@ -99,6 +99,8 @@ "Enable" : "Virkja", "Enabling app …" : "Virkja forrit …", "Error while enabling app" : "Villa við að virkja forrit", + "Error: This app can not be enabled because it makes the server unstable" : "Villa: ekki er hægt að virkja þetta forrit því það gerir þjóninn óstöðugan.", + "Error: Could not disable broken app" : "Villa: gat ekki gert bilaða forritið óvirkt", "Error while disabling broken app" : "Villa við að gera bilaða forritið óvirkt", "Updating...." : "Uppfæri...", "Error while updating app" : "Villa við að uppfæra forrit", @@ -245,12 +247,20 @@ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Þú verður að yfirfæra dulritunarlyklana þína úr gömlu dulrituninni (ownCloud <= 8.0) yfir í þá nýju.", "Start migration" : "Hefja yfirfærslu", "Security & setup warnings" : "Öryggi og aðvaranir vegna uppsetningar", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Það er mikilvægt fyrir öryggi og afköst uppsetningarinnar þinnar að allt sé rétt stillt. Til að hjálpa við að svo sé, eru gerðar ýmsar sjálfvirkar prófanir. Skoðaðu 'Ábendingar og góð ráð' (Tips & Tricks) og hjálparskjölin til að sjá ítarlegar upplýsingar.", + "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "Það lítur út eins og að PHP sé ekki rétt sett upp varðandi fyrirspurnir um umhverfisbreytur. Prófun með getenv(\"PATH\") skilar auðu svari.", + "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Endilega skoðaðu <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">hjálparskjöl uppsetningarinnar ↗</a> varðandi athugasemdir vegna uppsetningar PHP og sjálfa uppsetningu PHP-þjónsins, Sérstaklega ef þú notar php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Skrifvarða stillingaskráin hefur verið virkjuð. Þetta kemur í veg fyrir að hægt sé að sýsla með sumar stillingar í gegnum vefviðmótið. Að auki þarf þessi skrá að vera skrifanleg við hverja uppfærslu.", + "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP virðist vera sett upp to fjarlægja innantextablokkir (inline doc blocks). Þetta mun gera ýmis kjarnaforrit óaðgengileg.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Þessu veldur væntanlega biðminni/hraðall á borð við Zend OPcache eða eAccelerator.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Gagnagrunnurinn keyrir ekki með \"READ COMMITTED\" færsluaðgreiningarstiginu. Þetta getur valdið vandamálum þegar margar aðgerðir eru keyrðar í einu.", + "%1$s below version %2$s is installed, for stability and performance reasons it is recommended to update to a newer %1$s version." : "%1$s eldra en útgáfa %2$s er uppsett, en vegna stöðugleika og afkasta mælum við með að útgáfa %1$s verði sett upp.", + "The PHP module 'fileinfo' is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "PHP-eininguna 'fileinfo' vantar. Við mælum eindregið með notkun þessarar einingar til að fá bestu útkomu við greiningu á MIME-skráagerðum.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Færslulæsing skráa (transactional file locking) er óvirk, þetta gæti leitt til vandamála út frá forgangsskilyrðum (race conditions). Virkjaðu 'filelocking.enabled' í config.php til að forðast slík vandamál. Skoðaðu <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">hjálparskjölin ↗</a> til að sjá nánari upplýsingar.", "System locale can not be set to a one which supports UTF-8." : "Ekki var hægt að setja staðfærslu kerfisins á neina sem styður UTF-8.", + "This means that there might be problems with certain characters in filenames." : "Þetta þýðir að það geta komið upp vandamál við að birta ákveðna stafi í skráaheitum.", + "It is strongly proposed to install the required packages on your system to support one of the following locales: %s." : "Við mælum eindregið með því að þessir nauðsynlegu pakkar séu á kerfinu til stuðnings einnar af eftirfarandi staðfærslum: %s", + "If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Ef uppsetningin þín er ekki á rót lénsins og þú notar cron stýrikerfisins, þá geta komið upp vandamál við gerð URL-slóða. Til að forðast slík vandamál, skaltu stilla \"overwrite.cli.url\" valkostinn í config.php skránni þinni á slóð vefrótarinnar (webroot) í uppsetningunni (tillaga: \"%s\")", + "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Ekki var hægt að keyra cron-verkið á skipanalínu. Eftirfarandi tæknilegar villur komu upp:", "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Yfirfarðu vandlega <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">uppsetningarleiðbeiningarnar ↗</a>, og athugaðu hvort nokkrar villumeldingar eða aðvaranir séu í <a href=\"%s\">annálnum</a>.", "All checks passed." : "Stóðst allar prófanir.", "Background jobs" : "Verk í bakgrunni", @@ -259,8 +269,10 @@ "Background job didn’t run yet!" : "Bakgrunnsverk hefur ekki ennþá verið keyrt!", "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Til að ná bestum afköstum er mikilvægt að stilla bakgrunnsverk rétt. Fyrir stórar uppsetningar er mælt með því að nota 'cron' kerfisins. Skoðaðu hjálparskjölin til að sjá ítarlegar upplýsingar.", "Execute one task with each page loaded" : "Framkvæma eitt verk með hverri innhlaðinni síðu", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php er skráð á webcron-þjónustu til að kalla á cron.php á 15 mínútna fresti yfir HTTP.", "Use system cron service to call the cron.php file every 15 minutes." : "Nota cron-þjónustu kerfisins til að kalla á cron.php skrána á 15 mínútna fresti.", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php verður að vera keyrt af kerfisnotandanum \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Til að keyra þetta þarftu að hafa PHP-POSIX-viðaukann (extension). Skoðaðu {linkstart}PHP-hjálparskjölin{linkend} fyrir nánari útlistun.", "Version" : "Útgáfa", "Sharing" : "Deiling", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Sem stjórnandi geturðu fínstillt hegðun við deilingu. Endilega kíktu á hjálparskjölin til að sjá ítarlegri upplýsingar.", @@ -335,6 +347,11 @@ "Username" : "Notandanafn", "Done" : "Lokið", "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Þróað af {communityopen}Nextcloud samfélaginu{linkclose}, {githubopen}grunnkóðinn{linkclose} er gefinn út með {licenseopen}AGPL{linkclose} notkunarleyfinu.", + "Follow us on Google+" : "Fylgstu með okkur á Google+", + "Like our Facebook page" : "Líkaðu við Facebook-síðuna okkar", + "Follow us on Twitter" : "Fylgstu með okkur á Twitter", + "Check out our blog" : "Kíktu á bloggið okkar", + "Subscribe to our newsletter" : "Gerstu áskrifandi að fréttabréfinu okkar", "Settings" : "Stillingar", "Show storage location" : "Birta staðsetningu gagnageymslu", "Show user backend" : "Birta bakenda notanda", @@ -420,6 +437,7 @@ "Subscribe to our newsletter!" : "Gerstu áskrifandi að fréttabréfinu okkar!", "Show last log in" : "Birta síðustu innskráningu", "Verifying" : "Sannreyni", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Það er mikilvægt fyrir öryggi og afköst uppsetningarinnar þinnar að allt sé rétt stillt. Til að hjálpa við að svo sé, eru gerðar ýmsar sjálfvirkar prófanir. Skoðaðu 'Ábendingar og góð ráð' (Tips & Tricks) og hjálparskjölin til að sjá ítarlegar upplýsingar.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP-eininguna 'fileinfo' vantar. Við mælum eindregið með notkun þessarar einingar til að fá bestu útkomu við greiningu á MIME-skráagerðum.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Veftól, tölvur, símar og sértæk lykilorð forrita sem núna hafa aðgang inn á aðganginn þinn.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Hér geturðu útbúið sérstök lykilorð fyrir hvert forrit svo að þú þurfir ekki að gefa upp lykilorðið þitt. Þú getur líka afturkallað þau hvert fyrir sig.", diff --git a/settings/l10n/ko.js b/settings/l10n/ko.js index d3d6f74d3e6..16825befbb6 100644 --- a/settings/l10n/ko.js +++ b/settings/l10n/ko.js @@ -240,7 +240,6 @@ OC.L10N.register( "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "ownCloud 8.0 이하에서 사용한 이전 암호화 키를 새 키로 이전해야 합니다.", "Start migration" : "이전 시작", "Security & setup warnings" : "보안 및 설치 경고", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "내 인스턴스가 올바르게 설정되어 있어야 시스템 보안과 성능을 보장할 수 있습니다. 설정 확인을 돕기 위해서 일부 항목을 자동으로 확인합니다. 더 많은 정보를 보려면 문서의 팁과 추가 정보 장을 참조하십시오.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "읽기 전용 설정이 활성화되었습니다. 이 상태에서는 웹 인터페이스를 통하여 일부 설정을 변경할 수 없습니다. 또한 매 업데이트마다 파일을 쓸 수 있는 상태로 변경해야 합니다.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Zend OPcache, eAccelerator 같은 캐시/가속기 문제일 수도 있습니다.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "데이터베이스가 \"READ COMMITTED\" 트랜잭션 격리 수준에서 실행되고 있지 않습니다. 여러 작업이 동시에 실행될 때 문제가 발생할 수 있습니다.", @@ -410,6 +409,7 @@ OC.L10N.register( "Subscribe to our newsletter!" : "뉴스레터를 구독하세요!", "Show last log in" : "마지막 로그인 시간 보이기", "Verifying" : "확인 중", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "내 인스턴스가 올바르게 설정되어 있어야 시스템 보안과 성능을 보장할 수 있습니다. 설정 확인을 돕기 위해서 일부 항목을 자동으로 확인합니다. 더 많은 정보를 보려면 문서의 팁과 추가 정보 장을 참조하십시오.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP의 'fileinfo' 모듈이 없습니다. 올바른 MIME 형식 감지를 위해서 이 모듈을 활성화하는 것을 추천합니다.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "앱 암호를 생성하여 내 암호를 공개하지 않아도 됩니다. 이 암호는 개별적으로 폐기할 수도 있습니다.", "Follow us on Google+!" : "Google+에서 저희를 팔로하세요!", diff --git a/settings/l10n/ko.json b/settings/l10n/ko.json index e89dea10771..3cc5873b55c 100644 --- a/settings/l10n/ko.json +++ b/settings/l10n/ko.json @@ -238,7 +238,6 @@ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "ownCloud 8.0 이하에서 사용한 이전 암호화 키를 새 키로 이전해야 합니다.", "Start migration" : "이전 시작", "Security & setup warnings" : "보안 및 설치 경고", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "내 인스턴스가 올바르게 설정되어 있어야 시스템 보안과 성능을 보장할 수 있습니다. 설정 확인을 돕기 위해서 일부 항목을 자동으로 확인합니다. 더 많은 정보를 보려면 문서의 팁과 추가 정보 장을 참조하십시오.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "읽기 전용 설정이 활성화되었습니다. 이 상태에서는 웹 인터페이스를 통하여 일부 설정을 변경할 수 없습니다. 또한 매 업데이트마다 파일을 쓸 수 있는 상태로 변경해야 합니다.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Zend OPcache, eAccelerator 같은 캐시/가속기 문제일 수도 있습니다.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "데이터베이스가 \"READ COMMITTED\" 트랜잭션 격리 수준에서 실행되고 있지 않습니다. 여러 작업이 동시에 실행될 때 문제가 발생할 수 있습니다.", @@ -408,6 +407,7 @@ "Subscribe to our newsletter!" : "뉴스레터를 구독하세요!", "Show last log in" : "마지막 로그인 시간 보이기", "Verifying" : "확인 중", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "내 인스턴스가 올바르게 설정되어 있어야 시스템 보안과 성능을 보장할 수 있습니다. 설정 확인을 돕기 위해서 일부 항목을 자동으로 확인합니다. 더 많은 정보를 보려면 문서의 팁과 추가 정보 장을 참조하십시오.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP의 'fileinfo' 모듈이 없습니다. 올바른 MIME 형식 감지를 위해서 이 모듈을 활성화하는 것을 추천합니다.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "앱 암호를 생성하여 내 암호를 공개하지 않아도 됩니다. 이 암호는 개별적으로 폐기할 수도 있습니다.", "Follow us on Google+!" : "Google+에서 저희를 팔로하세요!", diff --git a/settings/l10n/nb.js b/settings/l10n/nb.js index 90cf941f41e..7ceb5cd62f3 100644 --- a/settings/l10n/nb.js +++ b/settings/l10n/nb.js @@ -249,7 +249,6 @@ OC.L10N.register( "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du må migrere krypteringsnøklene din fra den gamle krypteringen (ownCloud <= 8.0) til den nye.", "Start migration" : "Start migrering", "Security & setup warnings" : "Advarsler om sikkerhet og oppsett", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Det er viktig for sikkerheten og ytelsen på din installasjon at alt er satt opp rett. For å hjelpe deg er det satt i verk noen automatiske sjekker. Se \"Tips og triks\"-delen og i dokumentasjonen for mer informasjon", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP ser ikke ut til å være satt opp riktig for å lese systemets miljøvariabler. Testen med getenv(\"PATH\") returnerer bare et tomt svar.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Sjekk <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installasjonsdokumentasjonen ↗</a> etter PHP-oppsettsnotater og oppsett av PHP på tjeneren din, særlig om du bruker php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Det skrivebeskyttede oppsettet er blitt aktivert. Dette forhindrer setting av visse oppsett via vev-grensesnittet. Videre må config-filen gjøres skrivbar manuelt for hver oppdatering.", @@ -440,6 +439,7 @@ OC.L10N.register( "Subscribe to our newsletter!" : "Abonner på vårt nyhetsbrev!", "Show last log in" : "Vis siste innlogging", "Verifying" : "Bekrefter", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Det er viktig for sikkerheten og ytelsen på din installasjon at alt er satt opp rett. For å hjelpe deg er det satt i verk noen automatiske sjekker. Se \"Tips og triks\"-delen og i dokumentasjonen for mer informasjon", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP-modulen 'fileinfo' mangler. Vi anbefaler at du aktiverer denne modulen for å kunne detektere MIME-typen korrekt.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Vev, skrivebord og mobil -klienter og programspesifikke passord som har tilgang til kontoen din nå.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Her kan du opprette egne passord for programmer slik at du ikke trenger å gi dem ditt passord. Du kan tilbakekalle dem individuelt også.", diff --git a/settings/l10n/nb.json b/settings/l10n/nb.json index e2eb670b075..70dfe662aef 100644 --- a/settings/l10n/nb.json +++ b/settings/l10n/nb.json @@ -247,7 +247,6 @@ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du må migrere krypteringsnøklene din fra den gamle krypteringen (ownCloud <= 8.0) til den nye.", "Start migration" : "Start migrering", "Security & setup warnings" : "Advarsler om sikkerhet og oppsett", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Det er viktig for sikkerheten og ytelsen på din installasjon at alt er satt opp rett. For å hjelpe deg er det satt i verk noen automatiske sjekker. Se \"Tips og triks\"-delen og i dokumentasjonen for mer informasjon", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP ser ikke ut til å være satt opp riktig for å lese systemets miljøvariabler. Testen med getenv(\"PATH\") returnerer bare et tomt svar.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Sjekk <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installasjonsdokumentasjonen ↗</a> etter PHP-oppsettsnotater og oppsett av PHP på tjeneren din, særlig om du bruker php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Det skrivebeskyttede oppsettet er blitt aktivert. Dette forhindrer setting av visse oppsett via vev-grensesnittet. Videre må config-filen gjøres skrivbar manuelt for hver oppdatering.", @@ -438,6 +437,7 @@ "Subscribe to our newsletter!" : "Abonner på vårt nyhetsbrev!", "Show last log in" : "Vis siste innlogging", "Verifying" : "Bekrefter", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Det er viktig for sikkerheten og ytelsen på din installasjon at alt er satt opp rett. For å hjelpe deg er det satt i verk noen automatiske sjekker. Se \"Tips og triks\"-delen og i dokumentasjonen for mer informasjon", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP-modulen 'fileinfo' mangler. Vi anbefaler at du aktiverer denne modulen for å kunne detektere MIME-typen korrekt.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Vev, skrivebord og mobil -klienter og programspesifikke passord som har tilgang til kontoen din nå.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Her kan du opprette egne passord for programmer slik at du ikke trenger å gi dem ditt passord. Du kan tilbakekalle dem individuelt også.", diff --git a/settings/l10n/nl.js b/settings/l10n/nl.js index 83ed1b8414f..a08f5508beb 100644 --- a/settings/l10n/nl.js +++ b/settings/l10n/nl.js @@ -249,7 +249,6 @@ OC.L10N.register( "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Je moet je cryptosleutels van de oude versleuteling (ownCloud <= 8.0) migreren naar de nieuwe.", "Start migration" : "Start migratie", "Security & setup warnings" : "Beveiligings- en instellingswaarschuwingen", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Voor beveiliging en prestaties van je server is het belangrijk dat alles goed is geconfigureerd. Om je hierbij te helpen doen we paar automatische controles. Bekijk de Tips & Trucs sectie en de ocumentatie voor meer informatie.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP lijkt niet goed te zijn opgezet om systeemomgevingsvariabelen te bevragen. De test met getenv(\"PATH\") gaf een leeg resultaat.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Controleer de <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installatiedocumentatie ↗</a> voor php configuratienotities en de php configuratie van je server, zeker bij gebruik van php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "De Alleen-lezen config is ingeschakeld. Dit voorkomt het via de webinterface wijzigen van verschillende instellingen. Bovendien moet het bestand voor elke aanpassing handmatig op beschrijfbaar worden ingesteld.", @@ -440,6 +439,7 @@ OC.L10N.register( "Subscribe to our newsletter!" : "Abonneer jezelf op onze nieuwsbrief!", "Show last log in" : "Toon laatste inlog", "Verifying" : "Verifiëren", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Voor beveiliging en prestaties van je server is het belangrijk dat alles goed is geconfigureerd. Om je hierbij te helpen doen we paar automatische controles. Bekijk de Tips & Trucs sectie en de ocumentatie voor meer informatie.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "De PHP module 'fileinfo' ontbreekt. We adviseren met klem om deze module te activeren om de beste resultaten te bereiken voor MIME-type detectie.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Web, desktop, mobiele clients and app specifieke wachtwoorden die nu toegang hebben tot je account.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Hier kun je individuele wachtwoorden voor apps genereren, zodat je geen wachtwoorden hoeft uit te geven. Je kunt ze ook weer individueel intrekken.", diff --git a/settings/l10n/nl.json b/settings/l10n/nl.json index ac046d5ac94..21d46b48c55 100644 --- a/settings/l10n/nl.json +++ b/settings/l10n/nl.json @@ -247,7 +247,6 @@ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Je moet je cryptosleutels van de oude versleuteling (ownCloud <= 8.0) migreren naar de nieuwe.", "Start migration" : "Start migratie", "Security & setup warnings" : "Beveiligings- en instellingswaarschuwingen", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Voor beveiliging en prestaties van je server is het belangrijk dat alles goed is geconfigureerd. Om je hierbij te helpen doen we paar automatische controles. Bekijk de Tips & Trucs sectie en de ocumentatie voor meer informatie.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP lijkt niet goed te zijn opgezet om systeemomgevingsvariabelen te bevragen. De test met getenv(\"PATH\") gaf een leeg resultaat.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Controleer de <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installatiedocumentatie ↗</a> voor php configuratienotities en de php configuratie van je server, zeker bij gebruik van php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "De Alleen-lezen config is ingeschakeld. Dit voorkomt het via de webinterface wijzigen van verschillende instellingen. Bovendien moet het bestand voor elke aanpassing handmatig op beschrijfbaar worden ingesteld.", @@ -438,6 +437,7 @@ "Subscribe to our newsletter!" : "Abonneer jezelf op onze nieuwsbrief!", "Show last log in" : "Toon laatste inlog", "Verifying" : "Verifiëren", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Voor beveiliging en prestaties van je server is het belangrijk dat alles goed is geconfigureerd. Om je hierbij te helpen doen we paar automatische controles. Bekijk de Tips & Trucs sectie en de ocumentatie voor meer informatie.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "De PHP module 'fileinfo' ontbreekt. We adviseren met klem om deze module te activeren om de beste resultaten te bereiken voor MIME-type detectie.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Web, desktop, mobiele clients and app specifieke wachtwoorden die nu toegang hebben tot je account.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Hier kun je individuele wachtwoorden voor apps genereren, zodat je geen wachtwoorden hoeft uit te geven. Je kunt ze ook weer individueel intrekken.", diff --git a/settings/l10n/pl.js b/settings/l10n/pl.js index e55318a5aee..413752641c4 100644 --- a/settings/l10n/pl.js +++ b/settings/l10n/pl.js @@ -247,7 +247,6 @@ OC.L10N.register( "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Musisz zmigrować swoje klucze szyfrujące ze starego szyfrowania (ownCloud <= 8.0) do nowego.", "Start migration" : "Rozpocznij migrację", "Security & setup warnings" : "Ostrzeżenia bezpieczeństwa i konfiguracji", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Poprawna konfiguracja jest ważna dla bezpieczeństwa i wydajności Twojej instancji. W celach pomocniczych przeprowadzane są automatyczne kontrole. Więcej informacji można znaleźć w dziale Wskazówki i Porady oraz w dokumentacji.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Została włączona konfiguracja Read-Only. Zapobiegnie to ustawieniu niektórych konfiguracji poprzez interfejs web. Ponadto plikowi muszą zostać nadane prawa zapisu ręcznie dla każdej aktualizacji.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dzieje się tak prawdopodobnie przez cache lub akcelerator taki jak Zend OPcache lub eAccelerator.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Twoja baza danych nie działa z poziomem izolacji transakcji \"READ COMMITTED\". Może to powodować problemy kiedy wiele akcji będzie wykonywanych równolegle.", @@ -422,6 +421,7 @@ OC.L10N.register( "Subscribe to our newsletter!" : "Zapisz się do naszego newslettera!", "Show last log in" : "Pokaż ostatni login", "Verifying" : "Sprawdzanie", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Poprawna konfiguracja jest ważna dla bezpieczeństwa i wydajności Twojej instancji. W celach pomocniczych przeprowadzane są automatyczne kontrole. Więcej informacji można znaleźć w dziale Wskazówki i Porady oraz w dokumentacji.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Brakuje modułu PHP 'fileinfo'. Silnie zalecamy włączenie tego modułu, aby osiągać lepsze wyniki w wykrywaniu typów plików MIME.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Web, klient desktop, klienci mobilni specjalne hasła aplikacja, które aktualnie mają dostęp do twojego konta.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Tutaj możesz wygenerować lub unieważnić hasła dla poszczególnych aplikacji tak, aby nie było potrzeby podawania Twojego hasła. ", diff --git a/settings/l10n/pl.json b/settings/l10n/pl.json index 1657b681521..9fd0ed54197 100644 --- a/settings/l10n/pl.json +++ b/settings/l10n/pl.json @@ -245,7 +245,6 @@ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Musisz zmigrować swoje klucze szyfrujące ze starego szyfrowania (ownCloud <= 8.0) do nowego.", "Start migration" : "Rozpocznij migrację", "Security & setup warnings" : "Ostrzeżenia bezpieczeństwa i konfiguracji", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Poprawna konfiguracja jest ważna dla bezpieczeństwa i wydajności Twojej instancji. W celach pomocniczych przeprowadzane są automatyczne kontrole. Więcej informacji można znaleźć w dziale Wskazówki i Porady oraz w dokumentacji.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Została włączona konfiguracja Read-Only. Zapobiegnie to ustawieniu niektórych konfiguracji poprzez interfejs web. Ponadto plikowi muszą zostać nadane prawa zapisu ręcznie dla każdej aktualizacji.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dzieje się tak prawdopodobnie przez cache lub akcelerator taki jak Zend OPcache lub eAccelerator.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Twoja baza danych nie działa z poziomem izolacji transakcji \"READ COMMITTED\". Może to powodować problemy kiedy wiele akcji będzie wykonywanych równolegle.", @@ -420,6 +419,7 @@ "Subscribe to our newsletter!" : "Zapisz się do naszego newslettera!", "Show last log in" : "Pokaż ostatni login", "Verifying" : "Sprawdzanie", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Poprawna konfiguracja jest ważna dla bezpieczeństwa i wydajności Twojej instancji. W celach pomocniczych przeprowadzane są automatyczne kontrole. Więcej informacji można znaleźć w dziale Wskazówki i Porady oraz w dokumentacji.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Brakuje modułu PHP 'fileinfo'. Silnie zalecamy włączenie tego modułu, aby osiągać lepsze wyniki w wykrywaniu typów plików MIME.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Web, klient desktop, klienci mobilni specjalne hasła aplikacja, które aktualnie mają dostęp do twojego konta.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Tutaj możesz wygenerować lub unieważnić hasła dla poszczególnych aplikacji tak, aby nie było potrzeby podawania Twojego hasła. ", diff --git a/settings/l10n/pt_BR.js b/settings/l10n/pt_BR.js index 1587d0f3476..12f33dbec6a 100644 --- a/settings/l10n/pt_BR.js +++ b/settings/l10n/pt_BR.js @@ -249,7 +249,6 @@ OC.L10N.register( "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Você precisa migrar suas chaves de criptografia a partir da antiga criptografia (ownCloud <= 8,0) para a nova.", "Start migration" : "Iniciar migração", "Security & setup warnings" : "Segurança & avisos de configuração", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "É importante para a segurança e o desempenho de sua instância que tudo esteja configurado corretamente. Para ajudá-lo com isso, estamos fazendo algumas verificações automáticas. Consulte a seção Dicas e a documentação para obter mais informações.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "O PHP não parece ser configurado corretamente para consultar variáveis de ambiente do sistema. O teste com getenv(\"PATH\") apenas retorna uma resposta vazia.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Verifique a <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentação de instalação ↗</a> para os detalhes de configuração do PHP e a configuração do PHP do seu servidor, especialmente ao usar o php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "A configuração Somente-Leitura foi habilitada. Isso impede que algumas configurações sejam definidas via interface web. Além disso, o arquivo precisa ser definido manualmente com permissão de escrita para cada atualização.", @@ -396,7 +395,7 @@ OC.L10N.register( "Uninstalling ...." : "Desinstalando...", "Error while uninstalling app" : "Erro enquanto desinstalava aplicativo", "Uninstall" : "Desinstalar", - "__language_name__" : "__language_name__", + "__language_name__" : "Português Brasileiro", "Personal info" : "Informação pessoal", "Sessions" : "Sessões", "App passwords" : "Senhas de aplicativos", @@ -440,6 +439,7 @@ OC.L10N.register( "Subscribe to our newsletter!" : "Inscreva-se para receber nosso boletim informativo!", "Show last log in" : "Mostrar o último acesso", "Verifying" : "Verificando", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "É importante para a segurança e o desempenho de sua instância que tudo esteja configurado corretamente. Para ajudá-lo com isso, estamos fazendo algumas verificações automáticas. Consulte a seção Dicas e a documentação para obter mais informações.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "O módulo PHP 'fileinfo' está faltando. Recomendamos fortemente habilitá-lo para obter um melhor resultado com a detecção de tipo MIME.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Clientes web, desktop, celulares e senhas específicas de aplicativos que atualmente têm acesso à sua conta.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Aqui você pode gerar senhas individuais para aplicativos e assim você não precisa dar sua senha. Você pode revogá-los individualmente também.", diff --git a/settings/l10n/pt_BR.json b/settings/l10n/pt_BR.json index a34e2d1d3f0..bfb2e324cc1 100644 --- a/settings/l10n/pt_BR.json +++ b/settings/l10n/pt_BR.json @@ -247,7 +247,6 @@ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Você precisa migrar suas chaves de criptografia a partir da antiga criptografia (ownCloud <= 8,0) para a nova.", "Start migration" : "Iniciar migração", "Security & setup warnings" : "Segurança & avisos de configuração", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "É importante para a segurança e o desempenho de sua instância que tudo esteja configurado corretamente. Para ajudá-lo com isso, estamos fazendo algumas verificações automáticas. Consulte a seção Dicas e a documentação para obter mais informações.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "O PHP não parece ser configurado corretamente para consultar variáveis de ambiente do sistema. O teste com getenv(\"PATH\") apenas retorna uma resposta vazia.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Verifique a <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentação de instalação ↗</a> para os detalhes de configuração do PHP e a configuração do PHP do seu servidor, especialmente ao usar o php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "A configuração Somente-Leitura foi habilitada. Isso impede que algumas configurações sejam definidas via interface web. Além disso, o arquivo precisa ser definido manualmente com permissão de escrita para cada atualização.", @@ -394,7 +393,7 @@ "Uninstalling ...." : "Desinstalando...", "Error while uninstalling app" : "Erro enquanto desinstalava aplicativo", "Uninstall" : "Desinstalar", - "__language_name__" : "__language_name__", + "__language_name__" : "Português Brasileiro", "Personal info" : "Informação pessoal", "Sessions" : "Sessões", "App passwords" : "Senhas de aplicativos", @@ -438,6 +437,7 @@ "Subscribe to our newsletter!" : "Inscreva-se para receber nosso boletim informativo!", "Show last log in" : "Mostrar o último acesso", "Verifying" : "Verificando", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "É importante para a segurança e o desempenho de sua instância que tudo esteja configurado corretamente. Para ajudá-lo com isso, estamos fazendo algumas verificações automáticas. Consulte a seção Dicas e a documentação para obter mais informações.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "O módulo PHP 'fileinfo' está faltando. Recomendamos fortemente habilitá-lo para obter um melhor resultado com a detecção de tipo MIME.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Clientes web, desktop, celulares e senhas específicas de aplicativos que atualmente têm acesso à sua conta.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Aqui você pode gerar senhas individuais para aplicativos e assim você não precisa dar sua senha. Você pode revogá-los individualmente também.", diff --git a/settings/l10n/ru.js b/settings/l10n/ru.js index 3d8952ba4eb..eca6aaa582e 100644 --- a/settings/l10n/ru.js +++ b/settings/l10n/ru.js @@ -249,7 +249,6 @@ OC.L10N.register( "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Вам необходимо произвести конвертацию ключей шифрования из старого формата (ownCloud <= 8.0) в новый.", "Start migration" : "Запустить миграцию", "Security & setup warnings" : "Предупреждения безопасности и установки", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Для обеспечения безопасности и производительности важно, чтобы всё было настроено правильно. Чтобы помочь вам в этом, мы проводим некоторые автоматические проверки. Дополнительную информацию см. В разделе «Советы и рекомендации» и в документации.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP не настроен правильно для получения переменных системного окружения. Запрос getenv(\"PATH\") возвращает пустые результаты.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Обратитесь к <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документации по установке ↗</a> для получения информации по настройке PHP на вашем сервере, особенно это касается php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Конфигурационный файл в режиме только для чтения. В связи с этим некоторые настройки веб-интерфейса невозможно изменить. Учтите, что для установки обновлений, вам потребуется самостоятельно разрешить запись в конфигурационный файл.", @@ -440,6 +439,7 @@ OC.L10N.register( "Subscribe to our newsletter!" : "Подписывайтесь на нашу новостную рассылку!", "Show last log in" : "Показывать последний вход в систему", "Verifying" : "Производится проверка", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Для обеспечения безопасности и производительности важно, чтобы всё было настроено правильно. Чтобы помочь вам в этом, мы проводим некоторые автоматические проверки. Дополнительную информацию см. В разделе «Советы и рекомендации» и в документации.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP-модуль «fileinfo» отсутствует. Мы настоятельно рекомендуем включить этот модуль для улучшения определения типов (mime-type) файлов.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Веб, настольные и мобильные клиенты, а также индивидуальные пароли приложений, которые имеют доступ к вашему аккаунту.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Тут можно для каждого из приложений создать индивидуальные пароли, поэтому не требуется передавать ваш пароль. Такие пароли могут также отзываться по отдельности.", diff --git a/settings/l10n/ru.json b/settings/l10n/ru.json index 4956831d635..8c2d6e1101a 100644 --- a/settings/l10n/ru.json +++ b/settings/l10n/ru.json @@ -247,7 +247,6 @@ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Вам необходимо произвести конвертацию ключей шифрования из старого формата (ownCloud <= 8.0) в новый.", "Start migration" : "Запустить миграцию", "Security & setup warnings" : "Предупреждения безопасности и установки", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Для обеспечения безопасности и производительности важно, чтобы всё было настроено правильно. Чтобы помочь вам в этом, мы проводим некоторые автоматические проверки. Дополнительную информацию см. В разделе «Советы и рекомендации» и в документации.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP не настроен правильно для получения переменных системного окружения. Запрос getenv(\"PATH\") возвращает пустые результаты.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Обратитесь к <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документации по установке ↗</a> для получения информации по настройке PHP на вашем сервере, особенно это касается php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Конфигурационный файл в режиме только для чтения. В связи с этим некоторые настройки веб-интерфейса невозможно изменить. Учтите, что для установки обновлений, вам потребуется самостоятельно разрешить запись в конфигурационный файл.", @@ -438,6 +437,7 @@ "Subscribe to our newsletter!" : "Подписывайтесь на нашу новостную рассылку!", "Show last log in" : "Показывать последний вход в систему", "Verifying" : "Производится проверка", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Для обеспечения безопасности и производительности важно, чтобы всё было настроено правильно. Чтобы помочь вам в этом, мы проводим некоторые автоматические проверки. Дополнительную информацию см. В разделе «Советы и рекомендации» и в документации.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP-модуль «fileinfo» отсутствует. Мы настоятельно рекомендуем включить этот модуль для улучшения определения типов (mime-type) файлов.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Веб, настольные и мобильные клиенты, а также индивидуальные пароли приложений, которые имеют доступ к вашему аккаунту.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Тут можно для каждого из приложений создать индивидуальные пароли, поэтому не требуется передавать ваш пароль. Такие пароли могут также отзываться по отдельности.", diff --git a/settings/l10n/sq.js b/settings/l10n/sq.js index 3a4f67e14e0..057d174ab55 100644 --- a/settings/l10n/sq.js +++ b/settings/l10n/sq.js @@ -4,10 +4,12 @@ OC.L10N.register( "{actor} changed your password" : "{actor} ndryshoi fjalëkalimin tuaj ", "You changed your password" : "Ju ndëruat fjalëkalimin", "Your password was reset by an administrator" : "Fjalëkalimi juaj është rivendosur nga administratori", - "{actor} changed your email address" : "{actor} ndëroi emailin tuaj ", + "{actor} changed your email address" : "{aktori} ndërroi emailin tuaj ", "You changed your email address" : "Ju ndryshuat adresën e emailit tuaj", "Your email address was changed by an administrator" : "Adresa juaj e email-it është ndryshuar nga një administrator", "Security" : "Siguria", + "You successfully logged in using two-factor authentication (%1$s)" : "Ju keni hyrë me sukses duke përdorur autentifikimin me dy faktorë ( %1$s )", + "A login attempt using two-factor authentication failed (%1$s)" : "Një përpjekje e identifikimit me anë të autentifikimit me dy faktorë dështoi ( %1$s )", "Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>fjalëkalimi</strong> ose <strong>emaili</strong> juaj është modifikuar", "Your apps" : "Aplikacionet tuaja ", "Enabled apps" : "Lejo aplikacionet", @@ -20,6 +22,7 @@ OC.L10N.register( "Authentication error" : "Gabim mirëfilltësimi", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Ju lutemi siguro një fjalëkalim të rikuperueshëm admini; përndryshe, të gjithë të dhënat e përdoruesit do të humbasin ", "Wrong admin recovery password. Please check the password and try again." : "Fjalëkalim i gabuar rikthimesh për përgjegjësin. Ju lutemi, kontrolloni fjalëkalimin dhe provoni përsëri.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Programi klient s’mbulon ndryshime fjalëkalimi, por kyçi i përdoruesi për fshehtëzime u përditësua me sukses.", "installing and updating apps via the app store or Federated Cloud Sharing" : "instalim dhe përditësim aplikacionesh përmes shitores së aplikacioneve ose Federated Cloud Sharing", "Federated Cloud Sharing" : "Ndarje Në Re të Federuar ", "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL-ja po përdor një version %s të vjetruar (%s). Ju lutemi, përditësoni sistemin tuaj operativ ose përndryshe veçori të tilla si %s nuk do të punojnë në mënyrë të qëndrueshme.", @@ -28,7 +31,11 @@ OC.L10N.register( "Group already exists." : "Grupi ekziston tashmë.", "Unable to add group." : "S’arrin të shtojë grup.", "Unable to delete group." : "S’arrin të fshijë grup.", + "Invalid SMTP password." : "Fjalëkalim SMTP i pavlefshëm", "Well done, %s!" : "U krye, %s!", + "If you received this email, the email configuration seems to be correct." : "Nëse keni marrë këtë email, konfigurimi i email-it duket të jetë i saktë.", + "Email setting test" : "Test i konfigurimeve të Email-it", + "Email could not be sent. Check your mail server log" : "Email nuk mund të dërgohej. Kontrolloni logun e serverit tuaj të postës", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ndodhi një gabim gjatë dërgimit të email-it. Ju lutemi, rishikoni rregullimet tuaja. (Error: %s)", "You need to set your user email before being able to send test emails." : "Lypset të caktoni email-in tuaj si përdorues, përpara se të jeni në gjendje të dërgoni email-e provë.", "Invalid mail address" : "Adresë email e pavlefshme", @@ -38,7 +45,9 @@ OC.L10N.register( "Unable to create user." : "S’u arrit krijimi i përdoruesit.", "Unable to delete user." : "S’arrin të fshijë përdorues.", "Error while enabling user." : "Gabim ndërsa", - "Error while disabling user." : "Gabim ndërsa çaktivizo përdoruesin.", + "Error while disabling user." : "Gabim gjatë çaktivizimit të përdoruesit.", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Në mënyrë që të verifikoni llogarinë tuaj në Twitter, postojeni tweet-in e mëposhtme në Twitter (ju lutemi sigurohuni që ta postoni atë pa asnjë ndërprerje rrjeshti):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Në mënyrë që të verifikoni faqen tuaj të internetit, ruani përmbajtjen e mëposhtme në rrënjën tuaj të internetit në '.well-known / CloudIdVerificationCode.txt' (ju lutemi sigurohuni që teksti i plotë të jetë në një vijë):", "Settings saved" : "Konfigurimet u ruajtën", "Unable to change full name" : "S’arrin të ndryshojë emrin e plotë", "Unable to change email address" : "Nuk mund të ndryshohet adresa e email-it", @@ -59,10 +68,13 @@ OC.L10N.register( "Email address changed for %s" : "Adresa e email-it ndryshojë për %s", "The new email address is %s" : "Adresa e re e email-it është %s", "Email address for %1$s changed on %2$s" : "Adresa e email-it për %1$s ndryshojë në %2$s", + "Welcome aboard" : "Mirë se vini në bord", + "Welcome aboard %s" : "Mirë se vini në bord %s", "You have now an %s account, you can add, protect, and share your data." : "Ju keni tani një %s llogari, ju mund të shtoni, mbroni dhe shpërndanin të dhënat tuaja.", "Your username is: %s" : "Emri juaj i përdoruesit është: %s", "Set your password" : "Vendos fjalëkalimin tënd", "Go to %s" : "Shko tek %s", + "Install Client" : "Instalo Klient", "Your %s account was created" : "Llogaria juaj %s u krijua", "Password confirmation is required" : "Kërkohet konfirmimi i fjalëkalimit", "Couldn't remove app." : "S’hoqi dot aplikacionin.", @@ -83,15 +95,19 @@ OC.L10N.register( "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Aplikacionet zyrtare zhvillohen nga komuniteti dhe brenta tij. Ato ofrojnë funksionalitet qëndror dhe janë gati për përdorim.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Aplikacionet e miratuara ndërtohen nga zhvillues të besuar dhe kanë kaluar një kontroll të përciptë sigurie. Mirëmbahen aktivisht në një depo të hapur kodi dhe mirëmbajtësit e tyre i konsiderojnë të qëndrueshme për përdorime nga të rastit deri në ato normale.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Ky aplikacion s’është kontrolluar për probleme sigurie dhe është i ri ose i njohur si i paqëndrueshëm. Instalojeni duke e mbajtur vetë përgjegjësinë.", + "Disabling app …" : "Çaktivizo aplikacionin ...", "Error while disabling app" : "Gabim në çaktivizimin e aplikacionit", "Disable" : "Çaktivizoje", "Enable" : "Aktivizoje", "Enabling app …" : "Duke aktivizuar aplikacionin ...", "Error while enabling app" : "Gabim në aktivizimin e aplikacionit", + "Error: This app can not be enabled because it makes the server unstable" : "Gabim: Ky aplikacion s’u aktivizua dot, ngaqë e bën shërbyesin të paqëndrueshëm.", + "Error: Could not disable broken app" : "Gabim: S’u çaktivizua dot aplikacioni i dëmtuar", "Error while disabling broken app" : "Gabim teka çaktivizohej aplikacion i dëmtuar", "Updating...." : "Po përditësohet…", "Error while updating app" : "Gabim gjatë përditësimit të aplikacionit", "Updated" : "U përditësua", + "Removing …" : "Duke hequr ...", "Error while removing app" : "Gabim ndërsa çaktivizon aplikacionin", "Remove" : "Hiqe", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikacioni është aktivizuar, por lyp të përditësohet. Do të ridrejtoheni te faqja e përditësimeve brenda 5 sekondash.", @@ -125,7 +141,7 @@ OC.L10N.register( "Error while deleting the token" : "Gabim gjatë fshirjes së token-it", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ndodhi një gabim. Ju lutemi, ngarkoni një dëshmi PEM të koduar me ASCII.", "Valid until {date}" : "E vlefshme deri më {date}", - "Delete" : "Fshije", + "Delete" : "Fshij", "Local" : "Lokale", "Private" : "Private", "Only visible to local users" : "E dukshme vetëm për përdoruesit lokal", @@ -136,6 +152,7 @@ OC.L10N.register( "Will be synced to a global and public address book" : "Do të sinkronizohet te një libër adresash publik dhe global", "Verify" : "Verifiko", "Verifying …" : "Duke verifikuar ...", + "An error occured while changing your language. Please reload the page and try again." : "Ndodhi një gabim teksa ndryshohej gjuha. Ju lutem, rifresko faqen dhe provo përsëri.", "Select a profile picture" : "Përzgjidhni një foto profili", "Very weak password" : "Fjalëkalim shumë i dobët", "Weak password" : "Fjalëkalim i dobët", @@ -146,10 +163,12 @@ OC.L10N.register( "Unable to delete {objName}" : "S’arrin të fshijë {objName}", "Error creating group: {message}" : "Gabim gjatë krijimit të grupit: {message}", "A valid group name must be provided" : "Duhet dhënë një emër i vlefshëm grupi", - "deleted {groupName}" : "u fshi {groupName}", + "deleted {groupName}" : "u fshi {emërGrupi}", "undo" : "zhbëje", + "{size} used" : "{madhësia} e përdorur", "never" : "kurrë", "deleted {userName}" : "u fshi {userName}", + "No user found for <strong>{pattern}</strong>" : "Asnjë përdorues i gjetur për <strong> {modelin} </strong>", "Unable to add user to group {group}" : "E pamundur që të shtosh përdorues te grupi {grupi}", "Unable to remove user from group {group}" : "E pamundur të heqësh përdoruesin nga grupi {grupi}", "Add group" : "Shto grup", @@ -164,6 +183,8 @@ OC.L10N.register( "A valid password must be provided" : "Duhet dhënë një fjalëkalim i vlefshëm", "A valid email must be provided" : "Duhet dhënë një email i vlefshëm", "Developer documentation" : "Dokumentim për zhvillues", + "View in store" : "Shiko në dyqan", + "Limit to groups" : "Kufizo grupet", "This app has an update available." : "Ka gati një përditësim për këtë aplikacion.", "by %s" : "nga %s", "%s-licensed" : "licencuar prej %s", @@ -197,6 +218,7 @@ OC.L10N.register( "STARTTLS" : "STARTTLS", "Email server" : "Shërbyes email-esh", "Open documentation" : "Hapni dokumentimin", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Është e rëndësishme të ngrini këtë server për të qenë në gjendje të dërgoni email, si për rivendosjen e fjalëkalimeve dhe për njoftimet.", "Send mode" : "Mënyrë dërgimi", "Encryption" : "Fshehtëzim", "From address" : "Nga adresa", @@ -212,6 +234,7 @@ OC.L10N.register( "Test email settings" : "Testoni rregullimet e email-it", "Send email" : "Dërgo email", "Server-side encryption" : "Fshehtëzim më anë shërbyesi", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Enkriptimi nga ana e serverit bën të mundur enkriptimin e skedarëve të ngarkuar në këtë server. Kjo vjen me kufizime si një ndëshkim për performancën, prandaj e lejoni këtë vetëm nëse është e nevojshme.", "Enable server-side encryption" : "Aktivizo fshehtëzim më anë të shërbyesit", "Please read carefully before activating server-side encryption: " : "Ju lutemi, lexoni me kujdes përpara aktivizimit të fshehtëzimeve më anë shërbyesi: ", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Pasi të jetë aktivizuar fshehtëzimi, krejt kartelat e ngarkuara te shërbyesi nga kjo pikë e tutje do të fshehtëzohen pasi të jenë depozituar në shërbyes. Çaktivizimi i fshehtëzimit në një datë të mëvonshme do të jetë i mundur vetëm nëse moduli aktiv i fshehtëzimeve e mbulon këtë funksion, dhe nëse plotësohen krejt parakushtet (p.sh. caktimi i një kyçi rimarrjesh).", @@ -226,19 +249,35 @@ OC.L10N.register( "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Lypset të migroni kyçet tuaj të fshehtëzimit nga fshehtëzimi i vjetër (ownCloud <= 8.0) te i riu.", "Start migration" : "Fillo migrimin", "Security & setup warnings" : "Sinjalizime sigurie & rregullimi", + "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP-ja nuk duket të jetë ngritur si duhet për të kërkuar ndryshore mjedisi sistemi. Testi me getenv(\"PATH\") kthen vetëm një përgjigje të zbrazët.", + "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Ju lutem kontrolloni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\"> dokumentacionin e instalimit ↗ </a> për shënimet e konfigurimit te PHP-se dhe për konfigurimin PHP të serverit tuaj, veçanërisht kur përdoret php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Rregullimi Vetëm-Lexim u aktivizua. Kjo parandalon rregullimin e disa parametrave përmes ndërfaqes web. Më tej, për çdo përditësim kartela lyp të kalohet dorazi si e shkrueshme.", + "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Mesa duket PHP është ngritur për të zhveshur blloqet e inline doc. Kjo do të bëjë disa aplikacione bazë të paaksesueshme.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Kjo ka gjasa të jetë shkaktuar nga një fshehtinë/përshpejtues i tillë si Zend OPcache ose eAccelerator.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Baza juaj e të dhënave nuk ekzekutohet me nivelin \"READ COMMITED\" e izolimit për ndërveprimet. Kjo mund të shkaktojë probleme, kur kryhen paralelisht disa veprime njëherësh.", + "%1$s below version %2$s is installed, for stability and performance reasons it is recommended to update to a newer %1$s version." : "%1$s versioni i mëposhtëm %2$sështë instaluar, për arsye qëndrueshmërie dhe performance është e rekomanduar të përditësohet në një version më të ri %1$s.", + "The PHP module 'fileinfo' is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "Moduli PHP 'fileinfo' mungon. Ne ju rekomandojmë që të mundësohet ky modul për të marrë rezultatet më të mira me zbulimin e llojit MIME.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Kyçja e kartelave gjatë transaksioneve është e çaktivizuar, kjo mund të sjellë probleme me gjendje <em>race conditions</em>. Që të shmangni këto probleme, aktivizoni 'filelocking.enabled' te config.php. Për më tepër të dhëna, shihni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentimin ↗</a>.", "System locale can not be set to a one which supports UTF-8." : "Si vendore sistemi nuk mund të caktohet një që mbulon UTF-8.", "This means that there might be problems with certain characters in filenames." : "Kjo do të thotë që mund të ketë probleme me disa karaktere në emrat e skedarëve.", + "It is strongly proposed to install the required packages on your system to support one of the following locales: %s." : "Propozohrt që të instaloni paketat e kërkuara në sistemin tuaj për të mbështetur një nga lokacionet e mëposhtme: %s.", + "If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Nëse instalimi juaj nuk është bërë në rrënjë të përkatësisë dhe përdor cron sistemi, mund të ketë probleme me prodhimin e URL-së. Që të shmangen këto probleme, ju lutemi, jepini mundësisë \"overwrite.cli.url\" te kartela juaj config.php vlerën e shtegut webroot të instalimit tuaj (E këshillueshme: \"%s\")", + "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Nuk ishte e mundur që të ekzekutohej puna cron nëpërmjet CLI. Gabimet teknike në vijim janë shfaqur :", "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Ju lutem riverifikoni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\"> udhëzuesin e instalimit </a>,, dhe kontrolloni për ndonjë gabim apo njoftim paraprak në <a href=\"%s\">log</a>.", "All checks passed." : "I kaloi krejt kontrollet.", + "Background jobs" : "Punët në background", + "Last job ran %s." : "Puna e fundit vazhdoi %s.", + "Last job execution ran %s. Something seems wrong." : "Ekzekutimi i punës së fundit vazhdoi %s. Diçka shkoi keq.", "Background job didn’t run yet!" : "Puna ne background nuk ka filluar akoma!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Për performancë optimale është e rëndësishme të konfigurosh punë të sfondit në mënyrë korrekte. Për raste më të mëdha 'Cron' është konfigurimi i rekomanduar. Ju lutem shih dokumentacionin për më shumë informacion.", "Execute one task with each page loaded" : "Kryeni vetëm një veprim me secilën prej faqeve të ngarkuara", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php është regjistruar në një server webcron për të thirrur cron.php çdo 15 minuta mbi HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Përdor shërbimin cron të sistemit për të thirrur skedarin cron.php çdo 15 minuta.", "The cron.php needs to be executed by the system user \"%s\"." : "con.php duhet të ekzekutohet bga përdoruesi i sistemit \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Për të bërë këtë ekzekutim ju duhet shtesa PHP POSIX. Shikoni {linkstart} dokumentacionin e PHP {linkend} pë më shumë detaje.", "Version" : "Version", "Sharing" : "Ndarje me të tjerët", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Si admin ju mund të rregulloni mirë sjelljen e ndarjes. Ju lutem shih dokumentacionin për më shumë informacion.", "Allow apps to use the Share API" : "Lejoni aplikacionet të përdorin API Share", "Allow users to share via link" : "Lejoji përdoruesit të ndajnë me të tjerët përmes lidhjesh", "Allow public uploads" : "Lejo ngarkime publike", @@ -257,6 +296,7 @@ OC.L10N.register( "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Shfaqni tekstin e mospranimit në linkun publik të faqes së ngarkuar. (Shfaqet vetëm kur lista e skedarit është e fshehur.)", "This text will be shown on the public link upload page when the file list is hidden." : "Ky tekst do të shfaqet në linkun publik të faqes së ngarkuar kur lista e skedarit të jetë e fshehur.", "Tips & tricks" : "Ndihmëza & rrengje", + "There are a lot of features and config switches available to optimally customize and use this instance. Here are some pointers for more information." : "Ekzistojnë shumë funksione dhe çelësa të konfigurimit që janë në dispozicion për të përshtatur dhe përdorur në mënyrë optimale këtë shembull. Këtu janë disa udhëzues për më shumë informacion.", "SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "SQLite po përdoret si bazë të dhënash e programit klient. Për instalime më të ngarkuara, këshillojmë të kalohet në një program tjetër klient baze të dhënash.", "This is particularly recommended when using the desktop client for file synchronisation." : "Kjo është veçanërisht e rekomanduar gjatë përdorimit të desktopit të klientit për sinkronizimin skedari. ", "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "Për të kaluar te një tjetër bazë të dhënash përdorni mjetin rresht urdhrash: 'occ db:convert-type', ose shihni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentimin ↗</a>.", @@ -265,6 +305,7 @@ OC.L10N.register( "Performance tuning" : "Përimtime performance", "Improving the config.php" : "Si të përmirësohet config.php", "Theming" : "Ndryshim teme grafike", + "Check the security of your Nextcloud over our security scan" : "Kontrolloni sigurinë e Nextcloud tuaj mbi skanimin tonë të sigurisë", "Hardening and security guidance" : "Udhëzime për forcim dhe siguri", "You are using <strong>%s</strong> of <strong>%s</strong>" : "Po përdorni <strong>%s</strong> nga <strong>%s</strong>", "You are using <strong>%s</strong> of <strong>%s</strong> (<strong>%s %%</strong>)" : "Ju po përdorni <strong>%s</strong> të <strong>%s</strong> (<strong>%s%%</strong>)", @@ -290,6 +331,7 @@ OC.L10N.register( "It can take up to 24 hours before the account is displayed as verified." : "Kjo mund të marrë mbi 24 orë, përpara se llogaria të shfaqet si e verifikuar.", "Link https://…" : "Linku https://…", "Twitter" : "Twitter", + "Twitter handle @…" : "Përdoruesi i Twitter @ ...", "You are member of the following groups:" : "Jeni anëtar i grupeve vijuese:", "Password" : "Fjalëkalim", "Current password" : "Fjalëkalimi i tanishëm", @@ -396,6 +438,10 @@ OC.L10N.register( "Subscribe to our news feed!" : "Abonohuni në kanalin tonë në twitter!", "Subscribe to our newsletter!" : "Abonohuni në buletinin tonë informativ!", "Show last log in" : "Shfaq hyrjen e fundit", + "Verifying" : "Duke verifikuar", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Është e rëndësishme për sigurinë dhe performancën e instancës tuaj që gjithçka të konfigurohet në mënyrë korrekte. Për t'ju ndihmuar me këtë ne po bëjmë disa kontrolle automatike. Ju lutemi shikoni seksionin e këshillave dhe dokumentacionin për më shumë informacion.", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Moduli PHP 'fileinfo' mungon. Ne ju rekomandojmë që të mundësohet ky modul për të marrë rezultatet më të mira me zbulimin e llojit MIME.", + "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Web, desktop, klientë të lëvizshëm dhe fjalëkalime specifike për aplikacione që aktualisht kanë akses në llogarinë tuaj.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Këtu ju mund krijoni fjalëkalime individuale për aplikacionet, kështu që ju nuk keni pse të hiqni dorë nga fjalëkalimi juaj. Ju mund t'i anulloni ato individualish.", "Follow us on Google+!" : "Na ndiqni në Google+!", "Follow us on Twitter!" : "Na ndiqni në Twitter!", diff --git a/settings/l10n/sq.json b/settings/l10n/sq.json index 11f5baec791..f1321a23c67 100644 --- a/settings/l10n/sq.json +++ b/settings/l10n/sq.json @@ -2,10 +2,12 @@ "{actor} changed your password" : "{actor} ndryshoi fjalëkalimin tuaj ", "You changed your password" : "Ju ndëruat fjalëkalimin", "Your password was reset by an administrator" : "Fjalëkalimi juaj është rivendosur nga administratori", - "{actor} changed your email address" : "{actor} ndëroi emailin tuaj ", + "{actor} changed your email address" : "{aktori} ndërroi emailin tuaj ", "You changed your email address" : "Ju ndryshuat adresën e emailit tuaj", "Your email address was changed by an administrator" : "Adresa juaj e email-it është ndryshuar nga një administrator", "Security" : "Siguria", + "You successfully logged in using two-factor authentication (%1$s)" : "Ju keni hyrë me sukses duke përdorur autentifikimin me dy faktorë ( %1$s )", + "A login attempt using two-factor authentication failed (%1$s)" : "Një përpjekje e identifikimit me anë të autentifikimit me dy faktorë dështoi ( %1$s )", "Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>fjalëkalimi</strong> ose <strong>emaili</strong> juaj është modifikuar", "Your apps" : "Aplikacionet tuaja ", "Enabled apps" : "Lejo aplikacionet", @@ -18,6 +20,7 @@ "Authentication error" : "Gabim mirëfilltësimi", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Ju lutemi siguro një fjalëkalim të rikuperueshëm admini; përndryshe, të gjithë të dhënat e përdoruesit do të humbasin ", "Wrong admin recovery password. Please check the password and try again." : "Fjalëkalim i gabuar rikthimesh për përgjegjësin. Ju lutemi, kontrolloni fjalëkalimin dhe provoni përsëri.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Programi klient s’mbulon ndryshime fjalëkalimi, por kyçi i përdoruesi për fshehtëzime u përditësua me sukses.", "installing and updating apps via the app store or Federated Cloud Sharing" : "instalim dhe përditësim aplikacionesh përmes shitores së aplikacioneve ose Federated Cloud Sharing", "Federated Cloud Sharing" : "Ndarje Në Re të Federuar ", "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL-ja po përdor një version %s të vjetruar (%s). Ju lutemi, përditësoni sistemin tuaj operativ ose përndryshe veçori të tilla si %s nuk do të punojnë në mënyrë të qëndrueshme.", @@ -26,7 +29,11 @@ "Group already exists." : "Grupi ekziston tashmë.", "Unable to add group." : "S’arrin të shtojë grup.", "Unable to delete group." : "S’arrin të fshijë grup.", + "Invalid SMTP password." : "Fjalëkalim SMTP i pavlefshëm", "Well done, %s!" : "U krye, %s!", + "If you received this email, the email configuration seems to be correct." : "Nëse keni marrë këtë email, konfigurimi i email-it duket të jetë i saktë.", + "Email setting test" : "Test i konfigurimeve të Email-it", + "Email could not be sent. Check your mail server log" : "Email nuk mund të dërgohej. Kontrolloni logun e serverit tuaj të postës", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ndodhi një gabim gjatë dërgimit të email-it. Ju lutemi, rishikoni rregullimet tuaja. (Error: %s)", "You need to set your user email before being able to send test emails." : "Lypset të caktoni email-in tuaj si përdorues, përpara se të jeni në gjendje të dërgoni email-e provë.", "Invalid mail address" : "Adresë email e pavlefshme", @@ -36,7 +43,9 @@ "Unable to create user." : "S’u arrit krijimi i përdoruesit.", "Unable to delete user." : "S’arrin të fshijë përdorues.", "Error while enabling user." : "Gabim ndërsa", - "Error while disabling user." : "Gabim ndërsa çaktivizo përdoruesin.", + "Error while disabling user." : "Gabim gjatë çaktivizimit të përdoruesit.", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Në mënyrë që të verifikoni llogarinë tuaj në Twitter, postojeni tweet-in e mëposhtme në Twitter (ju lutemi sigurohuni që ta postoni atë pa asnjë ndërprerje rrjeshti):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Në mënyrë që të verifikoni faqen tuaj të internetit, ruani përmbajtjen e mëposhtme në rrënjën tuaj të internetit në '.well-known / CloudIdVerificationCode.txt' (ju lutemi sigurohuni që teksti i plotë të jetë në një vijë):", "Settings saved" : "Konfigurimet u ruajtën", "Unable to change full name" : "S’arrin të ndryshojë emrin e plotë", "Unable to change email address" : "Nuk mund të ndryshohet adresa e email-it", @@ -57,10 +66,13 @@ "Email address changed for %s" : "Adresa e email-it ndryshojë për %s", "The new email address is %s" : "Adresa e re e email-it është %s", "Email address for %1$s changed on %2$s" : "Adresa e email-it për %1$s ndryshojë në %2$s", + "Welcome aboard" : "Mirë se vini në bord", + "Welcome aboard %s" : "Mirë se vini në bord %s", "You have now an %s account, you can add, protect, and share your data." : "Ju keni tani një %s llogari, ju mund të shtoni, mbroni dhe shpërndanin të dhënat tuaja.", "Your username is: %s" : "Emri juaj i përdoruesit është: %s", "Set your password" : "Vendos fjalëkalimin tënd", "Go to %s" : "Shko tek %s", + "Install Client" : "Instalo Klient", "Your %s account was created" : "Llogaria juaj %s u krijua", "Password confirmation is required" : "Kërkohet konfirmimi i fjalëkalimit", "Couldn't remove app." : "S’hoqi dot aplikacionin.", @@ -81,15 +93,19 @@ "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Aplikacionet zyrtare zhvillohen nga komuniteti dhe brenta tij. Ato ofrojnë funksionalitet qëndror dhe janë gati për përdorim.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Aplikacionet e miratuara ndërtohen nga zhvillues të besuar dhe kanë kaluar një kontroll të përciptë sigurie. Mirëmbahen aktivisht në një depo të hapur kodi dhe mirëmbajtësit e tyre i konsiderojnë të qëndrueshme për përdorime nga të rastit deri në ato normale.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Ky aplikacion s’është kontrolluar për probleme sigurie dhe është i ri ose i njohur si i paqëndrueshëm. Instalojeni duke e mbajtur vetë përgjegjësinë.", + "Disabling app …" : "Çaktivizo aplikacionin ...", "Error while disabling app" : "Gabim në çaktivizimin e aplikacionit", "Disable" : "Çaktivizoje", "Enable" : "Aktivizoje", "Enabling app …" : "Duke aktivizuar aplikacionin ...", "Error while enabling app" : "Gabim në aktivizimin e aplikacionit", + "Error: This app can not be enabled because it makes the server unstable" : "Gabim: Ky aplikacion s’u aktivizua dot, ngaqë e bën shërbyesin të paqëndrueshëm.", + "Error: Could not disable broken app" : "Gabim: S’u çaktivizua dot aplikacioni i dëmtuar", "Error while disabling broken app" : "Gabim teka çaktivizohej aplikacion i dëmtuar", "Updating...." : "Po përditësohet…", "Error while updating app" : "Gabim gjatë përditësimit të aplikacionit", "Updated" : "U përditësua", + "Removing …" : "Duke hequr ...", "Error while removing app" : "Gabim ndërsa çaktivizon aplikacionin", "Remove" : "Hiqe", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikacioni është aktivizuar, por lyp të përditësohet. Do të ridrejtoheni te faqja e përditësimeve brenda 5 sekondash.", @@ -123,7 +139,7 @@ "Error while deleting the token" : "Gabim gjatë fshirjes së token-it", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ndodhi një gabim. Ju lutemi, ngarkoni një dëshmi PEM të koduar me ASCII.", "Valid until {date}" : "E vlefshme deri më {date}", - "Delete" : "Fshije", + "Delete" : "Fshij", "Local" : "Lokale", "Private" : "Private", "Only visible to local users" : "E dukshme vetëm për përdoruesit lokal", @@ -134,6 +150,7 @@ "Will be synced to a global and public address book" : "Do të sinkronizohet te një libër adresash publik dhe global", "Verify" : "Verifiko", "Verifying …" : "Duke verifikuar ...", + "An error occured while changing your language. Please reload the page and try again." : "Ndodhi një gabim teksa ndryshohej gjuha. Ju lutem, rifresko faqen dhe provo përsëri.", "Select a profile picture" : "Përzgjidhni një foto profili", "Very weak password" : "Fjalëkalim shumë i dobët", "Weak password" : "Fjalëkalim i dobët", @@ -144,10 +161,12 @@ "Unable to delete {objName}" : "S’arrin të fshijë {objName}", "Error creating group: {message}" : "Gabim gjatë krijimit të grupit: {message}", "A valid group name must be provided" : "Duhet dhënë një emër i vlefshëm grupi", - "deleted {groupName}" : "u fshi {groupName}", + "deleted {groupName}" : "u fshi {emërGrupi}", "undo" : "zhbëje", + "{size} used" : "{madhësia} e përdorur", "never" : "kurrë", "deleted {userName}" : "u fshi {userName}", + "No user found for <strong>{pattern}</strong>" : "Asnjë përdorues i gjetur për <strong> {modelin} </strong>", "Unable to add user to group {group}" : "E pamundur që të shtosh përdorues te grupi {grupi}", "Unable to remove user from group {group}" : "E pamundur të heqësh përdoruesin nga grupi {grupi}", "Add group" : "Shto grup", @@ -162,6 +181,8 @@ "A valid password must be provided" : "Duhet dhënë një fjalëkalim i vlefshëm", "A valid email must be provided" : "Duhet dhënë një email i vlefshëm", "Developer documentation" : "Dokumentim për zhvillues", + "View in store" : "Shiko në dyqan", + "Limit to groups" : "Kufizo grupet", "This app has an update available." : "Ka gati një përditësim për këtë aplikacion.", "by %s" : "nga %s", "%s-licensed" : "licencuar prej %s", @@ -195,6 +216,7 @@ "STARTTLS" : "STARTTLS", "Email server" : "Shërbyes email-esh", "Open documentation" : "Hapni dokumentimin", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Është e rëndësishme të ngrini këtë server për të qenë në gjendje të dërgoni email, si për rivendosjen e fjalëkalimeve dhe për njoftimet.", "Send mode" : "Mënyrë dërgimi", "Encryption" : "Fshehtëzim", "From address" : "Nga adresa", @@ -210,6 +232,7 @@ "Test email settings" : "Testoni rregullimet e email-it", "Send email" : "Dërgo email", "Server-side encryption" : "Fshehtëzim më anë shërbyesi", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Enkriptimi nga ana e serverit bën të mundur enkriptimin e skedarëve të ngarkuar në këtë server. Kjo vjen me kufizime si një ndëshkim për performancën, prandaj e lejoni këtë vetëm nëse është e nevojshme.", "Enable server-side encryption" : "Aktivizo fshehtëzim më anë të shërbyesit", "Please read carefully before activating server-side encryption: " : "Ju lutemi, lexoni me kujdes përpara aktivizimit të fshehtëzimeve më anë shërbyesi: ", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Pasi të jetë aktivizuar fshehtëzimi, krejt kartelat e ngarkuara te shërbyesi nga kjo pikë e tutje do të fshehtëzohen pasi të jenë depozituar në shërbyes. Çaktivizimi i fshehtëzimit në një datë të mëvonshme do të jetë i mundur vetëm nëse moduli aktiv i fshehtëzimeve e mbulon këtë funksion, dhe nëse plotësohen krejt parakushtet (p.sh. caktimi i një kyçi rimarrjesh).", @@ -224,19 +247,35 @@ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Lypset të migroni kyçet tuaj të fshehtëzimit nga fshehtëzimi i vjetër (ownCloud <= 8.0) te i riu.", "Start migration" : "Fillo migrimin", "Security & setup warnings" : "Sinjalizime sigurie & rregullimi", + "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP-ja nuk duket të jetë ngritur si duhet për të kërkuar ndryshore mjedisi sistemi. Testi me getenv(\"PATH\") kthen vetëm një përgjigje të zbrazët.", + "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Ju lutem kontrolloni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\"> dokumentacionin e instalimit ↗ </a> për shënimet e konfigurimit te PHP-se dhe për konfigurimin PHP të serverit tuaj, veçanërisht kur përdoret php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Rregullimi Vetëm-Lexim u aktivizua. Kjo parandalon rregullimin e disa parametrave përmes ndërfaqes web. Më tej, për çdo përditësim kartela lyp të kalohet dorazi si e shkrueshme.", + "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Mesa duket PHP është ngritur për të zhveshur blloqet e inline doc. Kjo do të bëjë disa aplikacione bazë të paaksesueshme.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Kjo ka gjasa të jetë shkaktuar nga një fshehtinë/përshpejtues i tillë si Zend OPcache ose eAccelerator.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Baza juaj e të dhënave nuk ekzekutohet me nivelin \"READ COMMITED\" e izolimit për ndërveprimet. Kjo mund të shkaktojë probleme, kur kryhen paralelisht disa veprime njëherësh.", + "%1$s below version %2$s is installed, for stability and performance reasons it is recommended to update to a newer %1$s version." : "%1$s versioni i mëposhtëm %2$sështë instaluar, për arsye qëndrueshmërie dhe performance është e rekomanduar të përditësohet në një version më të ri %1$s.", + "The PHP module 'fileinfo' is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "Moduli PHP 'fileinfo' mungon. Ne ju rekomandojmë që të mundësohet ky modul për të marrë rezultatet më të mira me zbulimin e llojit MIME.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Kyçja e kartelave gjatë transaksioneve është e çaktivizuar, kjo mund të sjellë probleme me gjendje <em>race conditions</em>. Që të shmangni këto probleme, aktivizoni 'filelocking.enabled' te config.php. Për më tepër të dhëna, shihni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentimin ↗</a>.", "System locale can not be set to a one which supports UTF-8." : "Si vendore sistemi nuk mund të caktohet një që mbulon UTF-8.", "This means that there might be problems with certain characters in filenames." : "Kjo do të thotë që mund të ketë probleme me disa karaktere në emrat e skedarëve.", + "It is strongly proposed to install the required packages on your system to support one of the following locales: %s." : "Propozohrt që të instaloni paketat e kërkuara në sistemin tuaj për të mbështetur një nga lokacionet e mëposhtme: %s.", + "If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Nëse instalimi juaj nuk është bërë në rrënjë të përkatësisë dhe përdor cron sistemi, mund të ketë probleme me prodhimin e URL-së. Që të shmangen këto probleme, ju lutemi, jepini mundësisë \"overwrite.cli.url\" te kartela juaj config.php vlerën e shtegut webroot të instalimit tuaj (E këshillueshme: \"%s\")", + "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Nuk ishte e mundur që të ekzekutohej puna cron nëpërmjet CLI. Gabimet teknike në vijim janë shfaqur :", "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Ju lutem riverifikoni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\"> udhëzuesin e instalimit </a>,, dhe kontrolloni për ndonjë gabim apo njoftim paraprak në <a href=\"%s\">log</a>.", "All checks passed." : "I kaloi krejt kontrollet.", + "Background jobs" : "Punët në background", + "Last job ran %s." : "Puna e fundit vazhdoi %s.", + "Last job execution ran %s. Something seems wrong." : "Ekzekutimi i punës së fundit vazhdoi %s. Diçka shkoi keq.", "Background job didn’t run yet!" : "Puna ne background nuk ka filluar akoma!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Për performancë optimale është e rëndësishme të konfigurosh punë të sfondit në mënyrë korrekte. Për raste më të mëdha 'Cron' është konfigurimi i rekomanduar. Ju lutem shih dokumentacionin për më shumë informacion.", "Execute one task with each page loaded" : "Kryeni vetëm një veprim me secilën prej faqeve të ngarkuara", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php është regjistruar në një server webcron për të thirrur cron.php çdo 15 minuta mbi HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Përdor shërbimin cron të sistemit për të thirrur skedarin cron.php çdo 15 minuta.", "The cron.php needs to be executed by the system user \"%s\"." : "con.php duhet të ekzekutohet bga përdoruesi i sistemit \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Për të bërë këtë ekzekutim ju duhet shtesa PHP POSIX. Shikoni {linkstart} dokumentacionin e PHP {linkend} pë më shumë detaje.", "Version" : "Version", "Sharing" : "Ndarje me të tjerët", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Si admin ju mund të rregulloni mirë sjelljen e ndarjes. Ju lutem shih dokumentacionin për më shumë informacion.", "Allow apps to use the Share API" : "Lejoni aplikacionet të përdorin API Share", "Allow users to share via link" : "Lejoji përdoruesit të ndajnë me të tjerët përmes lidhjesh", "Allow public uploads" : "Lejo ngarkime publike", @@ -255,6 +294,7 @@ "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Shfaqni tekstin e mospranimit në linkun publik të faqes së ngarkuar. (Shfaqet vetëm kur lista e skedarit është e fshehur.)", "This text will be shown on the public link upload page when the file list is hidden." : "Ky tekst do të shfaqet në linkun publik të faqes së ngarkuar kur lista e skedarit të jetë e fshehur.", "Tips & tricks" : "Ndihmëza & rrengje", + "There are a lot of features and config switches available to optimally customize and use this instance. Here are some pointers for more information." : "Ekzistojnë shumë funksione dhe çelësa të konfigurimit që janë në dispozicion për të përshtatur dhe përdorur në mënyrë optimale këtë shembull. Këtu janë disa udhëzues për më shumë informacion.", "SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "SQLite po përdoret si bazë të dhënash e programit klient. Për instalime më të ngarkuara, këshillojmë të kalohet në një program tjetër klient baze të dhënash.", "This is particularly recommended when using the desktop client for file synchronisation." : "Kjo është veçanërisht e rekomanduar gjatë përdorimit të desktopit të klientit për sinkronizimin skedari. ", "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "Për të kaluar te një tjetër bazë të dhënash përdorni mjetin rresht urdhrash: 'occ db:convert-type', ose shihni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentimin ↗</a>.", @@ -263,6 +303,7 @@ "Performance tuning" : "Përimtime performance", "Improving the config.php" : "Si të përmirësohet config.php", "Theming" : "Ndryshim teme grafike", + "Check the security of your Nextcloud over our security scan" : "Kontrolloni sigurinë e Nextcloud tuaj mbi skanimin tonë të sigurisë", "Hardening and security guidance" : "Udhëzime për forcim dhe siguri", "You are using <strong>%s</strong> of <strong>%s</strong>" : "Po përdorni <strong>%s</strong> nga <strong>%s</strong>", "You are using <strong>%s</strong> of <strong>%s</strong> (<strong>%s %%</strong>)" : "Ju po përdorni <strong>%s</strong> të <strong>%s</strong> (<strong>%s%%</strong>)", @@ -288,6 +329,7 @@ "It can take up to 24 hours before the account is displayed as verified." : "Kjo mund të marrë mbi 24 orë, përpara se llogaria të shfaqet si e verifikuar.", "Link https://…" : "Linku https://…", "Twitter" : "Twitter", + "Twitter handle @…" : "Përdoruesi i Twitter @ ...", "You are member of the following groups:" : "Jeni anëtar i grupeve vijuese:", "Password" : "Fjalëkalim", "Current password" : "Fjalëkalimi i tanishëm", @@ -394,6 +436,10 @@ "Subscribe to our news feed!" : "Abonohuni në kanalin tonë në twitter!", "Subscribe to our newsletter!" : "Abonohuni në buletinin tonë informativ!", "Show last log in" : "Shfaq hyrjen e fundit", + "Verifying" : "Duke verifikuar", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Është e rëndësishme për sigurinë dhe performancën e instancës tuaj që gjithçka të konfigurohet në mënyrë korrekte. Për t'ju ndihmuar me këtë ne po bëjmë disa kontrolle automatike. Ju lutemi shikoni seksionin e këshillave dhe dokumentacionin për më shumë informacion.", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Moduli PHP 'fileinfo' mungon. Ne ju rekomandojmë që të mundësohet ky modul për të marrë rezultatet më të mira me zbulimin e llojit MIME.", + "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Web, desktop, klientë të lëvizshëm dhe fjalëkalime specifike për aplikacione që aktualisht kanë akses në llogarinë tuaj.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Këtu ju mund krijoni fjalëkalime individuale për aplikacionet, kështu që ju nuk keni pse të hiqni dorë nga fjalëkalimi juaj. Ju mund t'i anulloni ato individualish.", "Follow us on Google+!" : "Na ndiqni në Google+!", "Follow us on Twitter!" : "Na ndiqni në Twitter!", diff --git a/settings/l10n/tr.js b/settings/l10n/tr.js index 8139c7a5850..57c456212d4 100644 --- a/settings/l10n/tr.js +++ b/settings/l10n/tr.js @@ -249,7 +249,6 @@ OC.L10N.register( "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Şifreleme anahtarlarınızı eski şifrelemeden (ownCloud <= 8.0) yenisine aktarmalısınız.", "Start migration" : "Aktarmayı başlat", "Security & setup warnings" : "Güvenlik ve kurulum uyarıları", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Kopyanızın güvenli ve yüksek başarımla çalışması için ayarların doğru yapılmış olması önemlidir. Bunu sağlamak için bazı otomatik denetimler yapılır. Ayrıntılı bilgi almak için İpuçları bölümüne ve belgelere bakın.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP yanlış kurulmuş ve sistem ortam değişkenlerini okuyamıyor gibi görünüyor. getenv(\"PATH\") komutu ile yapılan sınama sonucunda boş bir yanıt alındı.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Lütfen PHP yapılandırma notları ve özellikle php-fpm kullanırken sunucunuzdaki PHP yapılandırması için <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">kurulum belgelerine ↗</a> bakın.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Salt Okunur yapılandırma etkinleştirilmiş. Bu yapılandırma, bazı ayarların web arayüzünden yapılmasını önler. Ayrıca, bu dosyanın her güncelleme öncesinde el ile yazılabilir yapılması gerekir.", @@ -440,6 +439,7 @@ OC.L10N.register( "Subscribe to our newsletter!" : " Bültenimize abone olun!", "Show last log in" : "Son oturum açma zamanı görüntülensin", "Verifying" : "Doğrulanıyor", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Kopyanızın güvenli ve yüksek başarımla çalışması için ayarların doğru yapılmış olması önemlidir. Bunu sağlamak için bazı otomatik denetimler yapılır. Ayrıntılı bilgi almak için İpuçları bölümüne ve belgelere bakın.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP 'fileinfo' modülü bulunamadı. MIME türü algılamasında en iyi sonuçları elde etmek için bu modülü etkinleştirmeniz önerilir.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Şu anda hesabınıza erişebilen web, masa üstü ve mobil istemciler ile uygulamaya özel parolalar.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Bu bölümden uygulamalara özel parolalar üretebilirsiniz. Böylece kendi parolanızı vermeniz gerekmez. Daha sonra bu parolaları ayrı ayrı geçersiz kılabilirsiniz.", diff --git a/settings/l10n/tr.json b/settings/l10n/tr.json index 7599b582f9b..c598320c738 100644 --- a/settings/l10n/tr.json +++ b/settings/l10n/tr.json @@ -247,7 +247,6 @@ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Şifreleme anahtarlarınızı eski şifrelemeden (ownCloud <= 8.0) yenisine aktarmalısınız.", "Start migration" : "Aktarmayı başlat", "Security & setup warnings" : "Güvenlik ve kurulum uyarıları", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Kopyanızın güvenli ve yüksek başarımla çalışması için ayarların doğru yapılmış olması önemlidir. Bunu sağlamak için bazı otomatik denetimler yapılır. Ayrıntılı bilgi almak için İpuçları bölümüne ve belgelere bakın.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP yanlış kurulmuş ve sistem ortam değişkenlerini okuyamıyor gibi görünüyor. getenv(\"PATH\") komutu ile yapılan sınama sonucunda boş bir yanıt alındı.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Lütfen PHP yapılandırma notları ve özellikle php-fpm kullanırken sunucunuzdaki PHP yapılandırması için <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">kurulum belgelerine ↗</a> bakın.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Salt Okunur yapılandırma etkinleştirilmiş. Bu yapılandırma, bazı ayarların web arayüzünden yapılmasını önler. Ayrıca, bu dosyanın her güncelleme öncesinde el ile yazılabilir yapılması gerekir.", @@ -438,6 +437,7 @@ "Subscribe to our newsletter!" : " Bültenimize abone olun!", "Show last log in" : "Son oturum açma zamanı görüntülensin", "Verifying" : "Doğrulanıyor", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "Kopyanızın güvenli ve yüksek başarımla çalışması için ayarların doğru yapılmış olması önemlidir. Bunu sağlamak için bazı otomatik denetimler yapılır. Ayrıntılı bilgi almak için İpuçları bölümüne ve belgelere bakın.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP 'fileinfo' modülü bulunamadı. MIME türü algılamasında en iyi sonuçları elde etmek için bu modülü etkinleştirmeniz önerilir.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Şu anda hesabınıza erişebilen web, masa üstü ve mobil istemciler ile uygulamaya özel parolalar.", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Bu bölümden uygulamalara özel parolalar üretebilirsiniz. Böylece kendi parolanızı vermeniz gerekmez. Daha sonra bu parolaları ayrı ayrı geçersiz kılabilirsiniz.", diff --git a/settings/l10n/zh_CN.js b/settings/l10n/zh_CN.js index 4951986d8bf..92eca8c8909 100644 --- a/settings/l10n/zh_CN.js +++ b/settings/l10n/zh_CN.js @@ -249,7 +249,6 @@ OC.L10N.register( "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "您需要从旧版本 (ownCloud<=8.0) 迁移您的加密密钥.", "Start migration" : "开始迁移", "Security & setup warnings" : "安全及设置警告", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "为了您服务的安全和性能, 请将所有设置配置正确. 我们将会进行一些自动化检查以帮助您完成这项工作. 详情请查看 \"小提示\" 部分及相关文档.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP 的设置似乎有问题, 无法获取系统环境变量. 使用 getenv(\\\"PATH\\\") 测试时仅返回空结果.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "请检查 <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">安装文档 ↗</a> 中关于 PHP 配置的说明并在您的服务器中进行配置, 尤其是使用 php-fpm 时.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "已启用只读配置. 这将阻止在 Web 界面中进行设置. 此外, 每次更新后该文件需要手动设置为可写入.", @@ -440,6 +439,7 @@ OC.L10N.register( "Subscribe to our newsletter!" : "订阅我们的最新消息!", "Show last log in" : "显示最后登录", "Verifying" : "正在验证", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "为了您服务的安全和性能, 请将所有设置配置正确. 我们将会进行一些自动化检查以帮助您完成这项工作. 详情请查看 \"小提示\" 部分及相关文档.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP 模块 'fileinfo' 缺失. 我们强烈建议启用此模块以便在 MIME 类型检测时获得最准确的结果.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "网站,桌面设备,移动客户端和当前可以访问您帐户的应用专用密码。", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "您可以为应用程序生成独立密码,因此您不必输入您的密码。 您也可以单独撤销这些独立密码。", diff --git a/settings/l10n/zh_CN.json b/settings/l10n/zh_CN.json index 95cc18d6ded..a7e9d18a463 100644 --- a/settings/l10n/zh_CN.json +++ b/settings/l10n/zh_CN.json @@ -247,7 +247,6 @@ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "您需要从旧版本 (ownCloud<=8.0) 迁移您的加密密钥.", "Start migration" : "开始迁移", "Security & setup warnings" : "安全及设置警告", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "为了您服务的安全和性能, 请将所有设置配置正确. 我们将会进行一些自动化检查以帮助您完成这项工作. 详情请查看 \"小提示\" 部分及相关文档.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP 的设置似乎有问题, 无法获取系统环境变量. 使用 getenv(\\\"PATH\\\") 测试时仅返回空结果.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "请检查 <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">安装文档 ↗</a> 中关于 PHP 配置的说明并在您的服务器中进行配置, 尤其是使用 php-fpm 时.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "已启用只读配置. 这将阻止在 Web 界面中进行设置. 此外, 每次更新后该文件需要手动设置为可写入.", @@ -438,6 +437,7 @@ "Subscribe to our newsletter!" : "订阅我们的最新消息!", "Show last log in" : "显示最后登录", "Verifying" : "正在验证", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information." : "为了您服务的安全和性能, 请将所有设置配置正确. 我们将会进行一些自动化检查以帮助您完成这项工作. 详情请查看 \"小提示\" 部分及相关文档.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP 模块 'fileinfo' 缺失. 我们强烈建议启用此模块以便在 MIME 类型检测时获得最准确的结果.", "Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "网站,桌面设备,移动客户端和当前可以访问您帐户的应用专用密码。", "Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "您可以为应用程序生成独立密码,因此您不必输入您的密码。 您也可以单独撤销这些独立密码。", diff --git a/settings/templates/settings/admin/server.php b/settings/templates/settings/admin/server.php index b32514c8b24..407badcff41 100644 --- a/settings/templates/settings/admin/server.php +++ b/settings/templates/settings/admin/server.php @@ -28,7 +28,7 @@ <div id="security-warning" class="section"> <h2><?php p($l->t('Security & setup warnings'));?></h2> - <p class="settings-hint"><?php p($l->t('It\'s important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Ticks section and the documentation for more information.'));?></p> + <p class="settings-hint"><?php p($l->t('It\'s important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Tricks section and the documentation for more information.'));?></p> <ul> <?php // is php setup properly to query system environment variables like getenv('PATH') diff --git a/settings/users.php b/settings/users.php index 4d214bf9502..8dedb703ada 100644 --- a/settings/users.php +++ b/settings/users.php @@ -73,7 +73,7 @@ $groupsInfo->setSorting($sortGroupsBy); list($adminGroup, $groups) = $groupsInfo->get(); $recoveryAdminEnabled = OC_App::isEnabled('encryption') && - $config->getAppValue( 'encryption', 'recoveryAdminEnabled', null ); + $config->getAppValue( 'encryption', 'recoveryAdminEnabled', '0'); if($isAdmin) { $subAdmins = \OC::$server->getGroupManager()->getSubAdmin()->getAllSubAdmins(); diff --git a/status.php b/status.php index 3d2d8f59d75..293d843c6d6 100644 --- a/status.php +++ b/status.php @@ -56,5 +56,5 @@ try { } catch (Exception $ex) { OC_Response::setStatus(OC_Response::STATUS_INTERNAL_SERVER_ERROR); - \OCP\Util::writeLog('remote', $ex->getMessage(), \OCP\Util::FATAL); + \OC::$server->getLogger()->logException($ex, ['app' => 'remote']); } diff --git a/tests/Core/Controller/ChangePasswordControllerTest.php b/tests/Core/Controller/ChangePasswordControllerTest.php index c426bae9974..ea3abb58e2f 100644 --- a/tests/Core/Controller/ChangePasswordControllerTest.php +++ b/tests/Core/Controller/ChangePasswordControllerTest.php @@ -50,9 +50,9 @@ class ChangePasswordControllerTest extends \Test\TestCase { public function setUp() { parent::setUp(); - $this->userManager = $this->createMock(IUserManager::class); + $this->userManager = $this->createMock(\OC\User\Manager::class); $this->userSession = $this->createMock(Session::class); - $this->groupManager = $this->createMock(IGroupManager::class); + $this->groupManager = $this->createMock(\OC\Group\Manager::class); $this->appManager = $this->createMock(IAppManager::class); $this->l = $this->createMock(IL10N::class); $this->l->method('t')->will($this->returnArgument(0)); diff --git a/tests/Core/Controller/LoginControllerTest.php b/tests/Core/Controller/LoginControllerTest.php index bd2d0143caf..493bade9dd8 100644 --- a/tests/Core/Controller/LoginControllerTest.php +++ b/tests/Core/Controller/LoginControllerTest.php @@ -307,7 +307,7 @@ class LoginControllerTest extends TestCase { ->method('deleteUserValue'); $expected = new \OCP\AppFramework\Http\RedirectResponse($loginPageUrl); - $expected->throttle(); + $expected->throttle(['user' => 'MyUserName']); $this->assertEquals($expected, $this->loginController->tryLogin($user, $password, '/apps/files')); } @@ -634,7 +634,7 @@ class LoginControllerTest extends TestCase { ->method('createRememberMeToken'); $expected = new RedirectResponse(''); - $expected->throttle(); + $expected->throttle(['user' => 'john']); $this->assertEquals($expected, $this->loginController->tryLogin('john@doe.com', 'just wrong', null)); } } diff --git a/tests/Core/Controller/OCSControllerTest.php b/tests/Core/Controller/OCSControllerTest.php index 9d0a3dae118..aa2c780f82e 100644 --- a/tests/Core/Controller/OCSControllerTest.php +++ b/tests/Core/Controller/OCSControllerTest.php @@ -169,7 +169,7 @@ class OCSControllerTest extends TestCase { $this->equalTo('wrongpass') )->willReturn(false); - $expected = new DataResponse(null, 102); + $expected = new DataResponse([], 102); $expected->throttle(); $this->assertEquals($expected, $this->controller->personCheck('user', 'wrongpass')); } @@ -181,7 +181,7 @@ class OCSControllerTest extends TestCase { $this->equalTo('wrongpass') )->willReturn(false); - $expected = new DataResponse(null, 101); + $expected = new DataResponse([], 101); $this->assertEquals($expected, $this->controller->personCheck('', '')); } @@ -192,7 +192,7 @@ class OCSControllerTest extends TestCase { ->with('NotExistingUser') ->willReturn(null); - $expected = new DataResponse('User not found', 404); + $expected = new DataResponse(['User not found'], 404); $this->assertEquals($expected, $this->controller->getIdentityProof('NotExistingUser')); } diff --git a/tests/Core/Middleware/TwoFactorMiddlewareTest.php b/tests/Core/Middleware/TwoFactorMiddlewareTest.php index fc8cf0d8b7e..56022c78bdd 100644 --- a/tests/Core/Middleware/TwoFactorMiddlewareTest.php +++ b/tests/Core/Middleware/TwoFactorMiddlewareTest.php @@ -24,6 +24,7 @@ namespace Test\Core\Middleware; use OC\Core\Middleware\TwoFactorMiddleware; use OC\AppFramework\Http\Request; +use OCP\AppFramework\Controller; use OCP\AppFramework\Utility\IControllerMethodReflector; use OCP\IConfig; use OCP\ISession; @@ -44,6 +45,9 @@ class TwoFactorMiddlewareTest extends TestCase { /** @var TwoFactorMiddleware */ private $middleware; + /** @var Controller */ + private $controller; + protected function setUp() { parent::setUp(); @@ -67,6 +71,7 @@ class TwoFactorMiddlewareTest extends TestCase { ); $this->middleware = new TwoFactorMiddleware($this->twoFactorManager, $this->userSession, $this->session, $this->urlGenerator, $this->reflector, $this->request); + $this->controller = $this->createMock(Controller::class); } public function testBeforeControllerNotLoggedIn() { @@ -81,7 +86,7 @@ class TwoFactorMiddlewareTest extends TestCase { $this->userSession->expects($this->never()) ->method('getUser'); - $this->middleware->beforeController(null, 'index'); + $this->middleware->beforeController($this->controller, 'index'); } public function testBeforeControllerPublicPage() { @@ -92,7 +97,7 @@ class TwoFactorMiddlewareTest extends TestCase { $this->userSession->expects($this->never()) ->method('isLoggedIn'); - $this->middleware->beforeController(null, 'create'); + $this->middleware->beforeController($this->controller, 'create'); } public function testBeforeControllerNoTwoFactorCheckNeeded() { @@ -113,7 +118,7 @@ class TwoFactorMiddlewareTest extends TestCase { ->with($user) ->will($this->returnValue(false)); - $this->middleware->beforeController(null, 'index'); + $this->middleware->beforeController($this->controller, 'index'); } /** @@ -141,7 +146,7 @@ class TwoFactorMiddlewareTest extends TestCase { ->with($user) ->will($this->returnValue(true)); - $this->middleware->beforeController(null, 'index'); + $this->middleware->beforeController($this->controller, 'index'); } /** @@ -184,7 +189,7 @@ class TwoFactorMiddlewareTest extends TestCase { ->will($this->returnValue('test/url')); $expected = new \OCP\AppFramework\Http\RedirectResponse('test/url'); - $this->assertEquals($expected, $this->middleware->afterException(null, 'index', $ex)); + $this->assertEquals($expected, $this->middleware->afterException($this->controller, 'index', $ex)); } public function testAfterException() { @@ -196,7 +201,7 @@ class TwoFactorMiddlewareTest extends TestCase { ->will($this->returnValue('redirect/url')); $expected = new \OCP\AppFramework\Http\RedirectResponse('redirect/url'); - $this->assertEquals($expected, $this->middleware->afterException(null, 'index', $ex)); + $this->assertEquals($expected, $this->middleware->afterException($this->controller, 'index', $ex)); } } diff --git a/tests/Core/Templates/TemplatesTest.php b/tests/Core/Templates/TemplatesTest.php deleted file mode 100644 index cd1502fd22c..00000000000 --- a/tests/Core/Templates/TemplatesTest.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - -namespace Tests\Core\Templates; - -class TemplatesTest extends \Test\TestCase { - - public function test403() { - $template = \OC::$SERVERROOT . '/core/templates/403.php'; - $expectedHtml = "<ul><li class='error'>\n\t\tAccess forbidden<br><p class='hint'></p></li></ul>"; - $this->assertTemplate($expectedHtml, $template); - } - - public function test404() { - $template = \OC::$SERVERROOT . '/core/templates/404.php'; - $href = \OC::$server->getURLGenerator()->linkTo('', 'index.php'); - $expectedHtml = "<ul><li class='error'>\n\t\t\tFile not found<br><p class='hint'>The specified document has not been found on the server.</p>\n<p class='hint'><a href='$href'>You can click here to return to Nextcloud.</a></p>\n\t\t</li></ul>"; - $this->assertTemplate($expectedHtml, $template); - } - -} diff --git a/tests/Settings/Controller/CertificateControllerTest.php b/tests/Settings/Controller/CertificateControllerTest.php index 36b5715e734..48d34a1542b 100644 --- a/tests/Settings/Controller/CertificateControllerTest.php +++ b/tests/Settings/Controller/CertificateControllerTest.php @@ -174,7 +174,7 @@ class CertificateControllerTest extends \Test\TestCase { ->with(file_get_contents($uploadedFile['tmp_name'], 'badCertificate.crt')) ->will($this->throwException(new \Exception())); - $expected = new DataResponse('An error occurred.', Http::STATUS_UNPROCESSABLE_ENTITY); + $expected = new DataResponse(['An error occurred.'], Http::STATUS_UNPROCESSABLE_ENTITY); $this->assertEquals($expected, $this->certificateController->addPersonalRootCertificate()); } diff --git a/tests/Settings/Controller/CheckSetupControllerTest.php b/tests/Settings/Controller/CheckSetupControllerTest.php index 49931994f02..d0093cc8a9a 100644 --- a/tests/Settings/Controller/CheckSetupControllerTest.php +++ b/tests/Settings/Controller/CheckSetupControllerTest.php @@ -296,11 +296,11 @@ class CheckSetupControllerTest extends TestCase { $this->urlGenerator->expects($this->at(0)) ->method('linkToDocs') ->with('admin-performance') - ->willReturn('http://doc.owncloud.org/server/go.php?to=admin-performance'); + ->willReturn('http://docs.example.org/server/go.php?to=admin-performance'); $this->urlGenerator->expects($this->at(1)) ->method('linkToDocs') ->with('admin-security') - ->willReturn('https://doc.owncloud.org/server/8.1/admin_manual/configuration_server/hardening.html'); + ->willReturn('https://docs.example.org/server/8.1/admin_manual/configuration_server/hardening.html'); $this->checkSetupController ->expects($this->once()) ->method('isPhpOutdated') @@ -316,19 +316,19 @@ class CheckSetupControllerTest extends TestCase { $this->urlGenerator->expects($this->at(3)) ->method('linkToDocs') ->with('admin-code-integrity') - ->willReturn('http://doc.owncloud.org/server/go.php?to=admin-code-integrity'); + ->willReturn('http://docs.example.org/server/go.php?to=admin-code-integrity'); $this->urlGenerator->expects($this->at(4)) ->method('linkToDocs') ->with('admin-php-opcache') - ->willReturn('http://doc.owncloud.org/server/go.php?to=admin-php-opcache'); + ->willReturn('http://docs.example.org/server/go.php?to=admin-php-opcache'); $expected = new DataResponse( [ 'serverHasInternetConnection' => false, 'isMemcacheConfigured' => true, - 'memcacheDocs' => 'http://doc.owncloud.org/server/go.php?to=admin-performance', + 'memcacheDocs' => 'http://docs.example.org/server/go.php?to=admin-performance', 'isUrandomAvailable' => self::invokePrivate($this->checkSetupController, 'isUrandomAvailable'), - 'securityDocs' => 'https://doc.owncloud.org/server/8.1/admin_manual/configuration_server/hardening.html', + 'securityDocs' => 'https://docs.example.org/server/8.1/admin_manual/configuration_server/hardening.html', 'isUsedTlsLibOutdated' => '', 'phpSupported' => [ 'eol' => true, @@ -338,9 +338,9 @@ class CheckSetupControllerTest extends TestCase { 'reverseProxyDocs' => 'reverse-proxy-doc-link', 'isCorrectMemcachedPHPModuleInstalled' => true, 'hasPassedCodeIntegrityCheck' => null, - 'codeIntegrityCheckerDocumentation' => 'http://doc.owncloud.org/server/go.php?to=admin-code-integrity', + 'codeIntegrityCheckerDocumentation' => 'http://docs.example.org/server/go.php?to=admin-code-integrity', 'isOpcacheProperlySetup' => false, - 'phpOpcacheDocumentation' => 'http://doc.owncloud.org/server/go.php?to=admin-php-opcache', + 'phpOpcacheDocumentation' => 'http://docs.example.org/server/go.php?to=admin-php-opcache', 'isSettimelimitAvailable' => true, ] ); diff --git a/tests/lib/AppFramework/Http/ResponseTest.php b/tests/lib/AppFramework/Http/ResponseTest.php index d8959face89..9267d862600 100644 --- a/tests/lib/AppFramework/Http/ResponseTest.php +++ b/tests/lib/AppFramework/Http/ResponseTest.php @@ -269,4 +269,9 @@ class ResponseTest extends \Test\TestCase { $this->childResponse->throttle(); $this->assertTrue($this->childResponse->isThrottled()); } + + public function testGetThrottleMetadata() { + $this->childResponse->throttle(['foo' => 'bar']); + $this->assertSame(['foo' => 'bar'], $this->childResponse->getThrottleMetadata()); + } } diff --git a/tests/lib/AppFramework/Middleware/MiddlewareDispatcherTest.php b/tests/lib/AppFramework/Middleware/MiddlewareDispatcherTest.php index 2b7a79bae2f..f948e184f53 100644 --- a/tests/lib/AppFramework/Middleware/MiddlewareDispatcherTest.php +++ b/tests/lib/AppFramework/Middleware/MiddlewareDispatcherTest.php @@ -26,6 +26,7 @@ namespace Test\AppFramework\Middleware; use OC\AppFramework\Http\Request; use OC\AppFramework\Middleware\MiddlewareDispatcher; +use OCP\AppFramework\Controller; use OCP\AppFramework\Middleware; use OCP\AppFramework\Http\Response; diff --git a/tests/lib/AppFramework/Middleware/Security/BruteForceMiddlewareTest.php b/tests/lib/AppFramework/Middleware/Security/BruteForceMiddlewareTest.php index 14d3b796846..ae2345764ff 100644 --- a/tests/lib/AppFramework/Middleware/Security/BruteForceMiddlewareTest.php +++ b/tests/lib/AppFramework/Middleware/Security/BruteForceMiddlewareTest.php @@ -112,6 +112,10 @@ class BruteForceMiddlewareTest extends TestCase { ->expects($this->once()) ->method('isThrottled') ->willReturn(true); + $response + ->expects($this->once()) + ->method('getThrottleMetadata') + ->willReturn([]); $this->reflector ->expects($this->once()) ->method('getAnnotationParameter') diff --git a/tests/lib/AppFramework/Middleware/Security/CORSMiddlewareTest.php b/tests/lib/AppFramework/Middleware/Security/CORSMiddlewareTest.php index d0096d43f3d..498eaed8949 100644 --- a/tests/lib/AppFramework/Middleware/Security/CORSMiddlewareTest.php +++ b/tests/lib/AppFramework/Middleware/Security/CORSMiddlewareTest.php @@ -17,26 +17,30 @@ use OC\AppFramework\Middleware\Security\CORSMiddleware; use OC\AppFramework\Utility\ControllerMethodReflector; use OC\AppFramework\Middleware\Security\Exceptions\SecurityException; use OC\Security\Bruteforce\Throttler; +use OC\User\Session; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http\JSONResponse; use OCP\AppFramework\Http\Response; - +use OCP\IConfig; +use OCP\Security\ISecureRandom; class CORSMiddlewareTest extends \Test\TestCase { + /** @var ControllerMethodReflector */ private $reflector; + /** @var Session|\PHPUnit_Framework_MockObject_MockObject */ private $session; /** @var Throttler */ private $throttler; + /** @var Controller */ + private $controller; protected function setUp() { parent::setUp(); $this->reflector = new ControllerMethodReflector(); - $this->session = $this->getMockBuilder('\OC\User\Session') - ->disableOriginalConstructor() - ->getMock(); - $this->throttler = $this->getMockBuilder('\OC\Security\Bruteforce\Throttler') - ->disableOriginalConstructor() - ->getMock(); + $this->session = $this->createMock(Session::class); + $this->throttler = $this->createMock(Throttler::class); + $this->controller = $this->createMock(Controller::class); } /** @@ -49,13 +53,13 @@ class CORSMiddlewareTest extends \Test\TestCase { 'HTTP_ORIGIN' => 'test' ] ], - $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(), - $this->getMockBuilder('\OCP\IConfig')->getMock() + $this->createMock(ISecureRandom::class), + $this->createMock(IConfig::class) ); $this->reflector->reflect($this, __FUNCTION__); $middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler); - $response = $middleware->afterController($this, __FUNCTION__, new Response()); + $response = $middleware->afterController($this->controller, __FUNCTION__, new Response()); $headers = $response->getHeaders(); $this->assertEquals('test', $headers['Access-Control-Allow-Origin']); } @@ -68,12 +72,12 @@ class CORSMiddlewareTest extends \Test\TestCase { 'HTTP_ORIGIN' => 'test' ] ], - $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(), - $this->getMockBuilder('\OCP\IConfig')->getMock() + $this->createMock(ISecureRandom::class), + $this->createMock(IConfig::class) ); $middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler); - $response = $middleware->afterController($this, __FUNCTION__, new Response()); + $response = $middleware->afterController($this->controller, __FUNCTION__, new Response()); $headers = $response->getHeaders(); $this->assertFalse(array_key_exists('Access-Control-Allow-Origin', $headers)); } @@ -85,13 +89,13 @@ class CORSMiddlewareTest extends \Test\TestCase { public function testNoOriginHeaderNoCORSHEADER() { $request = new Request( [], - $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(), - $this->getMockBuilder('\OCP\IConfig')->getMock() + $this->createMock(ISecureRandom::class), + $this->createMock(IConfig::class) ); $this->reflector->reflect($this, __FUNCTION__); $middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler); - $response = $middleware->afterController($this, __FUNCTION__, new Response()); + $response = $middleware->afterController($this->controller, __FUNCTION__, new Response()); $headers = $response->getHeaders(); $this->assertFalse(array_key_exists('Access-Control-Allow-Origin', $headers)); } @@ -108,15 +112,15 @@ class CORSMiddlewareTest extends \Test\TestCase { 'HTTP_ORIGIN' => 'test' ] ], - $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(), - $this->getMockBuilder('\OCP\IConfig')->getMock() + $this->createMock(ISecureRandom::class), + $this->createMock(IConfig::class) ); $this->reflector->reflect($this, __FUNCTION__); $middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler); $response = new Response(); $response->addHeader('AcCess-control-Allow-Credentials ', 'TRUE'); - $middleware->afterController($this, __FUNCTION__, $response); + $middleware->afterController($this->controller, __FUNCTION__, $response); } /** @@ -126,8 +130,8 @@ class CORSMiddlewareTest extends \Test\TestCase { public function testNoCORSShouldAllowCookieAuth() { $request = new Request( [], - $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(), - $this->getMockBuilder('\OCP\IConfig')->getMock() + $this->createMock(ISecureRandom::class), + $this->createMock(IConfig::class) ); $this->reflector->reflect($this, __FUNCTION__); $middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler); @@ -139,7 +143,7 @@ class CORSMiddlewareTest extends \Test\TestCase { ->will($this->returnValue(true)); $this->reflector->reflect($this, __FUNCTION__); - $middleware->beforeController($this, __FUNCTION__, new Response()); + $middleware->beforeController($this->controller, __FUNCTION__); } /** @@ -151,8 +155,8 @@ class CORSMiddlewareTest extends \Test\TestCase { 'PHP_AUTH_USER' => 'user', 'PHP_AUTH_PW' => 'pass' ]], - $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(), - $this->getMockBuilder('\OCP\IConfig')->getMock() + $this->createMock(ISecureRandom::class), + $this->createMock(IConfig::class) ); $this->session->expects($this->once()) ->method('logout'); @@ -163,7 +167,7 @@ class CORSMiddlewareTest extends \Test\TestCase { $this->reflector->reflect($this, __FUNCTION__); $middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler); - $middleware->beforeController($this, __FUNCTION__, new Response()); + $middleware->beforeController($this->controller, __FUNCTION__); } /** @@ -176,8 +180,8 @@ class CORSMiddlewareTest extends \Test\TestCase { 'PHP_AUTH_USER' => 'user', 'PHP_AUTH_PW' => 'pass' ]], - $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(), - $this->getMockBuilder('\OCP\IConfig')->getMock() + $this->createMock(ISecureRandom::class), + $this->createMock(IConfig::class) ); $this->session->expects($this->once()) ->method('logout'); @@ -188,7 +192,7 @@ class CORSMiddlewareTest extends \Test\TestCase { $this->reflector->reflect($this, __FUNCTION__); $middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler); - $middleware->beforeController($this, __FUNCTION__, new Response()); + $middleware->beforeController($this->controller, __FUNCTION__); } /** @@ -201,8 +205,8 @@ class CORSMiddlewareTest extends \Test\TestCase { 'PHP_AUTH_USER' => 'user', 'PHP_AUTH_PW' => 'pass' ]], - $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(), - $this->getMockBuilder('\OCP\IConfig')->getMock() + $this->createMock(ISecureRandom::class), + $this->createMock(IConfig::class) ); $this->session->expects($this->once()) ->method('logout'); @@ -213,7 +217,7 @@ class CORSMiddlewareTest extends \Test\TestCase { $this->reflector->reflect($this, __FUNCTION__); $middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler); - $middleware->beforeController($this, __FUNCTION__, new Response()); + $middleware->beforeController($this->controller, __FUNCTION__); } public function testAfterExceptionWithSecurityExceptionNoStatus() { @@ -222,11 +226,11 @@ class CORSMiddlewareTest extends \Test\TestCase { 'PHP_AUTH_USER' => 'user', 'PHP_AUTH_PW' => 'pass' ]], - $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(), - $this->getMockBuilder('\OCP\IConfig')->getMock() + $this->createMock(ISecureRandom::class), + $this->createMock(IConfig::class) ); $middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler); - $response = $middleware->afterException($this, __FUNCTION__, new SecurityException('A security exception')); + $response = $middleware->afterException($this->controller, __FUNCTION__, new SecurityException('A security exception')); $expected = new JSONResponse(['message' => 'A security exception'], 500); $this->assertEquals($expected, $response); @@ -238,11 +242,11 @@ class CORSMiddlewareTest extends \Test\TestCase { 'PHP_AUTH_USER' => 'user', 'PHP_AUTH_PW' => 'pass' ]], - $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(), - $this->getMockBuilder('\OCP\IConfig')->getMock() + $this->createMock(ISecureRandom::class), + $this->createMock(IConfig::class) ); $middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler); - $response = $middleware->afterException($this, __FUNCTION__, new SecurityException('A security exception', 501)); + $response = $middleware->afterException($this->controller, __FUNCTION__, new SecurityException('A security exception', 501)); $expected = new JSONResponse(['message' => 'A security exception'], 501); $this->assertEquals($expected, $response); @@ -258,11 +262,11 @@ class CORSMiddlewareTest extends \Test\TestCase { 'PHP_AUTH_USER' => 'user', 'PHP_AUTH_PW' => 'pass' ]], - $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(), - $this->getMockBuilder('\OCP\IConfig')->getMock() + $this->createMock(ISecureRandom::class), + $this->createMock(IConfig::class) ); $middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler); - $middleware->afterException($this, __FUNCTION__, new \Exception('A regular exception')); + $middleware->afterException($this->controller, __FUNCTION__, new \Exception('A regular exception')); } } diff --git a/tests/lib/AppFramework/Middleware/Security/SecurityMiddlewareTest.php b/tests/lib/AppFramework/Middleware/Security/SecurityMiddlewareTest.php index 17ac30b8fe4..773cb2b196f 100644 --- a/tests/lib/AppFramework/Middleware/Security/SecurityMiddlewareTest.php +++ b/tests/lib/AppFramework/Middleware/Security/SecurityMiddlewareTest.php @@ -131,7 +131,7 @@ class SecurityMiddlewareTest extends \Test\TestCase { ->with($this->equalTo('files')); $this->reader->reflect(__CLASS__, __FUNCTION__); - $this->middleware->beforeController(__CLASS__, __FUNCTION__); + $this->middleware->beforeController($this->controller, __FUNCTION__); } @@ -152,7 +152,7 @@ class SecurityMiddlewareTest extends \Test\TestCase { try { $this->reader->reflect(__CLASS__, $method); - $sec->beforeController(__CLASS__, $method); + $sec->beforeController($this->controller, $method); } catch (SecurityException $ex){ $this->assertEquals($status, $ex->getCode()); } @@ -234,7 +234,7 @@ class SecurityMiddlewareTest extends \Test\TestCase { $sec = $this->getMiddleware(false, false); $this->reader->reflect(__CLASS__, __FUNCTION__); - $sec->beforeController(__CLASS__, __FUNCTION__); + $sec->beforeController($this->controller, __FUNCTION__); } @@ -261,7 +261,7 @@ class SecurityMiddlewareTest extends \Test\TestCase { } $this->reader->reflect(__CLASS__, $method); - $sec->beforeController(__CLASS__, $method); + $sec->beforeController($this->controller, $method); } @@ -277,7 +277,7 @@ class SecurityMiddlewareTest extends \Test\TestCase { ->method('passesStrictCookieCheck') ->will($this->returnValue(true)); $this->reader->reflect(__CLASS__, __FUNCTION__); - $this->middleware->beforeController(__CLASS__, __FUNCTION__); + $this->middleware->beforeController($this->controller, __FUNCTION__); } @@ -291,7 +291,7 @@ class SecurityMiddlewareTest extends \Test\TestCase { ->will($this->returnValue(false)); $this->reader->reflect(__CLASS__, __FUNCTION__); - $this->middleware->beforeController(__CLASS__, __FUNCTION__); + $this->middleware->beforeController($this->controller, __FUNCTION__); } /** @@ -306,7 +306,7 @@ class SecurityMiddlewareTest extends \Test\TestCase { ->will($this->returnValue(true)); $this->reader->reflect(__CLASS__, __FUNCTION__); - $this->middleware->beforeController(__CLASS__, __FUNCTION__); + $this->middleware->beforeController($this->controller, __FUNCTION__); } /** @@ -322,7 +322,7 @@ class SecurityMiddlewareTest extends \Test\TestCase { ->will($this->returnValue(true)); $this->reader->reflect(__CLASS__, __FUNCTION__); - $this->middleware->beforeController(__CLASS__, __FUNCTION__); + $this->middleware->beforeController($this->controller, __FUNCTION__); } /** @@ -338,7 +338,7 @@ class SecurityMiddlewareTest extends \Test\TestCase { ->will($this->returnValue(false)); $this->reader->reflect(__CLASS__, __FUNCTION__); - $this->middleware->beforeController(__CLASS__, __FUNCTION__); + $this->middleware->beforeController($this->controller, __FUNCTION__); } @@ -352,7 +352,7 @@ class SecurityMiddlewareTest extends \Test\TestCase { ->will($this->returnValue(false)); $this->reader->reflect(__CLASS__, __FUNCTION__); - $this->middleware->beforeController(__CLASS__, __FUNCTION__); + $this->middleware->beforeController($this->controller, __FUNCTION__); } /** @@ -367,7 +367,7 @@ class SecurityMiddlewareTest extends \Test\TestCase { ->willReturn(true); $this->reader->reflect(__CLASS__, __FUNCTION__); - $this->middleware->beforeController(__CLASS__, __FUNCTION__); + $this->middleware->beforeController($this->controller, __FUNCTION__); } public function dataCsrfOcsController() { diff --git a/tests/lib/AppFramework/Middleware/SessionMiddlewareTest.php b/tests/lib/AppFramework/Middleware/SessionMiddlewareTest.php index af2045cb7c1..3c218bb53c7 100644 --- a/tests/lib/AppFramework/Middleware/SessionMiddlewareTest.php +++ b/tests/lib/AppFramework/Middleware/SessionMiddlewareTest.php @@ -15,21 +15,21 @@ namespace Test\AppFramework\Middleware; use OC\AppFramework\Http\Request; use OC\AppFramework\Middleware\SessionMiddleware; use OC\AppFramework\Utility\ControllerMethodReflector; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http\Response; class SessionMiddlewareTest extends \Test\TestCase { - /** - * @var ControllerMethodReflector - */ + /** @var ControllerMethodReflector */ private $reflector; - /** - * @var Request - */ + /** @var Request */ private $request; + /** @var Controller */ + private $controller; + protected function setUp() { parent::setUp(); @@ -39,6 +39,7 @@ class SessionMiddlewareTest extends \Test\TestCase { $this->getMockBuilder('\OCP\IConfig')->getMock() ); $this->reflector = new ControllerMethodReflector(); + $this->controller = $this->createMock(Controller::class); } /** @@ -49,7 +50,7 @@ class SessionMiddlewareTest extends \Test\TestCase { $this->reflector->reflect($this, __FUNCTION__); $middleware = new SessionMiddleware($this->request, $this->reflector, $session); - $middleware->beforeController($this, __FUNCTION__); + $middleware->beforeController($this->controller, __FUNCTION__); } /** @@ -60,7 +61,7 @@ class SessionMiddlewareTest extends \Test\TestCase { $this->reflector->reflect($this, __FUNCTION__); $middleware = new SessionMiddleware($this->request, $this->reflector, $session); - $middleware->afterController($this, __FUNCTION__, new Response()); + $middleware->afterController($this->controller, __FUNCTION__, new Response()); } public function testSessionClosedOnBeforeController() { @@ -68,7 +69,7 @@ class SessionMiddlewareTest extends \Test\TestCase { $this->reflector->reflect($this, __FUNCTION__); $middleware = new SessionMiddleware($this->request, $this->reflector, $session); - $middleware->beforeController($this, __FUNCTION__); + $middleware->beforeController($this->controller, __FUNCTION__); } public function testSessionNotClosedOnAfterController() { @@ -76,7 +77,7 @@ class SessionMiddlewareTest extends \Test\TestCase { $this->reflector->reflect($this, __FUNCTION__); $middleware = new SessionMiddleware($this->request, $this->reflector, $session); - $middleware->afterController($this, __FUNCTION__, new Response()); + $middleware->afterController($this->controller, __FUNCTION__, new Response()); } /** diff --git a/tests/lib/Files/ViewTest.php b/tests/lib/Files/ViewTest.php index f1e1ee7d417..2983e065ca8 100644 --- a/tests/lib/Files/ViewTest.php +++ b/tests/lib/Files/ViewTest.php @@ -18,6 +18,7 @@ use OC\Files\View; use OCP\Constants; use OCP\Files\Config\IMountProvider; use OCP\Files\FileInfo; +use OCP\Files\Storage\IStorage; use OCP\Lock\ILockingProvider; use OCP\Lock\LockedException; use OCP\Share; @@ -32,11 +33,11 @@ class TemporaryNoTouch extends Temporary { } class TemporaryNoCross extends Temporary { - public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = null) { + public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = null) { return Common::copyFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime); } - public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) { + public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) { return Common::moveFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath); } } diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php index a764350c406..01d594de7ae 100644 --- a/tests/lib/Share20/ManagerTest.php +++ b/tests/lib/Share20/ManagerTest.php @@ -23,6 +23,7 @@ namespace Test\Share20; use OC\Files\Mount\MoveableMount; use OC\HintException; use OC\Share20\DefaultShareProvider; +use OCP\Defaults; use OCP\Files\File; use OCP\Files\Folder; use OCP\Files\IRootFolder; @@ -31,8 +32,10 @@ use OCP\Files\Node; use OCP\Files\Storage; use OCP\IGroup; use OCP\IServerContainer; +use OCP\IURLGenerator; use OCP\IUser; use OCP\IUserManager; +use OCP\Mail\IMailer; use OCP\Share\Exceptions\ShareNotFound; use OCP\Share\IProviderFactory; use OCP\Share\IShare; @@ -85,6 +88,12 @@ class ManagerTest extends \Test\TestCase { protected $rootFolder; /** @var EventDispatcher | \PHPUnit_Framework_MockObject_MockObject */ protected $eventDispatcher; + /** @var IMailer|\PHPUnit_Framework_MockObject_MockObject */ + protected $mailer; + /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */ + protected $urlGenerator; + /** @var \OC_Defaults|\PHPUnit_Framework_MockObject_MockObject */ + protected $defaults; public function setUp() { @@ -97,6 +106,9 @@ class ManagerTest extends \Test\TestCase { $this->userManager = $this->createMock(IUserManager::class); $this->rootFolder = $this->createMock(IRootFolder::class); $this->eventDispatcher = $this->createMock(EventDispatcher::class); + $this->mailer = $this->createMock(IMailer::class); + $this->urlGenerator = $this->createMock(IURLGenerator::class); + $this->defaults = $this->createMock(\OC_Defaults::class); $this->l = $this->createMock(IL10N::class); $this->l->method('t') @@ -117,7 +129,10 @@ class ManagerTest extends \Test\TestCase { $this->factory, $this->userManager, $this->rootFolder, - $this->eventDispatcher + $this->eventDispatcher, + $this->mailer, + $this->urlGenerator, + $this->defaults ); $this->defaultProvider = $this->createMock(DefaultShareProvider::class); @@ -141,7 +156,10 @@ class ManagerTest extends \Test\TestCase { $this->factory, $this->userManager, $this->rootFolder, - $this->eventDispatcher + $this->eventDispatcher, + $this->mailer, + $this->urlGenerator, + $this->defaults ]); } @@ -2108,7 +2126,10 @@ class ManagerTest extends \Test\TestCase { $factory, $this->userManager, $this->rootFolder, - $this->eventDispatcher + $this->eventDispatcher, + $this->mailer, + $this->urlGenerator, + $this->defaults ); $share = $this->createMock(IShare::class); @@ -2147,7 +2168,10 @@ class ManagerTest extends \Test\TestCase { $factory, $this->userManager, $this->rootFolder, - $this->eventDispatcher + $this->eventDispatcher, + $this->mailer, + $this->urlGenerator, + $this->defaults ); $share = $this->createMock(IShare::class); @@ -2795,7 +2819,10 @@ class ManagerTest extends \Test\TestCase { $factory, $this->userManager, $this->rootFolder, - $this->eventDispatcher + $this->eventDispatcher, + $this->mailer, + $this->urlGenerator, + $this->defaults ); $this->assertSame($expected, $manager->shareProviderExists($shareType) @@ -2823,7 +2850,10 @@ class ManagerTest extends \Test\TestCase { $factory, $this->userManager, $this->rootFolder, - $this->eventDispatcher + $this->eventDispatcher, + $this->mailer, + $this->urlGenerator, + $this->defaults ); $factory->setProvider($this->defaultProvider); @@ -2882,7 +2912,10 @@ class ManagerTest extends \Test\TestCase { $factory, $this->userManager, $this->rootFolder, - $this->eventDispatcher + $this->eventDispatcher, + $this->mailer, + $this->urlGenerator, + $this->defaults ); $factory->setProvider($this->defaultProvider); diff --git a/tests/lib/Updater/VersionCheckTest.php b/tests/lib/Updater/VersionCheckTest.php index 79c0a88dbf6..6f6c6c1ad0c 100644 --- a/tests/lib/Updater/VersionCheckTest.php +++ b/tests/lib/Updater/VersionCheckTest.php @@ -59,8 +59,8 @@ class VersionCheckTest extends \Test\TestCase { $expectedResult = [ 'version' => '8.0.4.2', 'versionstring' => 'ownCloud 8.0.4', - 'url' => 'https://download.owncloud.org/community/owncloud-8.0.4.zip', - 'web' => 'http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html', + 'url' => 'https://download.example.org/community/owncloud-8.0.4.zip', + 'web' => 'http://doc.example.org/server/8.0/admin_manual/maintenance/upgrade.html', ]; $this->config @@ -81,8 +81,8 @@ class VersionCheckTest extends \Test\TestCase { $expectedResult = [ 'version' => '8.0.4.2', 'versionstring' => 'ownCloud 8.0.4', - 'url' => 'https://download.owncloud.org/community/owncloud-8.0.4.zip', - 'web' => 'http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html', + 'url' => 'https://download.example.org/community/owncloud-8.0.4.zip', + 'web' => 'http://doc.example.org/server/8.0/admin_manual/maintenance/upgrade.html', 'autoupdater' => '0', ]; @@ -119,8 +119,8 @@ class VersionCheckTest extends \Test\TestCase { <owncloud> <version>8.0.4.2</version> <versionstring>ownCloud 8.0.4</versionstring> - <url>https://download.owncloud.org/community/owncloud-8.0.4.zip</url> - <web>http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html</web> + <url>https://download.example.org/community/owncloud-8.0.4.zip</url> + <web>http://doc.example.org/server/8.0/admin_manual/maintenance/upgrade.html</web> <autoupdater>0</autoupdater> </owncloud>'; $this->updater diff --git a/tests/lib/Util/User/Dummy.php b/tests/lib/Util/User/Dummy.php index ea47f5d7d15..806a97bacba 100644 --- a/tests/lib/Util/User/Dummy.php +++ b/tests/lib/Util/User/Dummy.php @@ -95,7 +95,7 @@ class Dummy extends Backend implements \OCP\IUserBackend { * * @param string $uid The username * @param string $password The password - * @return string + * @return string|bool * * Check if the password is correct without logging in the user * returns the user id or false @@ -103,9 +103,9 @@ class Dummy extends Backend implements \OCP\IUserBackend { public function checkPassword($uid, $password) { if (isset($this->users[$uid]) && $this->users[$uid] === $password) { return $uid; - } else { - return false; } + + return false; } /** diff --git a/tests/lib/UtilTest.php b/tests/lib/UtilTest.php index 39a29742e4f..52d18571647 100644 --- a/tests/lib/UtilTest.php +++ b/tests/lib/UtilTest.php @@ -305,7 +305,7 @@ class UtilTest extends \Test\TestCase { * @group DB */ function testDefaultApps($defaultAppConfig, $expectedPath, $enabledApps) { - $oldDefaultApps = \OCP\Config::getSystemValue('defaultapp', ''); + $oldDefaultApps = \OC::$server->getConfig()->getSystemValue('defaultapp', ''); // CLI is doing messy stuff with the webroot, so need to work it around $oldWebRoot = \OC::$WEBROOT; \OC::$WEBROOT = ''; |