diff options
267 files changed, 1721 insertions, 651 deletions
diff --git a/.drone.yml b/.drone.yml index fc14ba7a366..11bc75092d5 100644 --- a/.drone.yml +++ b/.drone.yml @@ -13,7 +13,7 @@ pipeline: matrix: TESTS: jsunit checkers: - image: nextcloudci/php7.0:php7.0-7 + image: nextcloudci/php7.0:php7.0-13 commands: - ./autotest-checkers.sh when: @@ -154,7 +154,7 @@ pipeline: DB: NODB PHP: 5.6 nodb-php7.0: - image: nextcloudci/php7.0:php7.0-7 + image: nextcloudci/php7.0:php7.0-13 commands: - NOCOVERAGE=true TEST_SELECTION=NODB ./autotest.sh sqlite when: @@ -178,7 +178,7 @@ pipeline: DB: sqlite PHP: 5.6 sqlite-php7.0: - image: nextcloudci/php7.0:php7.0-7 + image: nextcloudci/php7.0:php7.0-13 commands: - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh sqlite when: @@ -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: @@ -489,7 +498,7 @@ pipeline: matrix: TESTS-ACCEPTANCE: login nodb-codecov: - image: nextcloudci/php7.0:php7.0-7 + image: nextcloudci/php7.0:php7.0-13 commands: - TEST_SELECTION=NODB ./autotest.sh sqlite - wget https://codecov.io/bash -O codecov.sh @@ -499,7 +508,7 @@ pipeline: matrix: TESTS: nodb-codecov db-codecov: - image: nextcloudci/php7.0:php7.0-7 + image: nextcloudci/php7.0:php7.0-13 commands: - TEST_SELECTION=QUICKDB ./autotest.sh sqlite - wget https://codecov.io/bash -O codecov.sh @@ -509,7 +518,7 @@ pipeline: matrix: TESTS: db-codecov object-store: - image: nextcloudci/php7.0:php7.0-7 + image: nextcloudci/php7.0:php7.0-13 commands: - TEST_SELECTION=PRIMARY-${OBJECT_STORE} ./autotest.sh sqlite - wget https://codecov.io/bash -O codecov.sh @@ -530,7 +539,7 @@ pipeline: matrix: TEST: memcache-memcached memcache-redis-cluster: - image: nextcloudci/php7.0:php7.0-7 + image: nextcloudci/php7.0:php7.0-13 commands: - sleep 10 - ./autotest.sh sqlite tests/lib/Memcache/RedisTest.php @@ -547,6 +556,36 @@ matrix: ENABLE_REDIS: true - TESTS: db-codecov ENABLE_REDIS: true + - DB: NODB + PHP: 5.6 + ENABLE_REDIS: true + - DB: NODB + PHP: 7.0 + ENABLE_REDIS: true + - DB: NODB + PHP: 7.1 + ENABLE_REDIS: true + - DB: sqlite + PHP: 5.6 + ENABLE_REDIS: true + - DB: sqlite + PHP: 7.0 + ENABLE_REDIS: true + - DB: sqlite + PHP: 7.1 + ENABLE_REDIS: true + - DB: mysql + PHP: 5.6 + ENABLE_REDIS: true + - DB: postgres + PHP: 5.6 + ENABLE_REDIS: true + - DB: postgres + PHP: 7.0 + ENABLE_REDIS: true + - DB: mysqlmb4 + PHP: 5.6 + ENABLE_REDIS: true - TESTS: integration-capabilities_features - TESTS: integration-federation_features - TESTS: integration-maintenance-mode @@ -601,33 +640,6 @@ matrix: # ENABLE_REDIS_CLUSTER: true - TESTS: sqlite-php7.0-webdav-apache ENABLE_REDIS: true - - DB: NODB - PHP: 5.6 - ENABLE_REDIS: true - - DB: NODB - PHP: 7.0 - ENABLE_REDIS: true - - DB: NODB - PHP: 7.1 - ENABLE_REDIS: true - - DB: sqlite - PHP: 5.6 - ENABLE_REDIS: true - - DB: sqlite - PHP: 7.0 - ENABLE_REDIS: true - - DB: sqlite - PHP: 7.1 - ENABLE_REDIS: true - - DB: mysql - PHP: 5.6 - ENABLE_REDIS: true - - DB: postgres - PHP: 5.6 - ENABLE_REDIS: true - - DB: mysqlmb4 - PHP: 5.6 - ENABLE_REDIS: true services: cache: 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/el.js b/apps/dav/l10n/el.js index 28a4bb0a1f6..6178ce44f32 100644 --- a/apps/dav/l10n/el.js +++ b/apps/dav/l10n/el.js @@ -1,11 +1,50 @@ OC.L10N.register( "dav", { + "Calendar" : "Ημερολόγιο", + "Todos" : "Εργασίες προς εκτέλεση", + "{actor} created calendar {calendar}" : "{actor} δημιουργήθηκε το ημερολόγιο {calendar}", + "You created calendar {calendar}" : "Δημιουργήσατε ημερολόγιο {ημερολόγιο}", + "{actor} deleted calendar {calendar}" : "{actor} διέγραψε το ημερολόγιο {calendar}", + "You deleted calendar {calendar}" : "Διαγράψατε το ημερολόγιο {calendar}", + "{actor} updated calendar {calendar}" : "{actor} ενημέρωσε το ημερολόγιο {calendar}", + "You updated calendar {calendar}" : "Έχετε ενημερώσει το ημερολόγιο {calendar}", + "{actor} shared calendar {calendar} with you" : "{actor} διαμοιράστηκε το ημερολόγιο {calendar} με εσάς", + "You shared calendar {calendar} with {user}" : "Διαμοιραστήκατε το ημερολογίου {calendar} με {user}", + "{actor} shared calendar {calendar} with {user}" : "{actor} διαμοίρασε το ημερολόγιο {calendar} με {user}", + "{actor} unshared calendar {calendar} from you" : "Ο {actor} σταμάτησε τον διαμοιρασμό του ημερολογίου {calendar} από εσάς", + "You unshared calendar {calendar} from {user}" : "Σταματήσατε τον διαμοιρασμό ημερολογίου {calendar} από {user}", + "{actor} unshared calendar {calendar} from {user}" : "Ο {actor} σταμάτησε τον διαμοιρασμό του ημερολογίου {calendar} από τον χρήστη {user}", + "{actor} unshared calendar {calendar} from themselves" : "{actor} σταμάτησε το διαμοιρασμένο ημερολόγιο {calendar} από τον εαυτό τους", + "You shared calendar {calendar} with group {group}" : "Διαμοιραστείκατε ένα ημερολόγιο {calendar} με την ομάδα {group}", + "{actor} shared calendar {calendar} with group {group}" : "Ο {actor} διαμοιράστηκε το ημερολόγιο {calendar} με την ομάδα {group}", + "You unshared calendar {calendar} from group {group}" : "Σταματήσατε τον διαμοιρασμό του ημερολογίου {calendar} από την ομάδα {group}", + "{actor} unshared calendar {calendar} from group {group}" : "{actor} σταμάτησε το διαμοιρασμένο ημερολόγιο {calendar} από την ομάδα {group}", + "{actor} created event {event} in calendar {calendar}" : "Ο {actor} δημιούργησε το γεγονός {event} στο ημερολόγιο {calendar}", + "You created event {event} in calendar {calendar}" : "Δημιουργήσατε το γεγονός {event} στο ημερολόγιο {calendar}", + "{actor} deleted event {event} from calendar {calendar}" : "Ο {actor} διέγραψε το γεγονός {event} από το ημερολόγιο {calendar}", + "You deleted event {event} from calendar {calendar}" : "Διαγράψατε το συμβάν {event} από το ημερολόγιο {calendar}", + "{actor} updated event {event} in calendar {calendar}" : "Ο {actor} ενημέρωσε το γεγονός {event} στο ημερολόγιο {calendar}", + "You updated event {event} in calendar {calendar}" : "Ενημερώσατε το συμβάν {event} στο ημερολόγιο {calendar}", + "{actor} created todo {todo} in list {calendar}" : "{actor} δημιούργησε την εκκρεμότητα {todo} στη λίστα {ημερολόγιο}", + "You created todo {todo} in list {calendar}" : "Δημιουργήσατε την εκκρεμότητα {todo} στη λίστα {ημερολόγιο}", + "{actor} deleted todo {todo} from list {calendar}" : "Ο {actor} διέγραψε την εκκρεμότητα {todo} από τη λίστα {ημερολόγιο}", + "You deleted todo {todo} from list {calendar}" : "Διέγραψες την εκκρεμότητα {todo} από τη λίστα {calendar}", + "{actor} updated todo {todo} in list {calendar}" : "{actor} ενημέρωσε την εκκρεμότητα {todo} στη λίστα {calendar}", + "You updated todo {todo} in list {calendar}" : "Ενημέρωσες την εκκρεμότητα {todo} στη λίστα {calendar}", + "{actor} solved todo {todo} in list {calendar}" : "{actor} επίλυσε την εκκρεμότητα {todo} στην λίστα {calendar}", + "You solved todo {todo} in list {calendar}" : "Επίλυσες την εκκρεμότητα {todo} στην λίστα {calendar}", + "{actor} reopened todo {todo} in list {calendar}" : "{actor} άνοιξε ξανά την εκκρεμότητα {todo} στην λίστα {calendar}", + "You reopened todo {todo} in list {calendar}" : "Άνοιξες ξανά την εκκρεμότητα {todo} στην λίστα {calendar}", + "A <strong>calendar</strong> was modified" : "Τροποποιήθηκε ένα <strong>ημερολόγιο</strong> ", + "A calendar <strong>event</strong> was modified" : "Τροποποιήθηκε ένα <strong>γεγονός</strong> του ημερολογίου", + "A calendar <strong>todo</strong> was modified" : "Ενός ημερολογίου η <strong>εκκρεμότητα</strong> τροποποιήθηκε", "Contact birthdays" : "Γενέθλια επαφών", "Personal" : "Προσωπικά", "Contacts" : "Επαφές", + "WebDAV" : "WebDAV", "Technical details" : "Τεχνικές λεπτομέρειες", "Remote Address: %s" : "Απομακρυσμένη Διεύθυνση: %s", - "Request ID: %s" : "Αίτημα ID: %s" + "Request ID: %s" : "ID Αιτήματος: %s" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dav/l10n/el.json b/apps/dav/l10n/el.json index c9a9111917a..21c2199a0ab 100644 --- a/apps/dav/l10n/el.json +++ b/apps/dav/l10n/el.json @@ -1,9 +1,48 @@ { "translations": { + "Calendar" : "Ημερολόγιο", + "Todos" : "Εργασίες προς εκτέλεση", + "{actor} created calendar {calendar}" : "{actor} δημιουργήθηκε το ημερολόγιο {calendar}", + "You created calendar {calendar}" : "Δημιουργήσατε ημερολόγιο {ημερολόγιο}", + "{actor} deleted calendar {calendar}" : "{actor} διέγραψε το ημερολόγιο {calendar}", + "You deleted calendar {calendar}" : "Διαγράψατε το ημερολόγιο {calendar}", + "{actor} updated calendar {calendar}" : "{actor} ενημέρωσε το ημερολόγιο {calendar}", + "You updated calendar {calendar}" : "Έχετε ενημερώσει το ημερολόγιο {calendar}", + "{actor} shared calendar {calendar} with you" : "{actor} διαμοιράστηκε το ημερολόγιο {calendar} με εσάς", + "You shared calendar {calendar} with {user}" : "Διαμοιραστήκατε το ημερολογίου {calendar} με {user}", + "{actor} shared calendar {calendar} with {user}" : "{actor} διαμοίρασε το ημερολόγιο {calendar} με {user}", + "{actor} unshared calendar {calendar} from you" : "Ο {actor} σταμάτησε τον διαμοιρασμό του ημερολογίου {calendar} από εσάς", + "You unshared calendar {calendar} from {user}" : "Σταματήσατε τον διαμοιρασμό ημερολογίου {calendar} από {user}", + "{actor} unshared calendar {calendar} from {user}" : "Ο {actor} σταμάτησε τον διαμοιρασμό του ημερολογίου {calendar} από τον χρήστη {user}", + "{actor} unshared calendar {calendar} from themselves" : "{actor} σταμάτησε το διαμοιρασμένο ημερολόγιο {calendar} από τον εαυτό τους", + "You shared calendar {calendar} with group {group}" : "Διαμοιραστείκατε ένα ημερολόγιο {calendar} με την ομάδα {group}", + "{actor} shared calendar {calendar} with group {group}" : "Ο {actor} διαμοιράστηκε το ημερολόγιο {calendar} με την ομάδα {group}", + "You unshared calendar {calendar} from group {group}" : "Σταματήσατε τον διαμοιρασμό του ημερολογίου {calendar} από την ομάδα {group}", + "{actor} unshared calendar {calendar} from group {group}" : "{actor} σταμάτησε το διαμοιρασμένο ημερολόγιο {calendar} από την ομάδα {group}", + "{actor} created event {event} in calendar {calendar}" : "Ο {actor} δημιούργησε το γεγονός {event} στο ημερολόγιο {calendar}", + "You created event {event} in calendar {calendar}" : "Δημιουργήσατε το γεγονός {event} στο ημερολόγιο {calendar}", + "{actor} deleted event {event} from calendar {calendar}" : "Ο {actor} διέγραψε το γεγονός {event} από το ημερολόγιο {calendar}", + "You deleted event {event} from calendar {calendar}" : "Διαγράψατε το συμβάν {event} από το ημερολόγιο {calendar}", + "{actor} updated event {event} in calendar {calendar}" : "Ο {actor} ενημέρωσε το γεγονός {event} στο ημερολόγιο {calendar}", + "You updated event {event} in calendar {calendar}" : "Ενημερώσατε το συμβάν {event} στο ημερολόγιο {calendar}", + "{actor} created todo {todo} in list {calendar}" : "{actor} δημιούργησε την εκκρεμότητα {todo} στη λίστα {ημερολόγιο}", + "You created todo {todo} in list {calendar}" : "Δημιουργήσατε την εκκρεμότητα {todo} στη λίστα {ημερολόγιο}", + "{actor} deleted todo {todo} from list {calendar}" : "Ο {actor} διέγραψε την εκκρεμότητα {todo} από τη λίστα {ημερολόγιο}", + "You deleted todo {todo} from list {calendar}" : "Διέγραψες την εκκρεμότητα {todo} από τη λίστα {calendar}", + "{actor} updated todo {todo} in list {calendar}" : "{actor} ενημέρωσε την εκκρεμότητα {todo} στη λίστα {calendar}", + "You updated todo {todo} in list {calendar}" : "Ενημέρωσες την εκκρεμότητα {todo} στη λίστα {calendar}", + "{actor} solved todo {todo} in list {calendar}" : "{actor} επίλυσε την εκκρεμότητα {todo} στην λίστα {calendar}", + "You solved todo {todo} in list {calendar}" : "Επίλυσες την εκκρεμότητα {todo} στην λίστα {calendar}", + "{actor} reopened todo {todo} in list {calendar}" : "{actor} άνοιξε ξανά την εκκρεμότητα {todo} στην λίστα {calendar}", + "You reopened todo {todo} in list {calendar}" : "Άνοιξες ξανά την εκκρεμότητα {todo} στην λίστα {calendar}", + "A <strong>calendar</strong> was modified" : "Τροποποιήθηκε ένα <strong>ημερολόγιο</strong> ", + "A calendar <strong>event</strong> was modified" : "Τροποποιήθηκε ένα <strong>γεγονός</strong> του ημερολογίου", + "A calendar <strong>todo</strong> was modified" : "Ενός ημερολογίου η <strong>εκκρεμότητα</strong> τροποποιήθηκε", "Contact birthdays" : "Γενέθλια επαφών", "Personal" : "Προσωπικά", "Contacts" : "Επαφές", + "WebDAV" : "WebDAV", "Technical details" : "Τεχνικές λεπτομέρειες", "Remote Address: %s" : "Απομακρυσμένη Διεύθυνση: %s", - "Request ID: %s" : "Αίτημα ID: %s" + "Request ID: %s" : "ID Αιτήματος: %s" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file 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..b85415e28fc 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']) { @@ -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/CardDAV/CardDavBackend.php b/apps/dav/lib/CardDAV/CardDavBackend.php index 45a695c1869..9dccffc022b 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) . ')'; @@ -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..1a97d896469 100644 --- a/apps/dav/lib/Connector/Sabre/Directory.php +++ b/apps/dav/lib/Connector/Sabre/Directory.php @@ -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..63f10034ed6 100644 --- a/apps/dav/lib/Connector/Sabre/File.php +++ b/apps/dav/lib/Connector/Sabre/File.php @@ -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)) { 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..d298d6be842 100644 --- a/apps/dav/lib/Connector/Sabre/ObjectTree.php +++ b/apps/dav/lib/Connector/Sabre/ObjectTree.php @@ -80,7 +80,7 @@ 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); + 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/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/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/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/l10n/zh_TW.js b/apps/federatedfilesharing/l10n/zh_TW.js index f781d1e5b6f..82ccc884ca3 100644 --- a/apps/federatedfilesharing/l10n/zh_TW.js +++ b/apps/federatedfilesharing/l10n/zh_TW.js @@ -7,6 +7,7 @@ OC.L10N.register( "Remote share password" : "遠端分享密碼", "Cancel" : "取消", "Add remote share" : "加入遠端分享", + "Copy" : "複製", "Copied!" : "已複製", "Not supported!" : "不支援!", "Press ⌘-C to copy." : "按下 ⌘-C 來複製", @@ -15,24 +16,31 @@ OC.L10N.register( "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 Share request was successful, you will receive a invitation. Check your notifications." : "聯盟式分享請求成功,您講話收到邀請,請檢查您的通知匣", "The mountpoint name contains invalid characters." : "掛載點名稱含有不合法的字元", + "Not allowed to create a federated share with the owner." : "不允許與所有者建立聯盟式分享", + "Invalid or untrusted SSL certificate" : "無效或是不信任的 SSL憑證", + "Could not authenticate to remote share, password might be wrong" : "無法驗證遠端分享,可能是密碼錯誤", + "Storage not valid" : "儲存空間無效", + "Federated share added" : "聯盟分享已新增", + "Couldn't add remote share" : "無法加入遠端分享", "Sharing %s failed, because this item is already shared with %s" : "分享 %s 失敗,因為此項目目前已經與 %s 分享", "Not allowed to create a federated share with the same user" : "不允許與同一個使用者建立聯盟式分享", - "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "分享%s失敗,找不到%s,或許目前無法連線到該伺服器", + "File is already shared with %s" : "檔案已和 %s 分享", + "Could not find share" : "找不到分享", "Accept" : "接受", "Decline" : "拒絕", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "可透過我的 #Nextcloud 聯盟雲端 ID,與我分享,請看 %s", "Share with me through my #Nextcloud Federated Cloud ID" : "可透過我的 #Nextcloud 聯盟雲端 ID,與我分享", + "Sharing" : "分享", "Federated Cloud Sharing" : "聯盟式雲端分享", "Open documentation" : "開啟說明文件", "Allow users on this server to send shares to other servers" : "允許這台伺服器上的使用者發送分享給其他伺服器", "Allow users on this server to receive shares from other servers" : "允許這台伺服器上的使用者發送接收來自其他伺服器的分享", "Federated Cloud" : "聯盟式雲端", "Your Federated Cloud ID:" : "您的雲端聯盟 ID:", - "Share it:" : "分享它:", "Add to your website" : "新增至您的網站", "Share with me via Nextcloud" : "透過 Nextcloud 與我分享", - "HTML Code:" : "HTML Code:" + "HTML Code:" : "HTML Code:", + "Share it:" : "分享它:" }, "nplurals=1; plural=0;"); diff --git a/apps/federatedfilesharing/l10n/zh_TW.json b/apps/federatedfilesharing/l10n/zh_TW.json index 860bcc64913..77bae400756 100644 --- a/apps/federatedfilesharing/l10n/zh_TW.json +++ b/apps/federatedfilesharing/l10n/zh_TW.json @@ -5,6 +5,7 @@ "Remote share password" : "遠端分享密碼", "Cancel" : "取消", "Add remote share" : "加入遠端分享", + "Copy" : "複製", "Copied!" : "已複製", "Not supported!" : "不支援!", "Press ⌘-C to copy." : "按下 ⌘-C 來複製", @@ -13,24 +14,31 @@ "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 Share request was successful, you will receive a invitation. Check your notifications." : "聯盟式分享請求成功,您講話收到邀請,請檢查您的通知匣", "The mountpoint name contains invalid characters." : "掛載點名稱含有不合法的字元", + "Not allowed to create a federated share with the owner." : "不允許與所有者建立聯盟式分享", + "Invalid or untrusted SSL certificate" : "無效或是不信任的 SSL憑證", + "Could not authenticate to remote share, password might be wrong" : "無法驗證遠端分享,可能是密碼錯誤", + "Storage not valid" : "儲存空間無效", + "Federated share added" : "聯盟分享已新增", + "Couldn't add remote share" : "無法加入遠端分享", "Sharing %s failed, because this item is already shared with %s" : "分享 %s 失敗,因為此項目目前已經與 %s 分享", "Not allowed to create a federated share with the same user" : "不允許與同一個使用者建立聯盟式分享", - "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "分享%s失敗,找不到%s,或許目前無法連線到該伺服器", + "File is already shared with %s" : "檔案已和 %s 分享", + "Could not find share" : "找不到分享", "Accept" : "接受", "Decline" : "拒絕", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "可透過我的 #Nextcloud 聯盟雲端 ID,與我分享,請看 %s", "Share with me through my #Nextcloud Federated Cloud ID" : "可透過我的 #Nextcloud 聯盟雲端 ID,與我分享", + "Sharing" : "分享", "Federated Cloud Sharing" : "聯盟式雲端分享", "Open documentation" : "開啟說明文件", "Allow users on this server to send shares to other servers" : "允許這台伺服器上的使用者發送分享給其他伺服器", "Allow users on this server to receive shares from other servers" : "允許這台伺服器上的使用者發送接收來自其他伺服器的分享", "Federated Cloud" : "聯盟式雲端", "Your Federated Cloud ID:" : "您的雲端聯盟 ID:", - "Share it:" : "分享它:", "Add to your website" : "新增至您的網站", "Share with me via Nextcloud" : "透過 Nextcloud 與我分享", - "HTML Code:" : "HTML Code:" + "HTML Code:" : "HTML Code:", + "Share it:" : "分享它:" },"pluralForm" :"nplurals=1; plural=0;" }
\ 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/l10n/de.js b/apps/federation/l10n/de.js index 2b476b94c95..1a2511578e4 100644 --- a/apps/federation/l10n/de.js +++ b/apps/federation/l10n/de.js @@ -8,7 +8,7 @@ OC.L10N.register( "Federation" : "Federation", "Trusted servers" : "Vertrauenswürdige Server", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation erlaubt es Dir, Dich mit anderen vertrauenswürdigen Servern zu verbinden, um das Benutzerverzeichnis auszutauschen. Dies wird zum Beispiel für die automatische Vervollständigung externer Benutzernamen beim Federated-Sharing verwendet.", - "Add server automatically once a federated share was created successfully" : "Einen mit ownCloud Federation verbundenen Server automatisch hinzufügen, sobald die Verbindung einmal erfolgreich erstellt wurde", + "Add server automatically once a federated share was created successfully" : "Server automatisch hinzufügen, sobald eine Federation-Freigabe erfolgreich erstellt wurde", "+ Add trusted server" : "+ Vertrauenswürdigen Server hinzufügen", "Trusted server" : "Vertrauenswürdiger Server", "Add" : "Hinzufügen" diff --git a/apps/federation/l10n/de.json b/apps/federation/l10n/de.json index 2c37fc10fa2..fe99a8dfec6 100644 --- a/apps/federation/l10n/de.json +++ b/apps/federation/l10n/de.json @@ -6,7 +6,7 @@ "Federation" : "Federation", "Trusted servers" : "Vertrauenswürdige Server", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation erlaubt es Dir, Dich mit anderen vertrauenswürdigen Servern zu verbinden, um das Benutzerverzeichnis auszutauschen. Dies wird zum Beispiel für die automatische Vervollständigung externer Benutzernamen beim Federated-Sharing verwendet.", - "Add server automatically once a federated share was created successfully" : "Einen mit ownCloud Federation verbundenen Server automatisch hinzufügen, sobald die Verbindung einmal erfolgreich erstellt wurde", + "Add server automatically once a federated share was created successfully" : "Server automatisch hinzufügen, sobald eine Federation-Freigabe erfolgreich erstellt wurde", "+ Add trusted server" : "+ Vertrauenswürdigen Server hinzufügen", "Trusted server" : "Vertrauenswürdiger Server", "Add" : "Hinzufügen" diff --git a/apps/federation/l10n/de_DE.js b/apps/federation/l10n/de_DE.js index 1a8bef05ae9..c55829d1e6a 100644 --- a/apps/federation/l10n/de_DE.js +++ b/apps/federation/l10n/de_DE.js @@ -8,7 +8,7 @@ OC.L10N.register( "Federation" : "Federation", "Trusted servers" : "Vertrauenswürdige Server", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation erlaubt es Ihnen, sich mit anderen vertrauenswürdigen Servern zu verbinden, um das Benutzerverzeichnis auszutauschen. Dies wird zum Beispiel für die automatische Vervollständigung externer Benutzernamen beim Federated-Sharing verwendet.", - "Add server automatically once a federated share was created successfully" : "Server automatisch hinzufügen sobald eine federated Freigabe erstellt wurde", + "Add server automatically once a federated share was created successfully" : "Server automatisch hinzufügen, sobald eine Federation-Freigabe erfolgreich erstellt wurde", "+ Add trusted server" : "+ Vertrauenswürdigen Server hinzufügen", "Trusted server" : "Vertrauenswürdiger Server", "Add" : "Hinzufügen" diff --git a/apps/federation/l10n/de_DE.json b/apps/federation/l10n/de_DE.json index c9b54c5f893..2e82f93b65a 100644 --- a/apps/federation/l10n/de_DE.json +++ b/apps/federation/l10n/de_DE.json @@ -6,7 +6,7 @@ "Federation" : "Federation", "Trusted servers" : "Vertrauenswürdige Server", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation erlaubt es Ihnen, sich mit anderen vertrauenswürdigen Servern zu verbinden, um das Benutzerverzeichnis auszutauschen. Dies wird zum Beispiel für die automatische Vervollständigung externer Benutzernamen beim Federated-Sharing verwendet.", - "Add server automatically once a federated share was created successfully" : "Server automatisch hinzufügen sobald eine federated Freigabe erstellt wurde", + "Add server automatically once a federated share was created successfully" : "Server automatisch hinzufügen, sobald eine Federation-Freigabe erfolgreich erstellt wurde", "+ Add trusted server" : "+ Vertrauenswürdigen Server hinzufügen", "Trusted server" : "Vertrauenswürdiger Server", "Add" : "Hinzufügen" diff --git a/apps/federation/lib/BackgroundJob/GetSharedSecret.php b/apps/federation/lib/BackgroundJob/GetSharedSecret.php index b1367be9524..8a8d475da61 100644 --- a/apps/federation/lib/BackgroundJob/GetSharedSecret.php +++ b/apps/federation/lib/BackgroundJob/GetSharedSecret.php @@ -121,7 +121,7 @@ class GetSharedSecret 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']; diff --git a/apps/federation/lib/BackgroundJob/RequestSharedSecret.php b/apps/federation/lib/BackgroundJob/RequestSharedSecret.php index 9123e37300d..77d0234ef74 100644 --- a/apps/federation/lib/BackgroundJob/RequestSharedSecret.php +++ b/apps/federation/lib/BackgroundJob/RequestSharedSecret.php @@ -120,7 +120,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']; diff --git a/apps/files/l10n/eu.js b/apps/files/l10n/eu.js index e9dcfe2907e..3ee50228190 100644 --- a/apps/files/l10n/eu.js +++ b/apps/files/l10n/eu.js @@ -102,6 +102,7 @@ OC.L10N.register( "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>", "A new file or folder has been <strong>created</strong>" : "Fitxategi edo karpeta berri bat <strong>sortu da</strong>", "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>", + "Unlimited" : "Mugarik gabe", "Upload (max. %s)" : "Igo (max. %s)", "File handling" : "Fitxategien kudeaketa", "Maximum upload size" : "Igo daitekeen gehienezko tamaina", diff --git a/apps/files/l10n/eu.json b/apps/files/l10n/eu.json index f95d391dad8..9bc05236e1e 100644 --- a/apps/files/l10n/eu.json +++ b/apps/files/l10n/eu.json @@ -100,6 +100,7 @@ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>", "A new file or folder has been <strong>created</strong>" : "Fitxategi edo karpeta berri bat <strong>sortu da</strong>", "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>", + "Unlimited" : "Mugarik gabe", "Upload (max. %s)" : "Igo (max. %s)", "File handling" : "Fitxategien kudeaketa", "Maximum upload size" : "Igo daitekeen gehienezko tamaina", 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_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..96afc86ba2c 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' ); 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/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_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/l10n/zh_TW.js b/apps/files_sharing/l10n/zh_TW.js index eacf48d6ee8..84db038f355 100644 --- a/apps/files_sharing/l10n/zh_TW.js +++ b/apps/files_sharing/l10n/zh_TW.js @@ -18,38 +18,52 @@ OC.L10N.register( "No expiration date set" : "未指定到期日", "Shared by" : "分享自", "Sharing" : "分享", - "A file or folder has been <strong>shared</strong>" : "檔案或目錄已被 <strong>分享</strong>", - "A file or folder was shared from <strong>another server</strong>" : "檔案或目錄已被 <strong>其他伺服器</strong> 分享", - "You received a new remote share %2$s from %1$s" : "您收到了一個遠端分享 %2$s 來自於 %1$s", - "You received a new remote share from %s" : "您收到了一個遠端分享來自於 %s", - "%1$s accepted remote share %2$s" : "%1$s 接受了遠端分享 %2$s", - "%1$s declined remote share %2$s" : "%1$s 拒絕了遠端分享 %2$s", - "%1$s unshared %2$s from you" : "%1$s 取消與你分享 %2$s", - "Public shared folder %1$s was downloaded" : "共享資料夾 %1$s 已被下載", - "Public shared file %1$s was downloaded" : "共享檔案 %1$s 已被下載", - "You shared %1$s with %2$s" : "您與 %2$s 分享了 %1$s", - "%2$s shared %1$s with %3$s" : "%2$s 與 %3$s 分享了 %1$s", - "You shared %1$s with group %2$s" : "您與 %2$s 群組分享了 %1$s", - "%2$s shared %1$s with group %3$s" : "%2$s 與群組 %3$s 分享了 %1$s", - "%2$s shared %1$s via link" : "%2$s 透過連結分享了 %1$s ", - "You shared %1$s via link" : "您以連結分享了 %1$s", - "You removed the public link for %1$s" : "您刪除了 %1$s 的公開分享連結", - "%2$s removed the public link for %1$s" : "%2$s 刪除了 %1$s 的公開分享連結", - "Your public link for %1$s expired" : "您在 %1$s 的公開連結失效了", - "The public link of %2$s for %1$s expired" : "%2$s 的公開連結(給 %1$s )失效了", - "%2$s shared %1$s with you" : "%2$s 與您分享了 %1$s", + "File shares" : "檔案分享", "Downloaded via public link" : "透過公用連結下載", - "Shared with %2$s" : "與 %2$s 分享", - "Shared with %3$s by %2$s" : "透過 %2$s 與 %3$s 分享", - "Shared with group %2$s" : "與群組 %2$s 分享", - "Shared with group %3$s by %2$s" : "透過 %2$s 與群組 %3$s 分享", - "Shared via link by %2$s" : "%2$s 透過連結分享", - "Shared via public link" : "透過公用連結分享", + "Downloaded by {email}" : "{email} 已下載", + "{file} downloaded via public link" : "{file} 已透過公用連結下載", + "{email} downloaded {file}" : "{email} 已下載 {file}", + "Shared with group {group}" : "與群組 {group} 分享", + "Removed share for group {group}" : "移除與群組 {group} 分享", + "{actor} shared with group {group}" : "{actor} 分享給群組 {group}", + "{actor} removed share for group {group}" : "{actor} 移除了與群組 {group} 的分享", + "You shared {file} with group {group}" : "你分享了 {file} 給群組 {group}", + "You removed group {group} from {file}" : "你將群組 {group} 從 {file} 移除", + "{actor} shared {file} with group {group}" : "{actor} 分享 {file} 給群組 {group}", + "{actor} removed group {group} from {file}" : "{actor} 將群組 {group} 從 {file} 移除", + "Shared as public link" : "藉由公用連結分享", "Removed public link" : "刪除公開連結", - "%2$s removed public link" : "%2$s 刪除了公開連結", "Public link expired" : "公開連結已過期", - "Public link of %2$s expired" : "%2$s 的公開連結過期了", - "Shared by %2$s" : "由 %2$s 分享", + "{actor} shared as public link" : "{actor} 透過公開連結分享", + "{actor} removed public link" : "{actor} 移除公開連結分享", + "Public link of {actor} expired" : "{actor} 的公開連結過期了", + "You shared {file} as public link" : "你藉由公用連結分享了 {file}", + "You removed public link for {file}" : "您刪除了 {file} 的公開分享連結", + "Public link expired for {file}" : "{file} 的公開連結已過期", + "{actor} shared {file} as public link" : "{actor} 透過公開連結分享 {file}", + "{actor} removed public link for {file}" : "{actor} 移除 {file} 的公開連結分享", + "Public link of {actor} for {file} expired" : "{actor} 公開分享 {file} 的連結過期了", + "{user} accepted the remote share" : "{user} 接受了遠端分享", + "{user} declined the remote share" : "{user} 拒絕了遠端分享", + "You received a new remote share {file} from {user}" : "您收到了一個遠端分享 {file} 來自於 {user}", + "{user} accepted the remote share of {file}" : "{user} 接受了檔案 {file} 的遠端分享", + "{user} declined the remote share of {file}" : "{user} 拒絕了檔案 {file} 的遠端分享", + "{user} unshared {file} from you" : "{user} 取消與你分享檔案 {file}", + "Shared with {user}" : "與 {user} 分享", + "Removed share for {user}" : "移除對 {user} 的分享", + "{actor} shared with {user}" : "{actor} 分享給 {user}", + "{actor} removed share for {user}" : "{actor} 移除了對 {user} 的分享", + "Shared by {actor}" : "由 {actor} 分享", + "{actor} removed share" : "{actor} 移除了分享", + "You shared {file} with {user}" : "你與 {user} 分享了 {file}", + "You removed {user} from {file}" : "你將 {user} 從 {file} 移除", + "{actor} shared {file} with {user}" : "{actor} 分享了 {file} 給 {user}", + "{actor} removed {user} from {file}" : "{actor} 移除 {user} 從 {file}", + "{actor} shared {file} with you" : "{actor} 與你分享了 {file}", + "{actor} removed you from {file}" : "{actor} 將你從 {file} 移除", + "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "email或公開連結分享的檔案與資料夾已被 <strong>下載</strong>", + "A file or folder was shared from <strong>another server</strong>" : "檔案或目錄已被 <strong>其他伺服器</strong> 分享", + "A file or folder has been <strong>shared</strong>" : "檔案或目錄已被 <strong>分享</strong>", "Wrong share ID, share doesn't exist" : "錯誤的分享 ID ,分享不存在", "could not delete share" : "無法刪除分享", "Could not delete share" : "無法刪除分享", @@ -65,13 +79,17 @@ OC.L10N.register( "Public upload is only possible for publicly shared folders" : "只有公開分享的資料夾可以接受公開上傳", "Invalid date, date format must be YYYY-MM-DD" : "無效的日期,需為 YYYY-MM-DD 格式", "Sharing %s failed because the back end does not allow shares from type %s" : "分享 %s 失敗,因為後端不允許來自 %s 類型的分享", + "You cannot share to a Circle if the app is not enabled" : "當應用未被啟用,你無法分享到circle。", + "Please specify a valid circle" : "請指定一個有效的circle", "Unknown share type" : "未知的分享類型", "Not a directory" : "這不是一個資料夾", "Could not lock path" : "無法鎖定路徑", "Wrong or no update parameter given" : "更新參數不正確或未提供", "Can't change permissions for public share links" : "無法由公開分享的連結變更權限", "Cannot increase permissions" : "無法增加權限", + "%s is publicly shared" : "%s 是被公然分享的", "Share API is disabled" : "分享 API 已停用", + "File sharing" : "檔案分享", "This share is password-protected" : "這個分享有密碼保護", "The password is wrong. Try again." : "請檢查您的密碼並再試一次", "Password" : "密碼", @@ -85,6 +103,7 @@ OC.L10N.register( "the link expired" : "連結過期", "sharing is disabled" : "分享功能已停用", "For more info, please ask the person who sent this link." : "請詢問告訴您此連結的人以瞭解更多", + "shared by %s" : "分享自 %s", "Add to your Nextcloud" : "加入到您的 Nextcloud", "Download" : "下載", "Download %s" : "下載 %s", @@ -92,35 +111,6 @@ OC.L10N.register( "Upload files to %s" : "上傳檔案到 %s", "Select or drop files" : "選擇或拖曳檔案至此", "Uploading files…" : "上傳檔案中…", - "Uploaded files:" : "已上傳的檔案:", - "A public shared file or folder was <strong>downloaded</strong>" : "共享檔案或目錄已被 <strong>下載</strong>", - "Shares" : "分享", - "Server to server sharing is not enabled on this server" : "伺服器對伺服器共享在這台伺服器上面並未啟用", - "The mountpoint name contains invalid characters." : "掛載點名稱含有不合法的字元", - "Not allowed to create a federated share with the same user server" : "不允許在同一個使用者伺服器建立分享聯盟", - "Invalid or untrusted SSL certificate" : "無效或是不信任的 SSL憑證", - "Could not authenticate to remote share, password might be wrong" : "無法驗證遠端分享,可能是密碼錯誤", - "Storage not valid" : "儲存空間無效", - "Couldn't add remote share" : "無法加入遠端分享", - "Federated sharing" : "分享聯盟", - "Do you want to add the remote share {name} from {owner}@{remote}?" : "是否要加入來自 {owner}@{remote} 的遠端分享 {name} ?", - "Remote share" : "遠端分享", - "Remote share password" : "遠端分享密碼", - "Cancel" : "取消", - "Add remote share" : "加入遠端分享", - "No ownCloud installation (7 or higher) found at {remote}" : "沒有在 {remote} 找到 ownCloud (版本 7 以上)", - "Invalid ownCloud url" : "無效的 ownCloud URL", - "Accept" : "接受", - "Decline" : "拒絕", - "Federated Cloud Sharing" : "雲端分享聯盟", - "Open documentation" : "開啟說明文件", - "Allow users on this server to send shares to other servers" : "允許這台伺服器上的使用者發送分享給其他伺服器", - "Allow users on this server to receive shares from other servers" : "允許這台伺服器上的使用者發送接收來自其他伺服器的分享", - "Federated Cloud" : "雲端聯盟", - "Your Federated Cloud ID:" : "您的雲端聯盟 ID:", - "Share it:" : "分享它:", - "Add to your website" : "新增至您的網站", - "Share with me via Nextcloud" : "透過 Nextcloud 與我分享", - "HTML Code:" : "HTML Code:" + "Uploaded files:" : "已上傳的檔案:" }, "nplurals=1; plural=0;"); diff --git a/apps/files_sharing/l10n/zh_TW.json b/apps/files_sharing/l10n/zh_TW.json index c5cdaa58628..7d35951bcb9 100644 --- a/apps/files_sharing/l10n/zh_TW.json +++ b/apps/files_sharing/l10n/zh_TW.json @@ -16,38 +16,52 @@ "No expiration date set" : "未指定到期日", "Shared by" : "分享自", "Sharing" : "分享", - "A file or folder has been <strong>shared</strong>" : "檔案或目錄已被 <strong>分享</strong>", - "A file or folder was shared from <strong>another server</strong>" : "檔案或目錄已被 <strong>其他伺服器</strong> 分享", - "You received a new remote share %2$s from %1$s" : "您收到了一個遠端分享 %2$s 來自於 %1$s", - "You received a new remote share from %s" : "您收到了一個遠端分享來自於 %s", - "%1$s accepted remote share %2$s" : "%1$s 接受了遠端分享 %2$s", - "%1$s declined remote share %2$s" : "%1$s 拒絕了遠端分享 %2$s", - "%1$s unshared %2$s from you" : "%1$s 取消與你分享 %2$s", - "Public shared folder %1$s was downloaded" : "共享資料夾 %1$s 已被下載", - "Public shared file %1$s was downloaded" : "共享檔案 %1$s 已被下載", - "You shared %1$s with %2$s" : "您與 %2$s 分享了 %1$s", - "%2$s shared %1$s with %3$s" : "%2$s 與 %3$s 分享了 %1$s", - "You shared %1$s with group %2$s" : "您與 %2$s 群組分享了 %1$s", - "%2$s shared %1$s with group %3$s" : "%2$s 與群組 %3$s 分享了 %1$s", - "%2$s shared %1$s via link" : "%2$s 透過連結分享了 %1$s ", - "You shared %1$s via link" : "您以連結分享了 %1$s", - "You removed the public link for %1$s" : "您刪除了 %1$s 的公開分享連結", - "%2$s removed the public link for %1$s" : "%2$s 刪除了 %1$s 的公開分享連結", - "Your public link for %1$s expired" : "您在 %1$s 的公開連結失效了", - "The public link of %2$s for %1$s expired" : "%2$s 的公開連結(給 %1$s )失效了", - "%2$s shared %1$s with you" : "%2$s 與您分享了 %1$s", + "File shares" : "檔案分享", "Downloaded via public link" : "透過公用連結下載", - "Shared with %2$s" : "與 %2$s 分享", - "Shared with %3$s by %2$s" : "透過 %2$s 與 %3$s 分享", - "Shared with group %2$s" : "與群組 %2$s 分享", - "Shared with group %3$s by %2$s" : "透過 %2$s 與群組 %3$s 分享", - "Shared via link by %2$s" : "%2$s 透過連結分享", - "Shared via public link" : "透過公用連結分享", + "Downloaded by {email}" : "{email} 已下載", + "{file} downloaded via public link" : "{file} 已透過公用連結下載", + "{email} downloaded {file}" : "{email} 已下載 {file}", + "Shared with group {group}" : "與群組 {group} 分享", + "Removed share for group {group}" : "移除與群組 {group} 分享", + "{actor} shared with group {group}" : "{actor} 分享給群組 {group}", + "{actor} removed share for group {group}" : "{actor} 移除了與群組 {group} 的分享", + "You shared {file} with group {group}" : "你分享了 {file} 給群組 {group}", + "You removed group {group} from {file}" : "你將群組 {group} 從 {file} 移除", + "{actor} shared {file} with group {group}" : "{actor} 分享 {file} 給群組 {group}", + "{actor} removed group {group} from {file}" : "{actor} 將群組 {group} 從 {file} 移除", + "Shared as public link" : "藉由公用連結分享", "Removed public link" : "刪除公開連結", - "%2$s removed public link" : "%2$s 刪除了公開連結", "Public link expired" : "公開連結已過期", - "Public link of %2$s expired" : "%2$s 的公開連結過期了", - "Shared by %2$s" : "由 %2$s 分享", + "{actor} shared as public link" : "{actor} 透過公開連結分享", + "{actor} removed public link" : "{actor} 移除公開連結分享", + "Public link of {actor} expired" : "{actor} 的公開連結過期了", + "You shared {file} as public link" : "你藉由公用連結分享了 {file}", + "You removed public link for {file}" : "您刪除了 {file} 的公開分享連結", + "Public link expired for {file}" : "{file} 的公開連結已過期", + "{actor} shared {file} as public link" : "{actor} 透過公開連結分享 {file}", + "{actor} removed public link for {file}" : "{actor} 移除 {file} 的公開連結分享", + "Public link of {actor} for {file} expired" : "{actor} 公開分享 {file} 的連結過期了", + "{user} accepted the remote share" : "{user} 接受了遠端分享", + "{user} declined the remote share" : "{user} 拒絕了遠端分享", + "You received a new remote share {file} from {user}" : "您收到了一個遠端分享 {file} 來自於 {user}", + "{user} accepted the remote share of {file}" : "{user} 接受了檔案 {file} 的遠端分享", + "{user} declined the remote share of {file}" : "{user} 拒絕了檔案 {file} 的遠端分享", + "{user} unshared {file} from you" : "{user} 取消與你分享檔案 {file}", + "Shared with {user}" : "與 {user} 分享", + "Removed share for {user}" : "移除對 {user} 的分享", + "{actor} shared with {user}" : "{actor} 分享給 {user}", + "{actor} removed share for {user}" : "{actor} 移除了對 {user} 的分享", + "Shared by {actor}" : "由 {actor} 分享", + "{actor} removed share" : "{actor} 移除了分享", + "You shared {file} with {user}" : "你與 {user} 分享了 {file}", + "You removed {user} from {file}" : "你將 {user} 從 {file} 移除", + "{actor} shared {file} with {user}" : "{actor} 分享了 {file} 給 {user}", + "{actor} removed {user} from {file}" : "{actor} 移除 {user} 從 {file}", + "{actor} shared {file} with you" : "{actor} 與你分享了 {file}", + "{actor} removed you from {file}" : "{actor} 將你從 {file} 移除", + "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "email或公開連結分享的檔案與資料夾已被 <strong>下載</strong>", + "A file or folder was shared from <strong>another server</strong>" : "檔案或目錄已被 <strong>其他伺服器</strong> 分享", + "A file or folder has been <strong>shared</strong>" : "檔案或目錄已被 <strong>分享</strong>", "Wrong share ID, share doesn't exist" : "錯誤的分享 ID ,分享不存在", "could not delete share" : "無法刪除分享", "Could not delete share" : "無法刪除分享", @@ -63,13 +77,17 @@ "Public upload is only possible for publicly shared folders" : "只有公開分享的資料夾可以接受公開上傳", "Invalid date, date format must be YYYY-MM-DD" : "無效的日期,需為 YYYY-MM-DD 格式", "Sharing %s failed because the back end does not allow shares from type %s" : "分享 %s 失敗,因為後端不允許來自 %s 類型的分享", + "You cannot share to a Circle if the app is not enabled" : "當應用未被啟用,你無法分享到circle。", + "Please specify a valid circle" : "請指定一個有效的circle", "Unknown share type" : "未知的分享類型", "Not a directory" : "這不是一個資料夾", "Could not lock path" : "無法鎖定路徑", "Wrong or no update parameter given" : "更新參數不正確或未提供", "Can't change permissions for public share links" : "無法由公開分享的連結變更權限", "Cannot increase permissions" : "無法增加權限", + "%s is publicly shared" : "%s 是被公然分享的", "Share API is disabled" : "分享 API 已停用", + "File sharing" : "檔案分享", "This share is password-protected" : "這個分享有密碼保護", "The password is wrong. Try again." : "請檢查您的密碼並再試一次", "Password" : "密碼", @@ -83,6 +101,7 @@ "the link expired" : "連結過期", "sharing is disabled" : "分享功能已停用", "For more info, please ask the person who sent this link." : "請詢問告訴您此連結的人以瞭解更多", + "shared by %s" : "分享自 %s", "Add to your Nextcloud" : "加入到您的 Nextcloud", "Download" : "下載", "Download %s" : "下載 %s", @@ -90,35 +109,6 @@ "Upload files to %s" : "上傳檔案到 %s", "Select or drop files" : "選擇或拖曳檔案至此", "Uploading files…" : "上傳檔案中…", - "Uploaded files:" : "已上傳的檔案:", - "A public shared file or folder was <strong>downloaded</strong>" : "共享檔案或目錄已被 <strong>下載</strong>", - "Shares" : "分享", - "Server to server sharing is not enabled on this server" : "伺服器對伺服器共享在這台伺服器上面並未啟用", - "The mountpoint name contains invalid characters." : "掛載點名稱含有不合法的字元", - "Not allowed to create a federated share with the same user server" : "不允許在同一個使用者伺服器建立分享聯盟", - "Invalid or untrusted SSL certificate" : "無效或是不信任的 SSL憑證", - "Could not authenticate to remote share, password might be wrong" : "無法驗證遠端分享,可能是密碼錯誤", - "Storage not valid" : "儲存空間無效", - "Couldn't add remote share" : "無法加入遠端分享", - "Federated sharing" : "分享聯盟", - "Do you want to add the remote share {name} from {owner}@{remote}?" : "是否要加入來自 {owner}@{remote} 的遠端分享 {name} ?", - "Remote share" : "遠端分享", - "Remote share password" : "遠端分享密碼", - "Cancel" : "取消", - "Add remote share" : "加入遠端分享", - "No ownCloud installation (7 or higher) found at {remote}" : "沒有在 {remote} 找到 ownCloud (版本 7 以上)", - "Invalid ownCloud url" : "無效的 ownCloud URL", - "Accept" : "接受", - "Decline" : "拒絕", - "Federated Cloud Sharing" : "雲端分享聯盟", - "Open documentation" : "開啟說明文件", - "Allow users on this server to send shares to other servers" : "允許這台伺服器上的使用者發送分享給其他伺服器", - "Allow users on this server to receive shares from other servers" : "允許這台伺服器上的使用者發送接收來自其他伺服器的分享", - "Federated Cloud" : "雲端聯盟", - "Your Federated Cloud ID:" : "您的雲端聯盟 ID:", - "Share it:" : "分享它:", - "Add to your website" : "新增至您的網站", - "Share with me via Nextcloud" : "透過 Nextcloud 與我分享", - "HTML Code:" : "HTML Code:" + "Uploaded files:" : "已上傳的檔案:" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file 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/Trashbin.php b/apps/files_trashbin/lib/Trashbin.php index 75035b8bab6..88d23cee711 100644 --- a/apps/files_trashbin/lib/Trashbin.php +++ b/apps/files_trashbin/lib/Trashbin.php @@ -42,6 +42,8 @@ use OC\Files\Filesystem; use OC\Files\View; use OCA\Files_Trashbin\AppInfo\Application; use OCA\Files_Trashbin\Command\Expire; +use OCP\Files\File; +use OCP\Files\Folder; use OCP\Files\NotFoundException; use OCP\User; @@ -485,9 +487,16 @@ class Trashbin { */ public static function deleteAll() { $user = User::getUser(); + $userRoot = \OC::$server->getUserFolder($user)->getParent(); $view = new View('/' . $user); $fileInfos = $view->getDirectoryContent('files_trashbin/files'); + try { + $trash = $userRoot->get('files_trashbin'); + } catch (NotFoundException $e) { + return false; + } + // Array to store the relative path in (after the file is deleted, the view won't be able to relativise the path anymore) $filePaths = array(); foreach($fileInfos as $fileInfo){ @@ -504,7 +513,7 @@ class Trashbin { } // actual file deletion - $view->deleteAll('files_trashbin'); + $trash->delete(); $query = \OC_DB::prepare('DELETE FROM `*PREFIX*files_trash` WHERE `user`=?'); $query->execute(array($user)); @@ -516,8 +525,8 @@ class Trashbin { self::emitTrashbinPostDelete($path); } - $view->mkdir('files_trashbin'); - $view->mkdir('files_trashbin/files'); + $trash = $userRoot->newFolder('files_trashbin'); + $trash->newFolder('files'); return true; } @@ -548,6 +557,7 @@ class Trashbin { * @return int size of deleted files */ public static function delete($filename, $user, $timestamp = null) { + $userRoot = \OC::$server->getUserFolder($user)->getParent(); $view = new View('/' . $user); $size = 0; @@ -561,13 +571,20 @@ class Trashbin { $size += self::deleteVersions($view, $file, $filename, $timestamp, $user); - if ($view->is_dir('/files_trashbin/files/' . $file)) { + try { + $node = $userRoot->get('/files_trashbin/files/' . $file); + } catch (NotFoundException $e) { + return $size; + } + + if ($node instanceof Folder) { $size += self::calculateSize(new View('/' . $user . '/files_trashbin/files/' . $file)); - } else { + } else if ($node instanceof File) { $size += $view->filesize('/files_trashbin/files/' . $file); } + self::emitTrashbinPreDelete('/files_trashbin/files/' . $file); - $view->unlink('/files_trashbin/files/' . $file); + $node->delete(); self::emitTrashbinPostDelete('/files_trashbin/files/' . $file); return $size; diff --git a/apps/files_versions/lib/Storage.php b/apps/files_versions/lib/Storage.php index 9aa9e6d5260..6e6b6aebb6d 100644 --- a/apps/files_versions/lib/Storage.php +++ b/apps/files_versions/lib/Storage.php @@ -161,7 +161,7 @@ class Storage { * store a new version of a file. */ public static function store($filename) { - if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { + if(\OC::$server->getConfig()->getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { // if the file gets streamed we need to remove the .part extension // to get the right target @@ -320,7 +320,7 @@ class Storage { */ public static function rollback($file, $revision) { - if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { + if(\OC::$server->getConfig()->getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { // add expected leading slash $file = '/' . ltrim($file, '/'); list($uid, $filename) = self::getUidAndFilename($file); 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/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/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/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/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/l10n/ja.js b/apps/updatenotification/l10n/ja.js index 289eebe861e..90ee9342fa1 100644 --- a/apps/updatenotification/l10n/ja.js +++ b/apps/updatenotification/l10n/ja.js @@ -10,6 +10,7 @@ OC.L10N.register( "Update to %1$s is available." : "%1$s への更新が利用可能です。", "Update for %1$s to version %2$s is available." : "%1$s に対するバージョン %2$s へアップデートが利用可能です。", "Update for {app} to version %s is available." : " {app} に対するバージョン %s へアップデートが利用可能です。", + "Update notification" : "通知を更新", "A new version is available: %s" : "新しいバージョンが利用可能: %s", "Open updater" : "アップデーターを開く", "Download now" : "今すぐダウンロード", @@ -17,6 +18,7 @@ OC.L10N.register( "Checked on %s" : "%s に確認", "Update channel:" : "アップデートチャンネル:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "開発版の新しいバージョンにアップデートできます。ただし、アップデート後は安定版にダウングレードできません。", + "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." : "新しいリリースの後、公開されるまでには時間がかかります。\n新しいバージョンを公開して配布しますが、問題が発見されたときにバージョンをスキップすることがあります。", "Notify members of the following groups about available updates:" : "次のグループのメンバーに対してアップデートのメッセージが表示されます:", "Only notification for app updates are available." : "アプリ更新情報があるときのみ通知する。", "The selected update channel makes dedicated notifications for the server obsolete." : "選択した更新チャネルでは、廃止サーバーについて専用の通知を行います。", diff --git a/apps/updatenotification/l10n/ja.json b/apps/updatenotification/l10n/ja.json index fcead04da5b..c7e5c1bb449 100644 --- a/apps/updatenotification/l10n/ja.json +++ b/apps/updatenotification/l10n/ja.json @@ -8,6 +8,7 @@ "Update to %1$s is available." : "%1$s への更新が利用可能です。", "Update for %1$s to version %2$s is available." : "%1$s に対するバージョン %2$s へアップデートが利用可能です。", "Update for {app} to version %s is available." : " {app} に対するバージョン %s へアップデートが利用可能です。", + "Update notification" : "通知を更新", "A new version is available: %s" : "新しいバージョンが利用可能: %s", "Open updater" : "アップデーターを開く", "Download now" : "今すぐダウンロード", @@ -15,6 +16,7 @@ "Checked on %s" : "%s に確認", "Update channel:" : "アップデートチャンネル:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "開発版の新しいバージョンにアップデートできます。ただし、アップデート後は安定版にダウングレードできません。", + "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." : "新しいリリースの後、公開されるまでには時間がかかります。\n新しいバージョンを公開して配布しますが、問題が発見されたときにバージョンをスキップすることがあります。", "Notify members of the following groups about available updates:" : "次のグループのメンバーに対してアップデートのメッセージが表示されます:", "Only notification for app updates are available." : "アプリ更新情報があるときのみ通知する。", "The selected update channel makes dedicated notifications for the server obsolete." : "選択した更新チャネルでは、廃止サーバーについて専用の通知を行います。", 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/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/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/el.js b/apps/user_ldap/l10n/el.js index a7f6dfc2516..b006f8a8860 100644 --- a/apps/user_ldap/l10n/el.js +++ b/apps/user_ldap/l10n/el.js @@ -147,6 +147,7 @@ OC.L10N.register( "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Όταν ενεργοποιηθεί, οι ομάδες που περιέχουν ομάδες υποστηρίζονται. (Λειτουργεί μόνο αν το χαρακτηριστικό μέλους ομάδες περιέχει Διακεκριμένα Ονόματα.)", "Paging chunksize" : "Μέγεθος σελιδοποίησης", "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.)" : "Μέγεθος τμήματος που χρησιμοποιείται για την σελιδοποίηση αναζητήσεων LDAP που μπορεί να επιστρέψουν πολλά δεδομένα, όπως απαρίθμηση χρηστών ή ομάδων. (Η τιμή 0 απενεργοποιεί την σελιδοποίηση των αναζητήσεων LDAP σε αυτές τις περιπτώσεις.)", + "Enable LDAP password changes per user" : "Ενεργοποίηση αλλαγών συνθηματικού LDAP ανά χρήστη", "Special Attributes" : "Ειδικά Χαρακτηριστικά ", "Quota Field" : "Ποσοσταση πεδιου", "Quota Default" : "Προκαθισμενο πεδιο", diff --git a/apps/user_ldap/l10n/el.json b/apps/user_ldap/l10n/el.json index 1c9c1902f1d..57e5ac6097b 100644 --- a/apps/user_ldap/l10n/el.json +++ b/apps/user_ldap/l10n/el.json @@ -145,6 +145,7 @@ "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Όταν ενεργοποιηθεί, οι ομάδες που περιέχουν ομάδες υποστηρίζονται. (Λειτουργεί μόνο αν το χαρακτηριστικό μέλους ομάδες περιέχει Διακεκριμένα Ονόματα.)", "Paging chunksize" : "Μέγεθος σελιδοποίησης", "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.)" : "Μέγεθος τμήματος που χρησιμοποιείται για την σελιδοποίηση αναζητήσεων LDAP που μπορεί να επιστρέψουν πολλά δεδομένα, όπως απαρίθμηση χρηστών ή ομάδων. (Η τιμή 0 απενεργοποιεί την σελιδοποίηση των αναζητήσεων LDAP σε αυτές τις περιπτώσεις.)", + "Enable LDAP password changes per user" : "Ενεργοποίηση αλλαγών συνθηματικού LDAP ανά χρήστη", "Special Attributes" : "Ειδικά Χαρακτηριστικά ", "Quota Field" : "Ποσοσταση πεδιου", "Quota Default" : "Προκαθισμενο πεδιο", 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/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/Install.php b/core/Command/App/Install.php new file mode 100644 index 00000000000..0c99c7ff85a --- /dev/null +++ b/core/Command/App/Install.php @@ -0,0 +1,77 @@ +<?php +/** + * @copyright Copyright (c) 2016, ownCloud, Inc. + * + * @author Klaus Herberth <klaus@jsxc.org> + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OC\Core\Command\App; + +use OC\Installer; +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class Install extends Command { + + protected function configure() { + $this + ->setName('app:install') + ->setDescription('install an app') + ->addArgument( + 'app-id', + InputArgument::REQUIRED, + 'install the specified app' + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) { + $appId = $input->getArgument('app-id'); + + if (\OC_App::getAppPath($appId)) { + $output->writeln($appId . ' already installed'); + return 1; + } + + try { + $installer = new Installer( + \OC::$server->getAppFetcher(), + \OC::$server->getHTTPClientService(), + \OC::$server->getTempManager(), + \OC::$server->getLogger(), + \OC::$server->getConfig() + ); + $installer->downloadApp($appId); + $result = $installer->installApp($appId); + } catch(\Exception $e) { + $output->writeln('Error: ' . $e->getMessage()); + return 1; + } + + if($result === false) { + $output->writeln($appId . ' couldn\'t be installed'); + return 1; + } + + $output->writeln($appId . ' installed'); + + return 0; + } +} 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/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/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/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/nb.js b/core/l10n/nb.js index 21e40359b2f..58258a8dac2 100644 --- a/core/l10n/nb.js +++ b/core/l10n/nb.js @@ -1,7 +1,7 @@ OC.L10N.register( "core", { - "Please select a file." : "Velg en fil.", + "Please select a file." : "Velg ei fil.", "File is too big" : "Filen er for stor", "The selected file is not an image." : "Den valgte filen er ikke et bilde.", "The selected file cannot be read." : "Den valgte filen kan ikke leses.", diff --git a/core/l10n/nb.json b/core/l10n/nb.json index 77f036d1ee5..7ff847593fc 100644 --- a/core/l10n/nb.json +++ b/core/l10n/nb.json @@ -1,5 +1,5 @@ { "translations": { - "Please select a file." : "Velg en fil.", + "Please select a file." : "Velg ei fil.", "File is too big" : "Filen er for stor", "The selected file is not an image." : "Den valgte filen er ikke et bilde.", "The selected file cannot be read." : "Den valgte filen kan ikke leses.", 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/l10n/vi.js b/core/l10n/vi.js index 5802f013815..693874cd2f3 100644 --- a/core/l10n/vi.js +++ b/core/l10n/vi.js @@ -53,6 +53,7 @@ OC.L10N.register( "%s (incompatible)" : "%s (không tương thích)", "Following apps have been disabled: %s" : "Các ứng dụng sau bị vô hiệu hóa: %s", "Already up to date" : "Đã được cập nhật bản mới nhất", + "Search contacts …" : "Tìm liên hệ ...", "No contacts found" : "Không tìm thấy liên hệ nào", "Show all contacts …" : "Hiển thị tất cả liên hệ…", "There was an error loading your contacts" : "Đã xảy ra lỗi khi tải liên hệ của bạn", @@ -255,6 +256,7 @@ OC.L10N.register( "Confirm your password" : "Xác nhận mật khẩu của bạn", "Server side authentication failed!" : "Xác thực phía máy chủ không thành công!", "Please contact your administrator." : "Vui lòng liên hệ với quản trị viên.", + "An internal error occurred." : "Đã xảy ra một lỗi nội bộ.", "Please try again or contact your administrator." : "Vui lòng thử lại hoặc liên hệ quản trị của bạn.", "Username or email" : "Tên truy cập hoặc email", "Wrong password. Reset it?" : "Sai mật khẩu. Gửi lại mật khẩu ?", @@ -262,6 +264,7 @@ OC.L10N.register( "Log in" : "Đăng nhập", "Stay logged in" : "Lưu trạng thái đăng nhập", "Alternative Logins" : "Đăng nhập khác", + "App token" : "Dấu hiệu ứng dụng", "Redirecting …" : "Chuyển tiếp ...", "New password" : "Mật khẩu mới", "New Password" : "Mật khẩu mới", diff --git a/core/l10n/vi.json b/core/l10n/vi.json index 8cf8822da71..faf8ced3f5a 100644 --- a/core/l10n/vi.json +++ b/core/l10n/vi.json @@ -51,6 +51,7 @@ "%s (incompatible)" : "%s (không tương thích)", "Following apps have been disabled: %s" : "Các ứng dụng sau bị vô hiệu hóa: %s", "Already up to date" : "Đã được cập nhật bản mới nhất", + "Search contacts …" : "Tìm liên hệ ...", "No contacts found" : "Không tìm thấy liên hệ nào", "Show all contacts …" : "Hiển thị tất cả liên hệ…", "There was an error loading your contacts" : "Đã xảy ra lỗi khi tải liên hệ của bạn", @@ -253,6 +254,7 @@ "Confirm your password" : "Xác nhận mật khẩu của bạn", "Server side authentication failed!" : "Xác thực phía máy chủ không thành công!", "Please contact your administrator." : "Vui lòng liên hệ với quản trị viên.", + "An internal error occurred." : "Đã xảy ra một lỗi nội bộ.", "Please try again or contact your administrator." : "Vui lòng thử lại hoặc liên hệ quản trị của bạn.", "Username or email" : "Tên truy cập hoặc email", "Wrong password. Reset it?" : "Sai mật khẩu. Gửi lại mật khẩu ?", @@ -260,6 +262,7 @@ "Log in" : "Đăng nhập", "Stay logged in" : "Lưu trạng thái đăng nhập", "Alternative Logins" : "Đăng nhập khác", + "App token" : "Dấu hiệu ứng dụng", "Redirecting …" : "Chuyển tiếp ...", "New password" : "Mật khẩu mới", "New Password" : "Mật khẩu mới", diff --git a/core/register_command.php b/core/register_command.php index fd693729a72..02bdbedc6e0 100644 --- a/core/register_command.php +++ b/core/register_command.php @@ -59,9 +59,10 @@ $application->add(new \OC\Core\Command\Integrity\CheckCore( if (\OC::$server->getConfig()->getSystemValue('installed', false)) { $application->add(new OC\Core\Command\App\Disable(\OC::$server->getAppManager())); $application->add(new OC\Core\Command\App\Enable(\OC::$server->getAppManager())); + $application->add(new OC\Core\Command\App\Install()); $application->add(new OC\Core\Command\App\GetPath()); $application->add(new OC\Core\Command\App\ListApps(\OC::$server->getAppManager())); - + $application->add(new OC\Core\Command\TwoFactorAuth\Enable( \OC::$server->getTwoFactorAuthManager(), \OC::$server->getUserManager() )); 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/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index 413014ab78c..2df64663d6f 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -405,6 +405,7 @@ return array( 'OC\\Core\\Command\\App\\Disable' => $baseDir . '/core/Command/App/Disable.php', 'OC\\Core\\Command\\App\\Enable' => $baseDir . '/core/Command/App/Enable.php', 'OC\\Core\\Command\\App\\GetPath' => $baseDir . '/core/Command/App/GetPath.php', + 'OC\\Core\\Command\\App\\Install' => $baseDir . '/core/Command/App/Install.php', 'OC\\Core\\Command\\App\\ListApps' => $baseDir . '/core/Command/App/ListApps.php', 'OC\\Core\\Command\\Background\\Ajax' => $baseDir . '/core/Command/Background/Ajax.php', 'OC\\Core\\Command\\Background\\Base' => $baseDir . '/core/Command/Background/Base.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index dce8b1b69ce..9f87c1060a2 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -435,6 +435,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OC\\Core\\Command\\App\\Disable' => __DIR__ . '/../../..' . '/core/Command/App/Disable.php', 'OC\\Core\\Command\\App\\Enable' => __DIR__ . '/../../..' . '/core/Command/App/Enable.php', 'OC\\Core\\Command\\App\\GetPath' => __DIR__ . '/../../..' . '/core/Command/App/GetPath.php', + 'OC\\Core\\Command\\App\\Install' => __DIR__ . '/../../..' . '/core/Command/App/Install.php', 'OC\\Core\\Command\\App\\ListApps' => __DIR__ . '/../../..' . '/core/Command/App/ListApps.php', 'OC\\Core\\Command\\Background\\Ajax' => __DIR__ . '/../../..' . '/core/Command/Background/Ajax.php', 'OC\\Core\\Command\\Background\\Base' => __DIR__ . '/../../..' . '/core/Command/Background/Base.php', diff --git a/lib/l10n/cs.js b/lib/l10n/cs.js index 7a09bd8bdbd..97e27ffb416 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í", diff --git a/lib/l10n/cs.json b/lib/l10n/cs.json index bd5275d2911..6e233e051e2 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í", diff --git a/lib/l10n/de.js b/lib/l10n/de.js index 008e22b54bc..5cb71095a52 100644 --- a/lib/l10n/de.js +++ b/lib/l10n/de.js @@ -12,6 +12,7 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s und %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s und %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s und %5$s", + "Education Edition" : "Bildungsausgabe", "Enterprise bundle" : "Firmen-Paket", "Groupware bundle" : "Groupware-Paket", "Social sharing bundle" : "Paket für das Teilen in sozialen Medien", diff --git a/lib/l10n/de.json b/lib/l10n/de.json index e40233aa06f..cbe4d07ae17 100644 --- a/lib/l10n/de.json +++ b/lib/l10n/de.json @@ -10,6 +10,7 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s und %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s und %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s und %5$s", + "Education Edition" : "Bildungsausgabe", "Enterprise bundle" : "Firmen-Paket", "Groupware bundle" : "Groupware-Paket", "Social sharing bundle" : "Paket für das Teilen in sozialen Medien", diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js index 4af618c62b9..2e5708c7972 100644 --- a/lib/l10n/de_DE.js +++ b/lib/l10n/de_DE.js @@ -12,6 +12,7 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s und %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s und %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s und %5$s", + "Education Edition" : "Bildungsausgabe", "Enterprise bundle" : "Firmen-Paket", "Groupware bundle" : "Groupware-Paket", "Social sharing bundle" : "Paket für das Teilen in sozialen Medien", diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json index 6e65ac418fc..ff3cd62c04d 100644 --- a/lib/l10n/de_DE.json +++ b/lib/l10n/de_DE.json @@ -10,6 +10,7 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s und %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s und %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s und %5$s", + "Education Edition" : "Bildungsausgabe", "Enterprise bundle" : "Firmen-Paket", "Groupware bundle" : "Groupware-Paket", "Social sharing bundle" : "Paket für das Teilen in sozialen Medien", diff --git a/lib/l10n/el.js b/lib/l10n/el.js index 7a14c38ac15..ad32df2dd85 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" : "Πακέτο κοινωνικού διαμοιρασμού", @@ -28,6 +29,7 @@ OC.L10N.register( "Server version %s or lower is required." : "Απαιτείται έκδοση διακομιστή %s ή παλαιότερη.", "Unknown filetype" : "Άγνωστος τύπος αρχείου", "Invalid image" : "Μη έγκυρη εικόνα", + "Avatar image is not square" : "Η εικόνα του άβαταρ δεν είναι τετράγωνη", "today" : "σήμερα", "yesterday" : "χτες", "_%n day ago_::_%n days ago_" : ["%n ημέρα πριν","%n ημέρες πριν"], @@ -61,7 +63,9 @@ OC.L10N.register( "Additional settings" : "Επιπρόσθετες ρυθμίσεις", "Tips & tricks" : "Συμβουλές & κόλπα", "Personal info" : "Προσωπικές πληροφορίες", + "Sync clients" : "Εφαρμογές συγχρονισμού", "Unlimited" : "Απεριόριστα", + "__language_name__" : "__language_name__", "Verifying" : "Γίνεται επαλήθευση", "Verifying …" : "Γίνεται επαλήθευση ...", "Verify" : "Επαλήθευση", @@ -96,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", @@ -111,7 +116,12 @@ OC.L10N.register( "Sharing %s failed, because resharing is not allowed" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν επιτρέπεται ο επαναδιαμοιρασμός", "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 απέτυχε, γιατί το αρχείο δεν βρέθηκε στην προσωρινή αποθήκευση αρχείων", + "Can’t increase permissions of %s" : "Αδυναμία αύξησης των δικαιωμάτων του %s", + "Files can’t be shared with delete permissions" : "Δεν μπορεί να γίνει διαμοιρασμός αρχείων με δικαιώματα διαγραφής", + "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 ημέρες στο μέλλον", + "The requested share does not exist anymore" : "Το διαμοιρασμένο που ζητήθηκε δεν υπάρχει πλέον", "Could not find category \"%s\"" : "Αδυναμία εύρεσης κατηγορίας \"%s\"", "Sunday" : "Κυριακή", "Monday" : "Δευτέρα", @@ -158,14 +168,18 @@ OC.L10N.register( "Oct." : "Οκτ.", "Nov." : "Νοε.", "Dec." : "Δεκ.", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Μόνο οι ακόλουθοι χαρακτήρες επιτρέπονται στο όνομα χρήστη; \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"", "A valid username must be provided" : "Πρέπει να δοθεί έγκυρο όνομα χρήστη", + "Username contains whitespace at the beginning or at the end" : "Το όνομα χρήστη περιέχει κενό διάστημα στην αρχή ή στο τέλος", "Username must not consist of dots only" : "Το όνομα χρήστη δεν πρέπει να περιέχει μόνο τελείες", "A valid password must be provided" : "Πρέπει να δοθεί έγκυρο συνθηματικό", "The username is already being used" : "Το όνομα χρήστη είναι κατειλημμένο", + "User disabled" : "Ο χρήστης απενεργοποιήθηκε", "Login canceled by app" : "Η είσοδος ακυρώθηκε από την εφαρμογή", "No app name specified" : "Δεν προδιορίστηκε όνομα εφαρμογής", "App '%s' could not be installed!" : "Δεν μπορεί να εγκατασταθεί η εφαρμογή '%s'!", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Αυτή η εφαρμογή %s δεν μπορεί να εγκατασταθεί διότι δεν πληρούνται οι ακόλουθες εξαρτήσεις: %s", + "a safe home for all your data" : "ένα ασφαλές μέρος για όλα τα δεδομένα σας", "File is currently busy, please try again later" : "Το αρχείο χρησιμοποιείται αυτή τη στιγμή, παρακαλώ προσπαθήστε αργότερα", "Can't read file" : "Αδυναμία ανάγνωσης αρχείου", "Application is not enabled" : "Δεν ενεργοποιήθηκε η εφαρμογή", @@ -175,36 +189,53 @@ OC.L10N.register( "No database drivers (sqlite, mysql, or postgresql) installed." : "Δεν βρέθηκαν εγκατεστημένοι οδηγοί βάσεων δεδομένων (sqlite, mysql, or postgresql).", "Cannot write into \"config\" directory" : "Αδυναμία εγγραφής στον κατάλογο \"config\"", "Cannot write into \"apps\" directory" : "Αδυναμία εγγραφής στον κατάλογο \"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" : "Αυτό συνήθως μπορεί να διορθωθεί δίνοντας δικαιώματα εγγραφής στον κατάλογο apps στον διακομιστή ιστού ή απενεργοποιώντας το appstore στο αρχείο διαμόρφωσης. Δείτε το %s", + "Cannot create \"data\" directory" : "Αδυναμία δημιουργίας του καταλόγου \"data\"", + "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Αυτό μπορεί συνήθως να διορθωθεί δίνοντας στον διακομιστή ιστού δικαιώματα εγγραφής στον βασικό κατάλογο. Δείτε το%s", + "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Τα δικαιώματα πρόσβασης μπορούν συνήθως να διορθωθούν δίνοντας δικαιώματα εγγραφής στον βασικό κατάλογο στον διακομιστή ιστού. Δείτε το%s.", "Setting locale to %s failed" : "Ρύθμιση τοπικών ρυθμίσεων σε %s απέτυχε", "Please install one of these locales on your system and restart your webserver." : "Παρακαλώ να εγκαταστήσετε μία από αυτές τις τοπικές ρυθμίσεις στο σύστημά σας και να επανεκκινήσετε τον διακομιστή δικτύου σας.", "Please ask your server administrator to install the module." : "Παρακαλώ ζητήστε από το διαχειριστή του διακομιστή σας να εγκαταστήσει τη μονάδα.", "PHP module %s not installed." : "Η μονάδα %s PHP δεν είναι εγκατεστημένη. ", "PHP setting \"%s\" is not set to \"%s\"." : "Η ρύθμιση \"%s\"της PHP δεν είναι ορισμένη σε \"%s\".", + "Adjusting this setting in php.ini will make Nextcloud run again" : "Προσαρμόζοντας αυτήν τη ρύθμιση στο php.ini το Nextcloud θα εκτελεστεί ξανά", "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "Το mbstring.func_overload έχει ορισθεί σε \"%s\" αντί για την αναμενόμενη τιμή \"0\"", "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Για να διορθώσετε αυτό το πρόβλημα ορίστε το <code>mbstring.func_overload</code> σε <code>0</code> στο αρχείο php.ini", + "libxml2 2.7.0 is at least required. Currently %s is installed." : "Απαιτείται τουλάχιστον το libxml2 2.7.0. Αυτή τη στιγμή είναι εγκατεστημένο το %s.", "To fix this issue update your libxml2 version and restart your web server." : "Για να διορθώσετε το σφάλμα ενημερώστε την έκδοση του libxml2 και επανεκκινήστε τον διακομιστή.", "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Η PHP φαίνεται να είναι ρυθμισμένη ώστε να αφαιρεί inline doc blocks. Αυτό θα καταστήσει πολλές βασικές εφαρμογές μη διαθέσιμες.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Αυτό πιθανόν προκλήθηκε από προσωρινή μνήμη (cache)/επιταχυντή όπως τη Zend OPcache ή τον eAccelerator.", - "PHP modules have been installed, but they are still listed as missing?" : "Κάποιες μονάδες PHP έχουν εγκατασταθεί, αλλά είναι ακόμα καταγεγραμμένες ως απούσες;", + "PHP modules have been installed, but they are still listed as missing?" : "Κάποια αρθρώματα της PHP έχουν εγκατασταθεί, αλλά είναι ακόμα καταγεγραμμένες ως εκλιπόντα;", "Please ask your server administrator to restart the web server." : "Παρακαλώ ζητήστε από το διαχειριστή του διακομιστή σας να επανεκκινήσει το διακομιστή δικτύου σας.", "PostgreSQL >= 9 required" : "Απαιτείται PostgreSQL >= 9", "Please upgrade your database version" : "Παρακαλώ αναβαθμίστε την έκδοση της βάσης δεδομένων σας", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Παρακαλώ αλλάξτε τις ρυθμίσεις σε 0770 έτσι ώστε ο κατάλογος να μην μπορεί να προβάλλεται από άλλους χρήστες.", "Your data directory is readable by other users" : "Ο κατάλογος δεδομένων σας είναι διαθέσιμος προς ανάγνωση από άλλους χρήστες", + "Your data directory must be an absolute path" : "Ο κατάλογος δεδομένων σας πρέπει να είναι απόλυτη διαδρομή", "Check the value of \"datadirectory\" in your configuration" : "Ελέγξτε την τιμή του \"Φάκελος Δεδομένων\" στις ρυθμίσεις σας", "Your data directory is invalid" : "Ο κατάλογος δεδομένων σας δεν είναι έγκυρος", + "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Εξασφαλίστε ότι υπάρχει ένα αρχείο με όνομα \".ocdata\" στον βασικό κατάλογο του καταλόγου δεδομένων.", "Could not obtain lock type %d on \"%s\"." : "Αδυναμία ανάκτησης τύπου κλειδιού %d στο \"%s\".", + "Storage unauthorized. %s" : "Αποθηκευτικός χώρος χωρίς εξουσιοδότηση. %s", + "Storage incomplete configuration. %s" : "Ελλιπής διαμόρφωση αποθηκευτικού χώρου. %s", + "Storage connection error. %s" : "Σφάλμα σύνδεσης με αποθηκευτικό χώρο. %s", "Storage is temporarily not available" : "Μη διαθέσιμος χώρος αποθήκευσης προσωρινά", + "Storage connection timeout. %s" : "Λήξη χρονικού ορίου σύνδεσης με αποθηκευτικό χώρο.%s", "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Αυτό μπορεί συνήθως να διορθωθεί %sπαρέχοντας δικαιώματα εγγραφής για το φάκελο config στο διακομιστή δικτύου%s.", "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" : "Δεν μπορεί να γίνει διαμοιρασμός αρχείων με δικαιώματα δημιουργίας", + "Cannot set expiration date more than %s days in the future" : "Δεν είναι δυνατό να τεθεί η ημερομηνία λήξης σε περισσότερες από %s ημέρες στο μέλλον", "Personal" : "Προσωπικά", "Admin" : "Διαχείριση", "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Αυτό μπορεί συνήθως να διορθωθεί %sδίνοντας διακαιώματα εγγραφής για τον κατάλογο εφαρμογών στο διακομιστή δικτύου%s ή απενεργοποιώντας το κέντρο εφαρμογών στο αρχείο config.", "Cannot create \"data\" directory (%s)" : "Αδυναμία δημιουργίας του καταλόγου \"data\" (%s)", + "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Αυτό μπορεί συνήθως να διορθωθεί<a href=\"%s\" target=\"_blank\" rel=\"noreferrer\"> δίνοντας στον διακομιστή ιστού δικαιώματα εγγραφής στον βασικό κατάλογο</a>.", "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Τα δικαιώματα πρόσβασης μπορούν συνήθως να διορθωθούν %sδίνοντας δικαιώματα εγγραφής για τον βασικό κατάλογο στο διακομιστή δικτύου%s.", "Data directory (%s) is readable by other users" : "Ο κατάλογος δεδομένων (%s) είναι διαθέσιμος προς ανάγνωση από άλλους χρήστες", "Data directory (%s) must be an absolute path" : "Κατάλογος δεδομένων (%s) πρεπει να είναι απόλυτη η διαδρομή", diff --git a/lib/l10n/el.json b/lib/l10n/el.json index e3a06345bac..f0949025ba2 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" : "Πακέτο κοινωνικού διαμοιρασμού", @@ -26,6 +27,7 @@ "Server version %s or lower is required." : "Απαιτείται έκδοση διακομιστή %s ή παλαιότερη.", "Unknown filetype" : "Άγνωστος τύπος αρχείου", "Invalid image" : "Μη έγκυρη εικόνα", + "Avatar image is not square" : "Η εικόνα του άβαταρ δεν είναι τετράγωνη", "today" : "σήμερα", "yesterday" : "χτες", "_%n day ago_::_%n days ago_" : ["%n ημέρα πριν","%n ημέρες πριν"], @@ -59,7 +61,9 @@ "Additional settings" : "Επιπρόσθετες ρυθμίσεις", "Tips & tricks" : "Συμβουλές & κόλπα", "Personal info" : "Προσωπικές πληροφορίες", + "Sync clients" : "Εφαρμογές συγχρονισμού", "Unlimited" : "Απεριόριστα", + "__language_name__" : "__language_name__", "Verifying" : "Γίνεται επαλήθευση", "Verifying …" : "Γίνεται επαλήθευση ...", "Verify" : "Επαλήθευση", @@ -94,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", @@ -109,7 +114,12 @@ "Sharing %s failed, because resharing is not allowed" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν επιτρέπεται ο επαναδιαμοιρασμός", "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 απέτυχε, γιατί το αρχείο δεν βρέθηκε στην προσωρινή αποθήκευση αρχείων", + "Can’t increase permissions of %s" : "Αδυναμία αύξησης των δικαιωμάτων του %s", + "Files can’t be shared with delete permissions" : "Δεν μπορεί να γίνει διαμοιρασμός αρχείων με δικαιώματα διαγραφής", + "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 ημέρες στο μέλλον", + "The requested share does not exist anymore" : "Το διαμοιρασμένο που ζητήθηκε δεν υπάρχει πλέον", "Could not find category \"%s\"" : "Αδυναμία εύρεσης κατηγορίας \"%s\"", "Sunday" : "Κυριακή", "Monday" : "Δευτέρα", @@ -156,14 +166,18 @@ "Oct." : "Οκτ.", "Nov." : "Νοε.", "Dec." : "Δεκ.", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Μόνο οι ακόλουθοι χαρακτήρες επιτρέπονται στο όνομα χρήστη; \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"", "A valid username must be provided" : "Πρέπει να δοθεί έγκυρο όνομα χρήστη", + "Username contains whitespace at the beginning or at the end" : "Το όνομα χρήστη περιέχει κενό διάστημα στην αρχή ή στο τέλος", "Username must not consist of dots only" : "Το όνομα χρήστη δεν πρέπει να περιέχει μόνο τελείες", "A valid password must be provided" : "Πρέπει να δοθεί έγκυρο συνθηματικό", "The username is already being used" : "Το όνομα χρήστη είναι κατειλημμένο", + "User disabled" : "Ο χρήστης απενεργοποιήθηκε", "Login canceled by app" : "Η είσοδος ακυρώθηκε από την εφαρμογή", "No app name specified" : "Δεν προδιορίστηκε όνομα εφαρμογής", "App '%s' could not be installed!" : "Δεν μπορεί να εγκατασταθεί η εφαρμογή '%s'!", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Αυτή η εφαρμογή %s δεν μπορεί να εγκατασταθεί διότι δεν πληρούνται οι ακόλουθες εξαρτήσεις: %s", + "a safe home for all your data" : "ένα ασφαλές μέρος για όλα τα δεδομένα σας", "File is currently busy, please try again later" : "Το αρχείο χρησιμοποιείται αυτή τη στιγμή, παρακαλώ προσπαθήστε αργότερα", "Can't read file" : "Αδυναμία ανάγνωσης αρχείου", "Application is not enabled" : "Δεν ενεργοποιήθηκε η εφαρμογή", @@ -173,36 +187,53 @@ "No database drivers (sqlite, mysql, or postgresql) installed." : "Δεν βρέθηκαν εγκατεστημένοι οδηγοί βάσεων δεδομένων (sqlite, mysql, or postgresql).", "Cannot write into \"config\" directory" : "Αδυναμία εγγραφής στον κατάλογο \"config\"", "Cannot write into \"apps\" directory" : "Αδυναμία εγγραφής στον κατάλογο \"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" : "Αυτό συνήθως μπορεί να διορθωθεί δίνοντας δικαιώματα εγγραφής στον κατάλογο apps στον διακομιστή ιστού ή απενεργοποιώντας το appstore στο αρχείο διαμόρφωσης. Δείτε το %s", + "Cannot create \"data\" directory" : "Αδυναμία δημιουργίας του καταλόγου \"data\"", + "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Αυτό μπορεί συνήθως να διορθωθεί δίνοντας στον διακομιστή ιστού δικαιώματα εγγραφής στον βασικό κατάλογο. Δείτε το%s", + "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Τα δικαιώματα πρόσβασης μπορούν συνήθως να διορθωθούν δίνοντας δικαιώματα εγγραφής στον βασικό κατάλογο στον διακομιστή ιστού. Δείτε το%s.", "Setting locale to %s failed" : "Ρύθμιση τοπικών ρυθμίσεων σε %s απέτυχε", "Please install one of these locales on your system and restart your webserver." : "Παρακαλώ να εγκαταστήσετε μία από αυτές τις τοπικές ρυθμίσεις στο σύστημά σας και να επανεκκινήσετε τον διακομιστή δικτύου σας.", "Please ask your server administrator to install the module." : "Παρακαλώ ζητήστε από το διαχειριστή του διακομιστή σας να εγκαταστήσει τη μονάδα.", "PHP module %s not installed." : "Η μονάδα %s PHP δεν είναι εγκατεστημένη. ", "PHP setting \"%s\" is not set to \"%s\"." : "Η ρύθμιση \"%s\"της PHP δεν είναι ορισμένη σε \"%s\".", + "Adjusting this setting in php.ini will make Nextcloud run again" : "Προσαρμόζοντας αυτήν τη ρύθμιση στο php.ini το Nextcloud θα εκτελεστεί ξανά", "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "Το mbstring.func_overload έχει ορισθεί σε \"%s\" αντί για την αναμενόμενη τιμή \"0\"", "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Για να διορθώσετε αυτό το πρόβλημα ορίστε το <code>mbstring.func_overload</code> σε <code>0</code> στο αρχείο php.ini", + "libxml2 2.7.0 is at least required. Currently %s is installed." : "Απαιτείται τουλάχιστον το libxml2 2.7.0. Αυτή τη στιγμή είναι εγκατεστημένο το %s.", "To fix this issue update your libxml2 version and restart your web server." : "Για να διορθώσετε το σφάλμα ενημερώστε την έκδοση του libxml2 και επανεκκινήστε τον διακομιστή.", "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Η PHP φαίνεται να είναι ρυθμισμένη ώστε να αφαιρεί inline doc blocks. Αυτό θα καταστήσει πολλές βασικές εφαρμογές μη διαθέσιμες.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Αυτό πιθανόν προκλήθηκε από προσωρινή μνήμη (cache)/επιταχυντή όπως τη Zend OPcache ή τον eAccelerator.", - "PHP modules have been installed, but they are still listed as missing?" : "Κάποιες μονάδες PHP έχουν εγκατασταθεί, αλλά είναι ακόμα καταγεγραμμένες ως απούσες;", + "PHP modules have been installed, but they are still listed as missing?" : "Κάποια αρθρώματα της PHP έχουν εγκατασταθεί, αλλά είναι ακόμα καταγεγραμμένες ως εκλιπόντα;", "Please ask your server administrator to restart the web server." : "Παρακαλώ ζητήστε από το διαχειριστή του διακομιστή σας να επανεκκινήσει το διακομιστή δικτύου σας.", "PostgreSQL >= 9 required" : "Απαιτείται PostgreSQL >= 9", "Please upgrade your database version" : "Παρακαλώ αναβαθμίστε την έκδοση της βάσης δεδομένων σας", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Παρακαλώ αλλάξτε τις ρυθμίσεις σε 0770 έτσι ώστε ο κατάλογος να μην μπορεί να προβάλλεται από άλλους χρήστες.", "Your data directory is readable by other users" : "Ο κατάλογος δεδομένων σας είναι διαθέσιμος προς ανάγνωση από άλλους χρήστες", + "Your data directory must be an absolute path" : "Ο κατάλογος δεδομένων σας πρέπει να είναι απόλυτη διαδρομή", "Check the value of \"datadirectory\" in your configuration" : "Ελέγξτε την τιμή του \"Φάκελος Δεδομένων\" στις ρυθμίσεις σας", "Your data directory is invalid" : "Ο κατάλογος δεδομένων σας δεν είναι έγκυρος", + "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Εξασφαλίστε ότι υπάρχει ένα αρχείο με όνομα \".ocdata\" στον βασικό κατάλογο του καταλόγου δεδομένων.", "Could not obtain lock type %d on \"%s\"." : "Αδυναμία ανάκτησης τύπου κλειδιού %d στο \"%s\".", + "Storage unauthorized. %s" : "Αποθηκευτικός χώρος χωρίς εξουσιοδότηση. %s", + "Storage incomplete configuration. %s" : "Ελλιπής διαμόρφωση αποθηκευτικού χώρου. %s", + "Storage connection error. %s" : "Σφάλμα σύνδεσης με αποθηκευτικό χώρο. %s", "Storage is temporarily not available" : "Μη διαθέσιμος χώρος αποθήκευσης προσωρινά", + "Storage connection timeout. %s" : "Λήξη χρονικού ορίου σύνδεσης με αποθηκευτικό χώρο.%s", "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Αυτό μπορεί συνήθως να διορθωθεί %sπαρέχοντας δικαιώματα εγγραφής για το φάκελο config στο διακομιστή δικτύου%s.", "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" : "Δεν μπορεί να γίνει διαμοιρασμός αρχείων με δικαιώματα δημιουργίας", + "Cannot set expiration date more than %s days in the future" : "Δεν είναι δυνατό να τεθεί η ημερομηνία λήξης σε περισσότερες από %s ημέρες στο μέλλον", "Personal" : "Προσωπικά", "Admin" : "Διαχείριση", "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Αυτό μπορεί συνήθως να διορθωθεί %sδίνοντας διακαιώματα εγγραφής για τον κατάλογο εφαρμογών στο διακομιστή δικτύου%s ή απενεργοποιώντας το κέντρο εφαρμογών στο αρχείο config.", "Cannot create \"data\" directory (%s)" : "Αδυναμία δημιουργίας του καταλόγου \"data\" (%s)", + "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Αυτό μπορεί συνήθως να διορθωθεί<a href=\"%s\" target=\"_blank\" rel=\"noreferrer\"> δίνοντας στον διακομιστή ιστού δικαιώματα εγγραφής στον βασικό κατάλογο</a>.", "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Τα δικαιώματα πρόσβασης μπορούν συνήθως να διορθωθούν %sδίνοντας δικαιώματα εγγραφής για τον βασικό κατάλογο στο διακομιστή δικτύου%s.", "Data directory (%s) is readable by other users" : "Ο κατάλογος δεδομένων (%s) είναι διαθέσιμος προς ανάγνωση από άλλους χρήστες", "Data directory (%s) must be an absolute path" : "Κατάλογος δεδομένων (%s) πρεπει να είναι απόλυτη η διαδρομή", diff --git a/lib/l10n/en_GB.js b/lib/l10n/en_GB.js index 525dcaf4b8e..3d28e5dd2c5 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", diff --git a/lib/l10n/en_GB.json b/lib/l10n/en_GB.json index 6ee6bde4a22..8c91d6723a6 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", diff --git a/lib/l10n/es.js b/lib/l10n/es.js index bd4fbae9ebd..7ae62c80315 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", diff --git a/lib/l10n/es.json b/lib/l10n/es.json index cff0f78bd8c..3b4f305142f 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", diff --git a/lib/l10n/es_MX.js b/lib/l10n/es_MX.js index b55c5d349fa..2b7a4c48856 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", diff --git a/lib/l10n/es_MX.json b/lib/l10n/es_MX.json index 889a51bda26..561d2415a59 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", diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js index 47f7df11555..1f1e14fc867 100644 --- a/lib/l10n/fr.js +++ b/lib/l10n/fr.js @@ -12,6 +12,7 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s et %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s et %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s et %5$s", + "Education Edition" : "Édition pour l'éducation ", "Enterprise bundle" : "Pack pour entreprise", "Groupware bundle" : "Pack pour travail collaboratif", "Social sharing bundle" : "Pack pour partage social", diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json index 502ed939f78..9ce75adbe6e 100644 --- a/lib/l10n/fr.json +++ b/lib/l10n/fr.json @@ -10,6 +10,7 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s et %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s et %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s et %5$s", + "Education Edition" : "Édition pour l'éducation ", "Enterprise bundle" : "Pack pour entreprise", "Groupware bundle" : "Pack pour travail collaboratif", "Social sharing bundle" : "Pack pour partage social", diff --git a/lib/l10n/nb.js b/lib/l10n/nb.js index ec86a04be47..47a1daa6466 100644 --- a/lib/l10n/nb.js +++ b/lib/l10n/nb.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" : "Utdanningsversjon", "Enterprise bundle" : "Bedrifts-pakke", "Groupware bundle" : "Gruppevare-pakke", "Social sharing bundle" : "Sosialdelings-pakke", diff --git a/lib/l10n/nb.json b/lib/l10n/nb.json index 06f17fbd8ff..3f6be7ddfa5 100644 --- a/lib/l10n/nb.json +++ b/lib/l10n/nb.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" : "Utdanningsversjon", "Enterprise bundle" : "Bedrifts-pakke", "Groupware bundle" : "Gruppevare-pakke", "Social sharing bundle" : "Sosialdelings-pakke", diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js index e98cc71c4fa..cbcad026291 100644 --- a/lib/l10n/pt_BR.js +++ b/lib/l10n/pt_BR.js @@ -12,6 +12,7 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s e %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s e %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s e %5$s", + "Education Edition" : "Edição Educativa", "Enterprise bundle" : "Pacote Enterprise", "Groupware bundle" : "Pacote Groupware", "Social sharing bundle" : "Pacote de compartilhamento social", diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json index a7fb31d8f9c..d9c52a6f043 100644 --- a/lib/l10n/pt_BR.json +++ b/lib/l10n/pt_BR.json @@ -10,6 +10,7 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s e %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s e %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s e %5$s", + "Education Edition" : "Edição Educativa", "Enterprise bundle" : "Pacote Enterprise", "Groupware bundle" : "Pacote Groupware", "Social sharing bundle" : "Pacote de compartilhamento social", diff --git a/lib/l10n/sq.js b/lib/l10n/sq.js index 8de60a08071..0fff3ba707b 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,20 @@ 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", + "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 +140,7 @@ OC.L10N.register( "Su" : "Di", "Mo" : "Hë", "Tu" : "Ma", - "We" : "Më", + "We" : "Ne", "Th" : "En", "Fr" : "Pr", "Sa" : "Sh", @@ -159,6 +171,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 +184,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 +214,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", diff --git a/lib/l10n/sq.json b/lib/l10n/sq.json index bc20a1d9ad2..8486570e06f 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,20 @@ "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", + "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 +138,7 @@ "Su" : "Di", "Mo" : "Hë", "Tu" : "Ma", - "We" : "Më", + "We" : "Ne", "Th" : "En", "Fr" : "Pr", "Sa" : "Sh", @@ -157,6 +169,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 +182,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 +212,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", diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js index 0b1b5a8bff2..d4477b8002d 100644 --- a/lib/l10n/tr.js +++ b/lib/l10n/tr.js @@ -12,6 +12,7 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s ve %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s ve %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s ve %5$s", + "Education Edition" : "Eğitim Sürümü", "Enterprise bundle" : "Kurumsal paket", "Groupware bundle" : "Grup paketi", "Social sharing bundle" : "Sosyal ağ paketi", diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json index 498e75ffb08..cdd37b07a30 100644 --- a/lib/l10n/tr.json +++ b/lib/l10n/tr.json @@ -10,6 +10,7 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s ve %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s ve %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s ve %5$s", + "Education Edition" : "Eğitim Sürümü", "Enterprise bundle" : "Kurumsal paket", "Groupware bundle" : "Grup paketi", "Social sharing bundle" : "Sosyal ağ paketi", diff --git a/lib/l10n/zh_CN.js b/lib/l10n/zh_CN.js index aee9d512d9a..847637e649c 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" : "社交分享捆绑包", diff --git a/lib/l10n/zh_CN.json b/lib/l10n/zh_CN.json index 40af580cd2d..0838ca012b6 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" : "社交分享捆绑包", 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/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 b43d0d7d0a4..60a5de97bbf 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -1252,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/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/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..fee913f956c 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']); @@ -347,7 +349,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..c3b81d2baf7 100644 --- a/lib/public/AppFramework/Http/Response.php +++ b/lib/public/AppFramework/Http/Response.php @@ -228,7 +228,7 @@ class Response { /** * By default renders no output - * @return null + * @return string|null * @since 6.0.0 */ public function render() { 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..e0129af50f1 100644 --- a/settings/Controller/ChangePasswordController.php +++ b/settings/Controller/ChangePasswordController.php @@ -22,14 +22,15 @@ namespace OC\Settings\Controller; use OC\HintException; +use OC\User\Manager as UserManager; +use OC\Group\Manager as GroupManager; +use OC\User\Session; use OCP\App\IAppManager; use OCP\AppFramework\Controller; use OCP\AppFramework\Http\JSONResponse; -use OCP\IGroupManager; use OCP\IL10N; use OCP\IRequest; use OCP\IUser; -use OCP\IUserManager; use OCP\IUserSession; class ChangePasswordController extends Controller { @@ -37,16 +38,16 @@ class ChangePasswordController extends Controller { /** @var string */ private $userId; - /** @var IUserManager */ + /** @var UserManager */ private $userManager; /** @var IL10N */ private $l; - /** @var IGroupManager */ + /** @var GroupManager */ private $groupManager; - /** @var IUserSession */ + /** @var Session */ private $userSession; /** @var IAppManager */ @@ -58,18 +59,18 @@ class ChangePasswordController extends Controller { * @param string $appName * @param IRequest $request * @param $userId - * @param IUserManager $userManager + * @param UserManager $userManager * @param IUserSession $userSession - * @param IGroupManager $groupManager + * @param GroupManager $groupManager * @param IAppManager $appManager * @param IL10N $l */ public function __construct($appName, IRequest $request, $userId, - IUserManager $userManager, + UserManager $userManager, IUserSession $userSession, - IGroupManager $groupManager, + GroupManager $groupManager, IAppManager $appManager, IL10N $l) { parent::__construct($appName, $request); 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/js/settings/personalInfo.js b/settings/js/settings/personalInfo.js index 306994a7094..89b37d291c5 100644 --- a/settings/js/settings/personalInfo.js +++ b/settings/js/settings/personalInfo.js @@ -169,7 +169,6 @@ $(document).ready(function () { if (data.status === "success") { $("#passwordbutton").after("<span class='checkmark icon icon-checkmark password-state'></span>"); removeloader(); - $(".personal-show-label").show(); $('#pass1').val(''); $('#pass2').val('').change(); } @@ -185,6 +184,7 @@ $(document).ready(function () { } ); } + $(".personal-show-label").show(); $(".password-loading").remove(); $("#passwordbutton").removeAttr('disabled'); }); diff --git a/settings/l10n/pt_BR.js b/settings/l10n/pt_BR.js index 1587d0f3476..a8306471877 100644 --- a/settings/l10n/pt_BR.js +++ b/settings/l10n/pt_BR.js @@ -396,7 +396,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", diff --git a/settings/l10n/pt_BR.json b/settings/l10n/pt_BR.json index a34e2d1d3f0..c60c3726a4a 100644 --- a/settings/l10n/pt_BR.json +++ b/settings/l10n/pt_BR.json @@ -394,7 +394,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", diff --git a/settings/l10n/sq.js b/settings/l10n/sq.js index 3a4f67e14e0..e9544aa8b9b 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,36 @@ 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", + "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.", + "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 +297,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 +306,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 +332,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 +439,9 @@ 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", + "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..e29a9ced5fe 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,36 @@ "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", + "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.", + "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 +295,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 +304,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 +330,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 +437,9 @@ "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", + "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/zh_TW.js b/settings/l10n/zh_TW.js index 7dedf175dfa..ce4ed5fd828 100644 --- a/settings/l10n/zh_TW.js +++ b/settings/l10n/zh_TW.js @@ -8,6 +8,9 @@ OC.L10N.register( "You changed your email address" : "您已更改您的電子郵件地址", "Your email address was changed by an administrator" : "您的電子郵件已被管理員變更", "Security" : "安全性", + "You successfully logged in using two-factor authentication (%1$s)" : "你已成功使用兩步驟驗證進行登入 (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "使用兩步驟驗證登入失敗 (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "你的 <strong>密碼</strong> 或 <strong>email</strong> 已更動。", "Your apps" : "您的應用程式", "Enabled apps" : "已啓用應用程式", "Disabled apps" : "已停用應用程式", @@ -27,6 +30,8 @@ OC.L10N.register( "Unable to add group." : "無法新增群組", "Unable to delete group." : "無法刪除群組", "Invalid SMTP password." : "無效的 SMTP 密碼", + "Well done, %s!" : "太棒了, %s!", + "If you received this email, the email configuration seems to be correct." : "如果你收到這封email,代表email設定是正確的。", "Email setting test" : "測試郵件設定", "Email could not be sent. Check your mail server log" : "郵件無法寄出,請查閱mail伺服器記錄檔", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "寄出郵件時發生問題,請檢查您的設定(錯誤訊息:%s)", @@ -36,6 +41,9 @@ OC.L10N.register( "A user with that name already exists." : "同名的使用者已經存在", "Unable to create user." : "無法建立使用者", "Unable to delete user." : "無法移除使用者", + "Error while enabling user." : "啟用用戶時發生錯誤", + "Error while disabling user." : "停用用戶時發生錯誤", + "Settings saved" : "設定已存檔", "Unable to change full name" : "無法變更全名", "Unable to change email address" : "無法變更email地址", "Your full name has been changed." : "您的全名已變更", @@ -43,10 +51,25 @@ OC.L10N.register( "Invalid user" : "無效的使用者", "Unable to change mail address" : "無法更改 email 地址", "Email saved" : "Email 已儲存", + "Your password on %s was changed." : "你的密碼在 %s 已變更。", + "Your password on %s was reset by an administrator." : "您的密碼在 %s 已被管理員重設。", + "Password changed for %s" : "%s 的密碼已變更。", + "If you did not request this, please contact an administrator." : "如果你未發送此請求 ,請聯絡系統管理員。", + "Password for %1$s changed on %2$s" : "%1$s 的密碼已在 %2$s 變更。", + "%1$s changed your email address on %2$s." : "%1$s 更改你的 email 地址在 %2$s 時。", + "Your email address on %s was changed." : "你的email地址在 %s 已變更。", + "Your email address on %s was changed by an administrator." : "你的email地址在 %s 已被管理員變更。", + "Email address changed for %s" : "%s 的email地址已變更。", + "The new email address is %s" : "新的email地址為 %s", + "Your username is: %s" : "你的使用者名稱為: %s", "Set your password" : "設定您的密碼", + "Go to %s" : "前往 %s", + "Install Client" : "安裝使用端", "Your %s account was created" : "您的 %s 帳號已經建立", + "Password confirmation is required" : "要求密碼確認", "Couldn't remove app." : "無法移除應用程式", "Couldn't update app." : "無法更新應用程式", + "Are you really sure you want add {domain} as trusted domain?" : "您確定要新增 {domain} 為信任的網域?", "Add trusted domain" : "新增信任的網域", "Migration in progress. Please wait until the migration is finished" : "資料搬移中,請耐心等候直到資料搬移結束", "Migration started …" : "開始遷移…", @@ -61,12 +84,15 @@ OC.L10N.register( "The app will be downloaded from the app store" : "將會從應用程式商店下載這個應用程式", "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." : "審查通過的應用程式經由可信任的開發人員所設計,並且經過一連串的安全測試,他們在開放的程式庫中維護這些應用程式,而且確保這些應用程式能穩定運作", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "這個新應用程式並沒有經過安全檢測,可能會是不穩定的,如果您要安裝的話,風險自行負責。", + "Disabling app …" : "停用應用程式中 ...", "Error while disabling app" : "停用應用程式錯誤", "Disable" : "停用", "Enable" : "啟用", "Enabling app …" : "啟動中...", "Error while enabling app" : "啟用應用程式錯誤", "Error: This app can not be enabled because it makes the server unstable" : "錯誤:此應用程序無法啟用,因為它使伺服器不穩定", + "Error: Could not disable broken app" : "錯誤: 無法啟用已損毀的應用", + "Error while disabling broken app" : "關閉損毀的應用時發生錯誤", "Updating...." : "更新中…", "Error while updating app" : "更新應用程式錯誤", "Updated" : "已更新", @@ -79,6 +105,7 @@ OC.L10N.register( "Experimental" : "實驗性質", "No apps found for {query}" : "沒有符合 {query} 的應用程式", "Enable all" : "全部啟用", + "Allow filesystem access" : "允許檔案系統的存取", "Disconnect" : "中斷連線", "Revoke" : "撤消", "Internet Explorer" : "Internet Explorer", @@ -98,12 +125,17 @@ OC.L10N.register( "Not supported!" : "不支援!", "Press ⌘-C to copy." : "按下 ⌘-C 來複製", "Press Ctrl-C to copy." : "按下 Ctrl-C 來複製", + "Error while creating device token" : "建立裝置token時發生錯誤", + "Error while deleting the token" : "刪除token時發生錯誤", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "發生錯誤,請您上傳 ASCII 編碼的 PEM 憑證", "Valid until {date}" : "{date} 前有效", "Delete" : "刪除", "Local" : "本地", "Private" : "私人的", + "Only visible to local users" : "僅本地用戶可見", + "Only visible to you" : "僅你可見", "Contacts" : "聯絡人", + "Visible to local users and to trusted servers" : "僅本地用戶與信任伺服器可見", "Public" : "公開", "Select a profile picture" : "選擇大頭貼", "Very weak password" : "密碼強度非常弱", diff --git a/settings/l10n/zh_TW.json b/settings/l10n/zh_TW.json index 8fcafb7e360..2443afab52a 100644 --- a/settings/l10n/zh_TW.json +++ b/settings/l10n/zh_TW.json @@ -6,6 +6,9 @@ "You changed your email address" : "您已更改您的電子郵件地址", "Your email address was changed by an administrator" : "您的電子郵件已被管理員變更", "Security" : "安全性", + "You successfully logged in using two-factor authentication (%1$s)" : "你已成功使用兩步驟驗證進行登入 (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "使用兩步驟驗證登入失敗 (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "你的 <strong>密碼</strong> 或 <strong>email</strong> 已更動。", "Your apps" : "您的應用程式", "Enabled apps" : "已啓用應用程式", "Disabled apps" : "已停用應用程式", @@ -25,6 +28,8 @@ "Unable to add group." : "無法新增群組", "Unable to delete group." : "無法刪除群組", "Invalid SMTP password." : "無效的 SMTP 密碼", + "Well done, %s!" : "太棒了, %s!", + "If you received this email, the email configuration seems to be correct." : "如果你收到這封email,代表email設定是正確的。", "Email setting test" : "測試郵件設定", "Email could not be sent. Check your mail server log" : "郵件無法寄出,請查閱mail伺服器記錄檔", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "寄出郵件時發生問題,請檢查您的設定(錯誤訊息:%s)", @@ -34,6 +39,9 @@ "A user with that name already exists." : "同名的使用者已經存在", "Unable to create user." : "無法建立使用者", "Unable to delete user." : "無法移除使用者", + "Error while enabling user." : "啟用用戶時發生錯誤", + "Error while disabling user." : "停用用戶時發生錯誤", + "Settings saved" : "設定已存檔", "Unable to change full name" : "無法變更全名", "Unable to change email address" : "無法變更email地址", "Your full name has been changed." : "您的全名已變更", @@ -41,10 +49,25 @@ "Invalid user" : "無效的使用者", "Unable to change mail address" : "無法更改 email 地址", "Email saved" : "Email 已儲存", + "Your password on %s was changed." : "你的密碼在 %s 已變更。", + "Your password on %s was reset by an administrator." : "您的密碼在 %s 已被管理員重設。", + "Password changed for %s" : "%s 的密碼已變更。", + "If you did not request this, please contact an administrator." : "如果你未發送此請求 ,請聯絡系統管理員。", + "Password for %1$s changed on %2$s" : "%1$s 的密碼已在 %2$s 變更。", + "%1$s changed your email address on %2$s." : "%1$s 更改你的 email 地址在 %2$s 時。", + "Your email address on %s was changed." : "你的email地址在 %s 已變更。", + "Your email address on %s was changed by an administrator." : "你的email地址在 %s 已被管理員變更。", + "Email address changed for %s" : "%s 的email地址已變更。", + "The new email address is %s" : "新的email地址為 %s", + "Your username is: %s" : "你的使用者名稱為: %s", "Set your password" : "設定您的密碼", + "Go to %s" : "前往 %s", + "Install Client" : "安裝使用端", "Your %s account was created" : "您的 %s 帳號已經建立", + "Password confirmation is required" : "要求密碼確認", "Couldn't remove app." : "無法移除應用程式", "Couldn't update app." : "無法更新應用程式", + "Are you really sure you want add {domain} as trusted domain?" : "您確定要新增 {domain} 為信任的網域?", "Add trusted domain" : "新增信任的網域", "Migration in progress. Please wait until the migration is finished" : "資料搬移中,請耐心等候直到資料搬移結束", "Migration started …" : "開始遷移…", @@ -59,12 +82,15 @@ "The app will be downloaded from the app store" : "將會從應用程式商店下載這個應用程式", "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." : "審查通過的應用程式經由可信任的開發人員所設計,並且經過一連串的安全測試,他們在開放的程式庫中維護這些應用程式,而且確保這些應用程式能穩定運作", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "這個新應用程式並沒有經過安全檢測,可能會是不穩定的,如果您要安裝的話,風險自行負責。", + "Disabling app …" : "停用應用程式中 ...", "Error while disabling app" : "停用應用程式錯誤", "Disable" : "停用", "Enable" : "啟用", "Enabling app …" : "啟動中...", "Error while enabling app" : "啟用應用程式錯誤", "Error: This app can not be enabled because it makes the server unstable" : "錯誤:此應用程序無法啟用,因為它使伺服器不穩定", + "Error: Could not disable broken app" : "錯誤: 無法啟用已損毀的應用", + "Error while disabling broken app" : "關閉損毀的應用時發生錯誤", "Updating...." : "更新中…", "Error while updating app" : "更新應用程式錯誤", "Updated" : "已更新", @@ -77,6 +103,7 @@ "Experimental" : "實驗性質", "No apps found for {query}" : "沒有符合 {query} 的應用程式", "Enable all" : "全部啟用", + "Allow filesystem access" : "允許檔案系統的存取", "Disconnect" : "中斷連線", "Revoke" : "撤消", "Internet Explorer" : "Internet Explorer", @@ -96,12 +123,17 @@ "Not supported!" : "不支援!", "Press ⌘-C to copy." : "按下 ⌘-C 來複製", "Press Ctrl-C to copy." : "按下 Ctrl-C 來複製", + "Error while creating device token" : "建立裝置token時發生錯誤", + "Error while deleting the token" : "刪除token時發生錯誤", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "發生錯誤,請您上傳 ASCII 編碼的 PEM 憑證", "Valid until {date}" : "{date} 前有效", "Delete" : "刪除", "Local" : "本地", "Private" : "私人的", + "Only visible to local users" : "僅本地用戶可見", + "Only visible to you" : "僅你可見", "Contacts" : "聯絡人", + "Visible to local users and to trusted servers" : "僅本地用戶與信任伺服器可見", "Public" : "公開", "Select a profile picture" : "選擇大頭貼", "Very weak password" : "密碼強度非常弱", 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/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/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/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/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 = ''; |