diff --git a/.drone.yml b/.drone.yml index bd06ae1373..11bc75092d 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: @@ -23,12 +23,12 @@ pipeline: image: nextcloudci/php5.6:php5.6-7 commands: - composer install - - ./lib/composer/bin/parallel-lint --exclude lib/composer/jakub-onderka/ --exclude 3rdparty/symfony/polyfill-php70/Resources/stubs/ --exclude 3rdparty/patchwork/utf8/src/Patchwork/Utf8/Bootup/ --exclude 3rdparty/paragonie/random_compat/lib/ --exclude lib/composer/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php . + - ./lib/composer/bin/parallel-lint --exclude build/.phan/ --exclude lib/composer/jakub-onderka/ --exclude 3rdparty/symfony/polyfill-php70/Resources/stubs/ --exclude 3rdparty/patchwork/utf8/src/Patchwork/Utf8/Bootup/ --exclude 3rdparty/paragonie/random_compat/lib/ --exclude lib/composer/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php . when: matrix: TESTS: syntax-php5.6 syntax-php7.0: - image: nextcloudci/php7.0:php7.0-7 + image: nextcloudci/php7.0:php7.0-13 commands: - composer install - ./lib/composer/bin/parallel-lint --exclude lib/composer/jakub-onderka/ --exclude 3rdparty/symfony/polyfill-php70/Resources/stubs/ --exclude 3rdparty/patchwork/utf8/src/Patchwork/Utf8/Bootup/ --exclude 3rdparty/paragonie/random_compat/lib/ --exclude lib/composer/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php . @@ -36,13 +36,24 @@ pipeline: matrix: TESTS: syntax-php7.0 syntax-php7.1: - image: nextcloudci/php7.1:php7.1-11 + image: nextcloudci/php7.1:php7.1-12 commands: - composer install - ./lib/composer/bin/parallel-lint --exclude lib/composer/jakub-onderka/ --exclude 3rdparty/symfony/polyfill-php70/Resources/stubs/ --exclude 3rdparty/patchwork/utf8/src/Patchwork/Utf8/Bootup/ --exclude 3rdparty/paragonie/random_compat/lib/ --exclude lib/composer/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php . when: matrix: TESTS: syntax-php7.1 + phan: + image: nextcloudci/php7.1:php7.1-12 + commands: + - rm /etc/php/7.1/cli/conf.d/20-xdebug.ini + - composer install + - composer require --dev "etsy/phan:dev-master" + - ./lib/composer/etsy/phan/phan -k build/.phan/config.php + - php ./build/.phan/plugin-checker.php + when: + matrix: + TESTS: phan litmus-v1: image: nextcloudci/litmus-php7.0:litmus-php7.0-4 commands: @@ -143,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: @@ -151,7 +162,7 @@ pipeline: DB: NODB PHP: "7.0" nodb-php7.1: - image: nextcloudci/php7.1:php7.1-11 + image: nextcloudci/php7.1:php7.1-12 commands: - NOCOVERAGE=true TEST_SELECTION=NODB ./autotest.sh sqlite when: @@ -167,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: @@ -175,7 +186,7 @@ pipeline: DB: sqlite PHP: "7.0" sqlite-php7.1: - image: nextcloudci/php7.1:php7.1-11 + image: nextcloudci/php7.1:php7.1-12 commands: - NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh sqlite when: @@ -199,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: @@ -459,26 +479,26 @@ pipeline: acceptance-access-levels: image: nextcloudci/integration-php7.0:integration-php7.0-4 commands: - - tests/acceptance/run-local.sh --timeout-multiplier 10 allow-git-repository-modifications features/access-levels.feature + - tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-access-levels --selenium-server selenium:4444 allow-git-repository-modifications features/access-levels.feature when: matrix: TESTS-ACCEPTANCE: access-levels acceptance-app-files: image: nextcloudci/integration-php7.0:integration-php7.0-4 commands: - - tests/acceptance/run-local.sh --timeout-multiplier 10 allow-git-repository-modifications features/app-files.feature + - tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-app-files --selenium-server selenium:4444 allow-git-repository-modifications features/app-files.feature when: matrix: TESTS-ACCEPTANCE: app-files acceptance-login: image: nextcloudci/integration-php7.0:integration-php7.0-4 commands: - - tests/acceptance/run-local.sh --timeout-multiplier 10 allow-git-repository-modifications features/login.feature + - tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-login --selenium-server selenium:4444 allow-git-repository-modifications features/login.feature when: 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 @@ -488,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 @@ -498,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 @@ -519,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 @@ -536,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 @@ -564,16 +614,17 @@ matrix: - TESTS: integration-transfer-ownership-features - TESTS: integration-ldap-features - TESTS: integration-trashbin -# - TESTS: acceptance -# TESTS-ACCEPTANCE: access-levels -# - TESTS: acceptance -# TESTS-ACCEPTANCE: app-files -# - TESTS: acceptance -# TESTS-ACCEPTANCE: login + - TESTS: acceptance + TESTS-ACCEPTANCE: access-levels + - TESTS: acceptance + TESTS-ACCEPTANCE: app-files + - TESTS: acceptance + TESTS-ACCEPTANCE: login - TESTS: jsunit - TESTS: syntax-php5.6 - TESTS: syntax-php7.0 - TESTS: syntax-php7.1 + - TESTS: phan - TESTS: litmus-v1 - TESTS: litmus-v2 - TESTS: caldavtester-old-endpoint @@ -589,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: @@ -632,7 +656,7 @@ services: image: postgres environment: - POSTGRES_USER=oc_autotest - - POSTGRES_PASSWORD=oc_autotest + - POSTGRES_PASSWORD=owncloud when: matrix: DB: postgres diff --git a/.scrutinizer.yml b/.scrutinizer.yml index 07743ee981..1851bd4095 100644 --- a/.scrutinizer.yml +++ b/.scrutinizer.yml @@ -1,6 +1,11 @@ before_commands: - 'git submodule update --init --recursive' +checks: + php: + excluded_dependencies: + - etsy/phan + filter: excluded_paths: - '3rdparty/*' diff --git a/3rdparty b/3rdparty index cae79927de..107e29e4c8 160000 --- a/3rdparty +++ b/3rdparty @@ -1 +1 @@ -Subproject commit cae79927de50c6ab0bf77e5653015b6579ae2aea +Subproject commit 107e29e4c81d6b255abee5bc77fef3040df6ca07 diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f61c17c26..9789386dd0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,20 +1,4 @@ -ChangeLog +Changelog ========= -NC 11 (2016-12-13) ------------------- -* PHP 5.4 and 5.5 no longer supported -* PHP 7.1 support -* OC_L10N removed use \OCP\IL10N (#1948) -* Preview handling is improved by sharing previews: - * Preview sharing (shared files/external storages) - * Previews are stored in the AppData - * Previews are served faster by not first converting them to image objects -* Core preview route changed: - * Route for the urlgenerator changed from 'core_ajax_preview' to 'core.Preview.getPreview' - * $urlGenerator->linkToRoute('core_ajax_preview', ...) => $urlGenerator->linkToRoute('core.Preview.getPreview', ...) -* Avatars are cached -* Avatars are moved to AppData - * For existing avatars this happens automatically in a background job which means that on upgrade you might - not see your avatar right away. However after the job has run it should show up again automatically. - +The change log is at [https://nextcloud.com/changelog/](https://nextcloud.com/changelog/). \ No newline at end of file diff --git a/README.md b/README.md index 17035a4d91..9b7aa4298b 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,7 @@ * :clipboard: [Forum](https://help.nextcloud.com) * :busts_in_silhouette: [Facebook](https://facebook.com/nextclouders) * :hatching_chick: [Twitter](https://twitter.com/Nextclouders) +* :elephant: [Mastodon](https://mastodon.xyz/@nextcloud) […learn more about how to get support for Nextcloud here!](https://nextcloud.com/support) diff --git a/apps/comments/appinfo/routes.php b/apps/comments/appinfo/routes.php index ab751ddb2a..66b3abe61b 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/l10n/el.js b/apps/comments/l10n/el.js index fa36f68d1a..e96144e1c6 100644 --- a/apps/comments/l10n/el.js +++ b/apps/comments/l10n/el.js @@ -8,7 +8,7 @@ OC.L10N.register( "Post" : "Δημοσίευση", "Cancel" : "Ακύρωση", "Edit comment" : "Επεξεργασία σχολίου", - "[Deleted user]" : "[Διαγραφή χρήστη]", + "[Deleted user]" : "[Διαγραμμένος χρήστης]", "No comments yet, start the conversation!" : "Δεν υπάρχουν σχόλια, ξεκινήστε την συζήτηση!", "More comments …" : "Περισσότερα σχόλια ...", "Save" : "Αποθήκευση", diff --git a/apps/comments/l10n/el.json b/apps/comments/l10n/el.json index 9181bd9eb7..062e814114 100644 --- a/apps/comments/l10n/el.json +++ b/apps/comments/l10n/el.json @@ -6,7 +6,7 @@ "Post" : "Δημοσίευση", "Cancel" : "Ακύρωση", "Edit comment" : "Επεξεργασία σχολίου", - "[Deleted user]" : "[Διαγραφή χρήστη]", + "[Deleted user]" : "[Διαγραμμένος χρήστης]", "No comments yet, start the conversation!" : "Δεν υπάρχουν σχόλια, ξεκινήστε την συζήτηση!", "More comments …" : "Περισσότερα σχόλια ...", "Save" : "Αποθήκευση", diff --git a/apps/comments/l10n/lt_LT.js b/apps/comments/l10n/lt_LT.js index ef4967e9fc..bfd7488b8f 100644 --- a/apps/comments/l10n/lt_LT.js +++ b/apps/comments/l10n/lt_LT.js @@ -1,8 +1,34 @@ OC.L10N.register( "comments", { - "Cancel" : "Atšaukti", - "Save" : "Išsaugoti", - "Comment" : "Komentaras" + "Comments" : "Komentarai", + "Unknown user" : "Nežinomas naudotojas", + "New comment …" : "Naujas komentaras …", + "Delete comment" : "Ištrinti komentarą", + "Post" : "Įrašas", + "Cancel" : "Atsisakyti", + "Edit comment" : "Redaguoti komentarą", + "[Deleted user]" : "[Ištrintas naudotojas]", + "No comments yet, start the conversation!" : "Kol kas komentarų nėra, pradėkite pokalbį!", + "More comments …" : "Daugiau komentarų …", + "Save" : "Įrašyti", + "Allowed characters {count} of {max}" : "Leidžiama simbolių {count} iš {max}", + "Error occurred while retrieving comment with id {id}" : "Klaida bandant parodyti komentarą pagal identifikavimo numerį {id}", + "Error occurred while updating comment with id {id}" : "Klaida bandant pataisyti komentarą pagal identifikavimo numerį {id}", + "Error occurred while posting comment" : "Skelbiant komentarą, įvyko klaida", + "_%n unread comment_::_%n unread comments_" : ["%n neskaitytas komentaras","%n neskaityti komentarai","%n neskaitytų komentarų"], + "Comment" : "Komentaras", + "You commented" : "Jūs pakomentavote", + "%1$s commented" : "%1$s pakomentavo", + "{author} commented" : "{author} pakomentavo", + "You commented on %1$s" : "Pakomentavote %1$s", + "You commented on {file}" : "Pakomentavote {file}", + "%1$s commented on %2$s" : "%1$s pakomentavo %2$s", + "{author} commented on {file}" : "{author} pakomentavo {file}", + "Comments for files" : "Failų komentarai", + "A (now) deleted user mentioned you in a comment on “%s”" : "Ištrintas vartotojas paminėjo jus komentare \"%s\"", + "A (now) deleted user mentioned you in a comment on “{file}”" : "Ištrintas vartotojas paminėjo jus komentare \"{file}\"", + "%1$s mentioned you in a comment on “%2$s”" : "%1$s paminėjo jus komentare \"%2$s\"", + "{user} mentioned you in a comment on “{file}”" : "{user} paminėjo jus komentare “{file}”" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/comments/l10n/lt_LT.json b/apps/comments/l10n/lt_LT.json index 59432d7b6b..d85b132b33 100644 --- a/apps/comments/l10n/lt_LT.json +++ b/apps/comments/l10n/lt_LT.json @@ -1,6 +1,32 @@ { "translations": { - "Cancel" : "Atšaukti", - "Save" : "Išsaugoti", - "Comment" : "Komentaras" + "Comments" : "Komentarai", + "Unknown user" : "Nežinomas naudotojas", + "New comment …" : "Naujas komentaras …", + "Delete comment" : "Ištrinti komentarą", + "Post" : "Įrašas", + "Cancel" : "Atsisakyti", + "Edit comment" : "Redaguoti komentarą", + "[Deleted user]" : "[Ištrintas naudotojas]", + "No comments yet, start the conversation!" : "Kol kas komentarų nėra, pradėkite pokalbį!", + "More comments …" : "Daugiau komentarų …", + "Save" : "Įrašyti", + "Allowed characters {count} of {max}" : "Leidžiama simbolių {count} iš {max}", + "Error occurred while retrieving comment with id {id}" : "Klaida bandant parodyti komentarą pagal identifikavimo numerį {id}", + "Error occurred while updating comment with id {id}" : "Klaida bandant pataisyti komentarą pagal identifikavimo numerį {id}", + "Error occurred while posting comment" : "Skelbiant komentarą, įvyko klaida", + "_%n unread comment_::_%n unread comments_" : ["%n neskaitytas komentaras","%n neskaityti komentarai","%n neskaitytų komentarų"], + "Comment" : "Komentaras", + "You commented" : "Jūs pakomentavote", + "%1$s commented" : "%1$s pakomentavo", + "{author} commented" : "{author} pakomentavo", + "You commented on %1$s" : "Pakomentavote %1$s", + "You commented on {file}" : "Pakomentavote {file}", + "%1$s commented on %2$s" : "%1$s pakomentavo %2$s", + "{author} commented on {file}" : "{author} pakomentavo {file}", + "Comments for files" : "Failų komentarai", + "A (now) deleted user mentioned you in a comment on “%s”" : "Ištrintas vartotojas paminėjo jus komentare \"%s\"", + "A (now) deleted user mentioned you in a comment on “{file}”" : "Ištrintas vartotojas paminėjo jus komentare \"{file}\"", + "%1$s mentioned you in a comment on “%2$s”" : "%1$s paminėjo jus komentare \"%2$s\"", + "{user} mentioned you in a comment on “{file}”" : "{user} paminėjo jus komentare “{file}”" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" } \ No newline at end of file diff --git a/apps/comments/l10n/zh_TW.js b/apps/comments/l10n/zh_TW.js index e57ae8e7d4..634b3355a4 100644 --- a/apps/comments/l10n/zh_TW.js +++ b/apps/comments/l10n/zh_TW.js @@ -26,6 +26,8 @@ OC.L10N.register( "%1$s commented on %2$s" : "%1$s 在 %2$s 留言", "{author} commented on {file}" : "{author} 對 {file} 留言", "Comments for files" : "檔案的留言", + "A (now) deleted user mentioned you in a comment on “%s”" : "用戶(被刪除)在 “%s” 留言中提到你", + "A (now) deleted user mentioned you in a comment on “{file}”" : "用戶(被刪除)在 “{file}” 留言中提到你", "%1$s mentioned you in a comment on “%2$s”" : "%1$s 在 “%2$s” 的留言中提到你", "{user} mentioned you in a comment on “{file}”" : "{user} 在 “{file}” 的留言中提到你" }, diff --git a/apps/comments/l10n/zh_TW.json b/apps/comments/l10n/zh_TW.json index b77bcb88fa..28935e79c9 100644 --- a/apps/comments/l10n/zh_TW.json +++ b/apps/comments/l10n/zh_TW.json @@ -24,6 +24,8 @@ "%1$s commented on %2$s" : "%1$s 在 %2$s 留言", "{author} commented on {file}" : "{author} 對 {file} 留言", "Comments for files" : "檔案的留言", + "A (now) deleted user mentioned you in a comment on “%s”" : "用戶(被刪除)在 “%s” 留言中提到你", + "A (now) deleted user mentioned you in a comment on “{file}”" : "用戶(被刪除)在 “{file}” 留言中提到你", "%1$s mentioned you in a comment on “%2$s”" : "%1$s 在 “%2$s” 的留言中提到你", "{user} mentioned you in a comment on “{file}”" : "{user} 在 “{file}” 的留言中提到你" },"pluralForm" :"nplurals=1; plural=0;" diff --git a/apps/comments/lib/Activity/Listener.php b/apps/comments/lib/Activity/Listener.php index 16852296cf..94176921f0 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 7bf686e796..ea4810f92e 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", '
', str_replace(['<', '>'], ['<', '>'], $message)); diff --git a/apps/comments/lib/Controller/Notifications.php b/apps/comments/lib/Controller/Notifications.php index c2a8175d17..9a07e2fbad 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 09092da539..60dd85f74c 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/appinfo/v1/publicwebdav.php b/apps/dav/appinfo/v1/publicwebdav.php index 3ef1c2e62a..37fcebe605 100644 --- a/apps/dav/appinfo/v1/publicwebdav.php +++ b/apps/dav/appinfo/v1/publicwebdav.php @@ -79,10 +79,12 @@ $server = $serverFactory->createServer($baseuri, $requestUri, $authPlugin, funct \OC\Files\Filesystem::addStorageWrapper('sharePermissions', function ($mountPoint, $storage) use ($share) { return new \OC\Files\Storage\Wrapper\PermissionsMask(array('storage' => $storage, 'mask' => $share->getPermissions() | \OCP\Constants::PERMISSION_SHARE)); }); + \OC\Files\Filesystem::logWarningWhenAddingStorageWrapper($previousLog); + OC_Util::tearDownFS(); OC_Util::setupFS($owner); - $ownerView = \OC\Files\Filesystem::getView(); + $ownerView = new \OC\Files\View('/'. $owner . '/files'); $path = $ownerView->getPath($fileId); $fileInfo = $ownerView->getFileInfo($path); $linkCheckPlugin->setFileInfo($fileInfo); diff --git a/apps/dav/l10n/el.js b/apps/dav/l10n/el.js index 28a4bb0a1f..6178ce44f3 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 calendar was modified" : "Τροποποιήθηκε ένα ημερολόγιο ", + "A calendar event was modified" : "Τροποποιήθηκε ένα γεγονός του ημερολογίου", + "A calendar todo was modified" : "Ενός ημερολογίου η εκκρεμότητα τροποποιήθηκε", "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 c9a9111917..21c2199a0a 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 calendar was modified" : "Τροποποιήθηκε ένα ημερολόγιο ", + "A calendar event was modified" : "Τροποποιήθηκε ένα γεγονός του ημερολογίου", + "A calendar todo was modified" : "Ενός ημερολογίου η εκκρεμότητα τροποποιήθηκε", "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 6138da0416..2004b3f507 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 calendar was modified" : "Një kalendar u modifikua", "A calendar event was modified" : "Një event në kalendar u modifikua", "A calendar todo was modified" : "Një kalendar todo 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 27a36bbff8..fde9a71c32 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 calendar was modified" : "Një kalendar u modifikua", "A calendar event was modified" : "Një event në kalendar u modifikua", "A calendar todo was modified" : "Një kalendar todo 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 6082e68dcd..36d425ecf6 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 b591eaa351..2c2e3d01c2 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 0ad1d13745..a665caa0e6 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 702b74bf1b..e11f922a63 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 7fe18cd865..d078790b6f 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']) { @@ -635,6 +636,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription * @param string $calendarUri * @param array $properties * @return int + * @suppress SqlInjectionChecker */ function createCalendar($principalUri, $calendarUri, array $properties) { $values = [ @@ -695,6 +697,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription * * Read the PropPatch documentation for more info and examples. * + * @param mixed $calendarId * @param PropPatch $propPatch * @return void */ @@ -702,6 +705,9 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription $supportedProperties = array_keys($this->propertyMap); $supportedProperties[] = '{' . Plugin::NS_CALDAV . '}schedule-calendar-transp'; + /** + * @suppress SqlInjectionChecker + */ $propPatch->handle($supportedProperties, function($mutations) use ($calendarId) { $newValues = []; foreach ($mutations as $propertyName => $propertyValue) { @@ -1152,7 +1158,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription $requirePostFilter = false; } // There was a time-range filter - if ($componentType == 'VEVENT' && isset($filters['comp-filters'][0]['time-range'])) { + if ($componentType === 'VEVENT' && isset($filters['comp-filters'][0]['time-range'])) { $timeRange = $filters['comp-filters'][0]['time-range']; // If start time OR the end time is not specified, we can do a @@ -1618,6 +1624,9 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription $supportedProperties = array_keys($this->subscriptionPropertyMap); $supportedProperties[] = '{http://calendarserver.org/ns/}source'; + /** + * @suppress SqlInjectionChecker + */ $propPatch->handle($supportedProperties, function($mutations) use ($subscriptionId) { $newValues = []; @@ -1925,7 +1934,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription public function setPublishStatus($value, $calendar) { $query = $this->db->getQueryBuilder(); if ($value) { - $publicUri = $this->random->generate(16, ISecureRandom::CHAR_UPPER.ISecureRandom::CHAR_DIGITS); + $publicUri = $this->random->generate(16, ISecureRandom::CHAR_HUMAN_READABLE); $query->insert('dav_shares') ->values([ 'principaluri' => $query->createNamedParameter($calendar->getPrincipalURI()), @@ -2096,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 5172cea6e2..647dbb5c58 100644 --- a/apps/dav/lib/CalDAV/Plugin.php +++ b/apps/dav/lib/CalDAV/Plugin.php @@ -31,7 +31,7 @@ class Plugin extends \Sabre\CalDAV\Plugin { function getCalendarHomeForPrincipal($principalUrl) { if (strrpos($principalUrl, 'principals/users', -strlen($principalUrl)) !== false) { - list(, $principalId) = URLUtil::splitPath($principalUrl); + list(, $principalId) = \Sabre\Uri\split($principalUrl); return self::CALENDAR_ROOT .'/' . $principalId; } diff --git a/apps/dav/lib/CalDAV/Search/SearchPlugin.php b/apps/dav/lib/CalDAV/Search/SearchPlugin.php index d658a50437..84e095da5f 100644 --- a/apps/dav/lib/CalDAV/Search/SearchPlugin.php +++ b/apps/dav/lib/CalDAV/Search/SearchPlugin.php @@ -134,7 +134,7 @@ class SearchPlugin extends ServerPlugin { // If we're dealing with the calendar home, the calendar home itself is // responsible for the calendar-query - if ($node instanceof CalendarHome && $depth == 2) { + if ($node instanceof CalendarHome && $depth === 2) { $nodePaths = $node->calendarSearch($report->filters, $report->limit, $report->offset); @@ -156,4 +156,4 @@ class SearchPlugin extends ServerPlugin { $this->server->generateMultiStatus($result, $prefer['return'] === 'minimal')); } -} \ No newline at end of file +} diff --git a/apps/dav/lib/CardDAV/CardDavBackend.php b/apps/dav/lib/CardDAV/CardDavBackend.php index 5742f97b70..7c27561195 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) . ')'; @@ -348,6 +348,9 @@ class CardDavBackend implements BackendInterface, SyncSupport { '{' . Plugin::NS_CARDDAV . '}addressbook-description', ]; + /** + * @suppress SqlInjectionChecker + */ $propPatch->handle($supportedProperties, function($mutations) use ($addressBookId) { $updates = []; @@ -1016,7 +1019,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { } $preferred = 0; foreach($property->parameters as $parameter) { - if ($parameter->name == 'TYPE' && strtoupper($parameter->getValue()) == 'PREF') { + if ($parameter->name === 'TYPE' && strtoupper($parameter->getValue()) === 'PREF') { $preferred = 1; break; } @@ -1088,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 b291a8360e..61b9915b1a 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 46cbb504cc..704b967a00 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 cb5a2ab812..6fe9d26614 100644 --- a/apps/dav/lib/Connector/Sabre/Directory.php +++ b/apps/dav/lib/Connector/Sabre/Directory.php @@ -225,7 +225,7 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node throw new \Sabre\DAV\Exception\NotFound('File with name ' . $path . ' could not be located'); } - if ($info['mimetype'] == 'httpd/unix-directory') { + if ($info['mimetype'] === 'httpd/unix-directory') { $node = new \OCA\DAV\Connector\Sabre\Directory($this->fileView, $info, $this->tree, $this->shareManager); } else { $node = new \OCA\DAV\Connector\Sabre\File($this->fileView, $info, $this->shareManager); @@ -387,7 +387,7 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node throw new \Sabre\DAV\Exception\Forbidden('Could not copy directory ' . $sourceNode->getName() . ', target exists'); } - list($sourceDir,) = \Sabre\HTTP\URLUtil::splitPath($sourceNode->getPath()); + list($sourceDir,) = \Sabre\Uri\split($sourceNode->getPath()); $destinationDir = $this->getPath(); $sourcePath = $sourceNode->getPath(); diff --git a/apps/dav/lib/Connector/Sabre/File.php b/apps/dav/lib/Connector/Sabre/File.php index ab04890d6c..478321d41f 100644 --- a/apps/dav/lib/Connector/Sabre/File.php +++ b/apps/dav/lib/Connector/Sabre/File.php @@ -146,8 +146,8 @@ class File extends Node implements IFile { // double check if the file was fully received // compare expected and actual size if (isset($_SERVER['CONTENT_LENGTH']) && $_SERVER['REQUEST_METHOD'] === 'PUT') { - $expected = $_SERVER['CONTENT_LENGTH']; - if ($count != $expected) { + $expected = (int) $_SERVER['CONTENT_LENGTH']; + if ($count !== $expected) { throw new BadRequest('expected filesize ' . $expected . ' got ' . $count); } } @@ -396,7 +396,7 @@ class File extends Node implements IFile { * @throws ServiceUnavailable */ private function createFileChunked($data) { - list($path, $name) = \Sabre\HTTP\URLUtil::splitPath($this->path); + list($path, $name) = \Sabre\Uri\split($this->path); $info = \OC_FileChunking::decodeName($name); if (empty($info)) { @@ -409,8 +409,8 @@ class File extends Node implements IFile { //detect aborted upload if (isset ($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'PUT') { if (isset($_SERVER['CONTENT_LENGTH'])) { - $expected = $_SERVER['CONTENT_LENGTH']; - if ($bytesWritten != $expected) { + $expected = (int) $_SERVER['CONTENT_LENGTH']; + if ($bytesWritten !== $expected) { $chunk_handler->remove($info['index']); throw new BadRequest( 'expected filesize ' . $expected . ' got ' . $bytesWritten); diff --git a/apps/dav/lib/Connector/Sabre/FilesPlugin.php b/apps/dav/lib/Connector/Sabre/FilesPlugin.php index efc9a42e5f..726dd13cce 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 06933f53e7..b6d4090bf8 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 acc6dcc3be..3371c655f2 100644 --- a/apps/dav/lib/Connector/Sabre/ObjectTree.php +++ b/apps/dav/lib/Connector/Sabre/ObjectTree.php @@ -80,8 +80,8 @@ class ObjectTree extends \Sabre\DAV\Tree { private function resolveChunkFile($path) { if (isset($_SERVER['HTTP_OC_CHUNKED'])) { // resolve to real file name to find the proper node - list($dir, $name) = \Sabre\HTTP\URLUtil::splitPath($path); - if ($dir == '/' || $dir == '.') { + list($dir, $name) = \Sabre\Uri\split($path); + if ($dir === '/' || $dir === '.') { $dir = ''; } @@ -221,7 +221,7 @@ class ObjectTree extends \Sabre\DAV\Tree { // this will trigger existence check $this->getNodeForPath($source); - list($destinationDir, $destinationName) = \Sabre\HTTP\URLUtil::splitPath($destination); + list($destinationDir, $destinationName) = \Sabre\Uri\split($destination); try { $this->fileView->verifyPath($destinationDir, $destinationName); } catch (\OCP\Files\InvalidPathException $ex) { @@ -238,7 +238,7 @@ class ObjectTree extends \Sabre\DAV\Tree { throw new FileLocked($e->getMessage(), $e->getCode(), $e); } - list($destinationDir,) = \Sabre\HTTP\URLUtil::splitPath($destination); + list($destinationDir,) = \Sabre\Uri\split($destination); $this->markDirty($destinationDir); } } diff --git a/apps/dav/lib/Connector/Sabre/Principal.php b/apps/dav/lib/Connector/Sabre/Principal.php index 8713f61767..dfcbf1e1ca 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 f0958c353a..92f1f6e2e7 100644 --- a/apps/dav/lib/Connector/Sabre/QuotaPlugin.php +++ b/apps/dav/lib/Connector/Sabre/QuotaPlugin.php @@ -91,7 +91,7 @@ class QuotaPlugin extends \Sabre\DAV\ServerPlugin { if (substr($uri, 0, 1) !== '/') { $uri = '/' . $uri; } - list($parentUri, $newName) = URLUtil::splitPath($uri); + list($parentUri, $newName) = \Sabre\Uri\split($uri); if(is_null($parentUri)) { $parentUri = ''; } diff --git a/apps/dav/lib/DAV/Sharing/Backend.php b/apps/dav/lib/DAV/Sharing/Backend.php index f662d8e1b8..6cc5e3b6f5 100644 --- a/apps/dav/lib/DAV/Sharing/Backend.php +++ b/apps/dav/lib/DAV/Sharing/Backend.php @@ -170,7 +170,7 @@ class Backend { 'href' => "principal:${row['principaluri']}", 'commonName' => isset($p['{DAV:}displayname']) ? $p['{DAV:}displayname'] : '', 'status' => 1, - 'readOnly' => ($row['access'] == self::ACCESS_READ), + 'readOnly' => ((int) $row['access'] === self::ACCESS_READ), '{http://owncloud.org/ns}principal' => $row['principaluri'], '{http://owncloud.org/ns}group-share' => is_null($p) ]; diff --git a/apps/dav/lib/DAV/SystemPrincipalBackend.php b/apps/dav/lib/DAV/SystemPrincipalBackend.php index 6a71909c6f..8c19e92499 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 78fd1f4d6d..8768d6313b 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 c73d7c175c..66e3160eaf 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/dav/lib/Upload/AssemblyStream.php b/apps/dav/lib/Upload/AssemblyStream.php index b623f717b3..4b327cecaa 100644 --- a/apps/dav/lib/Upload/AssemblyStream.php +++ b/apps/dav/lib/Upload/AssemblyStream.php @@ -20,6 +20,7 @@ * along with this program. If not, see * */ + namespace OCA\DAV\Upload; use Sabre\DAV\IFile; @@ -44,15 +45,15 @@ class AssemblyStream implements \Icewind\Streams\File { /** @var int */ private $pos = 0; - /** @var array */ - private $sortedNodes; - /** @var int */ - private $size; + private $size = 0; /** @var resource */ private $currentStream = null; + /** @var int */ + private $currentNode = 0; + /** * @param string $path * @param string $mode @@ -63,24 +64,18 @@ class AssemblyStream implements \Icewind\Streams\File { public function stream_open($path, $mode, $options, &$opened_path) { $this->loadContext('assembly'); - // sort the nodes $nodes = $this->nodes; // http://stackoverflow.com/a/10985500 - @usort($nodes, function(IFile $a, IFile $b) { + @usort($nodes, function (IFile $a, IFile $b) { return strnatcmp($a->getName(), $b->getName()); }); - $this->nodes = $nodes; - - // build additional information - $this->sortedNodes = []; - $start = 0; - foreach($this->nodes as $node) { - $size = $node->getSize(); - $name = $node->getName(); - $this->sortedNodes[$name] = ['node' => $node, 'start' => $start, 'end' => $start + $size]; - $start += $size; - $this->size = $start; + $this->nodes = array_values($nodes); + if (count($this->nodes) > 0) { + $this->currentStream = $this->getStream($this->nodes[0]); } + $this->size = array_reduce($this->nodes, function ($size, IFile $file) { + return $size + $file->getSize(); + }, 0); return true; } @@ -105,36 +100,27 @@ class AssemblyStream implements \Icewind\Streams\File { * @return string */ public function stream_read($count) { - do { - if ($this->currentStream === null) { - list($node, $posInNode) = $this->getNodeForPosition($this->pos); - if (is_null($node)) { - // reached last node, no more data - return ''; - } - $this->currentStream = $this->getStream($node); - fseek($this->currentStream, $posInNode); - } + if (is_null($this->currentStream)) { + return ''; + } + do { $data = fread($this->currentStream, $count); - // isset is faster than strlen - if (isset($data[$count - 1])) { - // we read the full count - $read = $count; - } else { - // reaching end of stream, which happens less often so strlen is ok - $read = strlen($data); - } + $read = strlen($data); if (feof($this->currentStream)) { fclose($this->currentStream); - $this->currentNode = null; - $this->currentStream = null; + $this->currentNode++; + if ($this->currentNode < count($this->nodes)) { + $this->currentStream = $this->getStream($this->nodes[$this->currentNode]); + } else { + $this->currentStream = null; + } } // if no data read, try again with the next node because // returning empty data can make the caller think there is no more // data left to read - } while ($read === 0); + } while ($read === 0 && !is_null($this->currentStream)); // update position $this->pos += $read; @@ -235,9 +221,10 @@ class AssemblyStream implements \Icewind\Streams\File { public static function wrap(array $nodes) { $context = stream_context_create([ 'assembly' => [ - 'nodes' => $nodes] + 'nodes' => $nodes + ] ]); - stream_wrapper_register('assembly', '\OCA\DAV\Upload\AssemblyStream'); + stream_wrapper_register('assembly', self::class); try { $wrapped = fopen('assembly://', 'r', null, $context); } catch (\BadMethodCallException $e) { @@ -248,19 +235,6 @@ class AssemblyStream implements \Icewind\Streams\File { return $wrapped; } - /** - * @param $pos - * @return IFile | null - */ - private function getNodeForPosition($pos) { - foreach($this->sortedNodes as $node) { - if ($pos >= $node['start'] && $pos < $node['end']) { - return [$node['node'], $pos - $node['start']]; - } - } - return null; - } - /** * @param IFile $node * @return resource @@ -269,9 +243,11 @@ class AssemblyStream implements \Icewind\Streams\File { $data = $node->get(); if (is_resource($data)) { return $data; + } else { + $tmp = fopen('php://temp', 'w+'); + fwrite($tmp, $data); + rewind($tmp); + return $tmp; } - - return fopen('data://text/plain,' . $data,'r'); } - } diff --git a/apps/encryption/l10n/el.js b/apps/encryption/l10n/el.js index 9693895870..ad76bad8ef 100644 --- a/apps/encryption/l10n/el.js +++ b/apps/encryption/l10n/el.js @@ -3,7 +3,7 @@ OC.L10N.register( { "Missing recovery key password" : "Λείπει το κλειδί επαναφοράς κωδικού", "Please repeat the recovery key password" : "Παρακαλώ επαναλάβετε το κλειδί επαναφοράς κωδικού", - "Repeated recovery key password does not match the provided recovery key password" : "Η επανάληψη του κλειδιού επαναφοράς κωδικού δεν ταιριάζει με το δοσμένο κλειδί επαναφοράς κωδικού", + "Repeated recovery key password does not match the provided recovery key password" : "Ο επαναλαμβανόμενος κωδικός πρόσβασης ανάκτησης δεν ταιριάζει με τον παρεχόμενο κωδικό πρόσβασης κλειδιού ανάκτησης", "Recovery key successfully enabled" : "Επιτυχής ενεργοποίηση κλειδιού ανάκτησης", "Could not enable recovery key. Please check your recovery key password!" : "Αποτυχία ενεργοποίησης κλειδιού ανάκτησης. Παρακαλώ ελέγξτε τον κωδικό του κλειδιού ανάκτησής σας!", "Recovery key successfully disabled" : "Επιτυχής απενεργοποίηση κλειδιού ανάκτησης", @@ -23,6 +23,8 @@ OC.L10N.register( "Private key password successfully updated." : "Το Προσωπικό κλειδί πρόσβασης ενημερώθηκε επιτυχώς", "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" : "Πρέπει να μεταφέρετε τα κλειδιά κρυπτογράφησής σας από την παλιά κρυπτογράφηση (ownCloud <= 8.0) στην καινούρια. Παρακαλούμε εκτελέστε την εντολή 'occ encryption:migrate' ή επικοινωνήστε με το διαχειριστή σας.", "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Άκυρο προσωπικό κλειδί για την εφαρμογή κρυπτογράφησης. Παρακαλώ ενημερώστε τον κωδικό του προσωπικού κλειδιού σας στις προσωπικές ρυθμίσεις για να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη αλλά τα κλειδιά σας δεν έχουν αρχικοποιηθεί. Πραγματοποιήστε έξοδο και είσοδο στην εφαρμογή εκ νέου.", + "Please enable server side encryption in the admin settings in order to use the encryption module." : "Παρακαλούμε ενεργοποιήστε την κρυπτογράφηση στον διακομιστή, στις ρυθμίσεις διαχειριστή για να χρησιμοποιήσετε την κρυπτογράφηση", "Encryption app is enabled and ready" : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη και έτοιμη", "Bad Signature" : "Κακή υπογραφή", "Missing Signature" : "Ελλιπής υπογραφή", diff --git a/apps/encryption/l10n/el.json b/apps/encryption/l10n/el.json index c24465c32a..f1ec0a6c44 100644 --- a/apps/encryption/l10n/el.json +++ b/apps/encryption/l10n/el.json @@ -1,7 +1,7 @@ { "translations": { "Missing recovery key password" : "Λείπει το κλειδί επαναφοράς κωδικού", "Please repeat the recovery key password" : "Παρακαλώ επαναλάβετε το κλειδί επαναφοράς κωδικού", - "Repeated recovery key password does not match the provided recovery key password" : "Η επανάληψη του κλειδιού επαναφοράς κωδικού δεν ταιριάζει με το δοσμένο κλειδί επαναφοράς κωδικού", + "Repeated recovery key password does not match the provided recovery key password" : "Ο επαναλαμβανόμενος κωδικός πρόσβασης ανάκτησης δεν ταιριάζει με τον παρεχόμενο κωδικό πρόσβασης κλειδιού ανάκτησης", "Recovery key successfully enabled" : "Επιτυχής ενεργοποίηση κλειδιού ανάκτησης", "Could not enable recovery key. Please check your recovery key password!" : "Αποτυχία ενεργοποίησης κλειδιού ανάκτησης. Παρακαλώ ελέγξτε τον κωδικό του κλειδιού ανάκτησής σας!", "Recovery key successfully disabled" : "Επιτυχής απενεργοποίηση κλειδιού ανάκτησης", @@ -21,6 +21,8 @@ "Private key password successfully updated." : "Το Προσωπικό κλειδί πρόσβασης ενημερώθηκε επιτυχώς", "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" : "Πρέπει να μεταφέρετε τα κλειδιά κρυπτογράφησής σας από την παλιά κρυπτογράφηση (ownCloud <= 8.0) στην καινούρια. Παρακαλούμε εκτελέστε την εντολή 'occ encryption:migrate' ή επικοινωνήστε με το διαχειριστή σας.", "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Άκυρο προσωπικό κλειδί για την εφαρμογή κρυπτογράφησης. Παρακαλώ ενημερώστε τον κωδικό του προσωπικού κλειδιού σας στις προσωπικές ρυθμίσεις για να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη αλλά τα κλειδιά σας δεν έχουν αρχικοποιηθεί. Πραγματοποιήστε έξοδο και είσοδο στην εφαρμογή εκ νέου.", + "Please enable server side encryption in the admin settings in order to use the encryption module." : "Παρακαλούμε ενεργοποιήστε την κρυπτογράφηση στον διακομιστή, στις ρυθμίσεις διαχειριστή για να χρησιμοποιήσετε την κρυπτογράφηση", "Encryption app is enabled and ready" : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη και έτοιμη", "Bad Signature" : "Κακή υπογραφή", "Missing Signature" : "Ελλιπής υπογραφή", diff --git a/apps/encryption/l10n/es_MX.js b/apps/encryption/l10n/es_MX.js index 32993e6451..b0704a1bd6 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 a2c72aed1c..206e3d661e 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/it.js b/apps/encryption/l10n/it.js index ce5a75dfa7..070df518a4 100644 --- a/apps/encryption/l10n/it.js +++ b/apps/encryption/l10n/it.js @@ -24,6 +24,7 @@ OC.L10N.register( "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" : "Devi migrare le tue chiavi di cifratura dalla vecchia cifratura (ownCloud <= 8.0) alla nuova. Esegui 'occ encryption:migrate' o contatta il tuo amministratore", "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chiave privata non valida per l'applicazione di cifratura. Aggiorna la password della chiave privata nelle impostazioni personali per ripristinare l'accesso ai tuoi file cifrati.", "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "L'applicazione di cifratura è abilitata, ma le chiavi non sono state inizializzate. Disconnettiti ed effettua nuovamente l'accesso.", + "Please enable server side encryption in the admin settings in order to use the encryption module." : "Abilita la cifratura lato server nelle impostazioni di amministrazione per utilizzare il modulo di cifratura.", "Encryption app is enabled and ready" : "L'applicazione Cifratura è abilitata e pronta", "Bad Signature" : "Firma non valida", "Missing Signature" : "Firma mancante", diff --git a/apps/encryption/l10n/it.json b/apps/encryption/l10n/it.json index 5a7539c9dc..b963d2b346 100644 --- a/apps/encryption/l10n/it.json +++ b/apps/encryption/l10n/it.json @@ -22,6 +22,7 @@ "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" : "Devi migrare le tue chiavi di cifratura dalla vecchia cifratura (ownCloud <= 8.0) alla nuova. Esegui 'occ encryption:migrate' o contatta il tuo amministratore", "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chiave privata non valida per l'applicazione di cifratura. Aggiorna la password della chiave privata nelle impostazioni personali per ripristinare l'accesso ai tuoi file cifrati.", "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "L'applicazione di cifratura è abilitata, ma le chiavi non sono state inizializzate. Disconnettiti ed effettua nuovamente l'accesso.", + "Please enable server side encryption in the admin settings in order to use the encryption module." : "Abilita la cifratura lato server nelle impostazioni di amministrazione per utilizzare il modulo di cifratura.", "Encryption app is enabled and ready" : "L'applicazione Cifratura è abilitata e pronta", "Bad Signature" : "Firma non valida", "Missing Signature" : "Firma mancante", diff --git a/apps/encryption/l10n/ja.js b/apps/encryption/l10n/ja.js index 5ebe12d736..dd7e076136 100644 --- a/apps/encryption/l10n/ja.js +++ b/apps/encryption/l10n/ja.js @@ -24,6 +24,7 @@ OC.L10N.register( "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" : "古い暗号化(ownCloud 8.0以前)から新しい方へ、暗号化キーを移行する必要があります。'occ encryption:migrate'を実行するか、管理者に問い合わせてください。", "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "暗号化アプリの無効なプライベートキーです。あなたの暗号化されたファイルへアクセスするために、個人設定からプライベートキーのパスワードを更新してください。", "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "暗号化アプリは有効ですが、あなたの暗号化キーは初期化されていません。ログアウトした後に、再度ログインしてください", + "Please enable server side encryption in the admin settings in order to use the encryption module." : "暗号化モジュールを利用する場合は、管理者設定でサーバーサイド暗号化を有効にしてください。", "Encryption app is enabled and ready" : "暗号化アプリは有効になっており、準備が整いました", "Bad Signature" : "不正な署名", "Missing Signature" : "署名が存在しません", @@ -31,7 +32,7 @@ OC.L10N.register( "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "このファイルを復号化できません、共有ファイルの可能性があります。ファイルの所有者にお願いして、ファイルを共有しなおしてもらってください。", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "このファイルを読み取ることができません、共有ファイルの可能性があります。ファイルの所有者にお願いして、ファイルを共有しなおしてもらってください。", "Default encryption module" : "デフォルトの暗号化モジュール", - "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" : "こんにちは、\n\n管理者がサーバーサイド暗号化を有効にしました。'%s'というパスワードであなたのファイルが暗号化されました。\n\nWeb画面からログインして、個人設定画面の'基本暗号化モジュール' セクションにいき、暗号化パスワードの更新をお願いします。 '旧ログインパスワード'部分に上記パスワードを入力し、現在のログインパスワードで更新します。\n", + "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" : "こんにちは\n\n管理者がサーバーサイド暗号化を有効にしました。'%s'というパスワードであなたのファイルが暗号化されました。\n\nWeb画面からログインして、個人設定画面の'基本暗号化モジュール' セクションにいき、暗号化パスワードの更新をお願いします。 '旧ログインパスワード'部分に上記パスワードを入力し、現在のログインパスワードで更新します。\n", "The share will expire on %s." : "共有は %s で有効期限が切れます。", "Cheers!" : "それでは!", "Hey there,

the admin enabled server-side-encryption. Your files were encrypted using the password %s.

Please 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.

" : "こんにちは、

管理者がサーバーサイド暗号化を有効にしました。%sというパスワードであなたのファイルが暗号化されました。

Web画面からログインして、個人設定画面の\"基本暗号化モジュール\"のセクションにいき、暗号化パスワードの更新をお願いします。 \"旧ログインパスワード”部分に上記パスワードを入力し、現在のログインパスワードで更新します。

", diff --git a/apps/encryption/l10n/ja.json b/apps/encryption/l10n/ja.json index 4408f7882d..6bd5eaa941 100644 --- a/apps/encryption/l10n/ja.json +++ b/apps/encryption/l10n/ja.json @@ -22,6 +22,7 @@ "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" : "古い暗号化(ownCloud 8.0以前)から新しい方へ、暗号化キーを移行する必要があります。'occ encryption:migrate'を実行するか、管理者に問い合わせてください。", "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "暗号化アプリの無効なプライベートキーです。あなたの暗号化されたファイルへアクセスするために、個人設定からプライベートキーのパスワードを更新してください。", "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "暗号化アプリは有効ですが、あなたの暗号化キーは初期化されていません。ログアウトした後に、再度ログインしてください", + "Please enable server side encryption in the admin settings in order to use the encryption module." : "暗号化モジュールを利用する場合は、管理者設定でサーバーサイド暗号化を有効にしてください。", "Encryption app is enabled and ready" : "暗号化アプリは有効になっており、準備が整いました", "Bad Signature" : "不正な署名", "Missing Signature" : "署名が存在しません", @@ -29,7 +30,7 @@ "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "このファイルを復号化できません、共有ファイルの可能性があります。ファイルの所有者にお願いして、ファイルを共有しなおしてもらってください。", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "このファイルを読み取ることができません、共有ファイルの可能性があります。ファイルの所有者にお願いして、ファイルを共有しなおしてもらってください。", "Default encryption module" : "デフォルトの暗号化モジュール", - "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" : "こんにちは、\n\n管理者がサーバーサイド暗号化を有効にしました。'%s'というパスワードであなたのファイルが暗号化されました。\n\nWeb画面からログインして、個人設定画面の'基本暗号化モジュール' セクションにいき、暗号化パスワードの更新をお願いします。 '旧ログインパスワード'部分に上記パスワードを入力し、現在のログインパスワードで更新します。\n", + "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" : "こんにちは\n\n管理者がサーバーサイド暗号化を有効にしました。'%s'というパスワードであなたのファイルが暗号化されました。\n\nWeb画面からログインして、個人設定画面の'基本暗号化モジュール' セクションにいき、暗号化パスワードの更新をお願いします。 '旧ログインパスワード'部分に上記パスワードを入力し、現在のログインパスワードで更新します。\n", "The share will expire on %s." : "共有は %s で有効期限が切れます。", "Cheers!" : "それでは!", "Hey there,

the admin enabled server-side-encryption. Your files were encrypted using the password %s.

Please 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.

" : "こんにちは、

管理者がサーバーサイド暗号化を有効にしました。%sというパスワードであなたのファイルが暗号化されました。

Web画面からログインして、個人設定画面の\"基本暗号化モジュール\"のセクションにいき、暗号化パスワードの更新をお願いします。 \"旧ログインパスワード”部分に上記パスワードを入力し、現在のログインパスワードで更新します。

", diff --git a/apps/encryption/l10n/lt_LT.js b/apps/encryption/l10n/lt_LT.js index 68d716eb2e..b0033c46f7 100644 --- a/apps/encryption/l10n/lt_LT.js +++ b/apps/encryption/l10n/lt_LT.js @@ -1,54 +1,63 @@ OC.L10N.register( "encryption", { - "Missing recovery key password" : "Trūksta atkūrimo rakto slaptažodžio", - "Please repeat the recovery key password" : "Prašome pakartoti atkūrimo rakto slaptažodį", + "Missing recovery key password" : "Atkūrimo raktui apsaugoti reikalingas slaptažodis", + "Please repeat the recovery key password" : "Prašome pakartoti slaptažodį atkūrimo raktui apsaugoti", "Repeated recovery key password does not match the provided recovery key password" : "Pakartotas atstatymo rakto slaptažodis nesutampa su atstatymo rakto slaptažodžiu", - "Recovery key successfully enabled" : "Atkūrimo raktas sėkmingai įjungtas", - "Could not enable recovery key. Please check your recovery key password!" : "Nepavyko įjungti atkūrimo rakto. Prašome patikrinti savo atkūrimo rakto slaptažodį!", - "Recovery key successfully disabled" : "Atkūrimo raktas sėkmingai išjungtas", - "Could not disable recovery key. Please check your recovery key password!" : "Nepavyko išjungti atkūrimo rakto. Prašome patikrinti savo atkūrimo rakto slaptažodį!", + "Recovery key successfully enabled" : "Atkūrimo raktas pradėtas naudoti", + "Could not enable recovery key. Please check your recovery key password!" : "Nepavyko panaudoti atkūrimo rakto. Prašome patikrinti savo atkūrimo rakto slaptažodį!", + "Recovery key successfully disabled" : "Atkūrimo raktas nebenaudojamas", + "Could not disable recovery key. Please check your recovery key password!" : "Nepavyko atjungti atkūrimo rakto. Prašome patikrinti savo atkūrimo rakto slaptažodį!", "Missing parameters" : "Trūksta parametrų", - "Please provide the old recovery password" : "Įveskite seną atstatymo slaptažodį", - "Please provide a new recovery password" : "Prašome pateikti naują atkūrimo slaptažodį", - "Please repeat the new recovery password" : "Pakartokite naują atstatymo slaptažodį", + "Please provide the old recovery password" : "Įveskite seną atkūrimo rakto slaptažodį", + "Please provide a new recovery password" : "Prašome pateikti naują atkūrimo rakto slaptažodį", + "Please repeat the new recovery password" : "Pakartokite naują atkūrimo rakto slaptažodį", "Password successfully changed." : "Slaptažodis sėkmingai pakeistas.", "Could not change the password. Maybe the old password was not correct." : "Nepavyko pakeisti slaptažodžio. Galbūt, buvo neteisingai įvestas senas slaptažodis.", - "Recovery Key disabled" : "Atkūrimo raktas išjungtas", - "Recovery Key enabled" : "Atstatymo raktas įjungtas", - "Could not enable the recovery key, please try again or contact your administrator" : "Nepavyko įjungti atkūrimo rakto, prašome bandyti dar kartą arba susisiekti su savo administratoriumi", - "Could not update the private key password." : "Nepavyko atnaujinti privačiojo rakto slaptažodžio.", + "Recovery Key disabled" : "Atkūrimo raktas nenaudojamas", + "Recovery Key enabled" : "Atkūrimo raktas naudojamas", + "Could not enable the recovery key, please try again or contact your administrator" : "Nepavyksta pradėti naudoti atkūrimo rakto, prašome bandyti dar kartą arba susisiekti su sistemos administratoriumi", + "Could not update the private key password." : "Nepavyko atnaujinti slaptažodžio privačiam raktui.", "The old password was not correct, please try again." : "Neteisingas senas slaptažodis, prašome bandyti dar kartą.", "The current log-in password was not correct, please try again." : "Esamas prisijungimo slaptažodis buvo neteisingas, prašome bandyti dar kartą.", - "Private key password successfully updated." : "Privačiojo rakto slaptažodis sėkmingai atnaujintas.", - "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" : "Jūs turite perkelti savo šifravimo raktus iš senojo šifravimo (ownCloud <= 8.0) į naująjį. Prašome vykdyti \"occ encryption:migrate\" arba susisiekti su savo administratoriumi", + "Private key password successfully updated." : "Privataus rakto slaptažodis sėkmingai atnaujintas.", + "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" : "Jūs turite atlikti šifravimo raktų migraciją iš senojo (ownCloud <= 8.0) į naująjį. Prašome terminale įvykdyti \"occ encryption:migrate\" arba susisiekti su sistemos administratoriumi", + "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Šifravimo įskiepis neatpažįsta privataus rakto. Atnaujinkite slaptažodį skirtą privačiam raktui naudoti, kurį rasite asmeninių nustatymų skiltyje, skirtoje atstatyti prieigą prie šifruotų failų.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Šifravimo įskiepis veikia, tačiau privatus ir atkūrimo raktas nebuvo panaudotas. Pabandykite prisijungti iš naujo.", + "Please enable server side encryption in the admin settings in order to use the encryption module." : "Administratoriaus nustatymuose įgalinkite šifravimą, jei norite naudoti šifravimo modulį.", + "Encryption app is enabled and ready" : "Šifravimo įskiepis yra paruoštas ir veikia", "Bad Signature" : "Blogas parašas", "Missing Signature" : "Trūksta parašo", - "one-time password for server-side-encryption" : "Vienkartinis slaptažodis šifravimui serverio pusėje", + "one-time password for server-side-encryption" : "vienkartinis slaptažodis skirtas šifravimui", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nepavyksta iššifruoti šio failo, tikriausiai, tai yra bendrinamas failas. Paprašykite failo savininko iš naujo pradėti bendrinti su jumis šį failą.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nepavyksta perskaityti šio failo, tikriausiai, tai yra bendrinamas failas. Paprašykite failo savininko iš naujo pradėti bendrinti su jumis šį failą.", "Default encryption module" : "Numatytasis šifravimo modulis", + "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" : "Sveiki,\n\nAdministratorius įjungė šifravimą sistemoje. Jūsų failai buvo užšifruoti naudojantis šiuo slaptažodžiu: \"%s\".\n\nPrisijunkite prie sistemos, atidarykite nustatymus, pasirinkite skiltį \"Šifravimo įskiepis\" ir atnaujinkite savo šifravimui skirtą slaptažodį pasinaudodami šiuo ir savo prisijungimo slaptažodžiu.\n\n", "The share will expire on %s." : "Bendrinimo laikas pasibaigs %s.", "Cheers!" : "Sveikinimai!", - "Encrypt the home storage" : "Šifruoti namų saugyklą", - "Enable recovery key" : "Įjungti atstatymo raktą", - "Disable recovery key" : "Išjungti atstatymo raktą", - "Recovery key password" : "Atkūrimo rakto slaptažodis", - "Repeat recovery key password" : "Pakartokite atstatymo rakto slaptažodį", - "Change recovery key password:" : "Pakeisti atkūrimo rakto slaptažodį:", + "Hey there,

the admin enabled server-side-encryption. Your files were encrypted using the password %s.

Please 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.

" : "Sveiki,

Administratorius įjungė šifravimą sistemoje. Jūsų failai buvo užšifruoti naudojantis šiuo slaptažodžiu: %s.

Prisijunkite prie sistemos, atidarykite nustatymus, pasirinkite skiltį \"Šifravimo įskiepis\" ir atnaujinkite savo šifravimui skirtą slaptažodį pasinaudodami šiuo ir savo prisijungimo slaptažodžiu.

", + "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Šifravimo įskiepis veikia, tačiau privatus ir atkūrimo raktas nebuvo panaudotas. Pabandykite prisijungti iš naujo", + "Encrypt the home storage" : "Šifruoti visą saugyklą", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Ši parinktis užšifruos visus duomenis, esančius visoje saugykloje. Jei pasirinkimas šioje skiltyje liks išjungtas, tada duomenys, esantys išorinėje saugykloje bus užšifruoti.", + "Enable recovery key" : "Naudoti atstatymo raktą", + "Disable recovery key" : "Nenaudoti atstatymo rakto", + "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Atkūrimo raktas yra papildoma saugumo priemonė skirta duomenų šifravimui. Atkūrimo raktas leidžia asmens duomenų atstatymą, kai asmuo pamiršta slaptažodį.", + "Recovery key password" : "Slaptažodis atkūrimo raktui", + "Repeat recovery key password" : "Pakartokite slaptažodį atkūrimo raktui ", + "Change recovery key password:" : "Pakeisti slaptažodį atkūrimo raktui:", "Old recovery key password" : "Senas atstatymo rakto slaptažodis", - "New recovery key password" : "Naujas atstatymo rakto slaptažodis", - "Repeat new recovery key password" : "Pakartokite naują atstatymo rakto slaptažodį", + "New recovery key password" : "Naujas slaptažodis atkūrimo raktui", + "Repeat new recovery key password" : "Pakartokite naują slaptažodį atkūrimo raktui", "Change Password" : "Pakeisti slaptažodį", "Basic encryption module" : "Pagrindinis šifravimo modulis", - "Your private key password no longer matches your log-in password." : "Jūsų privačiojo rakto slaptažodis daugiau nebesutampa su jūsų prisijungimo slaptažodžiu.", - "Set your old private key password to your current log-in password:" : "Nustatyti Jūsų privataus rakto slaptažodį į Jūsų dabartinį slaptažodį.", - " If you don't remember your old password you can ask your administrator to recover your files." : "Jei nepamenate savo seno slaptažodžio, galite paprašyti administratoriaus atkurti Jūsų failus.", + "Your private key password no longer matches your log-in password." : "Jūsų privataus rakto slaptažodis nesutampa su jūsų prisijungimo slaptažodžiu.", + "Set your old private key password to your current log-in password:" : "Naudoti privataus rakto slaptažodį kaip prisijungimo slaptažodį:", + " If you don't remember your old password you can ask your administrator to recover your files." : "Jei nepamenate savo seno slaptažodžio, galite paprašyti sistemos administratoriaus atkurti jūsų duomenis.", "Old log-in password" : "Senas prisijungimo slaptažodis", "Current log-in password" : "Dabartinis prisijungimo slaptažodis", - "Update Private Key Password" : "Atnaujinti privačiojo rakto slaptažodį", + "Update Private Key Password" : "Atnaujinti privataus rakto slaptažodį", "Enable password recovery:" : "Įjungti slaptažodžio atkūrimą:", - "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Šios parinkties įjungimas leis jums iš naujo gauti prieigą prie savo užšifruotų failų tuo atveju, jei prarasite slaptažodį", + "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Šios parinkties įjungimas leis jums iš naujo gauti prieigą prie savo užšifruotų duomenų tuo atveju, jei prarasite slaptažodį", "Enabled" : "Įjungta", "Disabled" : "Išjungta", "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Šifravimo programėlė yra įjungta, tačiau jūsų raktai nėra inicijuoti. Prašome atsijungti ir vėl prisijungti" diff --git a/apps/encryption/l10n/lt_LT.json b/apps/encryption/l10n/lt_LT.json index 85cc95c930..c413a68885 100644 --- a/apps/encryption/l10n/lt_LT.json +++ b/apps/encryption/l10n/lt_LT.json @@ -1,52 +1,61 @@ { "translations": { - "Missing recovery key password" : "Trūksta atkūrimo rakto slaptažodžio", - "Please repeat the recovery key password" : "Prašome pakartoti atkūrimo rakto slaptažodį", + "Missing recovery key password" : "Atkūrimo raktui apsaugoti reikalingas slaptažodis", + "Please repeat the recovery key password" : "Prašome pakartoti slaptažodį atkūrimo raktui apsaugoti", "Repeated recovery key password does not match the provided recovery key password" : "Pakartotas atstatymo rakto slaptažodis nesutampa su atstatymo rakto slaptažodžiu", - "Recovery key successfully enabled" : "Atkūrimo raktas sėkmingai įjungtas", - "Could not enable recovery key. Please check your recovery key password!" : "Nepavyko įjungti atkūrimo rakto. Prašome patikrinti savo atkūrimo rakto slaptažodį!", - "Recovery key successfully disabled" : "Atkūrimo raktas sėkmingai išjungtas", - "Could not disable recovery key. Please check your recovery key password!" : "Nepavyko išjungti atkūrimo rakto. Prašome patikrinti savo atkūrimo rakto slaptažodį!", + "Recovery key successfully enabled" : "Atkūrimo raktas pradėtas naudoti", + "Could not enable recovery key. Please check your recovery key password!" : "Nepavyko panaudoti atkūrimo rakto. Prašome patikrinti savo atkūrimo rakto slaptažodį!", + "Recovery key successfully disabled" : "Atkūrimo raktas nebenaudojamas", + "Could not disable recovery key. Please check your recovery key password!" : "Nepavyko atjungti atkūrimo rakto. Prašome patikrinti savo atkūrimo rakto slaptažodį!", "Missing parameters" : "Trūksta parametrų", - "Please provide the old recovery password" : "Įveskite seną atstatymo slaptažodį", - "Please provide a new recovery password" : "Prašome pateikti naują atkūrimo slaptažodį", - "Please repeat the new recovery password" : "Pakartokite naują atstatymo slaptažodį", + "Please provide the old recovery password" : "Įveskite seną atkūrimo rakto slaptažodį", + "Please provide a new recovery password" : "Prašome pateikti naują atkūrimo rakto slaptažodį", + "Please repeat the new recovery password" : "Pakartokite naują atkūrimo rakto slaptažodį", "Password successfully changed." : "Slaptažodis sėkmingai pakeistas.", "Could not change the password. Maybe the old password was not correct." : "Nepavyko pakeisti slaptažodžio. Galbūt, buvo neteisingai įvestas senas slaptažodis.", - "Recovery Key disabled" : "Atkūrimo raktas išjungtas", - "Recovery Key enabled" : "Atstatymo raktas įjungtas", - "Could not enable the recovery key, please try again or contact your administrator" : "Nepavyko įjungti atkūrimo rakto, prašome bandyti dar kartą arba susisiekti su savo administratoriumi", - "Could not update the private key password." : "Nepavyko atnaujinti privačiojo rakto slaptažodžio.", + "Recovery Key disabled" : "Atkūrimo raktas nenaudojamas", + "Recovery Key enabled" : "Atkūrimo raktas naudojamas", + "Could not enable the recovery key, please try again or contact your administrator" : "Nepavyksta pradėti naudoti atkūrimo rakto, prašome bandyti dar kartą arba susisiekti su sistemos administratoriumi", + "Could not update the private key password." : "Nepavyko atnaujinti slaptažodžio privačiam raktui.", "The old password was not correct, please try again." : "Neteisingas senas slaptažodis, prašome bandyti dar kartą.", "The current log-in password was not correct, please try again." : "Esamas prisijungimo slaptažodis buvo neteisingas, prašome bandyti dar kartą.", - "Private key password successfully updated." : "Privačiojo rakto slaptažodis sėkmingai atnaujintas.", - "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" : "Jūs turite perkelti savo šifravimo raktus iš senojo šifravimo (ownCloud <= 8.0) į naująjį. Prašome vykdyti \"occ encryption:migrate\" arba susisiekti su savo administratoriumi", + "Private key password successfully updated." : "Privataus rakto slaptažodis sėkmingai atnaujintas.", + "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" : "Jūs turite atlikti šifravimo raktų migraciją iš senojo (ownCloud <= 8.0) į naująjį. Prašome terminale įvykdyti \"occ encryption:migrate\" arba susisiekti su sistemos administratoriumi", + "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Šifravimo įskiepis neatpažįsta privataus rakto. Atnaujinkite slaptažodį skirtą privačiam raktui naudoti, kurį rasite asmeninių nustatymų skiltyje, skirtoje atstatyti prieigą prie šifruotų failų.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Šifravimo įskiepis veikia, tačiau privatus ir atkūrimo raktas nebuvo panaudotas. Pabandykite prisijungti iš naujo.", + "Please enable server side encryption in the admin settings in order to use the encryption module." : "Administratoriaus nustatymuose įgalinkite šifravimą, jei norite naudoti šifravimo modulį.", + "Encryption app is enabled and ready" : "Šifravimo įskiepis yra paruoštas ir veikia", "Bad Signature" : "Blogas parašas", "Missing Signature" : "Trūksta parašo", - "one-time password for server-side-encryption" : "Vienkartinis slaptažodis šifravimui serverio pusėje", + "one-time password for server-side-encryption" : "vienkartinis slaptažodis skirtas šifravimui", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nepavyksta iššifruoti šio failo, tikriausiai, tai yra bendrinamas failas. Paprašykite failo savininko iš naujo pradėti bendrinti su jumis šį failą.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nepavyksta perskaityti šio failo, tikriausiai, tai yra bendrinamas failas. Paprašykite failo savininko iš naujo pradėti bendrinti su jumis šį failą.", "Default encryption module" : "Numatytasis šifravimo modulis", + "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" : "Sveiki,\n\nAdministratorius įjungė šifravimą sistemoje. Jūsų failai buvo užšifruoti naudojantis šiuo slaptažodžiu: \"%s\".\n\nPrisijunkite prie sistemos, atidarykite nustatymus, pasirinkite skiltį \"Šifravimo įskiepis\" ir atnaujinkite savo šifravimui skirtą slaptažodį pasinaudodami šiuo ir savo prisijungimo slaptažodžiu.\n\n", "The share will expire on %s." : "Bendrinimo laikas pasibaigs %s.", "Cheers!" : "Sveikinimai!", - "Encrypt the home storage" : "Šifruoti namų saugyklą", - "Enable recovery key" : "Įjungti atstatymo raktą", - "Disable recovery key" : "Išjungti atstatymo raktą", - "Recovery key password" : "Atkūrimo rakto slaptažodis", - "Repeat recovery key password" : "Pakartokite atstatymo rakto slaptažodį", - "Change recovery key password:" : "Pakeisti atkūrimo rakto slaptažodį:", + "Hey there,

the admin enabled server-side-encryption. Your files were encrypted using the password %s.

Please 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.

" : "Sveiki,

Administratorius įjungė šifravimą sistemoje. Jūsų failai buvo užšifruoti naudojantis šiuo slaptažodžiu: %s.

Prisijunkite prie sistemos, atidarykite nustatymus, pasirinkite skiltį \"Šifravimo įskiepis\" ir atnaujinkite savo šifravimui skirtą slaptažodį pasinaudodami šiuo ir savo prisijungimo slaptažodžiu.

", + "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Šifravimo įskiepis veikia, tačiau privatus ir atkūrimo raktas nebuvo panaudotas. Pabandykite prisijungti iš naujo", + "Encrypt the home storage" : "Šifruoti visą saugyklą", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Ši parinktis užšifruos visus duomenis, esančius visoje saugykloje. Jei pasirinkimas šioje skiltyje liks išjungtas, tada duomenys, esantys išorinėje saugykloje bus užšifruoti.", + "Enable recovery key" : "Naudoti atstatymo raktą", + "Disable recovery key" : "Nenaudoti atstatymo rakto", + "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Atkūrimo raktas yra papildoma saugumo priemonė skirta duomenų šifravimui. Atkūrimo raktas leidžia asmens duomenų atstatymą, kai asmuo pamiršta slaptažodį.", + "Recovery key password" : "Slaptažodis atkūrimo raktui", + "Repeat recovery key password" : "Pakartokite slaptažodį atkūrimo raktui ", + "Change recovery key password:" : "Pakeisti slaptažodį atkūrimo raktui:", "Old recovery key password" : "Senas atstatymo rakto slaptažodis", - "New recovery key password" : "Naujas atstatymo rakto slaptažodis", - "Repeat new recovery key password" : "Pakartokite naują atstatymo rakto slaptažodį", + "New recovery key password" : "Naujas slaptažodis atkūrimo raktui", + "Repeat new recovery key password" : "Pakartokite naują slaptažodį atkūrimo raktui", "Change Password" : "Pakeisti slaptažodį", "Basic encryption module" : "Pagrindinis šifravimo modulis", - "Your private key password no longer matches your log-in password." : "Jūsų privačiojo rakto slaptažodis daugiau nebesutampa su jūsų prisijungimo slaptažodžiu.", - "Set your old private key password to your current log-in password:" : "Nustatyti Jūsų privataus rakto slaptažodį į Jūsų dabartinį slaptažodį.", - " If you don't remember your old password you can ask your administrator to recover your files." : "Jei nepamenate savo seno slaptažodžio, galite paprašyti administratoriaus atkurti Jūsų failus.", + "Your private key password no longer matches your log-in password." : "Jūsų privataus rakto slaptažodis nesutampa su jūsų prisijungimo slaptažodžiu.", + "Set your old private key password to your current log-in password:" : "Naudoti privataus rakto slaptažodį kaip prisijungimo slaptažodį:", + " If you don't remember your old password you can ask your administrator to recover your files." : "Jei nepamenate savo seno slaptažodžio, galite paprašyti sistemos administratoriaus atkurti jūsų duomenis.", "Old log-in password" : "Senas prisijungimo slaptažodis", "Current log-in password" : "Dabartinis prisijungimo slaptažodis", - "Update Private Key Password" : "Atnaujinti privačiojo rakto slaptažodį", + "Update Private Key Password" : "Atnaujinti privataus rakto slaptažodį", "Enable password recovery:" : "Įjungti slaptažodžio atkūrimą:", - "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Šios parinkties įjungimas leis jums iš naujo gauti prieigą prie savo užšifruotų failų tuo atveju, jei prarasite slaptažodį", + "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Šios parinkties įjungimas leis jums iš naujo gauti prieigą prie savo užšifruotų duomenų tuo atveju, jei prarasite slaptažodį", "Enabled" : "Įjungta", "Disabled" : "Išjungta", "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Šifravimo programėlė yra įjungta, tačiau jūsų raktai nėra inicijuoti. Prašome atsijungti ir vėl prisijungti" diff --git a/apps/encryption/l10n/sq.js b/apps/encryption/l10n/sq.js index df44d8b415..923708c296 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 9805faaf3d..ed251fd57a 100644 --- a/apps/encryption/l10n/sq.json +++ b/apps/encryption/l10n/sq.json @@ -1,5 +1,5 @@ { "translations": { - "Missing recovery key password" : "Mungon fjalëkalim kyçi rimarrjesh", + "Missing recovery key password" : "Mungon fjalëkalimi kyç i rigjenerimit ", "Please repeat the recovery key password" : "Ju lutemi, rijepni fjalëkalimin për kyç rimarrjesh", "Repeated recovery key password does not match the provided recovery key password" : "Fjalëkalimi i ridhënë për kyç rimarrjesh s’përputhet me fjalëkalimin e dhënë për kyç rimarrjesh", "Recovery key successfully enabled" : "Kyçi i rimarrjeve u aktivizua me sukses", @@ -21,6 +21,8 @@ "Private key password successfully updated." : "Fjalëkalimi për kyçin privat u përditësua me sukses.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Lypset të kaloni kyçet tuaj të fshehtëzimeve nga versioni i vjetër i fshehtëzimeve (ownCloud <= 8.0) te i riu. Ju lutemi, ekzekutoni run 'occ encryption:migrate' ose lidhuni me përgjegjësin tuaj", "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Kyç privat i pavlefshëm për aplikacionin e fshehtëzimeve. Ju lutemi, përditësoni fjalëkalimin tuaj të kyçit privat te rregullimet tuaja personale që të rimerrni hyrje te kartelat tuaja të fshehtëzuara.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Aplikacioni i Enkriptimit është i aktivizuar, por kyçet tuaj s’janë vënë në punë, ju lutemi, dilni dhe rihyni përsëri", + "Please enable server side encryption in the admin settings in order to use the encryption module." : "Ju lutem aktivizoni ekriptimin në anën e serverit në konfigurimet e administratorit në mënyrë që të përdorni modulin e enkriptimit.", "Encryption app is enabled and ready" : "Aplikacioni i Fshehtëzimeve u aktivizua dhe është gati", "Bad Signature" : "Nënshkrim i Keq", "Missing Signature" : "Mungon Nënshkrimi", diff --git a/apps/encryption/lib/Crypto/Crypt.php b/apps/encryption/lib/Crypto/Crypt.php index 9a9ac27b96..6e1b7387c8 100644 --- a/apps/encryption/lib/Crypto/Crypt.php +++ b/apps/encryption/lib/Crypto/Crypt.php @@ -605,7 +605,7 @@ class Crypt { $element = array_shift($exploded); - while ($element != self::HEADER_END) { + while ($element !== self::HEADER_END) { $result[$element] = array_shift($exploded); $element = array_shift($exploded); } diff --git a/apps/encryption/lib/Crypto/Encryption.php b/apps/encryption/lib/Crypto/Encryption.php index 6869177ac3..4d20c103a5 100644 --- a/apps/encryption/lib/Crypto/Encryption.php +++ b/apps/encryption/lib/Crypto/Encryption.php @@ -60,6 +60,9 @@ class Encryption implements IEncryptionModule { /** @var string */ private $user; + /** @var array */ + private $owner; + /** @var string */ private $fileKey; @@ -136,6 +139,7 @@ class Encryption implements IEncryptionModule { $this->decryptAll = $decryptAll; $this->logger = $logger; $this->l = $il10n; + $this->owner = []; $this->useMasterPassword = $util->isMasterKeyEnabled(); } @@ -280,13 +284,15 @@ class Encryption implements IEncryptionModule { } } - $publicKeys = $this->keyManager->addSystemKeys($this->accessList, $publicKeys, $this->user); + $publicKeys = $this->keyManager->addSystemKeys($this->accessList, $publicKeys, $this->getOwner($path)); $encryptedKeyfiles = $this->crypt->multiKeyEncrypt($this->fileKey, $publicKeys); $this->keyManager->setAllFileKeys($this->path, $encryptedKeyfiles); } return $result; } + + /** * encrypt data * @@ -407,7 +413,7 @@ class Encryption implements IEncryptionModule { } } - $publicKeys = $this->keyManager->addSystemKeys($accessList, $publicKeys, $uid); + $publicKeys = $this->keyManager->addSystemKeys($accessList, $publicKeys, $this->getOwner($path)); $encryptedFileKey = $this->crypt->multiKeyEncrypt($fileKey, $publicKeys); @@ -443,13 +449,13 @@ class Encryption implements IEncryptionModule { return false; } - if ($parts[2] == 'files') { + if ($parts[2] === 'files') { return true; } - if ($parts[2] == 'files_versions') { + if ($parts[2] === 'files_versions') { return true; } - if ($parts[2] == 'files_trashbin') { + if ($parts[2] === 'files_trashbin') { return true; } @@ -556,6 +562,19 @@ class Encryption implements IEncryptionModule { return $path; } + /** + * get owner of a file + * + * @param string $path + * @return string + */ + protected function getOwner($path) { + if (!isset($this->owner[$path])) { + $this->owner[$path] = $this->util->getOwner($path); + } + return $this->owner[$path]; + } + /** * Check if the module is ready to be used by that specific user. * In case a module is not ready - because e.g. key pairs have not been generated diff --git a/apps/federatedfilesharing/l10n/cs.js b/apps/federatedfilesharing/l10n/cs.js index ed397f95ca..32bb77a415 100644 --- a/apps/federatedfilesharing/l10n/cs.js +++ b/apps/federatedfilesharing/l10n/cs.js @@ -16,13 +16,13 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Sdílení ze serveru na server není na tomto serveru povoleno", "Couldn't establish a federated share." : "Nepodařilo se ustavit spojené sdílení.", "Couldn't establish a federated share, maybe the password was wrong." : "Nepodařilo se ustavit propojené sdílení, heslo může být nesprávné.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Požadavek na spojené sdílení uspěl, obdržíte pozvánku. Zkontrolujte vaše upozornění.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Požadavek na spojené sdílení byl odeslán, obdržíte pozvánku. Zkontrolujte vaše upozornění.", "The mountpoint name contains invalid characters." : "Jméno přípojného bodu obsahuje neplatné znaky.", "Not allowed to create a federated share with the owner." : "ONení povoleno s autorem vytvořit propojené sdílení.", "Invalid or untrusted SSL certificate" : "Neplatný nebo nedůvěryhodný SSL certifikát", "Could not authenticate to remote share, password might be wrong" : "Autentizace ke vzdálenému sdílení selhala, heslo může být nesprávné", "Storage not valid" : "Úložiště není platné", - "Federated Share successfully added" : "Propojené sdílení úspěšně přidáno", + "Federated share added" : "Propojené sdílení bylo přidáno", "Couldn't add remote share" : "Nepodařilo se přidat propojené sdílení", "Sharing %s failed, because this item is already shared with %s" : "Sdílení položky %s selhalo, protože položka již je s uživatelem %s sdílena", "Not allowed to create a federated share with the same user" : "Není povoleno vytvořit propojené sdílení s tím samým uživatelem", diff --git a/apps/federatedfilesharing/l10n/cs.json b/apps/federatedfilesharing/l10n/cs.json index 60c4f138bc..09a6185531 100644 --- a/apps/federatedfilesharing/l10n/cs.json +++ b/apps/federatedfilesharing/l10n/cs.json @@ -14,13 +14,13 @@ "Server to server sharing is not enabled on this server" : "Sdílení ze serveru na server není na tomto serveru povoleno", "Couldn't establish a federated share." : "Nepodařilo se ustavit spojené sdílení.", "Couldn't establish a federated share, maybe the password was wrong." : "Nepodařilo se ustavit propojené sdílení, heslo může být nesprávné.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Požadavek na spojené sdílení uspěl, obdržíte pozvánku. Zkontrolujte vaše upozornění.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Požadavek na spojené sdílení byl odeslán, obdržíte pozvánku. Zkontrolujte vaše upozornění.", "The mountpoint name contains invalid characters." : "Jméno přípojného bodu obsahuje neplatné znaky.", "Not allowed to create a federated share with the owner." : "ONení povoleno s autorem vytvořit propojené sdílení.", "Invalid or untrusted SSL certificate" : "Neplatný nebo nedůvěryhodný SSL certifikát", "Could not authenticate to remote share, password might be wrong" : "Autentizace ke vzdálenému sdílení selhala, heslo může být nesprávné", "Storage not valid" : "Úložiště není platné", - "Federated Share successfully added" : "Propojené sdílení úspěšně přidáno", + "Federated share added" : "Propojené sdílení bylo přidáno", "Couldn't add remote share" : "Nepodařilo se přidat propojené sdílení", "Sharing %s failed, because this item is already shared with %s" : "Sdílení položky %s selhalo, protože položka již je s uživatelem %s sdílena", "Not allowed to create a federated share with the same user" : "Není povoleno vytvořit propojené sdílení s tím samým uživatelem", diff --git a/apps/federatedfilesharing/l10n/de.js b/apps/federatedfilesharing/l10n/de.js index 7e21e3b825..8ab6f37092 100644 --- a/apps/federatedfilesharing/l10n/de.js +++ b/apps/federatedfilesharing/l10n/de.js @@ -16,13 +16,13 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Das Server-zu-Server-Teilen ist auf diesem Server nicht aktiviert", "Couldn't establish a federated share." : "Federated-Share konnte nicht aufgebaut werden", "Couldn't establish a federated share, maybe the password was wrong." : "Federated-Share konnte nicht aufgebaut werden, da eventuell das Passwort falsch ist.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Du erhälst eine Einladung. Bitte prüfe deine Benachrichtigungen.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Du erhälst eine Einladung. Bitte prüfe deine Benachrichtigungen. ", "The mountpoint name contains invalid characters." : "Der Name des Einhängepunktes enthält ungültige Zeichen.", "Not allowed to create a federated share with the owner." : "Das Erstellen einer Federated Cloud Freigabe mit dem Benutzer ist nicht erlaubt.", "Invalid or untrusted SSL certificate" : "Ungültiges oder nicht vertrauenswürdiges SSL-Zertifikat", "Could not authenticate to remote share, password might be wrong" : "Die Authentifizierung an der entfernten Freigabe konnte nicht erfolgen, das Passwort könnte falsch sein", "Storage not valid" : "Speicher ungültig", - "Federated Share successfully added" : "Federated-Share erfolgreich hinzugefügt", + "Federated share added" : "Federated-Share hinzugefügt ", "Couldn't add remote share" : "Remotefreigabe konnte nicht hinzu gefügt werden", "Sharing %s failed, because this item is already shared with %s" : "Freigabe von %s fehlgeschlagen, da dieses Objekt schon mit %s geteilt wird", "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt", diff --git a/apps/federatedfilesharing/l10n/de.json b/apps/federatedfilesharing/l10n/de.json index 2062d97d4c..5f322b07fc 100644 --- a/apps/federatedfilesharing/l10n/de.json +++ b/apps/federatedfilesharing/l10n/de.json @@ -14,13 +14,13 @@ "Server to server sharing is not enabled on this server" : "Das Server-zu-Server-Teilen ist auf diesem Server nicht aktiviert", "Couldn't establish a federated share." : "Federated-Share konnte nicht aufgebaut werden", "Couldn't establish a federated share, maybe the password was wrong." : "Federated-Share konnte nicht aufgebaut werden, da eventuell das Passwort falsch ist.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Du erhälst eine Einladung. Bitte prüfe deine Benachrichtigungen.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Du erhälst eine Einladung. Bitte prüfe deine Benachrichtigungen. ", "The mountpoint name contains invalid characters." : "Der Name des Einhängepunktes enthält ungültige Zeichen.", "Not allowed to create a federated share with the owner." : "Das Erstellen einer Federated Cloud Freigabe mit dem Benutzer ist nicht erlaubt.", "Invalid or untrusted SSL certificate" : "Ungültiges oder nicht vertrauenswürdiges SSL-Zertifikat", "Could not authenticate to remote share, password might be wrong" : "Die Authentifizierung an der entfernten Freigabe konnte nicht erfolgen, das Passwort könnte falsch sein", "Storage not valid" : "Speicher ungültig", - "Federated Share successfully added" : "Federated-Share erfolgreich hinzugefügt", + "Federated share added" : "Federated-Share hinzugefügt ", "Couldn't add remote share" : "Remotefreigabe konnte nicht hinzu gefügt werden", "Sharing %s failed, because this item is already shared with %s" : "Freigabe von %s fehlgeschlagen, da dieses Objekt schon mit %s geteilt wird", "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt", diff --git a/apps/federatedfilesharing/l10n/de_DE.js b/apps/federatedfilesharing/l10n/de_DE.js index 1a2fad5b1f..c183d3ee23 100644 --- a/apps/federatedfilesharing/l10n/de_DE.js +++ b/apps/federatedfilesharing/l10n/de_DE.js @@ -16,13 +16,13 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Das Server-zu-Server-Teilen ist auf diesem Server nicht aktiviert", "Couldn't establish a federated share." : "Federated-Share konnte nicht aufgebaut werden", "Couldn't establish a federated share, maybe the password was wrong." : "Federated-Share konnte nicht aufgebaut werden, da eventuell das Passwort falsch ist.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Sie erhalten eine Einladung. Bitte prüfen Sie Ihre Benachrichtigungen.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Sie erhalten eine Einladung. Bitte prüfen Sie Ihre Benachrichtigungen. ", "The mountpoint name contains invalid characters." : "Der Name des Einhängepunktes enthält ungültige Zeichen.", "Not allowed to create a federated share with the owner." : "Das Erstellen einer Federated Cloud Freigabe mit dem Benutzer ist nicht erlaubt.", "Invalid or untrusted SSL certificate" : "Ungültiges oder nicht vertrauenswürdiges SSL-Zertifikat", "Could not authenticate to remote share, password might be wrong" : "Die Authentifizierung an der entfernten Freigabe konnte nicht erfolgen, das Passwort könnte falsch sein", "Storage not valid" : "Speicher ungültig", - "Federated Share successfully added" : "Federated-Share erfolgreich hinzugefügt", + "Federated share added" : "Federated-Share hinzugefügt ", "Couldn't add remote share" : "Remotefreigabe konnte nicht hinzu gefügt werden", "Sharing %s failed, because this item is already shared with %s" : "Die Freigabe von %s ist fehlgeschlagen, da dieses Objekt schon mit %s geteilt wird", "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt", diff --git a/apps/federatedfilesharing/l10n/de_DE.json b/apps/federatedfilesharing/l10n/de_DE.json index 1ea3da04ff..8ecc17d39e 100644 --- a/apps/federatedfilesharing/l10n/de_DE.json +++ b/apps/federatedfilesharing/l10n/de_DE.json @@ -14,13 +14,13 @@ "Server to server sharing is not enabled on this server" : "Das Server-zu-Server-Teilen ist auf diesem Server nicht aktiviert", "Couldn't establish a federated share." : "Federated-Share konnte nicht aufgebaut werden", "Couldn't establish a federated share, maybe the password was wrong." : "Federated-Share konnte nicht aufgebaut werden, da eventuell das Passwort falsch ist.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Sie erhalten eine Einladung. Bitte prüfen Sie Ihre Benachrichtigungen.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Sie erhalten eine Einladung. Bitte prüfen Sie Ihre Benachrichtigungen. ", "The mountpoint name contains invalid characters." : "Der Name des Einhängepunktes enthält ungültige Zeichen.", "Not allowed to create a federated share with the owner." : "Das Erstellen einer Federated Cloud Freigabe mit dem Benutzer ist nicht erlaubt.", "Invalid or untrusted SSL certificate" : "Ungültiges oder nicht vertrauenswürdiges SSL-Zertifikat", "Could not authenticate to remote share, password might be wrong" : "Die Authentifizierung an der entfernten Freigabe konnte nicht erfolgen, das Passwort könnte falsch sein", "Storage not valid" : "Speicher ungültig", - "Federated Share successfully added" : "Federated-Share erfolgreich hinzugefügt", + "Federated share added" : "Federated-Share hinzugefügt ", "Couldn't add remote share" : "Remotefreigabe konnte nicht hinzu gefügt werden", "Sharing %s failed, because this item is already shared with %s" : "Die Freigabe von %s ist fehlgeschlagen, da dieses Objekt schon mit %s geteilt wird", "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt", diff --git a/apps/federatedfilesharing/l10n/el.js b/apps/federatedfilesharing/l10n/el.js index f59ca88ed6..6928eb29cb 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 d5d2e3c3fc..b49122ddd5 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/en_GB.js b/apps/federatedfilesharing/l10n/en_GB.js index ca72c28271..a20a0400df 100644 --- a/apps/federatedfilesharing/l10n/en_GB.js +++ b/apps/federatedfilesharing/l10n/en_GB.js @@ -16,13 +16,13 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Server to server sharing is not enabled on this server", "Couldn't establish a federated share." : "Couldn't establish a federated share.", "Couldn't establish a federated share, maybe the password was wrong." : "Couldn't establish a federated share, maybe the password was wrong.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Federated Share request was successful, you will receive a invitation. Check your notifications.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Federated Share request sent, you will receive an invitation. Check your notifications.", "The mountpoint name contains invalid characters." : "The mountpoint name contains invalid characters.", "Not allowed to create a federated share with the owner." : "Not allowed to create a federated share with the owner.", "Invalid or untrusted SSL certificate" : "Invalid or untrusted SSL certificate", "Could not authenticate to remote share, password might be wrong" : "Could not authenticate to remote share, password might be wrong", "Storage not valid" : "Storage not valid", - "Federated Share successfully added" : "Federated Share successfully added", + "Federated share added" : "Federated share added", "Couldn't add remote share" : "Couldn't add remote share", "Sharing %s failed, because this item is already shared with %s" : "Sharing %s failed, because this item is already shared with %s", "Not allowed to create a federated share with the same user" : "Not allowed to create a federated share with the same user", diff --git a/apps/federatedfilesharing/l10n/en_GB.json b/apps/federatedfilesharing/l10n/en_GB.json index cf80ce4ae4..63f36180af 100644 --- a/apps/federatedfilesharing/l10n/en_GB.json +++ b/apps/federatedfilesharing/l10n/en_GB.json @@ -14,13 +14,13 @@ "Server to server sharing is not enabled on this server" : "Server to server sharing is not enabled on this server", "Couldn't establish a federated share." : "Couldn't establish a federated share.", "Couldn't establish a federated share, maybe the password was wrong." : "Couldn't establish a federated share, maybe the password was wrong.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Federated Share request was successful, you will receive a invitation. Check your notifications.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Federated Share request sent, you will receive an invitation. Check your notifications.", "The mountpoint name contains invalid characters." : "The mountpoint name contains invalid characters.", "Not allowed to create a federated share with the owner." : "Not allowed to create a federated share with the owner.", "Invalid or untrusted SSL certificate" : "Invalid or untrusted SSL certificate", "Could not authenticate to remote share, password might be wrong" : "Could not authenticate to remote share, password might be wrong", "Storage not valid" : "Storage not valid", - "Federated Share successfully added" : "Federated Share successfully added", + "Federated share added" : "Federated share added", "Couldn't add remote share" : "Couldn't add remote share", "Sharing %s failed, because this item is already shared with %s" : "Sharing %s failed, because this item is already shared with %s", "Not allowed to create a federated share with the same user" : "Not allowed to create a federated share with the same user", diff --git a/apps/federatedfilesharing/l10n/es.js b/apps/federatedfilesharing/l10n/es.js index 6cfe4cf8e0..61a0298145 100644 --- a/apps/federatedfilesharing/l10n/es.js +++ b/apps/federatedfilesharing/l10n/es.js @@ -12,17 +12,17 @@ OC.L10N.register( "Not supported!" : "¡No se puede!", "Press ⌘-C to copy." : "Presiona ⌘-C para copiar.", "Press Ctrl-C to copy." : "Presiona Ctrl-C para copiar.", - "Invalid Federated Cloud ID" : "ID Nube federada inválida", + "Invalid Federated Cloud ID" : "ID de Nube Federada inválida", "Server to server sharing is not enabled on this server" : "Compartir entre servidores no está habilitado en este servidor", "Couldn't establish a federated share." : "No se puede añadir un compartido remoto", "Couldn't establish a federated share, maybe the password was wrong." : "No se pudo establecer un compartido remoto, puede que la contraseña fuera incorrecta.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La petición de crear un compartido remoto fue aceptada, usted recibirá una notificación. Comprueba sus notificaciones.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Petición de recurso compartido federado enviada, recibirás una invitación. Comprueba tus notificaciones.", "The mountpoint name contains invalid characters." : "El punto de montaje contiene caracteres inválidos.", "Not allowed to create a federated share with the owner." : "No se permite crear un recurso compartido federado con el propietario", "Invalid or untrusted SSL certificate" : "Certificado SSL inválido o no confiable", "Could not authenticate to remote share, password might be wrong" : "No se ha podido autenticar para compartir remotamente, quizás esté mal la contraseña", "Storage not valid" : "Almacenamiento inválido", - "Federated Share successfully added" : "Compartido remoto federado añadido con éxito", + "Federated share added" : "Recurso compartido federado añadido", "Couldn't add remote share" : "No se puede añadir un compartido remoto", "Sharing %s failed, because this item is already shared with %s" : "Se falló al compartir %s, ya que este elemento ya está compartido con %s", "Not allowed to create a federated share with the same user" : "No se permite crear un recurso compartido federado con el mismo usuario", @@ -35,8 +35,8 @@ OC.L10N.register( "You received {share} as a remote share from {user}" : "Ha recibido {share} como un compartido remoto de {user}", "Accept" : "Aceptar", "Decline" : "Denegar", - "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Compartirlo conmigo a través de mi ID Nube Federada #Nextcloud, ver %s", - "Share with me through my #Nextcloud Federated Cloud ID" : "Compartirlo conmigo a través de mi ID Nube Federada #Nextcloud", + "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Compartirlo conmigo a través de mi ID de Nube Federada #Nextcloud, ver %s", + "Share with me through my #Nextcloud Federated Cloud ID" : "Compartirlo conmigo a través de mi ID de Nube Federada #Nextcloud", "Sharing" : "Compartiendo", "Federated file sharing" : "Compartición de archivos federada", "Federated Cloud Sharing" : "Compartido en Cloud Federado", @@ -47,8 +47,8 @@ OC.L10N.register( "Search global and public address book for users" : "Buscar libretas de contactos globales y públicas para usuarios", "Allow users to publish their data to a global and public address book" : "Permitir a los usuarios publicar su información en la libreta de direcciones global y pública", "Federated Cloud" : "Nube Federada", - "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" : "¡Puedes compartir con cualquiera que use Nextcloud, ownCloud o Pydio! Simplemente, pon su ID de nube federada en el diálogo de compartir. Es algo como person@cloud.example.com", - "Your Federated Cloud ID:" : "Su ID Nube Federada:", + "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" : "¡Puedes compartir con cualquiera que use Nextcloud, ownCloud o Pydio! Simplemente, pon su ID de Nube Federada en el diálogo de compartir. Algo como person@cloud.example.com", + "Your Federated Cloud ID:" : "Tu ID de Nube Federada:", "Share it so your friends can share files with you:" : "Compártelo para que tus amigos puedan compartir archivos contigo:", "Add to your website" : "Añadir a su sitio web", "Share with me via Nextcloud" : "Compartirlo conmigo vía Nextcloud", diff --git a/apps/federatedfilesharing/l10n/es.json b/apps/federatedfilesharing/l10n/es.json index bf9f263259..6ebfc2c95c 100644 --- a/apps/federatedfilesharing/l10n/es.json +++ b/apps/federatedfilesharing/l10n/es.json @@ -10,17 +10,17 @@ "Not supported!" : "¡No se puede!", "Press ⌘-C to copy." : "Presiona ⌘-C para copiar.", "Press Ctrl-C to copy." : "Presiona Ctrl-C para copiar.", - "Invalid Federated Cloud ID" : "ID Nube federada inválida", + "Invalid Federated Cloud ID" : "ID de Nube Federada inválida", "Server to server sharing is not enabled on this server" : "Compartir entre servidores no está habilitado en este servidor", "Couldn't establish a federated share." : "No se puede añadir un compartido remoto", "Couldn't establish a federated share, maybe the password was wrong." : "No se pudo establecer un compartido remoto, puede que la contraseña fuera incorrecta.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La petición de crear un compartido remoto fue aceptada, usted recibirá una notificación. Comprueba sus notificaciones.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Petición de recurso compartido federado enviada, recibirás una invitación. Comprueba tus notificaciones.", "The mountpoint name contains invalid characters." : "El punto de montaje contiene caracteres inválidos.", "Not allowed to create a federated share with the owner." : "No se permite crear un recurso compartido federado con el propietario", "Invalid or untrusted SSL certificate" : "Certificado SSL inválido o no confiable", "Could not authenticate to remote share, password might be wrong" : "No se ha podido autenticar para compartir remotamente, quizás esté mal la contraseña", "Storage not valid" : "Almacenamiento inválido", - "Federated Share successfully added" : "Compartido remoto federado añadido con éxito", + "Federated share added" : "Recurso compartido federado añadido", "Couldn't add remote share" : "No se puede añadir un compartido remoto", "Sharing %s failed, because this item is already shared with %s" : "Se falló al compartir %s, ya que este elemento ya está compartido con %s", "Not allowed to create a federated share with the same user" : "No se permite crear un recurso compartido federado con el mismo usuario", @@ -33,8 +33,8 @@ "You received {share} as a remote share from {user}" : "Ha recibido {share} como un compartido remoto de {user}", "Accept" : "Aceptar", "Decline" : "Denegar", - "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Compartirlo conmigo a través de mi ID Nube Federada #Nextcloud, ver %s", - "Share with me through my #Nextcloud Federated Cloud ID" : "Compartirlo conmigo a través de mi ID Nube Federada #Nextcloud", + "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Compartirlo conmigo a través de mi ID de Nube Federada #Nextcloud, ver %s", + "Share with me through my #Nextcloud Federated Cloud ID" : "Compartirlo conmigo a través de mi ID de Nube Federada #Nextcloud", "Sharing" : "Compartiendo", "Federated file sharing" : "Compartición de archivos federada", "Federated Cloud Sharing" : "Compartido en Cloud Federado", @@ -45,8 +45,8 @@ "Search global and public address book for users" : "Buscar libretas de contactos globales y públicas para usuarios", "Allow users to publish their data to a global and public address book" : "Permitir a los usuarios publicar su información en la libreta de direcciones global y pública", "Federated Cloud" : "Nube Federada", - "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" : "¡Puedes compartir con cualquiera que use Nextcloud, ownCloud o Pydio! Simplemente, pon su ID de nube federada en el diálogo de compartir. Es algo como person@cloud.example.com", - "Your Federated Cloud ID:" : "Su ID Nube Federada:", + "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" : "¡Puedes compartir con cualquiera que use Nextcloud, ownCloud o Pydio! Simplemente, pon su ID de Nube Federada en el diálogo de compartir. Algo como person@cloud.example.com", + "Your Federated Cloud ID:" : "Tu ID de Nube Federada:", "Share it so your friends can share files with you:" : "Compártelo para que tus amigos puedan compartir archivos contigo:", "Add to your website" : "Añadir a su sitio web", "Share with me via Nextcloud" : "Compartirlo conmigo vía Nextcloud", diff --git a/apps/federatedfilesharing/l10n/es_AR.js b/apps/federatedfilesharing/l10n/es_AR.js index 4cad923bef..9bbca24569 100644 --- a/apps/federatedfilesharing/l10n/es_AR.js +++ b/apps/federatedfilesharing/l10n/es_AR.js @@ -16,13 +16,11 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Compartir de servidor a servidor no está habilitado en este servidor", "Couldn't establish a federated share." : "No fue posible establecer el elemento compartido federado. ", "Couldn't establish a federated share, maybe the password was wrong." : "No fue posible establecer el elemento compartido federado, tal vez la contraseña sea incorrecta. ", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La solicitud del elemento compatido federado fue exitosa, recibirá una invitación. Verifique sus notificaciones. ", "The mountpoint name contains invalid characters." : "El nombre del punto de montaje contiene caracteres inválidos.", "Not allowed to create a federated share with the owner." : "No está permitido crear un elemento compartido federado con el dueño. ", "Invalid or untrusted SSL certificate" : "Certificado SSL inválido o no confiable", "Could not authenticate to remote share, password might be wrong" : "No fue posible autenticarse ante el elemento compartido remoto, la contraseña puede estar mal", "Storage not valid" : "Almacenamiento inválido", - "Federated Share successfully added" : "El Elemento Compartido Federado fue agregado exitosamente", "Couldn't add remote share" : "No fue posible agregar el elemento compartido remoto", "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya se encuentra compartido con %s", "Not allowed to create a federated share with the same user" : "No está permitido crear un elelmento compartido federado con el mismo usuario", diff --git a/apps/federatedfilesharing/l10n/es_AR.json b/apps/federatedfilesharing/l10n/es_AR.json index 784ebe9821..7b1f71198b 100644 --- a/apps/federatedfilesharing/l10n/es_AR.json +++ b/apps/federatedfilesharing/l10n/es_AR.json @@ -14,13 +14,11 @@ "Server to server sharing is not enabled on this server" : "Compartir de servidor a servidor no está habilitado en este servidor", "Couldn't establish a federated share." : "No fue posible establecer el elemento compartido federado. ", "Couldn't establish a federated share, maybe the password was wrong." : "No fue posible establecer el elemento compartido federado, tal vez la contraseña sea incorrecta. ", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La solicitud del elemento compatido federado fue exitosa, recibirá una invitación. Verifique sus notificaciones. ", "The mountpoint name contains invalid characters." : "El nombre del punto de montaje contiene caracteres inválidos.", "Not allowed to create a federated share with the owner." : "No está permitido crear un elemento compartido federado con el dueño. ", "Invalid or untrusted SSL certificate" : "Certificado SSL inválido o no confiable", "Could not authenticate to remote share, password might be wrong" : "No fue posible autenticarse ante el elemento compartido remoto, la contraseña puede estar mal", "Storage not valid" : "Almacenamiento inválido", - "Federated Share successfully added" : "El Elemento Compartido Federado fue agregado exitosamente", "Couldn't add remote share" : "No fue posible agregar el elemento compartido remoto", "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya se encuentra compartido con %s", "Not allowed to create a federated share with the same user" : "No está permitido crear un elelmento compartido federado con el mismo usuario", diff --git a/apps/federatedfilesharing/l10n/es_MX.js b/apps/federatedfilesharing/l10n/es_MX.js index bc3aef608c..d8a0eecd20 100644 --- a/apps/federatedfilesharing/l10n/es_MX.js +++ b/apps/federatedfilesharing/l10n/es_MX.js @@ -16,13 +16,13 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Compartir de servidor a servidor no está habilitado en este servidor", "Couldn't establish a federated share." : "No fue posible establecer el elemento compartido federado. ", "Couldn't establish a federated share, maybe the password was wrong." : "No fue posible establecer el elemento compartido federado, tal vez la contraseña sea incorrecta. ", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La solicitud del elemento compatido federado fue exitosa, recibirás una invitación. Verifica tus notificaciones. ", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Solicitud de elemento compartido Federado enviada, recibiras una invitación. Verifica tus notificaciones.", "The mountpoint name contains invalid characters." : "El nombre del punto de montaje contiene caracteres inválidos.", "Not allowed to create a federated share with the owner." : "No está permitido crear un elemento compartido federado con el dueño. ", "Invalid or untrusted SSL certificate" : "Certificado SSL inválido o no confiable", "Could not authenticate to remote share, password might be wrong" : "No fue posible autenticarse ante el elemento compartido remoto, la contraseña puede estar incorrecta", "Storage not valid" : "Almacenamiento inválido", - "Federated Share successfully added" : "El Elemento Compartido Federado fue agregado exitosamente", + "Federated share added" : "Elemento compartido Federado agregado", "Couldn't add remote share" : "No fue posible agregar el elemento compartido remoto", "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya se encuentra compartido con %s", "Not allowed to create a federated share with the same user" : "No está permitido crear un elelmento compartido federado con el mismo usuario", diff --git a/apps/federatedfilesharing/l10n/es_MX.json b/apps/federatedfilesharing/l10n/es_MX.json index a88cfb6229..d880af84ea 100644 --- a/apps/federatedfilesharing/l10n/es_MX.json +++ b/apps/federatedfilesharing/l10n/es_MX.json @@ -14,13 +14,13 @@ "Server to server sharing is not enabled on this server" : "Compartir de servidor a servidor no está habilitado en este servidor", "Couldn't establish a federated share." : "No fue posible establecer el elemento compartido federado. ", "Couldn't establish a federated share, maybe the password was wrong." : "No fue posible establecer el elemento compartido federado, tal vez la contraseña sea incorrecta. ", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La solicitud del elemento compatido federado fue exitosa, recibirás una invitación. Verifica tus notificaciones. ", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Solicitud de elemento compartido Federado enviada, recibiras una invitación. Verifica tus notificaciones.", "The mountpoint name contains invalid characters." : "El nombre del punto de montaje contiene caracteres inválidos.", "Not allowed to create a federated share with the owner." : "No está permitido crear un elemento compartido federado con el dueño. ", "Invalid or untrusted SSL certificate" : "Certificado SSL inválido o no confiable", "Could not authenticate to remote share, password might be wrong" : "No fue posible autenticarse ante el elemento compartido remoto, la contraseña puede estar incorrecta", "Storage not valid" : "Almacenamiento inválido", - "Federated Share successfully added" : "El Elemento Compartido Federado fue agregado exitosamente", + "Federated share added" : "Elemento compartido Federado agregado", "Couldn't add remote share" : "No fue posible agregar el elemento compartido remoto", "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya se encuentra compartido con %s", "Not allowed to create a federated share with the same user" : "No está permitido crear un elelmento compartido federado con el mismo usuario", diff --git a/apps/federatedfilesharing/l10n/fi.js b/apps/federatedfilesharing/l10n/fi.js index 2de7e30ed4..bd6e93a968 100644 --- a/apps/federatedfilesharing/l10n/fi.js +++ b/apps/federatedfilesharing/l10n/fi.js @@ -16,13 +16,11 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Palvelimien kesken jakaminen ei ole käytössä tällä palvelimella", "Couldn't establish a federated share." : "Ei voinut muodostaa federoitua jakoa.", "Couldn't establish a federated share, maybe the password was wrong." : "Ei voinut muodostaa federoitua jakoa. Ehkä salasana oli väärin.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Federoidun jaon pyyntö onnistui. Tulet saamaan kutsun. Tarkista ilmoituksesi.", "The mountpoint name contains invalid characters." : "Liitospisteen nimi sisältää virheellisiä merkkejä.", "Not allowed to create a federated share with the owner." : "Omistajan kanssa ei ole sallittua luoda federoitua jakoa.", "Invalid or untrusted SSL certificate" : "Virheellinen tai ei-luotettu SSL-varmenne", "Could not authenticate to remote share, password might be wrong" : "Tunnistautuminen etäjakoa kohtaan epäonnistui. Salasana saattaa olla väärä", "Storage not valid" : "Tallennustila ei ole kelvollinen", - "Federated Share successfully added" : "Federoitu jako lisätty onnistuneesti", "Couldn't add remote share" : "Etäjaon liittäminen epäonnistui", "Sharing %s failed, because this item is already shared with %s" : "Kohteen %s jakaminen epäonnistui, koska kohde on jo jaettu käyttäjälle %s", "Not allowed to create a federated share with the same user" : "Saman käyttäjän kanssa ei ole sallittua luoda federoitua jakoa", diff --git a/apps/federatedfilesharing/l10n/fi.json b/apps/federatedfilesharing/l10n/fi.json index 47f6300ce8..41586d0b57 100644 --- a/apps/federatedfilesharing/l10n/fi.json +++ b/apps/federatedfilesharing/l10n/fi.json @@ -14,13 +14,11 @@ "Server to server sharing is not enabled on this server" : "Palvelimien kesken jakaminen ei ole käytössä tällä palvelimella", "Couldn't establish a federated share." : "Ei voinut muodostaa federoitua jakoa.", "Couldn't establish a federated share, maybe the password was wrong." : "Ei voinut muodostaa federoitua jakoa. Ehkä salasana oli väärin.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Federoidun jaon pyyntö onnistui. Tulet saamaan kutsun. Tarkista ilmoituksesi.", "The mountpoint name contains invalid characters." : "Liitospisteen nimi sisältää virheellisiä merkkejä.", "Not allowed to create a federated share with the owner." : "Omistajan kanssa ei ole sallittua luoda federoitua jakoa.", "Invalid or untrusted SSL certificate" : "Virheellinen tai ei-luotettu SSL-varmenne", "Could not authenticate to remote share, password might be wrong" : "Tunnistautuminen etäjakoa kohtaan epäonnistui. Salasana saattaa olla väärä", "Storage not valid" : "Tallennustila ei ole kelvollinen", - "Federated Share successfully added" : "Federoitu jako lisätty onnistuneesti", "Couldn't add remote share" : "Etäjaon liittäminen epäonnistui", "Sharing %s failed, because this item is already shared with %s" : "Kohteen %s jakaminen epäonnistui, koska kohde on jo jaettu käyttäjälle %s", "Not allowed to create a federated share with the same user" : "Saman käyttäjän kanssa ei ole sallittua luoda federoitua jakoa", diff --git a/apps/federatedfilesharing/l10n/fr.js b/apps/federatedfilesharing/l10n/fr.js index 6c85f65417..937992c61b 100644 --- a/apps/federatedfilesharing/l10n/fr.js +++ b/apps/federatedfilesharing/l10n/fr.js @@ -16,13 +16,13 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Le partage de serveur à serveur n'est pas activé sur ce serveur", "Couldn't establish a federated share." : "Impossible d'établir un partage fédéré.", "Couldn't establish a federated share, maybe the password was wrong." : "Impossible d'établir un partage fédéré, peut-être que le mot de passe est incorrect.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La demande de partage fédéré est réussie, vous allez recevoir une invitation. Vérifiez vos notifications.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Demande de partage fédéré envoyée, vous allez recevoir une invitation. Vérifiez vos notifications.", "The mountpoint name contains invalid characters." : "Le nom du point de montage contient des caractères invalides.", "Not allowed to create a federated share with the owner." : "Vous n'êtes pas autorisé à créer un partage fédéré avec le propriétaire.", "Invalid or untrusted SSL certificate" : "Certificat SSL invalide ou non approuvé", "Could not authenticate to remote share, password might be wrong" : "Impossible de se connecter au partage distant, le mot de passe peut-être incorrect", "Storage not valid" : "Support de stockage non valide", - "Federated Share successfully added" : "Partage fédéré ajouté avec succès", + "Federated share added" : "Partage fédéré ajouté", "Couldn't add remote share" : "Impossible d'ajouter le partage distant", "Sharing %s failed, because this item is already shared with %s" : "Le partage de %s a échoué car cet élément est déjà partagé avec %s", "Not allowed to create a federated share with the same user" : "Non autorisé à créer un partage fédéré avec le même utilisateur", diff --git a/apps/federatedfilesharing/l10n/fr.json b/apps/federatedfilesharing/l10n/fr.json index 4e657dd48e..43edf9eb0c 100644 --- a/apps/federatedfilesharing/l10n/fr.json +++ b/apps/federatedfilesharing/l10n/fr.json @@ -14,13 +14,13 @@ "Server to server sharing is not enabled on this server" : "Le partage de serveur à serveur n'est pas activé sur ce serveur", "Couldn't establish a federated share." : "Impossible d'établir un partage fédéré.", "Couldn't establish a federated share, maybe the password was wrong." : "Impossible d'établir un partage fédéré, peut-être que le mot de passe est incorrect.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La demande de partage fédéré est réussie, vous allez recevoir une invitation. Vérifiez vos notifications.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Demande de partage fédéré envoyée, vous allez recevoir une invitation. Vérifiez vos notifications.", "The mountpoint name contains invalid characters." : "Le nom du point de montage contient des caractères invalides.", "Not allowed to create a federated share with the owner." : "Vous n'êtes pas autorisé à créer un partage fédéré avec le propriétaire.", "Invalid or untrusted SSL certificate" : "Certificat SSL invalide ou non approuvé", "Could not authenticate to remote share, password might be wrong" : "Impossible de se connecter au partage distant, le mot de passe peut-être incorrect", "Storage not valid" : "Support de stockage non valide", - "Federated Share successfully added" : "Partage fédéré ajouté avec succès", + "Federated share added" : "Partage fédéré ajouté", "Couldn't add remote share" : "Impossible d'ajouter le partage distant", "Sharing %s failed, because this item is already shared with %s" : "Le partage de %s a échoué car cet élément est déjà partagé avec %s", "Not allowed to create a federated share with the same user" : "Non autorisé à créer un partage fédéré avec le même utilisateur", diff --git a/apps/federatedfilesharing/l10n/hu.js b/apps/federatedfilesharing/l10n/hu.js index fbb225b63a..f30ba37b29 100644 --- a/apps/federatedfilesharing/l10n/hu.js +++ b/apps/federatedfilesharing/l10n/hu.js @@ -16,13 +16,11 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "A kiszolgálók közötti megosztás nincs engedélyezve ezen a kiszolgálón", "Couldn't establish a federated share." : "Egy egyesített megosztás nem hozható létre.", "Couldn't establish a federated share, maybe the password was wrong." : "Egy egyesített megosztás nem hozható létre, lehet hogy nem megfelelő a jelszó.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Az egyesített megosztási kérés sikeres volt, kapni fogsz egy értesítést. Ellenőrizd az értesítéseidet.", "The mountpoint name contains invalid characters." : "A csatolási pont neve érvénytelen karaktereket tartalmaz ", "Not allowed to create a federated share with the owner." : "A tulajdonossal nem lehet egyesített megosztást létrehozni.", "Invalid or untrusted SSL certificate" : "Érvénytelen vagy nem megbízható az SSL tanúsítvány", "Could not authenticate to remote share, password might be wrong" : "Nem sikerült az azonosítás a távoli megosztáshoz. Lehet, hogy rossz a jelszó.", "Storage not valid" : "A tároló nem érvényes", - "Federated Share successfully added" : "Egyesített megosztás sikeresen hozzáadva", "Couldn't add remote share" : "Távoli megosztás nem adható hozzá", "Sharing %s failed, because this item is already shared with %s" : "%s megosztása nem sikerült, mert ez már meg van osztva vele: %s", "Not allowed to create a federated share with the same user" : "Azonos felhasználóval nem lehet létrehozni egyesített megosztást", diff --git a/apps/federatedfilesharing/l10n/hu.json b/apps/federatedfilesharing/l10n/hu.json index dd92c7f9fc..c8d717e11d 100644 --- a/apps/federatedfilesharing/l10n/hu.json +++ b/apps/federatedfilesharing/l10n/hu.json @@ -14,13 +14,11 @@ "Server to server sharing is not enabled on this server" : "A kiszolgálók közötti megosztás nincs engedélyezve ezen a kiszolgálón", "Couldn't establish a federated share." : "Egy egyesített megosztás nem hozható létre.", "Couldn't establish a federated share, maybe the password was wrong." : "Egy egyesített megosztás nem hozható létre, lehet hogy nem megfelelő a jelszó.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Az egyesített megosztási kérés sikeres volt, kapni fogsz egy értesítést. Ellenőrizd az értesítéseidet.", "The mountpoint name contains invalid characters." : "A csatolási pont neve érvénytelen karaktereket tartalmaz ", "Not allowed to create a federated share with the owner." : "A tulajdonossal nem lehet egyesített megosztást létrehozni.", "Invalid or untrusted SSL certificate" : "Érvénytelen vagy nem megbízható az SSL tanúsítvány", "Could not authenticate to remote share, password might be wrong" : "Nem sikerült az azonosítás a távoli megosztáshoz. Lehet, hogy rossz a jelszó.", "Storage not valid" : "A tároló nem érvényes", - "Federated Share successfully added" : "Egyesített megosztás sikeresen hozzáadva", "Couldn't add remote share" : "Távoli megosztás nem adható hozzá", "Sharing %s failed, because this item is already shared with %s" : "%s megosztása nem sikerült, mert ez már meg van osztva vele: %s", "Not allowed to create a federated share with the same user" : "Azonos felhasználóval nem lehet létrehozni egyesített megosztást", diff --git a/apps/federatedfilesharing/l10n/ia.js b/apps/federatedfilesharing/l10n/ia.js index df6da6fde4..78fdb02aab 100644 --- a/apps/federatedfilesharing/l10n/ia.js +++ b/apps/federatedfilesharing/l10n/ia.js @@ -16,13 +16,11 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Le Compartir de Servitor a Servitor non es activate in iste servitor", "Couldn't establish a federated share." : "Impossibile establir le Compartir Federate.", "Couldn't establish a federated share, maybe the password was wrong." : "Impossibile establir le Compartir Federate, possibilemente le contrasigno esseva incorrecte.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Le demanda pro un Compartir Federate ha successo, tu recipera un invitation. Verifica tu notificationes.", "The mountpoint name contains invalid characters." : "Le nomine pro le puncto de montage contine characteres non valide.", "Not allowed to create a federated share with the owner." : "Il non es permittite crear le Compartir Federate con le proprietario.", "Invalid or untrusted SSL certificate" : "Certificato SSL non valide o non fiduciari", "Could not authenticate to remote share, password might be wrong" : "Impossibile authenticar al Compartir Remote, le contrasigno debe esser incorrecte", "Storage not valid" : "Immagazinage non valide", - "Federated Share successfully added" : "Le Compartir Federate addite con successo", "Couldn't add remote share" : "Impossibile adder le Compartir Remote", "Sharing %s failed, because this item is already shared with %s" : "Compartir %s falleva, proque iste elemento ja es compartite con %s", "Not allowed to create a federated share with the same user" : "Il non es permittite crear le Compartir Federate con le mesme usator.", diff --git a/apps/federatedfilesharing/l10n/ia.json b/apps/federatedfilesharing/l10n/ia.json index 2476b0d879..af9b3a6be4 100644 --- a/apps/federatedfilesharing/l10n/ia.json +++ b/apps/federatedfilesharing/l10n/ia.json @@ -14,13 +14,11 @@ "Server to server sharing is not enabled on this server" : "Le Compartir de Servitor a Servitor non es activate in iste servitor", "Couldn't establish a federated share." : "Impossibile establir le Compartir Federate.", "Couldn't establish a federated share, maybe the password was wrong." : "Impossibile establir le Compartir Federate, possibilemente le contrasigno esseva incorrecte.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Le demanda pro un Compartir Federate ha successo, tu recipera un invitation. Verifica tu notificationes.", "The mountpoint name contains invalid characters." : "Le nomine pro le puncto de montage contine characteres non valide.", "Not allowed to create a federated share with the owner." : "Il non es permittite crear le Compartir Federate con le proprietario.", "Invalid or untrusted SSL certificate" : "Certificato SSL non valide o non fiduciari", "Could not authenticate to remote share, password might be wrong" : "Impossibile authenticar al Compartir Remote, le contrasigno debe esser incorrecte", "Storage not valid" : "Immagazinage non valide", - "Federated Share successfully added" : "Le Compartir Federate addite con successo", "Couldn't add remote share" : "Impossibile adder le Compartir Remote", "Sharing %s failed, because this item is already shared with %s" : "Compartir %s falleva, proque iste elemento ja es compartite con %s", "Not allowed to create a federated share with the same user" : "Il non es permittite crear le Compartir Federate con le mesme usator.", diff --git a/apps/federatedfilesharing/l10n/id.js b/apps/federatedfilesharing/l10n/id.js index 1ac1b75b33..4760bb17b9 100644 --- a/apps/federatedfilesharing/l10n/id.js +++ b/apps/federatedfilesharing/l10n/id.js @@ -16,13 +16,11 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Berbagi server ke server tidak diaktifkan pada server ini", "Couldn't establish a federated share." : "Tidak dapat mendirikan pembagian terfederasi", "Couldn't establish a federated share, maybe the password was wrong." : "Tidak dapat mendirikan pembagian terfederasi, mungkin sandi salah.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Permintaan pembagian terfederasi sukses, Anda akan mendapatkan undangan. Cek pemberitahuan Anda.", "The mountpoint name contains invalid characters." : "Nama mount point berisi karakter yang tidak sah.", "Not allowed to create a federated share with the owner." : "Tidak diizinkan membuat pembagian terfederasi dengan pemilik.", "Invalid or untrusted SSL certificate" : "Sertifikat SSL tidak sah atau tidak terpercaya", "Could not authenticate to remote share, password might be wrong" : "Tidak dapat mengautentikasi berbagi remote, kata sandi mungkin salah", "Storage not valid" : "Penyimpanan tidak sah", - "Federated Share successfully added" : "Pembagian terfederasi sukses ditambahkan", "Couldn't add remote share" : "Tidak dapat menambahkan berbagi remote", "Sharing %s failed, because this item is already shared with %s" : "Gagal membagkan %s, karena item ini sudah dibagikan dengan %s", "Not allowed to create a federated share with the same user" : "Tidak diizinkan membuat pembagian terfederasi dengan pengguna yang sama", diff --git a/apps/federatedfilesharing/l10n/id.json b/apps/federatedfilesharing/l10n/id.json index 806aca73b2..95da03dff5 100644 --- a/apps/federatedfilesharing/l10n/id.json +++ b/apps/federatedfilesharing/l10n/id.json @@ -14,13 +14,11 @@ "Server to server sharing is not enabled on this server" : "Berbagi server ke server tidak diaktifkan pada server ini", "Couldn't establish a federated share." : "Tidak dapat mendirikan pembagian terfederasi", "Couldn't establish a federated share, maybe the password was wrong." : "Tidak dapat mendirikan pembagian terfederasi, mungkin sandi salah.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Permintaan pembagian terfederasi sukses, Anda akan mendapatkan undangan. Cek pemberitahuan Anda.", "The mountpoint name contains invalid characters." : "Nama mount point berisi karakter yang tidak sah.", "Not allowed to create a federated share with the owner." : "Tidak diizinkan membuat pembagian terfederasi dengan pemilik.", "Invalid or untrusted SSL certificate" : "Sertifikat SSL tidak sah atau tidak terpercaya", "Could not authenticate to remote share, password might be wrong" : "Tidak dapat mengautentikasi berbagi remote, kata sandi mungkin salah", "Storage not valid" : "Penyimpanan tidak sah", - "Federated Share successfully added" : "Pembagian terfederasi sukses ditambahkan", "Couldn't add remote share" : "Tidak dapat menambahkan berbagi remote", "Sharing %s failed, because this item is already shared with %s" : "Gagal membagkan %s, karena item ini sudah dibagikan dengan %s", "Not allowed to create a federated share with the same user" : "Tidak diizinkan membuat pembagian terfederasi dengan pengguna yang sama", diff --git a/apps/federatedfilesharing/l10n/is.js b/apps/federatedfilesharing/l10n/is.js index 1dde515480..d384d56dba 100644 --- a/apps/federatedfilesharing/l10n/is.js +++ b/apps/federatedfilesharing/l10n/is.js @@ -16,13 +16,13 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Deiling frá þjóni til þjóns er ekki virk á þessum þjóni", "Couldn't establish a federated share." : "Gat ekki bætt við skýjasambandssameign.", "Couldn't establish a federated share, maybe the password was wrong." : "Gat ekki bætt við skýjasambandssameign, hugsanlega var lykilorðið ekki rétt.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Beiðni um skýjasambandssameign tókst, þú munt fá boðskort. Athugaður skilaboð til þín.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Sendi beiðni um skýjasambandssameign, þú munt fá boðskort. Athugaðu skilaboð til þín.", "The mountpoint name contains invalid characters." : "Heiti tengipunktsins inniheldur ógilda stafi.", "Not allowed to create a federated share with the owner." : "Ekki er heimilt að búa til skýjasambandssameign með eigandanum.", "Invalid or untrusted SSL certificate" : "Ógilt eða vantreyst SSL-skilríki", "Could not authenticate to remote share, password might be wrong" : "Gat ekki auðkennt á fjartengdri sameign, lykilorð gæti verið rangt", "Storage not valid" : "Geymslan er ekki gild", - "Federated Share successfully added" : "Tókst að bæta við skýjasambandssameign", + "Federated share added" : "Bætti við skýjasambandssameign", "Couldn't add remote share" : "Gat ekki bætt við fjartengdri sameign", "Sharing %s failed, because this item is already shared with %s" : "Deiling %s mistókst, því þessu atriði er þegar deilt með %s", "Not allowed to create a federated share with the same user" : "Ekki er heimilt að búa til skýjasambandssameign með sama notanda", diff --git a/apps/federatedfilesharing/l10n/is.json b/apps/federatedfilesharing/l10n/is.json index c2ff7b6bd6..6d0a065c83 100644 --- a/apps/federatedfilesharing/l10n/is.json +++ b/apps/federatedfilesharing/l10n/is.json @@ -14,13 +14,13 @@ "Server to server sharing is not enabled on this server" : "Deiling frá þjóni til þjóns er ekki virk á þessum þjóni", "Couldn't establish a federated share." : "Gat ekki bætt við skýjasambandssameign.", "Couldn't establish a federated share, maybe the password was wrong." : "Gat ekki bætt við skýjasambandssameign, hugsanlega var lykilorðið ekki rétt.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Beiðni um skýjasambandssameign tókst, þú munt fá boðskort. Athugaður skilaboð til þín.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Sendi beiðni um skýjasambandssameign, þú munt fá boðskort. Athugaðu skilaboð til þín.", "The mountpoint name contains invalid characters." : "Heiti tengipunktsins inniheldur ógilda stafi.", "Not allowed to create a federated share with the owner." : "Ekki er heimilt að búa til skýjasambandssameign með eigandanum.", "Invalid or untrusted SSL certificate" : "Ógilt eða vantreyst SSL-skilríki", "Could not authenticate to remote share, password might be wrong" : "Gat ekki auðkennt á fjartengdri sameign, lykilorð gæti verið rangt", "Storage not valid" : "Geymslan er ekki gild", - "Federated Share successfully added" : "Tókst að bæta við skýjasambandssameign", + "Federated share added" : "Bætti við skýjasambandssameign", "Couldn't add remote share" : "Gat ekki bætt við fjartengdri sameign", "Sharing %s failed, because this item is already shared with %s" : "Deiling %s mistókst, því þessu atriði er þegar deilt með %s", "Not allowed to create a federated share with the same user" : "Ekki er heimilt að búa til skýjasambandssameign með sama notanda", diff --git a/apps/federatedfilesharing/l10n/it.js b/apps/federatedfilesharing/l10n/it.js index bba8d8dd0e..0b75207b6b 100644 --- a/apps/federatedfilesharing/l10n/it.js +++ b/apps/federatedfilesharing/l10n/it.js @@ -16,13 +16,11 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "La condivisione tra server non è abilitata su questo server", "Couldn't establish a federated share." : "Impossibile stabilire una condivisione federata.", "Couldn't establish a federated share, maybe the password was wrong." : "Impossibile stabilire una condivisione federata, forse la password non è corretta.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La richiesta della condivisione federata è stata eseguita con successo, riceverai un invito. Controlla le tue notifiche.", "The mountpoint name contains invalid characters." : "Il nome del punto di mount contiene caratteri non validi.", "Not allowed to create a federated share with the owner." : "Non è consentito creare una condivisione federata con il proprietario.", "Invalid or untrusted SSL certificate" : "Certificato SSL non valido o non attendibile", "Could not authenticate to remote share, password might be wrong" : "Impossibile autenticarsi sulla condivisione remota, la password potrebbe essere errata", "Storage not valid" : "Archiviazione non valida", - "Federated Share successfully added" : "Condivisione federata aggiunta con successo", "Couldn't add remote share" : "Impossibile aggiungere la condivisione remota", "Sharing %s failed, because this item is already shared with %s" : "Condivisione di %s non riuscita, poiché l'oggetto è già condiviso con %s", "Not allowed to create a federated share with the same user" : "Non è consentito creare una condivisione federata con lo stesso utente", @@ -37,6 +35,7 @@ OC.L10N.register( "Decline" : "Rifiuta", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Condividi con me attraverso il mio ID di cloud federata #Nextcloud, vedi %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Condividi con me attraverso il mio ID di cloud federata #Nextcloud", + "Sharing" : "Condivisione", "Federated file sharing" : "Condivisione file federata", "Federated Cloud Sharing" : "Condivisione cloud federata", "Open documentation" : "Apri la documentazione", diff --git a/apps/federatedfilesharing/l10n/it.json b/apps/federatedfilesharing/l10n/it.json index e2fffd3fde..5dd8a78d60 100644 --- a/apps/federatedfilesharing/l10n/it.json +++ b/apps/federatedfilesharing/l10n/it.json @@ -14,13 +14,11 @@ "Server to server sharing is not enabled on this server" : "La condivisione tra server non è abilitata su questo server", "Couldn't establish a federated share." : "Impossibile stabilire una condivisione federata.", "Couldn't establish a federated share, maybe the password was wrong." : "Impossibile stabilire una condivisione federata, forse la password non è corretta.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La richiesta della condivisione federata è stata eseguita con successo, riceverai un invito. Controlla le tue notifiche.", "The mountpoint name contains invalid characters." : "Il nome del punto di mount contiene caratteri non validi.", "Not allowed to create a federated share with the owner." : "Non è consentito creare una condivisione federata con il proprietario.", "Invalid or untrusted SSL certificate" : "Certificato SSL non valido o non attendibile", "Could not authenticate to remote share, password might be wrong" : "Impossibile autenticarsi sulla condivisione remota, la password potrebbe essere errata", "Storage not valid" : "Archiviazione non valida", - "Federated Share successfully added" : "Condivisione federata aggiunta con successo", "Couldn't add remote share" : "Impossibile aggiungere la condivisione remota", "Sharing %s failed, because this item is already shared with %s" : "Condivisione di %s non riuscita, poiché l'oggetto è già condiviso con %s", "Not allowed to create a federated share with the same user" : "Non è consentito creare una condivisione federata con lo stesso utente", @@ -35,6 +33,7 @@ "Decline" : "Rifiuta", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Condividi con me attraverso il mio ID di cloud federata #Nextcloud, vedi %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Condividi con me attraverso il mio ID di cloud federata #Nextcloud", + "Sharing" : "Condivisione", "Federated file sharing" : "Condivisione file federata", "Federated Cloud Sharing" : "Condivisione cloud federata", "Open documentation" : "Apri la documentazione", diff --git a/apps/federatedfilesharing/l10n/ko.js b/apps/federatedfilesharing/l10n/ko.js index c82cb1c184..0670bef5db 100644 --- a/apps/federatedfilesharing/l10n/ko.js +++ b/apps/federatedfilesharing/l10n/ko.js @@ -16,13 +16,11 @@ 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 successfully 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" : "같은 사용자와 연합 공유를 만들 수 없음", diff --git a/apps/federatedfilesharing/l10n/ko.json b/apps/federatedfilesharing/l10n/ko.json index fc7492876e..67081c1410 100644 --- a/apps/federatedfilesharing/l10n/ko.json +++ b/apps/federatedfilesharing/l10n/ko.json @@ -14,13 +14,11 @@ "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 successfully 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" : "같은 사용자와 연합 공유를 만들 수 없음", diff --git a/apps/federatedfilesharing/l10n/lt_LT.js b/apps/federatedfilesharing/l10n/lt_LT.js index 4f58f569fb..5794f568ba 100644 --- a/apps/federatedfilesharing/l10n/lt_LT.js +++ b/apps/federatedfilesharing/l10n/lt_LT.js @@ -1,19 +1,59 @@ OC.L10N.register( "federatedfilesharing", { + "Federated sharing" : "Dalinimasis kitame serveryje", + "Do you want to add the remote share {name} from {owner}@{remote}?" : "Ar norite peržiūrėti {name} nuo {owner}@{remote}?", + "Remote share" : "Kitame serveryje pasidalinti duomenys", + "Remote share password" : "Kitame serveryje pasidalintų duomenų slaptažodis", + "Cancel" : "Atsisakyti", + "Add remote share" : "Pasidalinti duomenimis kitame serveryje", + "Copy" : "Kopijuoti", + "Copied!" : "Nukopijuota!", + "Not supported!" : "Nepalaikoma!", + "Press ⌘-C to copy." : "Norėdami nukopijuoti, paspauskite ⌘-C.", + "Press Ctrl-C to copy." : "Paspauskite Ctrl-C, kad nukopijuotumėte.", + "Invalid Federated Cloud ID" : "Neteisingas Centralizuoto Serverio ID", + "Server to server sharing is not enabled on this server" : "Dalinimasis tarp serverių yra neleidžiamas šiame serveryje", + "Couldn't establish a federated share." : "Neįmanoma pradėti dalintis kitame serveryje.", + "Couldn't establish a federated share, maybe the password was wrong." : "Neįmanoma pradėti dalintis kitame serveryje. Gal jūsų slaptažodis blogas?", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Dalinimosi kitame serveryje užklausa išsiųsta. Jūs būsite informuoti, jei pasidalinimas bus sėkmingas. ", + "The mountpoint name contains invalid characters." : "Prijungimo taškas turi netinkamų naudoti simbolių.", + "Not allowed to create a federated share with the owner." : "Savininkas neleidžia dalintis duomenimis su kitu serveriu.", + "Invalid or untrusted SSL certificate" : "Neteisingas arba nepatikimas SSL liudijimas", + "Could not authenticate to remote share, password might be wrong" : "Neįmanoma pradėti dalintis kitame serveryje. Gal jūsų slaptažodis blogas?", + "Storage not valid" : "Saugykla netinkama naudotis", + "Federated share added" : "Pasidalinta per kitą serverį", + "Couldn't add remote share" : "Nepavyko peržiūrėti kitame serveryje pasidalintų duomenų", + "Sharing %s failed, because this item is already shared with %s" : "%s bendrinimas nepavyko, kadangi šis elementas jau yra bendrinamas su %s", + "Not allowed to create a federated share with the same user" : "Negalima dalintis su identišku naudotoju kitame serveryje", + "File is already shared with %s" : "Failas jau yra bendrinamas su %s", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "\"%s\" pasidalinimas nepavyko, neįmanoma rasti %s, tikėtina, kad serveris šiuo metu nepasiekiamas arba naudoja nepatikimą sertifikatą.", + "Could not find share" : "Nepavyko rasti bendrinamų duomenų", + "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Gavote galimybę peržiūrėti duomenis \"%3$s\", kuriuos pasidalino %1$s (%2$s vardu) esantis kitame serveryje", + "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Gavote galimybę peržiūrėti duomenis \"{share}\", kuriuos pasidalino {user} ({behalf} vardu) esantis kitame serveryje", + "You received \"%3$s\" as a remote share from %1$s" : "Gavote galimybę peržiūrėti duomenis \"%3$s\", kuriuos pasidalino %1$s", + "You received {share} as a remote share from {user}" : "Gavote galimybę peržiūrėti duomenis \"{share}\", kuriuos pasidalino {user}", "Accept" : "Priimti", "Decline" : "Atmesti", - "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Pasidalink su manimi per #Nextcloud padebesius, plačiau %s", - "Share with me through my #Nextcloud Federated Cloud ID" : "Pasidalink su manimi per #Nextcloud padebesius", - "Federated Cloud Sharing" : "Viešas dalijimasis padebesiu", - "Open documentation" : "Atidaryti dokumentą", - "Allow users on this server to send shares to other servers" : "Leisti vartotojams šiame serveryje dalintis su kitais serveriais", - "Allow users on this server to receive shares from other servers" : "Leisti vartotojams šiame serveryje priimti dalijimusis iš kitų serverių", - "Federated Cloud" : "Viešas debesis", - "Your Federated Cloud ID:" : "Tavo debesies ID:", - "Share it:" : "Pasidalink:", - "Add to your website" : "Pridėti tavo puslapį", - "Share with me via Nextcloud" : "Pasidalink su manimi per Nextcloud", - "HTML Code:" : "HTML kodas:" + "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Pasidalinti su manimi per #Nextcloud Centralizuoto Serverio ID, toliau %s", + "Share with me through my #Nextcloud Federated Cloud ID" : "Pasidalinti su manimi per #Nextcloud Centralizuoto Serverio ID", + "Sharing" : "Dalinamasis", + "Federated file sharing" : "Dalinimasis centralizuotame serveryje", + "Federated Cloud Sharing" : "Centralizuotas Dalinimasis Serveriuose", + "Open documentation" : "Atverti dokumentaciją", + "Adjust how people can share between servers." : "Nustatyti taisykles, kaip naudotojai gali dalintis duomenimis tarp serverių.", + "Allow users on this server to send shares to other servers" : "Leisti šio serverio naudotojams dalintis duomenimis su kitais serveriais", + "Allow users on this server to receive shares from other servers" : "Leisti šio serverio naudotojams priimti kituose serveriuose dalinamus duomenis", + "Search global and public address book for users" : "Ieškoti vartotojų globaliose ir viešose adresų knygose", + "Allow users to publish their data to a global and public address book" : "Leisti naudotojams viešinti savo duomenis globaliose ar viešose adresų knygose", + "Federated Cloud" : "Centralizuotas Serveris", + "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" : "Galite dalintis su visais, kas naudojasi NextCloud, ownCloud ar Pydio! Tiesiog dalinimosi dialoge įrašykite jų Centralizuoto Serverio ID. Pavyzdys: person@cloud.example.com", + "Your Federated Cloud ID:" : "Jūsų Centralizuoto Serverio ID:", + "Share it so your friends can share files with you:" : "Pasidalinkite tam, kad jūsų draugai galėtų dalintis duomenimis su jumis:", + "Add to your website" : "Pridėti jūsų puslapį", + "Share with me via Nextcloud" : "Pasidalinti su manimi per NextCloud", + "HTML Code:" : "HTML kodas:", + "Search global and public address book for users and let local users publish their data" : "Rasti globalias ar viešas adresų knygas ir leisti naudotojams viešinti savo duomenis", + "Share it:" : "Pasidalinti:" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/federatedfilesharing/l10n/lt_LT.json b/apps/federatedfilesharing/l10n/lt_LT.json index be6ddf080a..8b879b3034 100644 --- a/apps/federatedfilesharing/l10n/lt_LT.json +++ b/apps/federatedfilesharing/l10n/lt_LT.json @@ -1,17 +1,57 @@ { "translations": { + "Federated sharing" : "Dalinimasis kitame serveryje", + "Do you want to add the remote share {name} from {owner}@{remote}?" : "Ar norite peržiūrėti {name} nuo {owner}@{remote}?", + "Remote share" : "Kitame serveryje pasidalinti duomenys", + "Remote share password" : "Kitame serveryje pasidalintų duomenų slaptažodis", + "Cancel" : "Atsisakyti", + "Add remote share" : "Pasidalinti duomenimis kitame serveryje", + "Copy" : "Kopijuoti", + "Copied!" : "Nukopijuota!", + "Not supported!" : "Nepalaikoma!", + "Press ⌘-C to copy." : "Norėdami nukopijuoti, paspauskite ⌘-C.", + "Press Ctrl-C to copy." : "Paspauskite Ctrl-C, kad nukopijuotumėte.", + "Invalid Federated Cloud ID" : "Neteisingas Centralizuoto Serverio ID", + "Server to server sharing is not enabled on this server" : "Dalinimasis tarp serverių yra neleidžiamas šiame serveryje", + "Couldn't establish a federated share." : "Neįmanoma pradėti dalintis kitame serveryje.", + "Couldn't establish a federated share, maybe the password was wrong." : "Neįmanoma pradėti dalintis kitame serveryje. Gal jūsų slaptažodis blogas?", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Dalinimosi kitame serveryje užklausa išsiųsta. Jūs būsite informuoti, jei pasidalinimas bus sėkmingas. ", + "The mountpoint name contains invalid characters." : "Prijungimo taškas turi netinkamų naudoti simbolių.", + "Not allowed to create a federated share with the owner." : "Savininkas neleidžia dalintis duomenimis su kitu serveriu.", + "Invalid or untrusted SSL certificate" : "Neteisingas arba nepatikimas SSL liudijimas", + "Could not authenticate to remote share, password might be wrong" : "Neįmanoma pradėti dalintis kitame serveryje. Gal jūsų slaptažodis blogas?", + "Storage not valid" : "Saugykla netinkama naudotis", + "Federated share added" : "Pasidalinta per kitą serverį", + "Couldn't add remote share" : "Nepavyko peržiūrėti kitame serveryje pasidalintų duomenų", + "Sharing %s failed, because this item is already shared with %s" : "%s bendrinimas nepavyko, kadangi šis elementas jau yra bendrinamas su %s", + "Not allowed to create a federated share with the same user" : "Negalima dalintis su identišku naudotoju kitame serveryje", + "File is already shared with %s" : "Failas jau yra bendrinamas su %s", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "\"%s\" pasidalinimas nepavyko, neįmanoma rasti %s, tikėtina, kad serveris šiuo metu nepasiekiamas arba naudoja nepatikimą sertifikatą.", + "Could not find share" : "Nepavyko rasti bendrinamų duomenų", + "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Gavote galimybę peržiūrėti duomenis \"%3$s\", kuriuos pasidalino %1$s (%2$s vardu) esantis kitame serveryje", + "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Gavote galimybę peržiūrėti duomenis \"{share}\", kuriuos pasidalino {user} ({behalf} vardu) esantis kitame serveryje", + "You received \"%3$s\" as a remote share from %1$s" : "Gavote galimybę peržiūrėti duomenis \"%3$s\", kuriuos pasidalino %1$s", + "You received {share} as a remote share from {user}" : "Gavote galimybę peržiūrėti duomenis \"{share}\", kuriuos pasidalino {user}", "Accept" : "Priimti", "Decline" : "Atmesti", - "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Pasidalink su manimi per #Nextcloud padebesius, plačiau %s", - "Share with me through my #Nextcloud Federated Cloud ID" : "Pasidalink su manimi per #Nextcloud padebesius", - "Federated Cloud Sharing" : "Viešas dalijimasis padebesiu", - "Open documentation" : "Atidaryti dokumentą", - "Allow users on this server to send shares to other servers" : "Leisti vartotojams šiame serveryje dalintis su kitais serveriais", - "Allow users on this server to receive shares from other servers" : "Leisti vartotojams šiame serveryje priimti dalijimusis iš kitų serverių", - "Federated Cloud" : "Viešas debesis", - "Your Federated Cloud ID:" : "Tavo debesies ID:", - "Share it:" : "Pasidalink:", - "Add to your website" : "Pridėti tavo puslapį", - "Share with me via Nextcloud" : "Pasidalink su manimi per Nextcloud", - "HTML Code:" : "HTML kodas:" + "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Pasidalinti su manimi per #Nextcloud Centralizuoto Serverio ID, toliau %s", + "Share with me through my #Nextcloud Federated Cloud ID" : "Pasidalinti su manimi per #Nextcloud Centralizuoto Serverio ID", + "Sharing" : "Dalinamasis", + "Federated file sharing" : "Dalinimasis centralizuotame serveryje", + "Federated Cloud Sharing" : "Centralizuotas Dalinimasis Serveriuose", + "Open documentation" : "Atverti dokumentaciją", + "Adjust how people can share between servers." : "Nustatyti taisykles, kaip naudotojai gali dalintis duomenimis tarp serverių.", + "Allow users on this server to send shares to other servers" : "Leisti šio serverio naudotojams dalintis duomenimis su kitais serveriais", + "Allow users on this server to receive shares from other servers" : "Leisti šio serverio naudotojams priimti kituose serveriuose dalinamus duomenis", + "Search global and public address book for users" : "Ieškoti vartotojų globaliose ir viešose adresų knygose", + "Allow users to publish their data to a global and public address book" : "Leisti naudotojams viešinti savo duomenis globaliose ar viešose adresų knygose", + "Federated Cloud" : "Centralizuotas Serveris", + "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" : "Galite dalintis su visais, kas naudojasi NextCloud, ownCloud ar Pydio! Tiesiog dalinimosi dialoge įrašykite jų Centralizuoto Serverio ID. Pavyzdys: person@cloud.example.com", + "Your Federated Cloud ID:" : "Jūsų Centralizuoto Serverio ID:", + "Share it so your friends can share files with you:" : "Pasidalinkite tam, kad jūsų draugai galėtų dalintis duomenimis su jumis:", + "Add to your website" : "Pridėti jūsų puslapį", + "Share with me via Nextcloud" : "Pasidalinti su manimi per NextCloud", + "HTML Code:" : "HTML kodas:", + "Search global and public address book for users and let local users publish their data" : "Rasti globalias ar viešas adresų knygas ir leisti naudotojams viešinti savo duomenis", + "Share it:" : "Pasidalinti:" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" } \ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/nb.js b/apps/federatedfilesharing/l10n/nb.js index 34dea0df47..4838b3e184 100644 --- a/apps/federatedfilesharing/l10n/nb.js +++ b/apps/federatedfilesharing/l10n/nb.js @@ -16,13 +16,13 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Tjener til tjener deling er ikke aktivert på denne tjeneren", "Couldn't establish a federated share." : "Kunne ikke etablere en sammenknyttet ressurs", "Couldn't establish a federated share, maybe the password was wrong." : "Kunne ikke etablere en sammenknyttet ressurs, kanskje passordet var feil.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Sammenknyttet ressurs forespurt, du vil motta en invitasjon. Sjekk varslene dine.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Sammenknyttet ressurs forespurt, du vil motta en invitasjon. Sjekk varslene dine.", "The mountpoint name contains invalid characters." : "Navnet på oppkoblingspunktet inneholder ugyldige tegn.", "Not allowed to create a federated share with the owner." : "Ikke tillatt å opprette en sammenknyttet ressurs med eieren.", "Invalid or untrusted SSL certificate" : "Ugyldig eller ikke-klarert SSL-sertifikat", "Could not authenticate to remote share, password might be wrong" : "Kunne ikke autentisere mot ekstern ressurs, passordet var kanskje feil.", "Storage not valid" : "Lagringsplass ikke gyldig", - "Federated Share successfully added" : "Sammenknyttet ressurs ble lagt til", + "Federated share added" : "Sammenknyttet ressurs lagt til", "Couldn't add remote share" : "Kunne ikke legge til ekstern ressurs", "Sharing %s failed, because this item is already shared with %s" : "Deling av %s mislyktes, fordi dette elementet allerede er delt med %s", "Not allowed to create a federated share with the same user" : "Ikke tillatt å opprette en sammenknyttet skydeling med den samme brukeren", diff --git a/apps/federatedfilesharing/l10n/nb.json b/apps/federatedfilesharing/l10n/nb.json index 90f481f3bb..17e8f89a75 100644 --- a/apps/federatedfilesharing/l10n/nb.json +++ b/apps/federatedfilesharing/l10n/nb.json @@ -14,13 +14,13 @@ "Server to server sharing is not enabled on this server" : "Tjener til tjener deling er ikke aktivert på denne tjeneren", "Couldn't establish a federated share." : "Kunne ikke etablere en sammenknyttet ressurs", "Couldn't establish a federated share, maybe the password was wrong." : "Kunne ikke etablere en sammenknyttet ressurs, kanskje passordet var feil.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Sammenknyttet ressurs forespurt, du vil motta en invitasjon. Sjekk varslene dine.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Sammenknyttet ressurs forespurt, du vil motta en invitasjon. Sjekk varslene dine.", "The mountpoint name contains invalid characters." : "Navnet på oppkoblingspunktet inneholder ugyldige tegn.", "Not allowed to create a federated share with the owner." : "Ikke tillatt å opprette en sammenknyttet ressurs med eieren.", "Invalid or untrusted SSL certificate" : "Ugyldig eller ikke-klarert SSL-sertifikat", "Could not authenticate to remote share, password might be wrong" : "Kunne ikke autentisere mot ekstern ressurs, passordet var kanskje feil.", "Storage not valid" : "Lagringsplass ikke gyldig", - "Federated Share successfully added" : "Sammenknyttet ressurs ble lagt til", + "Federated share added" : "Sammenknyttet ressurs lagt til", "Couldn't add remote share" : "Kunne ikke legge til ekstern ressurs", "Sharing %s failed, because this item is already shared with %s" : "Deling av %s mislyktes, fordi dette elementet allerede er delt med %s", "Not allowed to create a federated share with the same user" : "Ikke tillatt å opprette en sammenknyttet skydeling med den samme brukeren", diff --git a/apps/federatedfilesharing/l10n/nl.js b/apps/federatedfilesharing/l10n/nl.js index 9cb3722dcd..95a54b29a3 100644 --- a/apps/federatedfilesharing/l10n/nl.js +++ b/apps/federatedfilesharing/l10n/nl.js @@ -1,7 +1,7 @@ OC.L10N.register( "federatedfilesharing", { - "Federated sharing" : "Gefedereerd delen", + "Federated sharing" : "Gefedereerd delens", "Do you want to add the remote share {name} from {owner}@{remote}?" : "Wil je de externe share {name} van {owner}@{remote} toevoegen?", "Remote share" : "Externe share", "Remote share password" : "Wachtwoord externe share", @@ -16,13 +16,13 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Server met server delen is op deze server niet ingeschakeld", "Couldn't establish a federated share." : "Kon geen gefedereerde share tot stand brengen", "Couldn't establish a federated share, maybe the password was wrong." : "Kon geen gefedereerde share tot stand brengen, misschien was het wachtwoord onjuist.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "De gefedereerde share aanvraag is geslaagd, je ontvangt een uitnodiging. Controleer je meldingen.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "De gefedereerde share aanvraag is verzonden, je ontvangt een uitnodiging. Controleer je meldingen.", "The mountpoint name contains invalid characters." : "De naam van het mountpoint bevat ongeldige karakters.", "Not allowed to create a federated share with the owner." : "Het is niet toegestaan om met de eigenaar een gefedereerde share te maken.", "Invalid or untrusted SSL certificate" : "Ongeldig of onvertrouwd SSL-certificaat", "Could not authenticate to remote share, password might be wrong" : "Kon niet authenticeren bij externe share, misschien verkeerd wachtwoord", "Storage not valid" : "Opslag ongeldig", - "Federated Share successfully added" : "Gefedereerde share succesvol toegevoegd", + "Federated share added" : "Gefedereerd share is toegevoegd", "Couldn't add remote share" : "Kon geen externe share toevoegen", "Sharing %s failed, because this item is already shared with %s" : "Delen van %s is mislukt, omdat het object al wordt gedeeld met %s", "Not allowed to create a federated share with the same user" : "Het is niet toegestaan om een gefedereerde share met dezelfde gebruikersserver te maken", @@ -32,7 +32,7 @@ OC.L10N.register( "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Je ontving \"%3$s\" als een extern deel verzoek van %1$s (namens %2$s)", "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Je ontving {share} als een extern deel verzoek van {user} (namens {behalf})", "You received \"%3$s\" as a remote share from %1$s" : "Je ontving \"%3$s\" als een extern deel verzoek van %1$s", - "You received {share} as a remote share from {user}" : "Je ontving {share} als een extren deel verzoek van {user}", + "You received {share} as a remote share from {user}" : "Je ontving {share} als een extren share verzoek van {user}", "Accept" : "Accepteren", "Decline" : "Afwijzen", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Deel met mij via mijn #Nextcloud gefedereerde Cloud ID, zie %s", diff --git a/apps/federatedfilesharing/l10n/nl.json b/apps/federatedfilesharing/l10n/nl.json index ac7f025d41..cd289676b7 100644 --- a/apps/federatedfilesharing/l10n/nl.json +++ b/apps/federatedfilesharing/l10n/nl.json @@ -1,5 +1,5 @@ { "translations": { - "Federated sharing" : "Gefedereerd delen", + "Federated sharing" : "Gefedereerd delens", "Do you want to add the remote share {name} from {owner}@{remote}?" : "Wil je de externe share {name} van {owner}@{remote} toevoegen?", "Remote share" : "Externe share", "Remote share password" : "Wachtwoord externe share", @@ -14,13 +14,13 @@ "Server to server sharing is not enabled on this server" : "Server met server delen is op deze server niet ingeschakeld", "Couldn't establish a federated share." : "Kon geen gefedereerde share tot stand brengen", "Couldn't establish a federated share, maybe the password was wrong." : "Kon geen gefedereerde share tot stand brengen, misschien was het wachtwoord onjuist.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "De gefedereerde share aanvraag is geslaagd, je ontvangt een uitnodiging. Controleer je meldingen.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "De gefedereerde share aanvraag is verzonden, je ontvangt een uitnodiging. Controleer je meldingen.", "The mountpoint name contains invalid characters." : "De naam van het mountpoint bevat ongeldige karakters.", "Not allowed to create a federated share with the owner." : "Het is niet toegestaan om met de eigenaar een gefedereerde share te maken.", "Invalid or untrusted SSL certificate" : "Ongeldig of onvertrouwd SSL-certificaat", "Could not authenticate to remote share, password might be wrong" : "Kon niet authenticeren bij externe share, misschien verkeerd wachtwoord", "Storage not valid" : "Opslag ongeldig", - "Federated Share successfully added" : "Gefedereerde share succesvol toegevoegd", + "Federated share added" : "Gefedereerd share is toegevoegd", "Couldn't add remote share" : "Kon geen externe share toevoegen", "Sharing %s failed, because this item is already shared with %s" : "Delen van %s is mislukt, omdat het object al wordt gedeeld met %s", "Not allowed to create a federated share with the same user" : "Het is niet toegestaan om een gefedereerde share met dezelfde gebruikersserver te maken", @@ -30,7 +30,7 @@ "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Je ontving \"%3$s\" als een extern deel verzoek van %1$s (namens %2$s)", "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Je ontving {share} als een extern deel verzoek van {user} (namens {behalf})", "You received \"%3$s\" as a remote share from %1$s" : "Je ontving \"%3$s\" als een extern deel verzoek van %1$s", - "You received {share} as a remote share from {user}" : "Je ontving {share} als een extren deel verzoek van {user}", + "You received {share} as a remote share from {user}" : "Je ontving {share} als een extren share verzoek van {user}", "Accept" : "Accepteren", "Decline" : "Afwijzen", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Deel met mij via mijn #Nextcloud gefedereerde Cloud ID, zie %s", diff --git a/apps/federatedfilesharing/l10n/pl.js b/apps/federatedfilesharing/l10n/pl.js index f2ca3cfe57..a9cf9af12b 100644 --- a/apps/federatedfilesharing/l10n/pl.js +++ b/apps/federatedfilesharing/l10n/pl.js @@ -16,13 +16,11 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Serwer do udostępniania serwera nie jest włączony na tym serwerze", "Couldn't establish a federated share." : "Nie udało się ustalić Stowarzyszonego udostępnienia.", "Couldn't establish a federated share, maybe the password was wrong." : "Nie udało się ustalić Stowarzyszonego udostępnienia, może być błędne hasło.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Żądanie podzielenia się ze Stowarzyszeniem powiedzie się, gdy otrzymasz zaproszenie. Sprawdź swoje powiadomienia.", "The mountpoint name contains invalid characters." : "Nazwa zamontowanego zasobu zawiera niedozwolone znaki.", "Not allowed to create a federated share with the owner." : "Nie można tworzyć stowarzyszonego udziału ze sobą.", "Invalid or untrusted SSL certificate" : "Niewłaściwy lub niezaufany certyfikat SSL", "Could not authenticate to remote share, password might be wrong" : "Nie udało się uwierzytelnić udziału zdalnego, może być błędne hasło", "Storage not valid" : "Magazyn nie jest prawidłowy", - "Federated Share successfully added" : "Udane udostępnienie ze Stowarzyszeniem ", "Couldn't add remote share" : "Nie można dodać zdalnego zasobu", "Sharing %s failed, because this item is already shared with %s" : "Współdzielenie %s nie powiodło się, ponieważ element jest już współdzielony z %s", "Not allowed to create a federated share with the same user" : "Nie można tworzyć stowarzyszonego udziału z tym samym użytkownikiem", diff --git a/apps/federatedfilesharing/l10n/pl.json b/apps/federatedfilesharing/l10n/pl.json index 0c53f85754..d6f29b66d4 100644 --- a/apps/federatedfilesharing/l10n/pl.json +++ b/apps/federatedfilesharing/l10n/pl.json @@ -14,13 +14,11 @@ "Server to server sharing is not enabled on this server" : "Serwer do udostępniania serwera nie jest włączony na tym serwerze", "Couldn't establish a federated share." : "Nie udało się ustalić Stowarzyszonego udostępnienia.", "Couldn't establish a federated share, maybe the password was wrong." : "Nie udało się ustalić Stowarzyszonego udostępnienia, może być błędne hasło.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Żądanie podzielenia się ze Stowarzyszeniem powiedzie się, gdy otrzymasz zaproszenie. Sprawdź swoje powiadomienia.", "The mountpoint name contains invalid characters." : "Nazwa zamontowanego zasobu zawiera niedozwolone znaki.", "Not allowed to create a federated share with the owner." : "Nie można tworzyć stowarzyszonego udziału ze sobą.", "Invalid or untrusted SSL certificate" : "Niewłaściwy lub niezaufany certyfikat SSL", "Could not authenticate to remote share, password might be wrong" : "Nie udało się uwierzytelnić udziału zdalnego, może być błędne hasło", "Storage not valid" : "Magazyn nie jest prawidłowy", - "Federated Share successfully added" : "Udane udostępnienie ze Stowarzyszeniem ", "Couldn't add remote share" : "Nie można dodać zdalnego zasobu", "Sharing %s failed, because this item is already shared with %s" : "Współdzielenie %s nie powiodło się, ponieważ element jest już współdzielony z %s", "Not allowed to create a federated share with the same user" : "Nie można tworzyć stowarzyszonego udziału z tym samym użytkownikiem", diff --git a/apps/federatedfilesharing/l10n/pt_BR.js b/apps/federatedfilesharing/l10n/pt_BR.js index 2042ac315d..3785087907 100644 --- a/apps/federatedfilesharing/l10n/pt_BR.js +++ b/apps/federatedfilesharing/l10n/pt_BR.js @@ -16,13 +16,13 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Servidor para compartilhamento de servidor não está ativo neste servidor", "Couldn't establish a federated share." : "Não foi possível estabelecer um compartilhamento federado.", "Couldn't establish a federated share, maybe the password was wrong." : "Não foi possível estabelecer um compartilhamento federado, talvez a senha esteja incorreta.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Solicitação de compartilhamento federado concluída. Você receberá um convite que pode ser visto nas suas notificações.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Solicitação de Compartilhamento Federado enviada, você receberá um convite. Verifique suas notificações.", "The mountpoint name contains invalid characters." : "O nome do ponto de montagem contém caracteres inválidos.", "Not allowed to create a federated share with the owner." : "Não é permitido criar um compartilhamento federado com o proprietário.", "Invalid or untrusted SSL certificate" : "Certificado SSL inválido ou não confiável", "Could not authenticate to remote share, password might be wrong" : "Não foi possível autenticar-se ao compartilhamento remoto. A senha pode estar incorreta", "Storage not valid" : "Armazenamento inválido", - "Federated Share successfully added" : "Compartilhamento federado adicionado com sucesso", + "Federated share added" : "Compartilhamento Federado adicionado", "Couldn't add remote share" : "Não foi possível adicionar o compartilhamento remoto", "Sharing %s failed, because this item is already shared with %s" : "Compartilhamento %s falhou porque este item já está compartilhado com %s", "Not allowed to create a federated share with the same user" : "Não é permitido criar um compartilhamento federado com o mesmo usuário", diff --git a/apps/federatedfilesharing/l10n/pt_BR.json b/apps/federatedfilesharing/l10n/pt_BR.json index 6fc35b35b6..458216561f 100644 --- a/apps/federatedfilesharing/l10n/pt_BR.json +++ b/apps/federatedfilesharing/l10n/pt_BR.json @@ -14,13 +14,13 @@ "Server to server sharing is not enabled on this server" : "Servidor para compartilhamento de servidor não está ativo neste servidor", "Couldn't establish a federated share." : "Não foi possível estabelecer um compartilhamento federado.", "Couldn't establish a federated share, maybe the password was wrong." : "Não foi possível estabelecer um compartilhamento federado, talvez a senha esteja incorreta.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Solicitação de compartilhamento federado concluída. Você receberá um convite que pode ser visto nas suas notificações.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Solicitação de Compartilhamento Federado enviada, você receberá um convite. Verifique suas notificações.", "The mountpoint name contains invalid characters." : "O nome do ponto de montagem contém caracteres inválidos.", "Not allowed to create a federated share with the owner." : "Não é permitido criar um compartilhamento federado com o proprietário.", "Invalid or untrusted SSL certificate" : "Certificado SSL inválido ou não confiável", "Could not authenticate to remote share, password might be wrong" : "Não foi possível autenticar-se ao compartilhamento remoto. A senha pode estar incorreta", "Storage not valid" : "Armazenamento inválido", - "Federated Share successfully added" : "Compartilhamento federado adicionado com sucesso", + "Federated share added" : "Compartilhamento Federado adicionado", "Couldn't add remote share" : "Não foi possível adicionar o compartilhamento remoto", "Sharing %s failed, because this item is already shared with %s" : "Compartilhamento %s falhou porque este item já está compartilhado com %s", "Not allowed to create a federated share with the same user" : "Não é permitido criar um compartilhamento federado com o mesmo usuário", diff --git a/apps/federatedfilesharing/l10n/ru.js b/apps/federatedfilesharing/l10n/ru.js index 6b204563e8..c71c7d8ae6 100644 --- a/apps/federatedfilesharing/l10n/ru.js +++ b/apps/federatedfilesharing/l10n/ru.js @@ -16,13 +16,13 @@ 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." : "Запрос на федеративный общий ресурс прошёл успешно, вы получите приглашение. Проверьте ваши уведомления.", + "Federated Share request sent, you will receive an 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 successfully added" : "Федеративный общий ресурс успешно добавлен", + "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" : "Не допускается создание федеративного общего ресурса с тем же пользователем", diff --git a/apps/federatedfilesharing/l10n/ru.json b/apps/federatedfilesharing/l10n/ru.json index 9a93789549..e3f7c8c3b2 100644 --- a/apps/federatedfilesharing/l10n/ru.json +++ b/apps/federatedfilesharing/l10n/ru.json @@ -14,13 +14,13 @@ "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." : "Запрос на федеративный общий ресурс прошёл успешно, вы получите приглашение. Проверьте ваши уведомления.", + "Federated Share request sent, you will receive an 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 successfully added" : "Федеративный общий ресурс успешно добавлен", + "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" : "Не допускается создание федеративного общего ресурса с тем же пользователем", diff --git a/apps/federatedfilesharing/l10n/sq.js b/apps/federatedfilesharing/l10n/sq.js index cca776554f..6a34e89a91 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 683231deae..31e0211bff 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/sv.js b/apps/federatedfilesharing/l10n/sv.js index 3968f627a4..e0fa9690e2 100644 --- a/apps/federatedfilesharing/l10n/sv.js +++ b/apps/federatedfilesharing/l10n/sv.js @@ -16,13 +16,11 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Server-till-server-delning är inte aktiverat på denna server", "Couldn't establish a federated share." : "Kunde inte lägga till en fefererad utdelning", "Couldn't establish a federated share, maybe the password was wrong." : "Kunde inte lägga till en fefererad utdelning, lösenordet kanske var felaktigt.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Federerad delningsbegäran lyckades och du kommer att få en inbjudan. Kolla dina notifikationer.", "The mountpoint name contains invalid characters." : "Monteringspunktens namn innehåller ogiltiga tecken.", "Not allowed to create a federated share with the owner." : "Ej tillåtet att skapa en federerad delning med ägaren", "Invalid or untrusted SSL certificate" : "Ogiltigt eller ej betrott SSL-certifikat", "Could not authenticate to remote share, password might be wrong" : "Kunde inte autensiera mot externa servern, lösenordet kan vara fel", "Storage not valid" : "Lagring ogiltig", - "Federated Share successfully added" : "Federerad delning lyckades", "Couldn't add remote share" : "Kunde inte lägga till extern delning", "Sharing %s failed, because this item is already shared with %s" : "Delning %s misslyckades därför att objektet redan är delat med %s", "Not allowed to create a federated share with the same user" : "Ej tillåtet att skapa en federerad delning med samma användare", diff --git a/apps/federatedfilesharing/l10n/sv.json b/apps/federatedfilesharing/l10n/sv.json index d5f514f3fd..c0b03cfe25 100644 --- a/apps/federatedfilesharing/l10n/sv.json +++ b/apps/federatedfilesharing/l10n/sv.json @@ -14,13 +14,11 @@ "Server to server sharing is not enabled on this server" : "Server-till-server-delning är inte aktiverat på denna server", "Couldn't establish a federated share." : "Kunde inte lägga till en fefererad utdelning", "Couldn't establish a federated share, maybe the password was wrong." : "Kunde inte lägga till en fefererad utdelning, lösenordet kanske var felaktigt.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Federerad delningsbegäran lyckades och du kommer att få en inbjudan. Kolla dina notifikationer.", "The mountpoint name contains invalid characters." : "Monteringspunktens namn innehåller ogiltiga tecken.", "Not allowed to create a federated share with the owner." : "Ej tillåtet att skapa en federerad delning med ägaren", "Invalid or untrusted SSL certificate" : "Ogiltigt eller ej betrott SSL-certifikat", "Could not authenticate to remote share, password might be wrong" : "Kunde inte autensiera mot externa servern, lösenordet kan vara fel", "Storage not valid" : "Lagring ogiltig", - "Federated Share successfully added" : "Federerad delning lyckades", "Couldn't add remote share" : "Kunde inte lägga till extern delning", "Sharing %s failed, because this item is already shared with %s" : "Delning %s misslyckades därför att objektet redan är delat med %s", "Not allowed to create a federated share with the same user" : "Ej tillåtet att skapa en federerad delning med samma användare", diff --git a/apps/federatedfilesharing/l10n/tr.js b/apps/federatedfilesharing/l10n/tr.js index 53f5708ede..da6117e7c4 100644 --- a/apps/federatedfilesharing/l10n/tr.js +++ b/apps/federatedfilesharing/l10n/tr.js @@ -16,13 +16,13 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Bu sunucuda sunucudan sunucuya paylaşım etkin değil", "Couldn't establish a federated share." : "Birleşmiş bir paylaşım oluşturulamadı.", "Couldn't establish a federated share, maybe the password was wrong." : "Birleşmiş bir paylaşım oluşturulamadı. Parola yanlış olabilir.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Birleşmiş paylaşım oluşturuldu. Bir çağrı alacaksınız. Bildirimlerinizi denetleyin.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Birleşmiş paylaşım isteği gönderildi. Bir çağrı alacaksınız. Bildirimlerinizi denetleyin.", "The mountpoint name contains invalid characters." : "Bağlama noktası adında geçersiz karakterler var.", "Not allowed to create a federated share with the owner." : "Sahip ile birleşmiş bir paylaşım oluşturmanıza izin verilmiyor.", "Invalid or untrusted SSL certificate" : "Geçersiz ya da güvenilmez SSL sertifikası", "Could not authenticate to remote share, password might be wrong" : "Uzak paylaşım kimliği doğrulanamadı. Parola yanlış olabilir", "Storage not valid" : "Depolama geçersiz", - "Federated Share successfully added" : "Birleşmiş Paylaşım eklendi", + "Federated share added" : "Birleşmiş paylaşım eklendi", "Couldn't add remote share" : "Uzak paylaşım eklenemedi", "Sharing %s failed, because this item is already shared with %s" : "%s paylaşılmadı. %s ile zaten paylaşılmış", "Not allowed to create a federated share with the same user" : "Aynı kullanıcı ile bir birleşmiş paylaşım oluşturulamaz", diff --git a/apps/federatedfilesharing/l10n/tr.json b/apps/federatedfilesharing/l10n/tr.json index 6faa1186f7..ffd3aa02a6 100644 --- a/apps/federatedfilesharing/l10n/tr.json +++ b/apps/federatedfilesharing/l10n/tr.json @@ -14,13 +14,13 @@ "Server to server sharing is not enabled on this server" : "Bu sunucuda sunucudan sunucuya paylaşım etkin değil", "Couldn't establish a federated share." : "Birleşmiş bir paylaşım oluşturulamadı.", "Couldn't establish a federated share, maybe the password was wrong." : "Birleşmiş bir paylaşım oluşturulamadı. Parola yanlış olabilir.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Birleşmiş paylaşım oluşturuldu. Bir çağrı alacaksınız. Bildirimlerinizi denetleyin.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Birleşmiş paylaşım isteği gönderildi. Bir çağrı alacaksınız. Bildirimlerinizi denetleyin.", "The mountpoint name contains invalid characters." : "Bağlama noktası adında geçersiz karakterler var.", "Not allowed to create a federated share with the owner." : "Sahip ile birleşmiş bir paylaşım oluşturmanıza izin verilmiyor.", "Invalid or untrusted SSL certificate" : "Geçersiz ya da güvenilmez SSL sertifikası", "Could not authenticate to remote share, password might be wrong" : "Uzak paylaşım kimliği doğrulanamadı. Parola yanlış olabilir", "Storage not valid" : "Depolama geçersiz", - "Federated Share successfully added" : "Birleşmiş Paylaşım eklendi", + "Federated share added" : "Birleşmiş paylaşım eklendi", "Couldn't add remote share" : "Uzak paylaşım eklenemedi", "Sharing %s failed, because this item is already shared with %s" : "%s paylaşılmadı. %s ile zaten paylaşılmış", "Not allowed to create a federated share with the same user" : "Aynı kullanıcı ile bir birleşmiş paylaşım oluşturulamaz", diff --git a/apps/federatedfilesharing/l10n/zh_CN.js b/apps/federatedfilesharing/l10n/zh_CN.js index d0f4400fff..2ca3283c09 100644 --- a/apps/federatedfilesharing/l10n/zh_CN.js +++ b/apps/federatedfilesharing/l10n/zh_CN.js @@ -16,13 +16,13 @@ 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." : "联合共享请求已成功,您将会收到邀请信息,请检查您的通知。", + "Federated Share request sent, you will receive an 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 successfully added" : "已成功添加联合共享", + "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" : "不能给你自己分享文件", diff --git a/apps/federatedfilesharing/l10n/zh_CN.json b/apps/federatedfilesharing/l10n/zh_CN.json index 3b9596453a..e996d7ce06 100644 --- a/apps/federatedfilesharing/l10n/zh_CN.json +++ b/apps/federatedfilesharing/l10n/zh_CN.json @@ -14,13 +14,13 @@ "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." : "联合共享请求已成功,您将会收到邀请信息,请检查您的通知。", + "Federated Share request sent, you will receive an 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 successfully added" : "已成功添加联合共享", + "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" : "不能给你自己分享文件", diff --git a/apps/federatedfilesharing/l10n/zh_TW.js b/apps/federatedfilesharing/l10n/zh_TW.js index f781d1e5b6..82ccc884ca 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 860bcc6491..77bae40075 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 821647e5e3..bb07c2717f 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/lib/Controller/MountPublicLinkController.php b/apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php index 89fdbc64d9..09bc7333c1 100644 --- a/apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php +++ b/apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php @@ -214,7 +214,7 @@ class MountPublicLinkController extends Controller { $result = json_decode($body, true); if (is_array($result) && isset($result['remoteUrl'])) { - return new JSONResponse(['message' => $this->l->t('Federated Share request was successful, you will receive a invitation. Check your notifications.')]); + return new JSONResponse(['message' => $this->l->t('Federated Share request sent, you will receive an invitation. Check your notifications.')]); } // if we doesn't get the expected response we assume that we try to add @@ -303,7 +303,7 @@ class MountPublicLinkController extends Controller { $storage->getScanner()->scanAll(); return new JSONResponse( [ - 'message' => $this->l->t('Federated Share successfully added'), + 'message' => $this->l->t('Federated share added'), 'legacyMount' => '1' ] ); diff --git a/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php b/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php index 4f64e6147e..529d7f7db6 100644 --- a/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php +++ b/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php @@ -194,12 +194,12 @@ class RequestHandlerController extends OCSController { $declineAction = $notification->createAction(); $declineAction->setLabel('decline') - ->setLink($urlGenerator->getAbsoluteURL($urlGenerator->linkTo('', 'ocs/v1.php/apps/files_sharing/api/v1/remote_shares/pending/' . $shareId)), 'DELETE'); + ->setLink($urlGenerator->getAbsoluteURL($urlGenerator->linkTo('', 'ocs/v2.php/apps/files_sharing/api/v1/remote_shares/pending/' . $shareId)), 'DELETE'); $notification->addAction($declineAction); $acceptAction = $notification->createAction(); $acceptAction->setLabel('accept') - ->setLink($urlGenerator->getAbsoluteURL($urlGenerator->linkTo('', 'ocs/v1.php/apps/files_sharing/api/v1/remote_shares/pending/' . $shareId)), 'POST'); + ->setLink($urlGenerator->getAbsoluteURL($urlGenerator->linkTo('', 'ocs/v2.php/apps/files_sharing/api/v1/remote_shares/pending/' . $shareId)), 'POST'); $notification->addAction($acceptAction); $notificationManager->notify($notification); diff --git a/apps/federatedfilesharing/templates/settings-personal.php b/apps/federatedfilesharing/templates/settings-personal.php index c6be2a45f1..26365d2b70 100644 --- a/apps/federatedfilesharing/templates/settings-personal.php +++ b/apps/federatedfilesharing/templates/settings-personal.php @@ -7,7 +7,7 @@ style('federatedfilesharing', 'settings-personal');
-

t('Federated Cloud')); ?>

+

t('Federated Cloud')); ?>

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')); ?>

diff --git a/apps/federation/l10n/de.js b/apps/federation/l10n/de.js index 2b476b94c9..1a2511578e 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 2c37fc10fa..fe99a8dfec 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 1a8bef05ae..c55829d1e6 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 c9b54c5f89..2e82f93b65 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/l10n/el.js b/apps/federation/l10n/el.js index 2f1a5a6178..4203fa03e1 100644 --- a/apps/federation/l10n/el.js +++ b/apps/federation/l10n/el.js @@ -7,8 +7,8 @@ OC.L10N.register( "Could not add server" : "Αδυναμία προσθήκης διακομιστή", "Federation" : "Federation", "Trusted servers" : "Έμπιστοι διακομιστές", - "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." : "Η Ομοσπονδία σας επιτρέπει να συνδεθείτε με άλλους αξιόπιστους διακομιστές για να ανταλλάξετε τον κατάλογο χρηστών. Για παράδειγμα, αυτό θα χρησιμοποιηθεί για την αυτόματη συμπλήρωση εξωτερικών χρηστών για ομαδική κοινή χρήση.", - "Add server automatically once a federated share was created successfully" : "Προσθέστε αυτόματα το διακομιστή μόλις δημιουργηθεί με επιτυχία μια ενοποιημένη κοινή χρήση", + "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 σας επιτρέπει να συνδεθείτε με άλλους αξιόπιστους διακομιστές για να ανταλλάξετε τον κατάλογο χρηστών. Για παράδειγμα, αυτό θα χρησιμοποιηθεί για την αυτόματη συμπλήρωση εξωτερικών χρηστών για ομαδική κοινή χρήση.", + "Add server automatically once a federated share was created successfully" : "Προσθέστε αυτόματα το διακομιστή μόλις δημιουργηθεί με επιτυχία μια faderated κοινή χρήση", "+ Add trusted server" : "+Προσθήκη έμπιστων διακομιστών", "Trusted server" : "Έμπιστοι διακομιστές", "Add" : "Προσθήκη" diff --git a/apps/federation/l10n/el.json b/apps/federation/l10n/el.json index 5de95089e4..39f9c6059b 100644 --- a/apps/federation/l10n/el.json +++ b/apps/federation/l10n/el.json @@ -5,8 +5,8 @@ "Could not add server" : "Αδυναμία προσθήκης διακομιστή", "Federation" : "Federation", "Trusted servers" : "Έμπιστοι διακομιστές", - "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." : "Η Ομοσπονδία σας επιτρέπει να συνδεθείτε με άλλους αξιόπιστους διακομιστές για να ανταλλάξετε τον κατάλογο χρηστών. Για παράδειγμα, αυτό θα χρησιμοποιηθεί για την αυτόματη συμπλήρωση εξωτερικών χρηστών για ομαδική κοινή χρήση.", - "Add server automatically once a federated share was created successfully" : "Προσθέστε αυτόματα το διακομιστή μόλις δημιουργηθεί με επιτυχία μια ενοποιημένη κοινή χρήση", + "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 σας επιτρέπει να συνδεθείτε με άλλους αξιόπιστους διακομιστές για να ανταλλάξετε τον κατάλογο χρηστών. Για παράδειγμα, αυτό θα χρησιμοποιηθεί για την αυτόματη συμπλήρωση εξωτερικών χρηστών για ομαδική κοινή χρήση.", + "Add server automatically once a federated share was created successfully" : "Προσθέστε αυτόματα το διακομιστή μόλις δημιουργηθεί με επιτυχία μια faderated κοινή χρήση", "+ Add trusted server" : "+Προσθήκη έμπιστων διακομιστών", "Trusted server" : "Έμπιστοι διακομιστές", "Add" : "Προσθήκη" diff --git a/apps/federation/l10n/es.js b/apps/federation/l10n/es.js index 90ffc965f1..0b5120fbc9 100644 --- a/apps/federation/l10n/es.js +++ b/apps/federation/l10n/es.js @@ -7,7 +7,7 @@ OC.L10N.register( "Could not add server" : "No se ha podido añadir el servidor", "Federation" : "Federación", "Trusted servers" : "Servidores de confianza", - "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." : "La federación te permite conectarte con otros servidores de confianza para intercambiar directorios. Por ejemplo, ésto se usará para autocompletar la selección usuarios externos al compartir en federación. ", + "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." : "La federación permite conectarte con otros servidores de confianza para intercambiar directorios. Por ejemplo, esto se usará para autocompletar la selección de usuarios externos al compartir en federación.", "Add server automatically once a federated share was created successfully" : "Añadir el servidor automáticamente una vez que un compartido federado se haya creado exitosamente", "+ Add trusted server" : "+ Añadir servidor de confianza", "Trusted server" : "Servidor de confianza", diff --git a/apps/federation/l10n/es.json b/apps/federation/l10n/es.json index ab7d0817b3..4548b3dc70 100644 --- a/apps/federation/l10n/es.json +++ b/apps/federation/l10n/es.json @@ -5,7 +5,7 @@ "Could not add server" : "No se ha podido añadir el servidor", "Federation" : "Federación", "Trusted servers" : "Servidores de confianza", - "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." : "La federación te permite conectarte con otros servidores de confianza para intercambiar directorios. Por ejemplo, ésto se usará para autocompletar la selección usuarios externos al compartir en federación. ", + "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." : "La federación permite conectarte con otros servidores de confianza para intercambiar directorios. Por ejemplo, esto se usará para autocompletar la selección de usuarios externos al compartir en federación.", "Add server automatically once a federated share was created successfully" : "Añadir el servidor automáticamente una vez que un compartido federado se haya creado exitosamente", "+ Add trusted server" : "+ Añadir servidor de confianza", "Trusted server" : "Servidor de confianza", diff --git a/apps/federation/l10n/lt_LT.js b/apps/federation/l10n/lt_LT.js new file mode 100644 index 0000000000..86d46008af --- /dev/null +++ b/apps/federation/l10n/lt_LT.js @@ -0,0 +1,16 @@ +OC.L10N.register( + "federation", + { + "Added to the list of trusted servers" : "Pridėtas prie patikimų serverių sąrašo", + "Server is already in the list of trusted servers." : "Serveris jau yra patikimų serverių sąraše.", + "No server to federate with found" : "Rastų serverių sąraše nėra tinkamo serverio bendrinimui", + "Could not add server" : "Nepavyko pridėti serverio", + "Federation" : "Centralizuotų Serverių sistema", + "Trusted servers" : "Patikimi serveriai", + "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." : "Centralizuotų Serverių sistema leidžia prisijungti ir naudoti naudotojų duomenis, esančius patikimuose serveriuose. Pavyzdžiui, leidžiama įtraukti kito serverio naudotojus duomenų bendrinimui.", + "Add server automatically once a federated share was created successfully" : "Pridėti serverį automatiškai, kai Centralizuotas Serverių dalinimosi ryšys buvo sukurtas", + "+ Add trusted server" : "+ Pridėti patikimą serverį", + "Trusted server" : "Patikimas serveris", + "Add" : "Pridėti" +}, +"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/federation/l10n/lt_LT.json b/apps/federation/l10n/lt_LT.json new file mode 100644 index 0000000000..767e0e13ec --- /dev/null +++ b/apps/federation/l10n/lt_LT.json @@ -0,0 +1,14 @@ +{ "translations": { + "Added to the list of trusted servers" : "Pridėtas prie patikimų serverių sąrašo", + "Server is already in the list of trusted servers." : "Serveris jau yra patikimų serverių sąraše.", + "No server to federate with found" : "Rastų serverių sąraše nėra tinkamo serverio bendrinimui", + "Could not add server" : "Nepavyko pridėti serverio", + "Federation" : "Centralizuotų Serverių sistema", + "Trusted servers" : "Patikimi serveriai", + "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." : "Centralizuotų Serverių sistema leidžia prisijungti ir naudoti naudotojų duomenis, esančius patikimuose serveriuose. Pavyzdžiui, leidžiama įtraukti kito serverio naudotojus duomenų bendrinimui.", + "Add server automatically once a federated share was created successfully" : "Pridėti serverį automatiškai, kai Centralizuotas Serverių dalinimosi ryšys buvo sukurtas", + "+ Add trusted server" : "+ Pridėti patikimą serverį", + "Trusted server" : "Patikimas serveris", + "Add" : "Pridėti" +},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +} \ No newline at end of file diff --git a/apps/federation/l10n/zh_TW.js b/apps/federation/l10n/zh_TW.js index 983aba2615..dbbd986275 100644 --- a/apps/federation/l10n/zh_TW.js +++ b/apps/federation/l10n/zh_TW.js @@ -6,14 +6,11 @@ OC.L10N.register( "No server to federate with found" : "沒有找到可結盟的伺服器", "Could not add server" : "無法加入伺服器", "Federation" : "聯盟", + "Trusted servers" : "信任的伺服器", "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." : "聯盟功能允許您與信任的伺服器連結,交換使用者列表。舉例來說,與其他雲端聯盟的使用者分享檔案時,有了這一份列表,就可以在輸入框搜尋他們的使用者名稱。", "Add server automatically once a federated share was created successfully" : "當聯盟分享成功建立的時候自動將伺服器加入信任清單", - "Trusted Servers" : "信任的伺服器", - "+ Add Nextcloud server" : "+ 加入 Nextcloud 伺服器", - "Nextcloud Server" : "Nextcloud 伺服器", - "Server added to the list of trusted Nextclouds" : "伺服器已被加入至信任的 Nextcloud", - "No Nextcloud server found" : "找不到 Nextcloud 伺服器", - "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Nextcloud 聯盟功能允許您與信任的伺服器連結,交換使用者列表。舉例來說,與其他雲端聯盟的使用者分享檔案時,有了這一份列表,就可以在輸入框搜尋他們的使用者名稱。", - "Trusted Nextcloud Servers" : "信任的 Nextcloud 伺服器" + "+ Add trusted server" : "+ 加入信任的伺服器", + "Trusted server" : "信任的伺服器", + "Add" : "新增" }, "nplurals=1; plural=0;"); diff --git a/apps/federation/l10n/zh_TW.json b/apps/federation/l10n/zh_TW.json index 10865e029e..5b9ce1e29a 100644 --- a/apps/federation/l10n/zh_TW.json +++ b/apps/federation/l10n/zh_TW.json @@ -4,14 +4,11 @@ "No server to federate with found" : "沒有找到可結盟的伺服器", "Could not add server" : "無法加入伺服器", "Federation" : "聯盟", + "Trusted servers" : "信任的伺服器", "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." : "聯盟功能允許您與信任的伺服器連結,交換使用者列表。舉例來說,與其他雲端聯盟的使用者分享檔案時,有了這一份列表,就可以在輸入框搜尋他們的使用者名稱。", "Add server automatically once a federated share was created successfully" : "當聯盟分享成功建立的時候自動將伺服器加入信任清單", - "Trusted Servers" : "信任的伺服器", - "+ Add Nextcloud server" : "+ 加入 Nextcloud 伺服器", - "Nextcloud Server" : "Nextcloud 伺服器", - "Server added to the list of trusted Nextclouds" : "伺服器已被加入至信任的 Nextcloud", - "No Nextcloud server found" : "找不到 Nextcloud 伺服器", - "Nextcloud Federation allows you to connect with other trusted Nextclouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Nextcloud 聯盟功能允許您與信任的伺服器連結,交換使用者列表。舉例來說,與其他雲端聯盟的使用者分享檔案時,有了這一份列表,就可以在輸入框搜尋他們的使用者名稱。", - "Trusted Nextcloud Servers" : "信任的 Nextcloud 伺服器" + "+ Add trusted server" : "+ 加入信任的伺服器", + "Trusted server" : "信任的伺服器", + "Add" : "新增" },"pluralForm" :"nplurals=1; plural=0;" } \ No newline at end of file diff --git a/apps/federation/lib/AppInfo/Application.php b/apps/federation/lib/AppInfo/Application.php index 5564762291..38bbe293a5 100644 --- a/apps/federation/lib/AppInfo/Application.php +++ b/apps/federation/lib/AppInfo/Application.php @@ -24,75 +24,29 @@ namespace OCA\Federation\AppInfo; -use OCA\Federation\Controller\SettingsController; use OCA\Federation\DAV\FedAuth; -use OCA\Federation\DbHandler; use OCA\Federation\Hooks; use OCA\Federation\Middleware\AddServerMiddleware; -use OCA\Federation\SyncFederationAddressBooks; -use OCA\Federation\TrustedServers; -use OCP\AppFramework\IAppContainer; +use OCP\AppFramework\App; use OCP\SabrePluginEvent; use OCP\Util; use Sabre\DAV\Auth\Plugin; +use Sabre\DAV\Server; -class Application extends \OCP\AppFramework\App { +class Application extends App { /** * @param array $urlParams */ - public function __construct($urlParams = array()) { + public function __construct($urlParams = []) { parent::__construct('federation', $urlParams); - $this->registerService(); $this->registerMiddleware(); } - private function registerService() { - $container = $this->getContainer(); - - $container->registerService('addServerMiddleware', function(IAppContainer $c) { - return new AddServerMiddleware( - $c->getAppName(), - \OC::$server->getL10N($c->getAppName()), - \OC::$server->getLogger() - ); - }); - - $container->registerService('DbHandler', function(IAppContainer $c) { - return new DbHandler( - \OC::$server->getDatabaseConnection(), - \OC::$server->getL10N($c->getAppName()) - ); - }); - - $container->registerService('TrustedServers', function(IAppContainer $c) { - $server = $c->getServer(); - return new TrustedServers( - $c->query('DbHandler'), - $server->getHTTPClientService(), - $server->getLogger(), - $server->getJobList(), - $server->getSecureRandom(), - $server->getConfig(), - $server->getEventDispatcher() - ); - }); - - $container->registerService('SettingsController', function (IAppContainer $c) { - $server = $c->getServer(); - return new SettingsController( - $c->getAppName(), - $server->getRequest(), - $server->getL10N($c->getAppName()), - $c->query('TrustedServers') - ); - }); - - } - private function registerMiddleware() { $container = $this->getContainer(); - $container->registerMiddleware('addServerMiddleware'); + $container->registerAlias('AddServerMiddleware', AddServerMiddleware::class); + $container->registerMiddleWare('AddServerMiddleware'); } /** @@ -102,7 +56,7 @@ class Application extends \OCP\AppFramework\App { public function registerHooks() { $container = $this->getContainer(); - $hooksManager = new Hooks($container->query('TrustedServers')); + $hooksManager = $container->query(Hooks::class); Util::connectHook( 'OCP\Share', @@ -111,28 +65,18 @@ class Application extends \OCP\AppFramework\App { 'addServerHook' ); - $dispatcher = $this->getContainer()->getServer()->getEventDispatcher(); + $dispatcher = $container->getServer()->getEventDispatcher(); $dispatcher->addListener('OCA\DAV\Connector\Sabre::authInit', function($event) use($container) { if ($event instanceof SabrePluginEvent) { - $authPlugin = $event->getServer()->getPlugin('auth'); - if ($authPlugin instanceof Plugin) { - $h = new DbHandler($container->getServer()->getDatabaseConnection(), - $container->getServer()->getL10N('federation') - ); - $authPlugin->addBackend(new FedAuth($h)); + $server = $event->getServer(); + if ($server instanceof Server) { + $authPlugin = $server->getPlugin('auth'); + if ($authPlugin instanceof Plugin) { + $authPlugin->addBackend($container->query(FedAuth::class)); + } } } }); } - /** - * @return SyncFederationAddressBooks - */ - public function getSyncService() { - $syncService = \OC::$server->query('CardDAVSyncService'); - $dbHandler = $this->getContainer()->query('DbHandler'); - $discoveryService = \OC::$server->query(\OCP\OCS\IDiscoveryService::class); - return new SyncFederationAddressBooks($dbHandler, $syncService, $discoveryService); - } - } diff --git a/apps/federation/lib/BackgroundJob/GetSharedSecret.php b/apps/federation/lib/BackgroundJob/GetSharedSecret.php index b1367be952..bf9f58999d 100644 --- a/apps/federation/lib/BackgroundJob/GetSharedSecret.php +++ b/apps/federation/lib/BackgroundJob/GetSharedSecret.php @@ -32,8 +32,10 @@ use OC\BackgroundJob\Job; use OCA\Federation\DbHandler; use OCA\Federation\TrustedServers; use OCP\AppFramework\Http; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; use OCP\Http\Client\IClient; +use OCP\Http\Client\IClientService; use OCP\Http\Client\IResponse; use OCP\ILogger; use OCP\IURLGenerator; @@ -46,7 +48,7 @@ use OCP\OCS\IDiscoveryService; * * @package OCA\Federation\Backgroundjob */ -class GetSharedSecret extends Job{ +class GetSharedSecret extends Job { /** @var IClient */ private $httpClient; @@ -69,6 +71,9 @@ class GetSharedSecret extends Job{ /** @var ILogger */ private $logger; + /** @var ITimeFactory */ + private $timeFactory; + /** @var bool */ protected $retainJob = false; @@ -76,52 +81,46 @@ class GetSharedSecret extends Job{ private $defaultEndPoint = '/ocs/v2.php/apps/federation/api/v1/shared-secret'; + /** @var int 30 day = 2592000sec */ + private $maxLifespan = 2592000; + /** * RequestSharedSecret constructor. * - * @param IClient $httpClient + * @param IClientService $httpClientService * @param IURLGenerator $urlGenerator * @param IJobList $jobList * @param TrustedServers $trustedServers * @param ILogger $logger * @param DbHandler $dbHandler * @param IDiscoveryService $ocsDiscoveryService + * @param ITimeFactory $timeFactory */ public function __construct( - IClient $httpClient = null, - IURLGenerator $urlGenerator = null, - IJobList $jobList = null, - TrustedServers $trustedServers = null, - ILogger $logger = null, - DbHandler $dbHandler = null, - IDiscoveryService $ocsDiscoveryService = null + IClientService $httpClientService, + IURLGenerator $urlGenerator, + IJobList $jobList, + TrustedServers $trustedServers, + ILogger $logger, + DbHandler $dbHandler, + IDiscoveryService $ocsDiscoveryService, + ITimeFactory $timeFactory ) { - $this->logger = $logger ? $logger : \OC::$server->getLogger(); - $this->httpClient = $httpClient ? $httpClient : \OC::$server->getHTTPClientService()->newClient(); - $this->jobList = $jobList ? $jobList : \OC::$server->getJobList(); - $this->urlGenerator = $urlGenerator ? $urlGenerator : \OC::$server->getURLGenerator(); - $this->dbHandler = $dbHandler ? $dbHandler : new DbHandler(\OC::$server->getDatabaseConnection(), \OC::$server->getL10N('federation')); - $this->ocsDiscoveryService = $ocsDiscoveryService ? $ocsDiscoveryService : \OC::$server->query(\OCP\OCS\IDiscoveryService::class); - if ($trustedServers) { - $this->trustedServers = $trustedServers; - } else { - $this->trustedServers = new TrustedServers( - $this->dbHandler, - \OC::$server->getHTTPClientService(), - $this->logger, - $this->jobList, - \OC::$server->getSecureRandom(), - \OC::$server->getConfig(), - \OC::$server->getEventDispatcher() - ); - } + $this->logger = $logger; + $this->httpClient = $httpClientService->newClient(); + $this->jobList = $jobList; + $this->urlGenerator = $urlGenerator; + $this->dbHandler = $dbHandler; + $this->ocsDiscoveryService = $ocsDiscoveryService; + $this->trustedServers = $trustedServers; + $this->timeFactory = $timeFactory; } /** * run the job, then remove it from the joblist * * @param JobList $jobList - * @param ILogger $logger + * @param ILogger|null $logger */ public function execute($jobList, ILogger $logger = null) { $target = $this->argument['url']; @@ -130,8 +129,10 @@ class GetSharedSecret extends Job{ $this->parentExecute($jobList, $logger); } - if (!$this->retainJob) { - $jobList->remove($this, $this->argument); + $jobList->remove($this, $this->argument); + + if ($this->retainJob) { + $this->reAddJob($this->argument); } } @@ -147,14 +148,24 @@ class GetSharedSecret extends Job{ protected function run($argument) { $target = $argument['url']; + $created = isset($argument['created']) ? (int)$argument['created'] : $this->timeFactory->getTime(); + $currentTime = $this->timeFactory->getTime(); $source = $this->urlGenerator->getAbsoluteURL('/'); $source = rtrim($source, '/'); $token = $argument['token']; + // kill job after 30 days of trying + $deadline = $currentTime - $this->maxLifespan; + if ($created < $deadline) { + $this->retainJob = false; + $this->trustedServers->setServerStatus($target,TrustedServers::STATUS_FAILURE); + return; + } + $endPoints = $this->ocsDiscoveryService->discover($target, 'FEDERATED_SHARING'); $endPoint = isset($endPoints['shared-secret']) ? $endPoints['shared-secret'] : $this->defaultEndPoint; - // make sure that we have a well formated url + // make sure that we have a well formatted url $url = rtrim($target, '/') . '/' . trim($endPoint, '/') . $this->format; $result = null; @@ -215,4 +226,23 @@ class GetSharedSecret extends Job{ } } + + /** + * re-add background job + * + * @param array $argument + */ + protected function reAddJob(array $argument) { + $url = $argument['url']; + $created = isset($argument['created']) ? (int)$argument['created'] : $this->timeFactory->getTime(); + $token = $argument['token']; + $this->jobList->add( + GetSharedSecret::class, + [ + 'url' => $url, + 'token' => $token, + 'created' => $created + ] + ); + } } diff --git a/apps/federation/lib/BackgroundJob/RequestSharedSecret.php b/apps/federation/lib/BackgroundJob/RequestSharedSecret.php index 9123e37300..7effb838d8 100644 --- a/apps/federation/lib/BackgroundJob/RequestSharedSecret.php +++ b/apps/federation/lib/BackgroundJob/RequestSharedSecret.php @@ -33,8 +33,10 @@ use OC\BackgroundJob\Job; use OCA\Federation\DbHandler; use OCA\Federation\TrustedServers; use OCP\AppFramework\Http; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; use OCP\Http\Client\IClient; +use OCP\Http\Client\IClientService; use OCP\ILogger; use OCP\IURLGenerator; use OCP\OCS\IDiscoveryService; @@ -69,6 +71,9 @@ class RequestSharedSecret extends Job { /** @var ILogger */ private $logger; + /** @var ITimeFactory */ + private $timeFactory; + /** @var bool */ protected $retainJob = false; @@ -76,43 +81,39 @@ class RequestSharedSecret extends Job { private $defaultEndPoint = '/ocs/v2.php/apps/federation/api/v1/request-shared-secret'; + /** @var int 30 day = 2592000sec */ + private $maxLifespan = 2592000; + /** * RequestSharedSecret constructor. * - * @param IClient $httpClient + * @param IClientService $httpClientService * @param IURLGenerator $urlGenerator * @param IJobList $jobList * @param TrustedServers $trustedServers * @param DbHandler $dbHandler * @param IDiscoveryService $ocsDiscoveryService + * @param ILogger $logger + * @param ITimeFactory $timeFactory */ public function __construct( - IClient $httpClient = null, - IURLGenerator $urlGenerator = null, - IJobList $jobList = null, - TrustedServers $trustedServers = null, - DbHandler $dbHandler = null, - IDiscoveryService $ocsDiscoveryService = null + IClientService $httpClientService, + IURLGenerator $urlGenerator, + IJobList $jobList, + TrustedServers $trustedServers, + DbHandler $dbHandler, + IDiscoveryService $ocsDiscoveryService, + ILogger $logger, + ITimeFactory $timeFactory ) { - $this->httpClient = $httpClient ? $httpClient : \OC::$server->getHTTPClientService()->newClient(); - $this->jobList = $jobList ? $jobList : \OC::$server->getJobList(); - $this->urlGenerator = $urlGenerator ? $urlGenerator : \OC::$server->getURLGenerator(); - $this->dbHandler = $dbHandler ? $dbHandler : new DbHandler(\OC::$server->getDatabaseConnection(), \OC::$server->getL10N('federation')); - $this->logger = \OC::$server->getLogger(); - $this->ocsDiscoveryService = $ocsDiscoveryService ? $ocsDiscoveryService : \OC::$server->query(\OCP\OCS\IDiscoveryService::class); - if ($trustedServers) { - $this->trustedServers = $trustedServers; - } else { - $this->trustedServers = new TrustedServers( - $this->dbHandler, - \OC::$server->getHTTPClientService(), - $this->logger, - $this->jobList, - \OC::$server->getSecureRandom(), - \OC::$server->getConfig(), - \OC::$server->getEventDispatcher() - ); - } + $this->httpClient = $httpClientService->newClient(); + $this->jobList = $jobList; + $this->urlGenerator = $urlGenerator; + $this->dbHandler = $dbHandler; + $this->logger = $logger; + $this->ocsDiscoveryService = $ocsDiscoveryService; + $this->trustedServers = $trustedServers; + $this->timeFactory = $timeFactory; } @@ -120,7 +121,7 @@ class RequestSharedSecret extends Job { * run the job, then remove it from the joblist * * @param JobList $jobList - * @param ILogger $logger + * @param ILogger|null $logger */ public function execute($jobList, ILogger $logger = null) { $target = $this->argument['url']; @@ -129,8 +130,10 @@ class RequestSharedSecret extends Job { $this->parentExecute($jobList, $logger); } - if (!$this->retainJob) { - $jobList->remove($this, $this->argument); + $jobList->remove($this, $this->argument); + + if ($this->retainJob) { + $this->reAddJob($this->argument); } } @@ -147,10 +150,20 @@ class RequestSharedSecret extends Job { protected function run($argument) { $target = $argument['url']; + $created = isset($argument['created']) ? (int)$argument['created'] : $this->timeFactory->getTime(); + $currentTime = $this->timeFactory->getTime(); $source = $this->urlGenerator->getAbsoluteURL('/'); $source = rtrim($source, '/'); $token = $argument['token']; + // kill job after 30 days of trying + $deadline = $currentTime - $this->maxLifespan; + if ($created < $deadline) { + $this->retainJob = false; + $this->trustedServers->setServerStatus($target, TrustedServers::STATUS_FAILURE); + return; + } + $endPoints = $this->ocsDiscoveryService->discover($target, 'FEDERATED_SHARING'); $endPoint = isset($endPoints['shared-secret']) ? $endPoints['shared-secret'] : $this->defaultEndPoint; @@ -198,4 +211,24 @@ class RequestSharedSecret extends Job { } } + + /** + * re-add background job + * + * @param array $argument + */ + protected function reAddJob(array $argument) { + $url = $argument['url']; + $created = isset($argument['created']) ? (int)$argument['created'] : $this->timeFactory->getTime(); + $token = $argument['token']; + + $this->jobList->add( + RequestSharedSecret::class, + [ + 'url' => $url, + 'token' => $token, + 'created' => $created + ] + ); + } } diff --git a/apps/federation/lib/Command/SyncFederationAddressBooks.php b/apps/federation/lib/Command/SyncFederationAddressBooks.php index fb3a2749ff..db332d3d7a 100644 --- a/apps/federation/lib/Command/SyncFederationAddressBooks.php +++ b/apps/federation/lib/Command/SyncFederationAddressBooks.php @@ -36,7 +36,7 @@ class SyncFederationAddressBooks extends Command { /** * @param \OCA\Federation\SyncFederationAddressBooks $syncService */ - function __construct(\OCA\Federation\SyncFederationAddressBooks $syncService) { + public function __construct(\OCA\Federation\SyncFederationAddressBooks $syncService) { parent::__construct(); $this->syncService = $syncService; diff --git a/apps/federation/lib/Controller/OCSAuthAPIController.php b/apps/federation/lib/Controller/OCSAuthAPIController.php index 594299a2d0..b0594877b2 100644 --- a/apps/federation/lib/Controller/OCSAuthAPIController.php +++ b/apps/federation/lib/Controller/OCSAuthAPIController.php @@ -32,6 +32,7 @@ use OCA\Federation\TrustedServers; use OCP\AppFramework\Http; use OCP\AppFramework\OCS\OCSForbiddenException; use OCP\AppFramework\OCSController; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; use OCP\ILogger; use OCP\IRequest; @@ -61,6 +62,9 @@ class OCSAuthAPIController extends OCSController{ /** @var ILogger */ private $logger; + /** @var ITimeFactory */ + private $timeFactory; + /** * OCSAuthAPI constructor. * @@ -71,6 +75,7 @@ class OCSAuthAPIController extends OCSController{ * @param TrustedServers $trustedServers * @param DbHandler $dbHandler * @param ILogger $logger + * @param ITimeFactory $timeFactory */ public function __construct( $appName, @@ -79,7 +84,8 @@ class OCSAuthAPIController extends OCSController{ IJobList $jobList, TrustedServers $trustedServers, DbHandler $dbHandler, - ILogger $logger + ILogger $logger, + ITimeFactory $timeFactory ) { parent::__construct($appName, $request); @@ -88,6 +94,7 @@ class OCSAuthAPIController extends OCSController{ $this->trustedServers = $trustedServers; $this->dbHandler = $dbHandler; $this->logger = $logger; + $this->timeFactory = $timeFactory; } /** @@ -149,20 +156,12 @@ class OCSAuthAPIController extends OCSController{ throw new OCSForbiddenException(); } - // we ask for the shared secret so we no longer have to ask the other server - // to request the shared secret - $this->jobList->remove('OCA\Federation\BackgroundJob\RequestSharedSecret', - [ - 'url' => $url, - 'token' => $localToken - ] - ); - $this->jobList->add( 'OCA\Federation\BackgroundJob\GetSharedSecret', [ 'url' => $url, 'token' => $token, + 'created' => $this->timeFactory->getTime() ] ); @@ -210,5 +209,4 @@ class OCSAuthAPIController extends OCSController{ $storedToken = $this->dbHandler->getToken($url); return hash_equals($storedToken, $token); } - } diff --git a/apps/federation/lib/Controller/SettingsController.php b/apps/federation/lib/Controller/SettingsController.php index afbaa4abee..68267dcb73 100644 --- a/apps/federation/lib/Controller/SettingsController.php +++ b/apps/federation/lib/Controller/SettingsController.php @@ -26,7 +26,6 @@ namespace OCA\Federation\Controller; use OC\HintException; use OCA\Federation\TrustedServers; use OCP\AppFramework\Controller; -use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; use OCP\IL10N; use OCP\IRequest; diff --git a/apps/federation/lib/DAV/FedAuth.php b/apps/federation/lib/DAV/FedAuth.php index ae78ffeded..511888f768 100644 --- a/apps/federation/lib/DAV/FedAuth.php +++ b/apps/federation/lib/DAV/FedAuth.php @@ -63,6 +63,6 @@ class FedAuth extends AbstractBasic { /** * @inheritdoc */ - function challenge(RequestInterface $request, ResponseInterface $response) { + public function challenge(RequestInterface $request, ResponseInterface $response) { } } diff --git a/apps/federation/lib/DbHandler.php b/apps/federation/lib/DbHandler.php index c938cfb158..04968daf0f 100644 --- a/apps/federation/lib/DbHandler.php +++ b/apps/federation/lib/DbHandler.php @@ -88,11 +88,11 @@ class DbHandler { if ($result) { return (int)$this->connection->lastInsertId('*PREFIX*'.$this->dbTable); - } else { - $message = 'Internal failure, Could not add trusted server: ' . $url; - $message_t = $this->IL10N->t('Could not add server'); - throw new HintException($message, $message_t); } + + $message = 'Internal failure, Could not add trusted server: ' . $url; + $message_t = $this->IL10N->t('Could not add server'); + throw new HintException($message, $message_t); } /** @@ -137,8 +137,11 @@ class DbHandler { */ public function getAllServer() { $query = $this->connection->getQueryBuilder(); - $query->select(['url', 'url_hash', 'id', 'status', 'shared_secret', 'sync_token'])->from($this->dbTable); - $result = $query->execute()->fetchAll(); + $query->select(['url', 'url_hash', 'id', 'status', 'shared_secret', 'sync_token']) + ->from($this->dbTable); + $statement = $query->execute(); + $result = $statement->fetchAll(); + $statement->closeCursor(); return $result; } @@ -151,10 +154,13 @@ class DbHandler { public function serverExists($url) { $hash = $this->hash($url); $query = $this->connection->getQueryBuilder(); - $query->select('url')->from($this->dbTable) + $query->select('url') + ->from($this->dbTable) ->where($query->expr()->eq('url_hash', $query->createParameter('url_hash'))) ->setParameter('url_hash', $hash); - $result = $query->execute()->fetchAll(); + $statement = $query->execute(); + $result = $statement->fetchAll(); + $statement->closeCursor(); return !empty($result); } @@ -190,7 +196,9 @@ class DbHandler { ->where($query->expr()->eq('url_hash', $query->createParameter('url_hash'))) ->setParameter('url_hash', $hash); - $result = $query->execute()->fetch(); + $statement = $query->execute(); + $result = $statement->fetch(); + $statement->closeCursor(); if (!isset($result['token'])) { throw new \Exception('No token found for: ' . $url); @@ -229,7 +237,9 @@ class DbHandler { ->where($query->expr()->eq('url_hash', $query->createParameter('url_hash'))) ->setParameter('url_hash', $hash); - $result = $query->execute()->fetch(); + $statement = $query->execute(); + $result = $statement->fetch(); + $statement->closeCursor(); return $result['shared_secret']; } @@ -265,7 +275,9 @@ class DbHandler { ->where($query->expr()->eq('url_hash', $query->createParameter('url_hash'))) ->setParameter('url_hash', $hash); - $result = $query->execute()->fetch(); + $statement = $query->execute(); + $result = $statement->fetch(); + $statement->closeCursor(); return (int)$result['status']; } @@ -314,7 +326,9 @@ class DbHandler { $query->select('url')->from($this->dbTable) ->where($query->expr()->eq('shared_secret', $query->createNamedParameter($password))); - $result = $query->execute()->fetch(); + $statement = $query->execute(); + $result = $statement->fetch(); + $statement->closeCursor(); return !empty($result); } diff --git a/apps/federation/lib/Middleware/AddServerMiddleware.php b/apps/federation/lib/Middleware/AddServerMiddleware.php index 71e517f6b8..082596216c 100644 --- a/apps/federation/lib/Middleware/AddServerMiddleware.php +++ b/apps/federation/lib/Middleware/AddServerMiddleware.php @@ -26,6 +26,7 @@ namespace OCA\Federation\Middleware; use OC\HintException; use OCA\Federation\Controller\SettingsController; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http; use OCP\AppFramework\Http\JSONResponse; use OCP\AppFramework\Middleware; @@ -43,6 +44,11 @@ class AddServerMiddleware extends Middleware { /** @var ILogger */ protected $logger; + /** + * @param string $appName + * @param IL10N $l + * @param ILogger $logger + */ public function __construct($appName, IL10N $l, ILogger $logger) { $this->appName = $appName; $this->l = $l; @@ -52,10 +58,11 @@ class AddServerMiddleware extends Middleware { /** * Log error message and return a response which can be displayed to the user * - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * @param \Exception $exception * @return JSONResponse + * @throws \Exception */ public function afterException($controller, $methodName, \Exception $exception) { if (($controller instanceof SettingsController) === false) { diff --git a/apps/federation/lib/SyncJob.php b/apps/federation/lib/SyncJob.php index 060504efb7..2e5d1578ba 100644 --- a/apps/federation/lib/SyncJob.php +++ b/apps/federation/lib/SyncJob.php @@ -24,20 +24,31 @@ namespace OCA\Federation; use OC\BackgroundJob\TimedJob; use OCA\Federation\AppInfo\Application; +use OCP\ILogger; class SyncJob extends TimedJob { - public function __construct() { + /** @var SyncFederationAddressBooks */ + protected $syncService; + + /** @var ILogger */ + protected $logger; + + /** + * @param SyncFederationAddressBooks $syncService + * @param ILogger $logger + */ + public function __construct(SyncFederationAddressBooks $syncService, ILogger $logger) { // Run once a day $this->setInterval(24 * 60 * 60); + $this->syncService = $syncService; + $this->logger = $logger; } protected function run($argument) { - $app = new Application(); - $ss = $app->getSyncService(); - $ss->syncThemAll(function($url, $ex) { + $this->syncService->syncThemAll(function($url, $ex) { if ($ex instanceof \Exception) { - \OC::$server->getLogger()->error("Error while syncing $url : " . $ex->getMessage(), ['app' => 'fed-sync']); + $this->logger->error("Error while syncing $url : " . $ex->getMessage(), ['app' => 'fed-sync']); } }); } diff --git a/apps/federation/lib/TrustedServers.php b/apps/federation/lib/TrustedServers.php index 9bf1452eab..067cf671a9 100644 --- a/apps/federation/lib/TrustedServers.php +++ b/apps/federation/lib/TrustedServers.php @@ -28,6 +28,7 @@ namespace OCA\Federation; use OC\HintException; use OCP\AppFramework\Http; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; use OCP\Http\Client\IClientService; use OCP\IConfig; @@ -68,6 +69,9 @@ class TrustedServers { /** @var EventDispatcherInterface */ private $dispatcher; + /** @var ITimeFactory */ + private $timeFactory; + /** * @param DbHandler $dbHandler * @param IClientService $httpClientService @@ -76,6 +80,7 @@ class TrustedServers { * @param ISecureRandom $secureRandom * @param IConfig $config * @param EventDispatcherInterface $dispatcher + * @param ITimeFactory $timeFactory */ public function __construct( DbHandler $dbHandler, @@ -84,7 +89,8 @@ class TrustedServers { IJobList $jobList, ISecureRandom $secureRandom, IConfig $config, - EventDispatcherInterface $dispatcher + EventDispatcherInterface $dispatcher, + ITimeFactory $timeFactory ) { $this->dbHandler = $dbHandler; $this->httpClientService = $httpClientService; @@ -93,6 +99,7 @@ class TrustedServers { $this->secureRandom = $secureRandom; $this->config = $config; $this->dispatcher = $dispatcher; + $this->timeFactory = $timeFactory; } /** @@ -111,7 +118,8 @@ class TrustedServers { 'OCA\Federation\BackgroundJob\RequestSharedSecret', [ 'url' => $url, - 'token' => $token + 'token' => $token, + 'created' => $this->timeFactory->getTime() ] ); } diff --git a/apps/federation/tests/BackgroundJob/GetSharedSecretTest.php b/apps/federation/tests/BackgroundJob/GetSharedSecretTest.php index 6364ddaedf..8759392cae 100644 --- a/apps/federation/tests/BackgroundJob/GetSharedSecretTest.php +++ b/apps/federation/tests/BackgroundJob/GetSharedSecretTest.php @@ -31,8 +31,10 @@ use OCA\Files_Sharing\Tests\TestCase; use OCA\Federation\DbHandler; use OCA\Federation\TrustedServers; use OCP\AppFramework\Http; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; use OCP\Http\Client\IClient; +use OCP\Http\Client\IClientService; use OCP\Http\Client\IResponse; use OCP\ILogger; use OCP\IURLGenerator; @@ -47,36 +49,43 @@ use OCP\OCS\IDiscoveryService; */ class GetSharedSecretTest extends TestCase { - /** @var \PHPUnit_Framework_MockObject_MockObject | IClient */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IClient */ private $httpClient; - /** @var \PHPUnit_Framework_MockObject_MockObject | IJobList */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IClientService */ + private $httpClientService; + + /** @var \PHPUnit_Framework_MockObject_MockObject|IJobList */ private $jobList; - /** @var \PHPUnit_Framework_MockObject_MockObject | IURLGenerator */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IURLGenerator */ private $urlGenerator; - /** @var \PHPUnit_Framework_MockObject_MockObject | TrustedServers */ + /** @var \PHPUnit_Framework_MockObject_MockObject|TrustedServers */ private $trustedServers; - /** @var \PHPUnit_Framework_MockObject_MockObject | DbHandler */ + /** @var \PHPUnit_Framework_MockObject_MockObject|DbHandler */ private $dbHandler; - /** @var \PHPUnit_Framework_MockObject_MockObject | ILogger */ + /** @var \PHPUnit_Framework_MockObject_MockObject|ILogger */ private $logger; - /** @var \PHPUnit_Framework_MockObject_MockObject | IResponse */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IResponse */ private $response; - /** @var \PHPUnit_Framework_MockObject_MockObject | IDiscoveryService */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IDiscoveryService */ private $discoverService; + /** @var \PHPUnit_Framework_MockObject_MockObject|ITimeFactory */ + private $timeFactory; + /** @var GetSharedSecret */ private $getSharedSecret; public function setUp() { parent::setUp(); + $this->httpClientService = $this->createMock(IClientService::class); $this->httpClient = $this->getMockBuilder(IClient::class)->getMock(); $this->jobList = $this->getMockBuilder(IJobList::class)->getMock(); $this->urlGenerator = $this->getMockBuilder(IURLGenerator::class)->getMock(); @@ -87,17 +96,20 @@ class GetSharedSecretTest extends TestCase { $this->logger = $this->getMockBuilder(ILogger::class)->getMock(); $this->response = $this->getMockBuilder(IResponse::class)->getMock(); $this->discoverService = $this->getMockBuilder(IDiscoveryService::class)->getMock(); + $this->timeFactory = $this->createMock(ITimeFactory::class); $this->discoverService->expects($this->any())->method('discover')->willReturn([]); + $this->httpClientService->expects($this->any())->method('newClient')->willReturn($this->httpClient); $this->getSharedSecret = new GetSharedSecret( - $this->httpClient, + $this->httpClientService, $this->urlGenerator, $this->jobList, $this->trustedServers, $this->logger, $this->dbHandler, - $this->discoverService + $this->discoverService, + $this->timeFactory ); } @@ -112,16 +124,17 @@ class GetSharedSecretTest extends TestCase { $getSharedSecret = $this->getMockBuilder('OCA\Federation\BackgroundJob\GetSharedSecret') ->setConstructorArgs( [ - $this->httpClient, + $this->httpClientService, $this->urlGenerator, $this->jobList, $this->trustedServers, $this->logger, $this->dbHandler, - $this->discoverService + $this->discoverService, + $this->timeFactory ] )->setMethods(['parentExecute'])->getMock(); - $this->invokePrivate($getSharedSecret, 'argument', [['url' => 'url']]); + $this->invokePrivate($getSharedSecret, 'argument', [['url' => 'url', 'token' => 'token']]); $this->trustedServers->expects($this->once())->method('isTrustedServer') ->with('url')->willReturn($isTrustedServer); @@ -131,10 +144,23 @@ class GetSharedSecretTest extends TestCase { $getSharedSecret->expects($this->never())->method('parentExecute'); } $this->invokePrivate($getSharedSecret, 'retainJob', [$retainBackgroundJob]); + $this->jobList->expects($this->once())->method('remove'); + + $this->timeFactory->method('getTime')->willReturn(42); + if ($retainBackgroundJob) { - $this->jobList->expects($this->never())->method('remove'); + $this->jobList->expects($this->once()) + ->method('add') + ->with( + GetSharedSecret::class, + [ + 'url' => 'url', + 'token' => 'token', + 'created' => 42, + ] + ); } else { - $this->jobList->expects($this->once())->method('remove'); + $this->jobList->expects($this->never())->method('add'); } $getSharedSecret->execute($this->jobList); @@ -155,13 +181,15 @@ class GetSharedSecretTest extends TestCase { * @param int $statusCode */ public function testRun($statusCode) { - $target = 'targetURL'; $source = 'sourceURL'; $token = 'token'; $argument = ['url' => $target, 'token' => $token]; + $this->timeFactory->method('getTime') + ->willReturn(42); + $this->urlGenerator->expects($this->once())->method('getAbsoluteURL')->with('/') ->willReturn($source); $this->httpClient->expects($this->once())->method('get') @@ -208,7 +236,6 @@ class GetSharedSecretTest extends TestCase { } else { $this->assertFalse($this->invokePrivate($this->getSharedSecret, 'retainJob')); } - } public function dataTestRun() { @@ -219,4 +246,33 @@ class GetSharedSecretTest extends TestCase { ]; } + public function testRunExpired() { + $target = 'targetURL'; + $source = 'sourceURL'; + $token = 'token'; + $created = 42; + + $argument = [ + 'url' => $target, + 'token' => $token, + 'created' => $created, + ]; + + $this->urlGenerator->expects($this->once()) + ->method('getAbsoluteURL') + ->with('/') + ->willReturn($source); + + $this->timeFactory->method('getTime') + ->willReturn($created + 2592000 + 1); + + $this->trustedServers->expects($this->once()) + ->method('setServerStatus') + ->with( + $target, + TrustedServers::STATUS_FAILURE + ); + + $this->invokePrivate($this->getSharedSecret, 'run', [$argument]); + } } diff --git a/apps/federation/tests/BackgroundJob/RequestSharedSecretTest.php b/apps/federation/tests/BackgroundJob/RequestSharedSecretTest.php index 06da29d17f..276180e513 100644 --- a/apps/federation/tests/BackgroundJob/RequestSharedSecretTest.php +++ b/apps/federation/tests/BackgroundJob/RequestSharedSecretTest.php @@ -29,42 +29,55 @@ use OCA\Federation\BackgroundJob\RequestSharedSecret; use OCA\Federation\DbHandler; use OCA\Federation\TrustedServers; use OCP\AppFramework\Http; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; use OCP\Http\Client\IClient; +use OCP\Http\Client\IClientService; use OCP\Http\Client\IResponse; +use OCP\ILogger; use OCP\IURLGenerator; use OCP\OCS\IDiscoveryService; use Test\TestCase; class RequestSharedSecretTest extends TestCase { - /** @var \PHPUnit_Framework_MockObject_MockObject | IClient */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IClientService */ + private $httpClientService; + + /** @var \PHPUnit_Framework_MockObject_MockObject|IClient */ private $httpClient; - /** @var \PHPUnit_Framework_MockObject_MockObject | IJobList */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IJobList */ private $jobList; - /** @var \PHPUnit_Framework_MockObject_MockObject | IURLGenerator */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IURLGenerator */ private $urlGenerator; - /** @var \PHPUnit_Framework_MockObject_MockObject | DbHandler */ + /** @var \PHPUnit_Framework_MockObject_MockObject|DbHandler */ private $dbHandler; - /** @var \PHPUnit_Framework_MockObject_MockObject | TrustedServers */ + /** @var \PHPUnit_Framework_MockObject_MockObject|TrustedServers */ private $trustedServers; - /** @var \PHPUnit_Framework_MockObject_MockObject | IResponse */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IResponse */ private $response; - /** @var \PHPUnit_Framework_MockObject_MockObject | IDiscoveryService */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IDiscoveryService */ private $discoveryService; + /** @var \PHPUnit_Framework_MockObject_MockObject|ILogger */ + private $logger; + + /** @var \PHPUnit_Framework_MockObject_MockObject|ITimeFactory */ + private $timeFactory; + /** @var RequestSharedSecret */ private $requestSharedSecret; public function setUp() { parent::setUp(); + $this->httpClientService = $this->createMock(IClientService::class); $this->httpClient = $this->getMockBuilder(IClient::class)->getMock(); $this->jobList = $this->getMockBuilder(IJobList::class)->getMock(); $this->urlGenerator = $this->getMockBuilder(IURLGenerator::class)->getMock(); @@ -74,16 +87,21 @@ class RequestSharedSecretTest extends TestCase { ->disableOriginalConstructor()->getMock(); $this->response = $this->getMockBuilder(IResponse::class)->getMock(); $this->discoveryService = $this->getMockBuilder(IDiscoveryService::class)->getMock(); + $this->logger = $this->createMock(ILogger::class); + $this->timeFactory = $this->createMock(ITimeFactory::class); $this->discoveryService->expects($this->any())->method('discover')->willReturn([]); + $this->httpClientService->expects($this->any())->method('newClient')->willReturn($this->httpClient); $this->requestSharedSecret = new RequestSharedSecret( - $this->httpClient, + $this->httpClientService, $this->urlGenerator, $this->jobList, $this->trustedServers, $this->dbHandler, - $this->discoveryService + $this->discoveryService, + $this->logger, + $this->timeFactory ); } @@ -98,15 +116,17 @@ class RequestSharedSecretTest extends TestCase { $requestSharedSecret = $this->getMockBuilder('OCA\Federation\BackgroundJob\RequestSharedSecret') ->setConstructorArgs( [ - $this->httpClient, + $this->httpClientService, $this->urlGenerator, $this->jobList, $this->trustedServers, $this->dbHandler, - $this->discoveryService + $this->discoveryService, + $this->logger, + $this->timeFactory ] )->setMethods(['parentExecute'])->getMock(); - $this->invokePrivate($requestSharedSecret, 'argument', [['url' => 'url']]); + $this->invokePrivate($requestSharedSecret, 'argument', [['url' => 'url', 'token' => 'token']]); $this->trustedServers->expects($this->once())->method('isTrustedServer') ->with('url')->willReturn($isTrustedServer); @@ -116,10 +136,23 @@ class RequestSharedSecretTest extends TestCase { $requestSharedSecret->expects($this->never())->method('parentExecute'); } $this->invokePrivate($requestSharedSecret, 'retainJob', [$retainBackgroundJob]); + $this->jobList->expects($this->once())->method('remove'); + + $this->timeFactory->method('getTime')->willReturn(42); + if ($retainBackgroundJob) { - $this->jobList->expects($this->never())->method('remove'); + $this->jobList->expects($this->once()) + ->method('add') + ->with( + RequestSharedSecret::class, + [ + 'url' => 'url', + 'token' => 'token', + 'created' => 42, + ] + ); } else { - $this->jobList->expects($this->once())->method('remove'); + $this->jobList->expects($this->never())->method('add'); } $requestSharedSecret->execute($this->jobList); @@ -147,6 +180,8 @@ class RequestSharedSecretTest extends TestCase { $argument = ['url' => $target, 'token' => $token]; + $this->timeFactory->method('getTime')->willReturn(42); + $this->urlGenerator->expects($this->once())->method('getAbsoluteURL')->with('/') ->willReturn($source); $this->httpClient->expects($this->once())->method('post') @@ -195,4 +230,34 @@ class RequestSharedSecretTest extends TestCase { [Http::STATUS_CONFLICT], ]; } + + public function testRunExpired() { + $target = 'targetURL'; + $source = 'sourceURL'; + $token = 'token'; + $created = 42; + + $argument = [ + 'url' => $target, + 'token' => $token, + 'created' => $created, + ]; + + $this->urlGenerator->expects($this->once()) + ->method('getAbsoluteURL') + ->with('/') + ->willReturn($source); + + $this->timeFactory->method('getTime') + ->willReturn($created + 2592000 + 1); + + $this->trustedServers->expects($this->once()) + ->method('setServerStatus') + ->with( + $target, + TrustedServers::STATUS_FAILURE + ); + + $this->invokePrivate($this->requestSharedSecret, 'run', [$argument]); + } } diff --git a/apps/federation/tests/Controller/OCSAuthAPIControllerTest.php b/apps/federation/tests/Controller/OCSAuthAPIControllerTest.php index 2b231b4fca..ef6c7c80bf 100644 --- a/apps/federation/tests/Controller/OCSAuthAPIControllerTest.php +++ b/apps/federation/tests/Controller/OCSAuthAPIControllerTest.php @@ -29,8 +29,8 @@ use OC\BackgroundJob\JobList; use OCA\Federation\Controller\OCSAuthAPIController; use OCA\Federation\DbHandler; use OCA\Federation\TrustedServers; -use OCP\AppFramework\Http; use OCP\AppFramework\OCS\OCSForbiddenException; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\ILogger; use OCP\IRequest; use OCP\Security\ISecureRandom; @@ -38,40 +38,45 @@ use Test\TestCase; class OCSAuthAPIControllerTest extends TestCase { - /** @var \PHPUnit_Framework_MockObject_MockObject | IRequest */ + /** @var \PHPUnit_Framework_MockObject_MockObject|IRequest */ private $request; - /** @var \PHPUnit_Framework_MockObject_MockObject | ISecureRandom */ + /** @var \PHPUnit_Framework_MockObject_MockObject|ISecureRandom */ private $secureRandom; - /** @var \PHPUnit_Framework_MockObject_MockObject | JobList */ + /** @var \PHPUnit_Framework_MockObject_MockObject|JobList */ private $jobList; - /** @var \PHPUnit_Framework_MockObject_MockObject | TrustedServers */ + /** @var \PHPUnit_Framework_MockObject_MockObject|TrustedServers */ private $trustedServers; - /** @var \PHPUnit_Framework_MockObject_MockObject | DbHandler */ + /** @var \PHPUnit_Framework_MockObject_MockObject|DbHandler */ private $dbHandler; - /** @var \PHPUnit_Framework_MockObject_MockObject | ILogger */ + /** @var \PHPUnit_Framework_MockObject_MockObject|ILogger */ private $logger; + /** @var \PHPUnit_Framework_MockObject_MockObject|ITimeFactory */ + private $timeFactory; + + /** @var OCSAuthAPIController */ private $ocsAuthApi; + /** @var int simulated timestamp */ + private $currentTime = 1234567; + public function setUp() { parent::setUp(); - $this->request = $this->getMockBuilder('OCP\IRequest')->getMock(); - $this->secureRandom = $this->getMockBuilder('OCP\Security\ISecureRandom')->getMock(); - $this->trustedServers = $this->getMockBuilder('OCA\Federation\TrustedServers') - ->disableOriginalConstructor()->getMock(); - $this->dbHandler = $this->getMockBuilder('OCA\Federation\DbHandler') - ->disableOriginalConstructor()->getMock(); - $this->jobList = $this->getMockBuilder('OC\BackgroundJob\JobList') - ->disableOriginalConstructor()->getMock(); - $this->logger = $this->getMockBuilder('OCP\ILogger') - ->disableOriginalConstructor()->getMock(); + $this->request = $this->createMock(IRequest::class); + $this->secureRandom = $this->createMock(ISecureRandom::class); + $this->trustedServers = $this->createMock(TrustedServers::class); + $this->dbHandler = $this->createMock(DbHandler::class); + $this->jobList = $this->createMock(JobList::class); + $this->logger = $this->createMock(ILogger::class); + $this->timeFactory = $this->createMock(ITimeFactory::class); + $this->ocsAuthApi = new OCSAuthAPIController( 'federation', @@ -80,9 +85,13 @@ class OCSAuthAPIControllerTest extends TestCase { $this->jobList, $this->trustedServers, $this->dbHandler, - $this->logger + $this->logger, + $this->timeFactory ); + $this->timeFactory->method('getTime') + ->willReturn($this->currentTime); + } /** @@ -105,9 +114,7 @@ class OCSAuthAPIControllerTest extends TestCase { if ($ok) { $this->jobList->expects($this->once())->method('add') - ->with('OCA\Federation\BackgroundJob\GetSharedSecret', ['url' => $url, 'token' => $token]); - $this->jobList->expects($this->once())->method('remove') - ->with('OCA\Federation\BackgroundJob\RequestSharedSecret', ['url' => $url, 'token' => $localToken]); + ->with('OCA\Federation\BackgroundJob\GetSharedSecret', ['url' => $url, 'token' => $token, 'created' => $this->currentTime]); } else { $this->jobList->expects($this->never())->method('add'); $this->jobList->expects($this->never())->method('remove'); @@ -151,7 +158,8 @@ class OCSAuthAPIControllerTest extends TestCase { $this->jobList, $this->trustedServers, $this->dbHandler, - $this->logger + $this->logger, + $this->timeFactory ] )->setMethods(['isValidToken'])->getMock(); diff --git a/apps/federation/tests/TrustedServersTest.php b/apps/federation/tests/TrustedServersTest.php index 598c2f01c9..5995c5e446 100644 --- a/apps/federation/tests/TrustedServersTest.php +++ b/apps/federation/tests/TrustedServersTest.php @@ -29,6 +29,7 @@ namespace OCA\Federation\Tests; use OCA\Federation\DbHandler; use OCA\Federation\TrustedServers; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; use OCP\Http\Client\IClient; use OCP\Http\Client\IClientService; @@ -71,6 +72,9 @@ class TrustedServersTest extends TestCase { /** @var \PHPUnit_Framework_MockObject_MockObject | EventDispatcherInterface */ private $dispatcher; + /** @var \PHPUnit_Framework_MockObject_MockObject|ITimeFactory */ + private $timeFactory; + public function setUp() { parent::setUp(); @@ -85,6 +89,7 @@ class TrustedServersTest extends TestCase { $this->jobList = $this->getMockBuilder(IJobList::class)->getMock(); $this->secureRandom = $this->getMockBuilder(ISecureRandom::class)->getMock(); $this->config = $this->getMockBuilder(IConfig::class)->getMock(); + $this->timeFactory = $this->createMock(ITimeFactory::class); $this->trustedServers = new TrustedServers( $this->dbHandler, @@ -93,7 +98,8 @@ class TrustedServersTest extends TestCase { $this->jobList, $this->secureRandom, $this->config, - $this->dispatcher + $this->dispatcher, + $this->timeFactory ); } @@ -114,13 +120,16 @@ class TrustedServersTest extends TestCase { $this->jobList, $this->secureRandom, $this->config, - $this->dispatcher + $this->dispatcher, + $this->timeFactory ] ) ->setMethods(['normalizeUrl', 'updateProtocol']) ->getMock(); $trustedServers->expects($this->once())->method('updateProtocol') ->with('url')->willReturn('https://url'); + $this->timeFactory->method('getTime') + ->willReturn(1234567); $this->dbHandler->expects($this->once())->method('addServer')->with('https://url') ->willReturn($success); @@ -130,7 +139,7 @@ class TrustedServersTest extends TestCase { $this->dbHandler->expects($this->once())->method('addToken')->with('https://url', 'token'); $this->jobList->expects($this->once())->method('add') ->with('OCA\Federation\BackgroundJob\RequestSharedSecret', - ['url' => 'https://url', 'token' => 'token']); + ['url' => 'https://url', 'token' => 'token', 'created' => 1234567]); } else { $this->jobList->expects($this->never())->method('add'); } @@ -272,7 +281,8 @@ class TrustedServersTest extends TestCase { $this->jobList, $this->secureRandom, $this->config, - $this->dispatcher + $this->dispatcher, + $this->timeFactory ] ) ->setMethods(['checkOwnCloudVersion']) diff --git a/apps/files/ajax/download.php b/apps/files/ajax/download.php index 17a7fd8b32..7c33cdec6d 100644 --- a/apps/files/ajax/download.php +++ b/apps/files/ajax/download.php @@ -51,7 +51,7 @@ if(isset($_GET['downloadStartSecret']) setcookie('ocDownloadStarted', $_GET['downloadStartSecret'], time() + 20, '/'); } -$server_params = array( 'head' => \OC::$server->getRequest()->getMethod() == 'HEAD' ); +$server_params = array( 'head' => \OC::$server->getRequest()->getMethod() === 'HEAD' ); /** * Http range requests support diff --git a/apps/files/l10n/bg.js b/apps/files/l10n/bg.js index dd98da272b..c0bab248d0 100644 --- a/apps/files/l10n/bg.js +++ b/apps/files/l10n/bg.js @@ -95,9 +95,7 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Файл беше добавен или премахнат от предпочитанията ви", "A file or folder has been changed or renamed" : "Промяна или преименуване на файл / папка", "A new file or folder has been created" : "Създаване на нов файл / папка", - "A new file or folder has been deleted" : "Нов файл или папка беше изтрит/а", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Изпращай известия само при създаване / промяна на любими файлове (Само за потока)", - "A new file or folder has been restored" : "Нов файл или папка беше възстановен/а", "Upload (max. %s)" : "Качи (макс. %s)", "File handling" : "Операция с файла", "Maximum upload size" : "Максимален размер", @@ -132,6 +130,8 @@ OC.L10N.register( "Copy local link" : "Копиране на локална връзка", "Folder" : "Папка", "Upload" : "Качване", + "A new file or folder has been deleted" : "Нов файл или папка беше изтрит/а", + "A new file or folder has been restored" : "Нов файл или папка беше възстановен/а", "No favorites" : "Няма любими" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/bg.json b/apps/files/l10n/bg.json index ad97458533..f564a86682 100644 --- a/apps/files/l10n/bg.json +++ b/apps/files/l10n/bg.json @@ -93,9 +93,7 @@ "A file has been added to or removed from your favorites" : "Файл беше добавен или премахнат от предпочитанията ви", "A file or folder has been changed or renamed" : "Промяна или преименуване на файл / папка", "A new file or folder has been created" : "Създаване на нов файл / папка", - "A new file or folder has been deleted" : "Нов файл или папка беше изтрит/а", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Изпращай известия само при създаване / промяна на любими файлове (Само за потока)", - "A new file or folder has been restored" : "Нов файл или папка беше възстановен/а", "Upload (max. %s)" : "Качи (макс. %s)", "File handling" : "Операция с файла", "Maximum upload size" : "Максимален размер", @@ -130,6 +128,8 @@ "Copy local link" : "Копиране на локална връзка", "Folder" : "Папка", "Upload" : "Качване", + "A new file or folder has been deleted" : "Нов файл или папка беше изтрит/а", + "A new file or folder has been restored" : "Нов файл или папка беше възстановен/а", "No favorites" : "Няма любими" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files/l10n/cs.js b/apps/files/l10n/cs.js index e6bbe737e7..a4aa82d0c2 100644 --- a/apps/files/l10n/cs.js +++ b/apps/files/l10n/cs.js @@ -102,9 +102,9 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Soubor byl přidán, nebo odstraněn z vašich oblíbených", "A file or folder has been changed or renamed" : "Soubor nebo adresář byl změněn nebo přejmenován", "A new file or folder has been created" : "Byl vytvořen nový soubor nebo adresář", - "A new file or folder has been deleted" : "Nový soubor nebo adresář byl smazán", + "A file or folder has been deleted" : "Soubor nebo adresář byl smazán", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Omezovat oznámení o tvorbě a změnách oblíbených souborů (Pouze v proudu)", - "A new file or folder has been restored" : "Nový soubor nebo adresář byl obnoven", + "A file or folder has been restored" : "Soubor nebo adresář byl obnoven", "Unlimited" : "Neomezeně", "Upload (max. %s)" : "Nahrát (max. %s)", "File handling" : "Zacházení se soubory", @@ -146,6 +146,8 @@ OC.L10N.register( "Copy local link" : "Kopírovat místní odkaz", "Folder" : "Adresář", "Upload" : "Odeslat", + "A new file or folder has been deleted" : "Nový soubor nebo adresář byl smazán", + "A new file or folder has been restored" : "Nový soubor nebo adresář byl obnoven", "No favorites" : "Žádné oblíbené" }, "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); diff --git a/apps/files/l10n/cs.json b/apps/files/l10n/cs.json index 58b22f78af..e49eeb474e 100644 --- a/apps/files/l10n/cs.json +++ b/apps/files/l10n/cs.json @@ -100,9 +100,9 @@ "A file has been added to or removed from your favorites" : "Soubor byl přidán, nebo odstraněn z vašich oblíbených", "A file or folder has been changed or renamed" : "Soubor nebo adresář byl změněn nebo přejmenován", "A new file or folder has been created" : "Byl vytvořen nový soubor nebo adresář", - "A new file or folder has been deleted" : "Nový soubor nebo adresář byl smazán", + "A file or folder has been deleted" : "Soubor nebo adresář byl smazán", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Omezovat oznámení o tvorbě a změnách oblíbených souborů (Pouze v proudu)", - "A new file or folder has been restored" : "Nový soubor nebo adresář byl obnoven", + "A file or folder has been restored" : "Soubor nebo adresář byl obnoven", "Unlimited" : "Neomezeně", "Upload (max. %s)" : "Nahrát (max. %s)", "File handling" : "Zacházení se soubory", @@ -144,6 +144,8 @@ "Copy local link" : "Kopírovat místní odkaz", "Folder" : "Adresář", "Upload" : "Odeslat", + "A new file or folder has been deleted" : "Nový soubor nebo adresář byl smazán", + "A new file or folder has been restored" : "Nový soubor nebo adresář byl obnoven", "No favorites" : "Žádné oblíbené" },"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" } \ No newline at end of file diff --git a/apps/files/l10n/da.js b/apps/files/l10n/da.js index 7ab696ede4..fecad3ff6e 100644 --- a/apps/files/l10n/da.js +++ b/apps/files/l10n/da.js @@ -102,9 +102,7 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "En fil er blevet tilføjet eller fjernet fra dine favoritter", "A file or folder has been changed or renamed" : "En fil eller mappe er blevet ændret eller omdøbt", "A new file or folder has been created" : "En ny fil eller mapper er blevet oprettet", - "A new file or folder has been deleted" : "En ny fil eller mappe er blevet slettet", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Begræns noter om oprettelse og ændringer af dine favorit filer (Kun streaming)", - "A new file or folder has been restored" : "En ny fil eller mappe er blevet gendannet", "Unlimited" : "Ubegrænset", "Upload (max. %s)" : "Upload (max. %s)", "File handling" : "Filhåndtering", @@ -146,6 +144,8 @@ OC.L10N.register( "Copy local link" : "Kopier lokalt link", "Folder" : "Mappe", "Upload" : "Upload", + "A new file or folder has been deleted" : "En ny fil eller mappe er blevet slettet", + "A new file or folder has been restored" : "En ny fil eller mappe er blevet gendannet", "No favorites" : "Ingen foretrukne" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/da.json b/apps/files/l10n/da.json index 5c10d48e6d..254eb6feb7 100644 --- a/apps/files/l10n/da.json +++ b/apps/files/l10n/da.json @@ -100,9 +100,7 @@ "A file has been added to or removed from your favorites" : "En fil er blevet tilføjet eller fjernet fra dine favoritter", "A file or folder has been changed or renamed" : "En fil eller mappe er blevet ændret eller omdøbt", "A new file or folder has been created" : "En ny fil eller mapper er blevet oprettet", - "A new file or folder has been deleted" : "En ny fil eller mappe er blevet slettet", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Begræns noter om oprettelse og ændringer af dine favorit filer (Kun streaming)", - "A new file or folder has been restored" : "En ny fil eller mappe er blevet gendannet", "Unlimited" : "Ubegrænset", "Upload (max. %s)" : "Upload (max. %s)", "File handling" : "Filhåndtering", @@ -144,6 +142,8 @@ "Copy local link" : "Kopier lokalt link", "Folder" : "Mappe", "Upload" : "Upload", + "A new file or folder has been deleted" : "En ny fil eller mappe er blevet slettet", + "A new file or folder has been restored" : "En ny fil eller mappe er blevet gendannet", "No favorites" : "Ingen foretrukne" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js index 5529ab1170..1dcf01fba7 100644 --- a/apps/files/l10n/de.js +++ b/apps/files/l10n/de.js @@ -102,9 +102,9 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Eine Datei wurde Deinen Favoriten hinzugefügt oder daraus entfernt", "A file or folder has been changed or renamed" : "Eine Datei oder Ordner wurde geändert oder umbenannt", "A new file or folder has been created" : "Eine neue Datei oder ein neuer Ordner wurde erstellt", - "A new file or folder has been deleted" : "Eine neue Datei oder Ordner wurde gelöscht", + "A file or folder has been deleted" : "Eine Datei oder ein Ordner wurde gelöscht", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Benachrichtigungen über Neues und Änderungen auf Deine favorisierten Dateien beschränken (nur im Stream)", - "A new file or folder has been restored" : "Neue Datei oder Ordner wurde wiederhergestellt", + "A file or folder has been restored" : "Eine Datei oder ein Ordner wurde wiederhergestellt", "Unlimited" : "Unbegrenzt", "Upload (max. %s)" : "Hochladen (max. %s)", "File handling" : "Dateibehandlung", @@ -146,6 +146,8 @@ OC.L10N.register( "Copy local link" : "Lokalen Link kopieren", "Folder" : "Ordner", "Upload" : "Hochladen", + "A new file or folder has been deleted" : "Eine neue Datei oder Ordner wurde gelöscht", + "A new file or folder has been restored" : "Neue Datei oder Ordner wurde wiederhergestellt", "No favorites" : "Keine Favoriten" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json index d1f1dc133e..494353aea1 100644 --- a/apps/files/l10n/de.json +++ b/apps/files/l10n/de.json @@ -100,9 +100,9 @@ "A file has been added to or removed from your favorites" : "Eine Datei wurde Deinen Favoriten hinzugefügt oder daraus entfernt", "A file or folder has been changed or renamed" : "Eine Datei oder Ordner wurde geändert oder umbenannt", "A new file or folder has been created" : "Eine neue Datei oder ein neuer Ordner wurde erstellt", - "A new file or folder has been deleted" : "Eine neue Datei oder Ordner wurde gelöscht", + "A file or folder has been deleted" : "Eine Datei oder ein Ordner wurde gelöscht", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Benachrichtigungen über Neues und Änderungen auf Deine favorisierten Dateien beschränken (nur im Stream)", - "A new file or folder has been restored" : "Neue Datei oder Ordner wurde wiederhergestellt", + "A file or folder has been restored" : "Eine Datei oder ein Ordner wurde wiederhergestellt", "Unlimited" : "Unbegrenzt", "Upload (max. %s)" : "Hochladen (max. %s)", "File handling" : "Dateibehandlung", @@ -144,6 +144,8 @@ "Copy local link" : "Lokalen Link kopieren", "Folder" : "Ordner", "Upload" : "Hochladen", + "A new file or folder has been deleted" : "Eine neue Datei oder Ordner wurde gelöscht", + "A new file or folder has been restored" : "Neue Datei oder Ordner wurde wiederhergestellt", "No favorites" : "Keine Favoriten" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js index 794e005d07..8185d6bc6d 100644 --- a/apps/files/l10n/de_DE.js +++ b/apps/files/l10n/de_DE.js @@ -102,9 +102,9 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Eine Datei wurde Ihren Favoriten hinzugefügt oder daraus entfernt", "A file or folder has been changed or renamed" : "Eine Datei oder Ordner wurde geändert oder umbenannt", "A new file or folder has been created" : "Eine neue Datei oder ein neuer Ordner wurde erstellt", - "A new file or folder has been deleted" : "Eine neue Datei oder Ordner wurde gelöscht", + "A file or folder has been deleted" : "Eine Datei oder ein Ordner wurde gelöscht", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Benachrichtigungen über Neues und Änderungen zu Ihren favorisierten Dateien beschränken (nur im Stream)", - "A new file or folder has been restored" : "Eine neue Datei oder Ordner wurde wiederhergestellt", + "A file or folder has been restored" : "Eine Datei oder ein Ordner wurde wiederhergestellt", "Unlimited" : "Unbegrenzt", "Upload (max. %s)" : "Hochladen (max. %s)", "File handling" : "Dateibehandlung", @@ -146,6 +146,8 @@ OC.L10N.register( "Copy local link" : "Lokalen Link kopieren", "Folder" : "Ordner", "Upload" : "Hochladen", + "A new file or folder has been deleted" : "Eine neue Datei oder Ordner wurde gelöscht", + "A new file or folder has been restored" : "Eine neue Datei oder Ordner wurde wiederhergestellt", "No favorites" : "Keine Favoriten" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json index 4e80535816..3e18b9d888 100644 --- a/apps/files/l10n/de_DE.json +++ b/apps/files/l10n/de_DE.json @@ -100,9 +100,9 @@ "A file has been added to or removed from your favorites" : "Eine Datei wurde Ihren Favoriten hinzugefügt oder daraus entfernt", "A file or folder has been changed or renamed" : "Eine Datei oder Ordner wurde geändert oder umbenannt", "A new file or folder has been created" : "Eine neue Datei oder ein neuer Ordner wurde erstellt", - "A new file or folder has been deleted" : "Eine neue Datei oder Ordner wurde gelöscht", + "A file or folder has been deleted" : "Eine Datei oder ein Ordner wurde gelöscht", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Benachrichtigungen über Neues und Änderungen zu Ihren favorisierten Dateien beschränken (nur im Stream)", - "A new file or folder has been restored" : "Eine neue Datei oder Ordner wurde wiederhergestellt", + "A file or folder has been restored" : "Eine Datei oder ein Ordner wurde wiederhergestellt", "Unlimited" : "Unbegrenzt", "Upload (max. %s)" : "Hochladen (max. %s)", "File handling" : "Dateibehandlung", @@ -144,6 +144,8 @@ "Copy local link" : "Lokalen Link kopieren", "Folder" : "Ordner", "Upload" : "Hochladen", + "A new file or folder has been deleted" : "Eine neue Datei oder Ordner wurde gelöscht", + "A new file or folder has been restored" : "Eine neue Datei oder Ordner wurde wiederhergestellt", "No favorites" : "Keine Favoriten" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files/l10n/el.js b/apps/files/l10n/el.js index 077141aceb..c405fefb9f 100644 --- a/apps/files/l10n/el.js +++ b/apps/files/l10n/el.js @@ -65,12 +65,14 @@ OC.L10N.register( "Your storage is almost full ({usedSpacePercent}%)" : "Ο αποθηκευτικός χώρος είναι σχεδόν γεμάτος ({usedSpacePercent}%)", "_matches '{filter}'_::_match '{filter}'_" : ["ταιριάζουν '{filter}' ","ταιριάζουν '{filter}'"], "View in folder" : "Προβολή στον φάκελο", + "Copied!" : "Αντιγράφηκε!", "Copy direct link (only works for users who have access to this file/folder)" : "Αντιγραφή άμεσου συνδέσμου (λειτουργεί μόνο για χρήστες που έχουν πρόσβαση στο αρχείο/φάκελο)", "Path" : "Διαδρομή", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Προτιμώμενα", "Favorite" : "Αγαπημένο", "New folder" : "Νέος φάκελος", + "Upload file" : "Αποστολή αρχείου", "An error occurred while trying to update the tags" : "Ένα σφάλμα προέκυψε κατά τη διάρκεια ενημέρωσης των ετικετών", "Added to favorites" : "Προσθήκη στα αγαπημένα", "Removed from favorites" : "Αφαίρεση από τα αγαπημένα", @@ -83,6 +85,7 @@ OC.L10N.register( "Restored by {user}" : "Επαναφέρθηκε από {user}", "Renamed by {user}" : "Μετονομάστηκε από {user}", "Moved by {user}" : "Μετακινήθηκε από {user}", + "\"remote user\"" : "\"απομακρυσμένος χρήστης\"", "You created {file}" : "Δημιουργήσατε {file}", "{user} created {file}" : "{user} δημηούργησε {file}", "{file} was created in a public folder" : "{file} δημιουργήθηκε σε δημόσιο φάκελο", @@ -99,9 +102,10 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Ένα αρχείο έχει προστεθεί ή αφαιρεθεί από τα αγαπημένα σας", "A file or folder has been changed or renamed" : "Ένα αρχείο ή φάκελος έχει αλλάξει ή μετονομάστηκε", "A new file or folder has been created" : "Ένα νέο αρχείο ή κατάλογος έχουν δημιουργηθεί", - "A new file or folder has been deleted" : "Ένα νέο αρχείο ή φάκελος έχει διαγραφεί", + "A file or folder has been deleted" : "Ένα αρχείο ή κατάλογος έχουν διαγραφεί", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Βάλτε όριο στις ειδοποιήσεις για τη δημιουργία και αλλαγές στα αγαπημένα σας αρχεία (Μόνο Stream)", - "A new file or folder has been restored" : "Ένα νέο αρχείο ή φάκελος έχει επαναφερθεί", + "A file or folder has been restored" : "Έγινε επαναφορά ενός αρχείου ή φακέλου", + "Unlimited" : "Απεριόριστο", "Upload (max. %s)" : "Διαμοιρασμός (max. %s)", "File handling" : "Διαχείριση αρχείων", "Maximum upload size" : "Μέγιστο μέγεθος αποστολής", @@ -109,6 +113,8 @@ OC.L10N.register( "Save" : "Αποθήκευση", "With PHP-FPM it might take 5 minutes for changes to be applied." : "Με PHP-FPM μπορεί να χρειαστούν μέχρι και 5 λεπτά για να ενεργοποιηθούν οι αλλαγές.", "Missing permissions to edit from here." : "Δεν υπάρχουν τα απαραίτητα δικαιώματα για να γίνει τροποποιήση σε αυτό το σημείο.", + "%s of %s used" : "%s από %s σε χρήση", + "%s used" : "%sσε χρήση", "Settings" : "Ρυθμίσεις", "Show hidden files" : "Εμφάνιση κρυφών αρχείων", "WebDAV" : "WebDAV", @@ -140,6 +146,8 @@ OC.L10N.register( "Copy local link" : "Αντιγραφή τοπικού συνδέσμου", "Folder" : "Φάκελος", "Upload" : "Μεταφόρτωση", + "A new file or folder has been deleted" : "Ένα νέο αρχείο ή φάκελος έχει διαγραφεί", + "A new file or folder has been restored" : "Ένα νέο αρχείο ή φάκελος έχει επαναφερθεί", "No favorites" : "Δεν υπάρχουν αγαπημένα" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/el.json b/apps/files/l10n/el.json index e6246af412..40b3a86a7c 100644 --- a/apps/files/l10n/el.json +++ b/apps/files/l10n/el.json @@ -63,12 +63,14 @@ "Your storage is almost full ({usedSpacePercent}%)" : "Ο αποθηκευτικός χώρος είναι σχεδόν γεμάτος ({usedSpacePercent}%)", "_matches '{filter}'_::_match '{filter}'_" : ["ταιριάζουν '{filter}' ","ταιριάζουν '{filter}'"], "View in folder" : "Προβολή στον φάκελο", + "Copied!" : "Αντιγράφηκε!", "Copy direct link (only works for users who have access to this file/folder)" : "Αντιγραφή άμεσου συνδέσμου (λειτουργεί μόνο για χρήστες που έχουν πρόσβαση στο αρχείο/φάκελο)", "Path" : "Διαδρομή", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Προτιμώμενα", "Favorite" : "Αγαπημένο", "New folder" : "Νέος φάκελος", + "Upload file" : "Αποστολή αρχείου", "An error occurred while trying to update the tags" : "Ένα σφάλμα προέκυψε κατά τη διάρκεια ενημέρωσης των ετικετών", "Added to favorites" : "Προσθήκη στα αγαπημένα", "Removed from favorites" : "Αφαίρεση από τα αγαπημένα", @@ -81,6 +83,7 @@ "Restored by {user}" : "Επαναφέρθηκε από {user}", "Renamed by {user}" : "Μετονομάστηκε από {user}", "Moved by {user}" : "Μετακινήθηκε από {user}", + "\"remote user\"" : "\"απομακρυσμένος χρήστης\"", "You created {file}" : "Δημιουργήσατε {file}", "{user} created {file}" : "{user} δημηούργησε {file}", "{file} was created in a public folder" : "{file} δημιουργήθηκε σε δημόσιο φάκελο", @@ -97,9 +100,10 @@ "A file has been added to or removed from your favorites" : "Ένα αρχείο έχει προστεθεί ή αφαιρεθεί από τα αγαπημένα σας", "A file or folder has been changed or renamed" : "Ένα αρχείο ή φάκελος έχει αλλάξει ή μετονομάστηκε", "A new file or folder has been created" : "Ένα νέο αρχείο ή κατάλογος έχουν δημιουργηθεί", - "A new file or folder has been deleted" : "Ένα νέο αρχείο ή φάκελος έχει διαγραφεί", + "A file or folder has been deleted" : "Ένα αρχείο ή κατάλογος έχουν διαγραφεί", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Βάλτε όριο στις ειδοποιήσεις για τη δημιουργία και αλλαγές στα αγαπημένα σας αρχεία (Μόνο Stream)", - "A new file or folder has been restored" : "Ένα νέο αρχείο ή φάκελος έχει επαναφερθεί", + "A file or folder has been restored" : "Έγινε επαναφορά ενός αρχείου ή φακέλου", + "Unlimited" : "Απεριόριστο", "Upload (max. %s)" : "Διαμοιρασμός (max. %s)", "File handling" : "Διαχείριση αρχείων", "Maximum upload size" : "Μέγιστο μέγεθος αποστολής", @@ -107,6 +111,8 @@ "Save" : "Αποθήκευση", "With PHP-FPM it might take 5 minutes for changes to be applied." : "Με PHP-FPM μπορεί να χρειαστούν μέχρι και 5 λεπτά για να ενεργοποιηθούν οι αλλαγές.", "Missing permissions to edit from here." : "Δεν υπάρχουν τα απαραίτητα δικαιώματα για να γίνει τροποποιήση σε αυτό το σημείο.", + "%s of %s used" : "%s από %s σε χρήση", + "%s used" : "%sσε χρήση", "Settings" : "Ρυθμίσεις", "Show hidden files" : "Εμφάνιση κρυφών αρχείων", "WebDAV" : "WebDAV", @@ -138,6 +144,8 @@ "Copy local link" : "Αντιγραφή τοπικού συνδέσμου", "Folder" : "Φάκελος", "Upload" : "Μεταφόρτωση", + "A new file or folder has been deleted" : "Ένα νέο αρχείο ή φάκελος έχει διαγραφεί", + "A new file or folder has been restored" : "Ένα νέο αρχείο ή φάκελος έχει επαναφερθεί", "No favorites" : "Δεν υπάρχουν αγαπημένα" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files/l10n/en_GB.js b/apps/files/l10n/en_GB.js index 2360d9ba6b..3434865138 100644 --- a/apps/files/l10n/en_GB.js +++ b/apps/files/l10n/en_GB.js @@ -102,9 +102,9 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "A file has been added to or removed from your favourites", "A file or folder has been changed or renamed" : "A file or folder has been changed or renamed", "A new file or folder has been created" : "A new file or folder has been created", - "A new file or folder has been deleted" : "A new file or folder has been deleted", + "A file or folder has been deleted" : "A file or folder has been deleted", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limit notifications about creation and changes to your favourite files (Stream only)", - "A new file or folder has been restored" : "A new file or folder has been restored", + "A file or folder has been restored" : "A file or folder has been restored", "Unlimited" : "Unlimited", "Upload (max. %s)" : "Upload (max. %s)", "File handling" : "File handling", @@ -146,6 +146,8 @@ OC.L10N.register( "Copy local link" : "Copy local link", "Folder" : "Folder", "Upload" : "Upload", + "A new file or folder has been deleted" : "A new file or folder has been deleted", + "A new file or folder has been restored" : "A new file or folder has been restored", "No favorites" : "No favourites" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/en_GB.json b/apps/files/l10n/en_GB.json index f8cf6819fc..517a08135d 100644 --- a/apps/files/l10n/en_GB.json +++ b/apps/files/l10n/en_GB.json @@ -100,9 +100,9 @@ "A file has been added to or removed from your favorites" : "A file has been added to or removed from your favourites", "A file or folder has been changed or renamed" : "A file or folder has been changed or renamed", "A new file or folder has been created" : "A new file or folder has been created", - "A new file or folder has been deleted" : "A new file or folder has been deleted", + "A file or folder has been deleted" : "A file or folder has been deleted", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limit notifications about creation and changes to your favourite files (Stream only)", - "A new file or folder has been restored" : "A new file or folder has been restored", + "A file or folder has been restored" : "A file or folder has been restored", "Unlimited" : "Unlimited", "Upload (max. %s)" : "Upload (max. %s)", "File handling" : "File handling", @@ -144,6 +144,8 @@ "Copy local link" : "Copy local link", "Folder" : "Folder", "Upload" : "Upload", + "A new file or folder has been deleted" : "A new file or folder has been deleted", + "A new file or folder has been restored" : "A new file or folder has been restored", "No favorites" : "No favourites" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js index 817f003d48..48362ef9e6 100644 --- a/apps/files/l10n/es.js +++ b/apps/files/l10n/es.js @@ -53,7 +53,7 @@ OC.L10N.register( "_%n file_::_%n files_" : ["%n archivo","%n archivos"], "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos"], - "You don’t have permission to upload or create files here" : "No tiene permisos para subir o crear archivos aquí.", + "You don’t have permission to upload or create files here" : "No tiene permisos para subir o crear archivos aquí", "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Subiendo %n archivos"], "New" : "Nuevo", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido.", @@ -69,7 +69,7 @@ OC.L10N.register( "Copy direct link (only works for users who have access to this file/folder)" : "Copiae enlace directo (solo funciona para usuarios que tienen acceso a este archivo/carpeta)", "Path" : "Ruta", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], - "Favorited" : "Agregado a Favoritos", + "Favorited" : "Agregado a favoritos", "Favorite" : "Favorito", "New folder" : "Nueva carpeta", "Upload file" : "Subir archivo", @@ -100,11 +100,11 @@ OC.L10N.register( "You moved {oldfile} to {newfile}" : "Ha movido {oldfile } a {newfile}", "{user} moved {oldfile} to {newfile}" : "{user} movió {oldfile} a {newfile}", "A file has been added to or removed from your favorites" : "Un archivo fue agregado o borrado de tus favoritos", - "A file or folder has been changed or renamed" : "Un archivo o carpeta ha sido cambiado o renombrado.", + "A file or folder has been changed or renamed" : "Un archivo o carpeta ha sido cambiado o renombrado", "A new file or folder has been created" : "Se ha creado un nuevo archivo o carpeta", - "A new file or folder has been deleted" : "Un nuevo archivo o carpeta ha sido eliminado.", - "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limitar las notificaiones acerca de la creación y cambios de sus archivos favoritos(Stream only)", - "A new file or folder has been restored" : "Un nuevo archivo o carpeta ha sido restaurado.", + "A file or folder has been deleted" : "Un archivo o carpeta ha sido eliminado", + "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limitar las notificaciones acerca de la creación y cambios de sus archivos favoritos (solo flujos)", + "A file or folder has been restored" : "Un archivo o carpeta ha sido restaurado", "Unlimited" : "Ilimitado", "Upload (max. %s)" : "Subida (máx. %s)", "File handling" : "Administración de archivos", @@ -118,9 +118,9 @@ OC.L10N.register( "Settings" : "Ajustes", "Show hidden files" : "Mostrar archivos ocultos", "WebDAV" : "WebDAV", - "Use this address to access your Files via WebDAV" : "Introduce esta dirección en el cliente de ownCloud para acceder a tus archivos a través de él", + "Use this address to access your Files via WebDAV" : "Usa esta dirección para acceder tus archivos mediante WebDAV", "No files in here" : "Aquí no hay archivos", - "Upload some content or sync with your devices!" : "Suba contenidos o sincronice sus dispositivos.", + "Upload some content or sync with your devices!" : "¡Suba contenidos o sincronice sus dispositivos!", "No entries found in this folder" : "No hay entradas en esta carpeta", "Select all" : "Seleccionar todo", "Upload too large" : "Subida demasido grande", @@ -146,6 +146,8 @@ OC.L10N.register( "Copy local link" : "Copiar enlace local", "Folder" : "Carpeta", "Upload" : "Subir", + "A new file or folder has been deleted" : "Un nuevo archivo o carpeta ha sido eliminado", + "A new file or folder has been restored" : "Un nuevo archivo o carpeta ha sido restaurado", "No favorites" : "No hay favoritos" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json index b6099d0328..7cc7cd8111 100644 --- a/apps/files/l10n/es.json +++ b/apps/files/l10n/es.json @@ -51,7 +51,7 @@ "_%n file_::_%n files_" : ["%n archivo","%n archivos"], "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos"], - "You don’t have permission to upload or create files here" : "No tiene permisos para subir o crear archivos aquí.", + "You don’t have permission to upload or create files here" : "No tiene permisos para subir o crear archivos aquí", "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Subiendo %n archivos"], "New" : "Nuevo", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido.", @@ -67,7 +67,7 @@ "Copy direct link (only works for users who have access to this file/folder)" : "Copiae enlace directo (solo funciona para usuarios que tienen acceso a este archivo/carpeta)", "Path" : "Ruta", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], - "Favorited" : "Agregado a Favoritos", + "Favorited" : "Agregado a favoritos", "Favorite" : "Favorito", "New folder" : "Nueva carpeta", "Upload file" : "Subir archivo", @@ -98,11 +98,11 @@ "You moved {oldfile} to {newfile}" : "Ha movido {oldfile } a {newfile}", "{user} moved {oldfile} to {newfile}" : "{user} movió {oldfile} a {newfile}", "A file has been added to or removed from your favorites" : "Un archivo fue agregado o borrado de tus favoritos", - "A file or folder has been changed or renamed" : "Un archivo o carpeta ha sido cambiado o renombrado.", + "A file or folder has been changed or renamed" : "Un archivo o carpeta ha sido cambiado o renombrado", "A new file or folder has been created" : "Se ha creado un nuevo archivo o carpeta", - "A new file or folder has been deleted" : "Un nuevo archivo o carpeta ha sido eliminado.", - "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limitar las notificaiones acerca de la creación y cambios de sus archivos favoritos(Stream only)", - "A new file or folder has been restored" : "Un nuevo archivo o carpeta ha sido restaurado.", + "A file or folder has been deleted" : "Un archivo o carpeta ha sido eliminado", + "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limitar las notificaciones acerca de la creación y cambios de sus archivos favoritos (solo flujos)", + "A file or folder has been restored" : "Un archivo o carpeta ha sido restaurado", "Unlimited" : "Ilimitado", "Upload (max. %s)" : "Subida (máx. %s)", "File handling" : "Administración de archivos", @@ -116,9 +116,9 @@ "Settings" : "Ajustes", "Show hidden files" : "Mostrar archivos ocultos", "WebDAV" : "WebDAV", - "Use this address to access your Files via WebDAV" : "Introduce esta dirección en el cliente de ownCloud para acceder a tus archivos a través de él", + "Use this address to access your Files via WebDAV" : "Usa esta dirección para acceder tus archivos mediante WebDAV", "No files in here" : "Aquí no hay archivos", - "Upload some content or sync with your devices!" : "Suba contenidos o sincronice sus dispositivos.", + "Upload some content or sync with your devices!" : "¡Suba contenidos o sincronice sus dispositivos!", "No entries found in this folder" : "No hay entradas en esta carpeta", "Select all" : "Seleccionar todo", "Upload too large" : "Subida demasido grande", @@ -144,6 +144,8 @@ "Copy local link" : "Copiar enlace local", "Folder" : "Carpeta", "Upload" : "Subir", + "A new file or folder has been deleted" : "Un nuevo archivo o carpeta ha sido eliminado", + "A new file or folder has been restored" : "Un nuevo archivo o carpeta ha sido restaurado", "No favorites" : "No hay favoritos" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files/l10n/es_AR.js b/apps/files/l10n/es_AR.js index 4ddc48ad1c..6f80543cee 100644 --- a/apps/files/l10n/es_AR.js +++ b/apps/files/l10n/es_AR.js @@ -102,9 +102,7 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Un archivo ha sido agregado o eliminado de sus strong>favoritos", "A file or folder has been changed or renamed" : "Un archivo o carpeta ha sido cambiado o renombrado", "A new file or folder has been created" : "Un nuevo archivo ha sido creado", - "A new file or folder has been deleted" : "Un nuevo archivo ha sido borrado", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limite las notificación de la creación y cambios a sus archivos favoritos (sólo flujo)", - "A new file or folder has been restored" : "Un nuevo archivo ha sido restaurado", "Unlimited" : "Ilimitado", "Upload (max. %s)" : "Cargar (max. %s)", "File handling" : "Administración de archivos", @@ -146,6 +144,8 @@ OC.L10N.register( "Copy local link" : "Copiar link local", "Folder" : "Carpeta", "Upload" : "Cargar", + "A new file or folder has been deleted" : "Un nuevo archivo ha sido borrado", + "A new file or folder has been restored" : "Un nuevo archivo ha sido restaurado", "No favorites" : "No hay favoritos" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/es_AR.json b/apps/files/l10n/es_AR.json index bc688a2899..80cad92731 100644 --- a/apps/files/l10n/es_AR.json +++ b/apps/files/l10n/es_AR.json @@ -100,9 +100,7 @@ "A file has been added to or removed from your favorites" : "Un archivo ha sido agregado o eliminado de sus strong>favoritos", "A file or folder has been changed or renamed" : "Un archivo o carpeta ha sido cambiado o renombrado", "A new file or folder has been created" : "Un nuevo archivo ha sido creado", - "A new file or folder has been deleted" : "Un nuevo archivo ha sido borrado", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limite las notificación de la creación y cambios a sus archivos favoritos (sólo flujo)", - "A new file or folder has been restored" : "Un nuevo archivo ha sido restaurado", "Unlimited" : "Ilimitado", "Upload (max. %s)" : "Cargar (max. %s)", "File handling" : "Administración de archivos", @@ -144,6 +142,8 @@ "Copy local link" : "Copiar link local", "Folder" : "Carpeta", "Upload" : "Cargar", + "A new file or folder has been deleted" : "Un nuevo archivo ha sido borrado", + "A new file or folder has been restored" : "Un nuevo archivo ha sido restaurado", "No favorites" : "No hay favoritos" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files/l10n/es_MX.js b/apps/files/l10n/es_MX.js index 249dbb79e4..9c03d86c15 100644 --- a/apps/files/l10n/es_MX.js +++ b/apps/files/l10n/es_MX.js @@ -101,10 +101,10 @@ OC.L10N.register( "{user} moved {oldfile} to {newfile}" : "{user} movió {oldfile} a {newfile}", "A file has been added to or removed from your favorites" : "Un archivo ha sido agregado o eliminado de tus favoritos", "A file or folder has been changed or renamed" : "Un archivo o carpeta ha sido cambiado o renombrado", - "A new file or folder has been created" : "Un nuevo archivo ha sido creado", - "A new file or folder has been deleted" : "Un nuevo archivo ha sido borrado", + "A new file or folder has been created" : "Un archivo o carpeta ha sido creado", + "A file or folder has been deleted" : "Un archivo o carpeta ha sido borrado", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limita las notificaciones de la creación y cambios a tus archivos favoritos (sólo flujo)", - "A new file or folder has been restored" : "Un nuevo archivo ha sido restaurado", + "A file or folder has been restored" : "Un archivo o carpeta ha sido restaurado", "Unlimited" : "Ilimitado", "Upload (max. %s)" : "Cargar (max. %s)", "File handling" : "Manejo de archivos", @@ -146,6 +146,8 @@ OC.L10N.register( "Copy local link" : "Copiar liga local", "Folder" : "Carpeta", "Upload" : "Cargar", + "A new file or folder has been deleted" : "Un archivo o carpeta ha sido borrado", + "A new file or folder has been restored" : "Un archivo o carpeta ha sido restaurado", "No favorites" : "No hay favoritos" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/es_MX.json b/apps/files/l10n/es_MX.json index b74dc2f794..3beb4cc10b 100644 --- a/apps/files/l10n/es_MX.json +++ b/apps/files/l10n/es_MX.json @@ -99,10 +99,10 @@ "{user} moved {oldfile} to {newfile}" : "{user} movió {oldfile} a {newfile}", "A file has been added to or removed from your favorites" : "Un archivo ha sido agregado o eliminado de tus favoritos", "A file or folder has been changed or renamed" : "Un archivo o carpeta ha sido cambiado o renombrado", - "A new file or folder has been created" : "Un nuevo archivo ha sido creado", - "A new file or folder has been deleted" : "Un nuevo archivo ha sido borrado", + "A new file or folder has been created" : "Un archivo o carpeta ha sido creado", + "A file or folder has been deleted" : "Un archivo o carpeta ha sido borrado", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limita las notificaciones de la creación y cambios a tus archivos favoritos (sólo flujo)", - "A new file or folder has been restored" : "Un nuevo archivo ha sido restaurado", + "A file or folder has been restored" : "Un archivo o carpeta ha sido restaurado", "Unlimited" : "Ilimitado", "Upload (max. %s)" : "Cargar (max. %s)", "File handling" : "Manejo de archivos", @@ -144,6 +144,8 @@ "Copy local link" : "Copiar liga local", "Folder" : "Carpeta", "Upload" : "Cargar", + "A new file or folder has been deleted" : "Un archivo o carpeta ha sido borrado", + "A new file or folder has been restored" : "Un archivo o carpeta ha sido restaurado", "No favorites" : "No hay favoritos" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files/l10n/eu.js b/apps/files/l10n/eu.js index 677fb30951..3ee5022819 100644 --- a/apps/files/l10n/eu.js +++ b/apps/files/l10n/eu.js @@ -101,9 +101,8 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Fitxategi bat gehitu edo kendu da zure gogokoetatik", "A file or folder has been changed or renamed" : "A file or folder has been changed or renamed", "A new file or folder has been created" : "Fitxategi edo karpeta berri bat sortu da", - "A new file or folder has been deleted" : "A new file or folder has been deleted", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limit notifications about creation and changes to your favorite files (Stream only)", - "A new file or folder has been restored" : "A new file or folder has been restored", + "Unlimited" : "Mugarik gabe", "Upload (max. %s)" : "Igo (max. %s)", "File handling" : "Fitxategien kudeaketa", "Maximum upload size" : "Igo daitekeen gehienezko tamaina", @@ -142,6 +141,8 @@ OC.L10N.register( "Copy local link" : "Kopiatu tokiko esteka", "Folder" : "Karpeta", "Upload" : "Igo", + "A new file or folder has been deleted" : "A new file or folder has been deleted", + "A new file or folder has been restored" : "A new file or folder has been restored", "No favorites" : "Gogokorik ez" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/eu.json b/apps/files/l10n/eu.json index 115b1126d9..9bc05236e1 100644 --- a/apps/files/l10n/eu.json +++ b/apps/files/l10n/eu.json @@ -99,9 +99,8 @@ "A file has been added to or removed from your favorites" : "Fitxategi bat gehitu edo kendu da zure gogokoetatik", "A file or folder has been changed or renamed" : "A file or folder has been changed or renamed", "A new file or folder has been created" : "Fitxategi edo karpeta berri bat sortu da", - "A new file or folder has been deleted" : "A new file or folder has been deleted", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limit notifications about creation and changes to your favorite files (Stream only)", - "A new file or folder has been restored" : "A new file or folder has been restored", + "Unlimited" : "Mugarik gabe", "Upload (max. %s)" : "Igo (max. %s)", "File handling" : "Fitxategien kudeaketa", "Maximum upload size" : "Igo daitekeen gehienezko tamaina", @@ -140,6 +139,8 @@ "Copy local link" : "Kopiatu tokiko esteka", "Folder" : "Karpeta", "Upload" : "Igo", + "A new file or folder has been deleted" : "A new file or folder has been deleted", + "A new file or folder has been restored" : "A new file or folder has been restored", "No favorites" : "Gogokorik ez" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files/l10n/fi.js b/apps/files/l10n/fi.js index 3a464330d1..8071de0df9 100644 --- a/apps/files/l10n/fi.js +++ b/apps/files/l10n/fi.js @@ -102,9 +102,7 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Tiedosto on lisätty tai poistettu suosikeista", "A file or folder has been changed or renamed" : "Tiedostoa tai kansiota on muutettu tai se on uudelleennimetty", "A new file or folder has been created" : "Uusi tiedosto tai kansio on luotu", - "A new file or folder has been deleted" : "Uusi tiedosto tai kansio on poistettu", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Rajoita luomis- ja muutosilmoitukset omiin suosikkitiedostoihin (Vain listaus)", - "A new file or folder has been restored" : "Uusi tiedosto tai kansio on palautettu", "Unlimited" : "Rajoittamaton", "Upload (max. %s)" : "Lähetys (enintään %s)", "File handling" : "Tiedostonhallinta", @@ -145,6 +143,8 @@ OC.L10N.register( "Copy local link" : "Kopioi paikallinen linkki", "Folder" : "Kansio", "Upload" : "Lähetä", + "A new file or folder has been deleted" : "Uusi tiedosto tai kansio on poistettu", + "A new file or folder has been restored" : "Uusi tiedosto tai kansio on palautettu", "No favorites" : "Ei suosikkeja" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/fi.json b/apps/files/l10n/fi.json index e899cfb26e..e7cf084184 100644 --- a/apps/files/l10n/fi.json +++ b/apps/files/l10n/fi.json @@ -100,9 +100,7 @@ "A file has been added to or removed from your favorites" : "Tiedosto on lisätty tai poistettu suosikeista", "A file or folder has been changed or renamed" : "Tiedostoa tai kansiota on muutettu tai se on uudelleennimetty", "A new file or folder has been created" : "Uusi tiedosto tai kansio on luotu", - "A new file or folder has been deleted" : "Uusi tiedosto tai kansio on poistettu", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Rajoita luomis- ja muutosilmoitukset omiin suosikkitiedostoihin (Vain listaus)", - "A new file or folder has been restored" : "Uusi tiedosto tai kansio on palautettu", "Unlimited" : "Rajoittamaton", "Upload (max. %s)" : "Lähetys (enintään %s)", "File handling" : "Tiedostonhallinta", @@ -143,6 +141,8 @@ "Copy local link" : "Kopioi paikallinen linkki", "Folder" : "Kansio", "Upload" : "Lähetä", + "A new file or folder has been deleted" : "Uusi tiedosto tai kansio on poistettu", + "A new file or folder has been restored" : "Uusi tiedosto tai kansio on palautettu", "No favorites" : "Ei suosikkeja" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js index ec0b108359..8237ec4e8a 100644 --- a/apps/files/l10n/fr.js +++ b/apps/files/l10n/fr.js @@ -102,9 +102,9 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Un fichier a été ajouté ou retiré de vos favoris", "A file or folder has been changed or renamed" : "Un fichier ou dossier a été modifié ou renommé", "A new file or folder has been created" : "Un nouveau fichier ou répertoire a été créé", - "A new file or folder has been deleted" : "Un nouveau fichier ou répertoire a été supprimé", + "A file or folder has been deleted" : "Un fichier ou un répertoire a été supprimé", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limiter les notifications à ce qui concerne la création et la modification de vos fichiers favoris (Flux uniquement)", - "A new file or folder has been restored" : "Un nouveau fichier ou répertoire a été restauré", + "A file or folder has been restored" : "Un fichier ou un répertoire a été restauré", "Unlimited" : "Illimité", "Upload (max. %s)" : "Envoi (max. %s)", "File handling" : "Gestion de fichiers", @@ -146,6 +146,8 @@ OC.L10N.register( "Copy local link" : "Copier le dossier local", "Folder" : "Dossier", "Upload" : "Téléverser", + "A new file or folder has been deleted" : "Un nouveau fichier ou répertoire a été supprimé", + "A new file or folder has been restored" : "Un nouveau fichier ou répertoire a été restauré", "No favorites" : "Aucun favori" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json index d6914fd8bf..996b742b61 100644 --- a/apps/files/l10n/fr.json +++ b/apps/files/l10n/fr.json @@ -100,9 +100,9 @@ "A file has been added to or removed from your favorites" : "Un fichier a été ajouté ou retiré de vos favoris", "A file or folder has been changed or renamed" : "Un fichier ou dossier a été modifié ou renommé", "A new file or folder has been created" : "Un nouveau fichier ou répertoire a été créé", - "A new file or folder has been deleted" : "Un nouveau fichier ou répertoire a été supprimé", + "A file or folder has been deleted" : "Un fichier ou un répertoire a été supprimé", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limiter les notifications à ce qui concerne la création et la modification de vos fichiers favoris (Flux uniquement)", - "A new file or folder has been restored" : "Un nouveau fichier ou répertoire a été restauré", + "A file or folder has been restored" : "Un fichier ou un répertoire a été restauré", "Unlimited" : "Illimité", "Upload (max. %s)" : "Envoi (max. %s)", "File handling" : "Gestion de fichiers", @@ -144,6 +144,8 @@ "Copy local link" : "Copier le dossier local", "Folder" : "Dossier", "Upload" : "Téléverser", + "A new file or folder has been deleted" : "Un nouveau fichier ou répertoire a été supprimé", + "A new file or folder has been restored" : "Un nouveau fichier ou répertoire a été restauré", "No favorites" : "Aucun favori" },"pluralForm" :"nplurals=2; plural=(n > 1);" } \ No newline at end of file diff --git a/apps/files/l10n/hu.js b/apps/files/l10n/hu.js index 36f50e7f54..72c37b9ce7 100644 --- a/apps/files/l10n/hu.js +++ b/apps/files/l10n/hu.js @@ -102,9 +102,7 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Egy fájl eltávolítva vagy hozzáadva a kedvenceidhez", "A file or folder has been changed or renamed" : "A fájl vagy mappa megváltozott vagy át lett nevezve", "A new file or folder has been created" : "Új fájl vagy mappa létrehozva", - "A new file or folder has been deleted" : "Egy új fájl vagy mappa törölve", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Szűkítse le az értesítéseket a létrehozásról és a változásokról a kedvenc fájlok (Stream only) -ra", - "A new file or folder has been restored" : "Egy új fájl vagy mappa visszaállítva", "Unlimited" : "Korlátlan", "Upload (max. %s)" : "Feltöltés (max.: %s)", "File handling" : "Fájlkezelés", @@ -146,6 +144,8 @@ OC.L10N.register( "Copy local link" : "Helyi hivatkozás másolása", "Folder" : "Mappa", "Upload" : "Feltöltés", + "A new file or folder has been deleted" : "Egy új fájl vagy mappa törölve", + "A new file or folder has been restored" : "Egy új fájl vagy mappa visszaállítva", "No favorites" : "Nincsenek kedvencek" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/hu.json b/apps/files/l10n/hu.json index 2bef163a12..9a32555d39 100644 --- a/apps/files/l10n/hu.json +++ b/apps/files/l10n/hu.json @@ -100,9 +100,7 @@ "A file has been added to or removed from your favorites" : "Egy fájl eltávolítva vagy hozzáadva a kedvenceidhez", "A file or folder has been changed or renamed" : "A fájl vagy mappa megváltozott vagy át lett nevezve", "A new file or folder has been created" : "Új fájl vagy mappa létrehozva", - "A new file or folder has been deleted" : "Egy új fájl vagy mappa törölve", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Szűkítse le az értesítéseket a létrehozásról és a változásokról a kedvenc fájlok (Stream only) -ra", - "A new file or folder has been restored" : "Egy új fájl vagy mappa visszaállítva", "Unlimited" : "Korlátlan", "Upload (max. %s)" : "Feltöltés (max.: %s)", "File handling" : "Fájlkezelés", @@ -144,6 +142,8 @@ "Copy local link" : "Helyi hivatkozás másolása", "Folder" : "Mappa", "Upload" : "Feltöltés", + "A new file or folder has been deleted" : "Egy új fájl vagy mappa törölve", + "A new file or folder has been restored" : "Egy új fájl vagy mappa visszaállítva", "No favorites" : "Nincsenek kedvencek" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files/l10n/ia.js b/apps/files/l10n/ia.js index b73afd543d..482c47852b 100644 --- a/apps/files/l10n/ia.js +++ b/apps/files/l10n/ia.js @@ -98,9 +98,7 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Un file esseva addite a o removite de tu favoritos", "A file or folder has been changed or renamed" : "Un nove file o dossier ha essite delite o renominate", "A new file or folder has been created" : "Un nove file o dossier ha essite create", - "A new file or folder has been deleted" : "Un nove file o dossier ha essite delite", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limitar notificationes concernente le creation e le modification de tu files favorite (Solmente fluxo)", - "A new file or folder has been restored" : "Un nove file o un dossier ha essite restabilite", "Upload (max. %s)" : "Incarga (maxime %s)", "File handling" : "Gestion de file", "Maximum upload size" : "Maxime dimension de incarga", @@ -138,6 +136,8 @@ OC.L10N.register( "Copy local link" : "Copiar ligamine local", "Folder" : "Dossier", "Upload" : "Incargar", + "A new file or folder has been deleted" : "Un nove file o dossier ha essite delite", + "A new file or folder has been restored" : "Un nove file o un dossier ha essite restabilite", "No favorites" : "Nulle favoritos" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/ia.json b/apps/files/l10n/ia.json index 468996a079..c6321a0b45 100644 --- a/apps/files/l10n/ia.json +++ b/apps/files/l10n/ia.json @@ -96,9 +96,7 @@ "A file has been added to or removed from your favorites" : "Un file esseva addite a o removite de tu favoritos", "A file or folder has been changed or renamed" : "Un nove file o dossier ha essite delite o renominate", "A new file or folder has been created" : "Un nove file o dossier ha essite create", - "A new file or folder has been deleted" : "Un nove file o dossier ha essite delite", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limitar notificationes concernente le creation e le modification de tu files favorite (Solmente fluxo)", - "A new file or folder has been restored" : "Un nove file o un dossier ha essite restabilite", "Upload (max. %s)" : "Incarga (maxime %s)", "File handling" : "Gestion de file", "Maximum upload size" : "Maxime dimension de incarga", @@ -136,6 +134,8 @@ "Copy local link" : "Copiar ligamine local", "Folder" : "Dossier", "Upload" : "Incargar", + "A new file or folder has been deleted" : "Un nove file o dossier ha essite delite", + "A new file or folder has been restored" : "Un nove file o un dossier ha essite restabilite", "No favorites" : "Nulle favoritos" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files/l10n/is.js b/apps/files/l10n/is.js index 85f15d3055..fb31c3b7f2 100644 --- a/apps/files/l10n/is.js +++ b/apps/files/l10n/is.js @@ -102,9 +102,9 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Skrá var bætt við eða hún fjarlægð úr eftirlætum", "A file or folder has been changed or renamed" : "Skrá eða möppu hefur verið breytt eða verið endurnefnt", "A new file or folder has been created" : "Skjal eða mappa hefur verið búin til", - "A new file or folder has been deleted" : "Nýrri skrá eða möppu hefur verið eytt", + "A file or folder has been deleted" : "Skjali eða möppu hefur verið eytt", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Takmarka tilkynningar um gerð og breytingar á eftirlætisskrám (einungis streymi)", - "A new file or folder has been restored" : "Ný skrá eða mappa hefur verið endurheimt", + "A file or folder has been restored" : "Skjal eða mappa hefur verið endurheimt", "Unlimited" : "Ótakmarkað", "Upload (max. %s)" : "Senda inn (hám. %s)", "File handling" : "Meðhöndlun skráar", @@ -146,6 +146,8 @@ OC.L10N.register( "Copy local link" : "Afrita staðværan tengil", "Folder" : "Mappa", "Upload" : "Senda inn", + "A new file or folder has been deleted" : "Nýrri skrá eða möppu hefur verið eytt", + "A new file or folder has been restored" : "Ný skrá eða mappa hefur verið endurheimt", "No favorites" : "Engin eftirlæti" }, "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); diff --git a/apps/files/l10n/is.json b/apps/files/l10n/is.json index 52368a9ce8..3bfa946a49 100644 --- a/apps/files/l10n/is.json +++ b/apps/files/l10n/is.json @@ -100,9 +100,9 @@ "A file has been added to or removed from your favorites" : "Skrá var bætt við eða hún fjarlægð úr eftirlætum", "A file or folder has been changed or renamed" : "Skrá eða möppu hefur verið breytt eða verið endurnefnt", "A new file or folder has been created" : "Skjal eða mappa hefur verið búin til", - "A new file or folder has been deleted" : "Nýrri skrá eða möppu hefur verið eytt", + "A file or folder has been deleted" : "Skjali eða möppu hefur verið eytt", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Takmarka tilkynningar um gerð og breytingar á eftirlætisskrám (einungis streymi)", - "A new file or folder has been restored" : "Ný skrá eða mappa hefur verið endurheimt", + "A file or folder has been restored" : "Skjal eða mappa hefur verið endurheimt", "Unlimited" : "Ótakmarkað", "Upload (max. %s)" : "Senda inn (hám. %s)", "File handling" : "Meðhöndlun skráar", @@ -144,6 +144,8 @@ "Copy local link" : "Afrita staðværan tengil", "Folder" : "Mappa", "Upload" : "Senda inn", + "A new file or folder has been deleted" : "Nýrri skrá eða möppu hefur verið eytt", + "A new file or folder has been restored" : "Ný skrá eða mappa hefur verið endurheimt", "No favorites" : "Engin eftirlæti" },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" } \ No newline at end of file diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js index d5cb86d842..cc8cb646d9 100644 --- a/apps/files/l10n/it.js +++ b/apps/files/l10n/it.js @@ -102,9 +102,9 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Un file stato aggiunto o rimosso dai tuoi preferiti", "A file or folder has been changed or renamed" : "Un file o una cartella sono stati modificato orinominati ", "A new file or folder has been created" : "Un nuovo file o cartella è stato creato", - "A new file or folder has been deleted" : "Un nuovo file o cartella è stato eliminato", + "A file or folder has been deleted" : "Un file o una cartella è stato eliminato", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limita le notifiche relative alla creazione e alla modifica dei tuoi file preferiti (Solo flusso)", - "A new file or folder has been restored" : "Un nuovo file o una cartella è stato ripristinato", + "A file or folder has been restored" : "Un file o una cartella è stato ripristinato", "Unlimited" : "Illimitata", "Upload (max. %s)" : "Carica (massimo %s)", "File handling" : "Gestione file", @@ -146,6 +146,8 @@ OC.L10N.register( "Copy local link" : "Copia collegamento locale", "Folder" : "Cartella", "Upload" : "Carica", + "A new file or folder has been deleted" : "Un nuovo file o cartella è stato eliminato", + "A new file or folder has been restored" : "Un nuovo file o una cartella è stato ripristinato", "No favorites" : "Nessun preferito" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json index 086096cbab..1d672295a3 100644 --- a/apps/files/l10n/it.json +++ b/apps/files/l10n/it.json @@ -100,9 +100,9 @@ "A file has been added to or removed from your favorites" : "Un file stato aggiunto o rimosso dai tuoi preferiti", "A file or folder has been changed or renamed" : "Un file o una cartella sono stati modificato orinominati ", "A new file or folder has been created" : "Un nuovo file o cartella è stato creato", - "A new file or folder has been deleted" : "Un nuovo file o cartella è stato eliminato", + "A file or folder has been deleted" : "Un file o una cartella è stato eliminato", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limita le notifiche relative alla creazione e alla modifica dei tuoi file preferiti (Solo flusso)", - "A new file or folder has been restored" : "Un nuovo file o una cartella è stato ripristinato", + "A file or folder has been restored" : "Un file o una cartella è stato ripristinato", "Unlimited" : "Illimitata", "Upload (max. %s)" : "Carica (massimo %s)", "File handling" : "Gestione file", @@ -144,6 +144,8 @@ "Copy local link" : "Copia collegamento locale", "Folder" : "Cartella", "Upload" : "Carica", + "A new file or folder has been deleted" : "Un nuovo file o cartella è stato eliminato", + "A new file or folder has been restored" : "Un nuovo file o una cartella è stato ripristinato", "No favorites" : "Nessun preferito" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js index 0d5bca2def..1d13642f84 100644 --- a/apps/files/l10n/ja.js +++ b/apps/files/l10n/ja.js @@ -102,9 +102,9 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "お気に入りにファイルが追加または削除されたとき", "A file or folder has been changed or renamed" : "ファイルまたはフォルダが 更新されたか、名前が変更されたとき", "A new file or folder has been created" : "新しいファイルまたはフォルダーを作成したとき", - "A new file or folder has been deleted" : "新しいファイルまたはフォルダが削除されたとき", + "A file or folder has been deleted" : "ファイルまたはフォルダーが 削除されました", "Limit notifications about creation and changes to your favorite files (Stream only)" : "お気に入りファイルの作成と変更の通知を制限する(ストリームのみ)", - "A new file or folder has been restored" : "新しいファイルまたはフォルダが復元されました", + "A file or folder has been restored" : "ファイルまたはフォルダーが 復元されました", "Unlimited" : "無制限", "Upload (max. %s)" : "アップロード ( 最大 %s )", "File handling" : "ファイル操作", @@ -146,6 +146,8 @@ OC.L10N.register( "Copy local link" : "ローカルリンクをコピー", "Folder" : "フォルダー", "Upload" : "アップロード", + "A new file or folder has been deleted" : "新しいファイルまたはフォルダが削除されたとき", + "A new file or folder has been restored" : "新しいファイルまたはフォルダが復元されました", "No favorites" : "お気に入りなし" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json index 15b5f13410..99c46c8d0a 100644 --- a/apps/files/l10n/ja.json +++ b/apps/files/l10n/ja.json @@ -100,9 +100,9 @@ "A file has been added to or removed from your favorites" : "お気に入りにファイルが追加または削除されたとき", "A file or folder has been changed or renamed" : "ファイルまたはフォルダが 更新されたか、名前が変更されたとき", "A new file or folder has been created" : "新しいファイルまたはフォルダーを作成したとき", - "A new file or folder has been deleted" : "新しいファイルまたはフォルダが削除されたとき", + "A file or folder has been deleted" : "ファイルまたはフォルダーが 削除されました", "Limit notifications about creation and changes to your favorite files (Stream only)" : "お気に入りファイルの作成と変更の通知を制限する(ストリームのみ)", - "A new file or folder has been restored" : "新しいファイルまたはフォルダが復元されました", + "A file or folder has been restored" : "ファイルまたはフォルダーが 復元されました", "Unlimited" : "無制限", "Upload (max. %s)" : "アップロード ( 最大 %s )", "File handling" : "ファイル操作", @@ -144,6 +144,8 @@ "Copy local link" : "ローカルリンクをコピー", "Folder" : "フォルダー", "Upload" : "アップロード", + "A new file or folder has been deleted" : "新しいファイルまたはフォルダが削除されたとき", + "A new file or folder has been restored" : "新しいファイルまたはフォルダが復元されました", "No favorites" : "お気に入りなし" },"pluralForm" :"nplurals=1; plural=0;" } \ No newline at end of file diff --git a/apps/files/l10n/ko.js b/apps/files/l10n/ko.js index e738b3988d..270c13b39a 100644 --- a/apps/files/l10n/ko.js +++ b/apps/files/l10n/ko.js @@ -99,9 +99,7 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "파일이 즐겨찾기에서 추가 또는 삭제됨", "A file or folder has been changed or renamed" : "파일이나 폴더가 변경되거나 이름이 바뀜", "A new file or folder has been created" : "새 파일이나 폴더가 생성됨", - "A new file or folder has been deleted" : "새 파일이나 폴더가 삭제됨", "Limit notifications about creation and changes to your favorite files (Stream only)" : "즐겨찾는 파일의 생성 및 변경 사항에 대한 알림을 줄일 수 있습니다(스트림에서만)", - "A new file or folder has been restored" : "새 파일이나 폴더가 복원됨", "Upload (max. %s)" : "업로드(최대 %s)", "File handling" : "파일 처리", "Maximum upload size" : "최대 업로드 크기", @@ -140,6 +138,8 @@ OC.L10N.register( "Copy local link" : "로컬 링크 복사", "Folder" : "폴더", "Upload" : "업로드", + "A new file or folder has been deleted" : "새 파일이나 폴더가 삭제됨", + "A new file or folder has been restored" : "새 파일이나 폴더가 복원됨", "No favorites" : "즐겨찾는 항목 없음" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json index 3c1b67c946..b674fa9f3c 100644 --- a/apps/files/l10n/ko.json +++ b/apps/files/l10n/ko.json @@ -97,9 +97,7 @@ "A file has been added to or removed from your favorites" : "파일이 즐겨찾기에서 추가 또는 삭제됨", "A file or folder has been changed or renamed" : "파일이나 폴더가 변경되거나 이름이 바뀜", "A new file or folder has been created" : "새 파일이나 폴더가 생성됨", - "A new file or folder has been deleted" : "새 파일이나 폴더가 삭제됨", "Limit notifications about creation and changes to your favorite files (Stream only)" : "즐겨찾는 파일의 생성 및 변경 사항에 대한 알림을 줄일 수 있습니다(스트림에서만)", - "A new file or folder has been restored" : "새 파일이나 폴더가 복원됨", "Upload (max. %s)" : "업로드(최대 %s)", "File handling" : "파일 처리", "Maximum upload size" : "최대 업로드 크기", @@ -138,6 +136,8 @@ "Copy local link" : "로컬 링크 복사", "Folder" : "폴더", "Upload" : "업로드", + "A new file or folder has been deleted" : "새 파일이나 폴더가 삭제됨", + "A new file or folder has been restored" : "새 파일이나 폴더가 복원됨", "No favorites" : "즐겨찾는 항목 없음" },"pluralForm" :"nplurals=1; plural=0;" } \ No newline at end of file diff --git a/apps/files/l10n/lb.js b/apps/files/l10n/lb.js index 64de0ceea6..f0c17c8f4f 100644 --- a/apps/files/l10n/lb.js +++ b/apps/files/l10n/lb.js @@ -98,9 +98,7 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Eng Datei gouf zu dengen Favoriten dobäigesat  oder aus dengen Favortien geläscht ", "A file or folder has been changed or renamed" : "Eng Datei gouf verännert oder embenannt", "A new file or folder has been created" : "Eng nei Datei oder e neien Dossier gouf erstallt ", - "A new file or folder has been deleted" : "Eng Datei oder en Dossier gouf geläscht", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limitéier Notifikatiounen op d'Erstellen an Veränneren vun dengen Favoriten (nëmmen Floss)", - "A new file or folder has been restored" : "Eng Datei oder en Dossier gouf erem hier gestallt", "Upload (max. %s)" : "Upload (maximal ¦%s)", "File handling" : "Fichier handling", "Maximum upload size" : "Maximum Upload Gréisst ", @@ -138,6 +136,8 @@ OC.L10N.register( "Copy local link" : "Lokale Link kopéiert", "Folder" : "Dossier", "Upload" : "Eroplueden", + "A new file or folder has been deleted" : "Eng Datei oder en Dossier gouf geläscht", + "A new file or folder has been restored" : "Eng Datei oder en Dossier gouf erem hier gestallt", "No favorites" : "Keng Favoriten" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/lb.json b/apps/files/l10n/lb.json index 3fc39ab0b5..af8e77a2f7 100644 --- a/apps/files/l10n/lb.json +++ b/apps/files/l10n/lb.json @@ -96,9 +96,7 @@ "A file has been added to or removed from your favorites" : "Eng Datei gouf zu dengen Favoriten dobäigesat  oder aus dengen Favortien geläscht ", "A file or folder has been changed or renamed" : "Eng Datei gouf verännert oder embenannt", "A new file or folder has been created" : "Eng nei Datei oder e neien Dossier gouf erstallt ", - "A new file or folder has been deleted" : "Eng Datei oder en Dossier gouf geläscht", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limitéier Notifikatiounen op d'Erstellen an Veränneren vun dengen Favoriten (nëmmen Floss)", - "A new file or folder has been restored" : "Eng Datei oder en Dossier gouf erem hier gestallt", "Upload (max. %s)" : "Upload (maximal ¦%s)", "File handling" : "Fichier handling", "Maximum upload size" : "Maximum Upload Gréisst ", @@ -136,6 +134,8 @@ "Copy local link" : "Lokale Link kopéiert", "Folder" : "Dossier", "Upload" : "Eroplueden", + "A new file or folder has been deleted" : "Eng Datei oder en Dossier gouf geläscht", + "A new file or folder has been restored" : "Eng Datei oder en Dossier gouf erem hier gestallt", "No favorites" : "Keng Favoriten" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files/l10n/lt_LT.js b/apps/files/l10n/lt_LT.js index 02bfe798d1..9942a4249b 100644 --- a/apps/files/l10n/lt_LT.js +++ b/apps/files/l10n/lt_LT.js @@ -2,18 +2,18 @@ OC.L10N.register( "files", { "Storage is temporarily not available" : "Saugykla yra laikinai neprieinama", - "Storage invalid" : "Saugykla neteisinga", + "Storage invalid" : "Saugykla netinkama naudoti", "Unknown error" : "Nežinoma klaida", "All files" : "Visi failai", "Recent" : "Naujausi", - "File could not be found" : "Nepavyko rasti failo", - "Home" : "Namų", + "File could not be found" : "Nepavyko rasti rinkmenos", + "Home" : "Pagrindinis", "Close" : "Užverti", "Favorites" : "Mėgstamiausi", "Could not create folder \"{dir}\"" : "Nepavyko sukurti aplanko \"{dir}\"", "Upload cancelled." : "Įkėlimo atsisakyta.", "Unable to upload {filename} as it is a directory or has 0 bytes" : "Nepavyksta įkelti {filename}, nes tai yra katalogas arba šio failo dydis yra 0 baitų", - "Not enough free space, you are uploading {size1} but only {size2} is left" : "Nepakanka laisvos vietos. Keliate {size1}, bet tik {size2} yra likę", + "Not enough free space, you are uploading {size1} but only {size2} is left" : "Nepakanka laisvos vietos. Jūs bandote įkelti {size1} dydžio bylą, bet liko tik {size2} vietos", "Target folder \"{dir}\" does not exist any more" : "Paskirties aplanko \"{dir}\" daugiau nebėra", "Not enough free space" : "Trūksta laisvos vietos", "Uploading..." : "Įkeliama...", @@ -30,7 +30,7 @@ OC.L10N.register( "Could not load info for file \"{file}\"" : "Nepavyko įkelti informacijos failui \"{file}\"", "Files" : "Failai", "Details" : "Informacija", - "Select" : "Pasirinkiti", + "Select" : "Pasirinkti", "Pending" : "Laukiantis", "Unable to determine date" : "Nepavyksta nustatyti datos", "This operation is forbidden" : "Ši operacija yra uždrausta", @@ -38,7 +38,7 @@ OC.L10N.register( "Could not move \"{file}\", target exists" : "Nepavyko perkelti \"{file}\", toks jau egzistuoja", "Could not move \"{file}\"" : "Nepavyko perkelti \"{file}\"", "{newName} already exists" : "{newName} jau yra", - "Could not rename \"{fileName}\", it does not exist any more" : "Nepavyko pervadinti failo \"{fileName}\", nes jis jau nebeegzistuoja", + "Could not rename \"{fileName}\", it does not exist any more" : "Nepavyko pervadinti bylos \"{fileName}\", nes tokia byla neegzistuoja", "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Pavadinimas \"{targetName}\" jau naudojamas aplanke \"{dir}\". Prašome pasirinkti kitokį pavadinimą.", "Could not rename \"{fileName}\"" : "Nepavyko pervadinti failo \"{fileName}\"", "Could not create file \"{file}\"" : "Nepavyko sukurti failo \"{file}\"", @@ -56,19 +56,23 @@ OC.L10N.register( "You don’t have permission to upload or create files here" : "Jūs neturite leidimo čia įkelti arba kurti failus", "_Uploading %n file_::_Uploading %n files_" : ["Įkeliamas %n failas","Įkeliami %n failai","Įkeliama %n failų"], "New" : "Naujas", - "\"{name}\" is an invalid file name." : "„{name}“ yra netinkamas failo pavadinime.", + "\"{name}\" is an invalid file name." : "„{name}“ yra netinkamas bylos pavadinimas.", "File name cannot be empty." : "Failo pavadinimas negali būti tuščias.", "\"{name}\" is not an allowed filetype" : "\"{name}\" nėra leidžiamas failo tipas", "Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} saugykla yra pilna, failai daugiau nebegali būti atnaujinti arba sinchronizuojami!", "Your storage is full, files can not be updated or synced anymore!" : "Jūsų saugykla pilna, failai daugiau nebegali būti atnaujinti arba sinchronizuojami!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner} saugykla yra beveik pilna ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "Jūsų saugykla yra beveik pilna ({usedSpacePercent}%)", + "_matches '{filter}'_::_match '{filter}'_" : ["atitinka '{filter}'","atitinka '{filter}'","atitinka '{filter}'"], "View in folder" : "Peržiūrėti aplanką", + "Copied!" : "Nukopijuota!", + "Copy direct link (only works for users who have access to this file/folder)" : "Nukopijuoti nuorodą (veikia tik tiems naudotojams, kurie turi prieigą prie šios rinkmenos)", "Path" : "Kelias", "_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų"], "Favorited" : "Pažymėta mėgstamu", "Favorite" : "Mėgiamas", "New folder" : "Naujas aplankas", + "Upload file" : "Įkelti failą", "An error occurred while trying to update the tags" : "Bandant atnaujinti žymes įvyko klaida", "Added to favorites" : "Pridėta prie mėgstamųjų", "Removed from favorites" : "Pašalinta iš mėgstamųjų", @@ -81,6 +85,7 @@ OC.L10N.register( "Restored by {user}" : "Atkūrė {user}", "Renamed by {user}" : "Pervadino {user}", "Moved by {user}" : "Perkėlė {user}", + "\"remote user\"" : "\"nuotolinis naudotojas\"", "You created {file}" : "Jūs sukūrėte {file}", "{user} created {file}" : "{user} sukūrė {file}", "{file} was created in a public folder" : "{file} buvo sukurtas viešajame aplanke", @@ -94,12 +99,13 @@ OC.L10N.register( "{user} renamed {oldfile} to {newfile}" : "{user} pervadino {oldfile} į {newfile}", "You moved {oldfile} to {newfile}" : "Jūs perkėlėte {oldfile} į {newfile}", "{user} moved {oldfile} to {newfile}" : "{user} perkėlė {oldfile} į {newfile}", - "A file has been added to or removed from your favorites" : "failas buvo pridėtas arba pašalintas iš mėgstamųjų", + "A file has been added to or removed from your favorites" : "Failas buvo pridėtas arba pašalintas iš mėgstamųjų", "A file or folder has been changed or renamed" : "Buvo pakeistas ar pervadintas failas ar aplankas", "A new file or folder has been created" : "Buvo sukurtas naujas failas ar aplankas", - "A new file or folder has been deleted" : "Naujas failas arba aplankas buvo ištrintas", + "A file or folder has been deleted" : "Duomenys buvo ištrinti", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Riboti pranešimus apie sukūrimą ir pokyčius jūsų mėgiamuose failuose (Tik srautas)", - "A new file or folder has been restored" : "Naujas failas arba aplankas buvo atkurtas", + "A file or folder has been restored" : "Duomenys buvo atstatyti", + "Unlimited" : "Neribotai", "Upload (max. %s)" : "Įkelti (maks. %s)", "File handling" : "Failų tvarkymas", "Maximum upload size" : "Maksimalus įkeliamo failo dydis", @@ -107,6 +113,8 @@ OC.L10N.register( "Save" : "Įrašyti", "With PHP-FPM it might take 5 minutes for changes to be applied." : "Su PHP-FPM atnaujinimai gali užtrukti apie 5min.", "Missing permissions to edit from here." : "Draudžiama iš čia redaguoti", + "%s of %s used" : "naudojama %s iš %s", + "%s used" : "%s panaudota", "Settings" : "Nustatymai", "Show hidden files" : "Rodyti paslėptus failus", "WebDAV" : "WebDAV", @@ -117,6 +125,7 @@ OC.L10N.register( "Select all" : "Pažymėti viską", "Upload too large" : "Įkėlimui failas per didelis", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Bandomų įkelti failų dydis viršija maksimalų, šiame serveryje leidžiamų įkelti failų dydį.", + "No favorites yet" : "Nėra pridėta į \"mėgstamų\" sąrašą", "Files and folders you mark as favorite will show up here" : "Failai ir aplankai, kuriuos pažymite mėgstamais, atsiras čia", "Shared with you" : "Bendrinama su jumis", "Shared with others" : "Bendrinama su kitais", @@ -137,6 +146,8 @@ OC.L10N.register( "Copy local link" : "Kopijuoti vietinę nuorodą", "Folder" : "Aplankas", "Upload" : "Įkelti", + "A new file or folder has been deleted" : "Naujas failas arba aplankas buvo ištrintas", + "A new file or folder has been restored" : "Naujas failas arba aplankas buvo atkurtas", "No favorites" : "Nėra mėgstamiausių" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files/l10n/lt_LT.json b/apps/files/l10n/lt_LT.json index a3b467c8a2..c88cff6cc0 100644 --- a/apps/files/l10n/lt_LT.json +++ b/apps/files/l10n/lt_LT.json @@ -1,17 +1,17 @@ { "translations": { "Storage is temporarily not available" : "Saugykla yra laikinai neprieinama", - "Storage invalid" : "Saugykla neteisinga", + "Storage invalid" : "Saugykla netinkama naudoti", "Unknown error" : "Nežinoma klaida", "All files" : "Visi failai", "Recent" : "Naujausi", - "File could not be found" : "Nepavyko rasti failo", - "Home" : "Namų", + "File could not be found" : "Nepavyko rasti rinkmenos", + "Home" : "Pagrindinis", "Close" : "Užverti", "Favorites" : "Mėgstamiausi", "Could not create folder \"{dir}\"" : "Nepavyko sukurti aplanko \"{dir}\"", "Upload cancelled." : "Įkėlimo atsisakyta.", "Unable to upload {filename} as it is a directory or has 0 bytes" : "Nepavyksta įkelti {filename}, nes tai yra katalogas arba šio failo dydis yra 0 baitų", - "Not enough free space, you are uploading {size1} but only {size2} is left" : "Nepakanka laisvos vietos. Keliate {size1}, bet tik {size2} yra likę", + "Not enough free space, you are uploading {size1} but only {size2} is left" : "Nepakanka laisvos vietos. Jūs bandote įkelti {size1} dydžio bylą, bet liko tik {size2} vietos", "Target folder \"{dir}\" does not exist any more" : "Paskirties aplanko \"{dir}\" daugiau nebėra", "Not enough free space" : "Trūksta laisvos vietos", "Uploading..." : "Įkeliama...", @@ -28,7 +28,7 @@ "Could not load info for file \"{file}\"" : "Nepavyko įkelti informacijos failui \"{file}\"", "Files" : "Failai", "Details" : "Informacija", - "Select" : "Pasirinkiti", + "Select" : "Pasirinkti", "Pending" : "Laukiantis", "Unable to determine date" : "Nepavyksta nustatyti datos", "This operation is forbidden" : "Ši operacija yra uždrausta", @@ -36,7 +36,7 @@ "Could not move \"{file}\", target exists" : "Nepavyko perkelti \"{file}\", toks jau egzistuoja", "Could not move \"{file}\"" : "Nepavyko perkelti \"{file}\"", "{newName} already exists" : "{newName} jau yra", - "Could not rename \"{fileName}\", it does not exist any more" : "Nepavyko pervadinti failo \"{fileName}\", nes jis jau nebeegzistuoja", + "Could not rename \"{fileName}\", it does not exist any more" : "Nepavyko pervadinti bylos \"{fileName}\", nes tokia byla neegzistuoja", "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Pavadinimas \"{targetName}\" jau naudojamas aplanke \"{dir}\". Prašome pasirinkti kitokį pavadinimą.", "Could not rename \"{fileName}\"" : "Nepavyko pervadinti failo \"{fileName}\"", "Could not create file \"{file}\"" : "Nepavyko sukurti failo \"{file}\"", @@ -54,19 +54,23 @@ "You don’t have permission to upload or create files here" : "Jūs neturite leidimo čia įkelti arba kurti failus", "_Uploading %n file_::_Uploading %n files_" : ["Įkeliamas %n failas","Įkeliami %n failai","Įkeliama %n failų"], "New" : "Naujas", - "\"{name}\" is an invalid file name." : "„{name}“ yra netinkamas failo pavadinime.", + "\"{name}\" is an invalid file name." : "„{name}“ yra netinkamas bylos pavadinimas.", "File name cannot be empty." : "Failo pavadinimas negali būti tuščias.", "\"{name}\" is not an allowed filetype" : "\"{name}\" nėra leidžiamas failo tipas", "Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} saugykla yra pilna, failai daugiau nebegali būti atnaujinti arba sinchronizuojami!", "Your storage is full, files can not be updated or synced anymore!" : "Jūsų saugykla pilna, failai daugiau nebegali būti atnaujinti arba sinchronizuojami!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner} saugykla yra beveik pilna ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "Jūsų saugykla yra beveik pilna ({usedSpacePercent}%)", + "_matches '{filter}'_::_match '{filter}'_" : ["atitinka '{filter}'","atitinka '{filter}'","atitinka '{filter}'"], "View in folder" : "Peržiūrėti aplanką", + "Copied!" : "Nukopijuota!", + "Copy direct link (only works for users who have access to this file/folder)" : "Nukopijuoti nuorodą (veikia tik tiems naudotojams, kurie turi prieigą prie šios rinkmenos)", "Path" : "Kelias", "_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų"], "Favorited" : "Pažymėta mėgstamu", "Favorite" : "Mėgiamas", "New folder" : "Naujas aplankas", + "Upload file" : "Įkelti failą", "An error occurred while trying to update the tags" : "Bandant atnaujinti žymes įvyko klaida", "Added to favorites" : "Pridėta prie mėgstamųjų", "Removed from favorites" : "Pašalinta iš mėgstamųjų", @@ -79,6 +83,7 @@ "Restored by {user}" : "Atkūrė {user}", "Renamed by {user}" : "Pervadino {user}", "Moved by {user}" : "Perkėlė {user}", + "\"remote user\"" : "\"nuotolinis naudotojas\"", "You created {file}" : "Jūs sukūrėte {file}", "{user} created {file}" : "{user} sukūrė {file}", "{file} was created in a public folder" : "{file} buvo sukurtas viešajame aplanke", @@ -92,12 +97,13 @@ "{user} renamed {oldfile} to {newfile}" : "{user} pervadino {oldfile} į {newfile}", "You moved {oldfile} to {newfile}" : "Jūs perkėlėte {oldfile} į {newfile}", "{user} moved {oldfile} to {newfile}" : "{user} perkėlė {oldfile} į {newfile}", - "A file has been added to or removed from your favorites" : "failas buvo pridėtas arba pašalintas iš mėgstamųjų", + "A file has been added to or removed from your favorites" : "Failas buvo pridėtas arba pašalintas iš mėgstamųjų", "A file or folder has been changed or renamed" : "Buvo pakeistas ar pervadintas failas ar aplankas", "A new file or folder has been created" : "Buvo sukurtas naujas failas ar aplankas", - "A new file or folder has been deleted" : "Naujas failas arba aplankas buvo ištrintas", + "A file or folder has been deleted" : "Duomenys buvo ištrinti", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Riboti pranešimus apie sukūrimą ir pokyčius jūsų mėgiamuose failuose (Tik srautas)", - "A new file or folder has been restored" : "Naujas failas arba aplankas buvo atkurtas", + "A file or folder has been restored" : "Duomenys buvo atstatyti", + "Unlimited" : "Neribotai", "Upload (max. %s)" : "Įkelti (maks. %s)", "File handling" : "Failų tvarkymas", "Maximum upload size" : "Maksimalus įkeliamo failo dydis", @@ -105,6 +111,8 @@ "Save" : "Įrašyti", "With PHP-FPM it might take 5 minutes for changes to be applied." : "Su PHP-FPM atnaujinimai gali užtrukti apie 5min.", "Missing permissions to edit from here." : "Draudžiama iš čia redaguoti", + "%s of %s used" : "naudojama %s iš %s", + "%s used" : "%s panaudota", "Settings" : "Nustatymai", "Show hidden files" : "Rodyti paslėptus failus", "WebDAV" : "WebDAV", @@ -115,6 +123,7 @@ "Select all" : "Pažymėti viską", "Upload too large" : "Įkėlimui failas per didelis", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Bandomų įkelti failų dydis viršija maksimalų, šiame serveryje leidžiamų įkelti failų dydį.", + "No favorites yet" : "Nėra pridėta į \"mėgstamų\" sąrašą", "Files and folders you mark as favorite will show up here" : "Failai ir aplankai, kuriuos pažymite mėgstamais, atsiras čia", "Shared with you" : "Bendrinama su jumis", "Shared with others" : "Bendrinama su kitais", @@ -135,6 +144,8 @@ "Copy local link" : "Kopijuoti vietinę nuorodą", "Folder" : "Aplankas", "Upload" : "Įkelti", + "A new file or folder has been deleted" : "Naujas failas arba aplankas buvo ištrintas", + "A new file or folder has been restored" : "Naujas failas arba aplankas buvo atkurtas", "No favorites" : "Nėra mėgstamiausių" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" } \ No newline at end of file diff --git a/apps/files/l10n/lv.js b/apps/files/l10n/lv.js index 6ced3c7fe6..062209db0c 100644 --- a/apps/files/l10n/lv.js +++ b/apps/files/l10n/lv.js @@ -96,9 +96,7 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Fails ir pievienots vai noņemts no jūsu izlases", "A file or folder has been changed or renamed" : "Fails vai mape tika mainīts vai pārsaukts", "A new file or folder has been created" : "Izveidota jauna datne vai mape", - "A new file or folder has been deleted" : "Fails vai mape tika dzēsts", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limitēt ziņojumus par jūsu iecienīto datņu izveidošanu un izmaiņām (tikai datu straumei)", - "A new file or folder has been restored" : "Fails vai mape tika atjaunots", "Upload (max. %s)" : "Augšupielādēt (maks. %s)", "File handling" : "Datņu pārvaldība", "Maximum upload size" : "Maksimālais datņu augšupielādes apjoms", @@ -136,6 +134,8 @@ OC.L10N.register( "Copy local link" : "Kopēt lokālo saiti", "Folder" : "Mape", "Upload" : "Augšupielādēt", + "A new file or folder has been deleted" : "Fails vai mape tika dzēsts", + "A new file or folder has been restored" : "Fails vai mape tika atjaunots", "No favorites" : "Nav favorītu" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"); diff --git a/apps/files/l10n/lv.json b/apps/files/l10n/lv.json index 84217870a7..0f713907d5 100644 --- a/apps/files/l10n/lv.json +++ b/apps/files/l10n/lv.json @@ -94,9 +94,7 @@ "A file has been added to or removed from your favorites" : "Fails ir pievienots vai noņemts no jūsu izlases", "A file or folder has been changed or renamed" : "Fails vai mape tika mainīts vai pārsaukts", "A new file or folder has been created" : "Izveidota jauna datne vai mape", - "A new file or folder has been deleted" : "Fails vai mape tika dzēsts", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Limitēt ziņojumus par jūsu iecienīto datņu izveidošanu un izmaiņām (tikai datu straumei)", - "A new file or folder has been restored" : "Fails vai mape tika atjaunots", "Upload (max. %s)" : "Augšupielādēt (maks. %s)", "File handling" : "Datņu pārvaldība", "Maximum upload size" : "Maksimālais datņu augšupielādes apjoms", @@ -134,6 +132,8 @@ "Copy local link" : "Kopēt lokālo saiti", "Folder" : "Mape", "Upload" : "Augšupielādēt", + "A new file or folder has been deleted" : "Fails vai mape tika dzēsts", + "A new file or folder has been restored" : "Fails vai mape tika atjaunots", "No favorites" : "Nav favorītu" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);" } \ No newline at end of file diff --git a/apps/files/l10n/nb.js b/apps/files/l10n/nb.js index 231bdb6d11..8548362748 100644 --- a/apps/files/l10n/nb.js +++ b/apps/files/l10n/nb.js @@ -102,9 +102,9 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "En fil har blitt lagt til eller fjernet fra dine favoritter", "A file or folder has been changed or renamed" : "En fil eller mappe ble endret eller omdøpt", "A new file or folder has been created" : "En ny fil eller mappe ble opprettet", - "A new file or folder has been deleted" : "En ny fil eller mappe har blitt slettet", + "A file or folder has been deleted" : "En fil eller mappe ble slettet", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Begrens varsling om oppretting og endringer til favorittfilene dine (Kun strøm)", - "A new file or folder has been restored" : "En ny fil eller mappe har blitt gjenopprettet", + "A file or folder has been restored" : "En fil eller mappe ble gjenopprettet", "Unlimited" : "Ubegrenset", "Upload (max. %s)" : "Opplasting (maks. %s)", "File handling" : "Filhåndtering", @@ -146,6 +146,8 @@ OC.L10N.register( "Copy local link" : "Kopier lokal lenke", "Folder" : "Mappe", "Upload" : "Last opp", + "A new file or folder has been deleted" : "En ny fil eller mappe har blitt slettet", + "A new file or folder has been restored" : "En ny fil eller mappe har blitt gjenopprettet", "No favorites" : "Ingen favoritter" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/nb.json b/apps/files/l10n/nb.json index c361bda2d3..3079c785f1 100644 --- a/apps/files/l10n/nb.json +++ b/apps/files/l10n/nb.json @@ -100,9 +100,9 @@ "A file has been added to or removed from your favorites" : "En fil har blitt lagt til eller fjernet fra dine favoritter", "A file or folder has been changed or renamed" : "En fil eller mappe ble endret eller omdøpt", "A new file or folder has been created" : "En ny fil eller mappe ble opprettet", - "A new file or folder has been deleted" : "En ny fil eller mappe har blitt slettet", + "A file or folder has been deleted" : "En fil eller mappe ble slettet", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Begrens varsling om oppretting og endringer til favorittfilene dine (Kun strøm)", - "A new file or folder has been restored" : "En ny fil eller mappe har blitt gjenopprettet", + "A file or folder has been restored" : "En fil eller mappe ble gjenopprettet", "Unlimited" : "Ubegrenset", "Upload (max. %s)" : "Opplasting (maks. %s)", "File handling" : "Filhåndtering", @@ -144,6 +144,8 @@ "Copy local link" : "Kopier lokal lenke", "Folder" : "Mappe", "Upload" : "Last opp", + "A new file or folder has been deleted" : "En ny fil eller mappe har blitt slettet", + "A new file or folder has been restored" : "En ny fil eller mappe har blitt gjenopprettet", "No favorites" : "Ingen favoritter" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files/l10n/nl.js b/apps/files/l10n/nl.js index 67bef4512c..c67c38b754 100644 --- a/apps/files/l10n/nl.js +++ b/apps/files/l10n/nl.js @@ -102,9 +102,9 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Een bestand werd toegevoegd of verwijderd van je favorieten", "A file or folder has been changed or renamed" : "Een bestand of map is gewijzigd of hernoemd", "A new file or folder has been created" : "Een nieuw bestand of map is aangemaakt", - "A new file or folder has been deleted" : "Een nieuw bestand of nieuwe map is verwijderd", + "A file or folder has been deleted" : "Een bestand of map is verwijderd", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Beperk meldingen over aanmaken en wijzigen aan je favoriete bestanden (Alleen stream)", - "A new file or folder has been restored" : "Een nieuw bestand of een nieuwe map is hersteld", + "A file or folder has been restored" : "Een bestand of een map is hersteld", "Unlimited" : "Ongelimiteerd", "Upload (max. %s)" : "Upload (max. %s)", "File handling" : "Bestand afhandeling", @@ -146,6 +146,8 @@ OC.L10N.register( "Copy local link" : "Kopiëren lokale link", "Folder" : "Map", "Upload" : "Uploaden", + "A new file or folder has been deleted" : "Een nieuw bestand of nieuwe map is verwijderd", + "A new file or folder has been restored" : "Een nieuw bestand of een nieuwe map is hersteld", "No favorites" : "Geen favorieten" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/nl.json b/apps/files/l10n/nl.json index 3124f14954..8b5e6bc65e 100644 --- a/apps/files/l10n/nl.json +++ b/apps/files/l10n/nl.json @@ -100,9 +100,9 @@ "A file has been added to or removed from your favorites" : "Een bestand werd toegevoegd of verwijderd van je favorieten", "A file or folder has been changed or renamed" : "Een bestand of map is gewijzigd of hernoemd", "A new file or folder has been created" : "Een nieuw bestand of map is aangemaakt", - "A new file or folder has been deleted" : "Een nieuw bestand of nieuwe map is verwijderd", + "A file or folder has been deleted" : "Een bestand of map is verwijderd", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Beperk meldingen over aanmaken en wijzigen aan je favoriete bestanden (Alleen stream)", - "A new file or folder has been restored" : "Een nieuw bestand of een nieuwe map is hersteld", + "A file or folder has been restored" : "Een bestand of een map is hersteld", "Unlimited" : "Ongelimiteerd", "Upload (max. %s)" : "Upload (max. %s)", "File handling" : "Bestand afhandeling", @@ -144,6 +144,8 @@ "Copy local link" : "Kopiëren lokale link", "Folder" : "Map", "Upload" : "Uploaden", + "A new file or folder has been deleted" : "Een nieuw bestand of nieuwe map is verwijderd", + "A new file or folder has been restored" : "Een nieuw bestand of een nieuwe map is hersteld", "No favorites" : "Geen favorieten" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js index d5c4405217..df4d655858 100644 --- a/apps/files/l10n/pl.js +++ b/apps/files/l10n/pl.js @@ -102,9 +102,7 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Plik został dodany lub usunięty z Twoich ulubionych", "A file or folder has been changed or renamed" : "Plik lub folder został zmieniony lub zastąpiony", "A new file or folder has been created" : "Nowy plik lub folder został utworzony", - "A new file or folder has been deleted" : "Nowy plik lub folder został usunięty ", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Ogranicz powiadomienia o utworzeniu i zmianach do swoich ulubionych plików (Tylko w strumieniu aktywności)", - "A new file or folder has been restored" : "Nowy plik lub folder został przywrócony", "Unlimited" : "Bez limitu", "Upload (max. %s)" : "Wysyłka (max. %s)", "File handling" : "Zarządzanie plikami", @@ -146,6 +144,8 @@ OC.L10N.register( "Copy local link" : "Kopiowanie lokalnego linku", "Folder" : "Folder", "Upload" : "Wyślij", + "A new file or folder has been deleted" : "Nowy plik lub folder został usunięty ", + "A new file or folder has been restored" : "Nowy plik lub folder został przywrócony", "No favorites" : "Brak ulubionych" }, "nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"); diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json index 851c66754b..85e9f58675 100644 --- a/apps/files/l10n/pl.json +++ b/apps/files/l10n/pl.json @@ -100,9 +100,7 @@ "A file has been added to or removed from your favorites" : "Plik został dodany lub usunięty z Twoich ulubionych", "A file or folder has been changed or renamed" : "Plik lub folder został zmieniony lub zastąpiony", "A new file or folder has been created" : "Nowy plik lub folder został utworzony", - "A new file or folder has been deleted" : "Nowy plik lub folder został usunięty ", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Ogranicz powiadomienia o utworzeniu i zmianach do swoich ulubionych plików (Tylko w strumieniu aktywności)", - "A new file or folder has been restored" : "Nowy plik lub folder został przywrócony", "Unlimited" : "Bez limitu", "Upload (max. %s)" : "Wysyłka (max. %s)", "File handling" : "Zarządzanie plikami", @@ -144,6 +142,8 @@ "Copy local link" : "Kopiowanie lokalnego linku", "Folder" : "Folder", "Upload" : "Wyślij", + "A new file or folder has been deleted" : "Nowy plik lub folder został usunięty ", + "A new file or folder has been restored" : "Nowy plik lub folder został przywrócony", "No favorites" : "Brak ulubionych" },"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);" } \ No newline at end of file diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js index 96f679a972..2d56e4f100 100644 --- a/apps/files/l10n/pt_BR.js +++ b/apps/files/l10n/pt_BR.js @@ -102,9 +102,9 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Um arquivo foi adicionado ou excluído de seus favoritos", "A file or folder has been changed or renamed" : "Um arquivo ou pasta foi alterado ou renomeado", "A new file or folder has been created" : "Um novo arquivo ou pasta foi criado", - "A new file or folder has been deleted" : "Um novo arquivo ou pasta foi excluído ", + "A file or folder has been deleted" : "Um arquivo ou pasta foi excluído", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Notificações de limite das criações e alterações em seus arquivos favoritos (apenas Stream)", - "A new file or folder has been restored" : "Um novo arquivo ou pasta foi recuperado ", + "A file or folder has been restored" : "Um arquivo ou pasta foi restaurado", "Unlimited" : "Ilimitado", "Upload (max. %s)" : "Envio (max. %s)", "File handling" : "Tratamento de arquivo", @@ -146,6 +146,8 @@ OC.L10N.register( "Copy local link" : "Copiar link local", "Folder" : "Pasta", "Upload" : "Enviar", + "A new file or folder has been deleted" : "Um novo arquivo ou pasta foi excluído ", + "A new file or folder has been restored" : "Um novo arquivo ou pasta foi recuperado ", "No favorites" : "Sem favoritos" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json index 3f297a99c9..d452646348 100644 --- a/apps/files/l10n/pt_BR.json +++ b/apps/files/l10n/pt_BR.json @@ -100,9 +100,9 @@ "A file has been added to or removed from your favorites" : "Um arquivo foi adicionado ou excluído de seus favoritos", "A file or folder has been changed or renamed" : "Um arquivo ou pasta foi alterado ou renomeado", "A new file or folder has been created" : "Um novo arquivo ou pasta foi criado", - "A new file or folder has been deleted" : "Um novo arquivo ou pasta foi excluído ", + "A file or folder has been deleted" : "Um arquivo ou pasta foi excluído", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Notificações de limite das criações e alterações em seus arquivos favoritos (apenas Stream)", - "A new file or folder has been restored" : "Um novo arquivo ou pasta foi recuperado ", + "A file or folder has been restored" : "Um arquivo ou pasta foi restaurado", "Unlimited" : "Ilimitado", "Upload (max. %s)" : "Envio (max. %s)", "File handling" : "Tratamento de arquivo", @@ -144,6 +144,8 @@ "Copy local link" : "Copiar link local", "Folder" : "Pasta", "Upload" : "Enviar", + "A new file or folder has been deleted" : "Um novo arquivo ou pasta foi excluído ", + "A new file or folder has been restored" : "Um novo arquivo ou pasta foi recuperado ", "No favorites" : "Sem favoritos" },"pluralForm" :"nplurals=2; plural=(n > 1);" } \ No newline at end of file diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js index 0a483c231b..ce01db51d9 100644 --- a/apps/files/l10n/ru.js +++ b/apps/files/l10n/ru.js @@ -102,9 +102,9 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Файл был добавлен или удален из вашего избранного", "A file or folder has been changed or renamed" : "Фаил или каталог изменён или переименован", "A new file or folder has been created" : "Создан новый файл или каталог", - "A new file or folder has been deleted" : "Новый файл или каталог был удален", + "A file or folder has been deleted" : "Файл или каталог был удалён", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Ограничить уведомления о создании и изменении ваших избранных файлов (отображать только в приложении события)", - "A new file or folder has been restored" : "Новый файл или каталог был восстановлен", + "A file or folder has been restored" : "Файл или каталог был восстановлен", "Unlimited" : "Неограничено", "Upload (max. %s)" : "Загрузка (максимум %s)", "File handling" : "Управление файлами", @@ -146,6 +146,8 @@ OC.L10N.register( "Copy local link" : "Копировать локальную ссылку", "Folder" : "Каталог", "Upload" : "Загрузить", + "A new file or folder has been deleted" : "Новый файл или каталог был удален", + "A new file or folder has been restored" : "Новый файл или каталог был восстановлен", "No favorites" : "Нет избранного" }, "nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json index 83b515cdcd..b01d0cc1ec 100644 --- a/apps/files/l10n/ru.json +++ b/apps/files/l10n/ru.json @@ -100,9 +100,9 @@ "A file has been added to or removed from your favorites" : "Файл был добавлен или удален из вашего избранного", "A file or folder has been changed or renamed" : "Фаил или каталог изменён или переименован", "A new file or folder has been created" : "Создан новый файл или каталог", - "A new file or folder has been deleted" : "Новый файл или каталог был удален", + "A file or folder has been deleted" : "Файл или каталог был удалён", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Ограничить уведомления о создании и изменении ваших избранных файлов (отображать только в приложении события)", - "A new file or folder has been restored" : "Новый файл или каталог был восстановлен", + "A file or folder has been restored" : "Файл или каталог был восстановлен", "Unlimited" : "Неограничено", "Upload (max. %s)" : "Загрузка (максимум %s)", "File handling" : "Управление файлами", @@ -144,6 +144,8 @@ "Copy local link" : "Копировать локальную ссылку", "Folder" : "Каталог", "Upload" : "Загрузить", + "A new file or folder has been deleted" : "Новый файл или каталог был удален", + "A new file or folder has been restored" : "Новый файл или каталог был восстановлен", "No favorites" : "Нет избранного" },"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" } \ No newline at end of file diff --git a/apps/files/l10n/sk.js b/apps/files/l10n/sk.js index 8fc5fc24a8..b5995eaf44 100644 --- a/apps/files/l10n/sk.js +++ b/apps/files/l10n/sk.js @@ -98,9 +98,7 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Súbor bol pridaný alebo odstránený z vašich obľúbených", "A file or folder has been changed or renamed" : "Súbor alebo priečinok bol zmenený alebo premenovaný", "A new file or folder has been created" : "Nový súbor alebo priečinok bol vytvorený", - "A new file or folder has been deleted" : "Nový súbor alebo priečinok bol zmazaný", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Obmedzte upozornenia na vytvorenie a zmeny na vaše obľúbené súbory (Len streamy)", - "A new file or folder has been restored" : "Nový súbor alebo priečinok bolobnovený", "Upload (max. %s)" : "Nahrať (max. %s)", "File handling" : "Nastavenie správania sa k súborom", "Maximum upload size" : "Maximálna veľkosť odosielaného súboru", @@ -138,6 +136,8 @@ OC.L10N.register( "Copy local link" : "Kopíruj lokálny odkaz", "Folder" : "Priečinok", "Upload" : "Nahrať", + "A new file or folder has been deleted" : "Nový súbor alebo priečinok bol zmazaný", + "A new file or folder has been restored" : "Nový súbor alebo priečinok bolobnovený", "No favorites" : "Žiadne obľúbené" }, "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); diff --git a/apps/files/l10n/sk.json b/apps/files/l10n/sk.json index 18408ac9f0..615718962f 100644 --- a/apps/files/l10n/sk.json +++ b/apps/files/l10n/sk.json @@ -96,9 +96,7 @@ "A file has been added to or removed from your favorites" : "Súbor bol pridaný alebo odstránený z vašich obľúbených", "A file or folder has been changed or renamed" : "Súbor alebo priečinok bol zmenený alebo premenovaný", "A new file or folder has been created" : "Nový súbor alebo priečinok bol vytvorený", - "A new file or folder has been deleted" : "Nový súbor alebo priečinok bol zmazaný", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Obmedzte upozornenia na vytvorenie a zmeny na vaše obľúbené súbory (Len streamy)", - "A new file or folder has been restored" : "Nový súbor alebo priečinok bolobnovený", "Upload (max. %s)" : "Nahrať (max. %s)", "File handling" : "Nastavenie správania sa k súborom", "Maximum upload size" : "Maximálna veľkosť odosielaného súboru", @@ -136,6 +134,8 @@ "Copy local link" : "Kopíruj lokálny odkaz", "Folder" : "Priečinok", "Upload" : "Nahrať", + "A new file or folder has been deleted" : "Nový súbor alebo priečinok bol zmazaný", + "A new file or folder has been restored" : "Nový súbor alebo priečinok bolobnovený", "No favorites" : "Žiadne obľúbené" },"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" } \ No newline at end of file diff --git a/apps/files/l10n/sq.js b/apps/files/l10n/sq.js index 257f2b6998..56666e1d82 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,12 +58,15 @@ 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}%)", "Your storage is almost full ({usedSpacePercent}%)" : "Depozita juaj është thuajse plot ({usedSpacePercent}%)", "_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", @@ -81,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", @@ -97,9 +102,9 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Një skedar është shtuar ose është hequr nga të preferuarat tuaja", "A file or folder has been changed or renamed" : "Një skedar ose dosje është ndryshuar ose riemëruar", "A new file or folder has been created" : "U krijua një kartelë ose dosje e re", - "A new file or folder has been deleted" : "Një skedar ose dosje e re është fshirë", + "A file or folder has been deleted" : "Një skedar ose dosje është fshirë ", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Kufizojini njoftimet mbi krijim dhe ndryshim kartelash vetëm për kartelat tuaja të parapëlqyera (Vetëm te rrjedha)", - "A new file or folder has been restored" : "Një skedar ose dosje e re është rikthyer", + "A file or folder has been restored" : "Një skedar ose dosje është rikthyer ", "Unlimited" : "E palimituar", "Upload (max. %s)" : "Ngarkim (max. %s)", "File handling" : "Trajtim kartele", @@ -108,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", @@ -118,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", @@ -126,15 +134,20 @@ 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 deleted" : "Një skedar ose dosje e re është fshirë", + "A new file or folder has been restored" : "Një skedar ose dosje e re është rikthyer", "No favorites" : "Pa të parapëlqyera" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/sq.json b/apps/files/l10n/sq.json index e1a5755fdc..4ba2864e80 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,12 +56,15 @@ "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}%)", "Your storage is almost full ({usedSpacePercent}%)" : "Depozita juaj është thuajse plot ({usedSpacePercent}%)", "_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", @@ -79,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", @@ -95,9 +100,9 @@ "A file has been added to or removed from your favorites" : "Një skedar është shtuar ose është hequr nga të preferuarat tuaja", "A file or folder has been changed or renamed" : "Një skedar ose dosje është ndryshuar ose riemëruar", "A new file or folder has been created" : "U krijua një kartelë ose dosje e re", - "A new file or folder has been deleted" : "Një skedar ose dosje e re është fshirë", + "A file or folder has been deleted" : "Një skedar ose dosje është fshirë ", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Kufizojini njoftimet mbi krijim dhe ndryshim kartelash vetëm për kartelat tuaja të parapëlqyera (Vetëm te rrjedha)", - "A new file or folder has been restored" : "Një skedar ose dosje e re është rikthyer", + "A file or folder has been restored" : "Një skedar ose dosje është rikthyer ", "Unlimited" : "E palimituar", "Upload (max. %s)" : "Ngarkim (max. %s)", "File handling" : "Trajtim kartele", @@ -106,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", @@ -116,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", @@ -124,15 +132,20 @@ "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 deleted" : "Një skedar ose dosje e re është fshirë", + "A new file or folder has been restored" : "Një skedar ose dosje e re është rikthyer", "No favorites" : "Pa të parapëlqyera" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js index 25e8677052..8c48386e5e 100644 --- a/apps/files/l10n/sv.js +++ b/apps/files/l10n/sv.js @@ -100,9 +100,7 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "En fil har lagts till eller tagits bort från dina favoriter", "A file or folder has been changed or renamed" : "En fil har blivit ändrad eller bytt namn", "A new file or folder has been created" : "En ny fil eller mapp har blivit skapad", - "A new file or folder has been deleted" : "En ny fil har blivit raderad", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Begränsa notiser om skapande och ändringar till dina favoritfiler (Endast i flödet)", - "A new file or folder has been restored" : "En ny fil eller mapp har blivit återställd", "Upload (max. %s)" : "Ladda upp (max. %s)", "File handling" : "Filhantering", "Maximum upload size" : "Maximal storlek att ladda upp", @@ -141,6 +139,8 @@ OC.L10N.register( "Copy local link" : "Kopiera den lokala länken", "Folder" : "Mapp", "Upload" : "Ladda upp", + "A new file or folder has been deleted" : "En ny fil har blivit raderad", + "A new file or folder has been restored" : "En ny fil eller mapp har blivit återställd", "No favorites" : "Inga favoriter" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json index 81854b77fa..0b970e021f 100644 --- a/apps/files/l10n/sv.json +++ b/apps/files/l10n/sv.json @@ -98,9 +98,7 @@ "A file has been added to or removed from your favorites" : "En fil har lagts till eller tagits bort från dina favoriter", "A file or folder has been changed or renamed" : "En fil har blivit ändrad eller bytt namn", "A new file or folder has been created" : "En ny fil eller mapp har blivit skapad", - "A new file or folder has been deleted" : "En ny fil har blivit raderad", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Begränsa notiser om skapande och ändringar till dina favoritfiler (Endast i flödet)", - "A new file or folder has been restored" : "En ny fil eller mapp har blivit återställd", "Upload (max. %s)" : "Ladda upp (max. %s)", "File handling" : "Filhantering", "Maximum upload size" : "Maximal storlek att ladda upp", @@ -139,6 +137,8 @@ "Copy local link" : "Kopiera den lokala länken", "Folder" : "Mapp", "Upload" : "Ladda upp", + "A new file or folder has been deleted" : "En ny fil har blivit raderad", + "A new file or folder has been restored" : "En ny fil eller mapp har blivit återställd", "No favorites" : "Inga favoriter" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js index c796ec750c..bc1dbb8dba 100644 --- a/apps/files/l10n/tr.js +++ b/apps/files/l10n/tr.js @@ -102,9 +102,9 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "Sık kullandıklarınıza bir dosya eklendi ya da silindi", "A file or folder has been changed or renamed" : "Bir dosya ya da klasör değiştirildi ya da yeniden adlandırıldı", "A new file or folder has been created" : "Yeni bir dosya ya da klasör eklendi", - "A new file or folder has been deleted" : "Yeni bir dosya ya da klasör silindi", + "A file or folder has been deleted" : "Bir dosya ya da klasör silindi", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Sık kullanılan dosyalarınız ile ilgili ekleme ve değişiklik bildirimleri sınırlansın (Yalnız akış)", - "A new file or folder has been restored" : "Yeni bir dosya ya da klasör geri yüklendi", + "A file or folder has been restored" : "Bir dosya ya da klasör geri yüklendi", "Unlimited" : "Sınırsız", "Upload (max. %s)" : "Yükle (en büyük: %s)", "File handling" : "Dosya işlemleri", @@ -146,6 +146,8 @@ OC.L10N.register( "Copy local link" : "Bağlantıyı kopyala", "Folder" : "Klasör", "Upload" : "Yükle", + "A new file or folder has been deleted" : "Yeni bir dosya ya da klasör silindi", + "A new file or folder has been restored" : "Yeni bir dosya ya da klasör geri yüklendi", "No favorites" : "Sık kullanılan bir öge yok" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json index 11d2c0a3bd..41161cb0c6 100644 --- a/apps/files/l10n/tr.json +++ b/apps/files/l10n/tr.json @@ -100,9 +100,9 @@ "A file has been added to or removed from your favorites" : "Sık kullandıklarınıza bir dosya eklendi ya da silindi", "A file or folder has been changed or renamed" : "Bir dosya ya da klasör değiştirildi ya da yeniden adlandırıldı", "A new file or folder has been created" : "Yeni bir dosya ya da klasör eklendi", - "A new file or folder has been deleted" : "Yeni bir dosya ya da klasör silindi", + "A file or folder has been deleted" : "Bir dosya ya da klasör silindi", "Limit notifications about creation and changes to your favorite files (Stream only)" : "Sık kullanılan dosyalarınız ile ilgili ekleme ve değişiklik bildirimleri sınırlansın (Yalnız akış)", - "A new file or folder has been restored" : "Yeni bir dosya ya da klasör geri yüklendi", + "A file or folder has been restored" : "Bir dosya ya da klasör geri yüklendi", "Unlimited" : "Sınırsız", "Upload (max. %s)" : "Yükle (en büyük: %s)", "File handling" : "Dosya işlemleri", @@ -144,6 +144,8 @@ "Copy local link" : "Bağlantıyı kopyala", "Folder" : "Klasör", "Upload" : "Yükle", + "A new file or folder has been deleted" : "Yeni bir dosya ya da klasör silindi", + "A new file or folder has been restored" : "Yeni bir dosya ya da klasör geri yüklendi", "No favorites" : "Sık kullanılan bir öge yok" },"pluralForm" :"nplurals=2; plural=(n > 1);" } \ No newline at end of file diff --git a/apps/files/l10n/vi.js b/apps/files/l10n/vi.js index b84a03068b..83c9ad5690 100644 --- a/apps/files/l10n/vi.js +++ b/apps/files/l10n/vi.js @@ -94,7 +94,6 @@ OC.L10N.register( "You moved {oldfile} to {newfile}" : "Bạn đã chuyển {oldfile} tới {newfile}", "{user} moved {oldfile} to {newfile}" : "{user} đã chuyển {oldfile} tới {newfile}", "A file has been added to or removed from your favorites" : "Một tệp đã được thêm hoặc bị xóa khỏi mục yêu thích của bạn", - "A new file or folder has been restored" : "Một tập tin hoặc thư mục mới đã được khôi phục", "Upload (max. %s)" : "Tải lên (tối đa. %s)", "File handling" : "Xử lý tập tin", "Maximum upload size" : "Kích thước tối đa ", @@ -128,6 +127,7 @@ OC.L10N.register( "Copy local link" : "Sao chép liên kết cục bộ", "Folder" : "Thư mục", "Upload" : "Tải lên", + "A new file or folder has been restored" : "Một tập tin hoặc thư mục mới đã được khôi phục", "No favorites" : "Không có mục ưa thích nào" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/vi.json b/apps/files/l10n/vi.json index 35512dc6a2..3b4d0a4a3a 100644 --- a/apps/files/l10n/vi.json +++ b/apps/files/l10n/vi.json @@ -92,7 +92,6 @@ "You moved {oldfile} to {newfile}" : "Bạn đã chuyển {oldfile} tới {newfile}", "{user} moved {oldfile} to {newfile}" : "{user} đã chuyển {oldfile} tới {newfile}", "A file has been added to or removed from your favorites" : "Một tệp đã được thêm hoặc bị xóa khỏi mục yêu thích của bạn", - "A new file or folder has been restored" : "Một tập tin hoặc thư mục mới đã được khôi phục", "Upload (max. %s)" : "Tải lên (tối đa. %s)", "File handling" : "Xử lý tập tin", "Maximum upload size" : "Kích thước tối đa ", @@ -126,6 +125,7 @@ "Copy local link" : "Sao chép liên kết cục bộ", "Folder" : "Thư mục", "Upload" : "Tải lên", + "A new file or folder has been restored" : "Một tập tin hoặc thư mục mới đã được khôi phục", "No favorites" : "Không có mục ưa thích nào" },"pluralForm" :"nplurals=1; plural=0;" } \ No newline at end of file diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js index 1eefc175ab..906193e5bf 100644 --- a/apps/files/l10n/zh_CN.js +++ b/apps/files/l10n/zh_CN.js @@ -102,9 +102,9 @@ OC.L10N.register( "A file has been added to or removed from your favorites" : "文件已经添加或删除到您的 收藏夹 中", "A file or folder has been changed or renamed" : "文件/文件夹已经 更改 或者 重命名", "A new file or folder has been created" : "新的文件/文件夹已经 创建", - "A new file or folder has been deleted" : "新的文件/文件夹已经 删除", + "A file or folder has been deleted" : "文件/文件夹已删除", "Limit notifications about creation and changes to your favorite files (Stream only)" : "仅限 收藏文件的创建和更改通知 (仅限流)", - "A new file or folder has been restored" : "新的文件/文件夹已经恢复", + "A file or folder has been restored" : "文件/文件夹已恢复", "Unlimited" : "无限制", "Upload (max. %s)" : "上传 (最大 %s)", "File handling" : "文件处理", @@ -146,6 +146,8 @@ OC.L10N.register( "Copy local link" : "复制本地链接", "Folder" : "文件夹", "Upload" : "上传", + "A new file or folder has been deleted" : "新的文件/文件夹已经 删除", + "A new file or folder has been restored" : "新的文件/文件夹已经恢复", "No favorites" : "无收藏" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json index 974b388f1a..1dbe219147 100644 --- a/apps/files/l10n/zh_CN.json +++ b/apps/files/l10n/zh_CN.json @@ -100,9 +100,9 @@ "A file has been added to or removed from your favorites" : "文件已经添加或删除到您的 收藏夹 中", "A file or folder has been changed or renamed" : "文件/文件夹已经 更改 或者 重命名", "A new file or folder has been created" : "新的文件/文件夹已经 创建", - "A new file or folder has been deleted" : "新的文件/文件夹已经 删除", + "A file or folder has been deleted" : "文件/文件夹已删除", "Limit notifications about creation and changes to your favorite files (Stream only)" : "仅限 收藏文件的创建和更改通知 (仅限流)", - "A new file or folder has been restored" : "新的文件/文件夹已经恢复", + "A file or folder has been restored" : "文件/文件夹已恢复", "Unlimited" : "无限制", "Upload (max. %s)" : "上传 (最大 %s)", "File handling" : "文件处理", @@ -144,6 +144,8 @@ "Copy local link" : "复制本地链接", "Folder" : "文件夹", "Upload" : "上传", + "A new file or folder has been deleted" : "新的文件/文件夹已经 删除", + "A new file or folder has been restored" : "新的文件/文件夹已经恢复", "No favorites" : "无收藏" },"pluralForm" :"nplurals=1; plural=0;" } \ No newline at end of file diff --git a/apps/files/l10n/zh_TW.js b/apps/files/l10n/zh_TW.js index ce73c32e00..2b68e6ae0d 100644 --- a/apps/files/l10n/zh_TW.js +++ b/apps/files/l10n/zh_TW.js @@ -1,6 +1,7 @@ OC.L10N.register( "files", { + "Storage is temporarily not available" : "空間暫時無法使用", "Storage invalid" : "無效的儲存空間", "Unknown error" : "未知的錯誤", "All files" : "所有檔案", @@ -13,15 +14,20 @@ OC.L10N.register( "Upload cancelled." : "上傳已取消", "Unable to upload {filename} as it is a directory or has 0 bytes" : "因為 {filename} 是個目錄或是大小為零,所以無法上傳", "Not enough free space, you are uploading {size1} but only {size2} is left" : "可用空間不足,你正要上傳 {size1} 可是只剩下 {size2}", + "Target folder \"{dir}\" does not exist any more" : "資料夾 \"{dir}\" 不存在", + "Not enough free space" : "空間不足", "Uploading..." : "上傳中…", "..." : "...", "{loadedSize} of {totalSize} ({bitrate})" : "{totalSize} 中的 {loadedSize} ({bitrate})", "Actions" : "動作", "Download" : "下載", "Rename" : "重新命名", + "Move" : "移動", + "Target folder" : "目標資料夾", "Delete" : "刪除", "Disconnect storage" : "斷開儲存空間連接", "Unshare" : "取消分享", + "Could not load info for file \"{file}\"" : "無法讀取 \"{file}\" 的詳細資料", "Files" : "檔案", "Details" : "詳細資料", "Select" : "選擇", @@ -39,6 +45,7 @@ OC.L10N.register( "Could not create file \"{file}\" because it already exists" : "無法建立檔案 \"{file}\",因為此檔案已存在", "Could not create folder \"{dir}\" because it already exists" : "無法建立資料夾 \"{dir}\",因為此資料夾已存在", "Error deleting file \"{fileName}\"." : "刪除 \"{fileName}\" 出錯", + "No search results in other folders for {tag}{filter}{endtag}" : "在其它資料夾中沒有找到 {tag}{filter}{endtag}", "Name" : "名稱", "Size" : "大小", "Modified" : "修改時間", @@ -51,22 +58,54 @@ OC.L10N.register( "New" : "新增", "\"{name}\" is an invalid file name." : "{name} 是無效的檔名", "File name cannot be empty." : "檔名不能為空", + "\"{name}\" is not an allowed filetype" : "\"{name}\" 並不是經允許的檔案類型", "Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} 的儲存空間已滿,沒有辦法再更新或是同步檔案!", "Your storage is full, files can not be updated or synced anymore!" : "您的儲存空間已滿,沒有辦法再更新或是同步檔案!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner} 的儲存空間快要滿了 ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "您的儲存空間快要滿了 ({usedSpacePercent}%)", "_matches '{filter}'_::_match '{filter}'_" : ["符合「{filter}」"], "View in folder" : "在資料夾中檢視", + "Copied!" : "已複製", + "Copy direct link (only works for users who have access to this file/folder)" : "複製直接連結(只對能存取的用戶有用)", "Path" : "路徑", "_%n byte_::_%n bytes_" : ["%n 位元組"], "Favorited" : "已加入最愛", "Favorite" : "我的最愛", - "Folder" : "資料夾", "New folder" : "新資料夾", - "Upload" : "上傳", + "Upload file" : "上傳檔案", "An error occurred while trying to update the tags" : "更新標籤時發生錯誤", + "Added to favorites" : "添加到最愛", + "Removed from favorites" : "從最愛移除", + "You added {file} to your favorites" : "你已添加 {file} 至最愛", + "You removed {file} from your favorites" : "你已移除 {file} 從最愛", + "File changes" : "檔案更動", + "Created by {user}" : "由 {user} 建立", + "Changed by {user}" : "由 {user} 改動", + "Deleted by {user}" : "由 {user} 刪除", + "Restored by {user}" : "由 {user} 還原", + "Renamed by {user}" : "由 {user} 重新命名", + "Moved by {user}" : "由 {user} 移動", + "\"remote user\"" : "「遠端用戶」", + "You created {file}" : "您建立了 {file}", + "{user} created {file}" : "{user} 建立了 {file}", + "{file} was created in a public folder" : "{file} 已建立於共享資料夾", + "You changed {file}" : "您變更了 {file}", + "{user} changed {file}" : "{user} 變更了 {file}", + "You deleted {file}" : "您刪除了 {file}", + "{user} deleted {file}" : "{user} 刪除了 {file}", + "You restored {file}" : "您還原了 {file}", + "{user} restored {file}" : "{user} 還原了 {file}", + "You renamed {oldfile} to {newfile}" : "您變更 {oldfile} 為 {newfile}", + "{user} renamed {oldfile} to {newfile}" : "{user} 變更 {oldfile} 為 {newfile}", + "You moved {oldfile} to {newfile}" : "您移動 {oldfile} 到 {newfile}", + "{user} moved {oldfile} to {newfile}" : "{user} 移動 {oldfile} 到 {newfile}", + "A file has been added to or removed from your favorites" : "檔案已被新增或移除從 最愛", + "A file or folder has been changed or renamed" : "檔案或目錄已被 更動改名", "A new file or folder has been created" : "新的檔案或目錄已被 建立", + "A file or folder has been deleted" : "檔案或目錄已被 刪除", "Limit notifications about creation and changes to your favorite files (Stream only)" : "僅顯示已加星號的檔案的動態通知(僅限訊息串)", + "A file or folder has been restored" : "檔案或目錄已被 恢復", + "Unlimited" : "無限制", "Upload (max. %s)" : "上傳(至多 %s)", "File handling" : "檔案處理", "Maximum upload size" : "上傳限制", @@ -74,6 +113,8 @@ OC.L10N.register( "Save" : "儲存", "With PHP-FPM it might take 5 minutes for changes to be applied." : "如果使用 PHP-FPM ,此設定值需要5分鐘左右才會生效。", "Missing permissions to edit from here." : "您沒有在此編輯的權限", + "%s of %s used" : "在 %s 中使用了 %s", + "%s used" : "%s已使用", "Settings" : "設定", "Show hidden files" : "顯示隱藏檔", "WebDAV" : "WebDAV", @@ -84,55 +125,29 @@ OC.L10N.register( "Select all" : "全選", "Upload too large" : "上傳過大", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "您試圖上傳的檔案大小超過伺服器的限制", - "No favorites" : "沒有最愛", + "No favorites yet" : "尚無最愛", "Files and folders you mark as favorite will show up here" : "您標記為最愛的檔案與資料夾將會顯示在這裡", + "Shared with you" : "與您分享", + "Shared with others" : "與其他人分享", + "Shared by link" : "由連結分享", + "Tags" : "標籤", + "Deleted files" : "回收桶", "Text file" : "文字檔", "New text file.txt" : "新文字檔.txt", - "Storage not available" : "無法存取儲存空間", - "Unable to set upload directory." : "無法設定上傳目錄", - "Invalid Token" : "無效的 token", - "No file was uploaded. Unknown error" : "沒有檔案被上傳,原因未知", - "There is no error, the file uploaded with success" : "一切都順利,檔案上傳成功", - "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "上傳的檔案大小超過 php.ini 當中 upload_max_filesize 參數的設定:", - "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "上傳的檔案大小超過 HTML 表單中 MAX_FILE_SIZE 的限制", - "The uploaded file was only partially uploaded" : "只有檔案的一部分被上傳", - "No file was uploaded" : "沒有檔案被上傳", - "Missing a temporary folder" : "找不到暫存資料夾", - "Failed to write to disk" : "寫入硬碟失敗", - "Not enough storage available" : "儲存空間不足", - "The target folder has been moved or deleted." : "目標資料夾已經被搬移或刪除", - "Upload failed. Could not find uploaded file" : "上傳失敗,找不到上傳的檔案", - "Upload failed. Could not get file info." : "上傳失敗,無法取得檔案資訊", - "Invalid directory." : "無效的資料夾", - "Total file size {size1} exceeds upload limit {size2}" : "檔案大小總和 {size1} 超過上傳限制 {size2}", - "Error uploading file \"{fileName}\": {message}" : "上傳檔案 \"{fileName}\" 發生錯誤:{message}", - "Could not get result from server." : "無法從伺服器取回結果", - "{hours}:{minutes}:{seconds} hour{plural_s} left" : "剩下 {hours}:{minutes}:{seconds} 小時", + "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["剩下 {hours}:{minutes}:{seconds} 小時"], "{hours}:{minutes}h" : "{hours}:{minutes} 小時", - "{minutes}:{seconds} minute{plural_s} left" : "剩下 {minutes}:{seconds} 分鐘", + "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["剩下 {minutes}:{seconds} 分鐘"], "{minutes}:{seconds}m" : "{minutes}:{seconds} 分", - "{seconds} second{plural_s} left" : "剩下 {seconds} 秒", + "_{seconds} second left_::_{seconds} seconds left_" : ["剩下 {seconds} 秒"], "{seconds}s" : "{seconds} 秒", "Any moment now..." : "即將完成…", "Soon..." : "即將完成…", "File upload is in progress. Leaving the page now will cancel the upload." : "檔案上傳中,離開此頁面將會取消上傳", - "No entries in this folder match '{filter}'" : "在此資料夾中沒有項目與 '{filter}' 相符", - "Local link" : "本地連結", - "{newname} already exists" : "{newname} 已經存在", - "A file or folder has been changed" : "檔案或目錄已被 變更", - "A file or folder has been deleted" : "檔案或目錄已被 刪除", - "A file or folder has been restored" : "檔案或目錄已被 恢復", - "You created %1$s" : "您建立了 %1$s", - "%2$s created %1$s" : "%2$s 已建立 %1$s", - "%1$s was created in a public folder" : "%1$s 已建立於公開的目錄", - "You changed %1$s" : "您變更了 %1$s", - "%2$s changed %1$s" : "%2$s 已變更了 %1$s", - "You deleted %1$s" : "您刪除了 %1$s", - "%2$s deleted %1$s" : "%2$s 已刪除 %1$s", - "You restored %1$s" : "您還原了 %1$s", - "%2$s restored %1$s" : "%2$s 還原了 %1$s", - "Changed by %2$s" : "由 %2$s 改動", - "Deleted by %2$s" : "由 %2$s 刪除", - "Restored by %2$s" : "由 %2$s 還原" + "Copy local link" : "複製本地連結", + "Folder" : "資料夾", + "Upload" : "上傳", + "A new file or folder has been deleted" : "檔案或目錄已被 刪除", + "A new file or folder has been restored" : "檔案或目錄已被 恢復", + "No favorites" : "沒有最愛" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/zh_TW.json b/apps/files/l10n/zh_TW.json index 697b35eb11..0efb86940c 100644 --- a/apps/files/l10n/zh_TW.json +++ b/apps/files/l10n/zh_TW.json @@ -1,4 +1,5 @@ { "translations": { + "Storage is temporarily not available" : "空間暫時無法使用", "Storage invalid" : "無效的儲存空間", "Unknown error" : "未知的錯誤", "All files" : "所有檔案", @@ -11,15 +12,20 @@ "Upload cancelled." : "上傳已取消", "Unable to upload {filename} as it is a directory or has 0 bytes" : "因為 {filename} 是個目錄或是大小為零,所以無法上傳", "Not enough free space, you are uploading {size1} but only {size2} is left" : "可用空間不足,你正要上傳 {size1} 可是只剩下 {size2}", + "Target folder \"{dir}\" does not exist any more" : "資料夾 \"{dir}\" 不存在", + "Not enough free space" : "空間不足", "Uploading..." : "上傳中…", "..." : "...", "{loadedSize} of {totalSize} ({bitrate})" : "{totalSize} 中的 {loadedSize} ({bitrate})", "Actions" : "動作", "Download" : "下載", "Rename" : "重新命名", + "Move" : "移動", + "Target folder" : "目標資料夾", "Delete" : "刪除", "Disconnect storage" : "斷開儲存空間連接", "Unshare" : "取消分享", + "Could not load info for file \"{file}\"" : "無法讀取 \"{file}\" 的詳細資料", "Files" : "檔案", "Details" : "詳細資料", "Select" : "選擇", @@ -37,6 +43,7 @@ "Could not create file \"{file}\" because it already exists" : "無法建立檔案 \"{file}\",因為此檔案已存在", "Could not create folder \"{dir}\" because it already exists" : "無法建立資料夾 \"{dir}\",因為此資料夾已存在", "Error deleting file \"{fileName}\"." : "刪除 \"{fileName}\" 出錯", + "No search results in other folders for {tag}{filter}{endtag}" : "在其它資料夾中沒有找到 {tag}{filter}{endtag}", "Name" : "名稱", "Size" : "大小", "Modified" : "修改時間", @@ -49,22 +56,54 @@ "New" : "新增", "\"{name}\" is an invalid file name." : "{name} 是無效的檔名", "File name cannot be empty." : "檔名不能為空", + "\"{name}\" is not an allowed filetype" : "\"{name}\" 並不是經允許的檔案類型", "Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} 的儲存空間已滿,沒有辦法再更新或是同步檔案!", "Your storage is full, files can not be updated or synced anymore!" : "您的儲存空間已滿,沒有辦法再更新或是同步檔案!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner} 的儲存空間快要滿了 ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "您的儲存空間快要滿了 ({usedSpacePercent}%)", "_matches '{filter}'_::_match '{filter}'_" : ["符合「{filter}」"], "View in folder" : "在資料夾中檢視", + "Copied!" : "已複製", + "Copy direct link (only works for users who have access to this file/folder)" : "複製直接連結(只對能存取的用戶有用)", "Path" : "路徑", "_%n byte_::_%n bytes_" : ["%n 位元組"], "Favorited" : "已加入最愛", "Favorite" : "我的最愛", - "Folder" : "資料夾", "New folder" : "新資料夾", - "Upload" : "上傳", + "Upload file" : "上傳檔案", "An error occurred while trying to update the tags" : "更新標籤時發生錯誤", + "Added to favorites" : "添加到最愛", + "Removed from favorites" : "從最愛移除", + "You added {file} to your favorites" : "你已添加 {file} 至最愛", + "You removed {file} from your favorites" : "你已移除 {file} 從最愛", + "File changes" : "檔案更動", + "Created by {user}" : "由 {user} 建立", + "Changed by {user}" : "由 {user} 改動", + "Deleted by {user}" : "由 {user} 刪除", + "Restored by {user}" : "由 {user} 還原", + "Renamed by {user}" : "由 {user} 重新命名", + "Moved by {user}" : "由 {user} 移動", + "\"remote user\"" : "「遠端用戶」", + "You created {file}" : "您建立了 {file}", + "{user} created {file}" : "{user} 建立了 {file}", + "{file} was created in a public folder" : "{file} 已建立於共享資料夾", + "You changed {file}" : "您變更了 {file}", + "{user} changed {file}" : "{user} 變更了 {file}", + "You deleted {file}" : "您刪除了 {file}", + "{user} deleted {file}" : "{user} 刪除了 {file}", + "You restored {file}" : "您還原了 {file}", + "{user} restored {file}" : "{user} 還原了 {file}", + "You renamed {oldfile} to {newfile}" : "您變更 {oldfile} 為 {newfile}", + "{user} renamed {oldfile} to {newfile}" : "{user} 變更 {oldfile} 為 {newfile}", + "You moved {oldfile} to {newfile}" : "您移動 {oldfile} 到 {newfile}", + "{user} moved {oldfile} to {newfile}" : "{user} 移動 {oldfile} 到 {newfile}", + "A file has been added to or removed from your favorites" : "檔案已被新增或移除從 最愛", + "A file or folder has been changed or renamed" : "檔案或目錄已被 更動改名", "A new file or folder has been created" : "新的檔案或目錄已被 建立", + "A file or folder has been deleted" : "檔案或目錄已被 刪除", "Limit notifications about creation and changes to your favorite files (Stream only)" : "僅顯示已加星號的檔案的動態通知(僅限訊息串)", + "A file or folder has been restored" : "檔案或目錄已被 恢復", + "Unlimited" : "無限制", "Upload (max. %s)" : "上傳(至多 %s)", "File handling" : "檔案處理", "Maximum upload size" : "上傳限制", @@ -72,6 +111,8 @@ "Save" : "儲存", "With PHP-FPM it might take 5 minutes for changes to be applied." : "如果使用 PHP-FPM ,此設定值需要5分鐘左右才會生效。", "Missing permissions to edit from here." : "您沒有在此編輯的權限", + "%s of %s used" : "在 %s 中使用了 %s", + "%s used" : "%s已使用", "Settings" : "設定", "Show hidden files" : "顯示隱藏檔", "WebDAV" : "WebDAV", @@ -82,55 +123,29 @@ "Select all" : "全選", "Upload too large" : "上傳過大", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "您試圖上傳的檔案大小超過伺服器的限制", - "No favorites" : "沒有最愛", + "No favorites yet" : "尚無最愛", "Files and folders you mark as favorite will show up here" : "您標記為最愛的檔案與資料夾將會顯示在這裡", + "Shared with you" : "與您分享", + "Shared with others" : "與其他人分享", + "Shared by link" : "由連結分享", + "Tags" : "標籤", + "Deleted files" : "回收桶", "Text file" : "文字檔", "New text file.txt" : "新文字檔.txt", - "Storage not available" : "無法存取儲存空間", - "Unable to set upload directory." : "無法設定上傳目錄", - "Invalid Token" : "無效的 token", - "No file was uploaded. Unknown error" : "沒有檔案被上傳,原因未知", - "There is no error, the file uploaded with success" : "一切都順利,檔案上傳成功", - "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "上傳的檔案大小超過 php.ini 當中 upload_max_filesize 參數的設定:", - "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "上傳的檔案大小超過 HTML 表單中 MAX_FILE_SIZE 的限制", - "The uploaded file was only partially uploaded" : "只有檔案的一部分被上傳", - "No file was uploaded" : "沒有檔案被上傳", - "Missing a temporary folder" : "找不到暫存資料夾", - "Failed to write to disk" : "寫入硬碟失敗", - "Not enough storage available" : "儲存空間不足", - "The target folder has been moved or deleted." : "目標資料夾已經被搬移或刪除", - "Upload failed. Could not find uploaded file" : "上傳失敗,找不到上傳的檔案", - "Upload failed. Could not get file info." : "上傳失敗,無法取得檔案資訊", - "Invalid directory." : "無效的資料夾", - "Total file size {size1} exceeds upload limit {size2}" : "檔案大小總和 {size1} 超過上傳限制 {size2}", - "Error uploading file \"{fileName}\": {message}" : "上傳檔案 \"{fileName}\" 發生錯誤:{message}", - "Could not get result from server." : "無法從伺服器取回結果", - "{hours}:{minutes}:{seconds} hour{plural_s} left" : "剩下 {hours}:{minutes}:{seconds} 小時", + "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["剩下 {hours}:{minutes}:{seconds} 小時"], "{hours}:{minutes}h" : "{hours}:{minutes} 小時", - "{minutes}:{seconds} minute{plural_s} left" : "剩下 {minutes}:{seconds} 分鐘", + "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["剩下 {minutes}:{seconds} 分鐘"], "{minutes}:{seconds}m" : "{minutes}:{seconds} 分", - "{seconds} second{plural_s} left" : "剩下 {seconds} 秒", + "_{seconds} second left_::_{seconds} seconds left_" : ["剩下 {seconds} 秒"], "{seconds}s" : "{seconds} 秒", "Any moment now..." : "即將完成…", "Soon..." : "即將完成…", "File upload is in progress. Leaving the page now will cancel the upload." : "檔案上傳中,離開此頁面將會取消上傳", - "No entries in this folder match '{filter}'" : "在此資料夾中沒有項目與 '{filter}' 相符", - "Local link" : "本地連結", - "{newname} already exists" : "{newname} 已經存在", - "A file or folder has been changed" : "檔案或目錄已被 變更", - "A file or folder has been deleted" : "檔案或目錄已被 刪除", - "A file or folder has been restored" : "檔案或目錄已被 恢復", - "You created %1$s" : "您建立了 %1$s", - "%2$s created %1$s" : "%2$s 已建立 %1$s", - "%1$s was created in a public folder" : "%1$s 已建立於公開的目錄", - "You changed %1$s" : "您變更了 %1$s", - "%2$s changed %1$s" : "%2$s 已變更了 %1$s", - "You deleted %1$s" : "您刪除了 %1$s", - "%2$s deleted %1$s" : "%2$s 已刪除 %1$s", - "You restored %1$s" : "您還原了 %1$s", - "%2$s restored %1$s" : "%2$s 還原了 %1$s", - "Changed by %2$s" : "由 %2$s 改動", - "Deleted by %2$s" : "由 %2$s 刪除", - "Restored by %2$s" : "由 %2$s 還原" + "Copy local link" : "複製本地連結", + "Folder" : "資料夾", + "Upload" : "上傳", + "A new file or folder has been deleted" : "檔案或目錄已被 刪除", + "A new file or folder has been restored" : "檔案或目錄已被 恢復", + "No favorites" : "沒有最愛" },"pluralForm" :"nplurals=1; plural=0;" } \ No newline at end of file diff --git a/apps/files/lib/Activity/Settings/FileDeleted.php b/apps/files/lib/Activity/Settings/FileDeleted.php index c4948ded2f..256e412b3f 100644 --- a/apps/files/lib/Activity/Settings/FileDeleted.php +++ b/apps/files/lib/Activity/Settings/FileDeleted.php @@ -50,7 +50,7 @@ class FileDeleted implements ISetting { * @since 11.0.0 */ public function getName() { - return $this->l->t('A new file or folder has been deleted'); + return $this->l->t('A file or folder has been deleted'); } /** diff --git a/apps/files/lib/Activity/Settings/FileRestored.php b/apps/files/lib/Activity/Settings/FileRestored.php index cedfef441e..bac5485f5e 100644 --- a/apps/files/lib/Activity/Settings/FileRestored.php +++ b/apps/files/lib/Activity/Settings/FileRestored.php @@ -50,7 +50,7 @@ class FileRestored implements ISetting { * @since 11.0.0 */ public function getName() { - return $this->l->t('A new file or folder has been restored'); + return $this->l->t('A file or folder has been restored'); } /** diff --git a/apps/files/lib/Helper.php b/apps/files/lib/Helper.php index d2cebce5dd..4a5595999d 100644 --- a/apps/files/lib/Helper.php +++ b/apps/files/lib/Helper.php @@ -227,7 +227,7 @@ class Helper { foreach ($filesById as $key => $fileWithTags) { foreach($fileList as $key2 => $file){ - if( $file[$fileIdentifier] == $key){ + if( $file[$fileIdentifier] === $key){ $fileList[$key2] = $fileWithTags; } } diff --git a/apps/files/lib/Settings/Admin.php b/apps/files/lib/Settings/Admin.php index da1d5deaf3..faaeb5b89c 100644 --- a/apps/files/lib/Settings/Admin.php +++ b/apps/files/lib/Settings/Admin.php @@ -46,7 +46,7 @@ class Admin implements ISettings { * @return TemplateResponse */ public function getForm() { - $htaccessWorking = (getenv('htaccessWorking') == 'true'); + $htaccessWorking = (getenv('htaccessWorking') === 'true'); $htaccessWritable = is_writable(\OC::$SERVERROOT.'/.htaccess'); $userIniWritable = is_writable(\OC::$SERVERROOT.'/.user.ini'); diff --git a/apps/files_external/ajax/oauth2.php b/apps/files_external/ajax/oauth2.php index db2570800a..8b257b77ef 100644 --- a/apps/files_external/ajax/oauth2.php +++ b/apps/files_external/ajax/oauth2.php @@ -46,8 +46,8 @@ if (isset($_POST['client_id']) && isset($_POST['client_secret']) && isset($_POST $client->setApprovalPrompt('force'); $client->setAccessType('offline'); if (isset($_POST['step'])) { - $step = $_POST['step']; - if ($step == 1) { + $step = (int) $_POST['step']; + if ($step === 1) { try { $authUrl = $client->createAuthUrl(); OCP\JSON::success(array('data' => array( @@ -58,7 +58,7 @@ if (isset($_POST['client_id']) && isset($_POST['client_secret']) && isset($_POST 'message' => $l->t('Step 1 failed. Exception: %s', array($exception->getMessage())) ))); } - } else if ($step == 2 && isset($_POST['code'])) { + } else if ($step === 2 && isset($_POST['code'])) { try { $token = $client->authenticate((string)$_POST['code']); OCP\JSON::success(array('data' => array( diff --git a/apps/files_external/js/statusmanager.js b/apps/files_external/js/statusmanager.js index ae4ce98913..6c1a965c33 100644 --- a/apps/files_external/js/statusmanager.js +++ b/apps/files_external/js/statusmanager.js @@ -102,7 +102,7 @@ OCA.External.StatusManager = { var message; if (mountData.location === 3) { // In this case the error is because mount point use Login credentials and don't exist in the session - message = t('files_external', 'Couldn\'t access. Please logout and login to activate this mount point'); + message = t('files_external', 'Couldn\'t access. Please log out and in again to activate this mount point'); } else { message = t('files_external', 'Couldn\'t get the information from the remote server: {code} {type}', { code: jqxhr.status, @@ -267,7 +267,7 @@ OCA.External.StatusManager = { // check if we have a list first if (list === undefined && !self.emptyWarningShown) { self.emptyWarningShown = true; - OC.Notification.show(t('files_external', 'Couldn\'t get the list of Windows network drive mount points: empty response from the server'), + OC.Notification.show(t('files_external', 'Couldn\'t fetch list of Windows network drive mount points: Empty response from server'), {type: 'error'} ); return; diff --git a/apps/files_external/l10n/cs.js b/apps/files_external/l10n/cs.js index 856b23415c..616ef40d3f 100644 --- a/apps/files_external/l10n/cs.js +++ b/apps/files_external/l10n/cs.js @@ -24,13 +24,13 @@ OC.L10N.register( "Saving..." : "Ukládá se...", "Save" : "Uložit", "Empty response from the server" : "Prázdná odpověď serveru", - "Couldn't access. Please logout and login to activate this mount point" : "Nelze připojit. Pro aktivaci tohoto přípojného bodu se prosím odhlašte a znovu přihlašte", + "Couldn't access. Please log out and in again to activate this mount point" : "Nelze připojit. Pro aktivaci tohoto přípojného bodu se prosím odhlašte a znovu přihlašte", "Couldn't get the information from the remote server: {code} {type}" : "Nelze obdržet informaci ze vzdáleného serveru: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Nelze obdržet seznam vzdálených přípojných bodů: {type}", "There was an error with message: " : "Došlo k chybě s tímto hlášením:", "External mount error" : "Chyba vzdáleného úložiště", "external-storage" : "external-storage", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Nelze obdržet seznam síťových úložišť systému Windows: prázdná odpověď serveru", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Nelze obdržet seznam síťových úložišť systému Windows: prázdná odpověď serveru", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Některá z nastavených vzdálených úložišť nejsou připojena. Pro více informací prosím klikněte na červenou šipku(y)", "Please enter the credentials for the {mount} mount" : "Zadejte prosím přihlašovací údaje k přípojnému bodu {mount}", "Username" : "Uživatelské jméno", diff --git a/apps/files_external/l10n/cs.json b/apps/files_external/l10n/cs.json index 574ea9233c..1ef87817d5 100644 --- a/apps/files_external/l10n/cs.json +++ b/apps/files_external/l10n/cs.json @@ -22,13 +22,13 @@ "Saving..." : "Ukládá se...", "Save" : "Uložit", "Empty response from the server" : "Prázdná odpověď serveru", - "Couldn't access. Please logout and login to activate this mount point" : "Nelze připojit. Pro aktivaci tohoto přípojného bodu se prosím odhlašte a znovu přihlašte", + "Couldn't access. Please log out and in again to activate this mount point" : "Nelze připojit. Pro aktivaci tohoto přípojného bodu se prosím odhlašte a znovu přihlašte", "Couldn't get the information from the remote server: {code} {type}" : "Nelze obdržet informaci ze vzdáleného serveru: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Nelze obdržet seznam vzdálených přípojných bodů: {type}", "There was an error with message: " : "Došlo k chybě s tímto hlášením:", "External mount error" : "Chyba vzdáleného úložiště", "external-storage" : "external-storage", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Nelze obdržet seznam síťových úložišť systému Windows: prázdná odpověď serveru", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Nelze obdržet seznam síťových úložišť systému Windows: prázdná odpověď serveru", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Některá z nastavených vzdálených úložišť nejsou připojena. Pro více informací prosím klikněte na červenou šipku(y)", "Please enter the credentials for the {mount} mount" : "Zadejte prosím přihlašovací údaje k přípojnému bodu {mount}", "Username" : "Uživatelské jméno", diff --git a/apps/files_external/l10n/de.js b/apps/files_external/l10n/de.js index d59d8895b4..1af99a29bc 100644 --- a/apps/files_external/l10n/de.js +++ b/apps/files_external/l10n/de.js @@ -24,13 +24,13 @@ OC.L10N.register( "Saving..." : "Speichere…", "Save" : "Speichern", "Empty response from the server" : "Leere Antwort vom Server", - "Couldn't access. Please logout and login to activate this mount point" : "Anmeldung nicht möglich. Bitte abmelden und erneut anmelden, damit von diesem Endpunkt zugegriffen werden kann.", + "Couldn't access. Please log out and in again to activate this mount point" : "Zugriff nicht möglich. Bitte abmelden und erneut anmelden, um diesen Endpunkt zu aktivieren.", "Couldn't get the information from the remote server: {code} {type}" : "Konnte die Information vom entfernten Server nicht abrufen: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Die Liste der externen Endpunkte konnte nicht empfangen werden: {type}", "There was an error with message: " : "Es ist ein Fehler mit folgender Meldung aufgetreten:", "External mount error" : "Fehler beim Einbinden des externen Speichers", "external-storage" : "Externer Speicher", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Es konnte keine Liste der Windows-Netzlaufwerke erstellt werden: leer Antwort vom Server", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Es konnte keine Liste der Windows-Netzlaufwerke empfangen werden: Leere Antwort vom Server", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Einige der konfigurierten externen Bereitstellungspunkte sind nicht angeschlossen. Bitte klicke auf die roten Zeile(n) für weitere Informationen", "Please enter the credentials for the {mount} mount" : "Bitte gib die Anmeldeinformationen für den {mount} externen Bereitstellungspunkt ein", "Username" : "Benutzername", diff --git a/apps/files_external/l10n/de.json b/apps/files_external/l10n/de.json index 2f3388eac2..f3df4371ab 100644 --- a/apps/files_external/l10n/de.json +++ b/apps/files_external/l10n/de.json @@ -22,13 +22,13 @@ "Saving..." : "Speichere…", "Save" : "Speichern", "Empty response from the server" : "Leere Antwort vom Server", - "Couldn't access. Please logout and login to activate this mount point" : "Anmeldung nicht möglich. Bitte abmelden und erneut anmelden, damit von diesem Endpunkt zugegriffen werden kann.", + "Couldn't access. Please log out and in again to activate this mount point" : "Zugriff nicht möglich. Bitte abmelden und erneut anmelden, um diesen Endpunkt zu aktivieren.", "Couldn't get the information from the remote server: {code} {type}" : "Konnte die Information vom entfernten Server nicht abrufen: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Die Liste der externen Endpunkte konnte nicht empfangen werden: {type}", "There was an error with message: " : "Es ist ein Fehler mit folgender Meldung aufgetreten:", "External mount error" : "Fehler beim Einbinden des externen Speichers", "external-storage" : "Externer Speicher", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Es konnte keine Liste der Windows-Netzlaufwerke erstellt werden: leer Antwort vom Server", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Es konnte keine Liste der Windows-Netzlaufwerke empfangen werden: Leere Antwort vom Server", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Einige der konfigurierten externen Bereitstellungspunkte sind nicht angeschlossen. Bitte klicke auf die roten Zeile(n) für weitere Informationen", "Please enter the credentials for the {mount} mount" : "Bitte gib die Anmeldeinformationen für den {mount} externen Bereitstellungspunkt ein", "Username" : "Benutzername", diff --git a/apps/files_external/l10n/de_DE.js b/apps/files_external/l10n/de_DE.js index be858c5b5d..3972cbfa58 100644 --- a/apps/files_external/l10n/de_DE.js +++ b/apps/files_external/l10n/de_DE.js @@ -24,13 +24,13 @@ OC.L10N.register( "Saving..." : "Speichere …", "Save" : "Speichern", "Empty response from the server" : "Leere Antwort vom Server erhalten", - "Couldn't access. Please logout and login to activate this mount point" : "Anmeldung nicht möglich. Bitte melden Sie sich ab und wieder an, damit Sie von diesem aus Endpunkt zugreifen können.", + "Couldn't access. Please log out and in again to activate this mount point" : "Zugriff nicht möglich. Bitte melden Sie sich ab und wieder an, um diesen Endpunkt zu aktivieren.", "Couldn't get the information from the remote server: {code} {type}" : "Konnte die Information vom entfernten Server nicht abrufen: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Konnte die Liste von externen Speichern nicht laden: {type}", "There was an error with message: " : "Ein Fehler ist aufgetreten:", "External mount error" : "Externer Einhängefehler", "external-storage" : "externer Speicher", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Es konnte keine Liste der Windows-Netzlaufwerke erstellt werden: leer Antwort vom Server", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Es konnte keine Liste der Windows-Netzlaufwerke empfangen werden: Leere Antwort vom Server", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Einige der konfigurierten externen Bereitstellungspunkte sind nicht angeschlossen. Bitte klicke Sie auf die roten Zeile(n) für weitere Informationen", "Please enter the credentials for the {mount} mount" : "Bitte geben Sie die Zugangsdaten für den {mount} Speicher an", "Username" : "Benutzername", diff --git a/apps/files_external/l10n/de_DE.json b/apps/files_external/l10n/de_DE.json index c2dc5d2ffc..92ccc4cb94 100644 --- a/apps/files_external/l10n/de_DE.json +++ b/apps/files_external/l10n/de_DE.json @@ -22,13 +22,13 @@ "Saving..." : "Speichere …", "Save" : "Speichern", "Empty response from the server" : "Leere Antwort vom Server erhalten", - "Couldn't access. Please logout and login to activate this mount point" : "Anmeldung nicht möglich. Bitte melden Sie sich ab und wieder an, damit Sie von diesem aus Endpunkt zugreifen können.", + "Couldn't access. Please log out and in again to activate this mount point" : "Zugriff nicht möglich. Bitte melden Sie sich ab und wieder an, um diesen Endpunkt zu aktivieren.", "Couldn't get the information from the remote server: {code} {type}" : "Konnte die Information vom entfernten Server nicht abrufen: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Konnte die Liste von externen Speichern nicht laden: {type}", "There was an error with message: " : "Ein Fehler ist aufgetreten:", "External mount error" : "Externer Einhängefehler", "external-storage" : "externer Speicher", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Es konnte keine Liste der Windows-Netzlaufwerke erstellt werden: leer Antwort vom Server", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Es konnte keine Liste der Windows-Netzlaufwerke empfangen werden: Leere Antwort vom Server", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Einige der konfigurierten externen Bereitstellungspunkte sind nicht angeschlossen. Bitte klicke Sie auf die roten Zeile(n) für weitere Informationen", "Please enter the credentials for the {mount} mount" : "Bitte geben Sie die Zugangsdaten für den {mount} Speicher an", "Username" : "Benutzername", diff --git a/apps/files_external/l10n/el.js b/apps/files_external/l10n/el.js index b78e01863d..e6c3055146 100644 --- a/apps/files_external/l10n/el.js +++ b/apps/files_external/l10n/el.js @@ -24,13 +24,14 @@ OC.L10N.register( "Saving..." : "Γίνεται αποθήκευση...", "Save" : "Αποθήκευση", "Empty response from the server" : "Κενή απάντηση από τον διακομιστή", - "Couldn't access. Please logout and login to activate this mount point" : "Αδυναμία πρόσβασης. Παρακαλώ εξέλθετε και εισέλθετε ξανά ώστε να ενεργοποιήσετε το σημείο προσάρτησης", + "Couldn't access. Please log out and in again to activate this mount point" : "Αδυναμία πρόσβασης. Παρακαλούμε αποσυνδεθείτε και συνδεθείτε ξανά για ενεργοποίηση του σημείου προσάρτησης", "Couldn't get the information from the remote server: {code} {type}" : "Δεν μπορέσαμε να πάρουμε πληροφορίες απο τον απομακρυσμένο εξυπηρετητή: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Δεν μπορέσαμε να πάρουμε την λίστα εξωτερικών σημείων προσάρτησης: {type}", "There was an error with message: " : "Υπήρξε σφάλμα στο μήνυμα:", "External mount error" : "Σφάλμα εξωτερικής προσάρτησης", "external-storage" : "εξωτερική-αποθήκευση", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Δεν μπορέσαμε να πάρουμε την λίστα των Windows δυκτιακών σημείων προσάρτησης: κενή απάντηση από τον εξυπηρετητή ", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Αδυναμία λήψης της λίστας των σημείων προσάρτησης δικτύων Windows: Κενή απάντηση από τον διακομιστή", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Μερικά από τα διαμορφωμένα εξωτερικά σημεία προσάρτησης δεν είναι συνδεδεμένα. Παρακαλούμε κάντε κλικ στο κόκκινο βέλος(οι) για περισσότερες πληροφορίες", "Please enter the credentials for the {mount} mount" : "Παρακαλούμε βάλτε τα διαπιστευτήρια για την {mount} προσάρτηση", "Username" : "Όνομα χρήστη", "Password" : "Κωδικός πρόσβασης", @@ -104,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." : "Η cURL υποστήριξη στην PHP δεν είναι ενεργοποιημένη. Η προσάρτηση του %s δεν είναι δυνατή. Παρακαλούμε ζητήστε από τον διαχειριστή του συστήματός σας να το εγκαταστήσει. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Η FTP υποστήριξη στην PHP δεν είναι ενεργοποιημένη ή εγκατεστημένη. Η προσάρτηση του %s δεν είναι δυνατή. Παρακαλούμε ζητήστε τον διαχειριστή του συστήματός σας να το εγκατασταστήσει. ", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" δεν είναι εγκατεστημένο. Η προσάρτηση του %s δεν είναι δυνατή. Παρακαλούμε ζητήστε τον διαχειριστή του συστήματός σας να το εγκαταστήσει. ", + "External storage support" : "Υποστήριξη εξωτερικής αποθήκευσης", "No external storage configured" : "Δεν έχει ρυθμιστεί κανένα εξωτερικό μέσο αποθήκευσης", "You can add external storages in the personal settings" : "Μπορείτε να προσθέσετε εξωτερικά μέσα αποθήκευσης στις προσωπικές ρυθμίσεις", "Name" : "Όνομα", diff --git a/apps/files_external/l10n/el.json b/apps/files_external/l10n/el.json index 67182e0b65..27b854551a 100644 --- a/apps/files_external/l10n/el.json +++ b/apps/files_external/l10n/el.json @@ -22,13 +22,14 @@ "Saving..." : "Γίνεται αποθήκευση...", "Save" : "Αποθήκευση", "Empty response from the server" : "Κενή απάντηση από τον διακομιστή", - "Couldn't access. Please logout and login to activate this mount point" : "Αδυναμία πρόσβασης. Παρακαλώ εξέλθετε και εισέλθετε ξανά ώστε να ενεργοποιήσετε το σημείο προσάρτησης", + "Couldn't access. Please log out and in again to activate this mount point" : "Αδυναμία πρόσβασης. Παρακαλούμε αποσυνδεθείτε και συνδεθείτε ξανά για ενεργοποίηση του σημείου προσάρτησης", "Couldn't get the information from the remote server: {code} {type}" : "Δεν μπορέσαμε να πάρουμε πληροφορίες απο τον απομακρυσμένο εξυπηρετητή: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Δεν μπορέσαμε να πάρουμε την λίστα εξωτερικών σημείων προσάρτησης: {type}", "There was an error with message: " : "Υπήρξε σφάλμα στο μήνυμα:", "External mount error" : "Σφάλμα εξωτερικής προσάρτησης", "external-storage" : "εξωτερική-αποθήκευση", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Δεν μπορέσαμε να πάρουμε την λίστα των Windows δυκτιακών σημείων προσάρτησης: κενή απάντηση από τον εξυπηρετητή ", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Αδυναμία λήψης της λίστας των σημείων προσάρτησης δικτύων Windows: Κενή απάντηση από τον διακομιστή", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Μερικά από τα διαμορφωμένα εξωτερικά σημεία προσάρτησης δεν είναι συνδεδεμένα. Παρακαλούμε κάντε κλικ στο κόκκινο βέλος(οι) για περισσότερες πληροφορίες", "Please enter the credentials for the {mount} mount" : "Παρακαλούμε βάλτε τα διαπιστευτήρια για την {mount} προσάρτηση", "Username" : "Όνομα χρήστη", "Password" : "Κωδικός πρόσβασης", @@ -102,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." : "Η cURL υποστήριξη στην PHP δεν είναι ενεργοποιημένη. Η προσάρτηση του %s δεν είναι δυνατή. Παρακαλούμε ζητήστε από τον διαχειριστή του συστήματός σας να το εγκαταστήσει. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Η FTP υποστήριξη στην PHP δεν είναι ενεργοποιημένη ή εγκατεστημένη. Η προσάρτηση του %s δεν είναι δυνατή. Παρακαλούμε ζητήστε τον διαχειριστή του συστήματός σας να το εγκατασταστήσει. ", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" δεν είναι εγκατεστημένο. Η προσάρτηση του %s δεν είναι δυνατή. Παρακαλούμε ζητήστε τον διαχειριστή του συστήματός σας να το εγκαταστήσει. ", + "External storage support" : "Υποστήριξη εξωτερικής αποθήκευσης", "No external storage configured" : "Δεν έχει ρυθμιστεί κανένα εξωτερικό μέσο αποθήκευσης", "You can add external storages in the personal settings" : "Μπορείτε να προσθέσετε εξωτερικά μέσα αποθήκευσης στις προσωπικές ρυθμίσεις", "Name" : "Όνομα", diff --git a/apps/files_external/l10n/en_GB.js b/apps/files_external/l10n/en_GB.js index 7d6a81f731..c644b405ed 100644 --- a/apps/files_external/l10n/en_GB.js +++ b/apps/files_external/l10n/en_GB.js @@ -24,13 +24,13 @@ OC.L10N.register( "Saving..." : "Saving...", "Save" : "Save", "Empty response from the server" : "Empty response from the server", - "Couldn't access. Please logout and login to activate this mount point" : "Couldn't access. Please logout and login to activate this mount point", + "Couldn't access. Please log out and in again to activate this mount point" : "Couldn't access. Please log out and in again to activate this mount point", "Couldn't get the information from the remote server: {code} {type}" : "Couldn't get the information from the remote server: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Couldn't get the list of external mount points: {type}", "There was an error with message: " : "There was an error with message: ", "External mount error" : "External mount error", "external-storage" : "external-storage", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Couldn't get the list of Windows network drive mount points: empty response from the server", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Couldn't fetch list of Windows network drive mount points: Empty response from server", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Some of the configured external mount points are not connected. Please click on the red row(s) for more information", "Please enter the credentials for the {mount} mount" : "Please enter the credentials for the {mount} mount", "Username" : "Username", diff --git a/apps/files_external/l10n/en_GB.json b/apps/files_external/l10n/en_GB.json index c8dba8e5a6..1669099c8f 100644 --- a/apps/files_external/l10n/en_GB.json +++ b/apps/files_external/l10n/en_GB.json @@ -22,13 +22,13 @@ "Saving..." : "Saving...", "Save" : "Save", "Empty response from the server" : "Empty response from the server", - "Couldn't access. Please logout and login to activate this mount point" : "Couldn't access. Please logout and login to activate this mount point", + "Couldn't access. Please log out and in again to activate this mount point" : "Couldn't access. Please log out and in again to activate this mount point", "Couldn't get the information from the remote server: {code} {type}" : "Couldn't get the information from the remote server: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Couldn't get the list of external mount points: {type}", "There was an error with message: " : "There was an error with message: ", "External mount error" : "External mount error", "external-storage" : "external-storage", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Couldn't get the list of Windows network drive mount points: empty response from the server", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Couldn't fetch list of Windows network drive mount points: Empty response from server", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Some of the configured external mount points are not connected. Please click on the red row(s) for more information", "Please enter the credentials for the {mount} mount" : "Please enter the credentials for the {mount} mount", "Username" : "Username", diff --git a/apps/files_external/l10n/es.js b/apps/files_external/l10n/es.js index d29f102607..8d17e2b578 100644 --- a/apps/files_external/l10n/es.js +++ b/apps/files_external/l10n/es.js @@ -24,13 +24,13 @@ OC.L10N.register( "Saving..." : "Guardando...", "Save" : "Guardar", "Empty response from the server" : "Respuesta vacía desde el servidor", - "Couldn't access. Please logout and login to activate this mount point" : "No se puede acceder. Por favor cierra sesión e iníciala de nuevo para activar este punto de montaje", + "Couldn't access. Please log out and in again to activate this mount point" : "No se ha podido acceder. Por favor, sal de la cuenta y vuelve a entrar para activar este punto de montaje", "Couldn't get the information from the remote server: {code} {type}" : "No se pudo obtener la información del servidor remoto: {code} {type}", "Couldn't get the list of external mount points: {type}" : "No se puede obtener la lista de los puntos de montaje externos: {type}", "There was an error with message: " : "Hubo un error con el mensaje:", "External mount error" : "Error de montaje externo", "external-storage" : "almacenamiento-externo", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "No se puede obtener la lista de unidades de red y sus puntos de montaje de Windows: respuesta vacía desde el servidor", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No se ha podido recuperar la lista de puntos de montaje de las unidades de red de Windows: respuesta vacía del servidor", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Algunos de los puntos de montaje externos configurados no están conectados. Por favor, haga clic en la fila roja (s) para obtener más información", "Please enter the credentials for the {mount} mount" : "Por favor introduzca los credenciales para el punto de montaje {mount}", "Username" : "Nombre de usuario", diff --git a/apps/files_external/l10n/es.json b/apps/files_external/l10n/es.json index 52a654b6ae..98515c2e76 100644 --- a/apps/files_external/l10n/es.json +++ b/apps/files_external/l10n/es.json @@ -22,13 +22,13 @@ "Saving..." : "Guardando...", "Save" : "Guardar", "Empty response from the server" : "Respuesta vacía desde el servidor", - "Couldn't access. Please logout and login to activate this mount point" : "No se puede acceder. Por favor cierra sesión e iníciala de nuevo para activar este punto de montaje", + "Couldn't access. Please log out and in again to activate this mount point" : "No se ha podido acceder. Por favor, sal de la cuenta y vuelve a entrar para activar este punto de montaje", "Couldn't get the information from the remote server: {code} {type}" : "No se pudo obtener la información del servidor remoto: {code} {type}", "Couldn't get the list of external mount points: {type}" : "No se puede obtener la lista de los puntos de montaje externos: {type}", "There was an error with message: " : "Hubo un error con el mensaje:", "External mount error" : "Error de montaje externo", "external-storage" : "almacenamiento-externo", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "No se puede obtener la lista de unidades de red y sus puntos de montaje de Windows: respuesta vacía desde el servidor", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No se ha podido recuperar la lista de puntos de montaje de las unidades de red de Windows: respuesta vacía del servidor", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Algunos de los puntos de montaje externos configurados no están conectados. Por favor, haga clic en la fila roja (s) para obtener más información", "Please enter the credentials for the {mount} mount" : "Por favor introduzca los credenciales para el punto de montaje {mount}", "Username" : "Nombre de usuario", diff --git a/apps/files_external/l10n/es_AR.js b/apps/files_external/l10n/es_AR.js index ff7d7d488e..9adf0f7967 100644 --- a/apps/files_external/l10n/es_AR.js +++ b/apps/files_external/l10n/es_AR.js @@ -24,13 +24,11 @@ OC.L10N.register( "Saving..." : "Guardando...", "Save" : "Guardar", "Empty response from the server" : "Respuesta vacía del servidor", - "Couldn't access. Please logout and login to activate this mount point" : "No fue posible accesar. Favor de salir e iniciar sesión para activar este punto de montaje", "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", "There was an error with message: " : "Se presentó un problema con el mensaje:", "External mount error" : "Error de montaje externo", "external-storage" : "almacenamiento externo", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "No fue posible obtener el listado de los puntos de montaje de la unidad de red de Windows: respuesta del servidor vacía ", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Algunos de los puntos de montaje externos configurados no se encuentran conectados. Favor de hacer click en los renglon(es) en rojo para más información", "Please enter the credentials for the {mount} mount" : "Favor de ingresar las credenciales para el montaje {mount}", "Username" : "Nombre de usuario", diff --git a/apps/files_external/l10n/es_AR.json b/apps/files_external/l10n/es_AR.json index 2b778b6e59..0c6434a3c5 100644 --- a/apps/files_external/l10n/es_AR.json +++ b/apps/files_external/l10n/es_AR.json @@ -22,13 +22,11 @@ "Saving..." : "Guardando...", "Save" : "Guardar", "Empty response from the server" : "Respuesta vacía del servidor", - "Couldn't access. Please logout and login to activate this mount point" : "No fue posible accesar. Favor de salir e iniciar sesión para activar este punto de montaje", "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", "There was an error with message: " : "Se presentó un problema con el mensaje:", "External mount error" : "Error de montaje externo", "external-storage" : "almacenamiento externo", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "No fue posible obtener el listado de los puntos de montaje de la unidad de red de Windows: respuesta del servidor vacía ", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Algunos de los puntos de montaje externos configurados no se encuentran conectados. Favor de hacer click en los renglon(es) en rojo para más información", "Please enter the credentials for the {mount} mount" : "Favor de ingresar las credenciales para el montaje {mount}", "Username" : "Nombre de usuario", diff --git a/apps/files_external/l10n/es_MX.js b/apps/files_external/l10n/es_MX.js index 5c8427caf6..6c4b911e50 100644 --- a/apps/files_external/l10n/es_MX.js +++ b/apps/files_external/l10n/es_MX.js @@ -24,13 +24,13 @@ OC.L10N.register( "Saving..." : "Guardando...", "Save" : "Guardar", "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please logout and login to activate this mount point" : "No fue posible accesar. Por favor cierra e inicia sesión para activar este punto de montaje", + "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", "There was an error with message: " : "Se presentó un problema con el mensaje:", "External mount error" : "Error de montaje externo", "external-storage" : "almacenamiento externo", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "No fue posible obtener el listado de los puntos de montaje de la unidad de red de Windows: respuesta del servidor vacía ", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Algunos de los puntos de montaje externos configurados no se encuentran conectados. Por favor has click en los renglon(es) en rojo para más información", "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", "Username" : "Usuario", diff --git a/apps/files_external/l10n/es_MX.json b/apps/files_external/l10n/es_MX.json index f1c44ca839..f616e52ada 100644 --- a/apps/files_external/l10n/es_MX.json +++ b/apps/files_external/l10n/es_MX.json @@ -22,13 +22,13 @@ "Saving..." : "Guardando...", "Save" : "Guardar", "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please logout and login to activate this mount point" : "No fue posible accesar. Por favor cierra e inicia sesión para activar este punto de montaje", + "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", "There was an error with message: " : "Se presentó un problema con el mensaje:", "External mount error" : "Error de montaje externo", "external-storage" : "almacenamiento externo", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "No fue posible obtener el listado de los puntos de montaje de la unidad de red de Windows: respuesta del servidor vacía ", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Algunos de los puntos de montaje externos configurados no se encuentran conectados. Por favor has click en los renglon(es) en rojo para más información", "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", "Username" : "Usuario", diff --git a/apps/files_external/l10n/fi.js b/apps/files_external/l10n/fi.js index 04f1d91761..ea12484f91 100644 --- a/apps/files_external/l10n/fi.js +++ b/apps/files_external/l10n/fi.js @@ -24,13 +24,11 @@ OC.L10N.register( "Saving..." : "Tallennetaan...", "Save" : "Tallenna", "Empty response from the server" : "Tyhjä vastaus palvelimelta", - "Couldn't access. Please logout and login to activate this mount point" : "Käyttö epäonnistui. Kirjaudu ulos ja takaisin sisään aktivoidaksesi tämän liitospisteen", "Couldn't get the information from the remote server: {code} {type}" : "Tietojen saaminen etäpalvelimelta epäonnistui: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Erillisten liitospisteiden listauksen noutaminen epäonnistui: {type}", "There was an error with message: " : "Tapahtui virhe viestillä:", "External mount error" : "Ulkoinen liitosvirhe", "external-storage" : "ulkoinen taltio", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows-verkkoasemien liitospisteiden listauksen noutaminen epäonnistui: tyhjä vastaus palvelimelta", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Jotkin määritetyt erilliset liitospisteet eivät ole yhdistettynä. Napsauta punaisia rivejä saadaksesi lisätietoja", "Please enter the credentials for the {mount} mount" : "Anna kirjautumistiedot liitokselle {mount}", "Username" : "Käyttäjätunnus", diff --git a/apps/files_external/l10n/fi.json b/apps/files_external/l10n/fi.json index 3638d59cfb..79219593ed 100644 --- a/apps/files_external/l10n/fi.json +++ b/apps/files_external/l10n/fi.json @@ -22,13 +22,11 @@ "Saving..." : "Tallennetaan...", "Save" : "Tallenna", "Empty response from the server" : "Tyhjä vastaus palvelimelta", - "Couldn't access. Please logout and login to activate this mount point" : "Käyttö epäonnistui. Kirjaudu ulos ja takaisin sisään aktivoidaksesi tämän liitospisteen", "Couldn't get the information from the remote server: {code} {type}" : "Tietojen saaminen etäpalvelimelta epäonnistui: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Erillisten liitospisteiden listauksen noutaminen epäonnistui: {type}", "There was an error with message: " : "Tapahtui virhe viestillä:", "External mount error" : "Ulkoinen liitosvirhe", "external-storage" : "ulkoinen taltio", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows-verkkoasemien liitospisteiden listauksen noutaminen epäonnistui: tyhjä vastaus palvelimelta", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Jotkin määritetyt erilliset liitospisteet eivät ole yhdistettynä. Napsauta punaisia rivejä saadaksesi lisätietoja", "Please enter the credentials for the {mount} mount" : "Anna kirjautumistiedot liitokselle {mount}", "Username" : "Käyttäjätunnus", diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js index 2fcea0a732..bf52096489 100644 --- a/apps/files_external/l10n/fr.js +++ b/apps/files_external/l10n/fr.js @@ -24,13 +24,13 @@ OC.L10N.register( "Saving..." : "Enregistrement...", "Save" : "Enregistrer", "Empty response from the server" : "Réponse vide du serveur", - "Couldn't access. Please logout and login to activate this mount point" : "Impossible d'accéder. Veuillez vous déconnecter et vous reconnecter pour activer ce point de montage.", + "Couldn't access. Please log out and in again to activate this mount point" : "Impossible d'accéder. Veuillez vous déconnecter et vous reconnecter pour activer ce point de montage", "Couldn't get the information from the remote server: {code} {type}" : "Impossible d'obtenir l'information du serveur distant: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Impossible de récupérer la liste des points de montage externes : {type}", "There was an error with message: " : "Il y a eu une erreur avec le message :", "External mount error" : "Erreur de point de montage externe", "external-storage" : "external-storage", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Impossible d'obtenir la liste des points de montage des disques réseaux Windows : Réponse vide du serveur", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Impossible d'aller chercher la liste des points de montage des disques réseaux Windows : Réponse vide du serveur", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Certains points de montage externes configurés ne sont pas connectés. Veuillez cliquer sur la(les) ligne(s) rouge(s) pour plus d'informations", "Please enter the credentials for the {mount} mount" : "Veuillez entrer les identifiants pour le montage {mount}", "Username" : "Nom d'utilisateur", diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json index dda1877e9e..9d7d3e2674 100644 --- a/apps/files_external/l10n/fr.json +++ b/apps/files_external/l10n/fr.json @@ -22,13 +22,13 @@ "Saving..." : "Enregistrement...", "Save" : "Enregistrer", "Empty response from the server" : "Réponse vide du serveur", - "Couldn't access. Please logout and login to activate this mount point" : "Impossible d'accéder. Veuillez vous déconnecter et vous reconnecter pour activer ce point de montage.", + "Couldn't access. Please log out and in again to activate this mount point" : "Impossible d'accéder. Veuillez vous déconnecter et vous reconnecter pour activer ce point de montage", "Couldn't get the information from the remote server: {code} {type}" : "Impossible d'obtenir l'information du serveur distant: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Impossible de récupérer la liste des points de montage externes : {type}", "There was an error with message: " : "Il y a eu une erreur avec le message :", "External mount error" : "Erreur de point de montage externe", "external-storage" : "external-storage", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Impossible d'obtenir la liste des points de montage des disques réseaux Windows : Réponse vide du serveur", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Impossible d'aller chercher la liste des points de montage des disques réseaux Windows : Réponse vide du serveur", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Certains points de montage externes configurés ne sont pas connectés. Veuillez cliquer sur la(les) ligne(s) rouge(s) pour plus d'informations", "Please enter the credentials for the {mount} mount" : "Veuillez entrer les identifiants pour le montage {mount}", "Username" : "Nom d'utilisateur", diff --git a/apps/files_external/l10n/he.js b/apps/files_external/l10n/he.js index 1945d86614..6c544085ec 100644 --- a/apps/files_external/l10n/he.js +++ b/apps/files_external/l10n/he.js @@ -22,12 +22,10 @@ OC.L10N.register( "Saved" : "נשמר", "Save" : "שמירה", "Empty response from the server" : "תגובה ריקה מהשרת", - "Couldn't access. Please logout and login to activate this mount point" : "לא ניתן להכנס. יש להתנתק ולהתחבר כדי להפעיל את נקודת העיגון הזו", "Couldn't get the list of external mount points: {type}" : "לא ניתן היה לקבל את רשימת נקודות העיגון החיצוניות: {type}", "There was an error with message: " : "התרחשה שגיאה עם הודעה: ", "External mount error" : "שגיאת עגינה חיצונית", "external-storage" : "אחסון חיצוני", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "לא ניתן היה לקבל את רשימת נקודות העיגון של כונן הרשת של Window: תגובה ריקה מהשרת", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "חלק מנקודות העיגון החיצוניות שהוגדרו אינן מחוברות. יש ללחוץ על השורה/ות האדומה/ות למידע נוסף", "Please enter the credentials for the {mount} mount" : "יש להזין את פרטי הגישה עבור התקן עגינה {mount}", "Username" : "שם משתמש", diff --git a/apps/files_external/l10n/he.json b/apps/files_external/l10n/he.json index 6fd1bae007..56e4631b7e 100644 --- a/apps/files_external/l10n/he.json +++ b/apps/files_external/l10n/he.json @@ -20,12 +20,10 @@ "Saved" : "נשמר", "Save" : "שמירה", "Empty response from the server" : "תגובה ריקה מהשרת", - "Couldn't access. Please logout and login to activate this mount point" : "לא ניתן להכנס. יש להתנתק ולהתחבר כדי להפעיל את נקודת העיגון הזו", "Couldn't get the list of external mount points: {type}" : "לא ניתן היה לקבל את רשימת נקודות העיגון החיצוניות: {type}", "There was an error with message: " : "התרחשה שגיאה עם הודעה: ", "External mount error" : "שגיאת עגינה חיצונית", "external-storage" : "אחסון חיצוני", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "לא ניתן היה לקבל את רשימת נקודות העיגון של כונן הרשת של Window: תגובה ריקה מהשרת", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "חלק מנקודות העיגון החיצוניות שהוגדרו אינן מחוברות. יש ללחוץ על השורה/ות האדומה/ות למידע נוסף", "Please enter the credentials for the {mount} mount" : "יש להזין את פרטי הגישה עבור התקן עגינה {mount}", "Username" : "שם משתמש", diff --git a/apps/files_external/l10n/hu.js b/apps/files_external/l10n/hu.js index ceec7cbd0e..af069ba1e5 100644 --- a/apps/files_external/l10n/hu.js +++ b/apps/files_external/l10n/hu.js @@ -24,13 +24,11 @@ OC.L10N.register( "Saving..." : "Mentés...", "Save" : "Mentés", "Empty response from the server" : "Üres válasz a szervertől", - "Couldn't access. Please logout and login to activate this mount point" : "Nem férhető hozzá. Kérlek próbálj meg ki- és bejelentkezni a csatolási pont aktiválásához.", "Couldn't get the information from the remote server: {code} {type}" : "Nem sikerült lekérdezni az információkat a távoli szerverről: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Nem lehet letölteni a külső csatolási pontok listáját: {type}", "There was an error with message: " : "Hiba történt ezzel az üzenettel:", "External mount error" : "Külső csatolási hiba", "external-storage" : "külső tároló", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Nem sikerült letölteni a Windows hálózati meghajtó csatolási pontok listáját: üres válasz a szervertől", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Néhány beállított külső csatolási pont nincs kapcsolatban. További információkért kattints a piros sor(ok)ra.", "Please enter the credentials for the {mount} mount" : "Kérlek add meg a következő csatolás azonosítóit: {mount}", "Username" : "Felhasználónév", diff --git a/apps/files_external/l10n/hu.json b/apps/files_external/l10n/hu.json index 7413b33c95..780e76c928 100644 --- a/apps/files_external/l10n/hu.json +++ b/apps/files_external/l10n/hu.json @@ -22,13 +22,11 @@ "Saving..." : "Mentés...", "Save" : "Mentés", "Empty response from the server" : "Üres válasz a szervertől", - "Couldn't access. Please logout and login to activate this mount point" : "Nem férhető hozzá. Kérlek próbálj meg ki- és bejelentkezni a csatolási pont aktiválásához.", "Couldn't get the information from the remote server: {code} {type}" : "Nem sikerült lekérdezni az információkat a távoli szerverről: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Nem lehet letölteni a külső csatolási pontok listáját: {type}", "There was an error with message: " : "Hiba történt ezzel az üzenettel:", "External mount error" : "Külső csatolási hiba", "external-storage" : "külső tároló", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Nem sikerült letölteni a Windows hálózati meghajtó csatolási pontok listáját: üres válasz a szervertől", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Néhány beállított külső csatolási pont nincs kapcsolatban. További információkért kattints a piros sor(ok)ra.", "Please enter the credentials for the {mount} mount" : "Kérlek add meg a következő csatolás azonosítóit: {mount}", "Username" : "Felhasználónév", diff --git a/apps/files_external/l10n/id.js b/apps/files_external/l10n/id.js index ea4aa63c00..20d950f3eb 100644 --- a/apps/files_external/l10n/id.js +++ b/apps/files_external/l10n/id.js @@ -24,13 +24,11 @@ OC.L10N.register( "Saving..." : "Menyimpan...", "Save" : "Simpan", "Empty response from the server" : "Tidak ada respon dari server", - "Couldn't access. Please logout and login to activate this mount point" : "Tidak dapat mengakses. Log keluar dan log masuk untuk mengaktifkan mount point ini", "Couldn't get the information from the remote server: {code} {type}" : "Tidak dapat mengambil informasi dari server remote: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Tidak bisa mendapatkan informasi dari mount point eksternal: {type}", "There was an error with message: " : "Terjadi kesalahan dengan pesan:", "External mount error" : "Kesalahan mount eksternal", "external-storage" : "penyimpanan-eksternal", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Tidak bisa mendapatkan daftar jaringan drive mount point Windows: Tidak ada respon dari server", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Beberapa mount point eksternal tidak terhubung. Klik barisan merah untuk informasi selanjutnya", "Please enter the credentials for the {mount} mount" : "Masukkan kredensial untuk mount {mount}", "Username" : "Nama Pengguna", diff --git a/apps/files_external/l10n/id.json b/apps/files_external/l10n/id.json index 0126765f1c..029abb172c 100644 --- a/apps/files_external/l10n/id.json +++ b/apps/files_external/l10n/id.json @@ -22,13 +22,11 @@ "Saving..." : "Menyimpan...", "Save" : "Simpan", "Empty response from the server" : "Tidak ada respon dari server", - "Couldn't access. Please logout and login to activate this mount point" : "Tidak dapat mengakses. Log keluar dan log masuk untuk mengaktifkan mount point ini", "Couldn't get the information from the remote server: {code} {type}" : "Tidak dapat mengambil informasi dari server remote: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Tidak bisa mendapatkan informasi dari mount point eksternal: {type}", "There was an error with message: " : "Terjadi kesalahan dengan pesan:", "External mount error" : "Kesalahan mount eksternal", "external-storage" : "penyimpanan-eksternal", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Tidak bisa mendapatkan daftar jaringan drive mount point Windows: Tidak ada respon dari server", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Beberapa mount point eksternal tidak terhubung. Klik barisan merah untuk informasi selanjutnya", "Please enter the credentials for the {mount} mount" : "Masukkan kredensial untuk mount {mount}", "Username" : "Nama Pengguna", diff --git a/apps/files_external/l10n/is.js b/apps/files_external/l10n/is.js index 984c3553c2..ce6dbdac8d 100644 --- a/apps/files_external/l10n/is.js +++ b/apps/files_external/l10n/is.js @@ -24,13 +24,13 @@ OC.L10N.register( "Saving..." : "Er að vista ...", "Save" : "Vista", "Empty response from the server" : "Tómt svar frá þjóni móttekið", - "Couldn't access. Please logout and login to activate this mount point" : "Náði ekki aðgangi. Skráðu þig út og svo aftur inn til að virkja þennan tengipunkt", + "Couldn't access. Please log out and in again to activate this mount point" : "Náði ekki aðgangi. Skráðu þig út og svo aftur inn til að virkja þennan tengipunkt", "Couldn't get the information from the remote server: {code} {type}" : "Gat ekki lesið upplýsingar frá fjartengda þjóninum: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Gat ekki fengið lista yfir fjartengda tengipunkta: {type}", "There was an error with message: " : "Það kom upp villa með skilaboðunum: ", "External mount error" : "Villa við tengingu í fjartengdu skráakerfi", "external-storage" : "ytri-gagnageymsla", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Gat ekki fengið lista yfir tengipunkta Windows-netdrifa: autt svar frá þjóni", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Gat ekki fengið lista yfir tengipunkta Windows-netdrifa, Svar frá þjóni var tómt", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Sumir uppsettir tengipunktar eru ekki tengdir í skráakerfið. Smelltu á rauðu örina/örvarnar til að fá frekari upplýsingar", "Please enter the credentials for the {mount} mount" : "Settu inn auðkenni fyrir {mount} tengipunktinn", "Username" : "Notandanafn", diff --git a/apps/files_external/l10n/is.json b/apps/files_external/l10n/is.json index 848e28145e..33e424468c 100644 --- a/apps/files_external/l10n/is.json +++ b/apps/files_external/l10n/is.json @@ -22,13 +22,13 @@ "Saving..." : "Er að vista ...", "Save" : "Vista", "Empty response from the server" : "Tómt svar frá þjóni móttekið", - "Couldn't access. Please logout and login to activate this mount point" : "Náði ekki aðgangi. Skráðu þig út og svo aftur inn til að virkja þennan tengipunkt", + "Couldn't access. Please log out and in again to activate this mount point" : "Náði ekki aðgangi. Skráðu þig út og svo aftur inn til að virkja þennan tengipunkt", "Couldn't get the information from the remote server: {code} {type}" : "Gat ekki lesið upplýsingar frá fjartengda þjóninum: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Gat ekki fengið lista yfir fjartengda tengipunkta: {type}", "There was an error with message: " : "Það kom upp villa með skilaboðunum: ", "External mount error" : "Villa við tengingu í fjartengdu skráakerfi", "external-storage" : "ytri-gagnageymsla", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Gat ekki fengið lista yfir tengipunkta Windows-netdrifa: autt svar frá þjóni", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Gat ekki fengið lista yfir tengipunkta Windows-netdrifa, Svar frá þjóni var tómt", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Sumir uppsettir tengipunktar eru ekki tengdir í skráakerfið. Smelltu á rauðu örina/örvarnar til að fá frekari upplýsingar", "Please enter the credentials for the {mount} mount" : "Settu inn auðkenni fyrir {mount} tengipunktinn", "Username" : "Notandanafn", diff --git a/apps/files_external/l10n/it.js b/apps/files_external/l10n/it.js index ea8e6bfc63..109e3925f0 100644 --- a/apps/files_external/l10n/it.js +++ b/apps/files_external/l10n/it.js @@ -24,13 +24,11 @@ OC.L10N.register( "Saving..." : "Salvataggio in corso...", "Save" : "Salva", "Empty response from the server" : "Risposta vuota dal server", - "Couldn't access. Please logout and login to activate this mount point" : "Impossibile accedere. Chiudi la sessione e accedi nuovamente per attivare questo punto di mount", "Couldn't get the information from the remote server: {code} {type}" : "Impossibile ottenere le informazioni dal server remoto: {code} {tipo}", "Couldn't get the list of external mount points: {type}" : "Impossibile ottenere l'elenco dei punti di mount esterni: {type}", "There was an error with message: " : "Si è verificato un errore con il messaggio:", "External mount error" : "Errore di mount esterno", "external-storage" : "archiviazione-esterna", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Impossibile ottenere l'elenco dei punti di mount delle unità di rete Windows: risposta vuota dal server", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Alcuni dei punti di mount esterni configurati non sono connessi. Fai clic sulle righe rosse per ulteriori informazioni", "Please enter the credentials for the {mount} mount" : "Digita le credenziali per montare {mount}", "Username" : "Nome utente", diff --git a/apps/files_external/l10n/it.json b/apps/files_external/l10n/it.json index 39fb46e600..0a6b348389 100644 --- a/apps/files_external/l10n/it.json +++ b/apps/files_external/l10n/it.json @@ -22,13 +22,11 @@ "Saving..." : "Salvataggio in corso...", "Save" : "Salva", "Empty response from the server" : "Risposta vuota dal server", - "Couldn't access. Please logout and login to activate this mount point" : "Impossibile accedere. Chiudi la sessione e accedi nuovamente per attivare questo punto di mount", "Couldn't get the information from the remote server: {code} {type}" : "Impossibile ottenere le informazioni dal server remoto: {code} {tipo}", "Couldn't get the list of external mount points: {type}" : "Impossibile ottenere l'elenco dei punti di mount esterni: {type}", "There was an error with message: " : "Si è verificato un errore con il messaggio:", "External mount error" : "Errore di mount esterno", "external-storage" : "archiviazione-esterna", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Impossibile ottenere l'elenco dei punti di mount delle unità di rete Windows: risposta vuota dal server", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Alcuni dei punti di mount esterni configurati non sono connessi. Fai clic sulle righe rosse per ulteriori informazioni", "Please enter the credentials for the {mount} mount" : "Digita le credenziali per montare {mount}", "Username" : "Nome utente", diff --git a/apps/files_external/l10n/ja.js b/apps/files_external/l10n/ja.js index 22517ab243..e76aece67a 100644 --- a/apps/files_external/l10n/ja.js +++ b/apps/files_external/l10n/ja.js @@ -24,13 +24,13 @@ OC.L10N.register( "Saving..." : "保存中...", "Save" : "保存", "Empty response from the server" : "サーバーから空の応答がありました", - "Couldn't access. Please logout and login to activate this mount point" : "アクセス出来ませんでした。このマウントポイントを有効にするには一度ログアウトしてからログインしてください。", + "Couldn't access. Please log out and in again to activate this mount point" : "アクセスできません。ログアウトして、再度このマウントポイントをアクティベートしてください。", "Couldn't get the information from the remote server: {code} {type}" : "リモートサーバーから情報を取得できませんでした:{code} {type}", "Couldn't get the list of external mount points: {type}" : "外部マウントポイントのリストを取得出来ませんでした。: {type}", "There was an error with message: " : "メッセージ付きのエラーが発生しました:", "External mount error" : "外部マウントエラー", "external-storage" : "外部ストレージ", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows ネットワークドライブのマウントポイントリストを取得出来ませんでした:サーバーから空の応答がありました", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Windowsネットワークドライブのマウントポイントのリストが取得できませんでした: サーバーからのレスポンスは空でした。", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "いくつかの設定済み外部マウントポイントに接続できませんでした。詳細情報は赤い行をクリックしてください", "Please enter the credentials for the {mount} mount" : " {mount} のマウントのために必要な資格情報を入力してください", "Username" : "ユーザー名", @@ -97,7 +97,7 @@ OC.L10N.register( "SMB / CIFS" : "SMB / CIFS", "Share" : "共有", "Domain" : "ドメイン", - "SMB / CIFS using OC login" : "ownCloudログインを利用したSMB / CIFS", + "SMB / CIFS using OC login" : "Nextcloud ログインを利用したSMB / CIFS", "Username as share" : "共有名", "OpenStack Object Storage" : "OpenStack ObjectStorage", "Service name" : "サービス名", diff --git a/apps/files_external/l10n/ja.json b/apps/files_external/l10n/ja.json index f696667858..09243f9b1c 100644 --- a/apps/files_external/l10n/ja.json +++ b/apps/files_external/l10n/ja.json @@ -22,13 +22,13 @@ "Saving..." : "保存中...", "Save" : "保存", "Empty response from the server" : "サーバーから空の応答がありました", - "Couldn't access. Please logout and login to activate this mount point" : "アクセス出来ませんでした。このマウントポイントを有効にするには一度ログアウトしてからログインしてください。", + "Couldn't access. Please log out and in again to activate this mount point" : "アクセスできません。ログアウトして、再度このマウントポイントをアクティベートしてください。", "Couldn't get the information from the remote server: {code} {type}" : "リモートサーバーから情報を取得できませんでした:{code} {type}", "Couldn't get the list of external mount points: {type}" : "外部マウントポイントのリストを取得出来ませんでした。: {type}", "There was an error with message: " : "メッセージ付きのエラーが発生しました:", "External mount error" : "外部マウントエラー", "external-storage" : "外部ストレージ", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows ネットワークドライブのマウントポイントリストを取得出来ませんでした:サーバーから空の応答がありました", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Windowsネットワークドライブのマウントポイントのリストが取得できませんでした: サーバーからのレスポンスは空でした。", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "いくつかの設定済み外部マウントポイントに接続できませんでした。詳細情報は赤い行をクリックしてください", "Please enter the credentials for the {mount} mount" : " {mount} のマウントのために必要な資格情報を入力してください", "Username" : "ユーザー名", @@ -95,7 +95,7 @@ "SMB / CIFS" : "SMB / CIFS", "Share" : "共有", "Domain" : "ドメイン", - "SMB / CIFS using OC login" : "ownCloudログインを利用したSMB / CIFS", + "SMB / CIFS using OC login" : "Nextcloud ログインを利用したSMB / CIFS", "Username as share" : "共有名", "OpenStack Object Storage" : "OpenStack ObjectStorage", "Service name" : "サービス名", diff --git a/apps/files_external/l10n/ko.js b/apps/files_external/l10n/ko.js index cb081062c0..55e4cf85b1 100644 --- a/apps/files_external/l10n/ko.js +++ b/apps/files_external/l10n/ko.js @@ -24,13 +24,11 @@ OC.L10N.register( "Saving..." : "저장 중...", "Save" : "저장", "Empty response from the server" : "서버에서 빈 응답이 돌아옴", - "Couldn't access. Please logout and login to activate this mount point" : "접근할 수 없습니다. 이 마운트 지점을 활성화하려면 로그아웃 후 로그인하십시오", "Couldn't get the information from the remote server: {code} {type}" : "원격 서버에서 정보를 가져올 수 없음: {code} {type}", "Couldn't get the list of external mount points: {type}" : "외부 마운트 지점 목록을 가져올 수 없음: {type}", "There was an error with message: " : "오류 메시지: ", "External mount error" : "외부 마운트 오류", "external-storage" : "external-storage", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows 네트워크 드라이브 마운트 지점 목록을 가져올 수 없음: 서버에서 빈 응답이 돌아옴", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "일부 외부 마운트 지점을 연결할 수 없습니다. 빨간색으로 표시된 줄을 눌러서 더 많은 정보를 확인하십시오", "Please enter the credentials for the {mount} mount" : "{mount} 마운트 인증 정보를 입력하십시오", "Username" : "사용자 이름", diff --git a/apps/files_external/l10n/ko.json b/apps/files_external/l10n/ko.json index 1e13f696dd..12b78dfca7 100644 --- a/apps/files_external/l10n/ko.json +++ b/apps/files_external/l10n/ko.json @@ -22,13 +22,11 @@ "Saving..." : "저장 중...", "Save" : "저장", "Empty response from the server" : "서버에서 빈 응답이 돌아옴", - "Couldn't access. Please logout and login to activate this mount point" : "접근할 수 없습니다. 이 마운트 지점을 활성화하려면 로그아웃 후 로그인하십시오", "Couldn't get the information from the remote server: {code} {type}" : "원격 서버에서 정보를 가져올 수 없음: {code} {type}", "Couldn't get the list of external mount points: {type}" : "외부 마운트 지점 목록을 가져올 수 없음: {type}", "There was an error with message: " : "오류 메시지: ", "External mount error" : "외부 마운트 오류", "external-storage" : "external-storage", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows 네트워크 드라이브 마운트 지점 목록을 가져올 수 없음: 서버에서 빈 응답이 돌아옴", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "일부 외부 마운트 지점을 연결할 수 없습니다. 빨간색으로 표시된 줄을 눌러서 더 많은 정보를 확인하십시오", "Please enter the credentials for the {mount} mount" : "{mount} 마운트 인증 정보를 입력하십시오", "Username" : "사용자 이름", diff --git a/apps/files_external/l10n/lt_LT.js b/apps/files_external/l10n/lt_LT.js index 8039902279..78a852b6f4 100644 --- a/apps/files_external/l10n/lt_LT.js +++ b/apps/files_external/l10n/lt_LT.js @@ -1,31 +1,133 @@ OC.L10N.register( "files_external", { - "Fetching request tokens failed. Verify that your app key and secret are correct." : "Nepavyko atsiųsti užklausos žymės. Patikrinkite savo programos raktą ir paslaptį.", - "Step 1 failed. Exception: %s" : "1 žingsnio klaida: %s", - "Step 2 failed. Exception: %s" : "2 žingsnio klaida: %s", - "External storage" : "Išorinė saugykla", + "Fetching request tokens failed. Verify that your app key and secret are correct." : "Užklausos prieigos raktų gavimas nepavyko. Įsitikinkite, kad jūsų programėlės raktas ir paslaptis yra teisingi.", + "Fetching access tokens failed. Verify that your app key and secret are correct." : "Prieigos raktas negautas. Patikrinkite ar trečiųjų šalių programinės įrangos identifikacijos numeris ir slaptažodis yra teisingi.", + "Please provide a valid app key and secret." : "Prašome naudoti teisingus trečiųjų šalių programinės įrangos identifikacijos numerį ir slaptažodį.", + "Step 1 failed. Exception: %s" : "Žingsnis 1 nepavyko. Išimtis: %s", + "Step 2 failed. Exception: %s" : "Žingsnis 2 nepavyko. Išimtis: %s", + "External storages" : "Išorinės saugyklos", + "Dropbox App Configuration" : "Dropbox programinės įrangos konfigūravimas", + "Google Drive App Configuration" : "Google disko programėlės konfigūracija", "Personal" : "Asmeniniai", - "Grant access" : "Suteikti priėjimą", - "Saved" : "Išsaugoti", - "Username" : "Prisijungimo vardas", + "System" : "Sistema", + "Grant access" : "Suteikti prieigą", + "Error configuring OAuth1" : "Klaida, konfigūruojant OAuth1", + "Error configuring OAuth2" : "Klaida, konfigūruojant OAuth2", + "Generate keys" : "Sukurti raktus", + "Error generating key pair" : "Klaida kuriant raktus", + "All users. Type to select user or group." : "Visi naudotojai. Pradėkite rašyti, jei norite pasirinkti konkretų naudotoją ar grupę.", + "(group)" : "(grupė)", + "Compatibility with Mac NFD encoding (slow)" : "Suderinamumas su Mac NFD kodavimu (lėtai)", + "Admin defined" : "Administratorius apibrėžtas", + "Saved" : "Įrašyta", + "Saving..." : "Įrašoma...", + "Save" : "Įrašyti", + "Empty response from the server" : "Negautas atsakymas iš serverio", + "Couldn't access. Please log out and in again to activate this mount point" : "Prieiga yra neįmanoma. Pabandykite prisijungti iš naujo.", + "Couldn't get the information from the remote server: {code} {type}" : "Neįmanoma gauti informacijos iš serverio: {code} {type}", + "Couldn't get the list of external mount points: {type}" : "Nepavyko gauti išorinių prijungimo taškų sąrašo: {type}", + "There was an error with message: " : "Klaidos žinutė:", + "External mount error" : "Išorinio prijungimo klaida", + "external-storage" : "išorinė saugykla", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Neįmanoma gauti duomenų sąrašo ir Windows tinkle prijungto disko. Nėra jokio atsakymo.", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Kai kurios sukonfigūruotos išorinės saugyklos nebuvo prijungtos. Paspauskite ant raudonai nuspalvotų eilučių norėdami gauti išsamesnę informaciją", + "Please enter the credentials for the {mount} mount" : "Prašome įvesti prisijungimo duomenis skirtus saugyklos {mount} prijungimui", + "Username" : "Naudotojo vardas", "Password" : "Slaptažodis", - "Save" : "Išsaugoti", - "None" : "Nieko", + "Credentials saved" : "Prisijungimo duomenys yra išsaugoti", + "Credentials saving failed" : "Nepavyko išsaugoti prisijungimo duomenų", + "Credentials required" : "Reikalingi prisijungimo duomenys", + "Storage with ID \"%d\" not found" : "Nerasta saugykla su identifikacijos numeriu \"%d\"", + "Invalid backend or authentication mechanism class" : "Netinkama programinio kodo klasė realizuoja prisijungimo mechanizmą", + "Invalid mount point" : "Neteisingas prijungimo taškas", + "Objectstore forbidden" : "Objektų saugykla yra neprieinama", + "Invalid storage backend \"%s\"" : "Netinkama saugyklos posistemė \"%s\"", + "Not permitted to use backend \"%s\"" : "Neleidžiama naudoti posistemės \"%s\"", + "Not permitted to use authentication mechanism \"%s\"" : "Neleidžiama naudoti prisijungimo mechanizmo \"%s\"", + "Unsatisfied backend parameters" : " Netinkami posistemės parametrai", + "Unsatisfied authentication mechanism parameters" : "Netinkami parametrai perduoti į prisijungimo mechanizmą", + "Insufficient data: %s" : "Trūksta duomenų: %s", + "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Naudotojai negali redaguoti saugyklos identifikuotos kaip \"%d\"", + "Access key" : "Prieigos raktas", + "Secret key" : "Slaptažodis", + "Builtin" : "Įmontuotas", + "None" : "Nėra", + "OAuth1" : "OAuth1", + "App key" : "Trečiųjų šalių programinės įrangos identifikacijos raktas", + "App secret" : "Trečiųjų šalių programinės įrangos slaptažodis", + "OAuth2" : "OAuth2", + "Client ID" : "Kliento ID", + "Client secret" : "Trečiųjų šalių programinės įrangos kliento identifikacijos raktas", + "OpenStack" : "OpenStack", + "Tenant name" : "Laikino valdytojo vardas", + "Identity endpoint URL" : "Identiteto URL", + "Rackspace" : "Rackspace", "API key" : "API raktas", + "Global credentials" : "Globalūs prisijungimo duomenys", + "Log-in credentials, save in database" : "Prisijungimo duomenys, saugoti duomenų bazėje", + "Username and password" : "Naudotojo vardas ir slaptažodis", + "Log-in credentials, save in session" : "Prisijungimo duomenys, saugoti sesijoje", + "User entered, store in database" : "Naudotojas įvestas, saugoti duomenų bazėje", + "RSA public key" : "RSA viešasis raktas", + "Public key" : "Viešasis raktas", + "Amazon S3" : "Amazon S3", + "Bucket" : "Amazon S3 saugykla", + "Hostname" : "Domeno vardas", "Port" : "Prievadas", "Region" : "Regionas", + "Enable SSL" : "Įjungti SSL", + "Enable Path Style" : "Amazon S3 kelias", "WebDAV" : "WebDAV", "URL" : "URL", - "Host" : "Mazgas", + "Remote subfolder" : "Nuotolinis poaplankis", + "Secure https://" : "Saugus https://", + "Dropbox" : "Dropbox", + "FTP" : "FTP", + "Host" : "Domenas", + "Secure ftps://" : "Saugus ftps://", + "Google Drive" : "Google diskas", + "Local" : "Vietinis", "Location" : "Vieta", - "ownCloud" : "ownCloud", + "Nextcloud" : "Nextcloud", + "SFTP" : "SFTP", + "Root" : "Šaknis", + "SFTP with secret key login" : "SFTP protokolas su prisijungimu", + "SMB / CIFS" : "SMB / CIFS", "Share" : "Dalintis", + "Domain" : "Domenas", + "SMB / CIFS using OC login" : "SMB / CIFS, naudojant OC prisijungimą", + "Username as share" : "Samba dalinimosi vardas", + "OpenStack Object Storage" : "Objektų saugykla \"OpenStack\"", + "Service name" : "Paslaugos vardas", + "Request timeout (seconds)" : "Prisijungimo laikas (sekundėmis)", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL palaikymas yra neįjungtas arba neįdiegtas į PHP. %s prijungimas neįmanomas. Paprašykite sistemos administratoriaus pagalbos.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP palaikymas yra neįjungtas arba neįdiegtas į PHP. %s prijungimas neįmanomas. Paprašykite sistemos administratoriaus pagalbos.", + "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Nėra įdiegta \"%s\". %s prijungimas yra neįmanomas. Paprašykite savo sistemos administratoriaus, kad įdiegtų trūkstamą paketą.", + "External storage support" : "Išorinės saugyklos priežiūra", + "No external storage configured" : "Nėra sukonfigūruota jokia išorinė saugykla", + "You can add external storages in the personal settings" : "Galite pridėti papildomą išorinę saugyklą nustatymų skiltyje", "Name" : "Pavadinimas", - "External Storage" : "Išorinės saugyklos", - "Folder name" : "Katalogo pavadinimas", + "Storage type" : "Saugyklos tipas", + "Scope" : "Leidimas", + "Enable encryption" : "Įjungti šifravimą", + "Enable previews" : "Leisti peržiūras", + "Enable sharing" : "Leisti bendrinti", + "Check for changes" : "Patikrinti ar nėra pakeitimų", + "Never" : "Niekada", + "Once every direct access" : "Kartą per tiesioginę peržiūrą", + "Folder name" : "Aplanko pavadinimas", + "External storage" : "Išorinė saugykla", + "Authentication" : "Prisijungimas", "Configuration" : "Konfigūracija", + "Available for" : "Prieinamas", "Add storage" : "Pridėti saugyklą", - "Delete" : "Ištrinti" + "Advanced settings" : "Išplėstiniai nustatymai", + "Delete" : "Ištrinti", + "Allow users to mount external storage" : "Leisti naudotojams prijungti išorines saugyklas", + "Allow users to mount the following external storage" : "Leisti naudotojams prijungti šias išorines saugyklas", + "Storage with id \"%i\" not found" : "Nerasta saugykla su identifikacijos numeriu \"%i\"", + "Storage with id \"%i\" is not user editable" : "Naudotojai negali redaguoti saugyklos identifikuotos kaip \"%i\"" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files_external/l10n/lt_LT.json b/apps/files_external/l10n/lt_LT.json index d7c4d7966a..fd197a3480 100644 --- a/apps/files_external/l10n/lt_LT.json +++ b/apps/files_external/l10n/lt_LT.json @@ -1,29 +1,131 @@ { "translations": { - "Fetching request tokens failed. Verify that your app key and secret are correct." : "Nepavyko atsiųsti užklausos žymės. Patikrinkite savo programos raktą ir paslaptį.", - "Step 1 failed. Exception: %s" : "1 žingsnio klaida: %s", - "Step 2 failed. Exception: %s" : "2 žingsnio klaida: %s", - "External storage" : "Išorinė saugykla", + "Fetching request tokens failed. Verify that your app key and secret are correct." : "Užklausos prieigos raktų gavimas nepavyko. Įsitikinkite, kad jūsų programėlės raktas ir paslaptis yra teisingi.", + "Fetching access tokens failed. Verify that your app key and secret are correct." : "Prieigos raktas negautas. Patikrinkite ar trečiųjų šalių programinės įrangos identifikacijos numeris ir slaptažodis yra teisingi.", + "Please provide a valid app key and secret." : "Prašome naudoti teisingus trečiųjų šalių programinės įrangos identifikacijos numerį ir slaptažodį.", + "Step 1 failed. Exception: %s" : "Žingsnis 1 nepavyko. Išimtis: %s", + "Step 2 failed. Exception: %s" : "Žingsnis 2 nepavyko. Išimtis: %s", + "External storages" : "Išorinės saugyklos", + "Dropbox App Configuration" : "Dropbox programinės įrangos konfigūravimas", + "Google Drive App Configuration" : "Google disko programėlės konfigūracija", "Personal" : "Asmeniniai", - "Grant access" : "Suteikti priėjimą", - "Saved" : "Išsaugoti", - "Username" : "Prisijungimo vardas", + "System" : "Sistema", + "Grant access" : "Suteikti prieigą", + "Error configuring OAuth1" : "Klaida, konfigūruojant OAuth1", + "Error configuring OAuth2" : "Klaida, konfigūruojant OAuth2", + "Generate keys" : "Sukurti raktus", + "Error generating key pair" : "Klaida kuriant raktus", + "All users. Type to select user or group." : "Visi naudotojai. Pradėkite rašyti, jei norite pasirinkti konkretų naudotoją ar grupę.", + "(group)" : "(grupė)", + "Compatibility with Mac NFD encoding (slow)" : "Suderinamumas su Mac NFD kodavimu (lėtai)", + "Admin defined" : "Administratorius apibrėžtas", + "Saved" : "Įrašyta", + "Saving..." : "Įrašoma...", + "Save" : "Įrašyti", + "Empty response from the server" : "Negautas atsakymas iš serverio", + "Couldn't access. Please log out and in again to activate this mount point" : "Prieiga yra neįmanoma. Pabandykite prisijungti iš naujo.", + "Couldn't get the information from the remote server: {code} {type}" : "Neįmanoma gauti informacijos iš serverio: {code} {type}", + "Couldn't get the list of external mount points: {type}" : "Nepavyko gauti išorinių prijungimo taškų sąrašo: {type}", + "There was an error with message: " : "Klaidos žinutė:", + "External mount error" : "Išorinio prijungimo klaida", + "external-storage" : "išorinė saugykla", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Neįmanoma gauti duomenų sąrašo ir Windows tinkle prijungto disko. Nėra jokio atsakymo.", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Kai kurios sukonfigūruotos išorinės saugyklos nebuvo prijungtos. Paspauskite ant raudonai nuspalvotų eilučių norėdami gauti išsamesnę informaciją", + "Please enter the credentials for the {mount} mount" : "Prašome įvesti prisijungimo duomenis skirtus saugyklos {mount} prijungimui", + "Username" : "Naudotojo vardas", "Password" : "Slaptažodis", - "Save" : "Išsaugoti", - "None" : "Nieko", + "Credentials saved" : "Prisijungimo duomenys yra išsaugoti", + "Credentials saving failed" : "Nepavyko išsaugoti prisijungimo duomenų", + "Credentials required" : "Reikalingi prisijungimo duomenys", + "Storage with ID \"%d\" not found" : "Nerasta saugykla su identifikacijos numeriu \"%d\"", + "Invalid backend or authentication mechanism class" : "Netinkama programinio kodo klasė realizuoja prisijungimo mechanizmą", + "Invalid mount point" : "Neteisingas prijungimo taškas", + "Objectstore forbidden" : "Objektų saugykla yra neprieinama", + "Invalid storage backend \"%s\"" : "Netinkama saugyklos posistemė \"%s\"", + "Not permitted to use backend \"%s\"" : "Neleidžiama naudoti posistemės \"%s\"", + "Not permitted to use authentication mechanism \"%s\"" : "Neleidžiama naudoti prisijungimo mechanizmo \"%s\"", + "Unsatisfied backend parameters" : " Netinkami posistemės parametrai", + "Unsatisfied authentication mechanism parameters" : "Netinkami parametrai perduoti į prisijungimo mechanizmą", + "Insufficient data: %s" : "Trūksta duomenų: %s", + "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Naudotojai negali redaguoti saugyklos identifikuotos kaip \"%d\"", + "Access key" : "Prieigos raktas", + "Secret key" : "Slaptažodis", + "Builtin" : "Įmontuotas", + "None" : "Nėra", + "OAuth1" : "OAuth1", + "App key" : "Trečiųjų šalių programinės įrangos identifikacijos raktas", + "App secret" : "Trečiųjų šalių programinės įrangos slaptažodis", + "OAuth2" : "OAuth2", + "Client ID" : "Kliento ID", + "Client secret" : "Trečiųjų šalių programinės įrangos kliento identifikacijos raktas", + "OpenStack" : "OpenStack", + "Tenant name" : "Laikino valdytojo vardas", + "Identity endpoint URL" : "Identiteto URL", + "Rackspace" : "Rackspace", "API key" : "API raktas", + "Global credentials" : "Globalūs prisijungimo duomenys", + "Log-in credentials, save in database" : "Prisijungimo duomenys, saugoti duomenų bazėje", + "Username and password" : "Naudotojo vardas ir slaptažodis", + "Log-in credentials, save in session" : "Prisijungimo duomenys, saugoti sesijoje", + "User entered, store in database" : "Naudotojas įvestas, saugoti duomenų bazėje", + "RSA public key" : "RSA viešasis raktas", + "Public key" : "Viešasis raktas", + "Amazon S3" : "Amazon S3", + "Bucket" : "Amazon S3 saugykla", + "Hostname" : "Domeno vardas", "Port" : "Prievadas", "Region" : "Regionas", + "Enable SSL" : "Įjungti SSL", + "Enable Path Style" : "Amazon S3 kelias", "WebDAV" : "WebDAV", "URL" : "URL", - "Host" : "Mazgas", + "Remote subfolder" : "Nuotolinis poaplankis", + "Secure https://" : "Saugus https://", + "Dropbox" : "Dropbox", + "FTP" : "FTP", + "Host" : "Domenas", + "Secure ftps://" : "Saugus ftps://", + "Google Drive" : "Google diskas", + "Local" : "Vietinis", "Location" : "Vieta", - "ownCloud" : "ownCloud", + "Nextcloud" : "Nextcloud", + "SFTP" : "SFTP", + "Root" : "Šaknis", + "SFTP with secret key login" : "SFTP protokolas su prisijungimu", + "SMB / CIFS" : "SMB / CIFS", "Share" : "Dalintis", + "Domain" : "Domenas", + "SMB / CIFS using OC login" : "SMB / CIFS, naudojant OC prisijungimą", + "Username as share" : "Samba dalinimosi vardas", + "OpenStack Object Storage" : "Objektų saugykla \"OpenStack\"", + "Service name" : "Paslaugos vardas", + "Request timeout (seconds)" : "Prisijungimo laikas (sekundėmis)", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL palaikymas yra neįjungtas arba neįdiegtas į PHP. %s prijungimas neįmanomas. Paprašykite sistemos administratoriaus pagalbos.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP palaikymas yra neįjungtas arba neįdiegtas į PHP. %s prijungimas neįmanomas. Paprašykite sistemos administratoriaus pagalbos.", + "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Nėra įdiegta \"%s\". %s prijungimas yra neįmanomas. Paprašykite savo sistemos administratoriaus, kad įdiegtų trūkstamą paketą.", + "External storage support" : "Išorinės saugyklos priežiūra", + "No external storage configured" : "Nėra sukonfigūruota jokia išorinė saugykla", + "You can add external storages in the personal settings" : "Galite pridėti papildomą išorinę saugyklą nustatymų skiltyje", "Name" : "Pavadinimas", - "External Storage" : "Išorinės saugyklos", - "Folder name" : "Katalogo pavadinimas", + "Storage type" : "Saugyklos tipas", + "Scope" : "Leidimas", + "Enable encryption" : "Įjungti šifravimą", + "Enable previews" : "Leisti peržiūras", + "Enable sharing" : "Leisti bendrinti", + "Check for changes" : "Patikrinti ar nėra pakeitimų", + "Never" : "Niekada", + "Once every direct access" : "Kartą per tiesioginę peržiūrą", + "Folder name" : "Aplanko pavadinimas", + "External storage" : "Išorinė saugykla", + "Authentication" : "Prisijungimas", "Configuration" : "Konfigūracija", + "Available for" : "Prieinamas", "Add storage" : "Pridėti saugyklą", - "Delete" : "Ištrinti" + "Advanced settings" : "Išplėstiniai nustatymai", + "Delete" : "Ištrinti", + "Allow users to mount external storage" : "Leisti naudotojams prijungti išorines saugyklas", + "Allow users to mount the following external storage" : "Leisti naudotojams prijungti šias išorines saugyklas", + "Storage with id \"%i\" not found" : "Nerasta saugykla su identifikacijos numeriu \"%i\"", + "Storage with id \"%i\" is not user editable" : "Naudotojai negali redaguoti saugyklos identifikuotos kaip \"%i\"" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" } \ No newline at end of file diff --git a/apps/files_external/l10n/nb.js b/apps/files_external/l10n/nb.js index 9a751ca44b..f37f892b08 100644 --- a/apps/files_external/l10n/nb.js +++ b/apps/files_external/l10n/nb.js @@ -24,13 +24,13 @@ OC.L10N.register( "Saving..." : "Lagrer...", "Save" : "Lagre", "Empty response from the server" : "Tomt svar fra tjeneren", - "Couldn't access. Please logout and login to activate this mount point" : "Fikk ikke tilgang. Logg ut og inn igjen for å aktivere dette oppkoblingspunktet.", + "Couldn't access. Please log out and in again to activate this mount point" : "Fikk ikke tilgang. Logg ut og inn igjen for å aktivere dette oppkoblingspunktet.", "Couldn't get the information from the remote server: {code} {type}" : "Kunne ikke få informasjon fra fjerntjeneren/ remote server: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Klarte ikke å hente listen over eksterne oppkoblingspunkter: {type}", "There was an error with message: " : "Det oppstod en feil med melding: ", "External mount error" : "Ekstern oppkoblingsfeil", "external-storage" : "eksternlagring", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Klarte ikke å hente listen over oppkoblingspunkter for Windowsnettverks-disker: Tomt svar fra tjeneren", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Klarte ikke å hente listen over oppkoblingspunkter for Windowsnettverks-disker: Tomt svar fra tjeneren", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Noen av de oppsatte eksterne oppkoblingspunktene er ikke tilkoblet. Klikk på de røde raden(e) for mer informasjon.", "Please enter the credentials for the {mount} mount" : "Legg inn påloggingsdetaljer for {mount}", "Username" : "Brukernavn", diff --git a/apps/files_external/l10n/nb.json b/apps/files_external/l10n/nb.json index 66a1a58fe4..eb93446819 100644 --- a/apps/files_external/l10n/nb.json +++ b/apps/files_external/l10n/nb.json @@ -22,13 +22,13 @@ "Saving..." : "Lagrer...", "Save" : "Lagre", "Empty response from the server" : "Tomt svar fra tjeneren", - "Couldn't access. Please logout and login to activate this mount point" : "Fikk ikke tilgang. Logg ut og inn igjen for å aktivere dette oppkoblingspunktet.", + "Couldn't access. Please log out and in again to activate this mount point" : "Fikk ikke tilgang. Logg ut og inn igjen for å aktivere dette oppkoblingspunktet.", "Couldn't get the information from the remote server: {code} {type}" : "Kunne ikke få informasjon fra fjerntjeneren/ remote server: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Klarte ikke å hente listen over eksterne oppkoblingspunkter: {type}", "There was an error with message: " : "Det oppstod en feil med melding: ", "External mount error" : "Ekstern oppkoblingsfeil", "external-storage" : "eksternlagring", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Klarte ikke å hente listen over oppkoblingspunkter for Windowsnettverks-disker: Tomt svar fra tjeneren", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Klarte ikke å hente listen over oppkoblingspunkter for Windowsnettverks-disker: Tomt svar fra tjeneren", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Noen av de oppsatte eksterne oppkoblingspunktene er ikke tilkoblet. Klikk på de røde raden(e) for mer informasjon.", "Please enter the credentials for the {mount} mount" : "Legg inn påloggingsdetaljer for {mount}", "Username" : "Brukernavn", diff --git a/apps/files_external/l10n/nl.js b/apps/files_external/l10n/nl.js index 66b37e57bf..cc00e2d44e 100644 --- a/apps/files_external/l10n/nl.js +++ b/apps/files_external/l10n/nl.js @@ -24,13 +24,13 @@ OC.L10N.register( "Saving..." : "Bewaren...", "Save" : "Bewaren", "Empty response from the server" : "Lege reactie van de server", - "Couldn't access. Please logout and login to activate this mount point" : "Geen toegang. Log uit en opnieuw in om dit koppelpunt te activeren", + "Couldn't access. Please log out and in again to activate this mount point" : "Kon geen toegang krijgen. Log uit en opnieuw in om dit koppelpunt te activeren", "Couldn't get the information from the remote server: {code} {type}" : "Kon geen informatie van de externe server krijgen: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Kon geen overzicht met externe koppelpunten krijgen: {type}", "There was an error with message: " : "Er was een fout met de volgende melding:", "External mount error" : "Extern koppelpunt fout", "external-storage" : "externe opslag", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Kon geen overzicht met Windows netwerk koppelpunten krijgen: lege reactie van de server", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Kon geen overzicht met Windows netwerk koppelpunten krijgen: Maak de server reactie leeg", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Sommige van de geconfigureerde koppelpunten zijn niet verbonden. Klik op de rode rij(en) voor meer informatie", "Please enter the credentials for the {mount} mount" : "Geef de inloggegevens op voor de {mount} mount", "Username" : "Gebruikersnaam", diff --git a/apps/files_external/l10n/nl.json b/apps/files_external/l10n/nl.json index 7067fda56b..fa9d2c7e75 100644 --- a/apps/files_external/l10n/nl.json +++ b/apps/files_external/l10n/nl.json @@ -22,13 +22,13 @@ "Saving..." : "Bewaren...", "Save" : "Bewaren", "Empty response from the server" : "Lege reactie van de server", - "Couldn't access. Please logout and login to activate this mount point" : "Geen toegang. Log uit en opnieuw in om dit koppelpunt te activeren", + "Couldn't access. Please log out and in again to activate this mount point" : "Kon geen toegang krijgen. Log uit en opnieuw in om dit koppelpunt te activeren", "Couldn't get the information from the remote server: {code} {type}" : "Kon geen informatie van de externe server krijgen: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Kon geen overzicht met externe koppelpunten krijgen: {type}", "There was an error with message: " : "Er was een fout met de volgende melding:", "External mount error" : "Extern koppelpunt fout", "external-storage" : "externe opslag", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Kon geen overzicht met Windows netwerk koppelpunten krijgen: lege reactie van de server", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Kon geen overzicht met Windows netwerk koppelpunten krijgen: Maak de server reactie leeg", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Sommige van de geconfigureerde koppelpunten zijn niet verbonden. Klik op de rode rij(en) voor meer informatie", "Please enter the credentials for the {mount} mount" : "Geef de inloggegevens op voor de {mount} mount", "Username" : "Gebruikersnaam", diff --git a/apps/files_external/l10n/pl.js b/apps/files_external/l10n/pl.js index e6bc51457c..5c9e34bda8 100644 --- a/apps/files_external/l10n/pl.js +++ b/apps/files_external/l10n/pl.js @@ -24,13 +24,11 @@ OC.L10N.register( "Saving..." : "Zapisywanie...", "Save" : "Zapisz", "Empty response from the server" : "Puste odpowiedzi z serwera", - "Couldn't access. Please logout and login to activate this mount point" : "Nie można uzyskać dostępu. Należy wylogować się i ponownie zalogować się, aby włączyć ten punkt montowania", "Couldn't get the information from the remote server: {code} {type}" : "Nie można otrzymać informacji od zdalnego serwera: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Nie udało się uzyskać listy zewnętrznych punktów montowania: {type}", "There was an error with message: " : "Wystąpił błąd o treści:", "External mount error" : "Błąd przy montowaniu zewnętrznym", "external-storage" : "magazyn zewnętrzny", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Nie udało się uzyskać listy punktów montowania dysku sieciowego z systemu Windows: puste odpowiedzi z serwera", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Niektóre skonfigurowane zewnętrzne punkty montowania są nie podłączone. Proszę kliknąć na czerwony rząd (y), aby uzyskać więcej informacji", "Please enter the credentials for the {mount} mount" : "Proszę wprowadzić poświadczenia dla {mount} montażu", "Username" : "Nazwa użytkownika", diff --git a/apps/files_external/l10n/pl.json b/apps/files_external/l10n/pl.json index fdc81eccf7..3b60a3a760 100644 --- a/apps/files_external/l10n/pl.json +++ b/apps/files_external/l10n/pl.json @@ -22,13 +22,11 @@ "Saving..." : "Zapisywanie...", "Save" : "Zapisz", "Empty response from the server" : "Puste odpowiedzi z serwera", - "Couldn't access. Please logout and login to activate this mount point" : "Nie można uzyskać dostępu. Należy wylogować się i ponownie zalogować się, aby włączyć ten punkt montowania", "Couldn't get the information from the remote server: {code} {type}" : "Nie można otrzymać informacji od zdalnego serwera: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Nie udało się uzyskać listy zewnętrznych punktów montowania: {type}", "There was an error with message: " : "Wystąpił błąd o treści:", "External mount error" : "Błąd przy montowaniu zewnętrznym", "external-storage" : "magazyn zewnętrzny", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Nie udało się uzyskać listy punktów montowania dysku sieciowego z systemu Windows: puste odpowiedzi z serwera", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Niektóre skonfigurowane zewnętrzne punkty montowania są nie podłączone. Proszę kliknąć na czerwony rząd (y), aby uzyskać więcej informacji", "Please enter the credentials for the {mount} mount" : "Proszę wprowadzić poświadczenia dla {mount} montażu", "Username" : "Nazwa użytkownika", diff --git a/apps/files_external/l10n/pt_BR.js b/apps/files_external/l10n/pt_BR.js index 837e48543e..29f5435d0b 100644 --- a/apps/files_external/l10n/pt_BR.js +++ b/apps/files_external/l10n/pt_BR.js @@ -24,13 +24,13 @@ OC.L10N.register( "Saving..." : "Salvando...", "Save" : "Salvar", "Empty response from the server" : "Resposta vazia do servidor", - "Couldn't access. Please logout and login to activate this mount point" : "Não foi possível acessar. Por favor, saia e entre novamente para ativar este ponto de montagem", + "Couldn't access. Please log out and in again to activate this mount point" : "Não foi possível acessar. Refaça o login para ativar este ponto de montagem", "Couldn't get the information from the remote server: {code} {type}" : "Não foi possível obter as informações do servidor remoto: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Não foi possível obter a lista de pontos de montagem externos: {type}", "There was an error with message: " : "Houve um erro com a mensagem:", "External mount error" : "Erro de montagem externa", "external-storage" : "armazenamento externo", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Não foi possível obter a lista de unidades de pontos de montagem da rede Windows: resposta vazia do servidor", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Não foi possível buscar a lista de pontos de montagem da unidade de rede do Windows: Resposta vazia do servidor", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Alguns dos pontos de montagem externos configurados não estão conectados. Clique na(s) linha(s) vermelha(s) para mais informações", "Please enter the credentials for the {mount} mount" : "Por favor, insira as credenciais para montar {mount}", "Username" : "Nome de Usuário", diff --git a/apps/files_external/l10n/pt_BR.json b/apps/files_external/l10n/pt_BR.json index 6a21ec8565..178b5582b7 100644 --- a/apps/files_external/l10n/pt_BR.json +++ b/apps/files_external/l10n/pt_BR.json @@ -22,13 +22,13 @@ "Saving..." : "Salvando...", "Save" : "Salvar", "Empty response from the server" : "Resposta vazia do servidor", - "Couldn't access. Please logout and login to activate this mount point" : "Não foi possível acessar. Por favor, saia e entre novamente para ativar este ponto de montagem", + "Couldn't access. Please log out and in again to activate this mount point" : "Não foi possível acessar. Refaça o login para ativar este ponto de montagem", "Couldn't get the information from the remote server: {code} {type}" : "Não foi possível obter as informações do servidor remoto: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Não foi possível obter a lista de pontos de montagem externos: {type}", "There was an error with message: " : "Houve um erro com a mensagem:", "External mount error" : "Erro de montagem externa", "external-storage" : "armazenamento externo", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Não foi possível obter a lista de unidades de pontos de montagem da rede Windows: resposta vazia do servidor", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Não foi possível buscar a lista de pontos de montagem da unidade de rede do Windows: Resposta vazia do servidor", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Alguns dos pontos de montagem externos configurados não estão conectados. Clique na(s) linha(s) vermelha(s) para mais informações", "Please enter the credentials for the {mount} mount" : "Por favor, insira as credenciais para montar {mount}", "Username" : "Nome de Usuário", diff --git a/apps/files_external/l10n/pt_PT.js b/apps/files_external/l10n/pt_PT.js index c351c9f1ad..2758ce3ecb 100644 --- a/apps/files_external/l10n/pt_PT.js +++ b/apps/files_external/l10n/pt_PT.js @@ -22,12 +22,10 @@ OC.L10N.register( "Saved" : "Guardado", "Save" : "Guardar", "Empty response from the server" : "Resposta vazia a partir do servidor", - "Couldn't access. Please logout and login to activate this mount point" : "Não foi possível aceder. Por favor, faça logout e login para ativar este ponto de montagem", "Couldn't get the list of external mount points: {type}" : "Não foi possível conseguir a lista de pontos de montagem externos: {type}", "There was an error with message: " : "Houve um erro com a mensagem:", "External mount error" : "Erro de montagem externa", "external-storage" : "armazenamento externo", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Não foi possível conseguir a lista de pontos de montagem Windows na rede: resposta vazia do servidor", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Alguns dos pontos de montagem externos configurados não estão conectados. Por favor, clique na fila vermelha para mais informação", "Please enter the credentials for the {mount} mount" : "Por favor, introduza as credenciais para {mount}", "Username" : "Nome de utilizador", diff --git a/apps/files_external/l10n/pt_PT.json b/apps/files_external/l10n/pt_PT.json index 80eb41bb30..a94387533c 100644 --- a/apps/files_external/l10n/pt_PT.json +++ b/apps/files_external/l10n/pt_PT.json @@ -20,12 +20,10 @@ "Saved" : "Guardado", "Save" : "Guardar", "Empty response from the server" : "Resposta vazia a partir do servidor", - "Couldn't access. Please logout and login to activate this mount point" : "Não foi possível aceder. Por favor, faça logout e login para ativar este ponto de montagem", "Couldn't get the list of external mount points: {type}" : "Não foi possível conseguir a lista de pontos de montagem externos: {type}", "There was an error with message: " : "Houve um erro com a mensagem:", "External mount error" : "Erro de montagem externa", "external-storage" : "armazenamento externo", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Não foi possível conseguir a lista de pontos de montagem Windows na rede: resposta vazia do servidor", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Alguns dos pontos de montagem externos configurados não estão conectados. Por favor, clique na fila vermelha para mais informação", "Please enter the credentials for the {mount} mount" : "Por favor, introduza as credenciais para {mount}", "Username" : "Nome de utilizador", diff --git a/apps/files_external/l10n/ru.js b/apps/files_external/l10n/ru.js index 14659b7747..f0d8b4ca9d 100644 --- a/apps/files_external/l10n/ru.js +++ b/apps/files_external/l10n/ru.js @@ -24,13 +24,13 @@ OC.L10N.register( "Saving..." : "Сохранение...", "Save" : "Сохранить", "Empty response from the server" : "Пустой ответ от сервера", - "Couldn't access. Please logout and login to activate this mount point" : "Не удалось получить доступ. Выйдите и снова войдите чтобы активировать эту точку монтирования", + "Couldn't access. Please log out and in again to activate this mount point" : "Не удалось получить доступ. Для активации этой точки подключения выйдите и снова войдите в систему", "Couldn't get the information from the remote server: {code} {type}" : "Не удалось получить информацию с удалённого сервера: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Не удалось получить список внешних точек монтирования: {type}", "There was an error with message: " : "Обнаружена ошибка с сообщением:", "External mount error" : "Ошибка внешнего монтирования", "external-storage" : "внешнее-хранилище", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Не удалось получить список точек монтирования сетевых дисков Windows: пустой ответ от сервера", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Не удалось получить список точек подключения сетевых дисков Windows: пустой ответ от сервера", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Некоторые из настроенных внешних точек монтирования не подключены. Для получения дополнительной информации нажмите на красную строку(и)", "Please enter the credentials for the {mount} mount" : "Укажите учётные данные для {mount}", "Username" : "Имя пользователя", diff --git a/apps/files_external/l10n/ru.json b/apps/files_external/l10n/ru.json index 443e577e44..f6aa8cfb77 100644 --- a/apps/files_external/l10n/ru.json +++ b/apps/files_external/l10n/ru.json @@ -22,13 +22,13 @@ "Saving..." : "Сохранение...", "Save" : "Сохранить", "Empty response from the server" : "Пустой ответ от сервера", - "Couldn't access. Please logout and login to activate this mount point" : "Не удалось получить доступ. Выйдите и снова войдите чтобы активировать эту точку монтирования", + "Couldn't access. Please log out and in again to activate this mount point" : "Не удалось получить доступ. Для активации этой точки подключения выйдите и снова войдите в систему", "Couldn't get the information from the remote server: {code} {type}" : "Не удалось получить информацию с удалённого сервера: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Не удалось получить список внешних точек монтирования: {type}", "There was an error with message: " : "Обнаружена ошибка с сообщением:", "External mount error" : "Ошибка внешнего монтирования", "external-storage" : "внешнее-хранилище", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Не удалось получить список точек монтирования сетевых дисков Windows: пустой ответ от сервера", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Не удалось получить список точек подключения сетевых дисков Windows: пустой ответ от сервера", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Некоторые из настроенных внешних точек монтирования не подключены. Для получения дополнительной информации нажмите на красную строку(и)", "Please enter the credentials for the {mount} mount" : "Укажите учётные данные для {mount}", "Username" : "Имя пользователя", diff --git a/apps/files_external/l10n/sl.js b/apps/files_external/l10n/sl.js index 5ac0f649ba..75dac91502 100644 --- a/apps/files_external/l10n/sl.js +++ b/apps/files_external/l10n/sl.js @@ -23,12 +23,10 @@ OC.L10N.register( "Saving..." : "Shranjujem...", "Save" : "Shrani", "Empty response from the server" : "S strežnika je prejet odziv brez vsebine.", - "Couldn't access. Please logout and login to activate this mount point" : "Dostop ni mogoč. Za priklop točke se odjavite in ponovno prijavite.", "Couldn't get the list of external mount points: {type}" : "Ni mogoče pridobiti seznama zunanjih priklopnih točk: {type}", "There was an error with message: " : "Prišlo je do napake s sporočilom:", "External mount error" : "Notranja napaka priklopa", "external-storage" : "zunanja-shramba", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Ni mogoče pridobiti seznama priklopnih točk omrežnega pogona: ni odziva s strežnika", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Nekatere izmed nastavljenih zunanjih priklopnih točk niso povezane. Več podrobnosti je na voljo s klikom na rdeče vrstice.", "Please enter the credentials for the {mount} mount" : "Vpišite poverila za priklopno točko {mount}", "Username" : "Uporabniško ime", diff --git a/apps/files_external/l10n/sl.json b/apps/files_external/l10n/sl.json index d624689d95..1944a9d4f6 100644 --- a/apps/files_external/l10n/sl.json +++ b/apps/files_external/l10n/sl.json @@ -21,12 +21,10 @@ "Saving..." : "Shranjujem...", "Save" : "Shrani", "Empty response from the server" : "S strežnika je prejet odziv brez vsebine.", - "Couldn't access. Please logout and login to activate this mount point" : "Dostop ni mogoč. Za priklop točke se odjavite in ponovno prijavite.", "Couldn't get the list of external mount points: {type}" : "Ni mogoče pridobiti seznama zunanjih priklopnih točk: {type}", "There was an error with message: " : "Prišlo je do napake s sporočilom:", "External mount error" : "Notranja napaka priklopa", "external-storage" : "zunanja-shramba", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Ni mogoče pridobiti seznama priklopnih točk omrežnega pogona: ni odziva s strežnika", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Nekatere izmed nastavljenih zunanjih priklopnih točk niso povezane. Več podrobnosti je na voljo s klikom na rdeče vrstice.", "Please enter the credentials for the {mount} mount" : "Vpišite poverila za priklopno točko {mount}", "Username" : "Uporabniško ime", diff --git a/apps/files_external/l10n/sq.js b/apps/files_external/l10n/sq.js index e45e1cf261..8999e01abc 100644 --- a/apps/files_external/l10n/sq.js +++ b/apps/files_external/l10n/sq.js @@ -24,13 +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 logout and login to activate this mount point" : "S’fut dot. Ju lutemi, dilni dhe hyni që të aktivizohet kjo pikë montimi", + "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 get the list of Windows network drive mount points: empty response from the server" : "S’u mor dot lista e pikave të montimit Windows network drive: përgjigje e zbrazët nga shërbyesi", + "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", @@ -38,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", @@ -48,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", @@ -103,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 4fa3b01ce8..2b2e224c5b 100644 --- a/apps/files_external/l10n/sq.json +++ b/apps/files_external/l10n/sq.json @@ -22,13 +22,13 @@ "Saving..." : "Po ruhet …", "Save" : "Ruaje", "Empty response from the server" : "Përgjigje e zbrazët prej serverit", - "Couldn't access. Please logout and login to activate this mount point" : "S’fut dot. Ju lutemi, dilni dhe hyni që të aktivizohet kjo pikë montimi", + "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 get the list of Windows network drive mount points: empty response from the server" : "S’u mor dot lista e pikave të montimit Windows network drive: përgjigje e zbrazët nga shërbyesi", + "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 +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", @@ -46,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", @@ -101,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/l10n/sv.js b/apps/files_external/l10n/sv.js index c47779943a..c331124bc6 100644 --- a/apps/files_external/l10n/sv.js +++ b/apps/files_external/l10n/sv.js @@ -24,13 +24,11 @@ OC.L10N.register( "Saving..." : "Sparar...", "Save" : "Spara", "Empty response from the server" : "Tomt svar från servern", - "Couldn't access. Please logout and login to activate this mount point" : "Ingen åtkomst. Vänligen logga ut och in igen för att aktivera denna monteringspunkt.", "Couldn't get the information from the remote server: {code} {type}" : "Kan ej läsa informationen från extern server: {code} {type} ", "Couldn't get the list of external mount points: {type}" : "Kunde inte hämta listan för externa monteringspunkter: {type}", "There was an error with message: " : "Det fanns ett fel med meddelande:", "External mount error" : "Fel vid extern montering", "external-storage" : "extern-lagring", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Kunde inte hitta listan med Windows nätverksdiskar: tomt svar från servern", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Några av de konfigurerade externa monteringspunkter är inte anslutna. Klicka på den röda rad(er) för mer information.", "Please enter the credentials for the {mount} mount" : "Vänligen ange uppgifterna för {mount} montering", "Username" : "Användarnamn", diff --git a/apps/files_external/l10n/sv.json b/apps/files_external/l10n/sv.json index e15b132206..399ab88e3a 100644 --- a/apps/files_external/l10n/sv.json +++ b/apps/files_external/l10n/sv.json @@ -22,13 +22,11 @@ "Saving..." : "Sparar...", "Save" : "Spara", "Empty response from the server" : "Tomt svar från servern", - "Couldn't access. Please logout and login to activate this mount point" : "Ingen åtkomst. Vänligen logga ut och in igen för att aktivera denna monteringspunkt.", "Couldn't get the information from the remote server: {code} {type}" : "Kan ej läsa informationen från extern server: {code} {type} ", "Couldn't get the list of external mount points: {type}" : "Kunde inte hämta listan för externa monteringspunkter: {type}", "There was an error with message: " : "Det fanns ett fel med meddelande:", "External mount error" : "Fel vid extern montering", "external-storage" : "extern-lagring", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Kunde inte hitta listan med Windows nätverksdiskar: tomt svar från servern", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Några av de konfigurerade externa monteringspunkter är inte anslutna. Klicka på den röda rad(er) för mer information.", "Please enter the credentials for the {mount} mount" : "Vänligen ange uppgifterna för {mount} montering", "Username" : "Användarnamn", diff --git a/apps/files_external/l10n/th.js b/apps/files_external/l10n/th.js index faaad69c68..8994d2a23a 100644 --- a/apps/files_external/l10n/th.js +++ b/apps/files_external/l10n/th.js @@ -19,12 +19,10 @@ OC.L10N.register( "Saved" : "บันทึกแล้ว", "Save" : "บันทึก", "Empty response from the server" : "ไม่มีการตอบสนองจากเซิร์ฟเวอร์", - "Couldn't access. Please logout and login to activate this mount point" : "ไม่สามารถเข้าถึง กรุณออกจากระบบและาเข้าสู่ระบบใหม่เพื่อเปิดใช้งานจุดเชื่อมต่อนี้", "Couldn't get the list of external mount points: {type}" : "ไม่สามารถรับรายชื่อของจุดเชื่อมต่อภายนอก: {type}", "There was an error with message: " : "มีข้อความแสดงข้อผิดพลาด", "External mount error" : "การติดจากตั้งภายนอกเกิดข้อผิดพลาด", "external-storage" : "ที่จัดเก็บข้อมูลภายนอก", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "ไม่สามารถรับรายชื่อไดรฟ์เครือข่ายของวินโดว์ส จุดที่ติดตั้ง: ไม่มีการตอบสนองจากเซิร์ฟเวอร์", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "การกำหนดค่าบางส่วนของจุดเชื่อมต่อภายนอกไม่ถูกเชื่อมต่อ กรุณาคลิกที่ตรงสีแดงสำหรับข้อมูลเพิ่มเติม", "Please enter the credentials for the {mount} mount" : "กรุณากรอกข้อมูลประจำตัวสำหรับ {mount} ", "Username" : "ชื่อผู้ใช้งาน", diff --git a/apps/files_external/l10n/th.json b/apps/files_external/l10n/th.json index 9349bc382e..fb24edfe67 100644 --- a/apps/files_external/l10n/th.json +++ b/apps/files_external/l10n/th.json @@ -17,12 +17,10 @@ "Saved" : "บันทึกแล้ว", "Save" : "บันทึก", "Empty response from the server" : "ไม่มีการตอบสนองจากเซิร์ฟเวอร์", - "Couldn't access. Please logout and login to activate this mount point" : "ไม่สามารถเข้าถึง กรุณออกจากระบบและาเข้าสู่ระบบใหม่เพื่อเปิดใช้งานจุดเชื่อมต่อนี้", "Couldn't get the list of external mount points: {type}" : "ไม่สามารถรับรายชื่อของจุดเชื่อมต่อภายนอก: {type}", "There was an error with message: " : "มีข้อความแสดงข้อผิดพลาด", "External mount error" : "การติดจากตั้งภายนอกเกิดข้อผิดพลาด", "external-storage" : "ที่จัดเก็บข้อมูลภายนอก", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "ไม่สามารถรับรายชื่อไดรฟ์เครือข่ายของวินโดว์ส จุดที่ติดตั้ง: ไม่มีการตอบสนองจากเซิร์ฟเวอร์", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "การกำหนดค่าบางส่วนของจุดเชื่อมต่อภายนอกไม่ถูกเชื่อมต่อ กรุณาคลิกที่ตรงสีแดงสำหรับข้อมูลเพิ่มเติม", "Please enter the credentials for the {mount} mount" : "กรุณากรอกข้อมูลประจำตัวสำหรับ {mount} ", "Username" : "ชื่อผู้ใช้งาน", diff --git a/apps/files_external/l10n/tr.js b/apps/files_external/l10n/tr.js index 9aa54a5ea2..930a2376d5 100644 --- a/apps/files_external/l10n/tr.js +++ b/apps/files_external/l10n/tr.js @@ -24,13 +24,13 @@ OC.L10N.register( "Saving..." : "Kaydediliyor...", "Save" : "Kaydet", "Empty response from the server" : "Sunucudan boş yanıt alındı", - "Couldn't access. Please logout and login to activate this mount point" : "Erişilemedi. Lütfen bu bağlama noktasını etkinleştirmek için oturumunuzu kapatıp yeniden açın", + "Couldn't access. Please log out and in again to activate this mount point" : "Erişilemedi. Lütfen bu bağlama noktasını etkinleştirmek için oturumunuzu kapatıp yeniden açın", "Couldn't get the information from the remote server: {code} {type}" : "Uzak sunucudan bilgi alınamadı: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Dış bağlama noktalarının listesi alınamadı: {type}", "There was an error with message: " : "Şu ileti ile bir sorun çıktı:", "External mount error" : "Dış bağlama sorunu", "external-storage" : "dış depolama", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows ağ sürücüsü bağlama nokta listesi alınamadı: Sunucudan boş yanıt alındı", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Windows ağ sürücüsü bağlama nokta listesi alınamadı: Sunucudan boş yanıt alındı", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Yapılandırılmış dış bağlama noktalarından bazıları bağlı değil. Lütfen ayrıntılı bilgi almak için kırmızı satırlara tıklayın", "Please enter the credentials for the {mount} mount" : "{mount} bağlaması için kimlik doğrulama bilgilerini yazın", "Username" : "Kullanıcı Adı", diff --git a/apps/files_external/l10n/tr.json b/apps/files_external/l10n/tr.json index 448c708a31..3ceef8ad4b 100644 --- a/apps/files_external/l10n/tr.json +++ b/apps/files_external/l10n/tr.json @@ -22,13 +22,13 @@ "Saving..." : "Kaydediliyor...", "Save" : "Kaydet", "Empty response from the server" : "Sunucudan boş yanıt alındı", - "Couldn't access. Please logout and login to activate this mount point" : "Erişilemedi. Lütfen bu bağlama noktasını etkinleştirmek için oturumunuzu kapatıp yeniden açın", + "Couldn't access. Please log out and in again to activate this mount point" : "Erişilemedi. Lütfen bu bağlama noktasını etkinleştirmek için oturumunuzu kapatıp yeniden açın", "Couldn't get the information from the remote server: {code} {type}" : "Uzak sunucudan bilgi alınamadı: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Dış bağlama noktalarının listesi alınamadı: {type}", "There was an error with message: " : "Şu ileti ile bir sorun çıktı:", "External mount error" : "Dış bağlama sorunu", "external-storage" : "dış depolama", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows ağ sürücüsü bağlama nokta listesi alınamadı: Sunucudan boş yanıt alındı", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Windows ağ sürücüsü bağlama nokta listesi alınamadı: Sunucudan boş yanıt alındı", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Yapılandırılmış dış bağlama noktalarından bazıları bağlı değil. Lütfen ayrıntılı bilgi almak için kırmızı satırlara tıklayın", "Please enter the credentials for the {mount} mount" : "{mount} bağlaması için kimlik doğrulama bilgilerini yazın", "Username" : "Kullanıcı Adı", diff --git a/apps/files_external/l10n/zh_CN.js b/apps/files_external/l10n/zh_CN.js index f2a6772925..065c06bbde 100644 --- a/apps/files_external/l10n/zh_CN.js +++ b/apps/files_external/l10n/zh_CN.js @@ -24,13 +24,13 @@ OC.L10N.register( "Saving..." : "正在保存...", "Save" : "保存", "Empty response from the server" : "服务器响应为空", - "Couldn't access. Please logout and login to activate this mount point" : "无法连接. 请注销并重新登录以激活挂载点.", + "Couldn't access. Please log out and in again to activate this mount point" : "无法访问!请注销并重新登录以激活挂载点。", "Couldn't get the information from the remote server: {code} {type}" : "无法从远程服务器获取信息: {code} {type}", "Couldn't get the list of external mount points: {type}" : "无法获取外部挂载点列表: {type}", "There was an error with message: " : "错误信息: ", "External mount error" : "外部挂载错误", "external-storage" : "外部存储", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "无法获取 Windows 网络磁盘挂载点列表: 服务器响应为空", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "无法获取Windows网络磁盘挂载点列表:服务器未响应", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "一些外部挂载点没有连接. 请检查标红的行以获取更多信息.", "Please enter the credentials for the {mount} mount" : "请输入 {mount} 挂载点的凭据", "Username" : "用户名", diff --git a/apps/files_external/l10n/zh_CN.json b/apps/files_external/l10n/zh_CN.json index 5b3e95dfdb..12fdeee87f 100644 --- a/apps/files_external/l10n/zh_CN.json +++ b/apps/files_external/l10n/zh_CN.json @@ -22,13 +22,13 @@ "Saving..." : "正在保存...", "Save" : "保存", "Empty response from the server" : "服务器响应为空", - "Couldn't access. Please logout and login to activate this mount point" : "无法连接. 请注销并重新登录以激活挂载点.", + "Couldn't access. Please log out and in again to activate this mount point" : "无法访问!请注销并重新登录以激活挂载点。", "Couldn't get the information from the remote server: {code} {type}" : "无法从远程服务器获取信息: {code} {type}", "Couldn't get the list of external mount points: {type}" : "无法获取外部挂载点列表: {type}", "There was an error with message: " : "错误信息: ", "External mount error" : "外部挂载错误", "external-storage" : "外部存储", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "无法获取 Windows 网络磁盘挂载点列表: 服务器响应为空", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "无法获取Windows网络磁盘挂载点列表:服务器未响应", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "一些外部挂载点没有连接. 请检查标红的行以获取更多信息.", "Please enter the credentials for the {mount} mount" : "请输入 {mount} 挂载点的凭据", "Username" : "用户名", diff --git a/apps/files_external/l10n/zh_TW.js b/apps/files_external/l10n/zh_TW.js index f33986f0fc..94d180ad71 100644 --- a/apps/files_external/l10n/zh_TW.js +++ b/apps/files_external/l10n/zh_TW.js @@ -22,7 +22,6 @@ OC.L10N.register( "Saving..." : "儲存中...", "Save" : "儲存", "Empty response from the server" : "服務器没有回應", - "Couldn't access. Please logout and login to activate this mount point" : "無法存取。請重新登出再登入啟動此掛載點。", "Couldn't get the information from the remote server: {code} {type}" : "無法從遠程伺服器上獲取資料 : {code} {type}", "Couldn't get the list of external mount points: {type}" : "無法得到外部掛載點的列表: {type}", "There was an error with message: " : "錯誤信息:", diff --git a/apps/files_external/l10n/zh_TW.json b/apps/files_external/l10n/zh_TW.json index db55e88b28..78c784c65d 100644 --- a/apps/files_external/l10n/zh_TW.json +++ b/apps/files_external/l10n/zh_TW.json @@ -20,7 +20,6 @@ "Saving..." : "儲存中...", "Save" : "儲存", "Empty response from the server" : "服務器没有回應", - "Couldn't access. Please logout and login to activate this mount point" : "無法存取。請重新登出再登入啟動此掛載點。", "Couldn't get the information from the remote server: {code} {type}" : "無法從遠程伺服器上獲取資料 : {code} {type}", "Couldn't get the list of external mount points: {type}" : "無法得到外部掛載點的列表: {type}", "There was an error with message: " : "錯誤信息:", diff --git a/apps/files_external/lib/Command/Applicable.php b/apps/files_external/lib/Command/Applicable.php index c7c2f6aa21..2e8311db9e 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 d5b320dcfc..ff9fa3ae87 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('Storage created with id ' . $mount->getId() . ''); } 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 d63aa35050..015995ec14 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 2159c0a001..712a8851c8 100644 --- a/apps/files_external/lib/Command/Import.php +++ b/apps/files_external/lib/Command/Import.php @@ -87,7 +87,7 @@ class Import extends Base { ->setDescription('Import mount configurations') ->addOption( 'user', - null, + '', InputOption::VALUE_OPTIONAL, 'user to add the mount configurations for, if not set the mount will be added as system mount' ) @@ -98,7 +98,7 @@ class Import extends Base { ) ->addOption( 'dry', - null, + '', InputOption::VALUE_NONE, 'Don\'t save the imported mounts, only list the new mounts' ); @@ -161,8 +161,8 @@ class Import extends Base { if ( $existingMount->getMountPoint() === $mount->getMountPoint() && $existingMount->getApplicableGroups() === $mount->getApplicableGroups() && - $existingMount->getApplicableUsers() == $mount->getApplicableUsers() && - $existingMount->getBackendOptions() == $mount->getBackendOptions() + $existingMount->getApplicableUsers() === $mount->getApplicableUsers() && + $existingMount->getBackendOptions() === $mount->getBackendOptions() ) { $output->writeln("Duplicate mount (" . $mount->getMountPoint() . ")"); return 1; diff --git a/apps/files_external/lib/Command/ListCommand.php b/apps/files_external/lib/Command/ListCommand.php index fc1f2bf6c5..a9618854b3 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 6bb56373d3..3c5c3af9ac 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 1229fd7f07..b18579163a 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 3ce524d3c5..3b6f7c3eee 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 ae4b8ec4c3..03b39927d9 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 dd58372854..38f2d4cd33 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 925dae7030..6b335f82b5 100644 --- a/apps/files_external/lib/Lib/InsufficientDataForMeaningfulAnswerException.php +++ b/apps/files_external/lib/Lib/InsufficientDataForMeaningfulAnswerException.php @@ -34,7 +34,7 @@ class InsufficientDataForMeaningfulAnswerException extends StorageNotAvailableEx * * @param string $message * @param int $code - * @param \Exception $previous + * @param \Exception|null $previous * @since 6.0.0 */ public function __construct($message = '', $code = self::STATUS_INDETERMINATE, \Exception $previous = null) { diff --git a/apps/files_external/lib/Lib/Storage/Dropbox.php b/apps/files_external/lib/Lib/Storage/Dropbox.php index d2ba1cca75..fad85650e9 100644 --- a/apps/files_external/lib/Lib/Storage/Dropbox.php +++ b/apps/files_external/lib/Lib/Storage/Dropbox.php @@ -47,7 +47,7 @@ class Dropbox extends \OC\Files\Storage\Common { private $oauth; public function __construct($params) { - if (isset($params['configured']) && $params['configured'] == 'true' + if (isset($params['configured']) && $params['configured'] === 'true' && isset($params['app_key']) && isset($params['app_secret']) && isset($params['token']) @@ -187,12 +187,12 @@ class Dropbox extends \OC\Files\Storage\Common { } public function filetype($path) { - if ($path == '' || $path == '/') { + if ($path === '' || $path === '/') { return 'dir'; } else { $metaData = $this->getDropBoxMetaData($path); if ($metaData) { - if ($metaData['is_dir'] == 'true') { + if ($metaData['is_dir'] === 'true') { return 'dir'; } else { return 'file'; @@ -203,7 +203,7 @@ class Dropbox extends \OC\Files\Storage\Common { } public function file_exists($path) { - if ($path == '' || $path == '/') { + if ($path === '' || $path === '/') { return true; } if ($this->getDropBoxMetaData($path)) { diff --git a/apps/files_external/lib/Lib/Storage/FTP.php b/apps/files_external/lib/Lib/Storage/FTP.php index 22fe2090f3..1bbdfaba46 100644 --- a/apps/files_external/lib/Lib/Storage/FTP.php +++ b/apps/files_external/lib/Lib/Storage/FTP.php @@ -56,7 +56,7 @@ class FTP extends StreamWrapper{ $this->secure = false; } $this->root=isset($params['root'])?$params['root']:'/'; - if ( ! $this->root || $this->root[0]!='/') { + if ( ! $this->root || $this->root[0]!=='/') { $this->root='/'.$this->root; } if (substr($this->root, -1) !== '/') { diff --git a/apps/files_external/lib/Lib/Storage/OwnCloud.php b/apps/files_external/lib/Lib/Storage/OwnCloud.php index 9669b5f3da..34838b9891 100644 --- a/apps/files_external/lib/Lib/Storage/OwnCloud.php +++ b/apps/files_external/lib/Lib/Storage/OwnCloud.php @@ -40,10 +40,10 @@ class OwnCloud extends \OC\Files\Storage\DAV{ // (owncloud install path on host) $host = $params['host']; // strip protocol - if (substr($host, 0, 8) == "https://") { + if (substr($host, 0, 8) === "https://") { $host = substr($host, 8); $params['secure'] = true; - } else if (substr($host, 0, 7) == "http://") { + } else if (substr($host, 0, 7) === "http://") { $host = substr($host, 7); $params['secure'] = false; } diff --git a/apps/files_external/lib/Lib/Storage/SFTP.php b/apps/files_external/lib/Lib/Storage/SFTP.php index a4dfea94bf..8d48955126 100644 --- a/apps/files_external/lib/Lib/Storage/SFTP.php +++ b/apps/files_external/lib/Lib/Storage/SFTP.php @@ -102,11 +102,11 @@ class SFTP extends \OC\Files\Storage\Common { $this->root = isset($params['root']) ? $this->cleanPath($params['root']) : '/'; - if ($this->root[0] != '/') { + if ($this->root[0] !== '/') { $this->root = '/' . $this->root; } - if (substr($this->root, -1, 1) != '/') { + if (substr($this->root, -1, 1) !== '/') { $this->root .= '/'; } } @@ -128,7 +128,7 @@ class SFTP extends \OC\Files\Storage\Common { // The SSH Host Key MUST be verified before login(). $currentHostKey = $this->client->getServerPublicHostKey(); if (array_key_exists($this->host, $hostKeys)) { - if ($hostKeys[$this->host] != $currentHostKey) { + if ($hostKeys[$this->host] !== $currentHostKey) { throw new \Exception('Host public key does not match known key'); } } else { @@ -248,7 +248,7 @@ class SFTP extends \OC\Files\Storage\Common { if ($lines) { foreach ($lines as $line) { $hostKeyArray = explode("::", $line, 2); - if (count($hostKeyArray) == 2) { + if (count($hostKeyArray) === 2) { $hosts[] = $hostKeyArray[0]; $keys[] = $hostKeyArray[1]; } @@ -300,7 +300,7 @@ class SFTP extends \OC\Files\Storage\Common { $id = md5('sftp:' . $path); $dirStream = array(); foreach($list as $file) { - if ($file != '.' && $file != '..') { + if ($file !== '.' && $file !== '..') { $dirStream[] = $file; } } @@ -316,11 +316,11 @@ class SFTP extends \OC\Files\Storage\Common { public function filetype($path) { try { $stat = $this->getConnection()->stat($this->absPath($path)); - if ($stat['type'] == NET_SFTP_TYPE_REGULAR) { + if ((int) $stat['type'] === NET_SFTP_TYPE_REGULAR) { return 'file'; } - if ($stat['type'] == NET_SFTP_TYPE_DIRECTORY) { + if ((int) $stat['type'] === NET_SFTP_TYPE_DIRECTORY) { return 'dir'; } } catch (\Exception $e) { diff --git a/apps/files_external/lib/Lib/Storage/SMB.php b/apps/files_external/lib/Lib/Storage/SMB.php index 7afdb746a9..4af6df5d84 100644 --- a/apps/files_external/lib/Lib/Storage/SMB.php +++ b/apps/files_external/lib/Lib/Storage/SMB.php @@ -81,10 +81,10 @@ class SMB extends Common implements INotifyStorage { $this->share = $this->server->getShare(trim($params['share'], '/')); $this->root = isset($params['root']) ? $params['root'] : '/'; - if (!$this->root || $this->root[0] != '/') { + if (!$this->root || $this->root[0] !== '/') { $this->root = '/' . $this->root; } - if (substr($this->root, -1, 1) != '/') { + if (substr($this->root, -1, 1) !== '/') { $this->root .= '/'; } } else { diff --git a/apps/files_external/lib/Lib/Storage/Swift.php b/apps/files_external/lib/Lib/Storage/Swift.php index 105d1073ae..57df4aa01a 100644 --- a/apps/files_external/lib/Lib/Storage/Swift.php +++ b/apps/files_external/lib/Lib/Storage/Swift.php @@ -118,7 +118,7 @@ class Swift extends \OC\Files\Storage\Common { * that one will be returned. * * @param string $path - * @return \OpenCloud\OpenStack\ObjectStorage\Resource\DataObject|bool object + * @return \OpenCloud\ObjectStore\Resource\DataObject|bool object * or false if the object did not exist */ private function fetchObject($path) { @@ -382,9 +382,9 @@ class Swift extends \OC\Files\Storage\Common { try { $c = $this->getContainer(); $streamFactory = new \Guzzle\Stream\PhpStreamRequestFactory(); - $streamInterface = $streamFactory->fromRequest( - $c->getClient() - ->get($c->getUrl($path))); + /** @var \OpenCloud\Common\Http\Client $client */ + $client = $c->getClient(); + $streamInterface = $streamFactory->fromRequest($client->get($c->getUrl($path))); $streamInterface->rewind(); $stream = $streamInterface->getStream(); stream_context_set_option($stream, 'swift','content', $streamInterface); @@ -435,7 +435,7 @@ class Swift extends \OC\Files\Storage\Common { } $metadata = array('timestamp' => $mtime); if ($this->file_exists($path)) { - if ($this->is_dir($path) && $path != '.') { + if ($this->is_dir($path) && $path !== '.') { $path .= '/'; } @@ -640,7 +640,7 @@ class Swift extends \OC\Files\Storage\Common { }, $cachedContent); sort($cachedNames); sort($content); - return $cachedNames != $content; + return $cachedNames !== $content; } /** diff --git a/apps/files_external/lib/Service/DBConfigService.php b/apps/files_external/lib/Service/DBConfigService.php index 21818eec60..71a77cd434 100644 --- a/apps/files_external/lib/Service/DBConfigService.php +++ b/apps/files_external/lib/Service/DBConfigService.php @@ -116,6 +116,7 @@ class DBConfigService { * Get admin defined mounts * * @return array + * @suppress SqlInjectionChecker */ public function getAdminMounts() { $builder = $this->connection->getQueryBuilder(); @@ -160,6 +161,7 @@ class DBConfigService { * @param int $type any of the self::APPLICABLE_TYPE_ constants * @param string|null $value user_id, group_id or null for global mounts * @return array + * @suppress SqlInjectionChecker */ public function getAdminMountsFor($type, $value) { $builder = $this->connection->getQueryBuilder(); @@ -175,6 +177,7 @@ class DBConfigService { * @param int $type any of the self::APPLICABLE_TYPE_ constants * @param string[] $values user_ids or group_ids * @return array + * @suppress SqlInjectionChecker */ public function getAdminMountsForMultiple($type, array $values) { $builder = $this->connection->getQueryBuilder(); @@ -198,6 +201,7 @@ class DBConfigService { * @param int $type any of the self::APPLICABLE_TYPE_ constants * @param string|null $value user_id, group_id or null for global mounts * @return array + * @suppress SqlInjectionChecker */ public function getUserMountsFor($type, $value) { $builder = $this->connection->getQueryBuilder(); diff --git a/apps/files_external/lib/Settings/PersonalSection.php b/apps/files_external/lib/Settings/PersonalSection.php index 32a841c420..669cd941da 100644 --- a/apps/files_external/lib/Settings/PersonalSection.php +++ b/apps/files_external/lib/Settings/PersonalSection.php @@ -50,18 +50,4 @@ class PersonalSection extends Section { $this->userGlobalStoragesService = $userGlobalStoragesService; $this->backendService = $backendService; } - - public function getID() { - if (!$this->userSession->isLoggedIn()) { - // we need to return the proper id while installing/upgrading the app - return parent::getID(); - } - - if (count($this->userGlobalStoragesService->getStorages()) > 0 || $this->backendService->isUserMountingAllowed()) { - return parent::getID(); - } else { - // by returning a different id, no matching settings will be found and the item will be hidden - return null; - } - } -} \ No newline at end of file +} diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php index 7a10d4bbc2..4900de57b6 100644 --- a/apps/files_external/lib/config.php +++ b/apps/files_external/lib/config.php @@ -313,11 +313,11 @@ class OC_Mount_Config { private static function getSingleDependencyMessage(\OCP\IL10N $l, $module, $backend) { switch (strtolower($module)) { case 'curl': - return (string)$l->t('The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.', $backend); + return (string)$l->t('The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.', [$backend]); case 'ftp': - return (string)$l->t('The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.', $backend); + return (string)$l->t('The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.', [$backend]); default: - return (string)$l->t('"%s" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it.', array($module, $backend)); + return (string)$l->t('"%s" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it.', [$module, $backend]); } } diff --git a/apps/files_external/templates/settings.php b/apps/files_external/templates/settings.php index e463a0d3c3..1d703e0c1b 100644 --- a/apps/files_external/templates/settings.php +++ b/apps/files_external/templates/settings.php @@ -89,7 +89,7 @@

t('External storages')); ?>

- '') and $canCreateMounts) print_unescaped(''.$_['dependencies'].''); ?> + '> @@ -169,10 +169,10 @@ /> + value="1" /> -

class="hidden"> +

class="hidden"> t('Allow users to mount the following external storage')); ?>
registerRoutes($this, [ 'resources' => [ @@ -127,7 +125,3 @@ $application->registerRoutes($this, [ /** @var $this \OCP\Route\IRouter */ $this->create('sharing_external_shareinfo', '/shareinfo') ->actionInclude('files_sharing/ajax/shareinfo.php'); - -// OCS API - -//TODO: SET: mail notification, waiting for PR #4689 to be accepted diff --git a/apps/files_sharing/css/public.scss b/apps/files_sharing/css/public.scss index 9c8c4a6663..6d9fcf14ef 100644 --- a/apps/files_sharing/css/public.scss +++ b/apps/files_sharing/css/public.scss @@ -215,3 +215,13 @@ thead { max-width: 400px; text-align: left; } + +#header .header-shared-by { + display: inline-block; + color: $color-primary-text; + position: relative; + top: -10px; + font-weight: 300; + font-size: 12px; + margin-top: 10px; +} diff --git a/apps/files_sharing/l10n/cs.js b/apps/files_sharing/l10n/cs.js index fa065a2f36..cde421e029 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 e56596365e..3abe58b72e 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/de.js b/apps/files_sharing/l10n/de.js index c6e22669ec..e399c0f46e 100644 --- a/apps/files_sharing/l10n/de.js +++ b/apps/files_sharing/l10n/de.js @@ -103,6 +103,7 @@ OC.L10N.register( "the link expired" : "Der Link ist abgelaufen", "sharing is disabled" : "Teilen ist deaktiviert", "For more info, please ask the person who sent this link." : "Um nähere Informationen zu erhalten, wende dich bitte an die Person, die dir diesen Link geschickt hat.", + "shared by %s" : "von %s geteilt", "Add to your Nextcloud" : "Zu Deiner Nextcloud hinzufügen", "Download" : "Herunterladen", "Download %s" : "Download %s", diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json index c4e01994e1..ab230c7048 100644 --- a/apps/files_sharing/l10n/de.json +++ b/apps/files_sharing/l10n/de.json @@ -101,6 +101,7 @@ "the link expired" : "Der Link ist abgelaufen", "sharing is disabled" : "Teilen ist deaktiviert", "For more info, please ask the person who sent this link." : "Um nähere Informationen zu erhalten, wende dich bitte an die Person, die dir diesen Link geschickt hat.", + "shared by %s" : "von %s geteilt", "Add to your Nextcloud" : "Zu Deiner Nextcloud hinzufügen", "Download" : "Herunterladen", "Download %s" : "Download %s", diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js index 151d26722e..84badeb991 100644 --- a/apps/files_sharing/l10n/de_DE.js +++ b/apps/files_sharing/l10n/de_DE.js @@ -103,6 +103,7 @@ OC.L10N.register( "the link expired" : "Der Link ist abgelaufen", "sharing is disabled" : "Teilen ist deaktiviert", "For more info, please ask the person who sent this link." : "Um nähere Informationen zu erhalten, wenden Sie sich bitte an die Person, die Ihnen diesen Link geschickt hat.", + "shared by %s" : "von %s geteilt", "Add to your Nextcloud" : "Zu Ihrer Nextcloud hinzufügen", "Download" : "Herunterladen", "Download %s" : "Download %s", diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json index 59d5c6f4f9..5b300a77d6 100644 --- a/apps/files_sharing/l10n/de_DE.json +++ b/apps/files_sharing/l10n/de_DE.json @@ -101,6 +101,7 @@ "the link expired" : "Der Link ist abgelaufen", "sharing is disabled" : "Teilen ist deaktiviert", "For more info, please ask the person who sent this link." : "Um nähere Informationen zu erhalten, wenden Sie sich bitte an die Person, die Ihnen diesen Link geschickt hat.", + "shared by %s" : "von %s geteilt", "Add to your Nextcloud" : "Zu Ihrer Nextcloud hinzufügen", "Download" : "Herunterladen", "Download %s" : "Download %s", diff --git a/apps/files_sharing/l10n/el.js b/apps/files_sharing/l10n/el.js index 4b4f9e9ecf..4a501be56b 100644 --- a/apps/files_sharing/l10n/el.js +++ b/apps/files_sharing/l10n/el.js @@ -103,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" : "Διαμοιράστηκε από 1 %s", "Add to your Nextcloud" : "Προσθήκη στο Nextcloud σου", "Download" : "Λήψη", "Download %s" : "Λήψη %s", diff --git a/apps/files_sharing/l10n/el.json b/apps/files_sharing/l10n/el.json index 8cd4acd2d0..d8f7115e13 100644 --- a/apps/files_sharing/l10n/el.json +++ b/apps/files_sharing/l10n/el.json @@ -101,6 +101,7 @@ "the link expired" : "ο σύνδεσμος έληξε", "sharing is disabled" : "ο διαμοιρασμός απενεργοποιήθηκε", "For more info, please ask the person who sent this link." : "Για περισσότερες πληροφορίες, παρακαλώ ρωτήστε το άτομο που σας έστειλε αυτόν τον σύνδεσμο.", + "shared by %s" : "Διαμοιράστηκε από 1 %s", "Add to your Nextcloud" : "Προσθήκη στο Nextcloud σου", "Download" : "Λήψη", "Download %s" : "Λήψη %s", diff --git a/apps/files_sharing/l10n/en_GB.js b/apps/files_sharing/l10n/en_GB.js index 3bc3572cef..cb5b0061c2 100644 --- a/apps/files_sharing/l10n/en_GB.js +++ b/apps/files_sharing/l10n/en_GB.js @@ -103,6 +103,7 @@ OC.L10N.register( "the link expired" : "the link expired", "sharing is disabled" : "sharing is disabled", "For more info, please ask the person who sent this link." : "For more info, please ask the person who sent this link.", + "shared by %s" : "shared by %s", "Add to your Nextcloud" : "Add to your Nextcloud", "Download" : "Download", "Download %s" : "Download %s", diff --git a/apps/files_sharing/l10n/en_GB.json b/apps/files_sharing/l10n/en_GB.json index 0d09d445bc..8bfb073837 100644 --- a/apps/files_sharing/l10n/en_GB.json +++ b/apps/files_sharing/l10n/en_GB.json @@ -101,6 +101,7 @@ "the link expired" : "the link expired", "sharing is disabled" : "sharing is disabled", "For more info, please ask the person who sent this link." : "For more info, please ask the person who sent this link.", + "shared by %s" : "shared by %s", "Add to your Nextcloud" : "Add to your Nextcloud", "Download" : "Download", "Download %s" : "Download %s", diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js index 2026a08fe3..951109d693 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 50cf0dda66..fd9a4cbd8f 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 ecc09b852f..d4b27e2420 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", @@ -103,6 +103,7 @@ OC.L10N.register( "the link expired" : "la liga expiró", "sharing is disabled" : "compartir está deshabilitado", "For more info, please ask the person who sent this link." : "Para mayores informes, contacta a la persona que le envió esta liga.", + "shared by %s" : "compartido por %s", "Add to your Nextcloud" : "Agregar a tu Nextcloud", "Download" : "Descargar", "Download %s" : "Descargar %s", diff --git a/apps/files_sharing/l10n/es_MX.json b/apps/files_sharing/l10n/es_MX.json index d740af7084..ecd94ae66b 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", @@ -101,6 +101,7 @@ "the link expired" : "la liga expiró", "sharing is disabled" : "compartir está deshabilitado", "For more info, please ask the person who sent this link." : "Para mayores informes, contacta a la persona que le envió esta liga.", + "shared by %s" : "compartido por %s", "Add to your Nextcloud" : "Agregar a tu Nextcloud", "Download" : "Descargar", "Download %s" : "Descargar %s", diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js index 43a90ab04f..4d0bb4c3eb 100644 --- a/apps/files_sharing/l10n/fr.js +++ b/apps/files_sharing/l10n/fr.js @@ -103,6 +103,7 @@ OC.L10N.register( "the link expired" : "le lien a expiré", "sharing is disabled" : "le partage est désactivé", "For more info, please ask the person who sent this link." : "Pour plus d'informations, veuillez contacter la personne qui a envoyé ce lien.", + "shared by %s" : "partagé par %s", "Add to your Nextcloud" : "Ajouter à votre Nextcloud", "Download" : "Télécharger", "Download %s" : "Télécharger %s", diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json index 3c6370873b..21ca21757c 100644 --- a/apps/files_sharing/l10n/fr.json +++ b/apps/files_sharing/l10n/fr.json @@ -101,6 +101,7 @@ "the link expired" : "le lien a expiré", "sharing is disabled" : "le partage est désactivé", "For more info, please ask the person who sent this link." : "Pour plus d'informations, veuillez contacter la personne qui a envoyé ce lien.", + "shared by %s" : "partagé par %s", "Add to your Nextcloud" : "Ajouter à votre Nextcloud", "Download" : "Télécharger", "Download %s" : "Télécharger %s", diff --git a/apps/files_sharing/l10n/is.js b/apps/files_sharing/l10n/is.js index 0bfe415807..66f76a7395 100644 --- a/apps/files_sharing/l10n/is.js +++ b/apps/files_sharing/l10n/is.js @@ -103,6 +103,7 @@ OC.L10N.register( "the link expired" : "tengillinn er útrunninn", "sharing is disabled" : "slökkt er á skráadeilingu", "For more info, please ask the person who sent this link." : "Til að vita meira skaltu hafa samband við þann sem sendi þér þennan tengil.", + "shared by %s" : "Deilt af %s", "Add to your Nextcloud" : "Bæta í þitt eigið Nextcloud", "Download" : "Niðurhal", "Download %s" : "Sækja %s", diff --git a/apps/files_sharing/l10n/is.json b/apps/files_sharing/l10n/is.json index 02d206257d..0535169b94 100644 --- a/apps/files_sharing/l10n/is.json +++ b/apps/files_sharing/l10n/is.json @@ -101,6 +101,7 @@ "the link expired" : "tengillinn er útrunninn", "sharing is disabled" : "slökkt er á skráadeilingu", "For more info, please ask the person who sent this link." : "Til að vita meira skaltu hafa samband við þann sem sendi þér þennan tengil.", + "shared by %s" : "Deilt af %s", "Add to your Nextcloud" : "Bæta í þitt eigið Nextcloud", "Download" : "Niðurhal", "Download %s" : "Sækja %s", diff --git a/apps/files_sharing/l10n/lt_LT.js b/apps/files_sharing/l10n/lt_LT.js index 2a45838f65..42dc320c2f 100644 --- a/apps/files_sharing/l10n/lt_LT.js +++ b/apps/files_sharing/l10n/lt_LT.js @@ -1,73 +1,116 @@ OC.L10N.register( "files_sharing", { - "Server to server sharing is not enabled on this server" : "Serveris - serveris dalinimasis neįjungtas šiame serveryje", - "The mountpoint name contains invalid characters." : "Prijungimo taškas su neleistinais simboliais.", - "Not allowed to create a federated share with the same user server" : "Neleidžiama dalintis tarp serverių, nes vartotojas tame pačiame serveryje.", - "Invalid or untrusted SSL certificate" : "Netinkamas arba nepatikimas SSL sertifikatas", - "Could not authenticate to remote share, password might be wrong" : "Nepavyko identifikuotis serveryje, gal netinkamas slaptažodis", - "Storage not valid" : "Talpykla negalioja", - "Couldn't add remote share" : "Nepavyko pridėti nutolusio dalijimosi", - "Shared with you" : "Pasidalinta su tavimi", - "Shared with others" : "Pasidalinta su kitais", - "Shared by link" : "Pasidalinta su nuoroda", - "Nothing shared with you yet" : "Kol kas niekas su tavimi nesidalijama", - "Files and folders others share with you will show up here" : "Failai ir aplankai kurie dalinami ir tau, bus rodomi čia", - "Nothing shared yet" : "Niekas nepasidalinta", - "Files and folders you share will show up here" : "Failai ir aplankai kuriais daliniesi bus rodomi čia", - "No shared links" : "Nėra pasidalinimų nuoroda", - "Files and folders you share by link will show up here" : "Failai ir aplankai kuriais daliniesi su nuoroda bus rodomi čia", - "Do you want to add the remote share {name} from {owner}@{remote}?" : "Ar nori pridėti nutolusį dalijimąsi {name} nuo {owner}@{remote}?", - "Remote share" : "Nutolęs dalinimasis", - "Remote share password" : "Nutolusio dalijimosi slaptažodis", - "Cancel" : "Atšaukti", - "Add remote share" : "Pridėti nutolusi dalijimąsi", - "You can upload into this folder" : "Gali įkelti į šį aplanką", - "No ownCloud installation (7 or higher) found at {remote}" : "Nerastas ownCloud (7 ar aukštesnė versiją) {remote} serveryje.", - "Invalid ownCloud url" : "Neteisinga ownCloud nuoroda", - "Shared by" : "Dalinasi", - "Sharing" : "Dalijimasis", - "A file or folder has been shared" : "Failas ar aplankas buvo pasidalintas", - "A file or folder was shared from another server" : "Failas ar aplankas buvo pasidalintas iš kito serverio", - "A public shared file or folder was downloaded" : "Viešai pasidalintas failas ar aplankas parsiųstas", - "You received a new remote share %2$s from %1$s" : "Gavote naują nutolusį dalijimąsi %2$s nuo %1$s", - "You received a new remote share from %s" : "Gavote naują nutolusį dalijimąsi nuo %s", - "%1$s accepted remote share %2$s" : "%1$s priėmė nutolusį dalijimąsi %2$s", - "%1$s declined remote share %2$s" : "%1$s atmetė nutolusį dalijimąsi %2$s", - "%1$s unshared %2$s from you" : "%1$s nebesidalina %2$s su tavimi", - "Public shared folder %1$s was downloaded" : "Viešas dalijimosi aplankas %1$s parsiųstas", - "Public shared file %1$s was downloaded" : "Viešai dalinamas failas %1$s parsiųstas", - "You shared %1$s with %2$s" : "Jūs pasidalinote %1$s su %2$s", - "%2$s shared %1$s with %3$s" : "%2$s pasidalino %1$s su %3$s", - "You shared %1$s with group %2$s" : "Jūs pasidalinote %1$s su grupe %2$s", - "%2$s shared %1$s with group %3$s" : "%2$s pasidalino %1$s su grupe %3$s", - "%2$s shared %1$s via link" : "%2$s pasidalino %1$s nuoroda", - "You shared %1$s via link" : "Pasidalinote %1$s per nuorodą", - "%2$s shared %1$s with you" : "%2$s pasidalino %1$s su jumis", + "Shared with you" : "Bendrinama su jumis", + "Shared with others" : "Bendrinama su kitais", + "Shared by link" : "Bendrinama per nuorodą", + "Nothing shared with you yet" : "Niekas nebendrinama", + "Files and folders others share with you will show up here" : "Čia rodomi failai ir aplankai, kuriuos kiti bendrina su jumis", + "Nothing shared yet" : "Kol kas nieko nebendrinama", + "Files and folders you share will show up here" : "Čia rodomi failai ir aplankai, kuriuos bendrinate", + "No shared links" : "Nėra bendrinamų nuorodų", + "Files and folders you share by link will show up here" : "Jūsų bendrinami failai ir aplankai rodomi čia", + "You can upload into this folder" : "Galite įkelti į šį aplanką", + "No compatible server found at {remote}" : "Nerasta jokio suderinamo serverio ties {remote}", + "Invalid server URL" : "Neteisingas serverio adresas", + "Failed to add the public link to your Nextcloud" : "Nepavyko pridėti viešosios nuorodos į jūsų Nextcloud", + "Share" : "Dalintis", + "No expiration date set" : "Dalinimosi pabaigos data yra nenustatyta", + "Shared by" : "Bendrina", + "Sharing" : "Dalinamasi", + "File shares" : "Bendrinami duomenys", "Downloaded via public link" : "Atsiųsti per viešą nuorodą", - "Shared with %2$s" : "Pasidalinta su %2$s", - "Shared with %3$s by %2$s" : "%2$s pasidalino %3$s", - "Shared with group %2$s" : "Pasidalinta su grupe %2$s", - "Shared with group %3$s by %2$s" : "%2$s pasidalino su grupe %3$s", - "Shared via link by %2$s" : "%2$s pasidalino nuoroda", - "Shared via public link" : "Pasidalinta vieša nuoroda", - "Shared by %2$s" : "Pasidalino %2$s", - "Shares" : "Dalijimaisi", + "Downloaded by {email}" : "Parsisiųsta į {email}", + "{file} downloaded via public link" : "{file} parsisiųsta per nuorodą", + "{email} downloaded {file}" : "{email} atsisiuntė {file}", + "Shared with group {group}" : "Bendrinama su grupe {group}", + "Removed share for group {group}" : "Nebesidalinama su grupe: {group}", + "{actor} shared with group {group}" : "{actor} pradėjo bendrinti su grupe {group}", + "{actor} removed share for group {group}" : "{actor} nustojo dalintis su {group} grupe", + "You shared {file} with group {group}" : "Jūs pradėjote bendrinti {file} su grupe {group}", + "You removed group {group} from {file}" : "Pašalinote grupę {group} iš {file}", + "{actor} shared {file} with group {group}" : "{actor} pradėjo bendrinti {file} su grupe {group}", + "{actor} removed group {group} from {file}" : "{actor} pašalino grupę {group} iš {file}", + "Shared as public link" : "Bendrinama kaip viešoji nuoroda", + "Removed public link" : "Pašalinti viešą nuorodą", + "Public link expired" : "Pasibaigė nuorodos galiojimo laikas", + "{actor} shared as public link" : "{actor} pradėjo bendrinti kaip viešąją nuorodą", + "{actor} removed public link" : "{actor} pašalino nuorodą", + "Public link of {actor} expired" : "Pasibaigė nuorodos, priklausančios {actor}, galiojimo laikas", + "You shared {file} as public link" : "Jūs pradėjote bendrinti {file} kaip viešąją nuorodą", + "You removed public link for {file}" : "Jūs pašalinote viešą {file} nuorodą", + "Public link expired for {file}" : "Pasibaigė nuorodos galiojimo laikas skirtas {file}", + "{actor} shared {file} as public link" : "{actor} pradėjo bendrinti {file} kaip viešąją nuorodą", + "{actor} removed public link for {file}" : "{actor} nebesidalina \"{file}\"", + "Public link of {actor} for {file} expired" : "Pasibaigė nuorodos galiojimo laikas duomenims {file}, bendrintiems {actor}", + "{user} accepted the remote share" : "{user} priėmė bendrinamus duomenis", + "{user} declined the remote share" : "{user} atmetė duomenų dalinimąsi", + "You received a new remote share {file} from {user}" : "Jūs gavote naują duomenis \"{file}\" iš kito serverio nuo {user}", + "{user} accepted the remote share of {file}" : "{user} priėmė bendrinamus duomenis \"{file}\"", + "{user} declined the remote share of {file}" : "{user} atmetė duomenų \"{file}\" dalinimąsį", + "{user} unshared {file} from you" : "{user} nustojo bendrinti su jumis {file}", + "Shared with {user}" : "Pradėta bendrinti su {user}", + "Removed share for {user}" : "Nustota dalintis su {user}", + "{actor} shared with {user}" : "{actor} pradėjo bendrinti su {user}", + "{actor} removed share for {user}" : "{actor} nustojo dalintis su {user}", + "Shared by {actor}" : "Pasidalinta {actor}", + "{actor} removed share" : "{actor} nustojo dalintis", + "You shared {file} with {user}" : "Pasidalinote {file} su {user}", + "You removed {user} from {file}" : "Nebesidalinate {file} su {user}", + "{actor} shared {file} with {user}" : "{actor} pasidalino {file} su {user}", + "{actor} removed {user} from {file}" : "{actor} nebesidalina {file} su {user}", + "{actor} shared {file} with you" : "{actor} pasidalino {file} su jumis", + "{actor} removed you from {file}" : "{actor} nebesidalina su jumis {file}", + "A file or folder shared by mail or by public link was downloaded" : "Duomenys, bendrinti per elektroninį paštą, buvo parsiųsti", + "A file or folder was shared from another server" : "Failas ar aplankas buvo pasidalintas iš kito serverio", + "A file or folder has been shared" : "Failas ar aplankas buvo pasidalintas", + "Wrong share ID, share doesn't exist" : "Neteisingas dalinamų duomenų ID", + "could not delete share" : "nepavyko nustoti dalintis duomenimis", + "Could not delete share" : "Nepavyko nustoti dalintis duomenimis", + "Please specify a file or folder path" : "Nurodykite kelią iki duomenų", + "Wrong path, file/folder doesn't exist" : "Neteisingas kelias, failo/aplanko nėra", + "Could not create share" : "Negalima dalintis", + "invalid permissions" : "neteisingi leidimai", + "Please specify a valid user" : "Nurodykite naudotoją", + "Group sharing is disabled by the administrator" : "Bendrinimas su grupėmis yra išjungtas", + "Please specify a valid group" : "Nurodykite grupę", + "Public link sharing is disabled by the administrator" : "Dalinimasis per nuorodą yra išjungtas", + "Public upload disabled by the administrator" : "Įkėlimas viešam naudojimui yra išjungtas", + "Public upload is only possible for publicly shared folders" : "Duomenų įkėlimas viešam naudojimui galimas tik į viešai dalinamus aplankus", + "Invalid date, date format must be YYYY-MM-DD" : "Netinkamas datos formavimas. Privaloma: YYYY-MM-DD", + "Sharing %s failed because the back end does not allow shares from type %s" : "%s dalinimasis nepavyko, nes sistema nepalaiko šio duomenų tipo: %s", + "You cannot share to a Circle if the app is not enabled" : "Negalite dalintis su naudotojų ratu, kai įskiepis \"Circle\" neveikia", + "Please specify a valid circle" : "Pasirinkite naudotojų ratą", + "Unknown share type" : "Nežinomas bendrinamų duomenų tipas", + "Not a directory" : "Nėra katalogas", + "Could not lock path" : "Nepavyko užrakinti kelio", + "Wrong or no update parameter given" : "Neperduoti atnaujinimo parametrai", + "Can't change permissions for public share links" : "Negalima keisti leidimų viešai bendrinamoms nuorodoms", + "Cannot increase permissions" : "Negalima pridėti papildomų leidimų", + "%s is publicly shared" : "%s yra bendrinamas viešai", + "Share API is disabled" : "Bendrinimo API yra išjungtas", + "File sharing" : "Duomenų dalinimasis", "This share is password-protected" : "Turinys apsaugotas slaptažodžiu", - "The password is wrong. Try again." : "Netinka slaptažodis: Bandykite dar kartą.", + "The password is wrong. Try again." : "Slaptažodis neteisingas. Bandykite dar kartą.", "Password" : "Slaptažodis", - "No entries found in this folder" : "Nerasta įrašų šiame aplanke", + "No entries found in this folder" : "Šiame aplanke įrašų nerasta", "Name" : "Pavadinimas", "Share time" : "Dalijimosi laikas", - "Sorry, this link doesn’t seem to work anymore." : "Atleiskite, panašu, kad nuoroda yra neveiksni.", + "Expiration date" : "Galiojimo data", + "Sorry, this link doesn’t seem to work anymore." : "Nuoroda yra neveiksni.", "Reasons might be:" : "Galimos priežastys:", "the item was removed" : "elementas buvo pašalintas", "the link expired" : "baigėsi nuorodos galiojimo laikas", "sharing is disabled" : "dalinimasis yra išjungtas", "For more info, please ask the person who sent this link." : "Dėl tikslesnės informacijos susisiekite su asmeniu atsiuntusiu nuorodą.", - "Add to your ownCloud" : "Pridėti prie tavo ownCloud", + "shared by %s" : "pasidalino %s", + "Add to your Nextcloud" : "Pridėti į jūsų NextCloud", "Download" : "Atsisiųsti", - "Download %s" : "Atsiųsti %s", - "Direct link" : "Tiesioginė nuoroda" + "Download %s" : "Atsisiųsti %s", + "Direct link" : "Tiesioginė nuoroda", + "Upload files to %s" : "Įkelti duomenis į %s", + "Select or drop files" : "Pasirinkite arba vilkite failus", + "Uploading files…" : "Įkeliami failai…", + "Uploaded files:" : "Įkelti failai:" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files_sharing/l10n/lt_LT.json b/apps/files_sharing/l10n/lt_LT.json index 95cc0cf965..7ce7df158c 100644 --- a/apps/files_sharing/l10n/lt_LT.json +++ b/apps/files_sharing/l10n/lt_LT.json @@ -1,71 +1,114 @@ { "translations": { - "Server to server sharing is not enabled on this server" : "Serveris - serveris dalinimasis neįjungtas šiame serveryje", - "The mountpoint name contains invalid characters." : "Prijungimo taškas su neleistinais simboliais.", - "Not allowed to create a federated share with the same user server" : "Neleidžiama dalintis tarp serverių, nes vartotojas tame pačiame serveryje.", - "Invalid or untrusted SSL certificate" : "Netinkamas arba nepatikimas SSL sertifikatas", - "Could not authenticate to remote share, password might be wrong" : "Nepavyko identifikuotis serveryje, gal netinkamas slaptažodis", - "Storage not valid" : "Talpykla negalioja", - "Couldn't add remote share" : "Nepavyko pridėti nutolusio dalijimosi", - "Shared with you" : "Pasidalinta su tavimi", - "Shared with others" : "Pasidalinta su kitais", - "Shared by link" : "Pasidalinta su nuoroda", - "Nothing shared with you yet" : "Kol kas niekas su tavimi nesidalijama", - "Files and folders others share with you will show up here" : "Failai ir aplankai kurie dalinami ir tau, bus rodomi čia", - "Nothing shared yet" : "Niekas nepasidalinta", - "Files and folders you share will show up here" : "Failai ir aplankai kuriais daliniesi bus rodomi čia", - "No shared links" : "Nėra pasidalinimų nuoroda", - "Files and folders you share by link will show up here" : "Failai ir aplankai kuriais daliniesi su nuoroda bus rodomi čia", - "Do you want to add the remote share {name} from {owner}@{remote}?" : "Ar nori pridėti nutolusį dalijimąsi {name} nuo {owner}@{remote}?", - "Remote share" : "Nutolęs dalinimasis", - "Remote share password" : "Nutolusio dalijimosi slaptažodis", - "Cancel" : "Atšaukti", - "Add remote share" : "Pridėti nutolusi dalijimąsi", - "You can upload into this folder" : "Gali įkelti į šį aplanką", - "No ownCloud installation (7 or higher) found at {remote}" : "Nerastas ownCloud (7 ar aukštesnė versiją) {remote} serveryje.", - "Invalid ownCloud url" : "Neteisinga ownCloud nuoroda", - "Shared by" : "Dalinasi", - "Sharing" : "Dalijimasis", - "A file or folder has been shared" : "Failas ar aplankas buvo pasidalintas", - "A file or folder was shared from another server" : "Failas ar aplankas buvo pasidalintas iš kito serverio", - "A public shared file or folder was downloaded" : "Viešai pasidalintas failas ar aplankas parsiųstas", - "You received a new remote share %2$s from %1$s" : "Gavote naują nutolusį dalijimąsi %2$s nuo %1$s", - "You received a new remote share from %s" : "Gavote naują nutolusį dalijimąsi nuo %s", - "%1$s accepted remote share %2$s" : "%1$s priėmė nutolusį dalijimąsi %2$s", - "%1$s declined remote share %2$s" : "%1$s atmetė nutolusį dalijimąsi %2$s", - "%1$s unshared %2$s from you" : "%1$s nebesidalina %2$s su tavimi", - "Public shared folder %1$s was downloaded" : "Viešas dalijimosi aplankas %1$s parsiųstas", - "Public shared file %1$s was downloaded" : "Viešai dalinamas failas %1$s parsiųstas", - "You shared %1$s with %2$s" : "Jūs pasidalinote %1$s su %2$s", - "%2$s shared %1$s with %3$s" : "%2$s pasidalino %1$s su %3$s", - "You shared %1$s with group %2$s" : "Jūs pasidalinote %1$s su grupe %2$s", - "%2$s shared %1$s with group %3$s" : "%2$s pasidalino %1$s su grupe %3$s", - "%2$s shared %1$s via link" : "%2$s pasidalino %1$s nuoroda", - "You shared %1$s via link" : "Pasidalinote %1$s per nuorodą", - "%2$s shared %1$s with you" : "%2$s pasidalino %1$s su jumis", + "Shared with you" : "Bendrinama su jumis", + "Shared with others" : "Bendrinama su kitais", + "Shared by link" : "Bendrinama per nuorodą", + "Nothing shared with you yet" : "Niekas nebendrinama", + "Files and folders others share with you will show up here" : "Čia rodomi failai ir aplankai, kuriuos kiti bendrina su jumis", + "Nothing shared yet" : "Kol kas nieko nebendrinama", + "Files and folders you share will show up here" : "Čia rodomi failai ir aplankai, kuriuos bendrinate", + "No shared links" : "Nėra bendrinamų nuorodų", + "Files and folders you share by link will show up here" : "Jūsų bendrinami failai ir aplankai rodomi čia", + "You can upload into this folder" : "Galite įkelti į šį aplanką", + "No compatible server found at {remote}" : "Nerasta jokio suderinamo serverio ties {remote}", + "Invalid server URL" : "Neteisingas serverio adresas", + "Failed to add the public link to your Nextcloud" : "Nepavyko pridėti viešosios nuorodos į jūsų Nextcloud", + "Share" : "Dalintis", + "No expiration date set" : "Dalinimosi pabaigos data yra nenustatyta", + "Shared by" : "Bendrina", + "Sharing" : "Dalinamasi", + "File shares" : "Bendrinami duomenys", "Downloaded via public link" : "Atsiųsti per viešą nuorodą", - "Shared with %2$s" : "Pasidalinta su %2$s", - "Shared with %3$s by %2$s" : "%2$s pasidalino %3$s", - "Shared with group %2$s" : "Pasidalinta su grupe %2$s", - "Shared with group %3$s by %2$s" : "%2$s pasidalino su grupe %3$s", - "Shared via link by %2$s" : "%2$s pasidalino nuoroda", - "Shared via public link" : "Pasidalinta vieša nuoroda", - "Shared by %2$s" : "Pasidalino %2$s", - "Shares" : "Dalijimaisi", + "Downloaded by {email}" : "Parsisiųsta į {email}", + "{file} downloaded via public link" : "{file} parsisiųsta per nuorodą", + "{email} downloaded {file}" : "{email} atsisiuntė {file}", + "Shared with group {group}" : "Bendrinama su grupe {group}", + "Removed share for group {group}" : "Nebesidalinama su grupe: {group}", + "{actor} shared with group {group}" : "{actor} pradėjo bendrinti su grupe {group}", + "{actor} removed share for group {group}" : "{actor} nustojo dalintis su {group} grupe", + "You shared {file} with group {group}" : "Jūs pradėjote bendrinti {file} su grupe {group}", + "You removed group {group} from {file}" : "Pašalinote grupę {group} iš {file}", + "{actor} shared {file} with group {group}" : "{actor} pradėjo bendrinti {file} su grupe {group}", + "{actor} removed group {group} from {file}" : "{actor} pašalino grupę {group} iš {file}", + "Shared as public link" : "Bendrinama kaip viešoji nuoroda", + "Removed public link" : "Pašalinti viešą nuorodą", + "Public link expired" : "Pasibaigė nuorodos galiojimo laikas", + "{actor} shared as public link" : "{actor} pradėjo bendrinti kaip viešąją nuorodą", + "{actor} removed public link" : "{actor} pašalino nuorodą", + "Public link of {actor} expired" : "Pasibaigė nuorodos, priklausančios {actor}, galiojimo laikas", + "You shared {file} as public link" : "Jūs pradėjote bendrinti {file} kaip viešąją nuorodą", + "You removed public link for {file}" : "Jūs pašalinote viešą {file} nuorodą", + "Public link expired for {file}" : "Pasibaigė nuorodos galiojimo laikas skirtas {file}", + "{actor} shared {file} as public link" : "{actor} pradėjo bendrinti {file} kaip viešąją nuorodą", + "{actor} removed public link for {file}" : "{actor} nebesidalina \"{file}\"", + "Public link of {actor} for {file} expired" : "Pasibaigė nuorodos galiojimo laikas duomenims {file}, bendrintiems {actor}", + "{user} accepted the remote share" : "{user} priėmė bendrinamus duomenis", + "{user} declined the remote share" : "{user} atmetė duomenų dalinimąsi", + "You received a new remote share {file} from {user}" : "Jūs gavote naują duomenis \"{file}\" iš kito serverio nuo {user}", + "{user} accepted the remote share of {file}" : "{user} priėmė bendrinamus duomenis \"{file}\"", + "{user} declined the remote share of {file}" : "{user} atmetė duomenų \"{file}\" dalinimąsį", + "{user} unshared {file} from you" : "{user} nustojo bendrinti su jumis {file}", + "Shared with {user}" : "Pradėta bendrinti su {user}", + "Removed share for {user}" : "Nustota dalintis su {user}", + "{actor} shared with {user}" : "{actor} pradėjo bendrinti su {user}", + "{actor} removed share for {user}" : "{actor} nustojo dalintis su {user}", + "Shared by {actor}" : "Pasidalinta {actor}", + "{actor} removed share" : "{actor} nustojo dalintis", + "You shared {file} with {user}" : "Pasidalinote {file} su {user}", + "You removed {user} from {file}" : "Nebesidalinate {file} su {user}", + "{actor} shared {file} with {user}" : "{actor} pasidalino {file} su {user}", + "{actor} removed {user} from {file}" : "{actor} nebesidalina {file} su {user}", + "{actor} shared {file} with you" : "{actor} pasidalino {file} su jumis", + "{actor} removed you from {file}" : "{actor} nebesidalina su jumis {file}", + "A file or folder shared by mail or by public link was downloaded" : "Duomenys, bendrinti per elektroninį paštą, buvo parsiųsti", + "A file or folder was shared from another server" : "Failas ar aplankas buvo pasidalintas iš kito serverio", + "A file or folder has been shared" : "Failas ar aplankas buvo pasidalintas", + "Wrong share ID, share doesn't exist" : "Neteisingas dalinamų duomenų ID", + "could not delete share" : "nepavyko nustoti dalintis duomenimis", + "Could not delete share" : "Nepavyko nustoti dalintis duomenimis", + "Please specify a file or folder path" : "Nurodykite kelią iki duomenų", + "Wrong path, file/folder doesn't exist" : "Neteisingas kelias, failo/aplanko nėra", + "Could not create share" : "Negalima dalintis", + "invalid permissions" : "neteisingi leidimai", + "Please specify a valid user" : "Nurodykite naudotoją", + "Group sharing is disabled by the administrator" : "Bendrinimas su grupėmis yra išjungtas", + "Please specify a valid group" : "Nurodykite grupę", + "Public link sharing is disabled by the administrator" : "Dalinimasis per nuorodą yra išjungtas", + "Public upload disabled by the administrator" : "Įkėlimas viešam naudojimui yra išjungtas", + "Public upload is only possible for publicly shared folders" : "Duomenų įkėlimas viešam naudojimui galimas tik į viešai dalinamus aplankus", + "Invalid date, date format must be YYYY-MM-DD" : "Netinkamas datos formavimas. Privaloma: YYYY-MM-DD", + "Sharing %s failed because the back end does not allow shares from type %s" : "%s dalinimasis nepavyko, nes sistema nepalaiko šio duomenų tipo: %s", + "You cannot share to a Circle if the app is not enabled" : "Negalite dalintis su naudotojų ratu, kai įskiepis \"Circle\" neveikia", + "Please specify a valid circle" : "Pasirinkite naudotojų ratą", + "Unknown share type" : "Nežinomas bendrinamų duomenų tipas", + "Not a directory" : "Nėra katalogas", + "Could not lock path" : "Nepavyko užrakinti kelio", + "Wrong or no update parameter given" : "Neperduoti atnaujinimo parametrai", + "Can't change permissions for public share links" : "Negalima keisti leidimų viešai bendrinamoms nuorodoms", + "Cannot increase permissions" : "Negalima pridėti papildomų leidimų", + "%s is publicly shared" : "%s yra bendrinamas viešai", + "Share API is disabled" : "Bendrinimo API yra išjungtas", + "File sharing" : "Duomenų dalinimasis", "This share is password-protected" : "Turinys apsaugotas slaptažodžiu", - "The password is wrong. Try again." : "Netinka slaptažodis: Bandykite dar kartą.", + "The password is wrong. Try again." : "Slaptažodis neteisingas. Bandykite dar kartą.", "Password" : "Slaptažodis", - "No entries found in this folder" : "Nerasta įrašų šiame aplanke", + "No entries found in this folder" : "Šiame aplanke įrašų nerasta", "Name" : "Pavadinimas", "Share time" : "Dalijimosi laikas", - "Sorry, this link doesn’t seem to work anymore." : "Atleiskite, panašu, kad nuoroda yra neveiksni.", + "Expiration date" : "Galiojimo data", + "Sorry, this link doesn’t seem to work anymore." : "Nuoroda yra neveiksni.", "Reasons might be:" : "Galimos priežastys:", "the item was removed" : "elementas buvo pašalintas", "the link expired" : "baigėsi nuorodos galiojimo laikas", "sharing is disabled" : "dalinimasis yra išjungtas", "For more info, please ask the person who sent this link." : "Dėl tikslesnės informacijos susisiekite su asmeniu atsiuntusiu nuorodą.", - "Add to your ownCloud" : "Pridėti prie tavo ownCloud", + "shared by %s" : "pasidalino %s", + "Add to your Nextcloud" : "Pridėti į jūsų NextCloud", "Download" : "Atsisiųsti", - "Download %s" : "Atsiųsti %s", - "Direct link" : "Tiesioginė nuoroda" + "Download %s" : "Atsisiųsti %s", + "Direct link" : "Tiesioginė nuoroda", + "Upload files to %s" : "Įkelti duomenis į %s", + "Select or drop files" : "Pasirinkite arba vilkite failus", + "Uploading files…" : "Įkeliami failai…", + "Uploaded files:" : "Įkelti failai:" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" } \ No newline at end of file diff --git a/apps/files_sharing/l10n/nb.js b/apps/files_sharing/l10n/nb.js index 4f92d06d88..88e1192121 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 downloaded" : "En fil eller mappe delt via e-post eller offentlig lenke ble lastet ned", + "A file or folder shared by mail or by public link was downloaded" : "Ei fil eller mappe delt via e-post eller offentlig lenke ble lastet ned", "A file or folder was shared from another server" : "En fil eller mappe ble delt fra en annen tjener", "A file or folder has been shared" : "En fil eller mappe ble delt", "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", @@ -103,6 +103,7 @@ OC.L10N.register( "the link expired" : "lenken er utløpt", "sharing is disabled" : "deling er avskrudd", "For more info, please ask the person who sent this link." : "For mer informasjon, spør personen som sendte lenken.", + "shared by %s" : "delt av %s", "Add to your Nextcloud" : "Legg til i din Nextcloud", "Download" : "Last ned", "Download %s" : "Last ned %s", diff --git a/apps/files_sharing/l10n/nb.json b/apps/files_sharing/l10n/nb.json index b51cb60f88..b3fdf4258b 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 downloaded" : "En fil eller mappe delt via e-post eller offentlig lenke ble lastet ned", + "A file or folder shared by mail or by public link was downloaded" : "Ei fil eller mappe delt via e-post eller offentlig lenke ble lastet ned", "A file or folder was shared from another server" : "En fil eller mappe ble delt fra en annen tjener", "A file or folder has been shared" : "En fil eller mappe ble delt", "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", @@ -101,6 +101,7 @@ "the link expired" : "lenken er utløpt", "sharing is disabled" : "deling er avskrudd", "For more info, please ask the person who sent this link." : "For mer informasjon, spør personen som sendte lenken.", + "shared by %s" : "delt av %s", "Add to your Nextcloud" : "Legg til i din Nextcloud", "Download" : "Last ned", "Download %s" : "Last ned %s", diff --git a/apps/files_sharing/l10n/nl.js b/apps/files_sharing/l10n/nl.js index 3aff238724..f0a6c03061 100644 --- a/apps/files_sharing/l10n/nl.js +++ b/apps/files_sharing/l10n/nl.js @@ -103,6 +103,7 @@ OC.L10N.register( "the link expired" : "de link is verlopen", "sharing is disabled" : "delen is uitgeschakeld", "For more info, please ask the person who sent this link." : "Voor meer informatie, neem contact op met de persoon die u deze link heeft gestuurd.", + "shared by %s" : "Gedeeld door %s", "Add to your Nextcloud" : "Toevoegen aan je Nextcloud", "Download" : "Downloaden", "Download %s" : "Download %s", diff --git a/apps/files_sharing/l10n/nl.json b/apps/files_sharing/l10n/nl.json index 192399be44..871372f7c7 100644 --- a/apps/files_sharing/l10n/nl.json +++ b/apps/files_sharing/l10n/nl.json @@ -101,6 +101,7 @@ "the link expired" : "de link is verlopen", "sharing is disabled" : "delen is uitgeschakeld", "For more info, please ask the person who sent this link." : "Voor meer informatie, neem contact op met de persoon die u deze link heeft gestuurd.", + "shared by %s" : "Gedeeld door %s", "Add to your Nextcloud" : "Toevoegen aan je Nextcloud", "Download" : "Downloaden", "Download %s" : "Download %s", diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js index 2a2b424e25..7906ea6f01 100644 --- a/apps/files_sharing/l10n/pt_BR.js +++ b/apps/files_sharing/l10n/pt_BR.js @@ -103,6 +103,7 @@ OC.L10N.register( "the link expired" : "o link expirou", "sharing is disabled" : "o compartilhamento está desativado", "For more info, please ask the person who sent this link." : "Para mais informações, pergunte à pessoa que lhe enviou o link.", + "shared by %s" : "compartilhado por %s", "Add to your Nextcloud" : "Adicionar ao seu Nextcloud", "Download" : "Baixar", "Download %s" : "Baixar %s", diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json index 4040000cb4..f7a37ac8e1 100644 --- a/apps/files_sharing/l10n/pt_BR.json +++ b/apps/files_sharing/l10n/pt_BR.json @@ -101,6 +101,7 @@ "the link expired" : "o link expirou", "sharing is disabled" : "o compartilhamento está desativado", "For more info, please ask the person who sent this link." : "Para mais informações, pergunte à pessoa que lhe enviou o link.", + "shared by %s" : "compartilhado por %s", "Add to your Nextcloud" : "Adicionar ao seu Nextcloud", "Download" : "Baixar", "Download %s" : "Baixar %s", diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js index 06122cef13..c227aea0a7 100644 --- a/apps/files_sharing/l10n/ru.js +++ b/apps/files_sharing/l10n/ru.js @@ -21,71 +21,71 @@ OC.L10N.register( "File shares" : "Обмен файлами", "Downloaded via public link" : "Скачано по общедоступной ссылке", "Downloaded by {email}" : "Скачано {email}", - "{file} downloaded via public link" : "«{file}» скачан по общедоступной ссылке", + "{file} downloaded via public link" : "«{file}» был скачан по общедоступной ссылке", "{email} downloaded {file}" : "{email} скачал «{file}»", - "Shared with group {group}" : "Открыт доступ для группы «{group}»", + "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}»", + "{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" : "Поделился общедоступной ссылкой", + "{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" : "Удалена общедоступная ссылка", "Public link expired" : "Срок действия общедоступнной ссылки закончился", - "{actor} shared as public link" : "{actor} поделился общедоступной ссылкой", - "{actor} removed public link" : "{actor} удалил общедоступной ссылку", - "Public link of {actor} expired" : "Истёе срок действия общедоступной ссылки пользователя {actor}", + "{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" : "Истёк срок действия общедоступной ссылки к «{file}», созданной {actor}", - "{user} accepted the remote share" : "{user} принял удаленный общий ресурс", - "{user} declined the remote share" : "{user} отклонил удаленный общий ресурс", - "You received a new remote share {file} from {user}" : "Вы получили от {user} новый общий ресурс с другого сервера «{file}» ", - "{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}" : "Вы открыли доступ к «{file}» для {user}", - "You removed {user} from {file}" : "Вы закрыли общий доступ к «{file}» для {user}", - "{actor} shared {file} with {user}" : "{actor} открыл общий доступ к «{file}» для {user}", - "{actor} removed {user} from {file}" : "{actor} закрыл общий доступ к «{file}» для {user}", - "{actor} shared {file} with you" : "{actor} открыл вам общий доступ к «{file}»", - "{actor} removed you from {file}" : "{actor} закрыл вам общий доступ к «{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" : "Истёк срок действия общедоступной ссылки на «{file}», созданной {actor}.", + "{user} accepted the remote share" : "{user} принял(а) общий ресурс другого сервера", + "{user} declined the remote share" : "{user} отклонил(а) общий ресурс другого сервера", + "You received a new remote share {file} from {user}" : "Вы получили от {user} новый общий ресурс «{file}», расположенный на другом сервере", + "{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}" : "Вы поделились «{file}» с пользователем {user}", + "You removed {user} from {file}" : "Вы закрыли пользователю {user} общий доступ к «{file}»", + "{actor} shared {file} with {user}" : "{actor} поделился(ась) «{file}» с пользователем {user}", + "{actor} removed {user} from {file}" : "{actor} закрыл(а) пользователю общий доступ к «{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 downloaded" : "Файл или папка, которыми поделились по электронной почте или общедоступной ссылке, были скачаны", "A file or folder was shared from another server" : "Общий доступ к файлу или каталогу был открыт с другого сервера", "A file or folder has been shared" : "Опубликован файл или каталог", "Wrong share ID, share doesn't exist" : "Неверный идентификатор публикации, публикация не существует", "could not delete share" : "Не удалось удалить общий ресурс", "Could not delete share" : "Не удалось удалить общий ресурс", - "Please specify a file or folder path" : "Пожалуйста, укажите путь к файлу или каталогу", - "Wrong path, file/folder doesn't exist" : "Неверный путь, файл/каталог не существует", + "Please specify a file or folder path" : "Укажите путь к файлу или каталогу", + "Wrong path, file/folder doesn't exist" : "Неверный путь, файл или каталог не существует", "Could not create share" : "Не удалось создать общий ресурс", - "invalid permissions" : "неверные права", + "invalid permissions" : "неверные права доступа", "Please specify a valid user" : "Укажите верного пользователя", - "Group sharing is disabled by the administrator" : "Общий доступ для групп отключён администратором", + "Group sharing is disabled by the administrator" : "Возможность делиться с группами отключена администратором", "Please specify a valid group" : "Укажите верную группу", - "Public link sharing is disabled by the administrator" : "Публикация через общедоступные ссылки отключена администратором", + "Public link sharing is disabled by the administrator" : "Возможность делиться созданием общедоступных ссылок отключена администратором", "Public upload disabled by the administrator" : "Загрузка в общедоступную публикацию запрещена администратором", "Public upload is only possible for publicly shared folders" : "Общедоступная загрузка возможна только в папки с общим доступом", "Invalid date, date format must be 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" : "Вы не можите поделиться через приложение Круг, если это приложение не включено", + "You cannot share to a Circle if the app is not enabled" : "Вы не можете поделиться с кругом, если приложение «Круг» не включено", "Please specify a valid 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" : "Невозможно изменить права для публикации через общедоступной ссылку", + "Can't change permissions for public share links" : "Для общедоступных ссылок изменение прав невозможно", "Cannot increase permissions" : "Нельзя увеличить права", "%s is publicly shared" : "%s опубликован ", "Share API is disabled" : "API общего доступа отключён", @@ -103,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", diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json index 00a0cbf7da..dbb0c02cdb 100644 --- a/apps/files_sharing/l10n/ru.json +++ b/apps/files_sharing/l10n/ru.json @@ -19,71 +19,71 @@ "File shares" : "Обмен файлами", "Downloaded via public link" : "Скачано по общедоступной ссылке", "Downloaded by {email}" : "Скачано {email}", - "{file} downloaded via public link" : "«{file}» скачан по общедоступной ссылке", + "{file} downloaded via public link" : "«{file}» был скачан по общедоступной ссылке", "{email} downloaded {file}" : "{email} скачал «{file}»", - "Shared with group {group}" : "Открыт доступ для группы «{group}»", + "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}»", + "{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" : "Поделился общедоступной ссылкой", + "{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" : "Удалена общедоступная ссылка", "Public link expired" : "Срок действия общедоступнной ссылки закончился", - "{actor} shared as public link" : "{actor} поделился общедоступной ссылкой", - "{actor} removed public link" : "{actor} удалил общедоступной ссылку", - "Public link of {actor} expired" : "Истёе срок действия общедоступной ссылки пользователя {actor}", + "{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" : "Истёк срок действия общедоступной ссылки к «{file}», созданной {actor}", - "{user} accepted the remote share" : "{user} принял удаленный общий ресурс", - "{user} declined the remote share" : "{user} отклонил удаленный общий ресурс", - "You received a new remote share {file} from {user}" : "Вы получили от {user} новый общий ресурс с другого сервера «{file}» ", - "{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}" : "Вы открыли доступ к «{file}» для {user}", - "You removed {user} from {file}" : "Вы закрыли общий доступ к «{file}» для {user}", - "{actor} shared {file} with {user}" : "{actor} открыл общий доступ к «{file}» для {user}", - "{actor} removed {user} from {file}" : "{actor} закрыл общий доступ к «{file}» для {user}", - "{actor} shared {file} with you" : "{actor} открыл вам общий доступ к «{file}»", - "{actor} removed you from {file}" : "{actor} закрыл вам общий доступ к «{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" : "Истёк срок действия общедоступной ссылки на «{file}», созданной {actor}.", + "{user} accepted the remote share" : "{user} принял(а) общий ресурс другого сервера", + "{user} declined the remote share" : "{user} отклонил(а) общий ресурс другого сервера", + "You received a new remote share {file} from {user}" : "Вы получили от {user} новый общий ресурс «{file}», расположенный на другом сервере", + "{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}" : "Вы поделились «{file}» с пользователем {user}", + "You removed {user} from {file}" : "Вы закрыли пользователю {user} общий доступ к «{file}»", + "{actor} shared {file} with {user}" : "{actor} поделился(ась) «{file}» с пользователем {user}", + "{actor} removed {user} from {file}" : "{actor} закрыл(а) пользователю общий доступ к «{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 downloaded" : "Файл или папка, которыми поделились по электронной почте или общедоступной ссылке, были скачаны", "A file or folder was shared from another server" : "Общий доступ к файлу или каталогу был открыт с другого сервера", "A file or folder has been shared" : "Опубликован файл или каталог", "Wrong share ID, share doesn't exist" : "Неверный идентификатор публикации, публикация не существует", "could not delete share" : "Не удалось удалить общий ресурс", "Could not delete share" : "Не удалось удалить общий ресурс", - "Please specify a file or folder path" : "Пожалуйста, укажите путь к файлу или каталогу", - "Wrong path, file/folder doesn't exist" : "Неверный путь, файл/каталог не существует", + "Please specify a file or folder path" : "Укажите путь к файлу или каталогу", + "Wrong path, file/folder doesn't exist" : "Неверный путь, файл или каталог не существует", "Could not create share" : "Не удалось создать общий ресурс", - "invalid permissions" : "неверные права", + "invalid permissions" : "неверные права доступа", "Please specify a valid user" : "Укажите верного пользователя", - "Group sharing is disabled by the administrator" : "Общий доступ для групп отключён администратором", + "Group sharing is disabled by the administrator" : "Возможность делиться с группами отключена администратором", "Please specify a valid group" : "Укажите верную группу", - "Public link sharing is disabled by the administrator" : "Публикация через общедоступные ссылки отключена администратором", + "Public link sharing is disabled by the administrator" : "Возможность делиться созданием общедоступных ссылок отключена администратором", "Public upload disabled by the administrator" : "Загрузка в общедоступную публикацию запрещена администратором", "Public upload is only possible for publicly shared folders" : "Общедоступная загрузка возможна только в папки с общим доступом", "Invalid date, date format must be 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" : "Вы не можите поделиться через приложение Круг, если это приложение не включено", + "You cannot share to a Circle if the app is not enabled" : "Вы не можете поделиться с кругом, если приложение «Круг» не включено", "Please specify a valid 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" : "Невозможно изменить права для публикации через общедоступной ссылку", + "Can't change permissions for public share links" : "Для общедоступных ссылок изменение прав невозможно", "Cannot increase permissions" : "Нельзя увеличить права", "%s is publicly shared" : "%s опубликован ", "Share API is disabled" : "API общего доступа отключён", @@ -101,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", diff --git a/apps/files_sharing/l10n/sq.js b/apps/files_sharing/l10n/sq.js index cbe8206781..ad8b6ca84c 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}", @@ -48,20 +51,21 @@ OC.L10N.register( "{user} unshared {file} from you" : "{user} nuk ndau {file} nga ju", "Shared with {user}" : "Ndarë me {user}", "Removed share for {user}" : "Hoqi ndarjen për {user}", - "{actor} shared with {user}" : "{actor} ndau me {user}", + "{actor} shared with {user}" : "{aktori} ndau me {përdoruesin}", "{actor} removed share for {user}" : "{actor} hoqi ndarjen për {user}", "Shared by {actor}" : "U nda nga {actor}", "{actor} removed share" : "{actor} hoqi ndarjen", "You shared {file} with {user}" : "Ndatë {file} me {user}", "You removed {user} from {file}" : "Hoqët {user} nga {file}", + "{actor} shared {file} with {user}" : "{aktori} ndau {skedarë} me {përdoruesin}", "{actor} removed {user} from {file}" : "{actor} hoqi {user} nga {file}", - "{actor} shared {file} with you" : "{actor} ndau {file} me ju", + "{actor} shared {file} with you" : "{actor} ndau {skedarë} me ju", "{actor} removed you from {file}" : "{actor} iu hoqi nga {file}", "A file or folder shared by mail or by public link was downloaded" : "Një skedar ose dosje e ndarë nga posta ose lidhja publike ishte shkarkuar", "A file or folder was shared from another server" : "Një kartelë ose dosje u nda prej një shërbyesi tjetër", "A file or folder has been shared" : "U nda me të tjerë një kartelë ose dosje", "Wrong share ID, share doesn't exist" : "ID e gabuar ndarjeje, ndarja s’ekziston", - "could not delete share" : "Ndarja s’u fshi dot", + "could not delete share" : "ndarja s’u fshi dot", "Could not delete share" : "Ndarja s’u fshi dot", "Please specify a file or folder path" : "Ju lutemi, tregoni një shteg kartele ose dosjeje", "Wrong path, file/folder doesn't exist" : "Shteg i gabuar, kratela/dosja s’ekziston", @@ -75,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", @@ -83,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", @@ -96,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 2c2489830b..d70569e8d4 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}", @@ -46,20 +49,21 @@ "{user} unshared {file} from you" : "{user} nuk ndau {file} nga ju", "Shared with {user}" : "Ndarë me {user}", "Removed share for {user}" : "Hoqi ndarjen për {user}", - "{actor} shared with {user}" : "{actor} ndau me {user}", + "{actor} shared with {user}" : "{aktori} ndau me {përdoruesin}", "{actor} removed share for {user}" : "{actor} hoqi ndarjen për {user}", "Shared by {actor}" : "U nda nga {actor}", "{actor} removed share" : "{actor} hoqi ndarjen", "You shared {file} with {user}" : "Ndatë {file} me {user}", "You removed {user} from {file}" : "Hoqët {user} nga {file}", + "{actor} shared {file} with {user}" : "{aktori} ndau {skedarë} me {përdoruesin}", "{actor} removed {user} from {file}" : "{actor} hoqi {user} nga {file}", - "{actor} shared {file} with you" : "{actor} ndau {file} me ju", + "{actor} shared {file} with you" : "{actor} ndau {skedarë} me ju", "{actor} removed you from {file}" : "{actor} iu hoqi nga {file}", "A file or folder shared by mail or by public link was downloaded" : "Një skedar ose dosje e ndarë nga posta ose lidhja publike ishte shkarkuar", "A file or folder was shared from another server" : "Një kartelë ose dosje u nda prej një shërbyesi tjetër", "A file or folder has been shared" : "U nda me të tjerë një kartelë ose dosje", "Wrong share ID, share doesn't exist" : "ID e gabuar ndarjeje, ndarja s’ekziston", - "could not delete share" : "Ndarja s’u fshi dot", + "could not delete share" : "ndarja s’u fshi dot", "Could not delete share" : "Ndarja s’u fshi dot", "Please specify a file or folder path" : "Ju lutemi, tregoni një shteg kartele ose dosjeje", "Wrong path, file/folder doesn't exist" : "Shteg i gabuar, kratela/dosja s’ekziston", @@ -73,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", @@ -81,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", @@ -94,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/tr.js b/apps/files_sharing/l10n/tr.js index 351f051565..90dd8d9cbb 100644 --- a/apps/files_sharing/l10n/tr.js +++ b/apps/files_sharing/l10n/tr.js @@ -103,6 +103,7 @@ OC.L10N.register( "the link expired" : "bağlantı süresi dolmuş", "sharing is disabled" : "paylaşım devre dışı bırakılmış", "For more info, please ask the person who sent this link." : "Ayrıntılı bilgi almak için bu bağlantıyı aldığınız kişi ile görüşün.", + "shared by %s" : "%s tarafından paylaşıldı", "Add to your Nextcloud" : "Nextcloud hesabınıza ekleyin", "Download" : "İndir", "Download %s" : "%s İndir", diff --git a/apps/files_sharing/l10n/tr.json b/apps/files_sharing/l10n/tr.json index cd2efe9674..56201c87b7 100644 --- a/apps/files_sharing/l10n/tr.json +++ b/apps/files_sharing/l10n/tr.json @@ -101,6 +101,7 @@ "the link expired" : "bağlantı süresi dolmuş", "sharing is disabled" : "paylaşım devre dışı bırakılmış", "For more info, please ask the person who sent this link." : "Ayrıntılı bilgi almak için bu bağlantıyı aldığınız kişi ile görüşün.", + "shared by %s" : "%s tarafından paylaşıldı", "Add to your Nextcloud" : "Nextcloud hesabınıza ekleyin", "Download" : "İndir", "Download %s" : "%s İndir", diff --git a/apps/files_sharing/l10n/zh_CN.js b/apps/files_sharing/l10n/zh_CN.js index b459355c7c..759d5eb930 100644 --- a/apps/files_sharing/l10n/zh_CN.js +++ b/apps/files_sharing/l10n/zh_CN.js @@ -103,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", diff --git a/apps/files_sharing/l10n/zh_CN.json b/apps/files_sharing/l10n/zh_CN.json index 5c1f8b3149..68f5c68c13 100644 --- a/apps/files_sharing/l10n/zh_CN.json +++ b/apps/files_sharing/l10n/zh_CN.json @@ -101,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", diff --git a/apps/files_sharing/l10n/zh_TW.js b/apps/files_sharing/l10n/zh_TW.js index eacf48d6ee..84db038f35 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 shared" : "檔案或目錄已被 分享", - "A file or folder was shared from another server" : "檔案或目錄已被 其他伺服器 分享", - "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 downloaded" : "email或公開連結分享的檔案與資料夾已被 下載", + "A file or folder was shared from another server" : "檔案或目錄已被 其他伺服器 分享", + "A file or folder has been shared" : "檔案或目錄已被 分享", "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 downloaded" : "共享檔案或目錄已被 下載", - "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 c5cdaa5862..7d35951bcb 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 shared" : "檔案或目錄已被 分享", - "A file or folder was shared from another server" : "檔案或目錄已被 其他伺服器 分享", - "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 downloaded" : "email或公開連結分享的檔案與資料夾已被 下載", + "A file or folder was shared from another server" : "檔案或目錄已被 其他伺服器 分享", + "A file or folder has been shared" : "檔案或目錄已被 分享", "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 downloaded" : "共享檔案或目錄已被 下載", - "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_sharing/lib/Activity/Providers/RemoteShares.php b/apps/files_sharing/lib/Activity/Providers/RemoteShares.php index cf4954800e..f89fb0b005 100644 --- a/apps/files_sharing/lib/Activity/Providers/RemoteShares.php +++ b/apps/files_sharing/lib/Activity/Providers/RemoteShares.php @@ -23,9 +23,7 @@ namespace OCA\Files_Sharing\Activity\Providers; use OCP\Activity\IEvent; use OCP\Activity\IManager; -use OCP\Activity\IProvider; use OCP\Federation\ICloudIdManager; -use OCP\IL10N; use OCP\IURLGenerator; use OCP\IUserManager; use OCP\L10N\IFactory; diff --git a/apps/files_sharing/lib/Activity/Settings/RemoteShare.php b/apps/files_sharing/lib/Activity/Settings/RemoteShare.php index ef506999fc..2a5cdcd995 100644 --- a/apps/files_sharing/lib/Activity/Settings/RemoteShare.php +++ b/apps/files_sharing/lib/Activity/Settings/RemoteShare.php @@ -92,7 +92,7 @@ class RemoteShare implements ISetting { * @since 11.0.0 */ public function isDefaultEnabledMail() { - return true; + return false; } } diff --git a/apps/files_sharing/lib/Activity/Settings/Shared.php b/apps/files_sharing/lib/Activity/Settings/Shared.php index 847469d25f..97318dc79b 100644 --- a/apps/files_sharing/lib/Activity/Settings/Shared.php +++ b/apps/files_sharing/lib/Activity/Settings/Shared.php @@ -92,7 +92,7 @@ class Shared implements ISetting { * @since 11.0.0 */ public function isDefaultEnabledMail() { - return true; + return false; } } diff --git a/apps/files_sharing/lib/Capabilities.php b/apps/files_sharing/lib/Capabilities.php index 22a8a8a0a3..e8e6a4c26f 100644 --- a/apps/files_sharing/lib/Capabilities.php +++ b/apps/files_sharing/lib/Capabilities.php @@ -71,7 +71,7 @@ class Capabilities implements ICapability { $public['upload'] = $this->config->getAppValue('core', 'shareapi_allow_public_upload', 'yes') === 'yes'; $public['upload_files_drop'] = $public['upload']; } - $res["public"] = $public; + $res['public'] = $public; $res['resharing'] = $this->config->getAppValue('core', 'shareapi_allow_resharing', 'yes') === 'yes'; diff --git a/apps/files_sharing/lib/Command/CleanupRemoteStorages.php b/apps/files_sharing/lib/Command/CleanupRemoteStorages.php index 504caba141..389b0dc498 100644 --- a/apps/files_sharing/lib/Command/CleanupRemoteStorages.php +++ b/apps/files_sharing/lib/Command/CleanupRemoteStorages.php @@ -60,11 +60,11 @@ class CleanupRemoteStorages extends Command { $remoteStorages = $this->getRemoteStorages(); - $output->writeln(count($remoteStorages) . " remote storage(s) need(s) to be checked"); + $output->writeln(count($remoteStorages) . ' remote storage(s) need(s) to be checked'); $remoteShareIds = $this->getRemoteShareIds(); - $output->writeln(count($remoteShareIds) . " remote share(s) exist"); + $output->writeln(count($remoteShareIds) . ' remote share(s) exist'); foreach ($remoteShareIds as $id => $remoteShareId) { if (isset($remoteStorages[$remoteShareId])) { @@ -79,7 +79,7 @@ class CleanupRemoteStorages extends Command { } if (empty($remoteStorages)) { - $output->writeln("no storages deleted"); + $output->writeln('no storages deleted'); } else { $dryRun = $input->getOption('dry-run'); foreach ($remoteStorages as $id => $numericId) { diff --git a/apps/files_sharing/lib/Controller/RemoteController.php b/apps/files_sharing/lib/Controller/RemoteController.php index 7c7a608ff2..299b6fe4df 100644 --- a/apps/files_sharing/lib/Controller/RemoteController.php +++ b/apps/files_sharing/lib/Controller/RemoteController.php @@ -29,6 +29,7 @@ use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\OCS\OCSForbiddenException; use OCP\AppFramework\OCS\OCSNotFoundException; use OCP\AppFramework\OCSController; +use OCP\ILogger; use OCP\IRequest; class RemoteController extends OCSController { @@ -36,6 +37,9 @@ class RemoteController extends OCSController { /** @var Manager */ private $externalManager; + /** @var ILogger */ + private $logger; + /** * @NoAdminRequired * @@ -47,10 +51,12 @@ class RemoteController extends OCSController { */ public function __construct($appName, IRequest $request, - Manager $externalManager) { + Manager $externalManager, + ILogger $logger) { parent::__construct($appName, $request); $this->externalManager = $externalManager; + $this->logger = $logger; } /** @@ -78,8 +84,8 @@ class RemoteController extends OCSController { return new DataResponse(); } - // Make sure the user has no notification for something that does not exist anymore. - $this->externalManager->processNotification($id); + $this->logger->error('Could not accept federated share with id: ' . $id, + ['app' => 'files_sharing']); throw new OCSNotFoundException('wrong share ID, share doesn\'t exist.'); } diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php index 458102036b..c57a738457 100644 --- a/apps/files_sharing/lib/Controller/ShareAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareAPIController.php @@ -308,6 +308,8 @@ class ShareAPIController extends OCSController { * @throws OCSForbiddenException * @throws OCSBadRequestException * @throws OCSException + * + * @suppress PhanUndeclaredClassMethod */ public function createShare( $path = null, diff --git a/apps/files_sharing/lib/Controller/ShareController.php b/apps/files_sharing/lib/Controller/ShareController.php index 759d5ee416..14fc8d6338 100644 --- a/apps/files_sharing/lib/Controller/ShareController.php +++ b/apps/files_sharing/lib/Controller/ShareController.php @@ -401,7 +401,7 @@ class ShareController extends Controller { } // OpenGraph Support: http://ogp.me/ - \OCP\Util::addHeader('meta', ['property' => "og:title", 'content' => $this->defaults->getName() . ' - ' . $this->defaults->getSlogan()]); + \OCP\Util::addHeader('meta', ['property' => "og:title", 'content' => $this->defaults->getName() . ($this->defaults->getSlogan() !== '' ? ' - ' . $this->defaults->getSlogan() : '')]); \OCP\Util::addHeader('meta', ['property' => "og:description", 'content' => $this->l10n->t('%s is publicly shared', [$shareTmpl['filename']])]); \OCP\Util::addHeader('meta', ['property' => "og:site_name", 'content' => $this->defaults->getName()]); \OCP\Util::addHeader('meta', ['property' => "og:url", 'content' => $shareTmpl['shareUrl']]); @@ -514,7 +514,7 @@ class ShareController extends Controller { $this->emitAccessShareHook($share); - $server_params = array( 'head' => $this->request->getMethod() == 'HEAD' ); + $server_params = array( 'head' => $this->request->getMethod() === 'HEAD' ); /** * Http range requests support diff --git a/apps/files_sharing/lib/Controller/ShareesAPIController.php b/apps/files_sharing/lib/Controller/ShareesAPIController.php index 3e0c01b342..0e94cfb9d7 100644 --- a/apps/files_sharing/lib/Controller/ShareesAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareesAPIController.php @@ -299,6 +299,7 @@ class ShareesAPIController extends OCSController { /** * @param string $search + * @suppress PhanUndeclaredClassMethod */ protected function getCircles($search) { $this->result['circles'] = $this->result['exact']['circles'] = []; diff --git a/apps/files_sharing/lib/ExpireSharesJob.php b/apps/files_sharing/lib/ExpireSharesJob.php index 19c0606dc4..212b7fa008 100644 --- a/apps/files_sharing/lib/ExpireSharesJob.php +++ b/apps/files_sharing/lib/ExpireSharesJob.php @@ -44,7 +44,6 @@ class ExpireSharesJob extends TimedJob { */ public function run($argument) { $connection = \OC::$server->getDatabaseConnection(); - $logger = \OC::$server->getLogger(); //Current time $now = new \DateTime(); diff --git a/apps/files_sharing/lib/External/Manager.php b/apps/files_sharing/lib/External/Manager.php index 54d0f9bd0c..ab20e37a79 100644 --- a/apps/files_sharing/lib/External/Manager.php +++ b/apps/files_sharing/lib/External/Manager.php @@ -197,6 +197,7 @@ class Manager { public function acceptShare($id) { $share = $this->getShare($id); + $result = false; if ($share) { \OC_Util::setupFS($this->uid); @@ -211,16 +212,18 @@ class Manager { `mountpoint` = ?, `mountpoint_hash` = ? WHERE `id` = ? AND `user` = ?'); - $acceptShare->execute(array(1, $mountPoint, $hash, $id, $this->uid)); - $this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'accept'); - - \OC_Hook::emit('OCP\Share', 'federated_share_added', ['server' => $share['remote']]); - - $this->processNotification($id); - return true; + $updated = $acceptShare->execute(array(1, $mountPoint, $hash, $id, $this->uid)); + if ($updated === true) { + $this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'accept'); + \OC_Hook::emit('OCP\Share', 'federated_share_added', ['server' => $share['remote']]); + $result = true; + } } - return false; + // Make sure the user has no notification for something that does not exist anymore. + $this->processNotification($id); + + return $result; } /** @@ -366,8 +369,13 @@ class Manager { $result = $getShare->execute(array($hash, $this->uid)); if ($result) { - $share = $getShare->fetch(); - $this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'decline'); + try { + $share = $getShare->fetch(); + $this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'decline'); + } catch (\Exception $e) { + // if we fail to notify the remote (probably cause the remote is down) + // we still want the share to be gone to prevent undeletable remotes + } } $getShare->closeCursor(); diff --git a/apps/files_sharing/lib/Helper.php b/apps/files_sharing/lib/Helper.php index a659da9292..c8f46fa813 100644 --- a/apps/files_sharing/lib/Helper.php +++ b/apps/files_sharing/lib/Helper.php @@ -132,7 +132,7 @@ class Helper { Filesystem::initMountPoints($owner); $info = Filesystem::getFileInfo($target); $ownerView = new View('/'.$owner.'/files'); - if ( $owner != User::getUser() ) { + if ( $owner !== User::getUser() ) { $path = $ownerView->getPath($info['fileid']); } else { $path = $target; @@ -183,7 +183,7 @@ class Helper { $uid = User::getUser(); } Filesystem::initMountPoints($uid); - if ( $uid != User::getUser() ) { + if ( $uid !== User::getUser() ) { $info = Filesystem::getFileInfo($filename); $ownerView = new View('/'.$uid.'/files'); try { diff --git a/apps/files_sharing/lib/Middleware/OCSShareAPIMiddleware.php b/apps/files_sharing/lib/Middleware/OCSShareAPIMiddleware.php index 5d2c168e87..9df0229ab8 100644 --- a/apps/files_sharing/lib/Middleware/OCSShareAPIMiddleware.php +++ b/apps/files_sharing/lib/Middleware/OCSShareAPIMiddleware.php @@ -3,6 +3,7 @@ namespace OCA\Files_Sharing\Middleware; use OCA\Files_Sharing\Controller\ShareAPIController; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http\Response; use OCP\AppFramework\Middleware; use OCP\AppFramework\OCS\OCSNotFoundException; @@ -22,7 +23,7 @@ class OCSShareAPIMiddleware extends Middleware { } /** - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * * @throws OCSNotFoundException @@ -36,7 +37,7 @@ class OCSShareAPIMiddleware extends Middleware { } /** - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * @param Response $response * @return Response diff --git a/apps/files_sharing/lib/Middleware/SharingCheckMiddleware.php b/apps/files_sharing/lib/Middleware/SharingCheckMiddleware.php index 5712b96b97..e1a77fdec3 100644 --- a/apps/files_sharing/lib/Middleware/SharingCheckMiddleware.php +++ b/apps/files_sharing/lib/Middleware/SharingCheckMiddleware.php @@ -28,6 +28,7 @@ namespace OCA\Files_Sharing\Middleware; use OCA\Files_Sharing\Controller\ExternalSharesController; use OCA\Files_Sharing\Controller\ShareController; use OCP\App\IAppManager; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http\NotFoundResponse; use OCP\AppFramework\Middleware; use OCP\Files\NotFoundException; @@ -37,6 +38,7 @@ use OCA\Files_Sharing\Exceptions\S2SException; use OCP\AppFramework\Http\JSONResponse; use OCP\IRequest; use OCP\Share\IManager; +use OCP\Share\Exceptions\ShareNotFound; /** * Checks whether the "sharing check" is enabled @@ -84,10 +86,11 @@ class SharingCheckMiddleware extends Middleware { /** * Check if sharing is enabled before the controllers is executed * - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * @throws NotFoundException * @throws S2SException + * @throws ShareNotFound */ public function beforeController($controller, $methodName) { if(!$this->isSharingEnabled()) { @@ -110,7 +113,7 @@ class SharingCheckMiddleware extends Middleware { /** * Return 404 page in case of a not found exception * - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * @param \Exception $exception * @return NotFoundResponse diff --git a/apps/files_sharing/lib/ShareBackend/File.php b/apps/files_sharing/lib/ShareBackend/File.php index aecb63c60e..8347454658 100644 --- a/apps/files_sharing/lib/ShareBackend/File.php +++ b/apps/files_sharing/lib/ShareBackend/File.php @@ -123,7 +123,7 @@ class File implements \OCP\Share_Backend_File_Dependent { } public function formatItems($items, $format, $parameters = null) { - if ($format == self::FORMAT_SHARED_STORAGE) { + if ($format === self::FORMAT_SHARED_STORAGE) { // Only 1 item should come through for this format call $item = array_shift($items); return array( @@ -133,7 +133,7 @@ class File implements \OCP\Share_Backend_File_Dependent { 'permissions' => $item['permissions'], 'uid_owner' => $item['uid_owner'], ); - } else if ($format == self::FORMAT_GET_FOLDER_CONTENTS) { + } else if ($format === self::FORMAT_GET_FOLDER_CONTENTS) { $files = array(); foreach ($items as $item) { $file = array(); @@ -156,13 +156,13 @@ class File implements \OCP\Share_Backend_File_Dependent { $files[] = $file; } return $files; - } else if ($format == self::FORMAT_OPENDIR) { + } else if ($format === self::FORMAT_OPENDIR) { $files = array(); foreach ($items as $item) { $files[] = basename($item['file_target']); } return $files; - } else if ($format == self::FORMAT_GET_ALL) { + } else if ($format === self::FORMAT_GET_ALL) { $ids = array(); foreach ($items as $item) { $ids[] = $item['file_source']; diff --git a/apps/files_sharing/lib/ShareBackend/Folder.php b/apps/files_sharing/lib/ShareBackend/Folder.php index 4929bebf40..55c2eff6fe 100644 --- a/apps/files_sharing/lib/ShareBackend/Folder.php +++ b/apps/files_sharing/lib/ShareBackend/Folder.php @@ -50,8 +50,8 @@ class Folder extends File implements \OCP\Share_Backend_Collection { $share['file_path'] = $name; $displayNameOwner = \OCP\User::getDisplayName($share['uid_owner']); $displayNameShareWith = \OCP\User::getDisplayName($share['share_with']); - $share['displayname_owner'] = ($displayNameOwner) ? $displayNameOwner : $share['uid_owner']; - $share['share_with_displayname'] = ($displayNameShareWith) ? $displayNameShareWith : $share['uid_owner']; + $share['displayname_owner'] = $displayNameOwner ? $displayNameOwner : $share['uid_owner']; + $share['share_with_displayname'] = $displayNameShareWith ? $displayNameShareWith : $share['uid_owner']; $result[] = $share; } @@ -72,7 +72,7 @@ class Folder extends File implements \OCP\Share_Backend_Collection { $query = \OCP\DB::prepare('SELECT `parent` FROM `*PREFIX*filecache` WHERE `fileid` = ?'); $result = $query->execute(array($child)); $row = $result->fetchRow(); - $parent = ($row) ? $row['parent'] : null; + $parent = $row ? $row['parent'] : null; return $parent; } @@ -83,7 +83,7 @@ class Folder extends File implements \OCP\Share_Backend_Collection { $query = \OCP\DB::prepare('SELECT `id` FROM `*PREFIX*mimetypes` WHERE `mimetype` = ?'); $result = $query->execute(array('httpd/unix-directory')); if ($row = $result->fetchRow()) { - $mimetype = $row['id']; + $mimetype = (int) $row['id']; } else { $mimetype = -1; } @@ -96,7 +96,7 @@ class Folder extends File implements \OCP\Share_Backend_Collection { while ($file = $result->fetchRow()) { $children[] = array('source' => $file['fileid'], 'file_path' => $file['name']); // If a child folder is found look inside it - if ($file['mimetype'] == $mimetype) { + if ((int) $file['mimetype'] === $mimetype) { $parents[] = $file['fileid']; } } diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php index f8067a03d0..a593e596df 100644 --- a/apps/files_sharing/templates/public.php +++ b/apps/files_sharing/templates/public.php @@ -35,18 +35,19 @@ $maxUploadFilesize = min($upload_max_filesize, $post_max_size);

diff --git a/apps/provisioning_api/lib/Controller/AppsController.php b/apps/provisioning_api/lib/Controller/AppsController.php index 7031687576..d65b925cf7 100644 --- a/apps/provisioning_api/lib/Controller/AppsController.php +++ b/apps/provisioning_api/lib/Controller/AppsController.php @@ -91,9 +91,9 @@ class AppsController extends OCSController { $info = \OCP\App::getAppInfo($app); if(!is_null($info)) { return new DataResponse(OC_App::getAppInfo($app)); - } else { - throw new OCSException('The request app was not found', \OCP\API::RESPOND_NOT_FOUND); } + + throw new OCSException('The request app was not found', \OCP\API::RESPOND_NOT_FOUND); } /** diff --git a/apps/provisioning_api/lib/Controller/GroupsController.php b/apps/provisioning_api/lib/Controller/GroupsController.php index 2d329bf974..e167c07582 100644 --- a/apps/provisioning_api/lib/Controller/GroupsController.php +++ b/apps/provisioning_api/lib/Controller/GroupsController.php @@ -30,6 +30,7 @@ use OCP\AppFramework\OCS\OCSException; use OCP\AppFramework\OCSController; use OCP\IGroup; use OCP\IGroupManager; +use OCP\ILogger; use OCP\IRequest; use OCP\IUserSession; use OCP\IUser; @@ -43,21 +44,27 @@ class GroupsController extends OCSController { /** @var IUserSession */ private $userSession; + /** @var ILogger */ + private $logger; + /** * @param string $appName * @param IRequest $request * @param IGroupManager $groupManager * @param IUserSession $userSession + * @param ILogger $logger */ public function __construct( $appName, IRequest $request, IGroupManager $groupManager, - IUserSession $userSession) { + IUserSession $userSession, + ILogger $logger) { parent::__construct($appName, $request); $this->groupManager = $groupManager; $this->userSession = $userSession; + $this->logger = $logger; } /** @@ -120,9 +127,9 @@ class GroupsController extends OCSController { }, $users); $users = array_values($users); return new DataResponse(['users' => $users]); - } else { - throw new OCSException('User does not have access to specified group', \OCP\API::RESPOND_UNAUTHORISED); } + + throw new OCSException('User does not have access to specified group', \OCP\API::RESPOND_UNAUTHORISED); } /** @@ -136,8 +143,8 @@ class GroupsController extends OCSController { */ public function addGroup($groupid) { // Validate name - if(empty($groupid)){ - \OCP\Util::writeLog('provisioning_api', 'Group name not supplied', \OCP\Util::ERROR); + if(empty($groupid)) { + $this->logger->error('Group name not supplied', ['app' => 'provisioning_api']); throw new OCSException('Invalid group name', 101); } // Check if it exists @@ -179,6 +186,7 @@ class GroupsController extends OCSController { throw new OCSException('Group does not exist', 101); } + /** @var IUser[] $subadmins */ $subadmins = $this->groupManager->getSubAdmin()->getGroupsSubAdmins($targetGroup); // New class returns IUser[] so convert back $uids = []; diff --git a/apps/provisioning_api/lib/Middleware/ProvisioningApiMiddleware.php b/apps/provisioning_api/lib/Middleware/ProvisioningApiMiddleware.php index d9afe59602..e21f9b2287 100644 --- a/apps/provisioning_api/lib/Middleware/ProvisioningApiMiddleware.php +++ b/apps/provisioning_api/lib/Middleware/ProvisioningApiMiddleware.php @@ -3,6 +3,7 @@ namespace OCA\Provisioning_API\Middleware; use OCA\Provisioning_API\Middleware\Exceptions\NotSubAdminException; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http\Response; use OCP\AppFramework\Middleware; use OCP\AppFramework\OCS\OCSException; @@ -36,7 +37,7 @@ class ProvisioningApiMiddleware extends Middleware { } /** - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * * @throws NotSubAdminException @@ -48,7 +49,7 @@ class ProvisioningApiMiddleware extends Middleware { } /** - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * @param \Exception $exception * @throws \Exception @@ -61,4 +62,4 @@ class ProvisioningApiMiddleware extends Middleware { throw $exception; } -} \ No newline at end of file +} diff --git a/apps/provisioning_api/tests/Controller/GroupsControllerTest.php b/apps/provisioning_api/tests/Controller/GroupsControllerTest.php index 25059e8542..344f1fe635 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 { @@ -37,6 +38,7 @@ class GroupsControllerTest extends \Test\TestCase { protected $userSession; /** @var \OC\SubAdmin|\PHPUnit_Framework_MockObject_MockObject */ protected $subAdminManager; + /** @var GroupsController */ protected $api; @@ -60,11 +62,15 @@ class GroupsControllerTest extends \Test\TestCase { $request = $this->getMockBuilder('OCP\IRequest') ->disableOriginalConstructor() ->getMock(); + + $logger = $this->createMock(ILogger::class); + $this->api = new GroupsController( 'provisioning_api', $request, $this->groupManager, - $this->userSession + $this->userSession, + $logger ); } diff --git a/apps/provisioning_api/tests/Controller/UsersControllerTest.php b/apps/provisioning_api/tests/Controller/UsersControllerTest.php index c712cd7485..19b5fa65e9 100644 --- a/apps/provisioning_api/tests/Controller/UsersControllerTest.php +++ b/apps/provisioning_api/tests/Controller/UsersControllerTest.php @@ -1128,7 +1128,7 @@ class UsersControllerTest extends TestCase { } public function testEditUserAdminUserSelfEditChangeValidQuota() { - $loggedInUser = $this->getMockBuilder('\OCP\IUser')->disableOriginalConstructor()->getMock();; + $loggedInUser = $this->getMockBuilder('\OCP\IUser')->disableOriginalConstructor()->getMock(); $loggedInUser ->expects($this->any()) ->method('getUID') diff --git a/apps/sharebymail/l10n/es_MX.js b/apps/sharebymail/l10n/es_MX.js index ec45bc108b..9dc5ee4b55 100644 --- a/apps/sharebymail/l10n/es_MX.js +++ b/apps/sharebymail/l10n/es_MX.js @@ -21,7 +21,7 @@ OC.L10N.register( "Failed to send share by email" : "Se presentó una falla al enviar el elemento compartido por correo electrónico", "%s shared »%s« with you" : "%s ha compartido »%s« contigo", "%s shared »%s« with you." : "%s ha compartido »%s« contigo", - "Click the button below to open it." : "Has click en el botón de abajo para abrirlo.", + "Click the button below to open it." : "Haz click en el botón de abajo para abrirlo.", "Open »%s«" : "Abrir »%s«", "%s via %s" : "%s vía %s", "Password to access »%s« shared to you by %s" : "Contraseña para acceder »%s« compartido contigo por %s ", diff --git a/apps/sharebymail/l10n/es_MX.json b/apps/sharebymail/l10n/es_MX.json index 49be6e871e..3cc7b9a489 100644 --- a/apps/sharebymail/l10n/es_MX.json +++ b/apps/sharebymail/l10n/es_MX.json @@ -19,7 +19,7 @@ "Failed to send share by email" : "Se presentó una falla al enviar el elemento compartido por correo electrónico", "%s shared »%s« with you" : "%s ha compartido »%s« contigo", "%s shared »%s« with you." : "%s ha compartido »%s« contigo", - "Click the button below to open it." : "Has click en el botón de abajo para abrirlo.", + "Click the button below to open it." : "Haz click en el botón de abajo para abrirlo.", "Open »%s«" : "Abrir »%s«", "%s via %s" : "%s vía %s", "Password to access »%s« shared to you by %s" : "Contraseña para acceder »%s« compartido contigo por %s ", diff --git a/apps/sharebymail/l10n/sq.js b/apps/sharebymail/l10n/sq.js new file mode 100644 index 0000000000..2d30b819d7 --- /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,

%s shared %s with you on behalf of %s.

" : "Çkemi,

%s ndau %s me ju në emër të %s.

", + "Hey there,

%s shared %s with you.

" : "Çkemi,

%s ndau %s me ju.

" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/sharebymail/l10n/sq.json b/apps/sharebymail/l10n/sq.json new file mode 100644 index 0000000000..1027fe6a67 --- /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,

%s shared %s with you on behalf of %s.

" : "Çkemi,

%s ndau %s me ju në emër të %s.

", + "Hey there,

%s shared %s with you.

" : "Çkemi,

%s ndau %s me ju.

" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/sharebymail/l10n/zh_CN.js b/apps/sharebymail/l10n/zh_CN.js index 20aaf8b0bc..97afec6687 100644 --- a/apps/sharebymail/l10n/zh_CN.js +++ b/apps/sharebymail/l10n/zh_CN.js @@ -30,6 +30,7 @@ OC.L10N.register( "Password to access »%s«" : "访问 »%s« 的密码", "It is protected with the following password: %s" : "已被已下密码保护:%s", "Password to access »%s« shared with %s" : "使用密码访问»%s«与%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." : "您与%s共享»%s«已发送给收件人。由于%s管理员定义的安全策略, 每个共享都需要受密码保护, 并且不允许直接向收件人发送密码。因此, 您需要将密码手动转发给收件人。", "This is the password: %s" : "这是密码: %s", "You can choose a different password at any time in the share dialog." : "您可以随时在共享对话框中选择不同的密码。", "Could not find share" : "没有发现共享", diff --git a/apps/sharebymail/l10n/zh_CN.json b/apps/sharebymail/l10n/zh_CN.json index 756da2326a..339edbcd09 100644 --- a/apps/sharebymail/l10n/zh_CN.json +++ b/apps/sharebymail/l10n/zh_CN.json @@ -28,6 +28,7 @@ "Password to access »%s«" : "访问 »%s« 的密码", "It is protected with the following password: %s" : "已被已下密码保护:%s", "Password to access »%s« shared with %s" : "使用密码访问»%s«与%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." : "您与%s共享»%s«已发送给收件人。由于%s管理员定义的安全策略, 每个共享都需要受密码保护, 并且不允许直接向收件人发送密码。因此, 您需要将密码手动转发给收件人。", "This is the password: %s" : "这是密码: %s", "You can choose a different password at any time in the share dialog." : "您可以随时在共享对话框中选择不同的密码。", "Could not find share" : "没有发现共享", diff --git a/apps/sharebymail/lib/ShareByMailProvider.php b/apps/sharebymail/lib/ShareByMailProvider.php index f4db83ea3c..32fa51d94a 100644 --- a/apps/sharebymail/lib/ShareByMailProvider.php +++ b/apps/sharebymail/lib/ShareByMailProvider.php @@ -24,6 +24,7 @@ namespace OCA\ShareByMail; use OC\CapabilitiesManager; use OC\HintException; use OC\Share20\Exception\InvalidShare; +use OC\User\NoUserException; use OCA\ShareByMail\Settings\SettingsManager; use OCP\Activity\IManager; use OCP\DB\QueryBuilder\IQueryBuilder; @@ -541,8 +542,7 @@ class ShareByMailProvider implements IShareProvider { * @return string */ protected function generateToken($size = 15) { - $token = $this->secureRandom->generate( - $size, ISecureRandom::CHAR_LOWER . ISecureRandom::CHAR_UPPER . ISecureRandom::CHAR_DIGITS); + $token = $this->secureRandom->generate($size, ISecureRandom::CHAR_HUMAN_READABLE); return $token; } @@ -923,7 +923,7 @@ class ShareByMailProvider implements IShareProvider { private function getNode($userId, $id) { try { $userFolder = $this->rootFolder->getUserFolder($userId); - } catch (NotFoundException $e) { + } catch (NoUserException $e) { throw new InvalidShare(); } diff --git a/apps/systemtags/l10n/el.js b/apps/systemtags/l10n/el.js index 5b94fe8a10..73ea875397 100644 --- a/apps/systemtags/l10n/el.js +++ b/apps/systemtags/l10n/el.js @@ -42,6 +42,8 @@ OC.L10N.register( "%s (invisible)" : "%s (αόρατο)", "System tags for a file have been modified" : "Οι ετικέτες συστήματος για ένα αρχείο έχουν τροποποιηθεί", "Collaborative tags" : "Ετικέτες συνεργασίας", + "Create and edit collaborative tags. These tags affect all users." : "Δημιουργήστε και διορθώστε συνεργατικές ετικέτες. Αυτές οι ετικέτες επηρεάζουν όλους τους χρήστες.", + "Select tag …" : "Επιλογή ετικέτας ...", "Name" : "Όνομα", "Delete" : "Διαγραφή", "Public" : "Δημόσιο", diff --git a/apps/systemtags/l10n/el.json b/apps/systemtags/l10n/el.json index 011b862da0..e9c61b1602 100644 --- a/apps/systemtags/l10n/el.json +++ b/apps/systemtags/l10n/el.json @@ -40,6 +40,8 @@ "%s (invisible)" : "%s (αόρατο)", "System tags for a file have been modified" : "Οι ετικέτες συστήματος για ένα αρχείο έχουν τροποποιηθεί", "Collaborative tags" : "Ετικέτες συνεργασίας", + "Create and edit collaborative tags. These tags affect all users." : "Δημιουργήστε και διορθώστε συνεργατικές ετικέτες. Αυτές οι ετικέτες επηρεάζουν όλους τους χρήστες.", + "Select tag …" : "Επιλογή ετικέτας ...", "Name" : "Όνομα", "Delete" : "Διαγραφή", "Public" : "Δημόσιο", diff --git a/apps/systemtags/l10n/lv.js b/apps/systemtags/l10n/lv.js index c18aca68c8..116f7a366e 100644 --- a/apps/systemtags/l10n/lv.js +++ b/apps/systemtags/l10n/lv.js @@ -28,13 +28,22 @@ OC.L10N.register( "{actor} deleted system tag {systemtag}" : "{actor} izdzēsa sistēmas atzīmi {systemtag}", "You updated system tag %2$s to %1$s" : "Tu atjaunoji sistēmas atzīmi %2$s uz %1$s", "You updated system tag {oldsystemtag} to {newsystemtag}" : "Jūs atjaunināt sistēmas atzīmi {oldsystemtag} uz {newsystemtag}", + "%1$s updated system tag %3$s to %2$s" : "%1$spārmainija sistēmas atzīmi %3$s uz %2$s", + "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} atjaunināja sistēmas atzīmi {oldsystemtag} uz {newsystemtag}", "You added system tag %2$s to %1$s" : "Tu pievienoji sistēmas atzīmi %2$s uz %1$s", + "You added system tag {systemtag} to {file}" : "Tu pievienoji sistēmas atzīmi {systemtag} failam {file}", + "%1$s added system tag %3$s to %2$s" : "%1$spievienoja sistēmas atzīmi %3$s uz %2$s", "{actor} added system tag {systemtag} to {file}" : "{actor} added system tag {systemtag} to {file}", "You removed system tag %2$s from %1$s" : "Tu noņēmi sistēmas atzīmi %2$s no %1$s", "You removed system tag {systemtag} from {file}" : "TU noņēmi sistēmas atzīmi {systemtag} no {file}", + "%1$s removed system tag %3$s from %2$s" : "%1$s noņēma sistēmas atzīmi %3$s no %2$s", + "{actor} removed system tag {systemtag} from {file}" : "{actor} noņēma sistēmas atzīmi {systemtag} no {file}", "%s (restricted)" : "%s (ierobežots)", "%s (invisible)" : "%s (neredzams)", + "System tags for a file have been modified" : "Sistēmas atzīmes failam tikušas mainītas", "Collaborative tags" : "Sadarbības atzīmes", + "Create and edit collaborative tags. These tags affect all users." : "Izveido un rediģē sadarbības atzīmes. Šīs atzīmes ietekmē visus lietotājus.", + "Select tag …" : "Izvēlies atzīmi...", "Name" : "Nosaukums", "Delete" : "Dzēst", "Public" : "Publisks", diff --git a/apps/systemtags/l10n/lv.json b/apps/systemtags/l10n/lv.json index f73c14c6e2..7359422ea9 100644 --- a/apps/systemtags/l10n/lv.json +++ b/apps/systemtags/l10n/lv.json @@ -26,13 +26,22 @@ "{actor} deleted system tag {systemtag}" : "{actor} izdzēsa sistēmas atzīmi {systemtag}", "You updated system tag %2$s to %1$s" : "Tu atjaunoji sistēmas atzīmi %2$s uz %1$s", "You updated system tag {oldsystemtag} to {newsystemtag}" : "Jūs atjaunināt sistēmas atzīmi {oldsystemtag} uz {newsystemtag}", + "%1$s updated system tag %3$s to %2$s" : "%1$spārmainija sistēmas atzīmi %3$s uz %2$s", + "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} atjaunināja sistēmas atzīmi {oldsystemtag} uz {newsystemtag}", "You added system tag %2$s to %1$s" : "Tu pievienoji sistēmas atzīmi %2$s uz %1$s", + "You added system tag {systemtag} to {file}" : "Tu pievienoji sistēmas atzīmi {systemtag} failam {file}", + "%1$s added system tag %3$s to %2$s" : "%1$spievienoja sistēmas atzīmi %3$s uz %2$s", "{actor} added system tag {systemtag} to {file}" : "{actor} added system tag {systemtag} to {file}", "You removed system tag %2$s from %1$s" : "Tu noņēmi sistēmas atzīmi %2$s no %1$s", "You removed system tag {systemtag} from {file}" : "TU noņēmi sistēmas atzīmi {systemtag} no {file}", + "%1$s removed system tag %3$s from %2$s" : "%1$s noņēma sistēmas atzīmi %3$s no %2$s", + "{actor} removed system tag {systemtag} from {file}" : "{actor} noņēma sistēmas atzīmi {systemtag} no {file}", "%s (restricted)" : "%s (ierobežots)", "%s (invisible)" : "%s (neredzams)", + "System tags for a file have been modified" : "Sistēmas atzīmes failam tikušas mainītas", "Collaborative tags" : "Sadarbības atzīmes", + "Create and edit collaborative tags. These tags affect all users." : "Izveido un rediģē sadarbības atzīmes. Šīs atzīmes ietekmē visus lietotājus.", + "Select tag …" : "Izvēlies atzīmi...", "Name" : "Nosaukums", "Delete" : "Dzēst", "Public" : "Publisks", diff --git a/apps/systemtags/l10n/sq.js b/apps/systemtags/l10n/sq.js index 944cc5a9c0..775fb16dc7 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,16 +29,27 @@ 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)", "System tags for a file have been modified" : "U ndryshyan etiketa sistemipë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", + "Restricted" : "I/E kufizuar", "Invisible" : "I padukshëm", + "Reset" : "Rivendos", "No files in here" : "S’ka kartela këtu", "No entries found in this folder" : "S’u gjetën zëra në këtë dosje", "Size" : "Madhësi", diff --git a/apps/systemtags/l10n/sq.json b/apps/systemtags/l10n/sq.json index a661731273..e4cbc8ddcd 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,16 +27,27 @@ "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)", "System tags for a file have been modified" : "U ndryshyan etiketa sistemipë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", + "Restricted" : "I/E kufizuar", "Invisible" : "I padukshëm", + "Reset" : "Rivendos", "No files in here" : "S’ka kartela këtu", "No entries found in this folder" : "S’u gjetën zëra në këtë dosje", "Size" : "Madhësi", diff --git a/apps/testing/appinfo/app.php b/apps/testing/appinfo/app.php index 402889f267..5dce74bf78 100644 --- a/apps/testing/appinfo/app.php +++ b/apps/testing/appinfo/app.php @@ -19,5 +19,5 @@ * */ -$app = new \OCA\Testing\Application(); +$app = new \OCA\Testing\AppInfo\Application(); diff --git a/apps/testing/appinfo/routes.php b/apps/testing/appinfo/routes.php index d45cfe00ec..3e5fda4fc1 100644 --- a/apps/testing/appinfo/routes.php +++ b/apps/testing/appinfo/routes.php @@ -20,63 +20,63 @@ * */ -namespace OCA\Testing\AppInfo; +return [ + 'routes' => [ + [ + 'name' => 'RateLimitTest#userAndAnonProtected', + 'url' => '/userAndAnonProtected', + 'verb' => 'GET', + ], + [ + 'name' => 'RateLimitTest#onlyAnonProtected', + 'url' => '/anonProtected', + 'verb' => 'GET', + ], + ], -use OCA\Testing\Config; -use OCA\Testing\Locking\Provisioning; -use OCP\API; -use OCP\AppFramework\App; - -$config = new Config( - \OC::$server->getConfig(), - \OC::$server->getRequest() -); - -$app = new App('testing'); -$app->registerRoutes( - $this, - [ - 'routes' => [ - [ - 'name' => 'RateLimitTest#userAndAnonProtected', - 'url' => '/userAndAnonProtected', - 'verb' => 'GET', - ], - [ - 'name' => 'RateLimitTest#onlyAnonProtected', - 'url' => '/anonProtected', - 'verb' => 'GET', - ], - ] - ] -); - -API::register( - 'post', - '/apps/testing/api/v1/app/{appid}/{configkey}', - [$config, 'setAppValue'], - 'testing', - API::ADMIN_AUTH -); - -API::register( - 'delete', - '/apps/testing/api/v1/app/{appid}/{configkey}', - [$config, 'deleteAppValue'], - 'testing', - API::ADMIN_AUTH -); - -$locking = new Provisioning( - \OC::$server->getLockingProvider(), - \OC::$server->getDatabaseConnection(), - \OC::$server->getConfig(), - \OC::$server->getRequest() -); -API::register('get', '/apps/testing/api/v1/lockprovisioning', [$locking, 'isLockingEnabled'], 'files_lockprovisioning', API::ADMIN_AUTH); -API::register('get', '/apps/testing/api/v1/lockprovisioning/{type}/{user}', [$locking, 'isLocked'], 'files_lockprovisioning', API::ADMIN_AUTH); -API::register('post', '/apps/testing/api/v1/lockprovisioning/{type}/{user}', [$locking, 'acquireLock'], 'files_lockprovisioning', API::ADMIN_AUTH); -API::register('put', '/apps/testing/api/v1/lockprovisioning/{type}/{user}', [$locking, 'changeLock'], 'files_lockprovisioning', API::ADMIN_AUTH); -API::register('delete', '/apps/testing/api/v1/lockprovisioning/{type}/{user}', [$locking, 'releaseLock'], 'files_lockprovisioning', API::ADMIN_AUTH); -API::register('delete', '/apps/testing/api/v1/lockprovisioning/{type}', [$locking, 'releaseAll'], 'files_lockprovisioning', API::ADMIN_AUTH); -API::register('delete', '/apps/testing/api/v1/lockprovisioning', [$locking, 'releaseAll'], 'files_lockprovisioning', API::ADMIN_AUTH); + 'ocs' => [ + [ + 'name' => 'Config#setAppValue', + 'url' => '/api/v1/app/{appid}/{configkey}', + 'verb' => 'POST', + ], + [ + 'name' => 'Config#deleteAppValue', + 'url' => '/api/v1/app/{appid}/{configkey}', + 'verb' => 'DELETE', + ], + [ + 'name' => 'Locking#isLockingEnabled', + 'url' => '/api/v1/lockprovisioning', + 'verb' => 'GET', + ], + [ + 'name' => 'Locking#isLocked', + 'url' => '/api/v1/lockprovisioning/{type}/{user}', + 'verb' => 'GET', + ], + [ + 'name' => 'Locking#acquireLock', + 'url' => '/api/v1/lockprovisioning/{type}/{user}', + 'verb' => 'POST', + ], + [ + 'name' => 'Locking#changeLock', + 'url' => '/api/v1/lockprovisioning/{type}/{user}', + 'verb' => 'PUT', + ], + [ + 'name' => 'Locking#releaseLock', + 'url' => '/api/v1/lockprovisioning/{type}/{user}', + 'verb' => 'DELETE', + ], + [ + 'name' => 'Locking#releaseAll', + 'url' => '/api/v1/lockprovisioning/{type}', + 'verb' => 'DELETE', + 'defaults' => [ + 'type' => null + ] + ], + ], +]; diff --git a/apps/testing/lib/Application.php b/apps/testing/lib/AppInfo/Application.php similarity index 97% rename from apps/testing/lib/Application.php rename to apps/testing/lib/AppInfo/Application.php index 8f42d0442d..9d2b100e8b 100644 --- a/apps/testing/lib/Application.php +++ b/apps/testing/lib/AppInfo/Application.php @@ -19,7 +19,7 @@ * */ -namespace OCA\Testing; +namespace OCA\Testing\AppInfo; use OCP\AppFramework\App; use OCA\Testing\AlternativeHomeUserBackend; diff --git a/apps/testing/lib/Config.php b/apps/testing/lib/Controller/ConfigController.php similarity index 55% rename from apps/testing/lib/Config.php rename to apps/testing/lib/Controller/ConfigController.php index 6cdd28d4b3..7b3e73ab17 100644 --- a/apps/testing/lib/Config.php +++ b/apps/testing/lib/Controller/ConfigController.php @@ -20,52 +20,48 @@ * */ -namespace OCA\Testing; +namespace OCA\Testing\Controller; +use OCP\AppFramework\Http\DataResponse; +use OCP\AppFramework\OCSController; use OCP\IConfig; use OCP\IRequest; -class Config { +class ConfigController extends OCSController { /** @var IConfig */ private $config; - /** @var IRequest */ - private $request; - /** - * @param IConfig $config + * @param string $appName * @param IRequest $request + * @param IConfig $config */ - public function __construct(IConfig $config, IRequest $request) { + public function __construct($appName, + IRequest $request, + IConfig $config) { + parent::__construct($appName, $request); $this->config = $config; - $this->request = $request; } /** - * @param array $parameters - * @return \OC_OCS_Result + * @param string $appid + * @param string $configkey + * @param string $value + * @return DataResponse */ - public function setAppValue($parameters) { - $app = $parameters['appid']; - $configKey = $parameters['configkey']; - - $value = $this->request->getParam('value'); - $this->config->setAppValue($app, $configKey, $value); - - return new \OC_OCS_Result(); + public function setAppValue($appid, $configkey, $value) { + $this->config->setAppValue($appid, $configkey, $value); + return new DataResponse(); } /** - * @param array $parameters - * @return \OC_OCS_Result + * @param string $appid + * @param string $configkey + * @return DataResponse */ - public function deleteAppValue($parameters) { - $app = $parameters['appid']; - $configKey = $parameters['configkey']; - - $this->config->deleteAppValue($app, $configKey); - - return new \OC_OCS_Result(); + public function deleteAppValue($appid, $configkey) { + $this->config->deleteAppValue($appid, $configkey); + return new DataResponse(); } } diff --git a/apps/testing/lib/Controller/LockingController.php b/apps/testing/lib/Controller/LockingController.php new file mode 100644 index 0000000000..6056d9d5d7 --- /dev/null +++ b/apps/testing/lib/Controller/LockingController.php @@ -0,0 +1,246 @@ + + * + * @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 + * + */ + +namespace OCA\Testing\Controller; + +use OC\Lock\DBLockingProvider; +use OC\User\NoUserException; +use OCA\Testing\Locking\FakeDBLockingProvider; +use OCP\AppFramework\Http; +use OCP\AppFramework\Http\DataResponse; +use OCP\AppFramework\OCS\OCSException; +use OCP\AppFramework\OCSController; +use OCP\Files\IRootFolder; +use OCP\Files\NotFoundException; +use OCP\IConfig; +use OCP\IDBConnection; +use OCP\IRequest; +use OCP\Lock\ILockingProvider; +use OCP\Lock\LockedException; + +class LockingController extends OCSController { + + /** @var ILockingProvider */ + protected $lockingProvider; + + /** @var FakeDBLockingProvider */ + protected $fakeDBLockingProvider; + + /** @var IDBConnection */ + protected $connection; + + /** @var IConfig */ + protected $config; + + /** @var IRootFolder */ + protected $rootFolder; + + /** + * @param string $appName + * @param IRequest $request + * @param ILockingProvider $lockingProvider + * @param FakeDBLockingProvider $fakeDBLockingProvider + * @param IDBConnection $connection + * @param IConfig $config + * @param IRootFolder $rootFolder + */ + public function __construct($appName, + IRequest $request, + ILockingProvider $lockingProvider, + FakeDBLockingProvider $fakeDBLockingProvider, + IDBConnection $connection, + IConfig $config, + IRootFolder $rootFolder) { + parent::__construct($appName, $request); + + $this->lockingProvider = $lockingProvider; + $this->fakeDBLockingProvider = $fakeDBLockingProvider; + $this->connection = $connection; + $this->config = $config; + $this->rootFolder = $rootFolder; + } + + /** + * @return ILockingProvider + * @throws \RuntimeException + */ + protected function getLockingProvider() { + if ($this->lockingProvider instanceof DBLockingProvider) { + return $this->fakeDBLockingProvider; + } + throw new \RuntimeException('Lock provisioning is only possible using the DBLockingProvider'); + } + + /** + * @param string $user + * @param string $path + * @return string + * @throws NotFoundException + */ + protected function getPath($user, $path) { + $node = $this->rootFolder->getUserFolder($user)->get($path); + return 'files/' . md5($node->getStorage()->getId() . '::' . trim($node->getInternalPath(), '/')); + } + + /** + * @return DataResponse + * @throws OCSException + */ + public function isLockingEnabled() { + try { + $this->getLockingProvider(); + return new DataResponse(); + } catch (\RuntimeException $e) { + throw new OCSException($e->getMessage(), Http::STATUS_NOT_IMPLEMENTED, $e); + } + } + + /** + * @param int $type + * @param string $user + * @param string $path + * @return DataResponse + * @throws OCSException + */ + public function acquireLock($type, $user, $path) { + try { + $path = $this->getPath($user, $path); + } catch (NoUserException $e) { + throw new OCSException('User not found', Http::STATUS_NOT_FOUND, $e); + } catch (NotFoundException $e) { + throw new OCSException('Path not found', Http::STATUS_NOT_FOUND, $e); + } + + $lockingProvider = $this->getLockingProvider(); + + try { + $lockingProvider->acquireLock($path, $type); + $this->config->setAppValue('testing', 'locking_' . $path, $type); + return new DataResponse(); + } catch (LockedException $e) { + throw new OCSException('', Http::STATUS_LOCKED, $e); + } + } + + /** + * @param int $type + * @param string $user + * @param string $path + * @return DataResponse + * @throws OCSException + */ + public function changeLock($type, $user, $path) { + try { + $path = $this->getPath($user, $path); + } catch (NoUserException $e) { + throw new OCSException('User not found', Http::STATUS_NOT_FOUND, $e); + } catch (NotFoundException $e) { + throw new OCSException('Path not found', Http::STATUS_NOT_FOUND, $e); + } + + $lockingProvider = $this->getLockingProvider(); + + try { + $lockingProvider->changeLock($path, $type); + $this->config->setAppValue('testing', 'locking_' . $path, $type); + return new DataResponse(); + } catch (LockedException $e) { + throw new OCSException('', Http::STATUS_LOCKED, $e); + } + } + + /** + * @param int $type + * @param string $user + * @param string $path + * @return DataResponse + * @throws OCSException + */ + public function releaseLock($type, $user, $path) { + try { + $path = $this->getPath($user, $path); + } catch (NoUserException $e) { + throw new OCSException('User not found', Http::STATUS_NOT_FOUND, $e); + } catch (NotFoundException $e) { + throw new OCSException('Path not found', Http::STATUS_NOT_FOUND, $e); + } + + $lockingProvider = $this->getLockingProvider(); + + try { + $lockingProvider->releaseLock($path, $type); + $this->config->deleteAppValue('testing', 'locking_' . $path); + return new DataResponse(); + } catch (LockedException $e) { + throw new OCSException('', Http::STATUS_LOCKED, $e); + } + } + + /** + * @param int $type + * @param string $user + * @param string $path + * @return DataResponse + * @throws OCSException + */ + public function isLocked($type, $user, $path) { + try { + $path = $this->getPath($user, $path); + } catch (NoUserException $e) { + throw new OCSException('User not found', Http::STATUS_NOT_FOUND, $e); + } catch (NotFoundException $e) { + throw new OCSException('Path not found', Http::STATUS_NOT_FOUND, $e); + } + + $lockingProvider = $this->getLockingProvider(); + + if ($lockingProvider->isLocked($path, $type)) { + return new DataResponse(); + } + + throw new OCSException('', Http::STATUS_LOCKED); + } + + /** + * @param int $type + * @return DataResponse + */ + public function releaseAll($type = null) { + $lockingProvider = $this->getLockingProvider(); + + foreach ($this->config->getAppKeys('testing') as $lock) { + if (strpos($lock, 'locking_') === 0) { + $path = substr($lock, strlen('locking_')); + + if ($type === ILockingProvider::LOCK_EXCLUSIVE && (int)$this->config->getAppValue('testing', $lock) === ILockingProvider::LOCK_EXCLUSIVE) { + $lockingProvider->releaseLock($path, $this->config->getAppValue('testing', $lock)); + } else if ($type === ILockingProvider::LOCK_SHARED && (int)$this->config->getAppValue('testing', $lock) === ILockingProvider::LOCK_SHARED) { + $lockingProvider->releaseLock($path, $this->config->getAppValue('testing', $lock)); + } else { + $lockingProvider->releaseLock($path, $this->config->getAppValue('testing', $lock)); + } + } + } + + return new DataResponse(); + } +} diff --git a/apps/testing/locking/fakedblockingprovider.php b/apps/testing/lib/Locking/FakeDBLockingProvider.php similarity index 100% rename from apps/testing/locking/fakedblockingprovider.php rename to apps/testing/lib/Locking/FakeDBLockingProvider.php diff --git a/apps/testing/locking/provisioning.php b/apps/testing/locking/provisioning.php deleted file mode 100644 index 7e3256ec60..0000000000 --- a/apps/testing/locking/provisioning.php +++ /dev/null @@ -1,227 +0,0 @@ - - * - * @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 - * - */ - -namespace OCA\Testing\Locking; - -use OC\Lock\DBLockingProvider; -use OC\User\NoUserException; -use OCP\AppFramework\Http; -use OCP\Files\NotFoundException; -use OCP\IConfig; -use OCP\IDBConnection; -use OCP\IRequest; -use OCP\Lock\ILockingProvider; -use OCP\Lock\LockedException; - -class Provisioning { - - /** @var ILockingProvider */ - protected $lockingProvider; - - /** @var IDBConnection */ - protected $connection; - - /** @var IConfig */ - protected $config; - - /** @var IRequest */ - protected $request; - - /** - * @param ILockingProvider $lockingProvider - * @param IDBConnection $connection - * @param IConfig $config - * @param IRequest $request - */ - public function __construct(ILockingProvider $lockingProvider, IDBConnection $connection, IConfig $config, IRequest $request) { - $this->lockingProvider = $lockingProvider; - $this->connection = $connection; - $this->config = $config; - $this->request = $request; - } - - /** - * @return ILockingProvider - */ - protected function getLockingProvider() { - if ($this->lockingProvider instanceof DBLockingProvider) { - return \OC::$server->query('OCA\Testing\Locking\FakeDBLockingProvider'); - } else { - throw new \RuntimeException('Lock provisioning is only possible using the DBLockingProvider'); - } - } - - /** - * @param array $parameters - * @return int - */ - protected function getType($parameters) { - return isset($parameters['type']) ? (int) $parameters['type'] : 0; - } - - /** - * @param array $parameters - * @return int - */ - protected function getPath($parameters) { - $node = \OC::$server->getRootFolder() - ->getUserFolder($parameters['user']) - ->get($this->request->getParam('path')); - return 'files/' . md5($node->getStorage()->getId() . '::' . trim($node->getInternalPath(), '/')); - } - - /** - * @return \OC_OCS_Result - */ - public function isLockingEnabled() { - try { - $this->getLockingProvider(); - return new \OC_OCS_Result(null, 100); - } catch (\RuntimeException $e) { - return new \OC_OCS_Result(null, Http::STATUS_NOT_IMPLEMENTED, $e->getMessage()); - } - } - - /** - * @param array $parameters - * @return \OC_OCS_Result - */ - public function acquireLock(array $parameters) { - try { - $path = $this->getPath($parameters); - } catch (NoUserException $e) { - return new \OC_OCS_Result(null, Http::STATUS_NOT_FOUND, 'User not found'); - } catch (NotFoundException $e) { - return new \OC_OCS_Result(null, Http::STATUS_NOT_FOUND, 'Path not found'); - } - $type = $this->getType($parameters); - - $lockingProvider = $this->getLockingProvider(); - - try { - $lockingProvider->acquireLock($path, $type); - $this->config->setAppValue('testing', 'locking_' . $path, $type); - return new \OC_OCS_Result(null, 100); - } catch (LockedException $e) { - return new \OC_OCS_Result(null, Http::STATUS_LOCKED); - } - } - - /** - * @param array $parameters - * @return \OC_OCS_Result - */ - public function changeLock(array $parameters) { - try { - $path = $this->getPath($parameters); - } catch (NoUserException $e) { - return new \OC_OCS_Result(null, Http::STATUS_NOT_FOUND, 'User not found'); - } catch (NotFoundException $e) { - return new \OC_OCS_Result(null, Http::STATUS_NOT_FOUND, 'Path not found'); - } - $type = $this->getType($parameters); - - $lockingProvider = $this->getLockingProvider(); - - try { - $lockingProvider->changeLock($path, $type); - $this->config->setAppValue('testing', 'locking_' . $path, $type); - return new \OC_OCS_Result(null, 100); - } catch (LockedException $e) { - return new \OC_OCS_Result(null, Http::STATUS_LOCKED); - } - } - - /** - * @param array $parameters - * @return \OC_OCS_Result - */ - public function releaseLock(array $parameters) { - try { - $path = $this->getPath($parameters); - } catch (NoUserException $e) { - return new \OC_OCS_Result(null, Http::STATUS_NOT_FOUND, 'User not found'); - } catch (NotFoundException $e) { - return new \OC_OCS_Result(null, Http::STATUS_NOT_FOUND, 'Path not found'); - } - $type = $this->getType($parameters); - - $lockingProvider = $this->getLockingProvider(); - - try { - $lockingProvider->releaseLock($path, $type); - $this->config->deleteAppValue('testing', 'locking_' . $path); - return new \OC_OCS_Result(null, 100); - } catch (LockedException $e) { - return new \OC_OCS_Result(null, Http::STATUS_LOCKED); - } - } - - /** - * @param array $parameters - * @return \OC_OCS_Result - */ - public function isLocked(array $parameters) { - try { - $path = $this->getPath($parameters); - } catch (NoUserException $e) { - return new \OC_OCS_Result(null, Http::STATUS_NOT_FOUND, 'User not found'); - } catch (NotFoundException $e) { - return new \OC_OCS_Result(null, Http::STATUS_NOT_FOUND, 'Path not found'); - } - $type = $this->getType($parameters); - - $lockingProvider = $this->getLockingProvider(); - - if ($lockingProvider->isLocked($path, $type)) { - return new \OC_OCS_Result(null, 100); - } - - return new \OC_OCS_Result(null, Http::STATUS_LOCKED); - } - - /** - * @param array $parameters - * @return \OC_OCS_Result - */ - public function releaseAll(array $parameters) { - $type = $this->getType($parameters); - - $lockingProvider = $this->getLockingProvider(); - - foreach ($this->config->getAppKeys('testing') as $lock) { - if (strpos($lock, 'locking_') === 0) { - $path = substr($lock, strlen('locking_')); - - if ($type === ILockingProvider::LOCK_EXCLUSIVE && $this->config->getAppValue('testing', $lock) == ILockingProvider::LOCK_EXCLUSIVE) { - $lockingProvider->releaseLock($path, $this->config->getAppValue('testing', $lock)); - } else if ($type === ILockingProvider::LOCK_SHARED && $this->config->getAppValue('testing', $lock) == ILockingProvider::LOCK_SHARED) { - $lockingProvider->releaseLock($path, $this->config->getAppValue('testing', $lock)); - } else { - $lockingProvider->releaseLock($path, $this->config->getAppValue('testing', $lock)); - } - } - } - - return new \OC_OCS_Result(null, 100); - } -} diff --git a/apps/theming/css/theming.scss b/apps/theming/css/theming.scss index 20b84d2a0d..1f18cc068c 100644 --- a/apps/theming/css/theming.scss +++ b/apps/theming/css/theming.scss @@ -20,8 +20,8 @@ filter: invert(1); filter: progid:DXImageTransform.Microsoft.BasicImage(invert='1'); } - #contactsmenu .icon-contacts { - background-image: url('../../../core/img/places/contacts-dark.svg'); + #contactsmenu .icon-contacts svg path { + fill: #000; } #settings .icon-settings-white { background-image: url('../../../core/img/actions/settings-dark.svg'); diff --git a/apps/theming/l10n/ar.js b/apps/theming/l10n/ar.js index d1ac1d3b11..c88b7be872 100644 --- a/apps/theming/l10n/ar.js +++ b/apps/theming/l10n/ar.js @@ -1,6 +1,7 @@ OC.L10N.register( "theming", { + "Loading preview…" : "جار تحميل المعاينة ...", "Saved" : "تم الحفظ", "Admin" : "ادارة", "a safe home for all your data" : "مكان آمن لكل معلوماتك", @@ -12,7 +13,9 @@ OC.L10N.register( "Unsupported image type" : "صيغة الصورة غير مقبولة", "You are already using a custom theme" : "انت تستعمل قالب مخصص", "Theming" : "تخصيص القالب", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "السمات تجعل من الممكن بسهولة تخصيص الشكل والمظهر لنموذجك ودعم العملاء. سيكون هذا مرئيا لجميع المستخدمين.", "Name" : "الاسم", + "Reset to default" : "اعادة تعيين الافتراضيات", "Web address" : "عنوان صفحة أنترنت", "Web address https://…" : "عنوان صفحة أنترنت https://", "Slogan" : "شعار", @@ -21,6 +24,7 @@ OC.L10N.register( "Upload new logo" : "رفع شعار جديد", "Login image" : "صورة الدخول", "Upload new login background" : "تحميل خلفية جديدة للدخول", + "Remove background image" : "إزالة صورة الخلفية", "reset to default" : "إلغاء كل التغييرات", "Log in image" : "صورة الدخول" }, diff --git a/apps/theming/l10n/ar.json b/apps/theming/l10n/ar.json index 25e3a8cd7c..bd7aca3841 100644 --- a/apps/theming/l10n/ar.json +++ b/apps/theming/l10n/ar.json @@ -1,4 +1,5 @@ { "translations": { + "Loading preview…" : "جار تحميل المعاينة ...", "Saved" : "تم الحفظ", "Admin" : "ادارة", "a safe home for all your data" : "مكان آمن لكل معلوماتك", @@ -10,7 +11,9 @@ "Unsupported image type" : "صيغة الصورة غير مقبولة", "You are already using a custom theme" : "انت تستعمل قالب مخصص", "Theming" : "تخصيص القالب", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "السمات تجعل من الممكن بسهولة تخصيص الشكل والمظهر لنموذجك ودعم العملاء. سيكون هذا مرئيا لجميع المستخدمين.", "Name" : "الاسم", + "Reset to default" : "اعادة تعيين الافتراضيات", "Web address" : "عنوان صفحة أنترنت", "Web address https://…" : "عنوان صفحة أنترنت https://", "Slogan" : "شعار", @@ -19,6 +22,7 @@ "Upload new logo" : "رفع شعار جديد", "Login image" : "صورة الدخول", "Upload new login background" : "تحميل خلفية جديدة للدخول", + "Remove background image" : "إزالة صورة الخلفية", "reset to default" : "إلغاء كل التغييرات", "Log in image" : "صورة الدخول" },"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;" diff --git a/apps/theming/l10n/ca.js b/apps/theming/l10n/ca.js new file mode 100644 index 0000000000..ae523acb2b --- /dev/null +++ b/apps/theming/l10n/ca.js @@ -0,0 +1,31 @@ +OC.L10N.register( + "theming", + { + "Loading preview…" : "Carregant vista prèvia ...", + "Saved" : "Guardat", + "Admin" : "Admin", + "a safe home for all your data" : "un lloc segur per a les teves dades", + "The given name is too long" : "El nom introduït és massa llarg", + "The given web address is too long" : "L'adreça web proporcionada és massa llarga", + "The given slogan is too long" : "El lema indicat és massa llarg", + "The given color is invalid" : "El color donat no és vàlid", + "No file uploaded" : "No s'ha carregat cap fitxer", + "Unsupported image type" : "Tipus d'imatge no compatible", + "You are already using a custom theme" : "Ja esteu utilitzant un tema personalitzat", + "Theming" : "Adaptació de temes", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "L'adaptació de temes permet personalitzar fàcilment l'aspecte de la vostra instància i els clients compatibles. Això serà visible per a tots els usuaris.", + "Name" : "Nom", + "Reset to default" : "Restablir al valor predeterminat", + "Web address" : "Adreça web", + "Web address https://…" : "Adreça del servidor https://…", + "Slogan" : "Lema", + "Color" : "Color", + "Logo" : "Logotip", + "Upload new logo" : "Penjar un nou logotip", + "Login image" : "Login logo", + "Upload new login background" : "Carregar nou fons d'inici de sessió", + "Remove background image" : "Elimina la imatge de fons", + "reset to default" : "restablir a configuració predeterminada", + "Log in image" : "Imatge d'entrada" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/theming/l10n/ca.json b/apps/theming/l10n/ca.json new file mode 100644 index 0000000000..794bf8ba05 --- /dev/null +++ b/apps/theming/l10n/ca.json @@ -0,0 +1,29 @@ +{ "translations": { + "Loading preview…" : "Carregant vista prèvia ...", + "Saved" : "Guardat", + "Admin" : "Admin", + "a safe home for all your data" : "un lloc segur per a les teves dades", + "The given name is too long" : "El nom introduït és massa llarg", + "The given web address is too long" : "L'adreça web proporcionada és massa llarga", + "The given slogan is too long" : "El lema indicat és massa llarg", + "The given color is invalid" : "El color donat no és vàlid", + "No file uploaded" : "No s'ha carregat cap fitxer", + "Unsupported image type" : "Tipus d'imatge no compatible", + "You are already using a custom theme" : "Ja esteu utilitzant un tema personalitzat", + "Theming" : "Adaptació de temes", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "L'adaptació de temes permet personalitzar fàcilment l'aspecte de la vostra instància i els clients compatibles. Això serà visible per a tots els usuaris.", + "Name" : "Nom", + "Reset to default" : "Restablir al valor predeterminat", + "Web address" : "Adreça web", + "Web address https://…" : "Adreça del servidor https://…", + "Slogan" : "Lema", + "Color" : "Color", + "Logo" : "Logotip", + "Upload new logo" : "Penjar un nou logotip", + "Login image" : "Login logo", + "Upload new login background" : "Carregar nou fons d'inici de sessió", + "Remove background image" : "Elimina la imatge de fons", + "reset to default" : "restablir a configuració predeterminada", + "Log in image" : "Imatge d'entrada" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/theming/l10n/ja.js b/apps/theming/l10n/ja.js new file mode 100644 index 0000000000..7cf3019f55 --- /dev/null +++ b/apps/theming/l10n/ja.js @@ -0,0 +1,31 @@ +OC.L10N.register( + "theming", + { + "Loading preview…" : "プレビューを読込み中...", + "Saved" : "保存済み", + "Admin" : "管理者", + "a safe home for all your data" : "あなたのデータを安全に保管するプラットフォーム", + "The given name is too long" : "名前が長すぎます", + "The given web address is too long" : "Webアドレスが長すぎます", + "The given slogan is too long" : "スローガンが長すぎます", + "The given color is invalid" : "無効な色です", + "No file uploaded" : "ファイルがアップロードされていません", + "Unsupported image type" : "サポートされていない画像形式です", + "You are already using a custom theme" : "あなたは既にカスタムテーマを利用しています", + "Theming" : "テーマ", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "テーマではあなたのインスタンスとサポートされたクライアントのルック&フィールを簡単に変更できます。この変更は全てのユーザが対象となります。", + "Name" : "名前", + "Reset to default" : "デフォルトに戻す", + "Web address" : "Webアドレス", + "Web address https://…" : "Webアドレス https://...", + "Slogan" : "スローガン", + "Color" : "色", + "Logo" : "ロゴ", + "Upload new logo" : "新しいロゴをアップロード", + "Login image" : "ログイン画像", + "Upload new login background" : "新しいログイン背景画像をアップロード", + "Remove background image" : "背景画像を削除", + "reset to default" : "デフォルトに戻す", + "Log in image" : "ログイン画像" +}, +"nplurals=1; plural=0;"); diff --git a/apps/theming/l10n/ja.json b/apps/theming/l10n/ja.json new file mode 100644 index 0000000000..69c37a1750 --- /dev/null +++ b/apps/theming/l10n/ja.json @@ -0,0 +1,29 @@ +{ "translations": { + "Loading preview…" : "プレビューを読込み中...", + "Saved" : "保存済み", + "Admin" : "管理者", + "a safe home for all your data" : "あなたのデータを安全に保管するプラットフォーム", + "The given name is too long" : "名前が長すぎます", + "The given web address is too long" : "Webアドレスが長すぎます", + "The given slogan is too long" : "スローガンが長すぎます", + "The given color is invalid" : "無効な色です", + "No file uploaded" : "ファイルがアップロードされていません", + "Unsupported image type" : "サポートされていない画像形式です", + "You are already using a custom theme" : "あなたは既にカスタムテーマを利用しています", + "Theming" : "テーマ", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "テーマではあなたのインスタンスとサポートされたクライアントのルック&フィールを簡単に変更できます。この変更は全てのユーザが対象となります。", + "Name" : "名前", + "Reset to default" : "デフォルトに戻す", + "Web address" : "Webアドレス", + "Web address https://…" : "Webアドレス https://...", + "Slogan" : "スローガン", + "Color" : "色", + "Logo" : "ロゴ", + "Upload new logo" : "新しいロゴをアップロード", + "Login image" : "ログイン画像", + "Upload new login background" : "新しいログイン背景画像をアップロード", + "Remove background image" : "背景画像を削除", + "reset to default" : "デフォルトに戻す", + "Log in image" : "ログイン画像" +},"pluralForm" :"nplurals=1; plural=0;" +} \ No newline at end of file diff --git a/apps/theming/l10n/lv.js b/apps/theming/l10n/lv.js new file mode 100644 index 0000000000..e579c6338f --- /dev/null +++ b/apps/theming/l10n/lv.js @@ -0,0 +1,31 @@ +OC.L10N.register( + "theming", + { + "Loading preview…" : "Ielādē priekšskatījumu...", + "Saved" : "Saglabāts", + "Admin" : "Admin", + "a safe home for all your data" : "droša vieta visiem jūsu datiem", + "The given name is too long" : "Norādītais nosaukums ir pārāk garš", + "The given web address is too long" : "Norādītā adrese ir pārāk gara", + "The given slogan is too long" : "Norādītais teiciens ir pārāk garšs", + "The given color is invalid" : "Norādītā krāsa ir nederīga", + "No file uploaded" : "Nav augšupielādēta faila", + "Unsupported image type" : "Neatbalstīts attēla tips", + "You are already using a custom theme" : "Tu jau izmanto pielāgotu tēmu", + "Theming" : "Dizains", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Tēmošana padara iespējamu viegli pielāgot savas instances un atbalstošo klientaplikāciju izskatu un sajūtu. Tas būs redzams visiem lietotājiem.", + "Name" : "Nosaukums", + "Reset to default" : "Atiestatīt", + "Web address" : "Tīmekļa adrese", + "Web address https://…" : "Servera adrese https://…", + "Slogan" : "Sauklis", + "Color" : "Krāsa", + "Logo" : "Logo", + "Upload new logo" : "Augšupielādēt jaunu logo", + "Login image" : "Pieslēgšanās fona attēls", + "Upload new login background" : "Augšupielādēt jaunu pieslēgšanās fona attēlu", + "Remove background image" : "Noņemt fona attēlu", + "reset to default" : "Atiestatīt", + "Log in image" : "Pieslēgšanas fona attēls" +}, +"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"); diff --git a/apps/theming/l10n/lv.json b/apps/theming/l10n/lv.json new file mode 100644 index 0000000000..6c0bbaa90a --- /dev/null +++ b/apps/theming/l10n/lv.json @@ -0,0 +1,29 @@ +{ "translations": { + "Loading preview…" : "Ielādē priekšskatījumu...", + "Saved" : "Saglabāts", + "Admin" : "Admin", + "a safe home for all your data" : "droša vieta visiem jūsu datiem", + "The given name is too long" : "Norādītais nosaukums ir pārāk garš", + "The given web address is too long" : "Norādītā adrese ir pārāk gara", + "The given slogan is too long" : "Norādītais teiciens ir pārāk garšs", + "The given color is invalid" : "Norādītā krāsa ir nederīga", + "No file uploaded" : "Nav augšupielādēta faila", + "Unsupported image type" : "Neatbalstīts attēla tips", + "You are already using a custom theme" : "Tu jau izmanto pielāgotu tēmu", + "Theming" : "Dizains", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Tēmošana padara iespējamu viegli pielāgot savas instances un atbalstošo klientaplikāciju izskatu un sajūtu. Tas būs redzams visiem lietotājiem.", + "Name" : "Nosaukums", + "Reset to default" : "Atiestatīt", + "Web address" : "Tīmekļa adrese", + "Web address https://…" : "Servera adrese https://…", + "Slogan" : "Sauklis", + "Color" : "Krāsa", + "Logo" : "Logo", + "Upload new logo" : "Augšupielādēt jaunu logo", + "Login image" : "Pieslēgšanās fona attēls", + "Upload new login background" : "Augšupielādēt jaunu pieslēgšanās fona attēlu", + "Remove background image" : "Noņemt fona attēlu", + "reset to default" : "Atiestatīt", + "Log in image" : "Pieslēgšanas fona attēls" +},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);" +} \ No newline at end of file diff --git a/apps/theming/l10n/sq.js b/apps/theming/l10n/sq.js new file mode 100644 index 0000000000..a8bb7640d2 --- /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 0000000000..be6b236c56 --- /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/theming/l10n/zh_TW.js b/apps/theming/l10n/zh_TW.js new file mode 100644 index 0000000000..507a71e10c --- /dev/null +++ b/apps/theming/l10n/zh_TW.js @@ -0,0 +1,31 @@ +OC.L10N.register( + "theming", + { + "Loading preview…" : "正在載入即時預覽...", + "Saved" : "已儲存", + "Admin" : "管理員", + "a safe home for all your data" : "你資料的安全屋", + "The given name is too long" : "指定的名稱太長", + "The given web address is too long" : "提供的網址太長", + "The given slogan is too long" : "指定的口號太長", + "The given color is invalid" : "指定的顏色無效", + "No file uploaded" : "未上傳檔案", + "Unsupported image type" : "不支援的圖片類型", + "You are already using a custom theme" : "你已經使用了客製化主題", + "Theming" : "佈景主題", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "主題功能可以讓用戶能進行簡單的編輯頁面外觀與觀看感受。且所有使用者都可以看見編輯結果。", + "Name" : "名稱", + "Reset to default" : "重設到預設值", + "Web address" : "網址", + "Web address https://…" : "網址 https://…", + "Slogan" : "口號", + "Color" : "顏色", + "Logo" : "Logo", + "Upload new logo" : "上傳新的Logo", + "Login image" : "登入圖片", + "Upload new login background" : "上傳新的登入背景", + "Remove background image" : "移除背景圖片", + "reset to default" : "重設到預設值", + "Log in image" : "登入圖片" +}, +"nplurals=1; plural=0;"); diff --git a/apps/theming/l10n/zh_TW.json b/apps/theming/l10n/zh_TW.json new file mode 100644 index 0000000000..6704a8fda7 --- /dev/null +++ b/apps/theming/l10n/zh_TW.json @@ -0,0 +1,29 @@ +{ "translations": { + "Loading preview…" : "正在載入即時預覽...", + "Saved" : "已儲存", + "Admin" : "管理員", + "a safe home for all your data" : "你資料的安全屋", + "The given name is too long" : "指定的名稱太長", + "The given web address is too long" : "提供的網址太長", + "The given slogan is too long" : "指定的口號太長", + "The given color is invalid" : "指定的顏色無效", + "No file uploaded" : "未上傳檔案", + "Unsupported image type" : "不支援的圖片類型", + "You are already using a custom theme" : "你已經使用了客製化主題", + "Theming" : "佈景主題", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "主題功能可以讓用戶能進行簡單的編輯頁面外觀與觀看感受。且所有使用者都可以看見編輯結果。", + "Name" : "名稱", + "Reset to default" : "重設到預設值", + "Web address" : "網址", + "Web address https://…" : "網址 https://…", + "Slogan" : "口號", + "Color" : "顏色", + "Logo" : "Logo", + "Upload new logo" : "上傳新的Logo", + "Login image" : "登入圖片", + "Upload new login background" : "上傳新的登入背景", + "Remove background image" : "移除背景圖片", + "reset to default" : "重設到預設值", + "Log in image" : "登入圖片" +},"pluralForm" :"nplurals=1; plural=0;" +} \ No newline at end of file diff --git a/apps/theming/lib/ThemingDefaults.php b/apps/theming/lib/ThemingDefaults.php index 2b3be1e641..dff24ee796 100644 --- a/apps/theming/lib/ThemingDefaults.php +++ b/apps/theming/lib/ThemingDefaults.php @@ -51,6 +51,12 @@ class ThemingDefaults extends \OC_Defaults { private $color; /** @var Util */ private $util; + /** @var string */ + private $iTunesAppId; + /** @var string */ + private $iOSClientUrl; + /** @var string */ + private $AndroidClientUrl; /** * ThemingDefaults constructor. @@ -82,6 +88,9 @@ class ThemingDefaults extends \OC_Defaults { $this->url = parent::getBaseUrl(); $this->slogan = parent::getSlogan(); $this->color = parent::getColorPrimary(); + $this->iTunesAppId = parent::getiTunesAppId(); + $this->iOSClientUrl = parent::getiOSClientUrl(); + $this->AndroidClientUrl = parent::getAndroidClientUrl(); } public function getName() { @@ -180,6 +189,27 @@ class ThemingDefaults extends \OC_Defaults { return $this->urlGenerator->linkToRoute('theming.Theming.getLoginBackground') . '?v=' . $cacheBusterCounter; } + /** + * @return string + */ + public function getiTunesAppId() { + return $this->config->getAppValue('theming', 'iTunesAppId', $this->iTunesAppId); + } + + /** + * @return string + */ + public function getiOSClientUrl() { + return $this->config->getAppValue('theming', 'iOSClientUrl', $this->iOSClientUrl); + } + + /** + * @return string + */ + public function getAndroidClientUrl() { + return $this->config->getAppValue('theming', 'AndroidClientUrl', $this->AndroidClientUrl); + } + /** * @return array scss variables to overwrite @@ -290,5 +320,4 @@ class ThemingDefaults extends \OC_Defaults { return $returnValue; } - } diff --git a/apps/theming/lib/Util.php b/apps/theming/lib/Util.php index 1df16ea497..f0e8fd92ca 100644 --- a/apps/theming/lib/Util.php +++ b/apps/theming/lib/Util.php @@ -30,6 +30,7 @@ use OCP\Files\NotFoundException; use OCP\Files\SimpleFS\ISimpleFile; use OCP\IConfig; use OCP\Files\IRootFolder; +use Leafo\ScssPhp\Compiler; class Util { @@ -95,10 +96,12 @@ class Util { if (strlen($hex) !== 6) { return 0; } - $r = hexdec(substr($hex, 0, 2)); - $g = hexdec(substr($hex, 2, 2)); - $b = hexdec(substr($hex, 4, 2)); - return (0.299 * $r + 0.587 * $g + 0.114 * $b)/255; + $red = hexdec(substr($hex, 0, 2)); + $green = hexdec(substr($hex, 2, 2)); + $blue = hexdec(substr($hex, 4, 2)); + $compiler = new Compiler(); + $hsl = $compiler->toHSL($red, $green, $blue); + return $hsl[3]/100; } /** diff --git a/apps/theming/tests/ThemingDefaultsTest.php b/apps/theming/tests/ThemingDefaultsTest.php index 8646eaf865..057229483e 100644 --- a/apps/theming/tests/ThemingDefaultsTest.php +++ b/apps/theming/tests/ThemingDefaultsTest.php @@ -543,4 +543,65 @@ class ThemingDefaultsTest extends TestCase { ]; $this->assertEquals($expected, $this->template->getScssVariables()); } + + public function testGetDefaultAndroidURL() { + $this->config + ->expects($this->once()) + ->method('getAppValue') + ->with('theming', 'AndroidClientUrl', 'https://play.google.com/store/apps/details?id=com.nextcloud.client') + ->willReturn('https://play.google.com/store/apps/details?id=com.nextcloud.client'); + + $this->assertEquals('https://play.google.com/store/apps/details?id=com.nextcloud.client', $this->template->getAndroidClientUrl()); + } + + public function testGetCustomAndroidURL() { + $this->config + ->expects($this->once()) + ->method('getAppValue') + ->with('theming', 'AndroidClientUrl', 'https://play.google.com/store/apps/details?id=com.nextcloud.client') + ->willReturn('https://play.google.com/store/apps/details?id=com.mycloud.client'); + + $this->assertEquals('https://play.google.com/store/apps/details?id=com.mycloud.client', $this->template->getAndroidClientUrl()); + } + + public function testGetDefaultiOSURL() { + $this->config + ->expects($this->once()) + ->method('getAppValue') + ->with('theming', 'iOSClientUrl', 'https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8') + ->willReturn('https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8'); + + $this->assertEquals('https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8', $this->template->getiOSClientUrl()); + } + + public function testGetCustomiOSURL() { + $this->config + ->expects($this->once()) + ->method('getAppValue') + ->with('theming', 'iOSClientUrl', 'https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8') + ->willReturn('https://itunes.apple.com/us/app/nextcloud/id1234567890?mt=8'); + + $this->assertEquals('https://itunes.apple.com/us/app/nextcloud/id1234567890?mt=8', $this->template->getiOSClientUrl()); + } + + public function testGetDefaultiTunesAppId() { + $this->config + ->expects($this->once()) + ->method('getAppValue') + ->with('theming', 'iTunesAppId', '1125420102') + ->willReturn('1125420102'); + + $this->assertEquals('1125420102', $this->template->getiTunesAppId()); + } + + public function testGetCustomiTunesAppId() { + $this->config + ->expects($this->once()) + ->method('getAppValue') + ->with('theming', 'iTunesAppId', '1125420102') + ->willReturn('1234567890'); + + $this->assertEquals('1234567890', $this->template->getiTunesAppId()); + } + } diff --git a/apps/twofactor_backupcodes/l10n/sq.js b/apps/twofactor_backupcodes/l10n/sq.js new file mode 100644 index 0000000000..83a7afbf27 --- /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 0000000000..f7ec11b3ec --- /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/twofactor_backupcodes/l10n/zh_TW.js b/apps/twofactor_backupcodes/l10n/zh_TW.js new file mode 100644 index 0000000000..5d00fc9f61 --- /dev/null +++ b/apps/twofactor_backupcodes/l10n/zh_TW.js @@ -0,0 +1,19 @@ +OC.L10N.register( + "twofactor_backupcodes", + { + "Generate backup codes" : "產生備用碼", + "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "備用碼已經建立。{{total}}組中有{{used}}組備用碼已被使用過", + "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "以下是您的備用碼,由於備用碼不會再次顯示,請儲存 並/或 列印。", + "Save backup codes" : "儲存備用碼", + "Print backup codes" : "列印備用碼", + "Regenerate backup codes" : "重新產生備用碼", + "If you regenerate backup codes, you automatically invalidate old codes." : "若您重新產生備用碼,原來舊的備用碼將自動失效。", + "An error occurred while generating your backup codes" : "產生備用碼時發生錯誤。", + "Nextcloud backup codes" : "Nextcloud 備用碼", + "You created two-factor backup codes for your account" : "你的帳戶已建立兩階段認證的備用碼。", + "Backup code" : "備用碼", + "Use backup code" : "使用備用碼", + "Two factor backup codes" : "兩階段認證備用碼", + "Second-factor backup codes" : "第二階段認證備用碼" +}, +"nplurals=1; plural=0;"); diff --git a/apps/twofactor_backupcodes/l10n/zh_TW.json b/apps/twofactor_backupcodes/l10n/zh_TW.json new file mode 100644 index 0000000000..5a95ae3ad2 --- /dev/null +++ b/apps/twofactor_backupcodes/l10n/zh_TW.json @@ -0,0 +1,17 @@ +{ "translations": { + "Generate backup codes" : "產生備用碼", + "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "備用碼已經建立。{{total}}組中有{{used}}組備用碼已被使用過", + "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "以下是您的備用碼,由於備用碼不會再次顯示,請儲存 並/或 列印。", + "Save backup codes" : "儲存備用碼", + "Print backup codes" : "列印備用碼", + "Regenerate backup codes" : "重新產生備用碼", + "If you regenerate backup codes, you automatically invalidate old codes." : "若您重新產生備用碼,原來舊的備用碼將自動失效。", + "An error occurred while generating your backup codes" : "產生備用碼時發生錯誤。", + "Nextcloud backup codes" : "Nextcloud 備用碼", + "You created two-factor backup codes for your account" : "你的帳戶已建立兩階段認證的備用碼。", + "Backup code" : "備用碼", + "Use backup code" : "使用備用碼", + "Two factor backup codes" : "兩階段認證備用碼", + "Second-factor backup codes" : "第二階段認證備用碼" +},"pluralForm" :"nplurals=1; plural=0;" +} \ No newline at end of file diff --git a/apps/updatenotification/css/admin.css b/apps/updatenotification/css/admin.css new file mode 100644 index 0000000000..59c8f056fb --- /dev/null +++ b/apps/updatenotification/css/admin.css @@ -0,0 +1,3 @@ +#oca_updatenotification_section p { + margin: 25px 0; +} diff --git a/apps/updatenotification/l10n/el.js b/apps/updatenotification/l10n/el.js index bb8695e678..189674aefb 100644 --- a/apps/updatenotification/l10n/el.js +++ b/apps/updatenotification/l10n/el.js @@ -18,7 +18,10 @@ 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." : "Σημειώστε ότι μετά από μια νέα διανομή μπορεί να περάσει λίγος καιρός πριν εμφανιστεί εδώ. Κυκλοφορούμε κατά διαστήματα νέες εκδόσεις στους χρήστες μας και κάποιες φορές παραλείπουμε κάποια έκδοση αν βρεθούν προβλήματα.", "Notify members of the following groups about available updates:" : "Να ενημερωθούν τα μέλη των παρακάτω ομάδων σχετικά με τις διαθέσιμες ενημερώσεις:", - "Only notification for app updates are available." : "Είναι μόνο διαθέσιμες οι ενημερώσεις για την εφαρμογή" + "Only notification for app updates are available." : "Είναι μόνο διαθέσιμες οι ενημερώσεις για την εφαρμογή", + "The selected update channel makes dedicated notifications for the server obsolete." : "Το συγκεκριμένο κανάλι ενημέρωσης καθιστά παρωχημένες τις ειδοποιήσεις που προορίζονται για τον διακομιστή.", + "The selected update channel does not support updates of the server." : "Το συγκεκριμένο κανάλι ενημέρωσης δεν υποστηρίζει ενημερώσεις διακομιστή." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/el.json b/apps/updatenotification/l10n/el.json index 388ee17877..f9ca81933e 100644 --- a/apps/updatenotification/l10n/el.json +++ b/apps/updatenotification/l10n/el.json @@ -16,7 +16,10 @@ "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." : "Σημειώστε ότι μετά από μια νέα διανομή μπορεί να περάσει λίγος καιρός πριν εμφανιστεί εδώ. Κυκλοφορούμε κατά διαστήματα νέες εκδόσεις στους χρήστες μας και κάποιες φορές παραλείπουμε κάποια έκδοση αν βρεθούν προβλήματα.", "Notify members of the following groups about available updates:" : "Να ενημερωθούν τα μέλη των παρακάτω ομάδων σχετικά με τις διαθέσιμες ενημερώσεις:", - "Only notification for app updates are available." : "Είναι μόνο διαθέσιμες οι ενημερώσεις για την εφαρμογή" + "Only notification for app updates are available." : "Είναι μόνο διαθέσιμες οι ενημερώσεις για την εφαρμογή", + "The selected update channel makes dedicated notifications for the server obsolete." : "Το συγκεκριμένο κανάλι ενημέρωσης καθιστά παρωχημένες τις ειδοποιήσεις που προορίζονται για τον διακομιστή.", + "The selected update channel does not support updates of the server." : "Το συγκεκριμένο κανάλι ενημέρωσης δεν υποστηρίζει ενημερώσεις διακομιστή." },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/apps/updatenotification/l10n/is.js b/apps/updatenotification/l10n/is.js index f6b3825b56..801b6f7c3f 100644 --- a/apps/updatenotification/l10n/is.js +++ b/apps/updatenotification/l10n/is.js @@ -18,6 +18,7 @@ OC.L10N.register( "Checked on %s" : "Athugað þann %s", "Update channel:" : "Uppfærslurás:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Þú getur alltaf uppfært í nýrri útgáfu eða tilraunaútgáfurás. En þú getur aldrei niðurfært í stöðugri rás.", + "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Athugaðu að það getur tekið nokkurn tíma áður en nýjar útgáfur birtast hér. Við dreifum útgáfum yfir tíma auk þess sem stundum er útgáfum sleppt ef í þeim finnast hnökrar.", "Notify members of the following groups about available updates:" : "Tilkynna meðlimum eftirfarandi hópa um tiltækar uppfærslur:", "Only notification for app updates are available." : "Eingöngu eru eru tiltækar tilkynningar fyrir uppfærslur forrita.", "The selected update channel makes dedicated notifications for the server obsolete." : "Valda uppfærslurásin gerir úreltar sértækar tilkynningar fyrir vefþjóninn.", diff --git a/apps/updatenotification/l10n/is.json b/apps/updatenotification/l10n/is.json index c24c469b2f..8ff7e4a004 100644 --- a/apps/updatenotification/l10n/is.json +++ b/apps/updatenotification/l10n/is.json @@ -16,6 +16,7 @@ "Checked on %s" : "Athugað þann %s", "Update channel:" : "Uppfærslurás:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Þú getur alltaf uppfært í nýrri útgáfu eða tilraunaútgáfurás. En þú getur aldrei niðurfært í stöðugri rás.", + "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Athugaðu að það getur tekið nokkurn tíma áður en nýjar útgáfur birtast hér. Við dreifum útgáfum yfir tíma auk þess sem stundum er útgáfum sleppt ef í þeim finnast hnökrar.", "Notify members of the following groups about available updates:" : "Tilkynna meðlimum eftirfarandi hópa um tiltækar uppfærslur:", "Only notification for app updates are available." : "Eingöngu eru eru tiltækar tilkynningar fyrir uppfærslur forrita.", "The selected update channel makes dedicated notifications for the server obsolete." : "Valda uppfærslurásin gerir úreltar sértækar tilkynningar fyrir vefþjóninn.", diff --git a/apps/updatenotification/l10n/ja.js b/apps/updatenotification/l10n/ja.js index 289eebe861..90ee9342fa 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 fcead04da5..c7e5c1bb44 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/lt_LT.js b/apps/updatenotification/l10n/lt_LT.js index 6c22873bf1..c999ea97ed 100644 --- a/apps/updatenotification/l10n/lt_LT.js +++ b/apps/updatenotification/l10n/lt_LT.js @@ -1,8 +1,25 @@ OC.L10N.register( "updatenotification", { - "Updater" : "Atnaujinimo programa", + "Update notifications" : "Atnaujinimų pranešimai", + "Could not start updater, please try the manual update" : "Nepavyko paleisti atnaujinimo programos, prašome atnaujinimą rankiniu būdu", + "{version} is available. Get more information on how to update." : "Yra prieinama {version}. Gaukite daugiau informacijos apie tai kaip atnaujinti.", + "Channel updated" : "Kanalas atnaujintas", + "Please check the Nextcloud and server log files for errors." : "Prašome patikrinti Nextcloud ir serverio žurnalų įrašus apie galimas klaidas.", + "Update to %1$s is available." : "Yra prieinamas atnaujinimas į %1$s.", + "Update for %1$s to version %2$s is available." : "Yra prieinamas %1$s atnaujinimas į versiją %2$s.", + "Update for {app} to version %s is available." : "Galimas {app} atnaujinimas į %s versiją.", + "Update notification" : "Atnaujinimų pranešimai", + "A new version is available: %s" : "Yra prieinama nauja versija: %s", + "Open updater" : "Atverti atnaujinimo programą", + "Download now" : "Atsisiųsti dabar", + "Your version is up to date." : "Tavo versija yra naujausia.", + "Checked on %s" : "Tikrinta %s", "Update channel:" : "Atnaujinimo kanalas:", - "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Visada galite atnaujinti į naujesnę versiją / bandomąjį kanalą. Bet niekada žeminti versijos ar pakeisti į stabilų kanalą." + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Visada galite atnaujinti į naujesnę versiją / eksperimentinį kanalą. Tačiau niekada negalite sendinti versijos ar persijungti į stabilų kanalą.", + "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." : "Atkreipkite dėmesį kad po naujos versijos išleidimo gali praeiti šiek tiek laiko kol ti bus matoma čia. Mes išleidžiame naujas versijas paskirstytai pagal laiką savo klientams, ir kartais praleidžiame atnaujinimus pastebėjus klaidas.", + "Notify members of the following groups about available updates:" : "Apie galimus atnaujinimus informuoti narius iš grupių:", + "Only notification for app updates are available." : "Galimi tik pranešimai apie programos atnaujinimus.", + "The selected update channel does not support updates of the server." : "Pasirinktas kanalas nepalaiko serverio atnaujinimų." }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/updatenotification/l10n/lt_LT.json b/apps/updatenotification/l10n/lt_LT.json index db24c0be43..e614366574 100644 --- a/apps/updatenotification/l10n/lt_LT.json +++ b/apps/updatenotification/l10n/lt_LT.json @@ -1,6 +1,23 @@ { "translations": { - "Updater" : "Atnaujinimo programa", + "Update notifications" : "Atnaujinimų pranešimai", + "Could not start updater, please try the manual update" : "Nepavyko paleisti atnaujinimo programos, prašome atnaujinimą rankiniu būdu", + "{version} is available. Get more information on how to update." : "Yra prieinama {version}. Gaukite daugiau informacijos apie tai kaip atnaujinti.", + "Channel updated" : "Kanalas atnaujintas", + "Please check the Nextcloud and server log files for errors." : "Prašome patikrinti Nextcloud ir serverio žurnalų įrašus apie galimas klaidas.", + "Update to %1$s is available." : "Yra prieinamas atnaujinimas į %1$s.", + "Update for %1$s to version %2$s is available." : "Yra prieinamas %1$s atnaujinimas į versiją %2$s.", + "Update for {app} to version %s is available." : "Galimas {app} atnaujinimas į %s versiją.", + "Update notification" : "Atnaujinimų pranešimai", + "A new version is available: %s" : "Yra prieinama nauja versija: %s", + "Open updater" : "Atverti atnaujinimo programą", + "Download now" : "Atsisiųsti dabar", + "Your version is up to date." : "Tavo versija yra naujausia.", + "Checked on %s" : "Tikrinta %s", "Update channel:" : "Atnaujinimo kanalas:", - "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Visada galite atnaujinti į naujesnę versiją / bandomąjį kanalą. Bet niekada žeminti versijos ar pakeisti į stabilų kanalą." + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Visada galite atnaujinti į naujesnę versiją / eksperimentinį kanalą. Tačiau niekada negalite sendinti versijos ar persijungti į stabilų kanalą.", + "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." : "Atkreipkite dėmesį kad po naujos versijos išleidimo gali praeiti šiek tiek laiko kol ti bus matoma čia. Mes išleidžiame naujas versijas paskirstytai pagal laiką savo klientams, ir kartais praleidžiame atnaujinimus pastebėjus klaidas.", + "Notify members of the following groups about available updates:" : "Apie galimus atnaujinimus informuoti narius iš grupių:", + "Only notification for app updates are available." : "Galimi tik pranešimai apie programos atnaujinimus.", + "The selected update channel does not support updates of the server." : "Pasirinktas kanalas nepalaiko serverio atnaujinimų." },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" } \ No newline at end of file diff --git a/apps/updatenotification/l10n/sq.js b/apps/updatenotification/l10n/sq.js index 6f0b0683ef..0aba2eb911 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 e013aa8445..a5f5f4a1c4 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/l10n/zh_CN.js b/apps/updatenotification/l10n/zh_CN.js index b7e292cff7..b3e6b4d771 100644 --- a/apps/updatenotification/l10n/zh_CN.js +++ b/apps/updatenotification/l10n/zh_CN.js @@ -18,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." : "请注意, 在新版本发布后, 它可能需要一段时间才能显示在这里。新版本发布后, 随着时间的推移, 当用户发现问题时我们可能会跳过一个版本。", "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/zh_CN.json b/apps/updatenotification/l10n/zh_CN.json index bee2c4f7ea..f0c1eeb397 100644 --- a/apps/updatenotification/l10n/zh_CN.json +++ b/apps/updatenotification/l10n/zh_CN.json @@ -16,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." : "请注意, 在新版本发布后, 它可能需要一段时间才能显示在这里。新版本发布后, 随着时间的推移, 当用户发现问题时我们可能会跳过一个版本。", "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/zh_TW.js b/apps/updatenotification/l10n/zh_TW.js index a7e225e341..3b0955f3ef 100644 --- a/apps/updatenotification/l10n/zh_TW.js +++ b/apps/updatenotification/l10n/zh_TW.js @@ -5,8 +5,12 @@ OC.L10N.register( "Could not start updater, please try the manual update" : "無法啟動更新程式,請嘗試手動更新", "{version} is available. Get more information on how to update." : "{version} 釋出了,可以更新", "Channel updated" : "頻道已更新", + "The update server could not be reached since %d days to check for new updates." : "更新伺服器在%d天前已經無法連線檢查更新", + "Please check the Nextcloud and server log files for errors." : "請確認伺服器log檔以查看錯誤。", "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" : "現在下載", @@ -14,8 +18,10 @@ 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." : "請注意,新版本釋出後,需要過一段時間才會在此顯示通知。隨著時間推進,我們為用戶推出了新的版本,有時候會在發現問題時跳過前一個版本更新。", "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." : "選擇的更新管道會導致伺服器專門的通知過期", "The selected update channel does not support updates of the server." : "所選的更新頻道不提供伺服器軟體的更新" }, "nplurals=1; plural=0;"); diff --git a/apps/updatenotification/l10n/zh_TW.json b/apps/updatenotification/l10n/zh_TW.json index 7386d753e9..1acf5a387c 100644 --- a/apps/updatenotification/l10n/zh_TW.json +++ b/apps/updatenotification/l10n/zh_TW.json @@ -3,8 +3,12 @@ "Could not start updater, please try the manual update" : "無法啟動更新程式,請嘗試手動更新", "{version} is available. Get more information on how to update." : "{version} 釋出了,可以更新", "Channel updated" : "頻道已更新", + "The update server could not be reached since %d days to check for new updates." : "更新伺服器在%d天前已經無法連線檢查更新", + "Please check the Nextcloud and server log files for errors." : "請確認伺服器log檔以查看錯誤。", "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" : "現在下載", @@ -12,8 +16,10 @@ "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." : "請注意,新版本釋出後,需要過一段時間才會在此顯示通知。隨著時間推進,我們為用戶推出了新的版本,有時候會在發現問題時跳過前一個版本更新。", "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." : "選擇的更新管道會導致伺服器專門的通知過期", "The selected update channel does not support updates of the server." : "所選的更新頻道不提供伺服器軟體的更新" },"pluralForm" :"nplurals=1; plural=0;" } \ No newline at end of file diff --git a/apps/updatenotification/lib/Controller/AdminController.php b/apps/updatenotification/lib/Controller/AdminController.php index 0a867f1267..fd68a6dd96 100644 --- a/apps/updatenotification/lib/Controller/AdminController.php +++ b/apps/updatenotification/lib/Controller/AdminController.php @@ -86,9 +86,8 @@ class AdminController extends Controller implements ISettings { * @return TemplateResponse */ public function displayPanel() { - $lastUpdateCheck = $this->dateTimeFormatter->formatDateTime( - $this->config->getAppValue('core', 'lastupdatedat') - ); + $lastUpdateCheckTimestamp = $this->config->getAppValue('core', 'lastupdatedat'); + $lastUpdateCheck = $this->dateTimeFormatter->formatDateTime($lastUpdateCheckTimestamp); $channels = [ 'daily', @@ -106,15 +105,20 @@ class AdminController extends Controller implements ISettings { $notifyGroups = json_decode($this->config->getAppValue('updatenotification', 'notify_groups', '["admin"]'), true); + $defaultUpdateServerURL = 'https://updates.nextcloud.com/server/'; + $updateServerURL = $this->config->getSystemValue('updater.server.url', $defaultUpdateServerURL); + $params = [ 'isNewVersionAvailable' => !empty($updateState['updateAvailable']), + 'isUpdateChecked' => $lastUpdateCheckTimestamp > 0, 'lastChecked' => $lastUpdateCheck, 'currentChannel' => $currentChannel, 'channels' => $channels, 'newVersionString' => (empty($updateState['updateVersion'])) ? '' : $updateState['updateVersion'], 'downloadLink' => (empty($updateState['downloadLink'])) ? '' : $updateState['downloadLink'], 'updaterEnabled' => (empty($updateState['updaterEnabled'])) ? false : $updateState['updaterEnabled'], - + 'isDefaultUpdateServerURL' => $updateServerURL === $defaultUpdateServerURL, + 'updateServerURL' => $updateServerURL, 'notify_groups' => implode('|', $notifyGroups), ]; diff --git a/apps/updatenotification/lib/Notification/Notifier.php b/apps/updatenotification/lib/Notification/Notifier.php index e512825da0..2fc1d36b0c 100644 --- a/apps/updatenotification/lib/Notification/Notifier.php +++ b/apps/updatenotification/lib/Notification/Notifier.php @@ -117,7 +117,7 @@ class Notifier implements INotifier { } $notification->setParsedSubject($l->t('Update for %1$s to version %2$s is available.', [$appName, $notification->getObjectId()])) - ->setRichSubject($l->t('Update for {app} to version %s is available.', $notification->getObjectId()), [ + ->setRichSubject($l->t('Update for {app} to version %s is available.', [$notification->getObjectId()]), [ 'app' => [ 'type' => 'app', 'id' => $notification->getObjectType(), diff --git a/apps/updatenotification/templates/admin.php b/apps/updatenotification/templates/admin.php index 369d4905a4..e09d19848e 100644 --- a/apps/updatenotification/templates/admin.php +++ b/apps/updatenotification/templates/admin.php @@ -1,31 +1,50 @@ - - t('A new version is available: %s', [$newVersionString])); ?> - - +

+ + t('A new version is available: %s', [$newVersionString])); ?> + + + + + t('Download now')) ?> + + + t('The update check is not yet finished. Please refresh the page.')); ?> + + t('Your version is up to date.')); ?> + - - t('Download now')) ?> + + +
+ + t("A non-default update server is in use to be checked for updates:")); ?> + + - - t('Your version is up to date.')); ?> - - +

@@ -37,20 +56,16 @@ - -

-

- t('You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel.')); ?> +
+ t('You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel.')); ?>
t('Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found.')); ?>

-
t('Notify members of the following groups about available updates:')); ?> - +
-
t('Only notification for app updates are available.')); ?> t('The selected update channel makes dedicated notifications for the server obsolete.')); ?> t('The selected update channel does not support updates of the server.')); ?> diff --git a/apps/updatenotification/tests/Controller/AdminControllerTest.php b/apps/updatenotification/tests/Controller/AdminControllerTest.php index 31e852a9e2..ebf044abff 100644 --- a/apps/updatenotification/tests/Controller/AdminControllerTest.php +++ b/apps/updatenotification/tests/Controller/AdminControllerTest.php @@ -103,6 +103,11 @@ class AdminControllerTest extends TestCase { ['core', 'lastupdatedat', '', '12345'], ['updatenotification', 'notify_groups', '["admin"]', '["admin"]'], ]); + $this->config + ->expects($this->once()) + ->method('getSystemValue') + ->with('updater.server.url', 'https://updates.nextcloud.com/server/') + ->willReturn('https://updates.nextcloud.com/server/'); $this->dateTimeFormatter ->expects($this->once()) ->method('formatDateTime') @@ -120,12 +125,15 @@ class AdminControllerTest extends TestCase { $params = [ 'isNewVersionAvailable' => true, + 'isUpdateChecked' => true, 'lastChecked' => 'LastCheckedReturnValue', 'currentChannel' => \OCP\Util::getChannel(), 'channels' => $channels, 'newVersionString' => '8.1.2', 'downloadLink' => 'https://downloads.nextcloud.org/server', 'updaterEnabled' => true, + 'isDefaultUpdateServerURL' => true, + 'updateServerURL' => 'https://updates.nextcloud.com/server/', 'notify_groups' => 'admin', ]; @@ -154,6 +162,11 @@ class AdminControllerTest extends TestCase { ['core', 'lastupdatedat', '', '12345'], ['updatenotification', 'notify_groups', '["admin"]', '["admin"]'], ]); + $this->config + ->expects($this->once()) + ->method('getSystemValue') + ->with('updater.server.url', 'https://updates.nextcloud.com/server/') + ->willReturn('https://updates.nextcloud.com/server/'); $this->dateTimeFormatter ->expects($this->once()) ->method('formatDateTime') @@ -166,12 +179,15 @@ class AdminControllerTest extends TestCase { $params = [ 'isNewVersionAvailable' => false, + 'isUpdateChecked' => true, 'lastChecked' => 'LastCheckedReturnValue', 'currentChannel' => \OCP\Util::getChannel(), 'channels' => $channels, 'newVersionString' => '', 'downloadLink' => '', 'updaterEnabled' => 0, + 'isDefaultUpdateServerURL' => true, + 'updateServerURL' => 'https://updates.nextcloud.com/server/', 'notify_groups' => 'admin', ]; diff --git a/apps/user_ldap/ajax/testConfiguration.php b/apps/user_ldap/ajax/testConfiguration.php index 0416e49767..d48a6be938 100644 --- a/apps/user_ldap/ajax/testConfiguration.php +++ b/apps/user_ldap/ajax/testConfiguration.php @@ -67,19 +67,19 @@ try { $ldapWrapper->read($connection->getConnectionResource(), '', 'objectClass=*', array('dn')); } catch (\Exception $e) { if($e->getCode() === 1) { - OCP\JSON::error(array('message' => $l->t('The configuration is invalid: anonymous bind is not allowed.'))); + OCP\JSON::error(array('message' => $l->t('Invalid configuration: Anonymous binding is not allowed.'))); exit; } } OCP\JSON::success(array('message' - => $l->t('The configuration is valid and the connection could be established!'))); + => $l->t('Valid configuration, connection established!'))); } else { OCP\JSON::error(array('message' - => $l->t('The configuration is valid, but the Bind failed. Please check the server settings and credentials.'))); + => $l->t('Valid configuration, but binding failed. Please check the server settings and credentials.'))); } } else { OCP\JSON::error(array('message' - => $l->t('The configuration is invalid. Please have a look at the logs for further details.'))); + => $l->t('Invalid configuration. Please have a look at the logs for further details.'))); } } catch (\Exception $e) { OCP\JSON::error(array('message' => $e->getMessage())); diff --git a/apps/user_ldap/appinfo/install.php b/apps/user_ldap/appinfo/install.php index 43ec69a950..09f9b41234 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 * */ -$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/js/wizard/wizardTabLoginFilter.js b/apps/user_ldap/js/wizard/wizardTabLoginFilter.js index a2537539ed..7cc35aae0a 100644 --- a/apps/user_ldap/js/wizard/wizardTabLoginFilter.js +++ b/apps/user_ldap/js/wizard/wizardTabLoginFilter.js @@ -142,16 +142,16 @@ OCA = OCA || {}; var usersFound = parseInt(result.changes.ldap_test_loginname, 10); if(usersFound < 1) { var filter = $('

').text(result.changes.ldap_test_effective_filter).html(); - message = t('user_ldap', 'User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
' + filter); + message = t('user_ldap', 'User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
' + filter); console.warn(filter); isHtml = true; } else if(usersFound === 1) { message = t('user_ldap', 'User found and settings verified.'); } else if(usersFound > 1) { - message = t('user_ldap', 'Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter.'); + message = t('user_ldap', 'Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in.'); } } else { - message = t('user_ldap', 'An unspecified error occurred. Please check the settings and the log.'); + message = t('user_ldap', 'An unspecified error occurred. Please check log and settings.'); if(!_.isUndefined(result.message) && result.message) { message = result.message; } diff --git a/apps/user_ldap/l10n/ast.js b/apps/user_ldap/l10n/ast.js index 7a7433ac4b..93ada9caa4 100644 --- a/apps/user_ldap/l10n/ast.js +++ b/apps/user_ldap/l10n/ast.js @@ -3,10 +3,6 @@ OC.L10N.register( { "Failed to clear the mappings." : "Fallu al llimpiar los mapeos.", "Failed to delete the server configuration" : "Fallu al desaniciar la configuración del sirvidor", - "The configuration is invalid: anonymous bind is not allowed." : "La configuración nun ye válida: nun s'almite l'enllaz anónimu ", - "The configuration is valid and the connection could be established!" : "¡La configuración ye válida y pudo afitase la conexón!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuración ye válida, pero falló'l vínculu. Por favor, comprueba la configuración y les credenciales nel sirvidor.", - "The configuration is invalid. Please have a look at the logs for further details." : "La configuración nun ye válida. Por favor, écha-y un güeyu a los rexistros pa más detalles.", "No action specified" : "Nun s'especificó l'aición", "No configuration specified" : "Nun s'especificó la configuración", "No data specified" : "Nun s'especificaron los datos", @@ -42,16 +38,13 @@ OC.L10N.register( "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Nun pudo guardase. Por favor asegúrate que la base de datos ta en funcionamientu. Actualiza enantes de siguir.", "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?" : "Cambiar el mou va habilitar les consultes LDAP automátiques . Dependiendo del to tamañu de LDAP puede llevar un tiempu. ¿Inda deseya camudar el mou?", "Select attributes" : "Esbillar atributos", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Nun s'alcuentra l'usuariu. Encamiéntase consultar los atributos d'accesu y nome d'usuariu. Filtru efectivu (copiar y pegar pa la validación de llínea de comandos):
", "User found and settings verified." : "Usuariu atopáu y la configuración verificada.", - "An unspecified error occurred. Please check the settings and the log." : "Asocedió un erru. Por favor, compruebe la configuración y el rexistru.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtru de busca nun ye válidu , probablemente por cuenta de problemes de sintaxis como'l númberu impar de soportes abiertos y zarraos. Por favor revisalo.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Asocedió un erru de conexón a LDAP / AD, por favor, comprueba'l host, el puertu y les credenciales.", "Please provide a login name to test against" : "Por favor, proporcione un nombre de inicio de sesión para comprobar en contra", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "El cuadru de grupu taba desactiváu , por mor qu'el servidor LDAP / AD nun almite memberOf .", "_%s group found_::_%s groups found_" : ["%s grupu alcontráu","%s grupos alcontraos"], "_%s user found_::_%s users found_" : ["%s usuariu alcontráu","%s usuarios alcontraos"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nun deteutamos el nome d'atributu na pantalla d'usuariu. Por favor especifícalu nos axustes avanzaos de ldap", "Could not find the desired feature" : "Nun pudo alcontrase la carauterística deseyada", "Invalid Host" : "Agospiu non válidu", "Test Configuration" : "Configuración de prueba", diff --git a/apps/user_ldap/l10n/ast.json b/apps/user_ldap/l10n/ast.json index 6086745f06..45f77b2b6b 100644 --- a/apps/user_ldap/l10n/ast.json +++ b/apps/user_ldap/l10n/ast.json @@ -1,10 +1,6 @@ { "translations": { "Failed to clear the mappings." : "Fallu al llimpiar los mapeos.", "Failed to delete the server configuration" : "Fallu al desaniciar la configuración del sirvidor", - "The configuration is invalid: anonymous bind is not allowed." : "La configuración nun ye válida: nun s'almite l'enllaz anónimu ", - "The configuration is valid and the connection could be established!" : "¡La configuración ye válida y pudo afitase la conexón!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuración ye válida, pero falló'l vínculu. Por favor, comprueba la configuración y les credenciales nel sirvidor.", - "The configuration is invalid. Please have a look at the logs for further details." : "La configuración nun ye válida. Por favor, écha-y un güeyu a los rexistros pa más detalles.", "No action specified" : "Nun s'especificó l'aición", "No configuration specified" : "Nun s'especificó la configuración", "No data specified" : "Nun s'especificaron los datos", @@ -40,16 +36,13 @@ "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Nun pudo guardase. Por favor asegúrate que la base de datos ta en funcionamientu. Actualiza enantes de siguir.", "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?" : "Cambiar el mou va habilitar les consultes LDAP automátiques . Dependiendo del to tamañu de LDAP puede llevar un tiempu. ¿Inda deseya camudar el mou?", "Select attributes" : "Esbillar atributos", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Nun s'alcuentra l'usuariu. Encamiéntase consultar los atributos d'accesu y nome d'usuariu. Filtru efectivu (copiar y pegar pa la validación de llínea de comandos):
", "User found and settings verified." : "Usuariu atopáu y la configuración verificada.", - "An unspecified error occurred. Please check the settings and the log." : "Asocedió un erru. Por favor, compruebe la configuración y el rexistru.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtru de busca nun ye válidu , probablemente por cuenta de problemes de sintaxis como'l númberu impar de soportes abiertos y zarraos. Por favor revisalo.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Asocedió un erru de conexón a LDAP / AD, por favor, comprueba'l host, el puertu y les credenciales.", "Please provide a login name to test against" : "Por favor, proporcione un nombre de inicio de sesión para comprobar en contra", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "El cuadru de grupu taba desactiváu , por mor qu'el servidor LDAP / AD nun almite memberOf .", "_%s group found_::_%s groups found_" : ["%s grupu alcontráu","%s grupos alcontraos"], "_%s user found_::_%s users found_" : ["%s usuariu alcontráu","%s usuarios alcontraos"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nun deteutamos el nome d'atributu na pantalla d'usuariu. Por favor especifícalu nos axustes avanzaos de ldap", "Could not find the desired feature" : "Nun pudo alcontrase la carauterística deseyada", "Invalid Host" : "Agospiu non válidu", "Test Configuration" : "Configuración de prueba", diff --git a/apps/user_ldap/l10n/cs.js b/apps/user_ldap/l10n/cs.js index 8df1842e92..8f8065bfdb 100644 --- a/apps/user_ldap/l10n/cs.js +++ b/apps/user_ldap/l10n/cs.js @@ -3,10 +3,10 @@ OC.L10N.register( { "Failed to clear the mappings." : "Selhalo zrušení mapování.", "Failed to delete the server configuration" : "Selhalo smazání nastavení serveru", - "The configuration is invalid: anonymous bind is not allowed." : "Tato konfigurace není platná: anonymní bind není povolen.", - "The configuration is valid and the connection could be established!" : "Nastavení je v pořádku a spojení bylo navázáno.", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurace je v pořádku, ale spojení selhalo. Zkontrolujte prosím nastavení serveru a přihlašovací údaje.", - "The configuration is invalid. Please have a look at the logs for further details." : "Konfigurace je neplatná. Pro bližší informace se podívejte do logu.", + "Invalid configuration: Anonymous binding is not allowed." : "Neplatná konfigurace: Anonymní navázání není povoleno.", + "Valid configuration, connection established!" : "Nastavení je v pořádku a spojení bylo navázáno.", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Konfigurace je v pořádku, ale spojení selhalo. Zkontrolujte prosím nastavení serveru a přihlašovací údaje.", + "Invalid configuration. Please have a look at the logs for further details." : "Konfigurace je neplatná. Pro bližší informace se podívejte do logu.", "No action specified" : "Neurčena žádná akce", "No configuration specified" : "Neurčena žádná konfigurace", "No data specified" : "Neurčena žádná data", @@ -45,10 +45,10 @@ 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?" : "Přepnutí módu povolí automatické LDAP dotazy. V závislosti na velikosti vašeho LDAP může vyhledávání chvíli trvat. Opravdu si přejete přepnout mód?", "Mode switch" : "Přepnutí módu", "Select attributes" : "Vyberte atributy", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Uživatel nenalezen. Zkontrolujte prosím své přihlašovací údaje a jméno. Použitý filtr (pro zkopírování a ověření v příkazovém řádku):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "Uživatel nenalezen. Zkontrolujte prosím své přihlašovací údaje a jméno. Použitý filtr (pro zkopírování a ověření v příkazovém řádku):
", "User found and settings verified." : "Uživatel nalezen a nastavení ověřeno.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavení ověřena, ale byl nalezen víc než jeden uživatel. Jen ten první se bude moci přihlásit. Zvažte užší filtr.", - "An unspecified error occurred. Please check the settings and the log." : "Došlo k nespecifikované chybě. Zkontrolujte prosím nastavení a soubor logu.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Zvažte zúžení vyhledávání, protože současné zahrnuje mnoho uživatelů, ze kterých se bude schopen přihlásit pouze první.", + "An unspecified error occurred. Please check log and settings." : "Došlo k nespecifikované chybě. Zkontrolujte prosím nastavení a soubor logu.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtr vyhledávání je neplatný, pravděpodobně z důvodu chybné syntax jako třeba neuzavřené závorky. Ověřte to.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Došlo k chybě připojení k LDAP / AD, zkontrolujte prosím host, port a přihlašovací údaje.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Zástupný symbol \"%uid\" chybí. Při dotatzu na LDAP / AD bude nahrazen přihlašovacím jménem.", @@ -62,7 +62,7 @@ OC.L10N.register( "LDAP / AD integration" : "LDAP / AD propojení", "_%s group found_::_%s groups found_" : ["nalezena %s skupina","nalezeny %s skupiny","nalezeno %s skupin"], "_%s user found_::_%s users found_" : ["nalezen %s uživatel","nalezeni %s uživatelé","nalezeno %s uživatelů"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nelze detekovat atribut pro zobrazení jména uživatele. Upřesněte ho prosím sami v rozšířeném nastavení LDAP.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nelze detekovat atribut pro zobrazení jména uživatele. Upřesněte ho prosím sami v rozšířeném nastavení LDAP.", "Could not find the desired feature" : "Nelze nalézt požadovanou vlastnost", "Invalid Host" : "Neplatný hostitel", "Test Configuration" : "Vyzkoušet nastavení", diff --git a/apps/user_ldap/l10n/cs.json b/apps/user_ldap/l10n/cs.json index 95295cf94b..1f7943695e 100644 --- a/apps/user_ldap/l10n/cs.json +++ b/apps/user_ldap/l10n/cs.json @@ -1,10 +1,10 @@ { "translations": { "Failed to clear the mappings." : "Selhalo zrušení mapování.", "Failed to delete the server configuration" : "Selhalo smazání nastavení serveru", - "The configuration is invalid: anonymous bind is not allowed." : "Tato konfigurace není platná: anonymní bind není povolen.", - "The configuration is valid and the connection could be established!" : "Nastavení je v pořádku a spojení bylo navázáno.", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurace je v pořádku, ale spojení selhalo. Zkontrolujte prosím nastavení serveru a přihlašovací údaje.", - "The configuration is invalid. Please have a look at the logs for further details." : "Konfigurace je neplatná. Pro bližší informace se podívejte do logu.", + "Invalid configuration: Anonymous binding is not allowed." : "Neplatná konfigurace: Anonymní navázání není povoleno.", + "Valid configuration, connection established!" : "Nastavení je v pořádku a spojení bylo navázáno.", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Konfigurace je v pořádku, ale spojení selhalo. Zkontrolujte prosím nastavení serveru a přihlašovací údaje.", + "Invalid configuration. Please have a look at the logs for further details." : "Konfigurace je neplatná. Pro bližší informace se podívejte do logu.", "No action specified" : "Neurčena žádná akce", "No configuration specified" : "Neurčena žádná konfigurace", "No data specified" : "Neurčena žádná data", @@ -43,10 +43,10 @@ "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?" : "Přepnutí módu povolí automatické LDAP dotazy. V závislosti na velikosti vašeho LDAP může vyhledávání chvíli trvat. Opravdu si přejete přepnout mód?", "Mode switch" : "Přepnutí módu", "Select attributes" : "Vyberte atributy", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Uživatel nenalezen. Zkontrolujte prosím své přihlašovací údaje a jméno. Použitý filtr (pro zkopírování a ověření v příkazovém řádku):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "Uživatel nenalezen. Zkontrolujte prosím své přihlašovací údaje a jméno. Použitý filtr (pro zkopírování a ověření v příkazovém řádku):
", "User found and settings verified." : "Uživatel nalezen a nastavení ověřeno.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavení ověřena, ale byl nalezen víc než jeden uživatel. Jen ten první se bude moci přihlásit. Zvažte užší filtr.", - "An unspecified error occurred. Please check the settings and the log." : "Došlo k nespecifikované chybě. Zkontrolujte prosím nastavení a soubor logu.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Zvažte zúžení vyhledávání, protože současné zahrnuje mnoho uživatelů, ze kterých se bude schopen přihlásit pouze první.", + "An unspecified error occurred. Please check log and settings." : "Došlo k nespecifikované chybě. Zkontrolujte prosím nastavení a soubor logu.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtr vyhledávání je neplatný, pravděpodobně z důvodu chybné syntax jako třeba neuzavřené závorky. Ověřte to.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Došlo k chybě připojení k LDAP / AD, zkontrolujte prosím host, port a přihlašovací údaje.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Zástupný symbol \"%uid\" chybí. Při dotatzu na LDAP / AD bude nahrazen přihlašovacím jménem.", @@ -60,7 +60,7 @@ "LDAP / AD integration" : "LDAP / AD propojení", "_%s group found_::_%s groups found_" : ["nalezena %s skupina","nalezeny %s skupiny","nalezeno %s skupin"], "_%s user found_::_%s users found_" : ["nalezen %s uživatel","nalezeni %s uživatelé","nalezeno %s uživatelů"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nelze detekovat atribut pro zobrazení jména uživatele. Upřesněte ho prosím sami v rozšířeném nastavení LDAP.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nelze detekovat atribut pro zobrazení jména uživatele. Upřesněte ho prosím sami v rozšířeném nastavení LDAP.", "Could not find the desired feature" : "Nelze nalézt požadovanou vlastnost", "Invalid Host" : "Neplatný hostitel", "Test Configuration" : "Vyzkoušet nastavení", diff --git a/apps/user_ldap/l10n/da.js b/apps/user_ldap/l10n/da.js index d017a4d3bb..0cf6247c80 100644 --- a/apps/user_ldap/l10n/da.js +++ b/apps/user_ldap/l10n/da.js @@ -3,10 +3,6 @@ OC.L10N.register( { "Failed to clear the mappings." : "Mislykkedes med at rydde delingerne.", "Failed to delete the server configuration" : "Kunne ikke slette server konfigurationen", - "The configuration is invalid: anonymous bind is not allowed." : "Konfigurationen er ugyldig: anonyme bindinger tillades ikke.", - "The configuration is valid and the connection could be established!" : "Konfigurationen er korrekt og forbindelsen kunne etableres!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurationen er gyldig, men forbindelsen mislykkedes. Tjek venligst serverindstillingerne og akkreditiverne.", - "The configuration is invalid. Please have a look at the logs for further details." : "Konfigurationen er ugyldig. Se venligst i loggen for yderligere detaljer.", "No action specified" : "Der er ikke angivet en handling", "No configuration specified" : "Der er ikke angivet en konfiguration", "No data specified" : "Der er ikke angivet data", @@ -38,10 +34,7 @@ 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?" : "Skift af tilstanden vil betyde aktivering af automatiske LDAP-forespørgsler. Afhængig af størrelsen på din LDAP, vil det kunne tage noget tid. Ønsker du stadig at ændre tilstanden?", "Mode switch" : "Skift af tilstand", "Select attributes" : "Vælg attributter", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Bruger blev ikke fundet. Tjek venligst dine login-attributter og brugernavnet. Gældende filter (til kopiér-og-indsæt for validering via kommandolinje):
", "User found and settings verified." : "Bruger blev fundetog indstillingerne bekræftet.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Indstillingerne blev verificieret, men mere end én bruger blev fundet. Kun den første, vil kunne logge ind. Overvej et mere begrænset filter.", - "An unspecified error occurred. Please check the settings and the log." : "Der opstod en uspecificeret fejl. Tjek venligst indstillingerne og loggen.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Søgefilteret er ugyldigt - sandsynligvis på grund af problemer med syntaksen, såsom et ulige antal åbne og lukkede parenteser. Gennemse venligst. ", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Der opstod en forbindelsesfejl til LDAP/AD - tjek venligst vært, port og brugeroplysninger.", "Please provide a login name to test against" : "Angiv venligst et loginnavn for at teste mod", @@ -50,7 +43,6 @@ OC.L10N.register( "LDAP / AD integration" : "LDAP / AD integration", "_%s group found_::_%s groups found_" : ["Der blev fundet %s gruppe","Der blev fundet %s grupper"], "_%s user found_::_%s users found_" : ["Der blev fundet %s bruger","Der blev fundet %s brugere"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunne ikke registrere navneattributten for visning af bruger. Angiv den venligst selv i de avancerede ldap-indstillinger.", "Could not find the desired feature" : "Fandt ikke den ønskede funktion", "Invalid Host" : "Ugyldig vært", "Test Configuration" : "Test konfigurationen", diff --git a/apps/user_ldap/l10n/da.json b/apps/user_ldap/l10n/da.json index 0afde6bf4c..db301ba175 100644 --- a/apps/user_ldap/l10n/da.json +++ b/apps/user_ldap/l10n/da.json @@ -1,10 +1,6 @@ { "translations": { "Failed to clear the mappings." : "Mislykkedes med at rydde delingerne.", "Failed to delete the server configuration" : "Kunne ikke slette server konfigurationen", - "The configuration is invalid: anonymous bind is not allowed." : "Konfigurationen er ugyldig: anonyme bindinger tillades ikke.", - "The configuration is valid and the connection could be established!" : "Konfigurationen er korrekt og forbindelsen kunne etableres!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurationen er gyldig, men forbindelsen mislykkedes. Tjek venligst serverindstillingerne og akkreditiverne.", - "The configuration is invalid. Please have a look at the logs for further details." : "Konfigurationen er ugyldig. Se venligst i loggen for yderligere detaljer.", "No action specified" : "Der er ikke angivet en handling", "No configuration specified" : "Der er ikke angivet en konfiguration", "No data specified" : "Der er ikke angivet data", @@ -36,10 +32,7 @@ "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?" : "Skift af tilstanden vil betyde aktivering af automatiske LDAP-forespørgsler. Afhængig af størrelsen på din LDAP, vil det kunne tage noget tid. Ønsker du stadig at ændre tilstanden?", "Mode switch" : "Skift af tilstand", "Select attributes" : "Vælg attributter", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Bruger blev ikke fundet. Tjek venligst dine login-attributter og brugernavnet. Gældende filter (til kopiér-og-indsæt for validering via kommandolinje):
", "User found and settings verified." : "Bruger blev fundetog indstillingerne bekræftet.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Indstillingerne blev verificieret, men mere end én bruger blev fundet. Kun den første, vil kunne logge ind. Overvej et mere begrænset filter.", - "An unspecified error occurred. Please check the settings and the log." : "Der opstod en uspecificeret fejl. Tjek venligst indstillingerne og loggen.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Søgefilteret er ugyldigt - sandsynligvis på grund af problemer med syntaksen, såsom et ulige antal åbne og lukkede parenteser. Gennemse venligst. ", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Der opstod en forbindelsesfejl til LDAP/AD - tjek venligst vært, port og brugeroplysninger.", "Please provide a login name to test against" : "Angiv venligst et loginnavn for at teste mod", @@ -48,7 +41,6 @@ "LDAP / AD integration" : "LDAP / AD integration", "_%s group found_::_%s groups found_" : ["Der blev fundet %s gruppe","Der blev fundet %s grupper"], "_%s user found_::_%s users found_" : ["Der blev fundet %s bruger","Der blev fundet %s brugere"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunne ikke registrere navneattributten for visning af bruger. Angiv den venligst selv i de avancerede ldap-indstillinger.", "Could not find the desired feature" : "Fandt ikke den ønskede funktion", "Invalid Host" : "Ugyldig vært", "Test Configuration" : "Test konfigurationen", diff --git a/apps/user_ldap/l10n/de.js b/apps/user_ldap/l10n/de.js index c6f33f807e..0f98e09228 100644 --- a/apps/user_ldap/l10n/de.js +++ b/apps/user_ldap/l10n/de.js @@ -3,10 +3,10 @@ OC.L10N.register( { "Failed to clear the mappings." : "Löschen der Zuordnungen fehlgeschlagen.", "Failed to delete the server configuration" : "Löschen der Serverkonfiguration fehlgeschlagen", - "The configuration is invalid: anonymous bind is not allowed." : "Die Konfiguration ist ungültig: anonymes Binden ist nicht erlaubt.", - "The configuration is valid and the connection could be established!" : "Die Konfiguration ist gültig und die Verbindung konnte hergestellt werden!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfe die Servereinstellungen und Anmeldeinformationen.", - "The configuration is invalid. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Details können in den Logdateien nachgelesen werden.", + "Invalid configuration: Anonymous binding is not allowed." : "Die Konfiguration ist ungültig: anonymes Binden ist nicht erlaubt. ", + "Valid configuration, connection established!" : "Gültige Konfiguration, Verbindung hergestellt!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfe die Servereinstellungen und Anmeldeinformationen. ", + "Invalid configuration. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Einzelheiten findest Du in den Logdateien.", "No action specified" : "Keine Aktion angegeben", "No configuration specified" : "Keine Konfiguration angegeben", "No data specified" : "Keine Daten angegeben", @@ -45,10 +45,10 @@ 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?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Deiner LDAP-Größe können diese einige Zeit in Anspruch nehmen. Soll immer noch in den Modus gewechselt werden?", "Mode switch" : "Modus wechseln", "Select attributes" : "Attribute auswählen", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Benutzer nicht gefunden. Bitte überprüfe Deine Anmelde-Attribute und Deinen Benutzernamen. Gültige Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "Benutzer nicht gefunden. Bitte überprüfe Deine Anmelde-Attribute und Benutzernamen. Wirksamer Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile):
", "User found and settings verified." : "Benutzer gefunden und Einstellungen überprüft.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen geprüft, es wurde mehr als ein Benutzer gefunden. Nur der ersten Benutzer wird in der Lage sein sich anzumelden. Verwende einen weiter einschränkenenden Filter.", - "An unspecified error occurred. Please check the settings and the log." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte prüfe die Einstellungen und die Logdatei.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Erwäge es, Deine Suche einzugrenzen, da sie viele Benutzer umfaßte. Nur der erste wird sich anmelden können.", + "An unspecified error occurred. Please check log and settings." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte prüfe die Logdatei und Einstellungen.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z.B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten, bitte Host, Port und Anmeldeinformationen überprüfen.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Der %uid - Platzhalter fehlt. Dieser wird mit dem Anmeldenamen beim Abfragen von LDAP / AD ersetzt.", @@ -62,7 +62,7 @@ OC.L10N.register( "LDAP / AD integration" : "LDAP / AD Integration", "_%s group found_::_%s groups found_" : ["%s Gruppe gefunden","%s Gruppen gefunden"], "_%s user found_::_%s users found_" : ["%s Benutzer gefunden","%s Benutzer gefunden"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte gib es in den erweiterten LDAP-Einstellungen selber an.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte gib es selbst in den erweiterten LDAP-Einstellungen an.", "Could not find the desired feature" : "Die gewünschte Funktion konnte nicht gefunden werden", "Invalid Host" : "Ungültiger Host", "Test Configuration" : "Testkonfiguration", diff --git a/apps/user_ldap/l10n/de.json b/apps/user_ldap/l10n/de.json index e4692eee43..06d2dd6275 100644 --- a/apps/user_ldap/l10n/de.json +++ b/apps/user_ldap/l10n/de.json @@ -1,10 +1,10 @@ { "translations": { "Failed to clear the mappings." : "Löschen der Zuordnungen fehlgeschlagen.", "Failed to delete the server configuration" : "Löschen der Serverkonfiguration fehlgeschlagen", - "The configuration is invalid: anonymous bind is not allowed." : "Die Konfiguration ist ungültig: anonymes Binden ist nicht erlaubt.", - "The configuration is valid and the connection could be established!" : "Die Konfiguration ist gültig und die Verbindung konnte hergestellt werden!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfe die Servereinstellungen und Anmeldeinformationen.", - "The configuration is invalid. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Details können in den Logdateien nachgelesen werden.", + "Invalid configuration: Anonymous binding is not allowed." : "Die Konfiguration ist ungültig: anonymes Binden ist nicht erlaubt. ", + "Valid configuration, connection established!" : "Gültige Konfiguration, Verbindung hergestellt!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfe die Servereinstellungen und Anmeldeinformationen. ", + "Invalid configuration. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Einzelheiten findest Du in den Logdateien.", "No action specified" : "Keine Aktion angegeben", "No configuration specified" : "Keine Konfiguration angegeben", "No data specified" : "Keine Daten angegeben", @@ -43,10 +43,10 @@ "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?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Deiner LDAP-Größe können diese einige Zeit in Anspruch nehmen. Soll immer noch in den Modus gewechselt werden?", "Mode switch" : "Modus wechseln", "Select attributes" : "Attribute auswählen", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Benutzer nicht gefunden. Bitte überprüfe Deine Anmelde-Attribute und Deinen Benutzernamen. Gültige Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "Benutzer nicht gefunden. Bitte überprüfe Deine Anmelde-Attribute und Benutzernamen. Wirksamer Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile):
", "User found and settings verified." : "Benutzer gefunden und Einstellungen überprüft.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen geprüft, es wurde mehr als ein Benutzer gefunden. Nur der ersten Benutzer wird in der Lage sein sich anzumelden. Verwende einen weiter einschränkenenden Filter.", - "An unspecified error occurred. Please check the settings and the log." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte prüfe die Einstellungen und die Logdatei.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Erwäge es, Deine Suche einzugrenzen, da sie viele Benutzer umfaßte. Nur der erste wird sich anmelden können.", + "An unspecified error occurred. Please check log and settings." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte prüfe die Logdatei und Einstellungen.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z.B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten, bitte Host, Port und Anmeldeinformationen überprüfen.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Der %uid - Platzhalter fehlt. Dieser wird mit dem Anmeldenamen beim Abfragen von LDAP / AD ersetzt.", @@ -60,7 +60,7 @@ "LDAP / AD integration" : "LDAP / AD Integration", "_%s group found_::_%s groups found_" : ["%s Gruppe gefunden","%s Gruppen gefunden"], "_%s user found_::_%s users found_" : ["%s Benutzer gefunden","%s Benutzer gefunden"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte gib es in den erweiterten LDAP-Einstellungen selber an.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte gib es selbst in den erweiterten LDAP-Einstellungen an.", "Could not find the desired feature" : "Die gewünschte Funktion konnte nicht gefunden werden", "Invalid Host" : "Ungültiger Host", "Test Configuration" : "Testkonfiguration", diff --git a/apps/user_ldap/l10n/de_DE.js b/apps/user_ldap/l10n/de_DE.js index f3e64022eb..0786dc85fd 100644 --- a/apps/user_ldap/l10n/de_DE.js +++ b/apps/user_ldap/l10n/de_DE.js @@ -3,10 +3,10 @@ OC.L10N.register( { "Failed to clear the mappings." : "Löschen der Zuordnungen fehlgeschlagen.", "Failed to delete the server configuration" : "Löschen der Serverkonfiguration fehlgeschlagen", - "The configuration is invalid: anonymous bind is not allowed." : "Die Konfiguration ist ungültig: Anonymous Bind ist nicht erlaubt.", - "The configuration is valid and the connection could be established!" : "Die Konfiguration ist gültig und die Verbindung konnte hergestellt werden!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfen Sie die Servereinstellungen und die Anmeldeinformationen.", - "The configuration is invalid. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Details können Sie in den Logdateien nachlesen.", + "Invalid configuration: Anonymous binding is not allowed." : "Die Konfiguration ist ungültig: anonymes Binden ist nicht erlaubt. ", + "Valid configuration, connection established!" : "Gültige Konfiguration, Verbindung hergestellt!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfen Sie die Servereinstellungen und die Anmeldeinformationen. ", + "Invalid configuration. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Details finden Sie in den Logdateien. ", "No action specified" : "Keine Aktion angegeben", "No configuration specified" : "Keine Konfiguration angegeben", "No data specified" : "Keine Daten angegeben", @@ -45,10 +45,10 @@ 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?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Ihrer LDAP-Größe können diese einige Zeit in Anspruch nehmen. Wollen Sie immer noch den Modus wechseln?", "Mode switch" : "Modus umschalten", "Select attributes" : "Attribute auswählen", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Benutzer nicht gefunden. Bitte überprüfen Sie Ihre Anmelde-Attribute und Ihren Benutzernamen. Gültiger Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "Benutzer nicht gefunden. Bitte überprüfen Sie Ihre Anmelde-Attribute und Benutzernamen. Wirksamer Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile):
", "User found and settings verified." : "Benutzer gefunden und Einstellungen überprüft.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen geprüft, es wurde mehr als ein Benutzer gefunden. Nur der ersten Benutzer wird in der Lage sein, sich anzumelden. Verwenden Sie einen weiter einschränkenenden Filter.", - "An unspecified error occurred. Please check the settings and the log." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte überprüfe die Einstellungen und die Logdatei.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Erwägen Sie, Ihre Suche einzugrenzen, da sie viele Benutzer umfaßte. Nur der erste wird sich anmelden können.", + "An unspecified error occurred. Please check log and settings." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte prüfe die Logdatei und Einstellungen.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z.B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten, bitte überprüfen Sie Host, Port und Anmeldeinformationen.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Der \"1 %u id\" Platzhalter fehlt. Er wird durch den Anmeldenamen ersetzt, wenn LDAP / AD abgefragt wird.", @@ -62,7 +62,7 @@ OC.L10N.register( "LDAP / AD integration" : "LDAP/AD-Integration", "_%s group found_::_%s groups found_" : ["%s Gruppe gefunden","%s Gruppen gefunden"], "_%s user found_::_%s users found_" : ["%s Benutzer gefunden","%s Benutzer gefunden"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte geben Sie es in den erweiterten LDAP-Einstellungen selber an.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte geben Sie es selbst in den erweiterten LDAP-Einstellungen an.", "Could not find the desired feature" : "Die gewünschte Funktion konnte nicht gefunden werden", "Invalid Host" : "Ungültiger Host", "Test Configuration" : "Testkonfiguration", diff --git a/apps/user_ldap/l10n/de_DE.json b/apps/user_ldap/l10n/de_DE.json index 6aec7b8f2e..96f53778d8 100644 --- a/apps/user_ldap/l10n/de_DE.json +++ b/apps/user_ldap/l10n/de_DE.json @@ -1,10 +1,10 @@ { "translations": { "Failed to clear the mappings." : "Löschen der Zuordnungen fehlgeschlagen.", "Failed to delete the server configuration" : "Löschen der Serverkonfiguration fehlgeschlagen", - "The configuration is invalid: anonymous bind is not allowed." : "Die Konfiguration ist ungültig: Anonymous Bind ist nicht erlaubt.", - "The configuration is valid and the connection could be established!" : "Die Konfiguration ist gültig und die Verbindung konnte hergestellt werden!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfen Sie die Servereinstellungen und die Anmeldeinformationen.", - "The configuration is invalid. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Details können Sie in den Logdateien nachlesen.", + "Invalid configuration: Anonymous binding is not allowed." : "Die Konfiguration ist ungültig: anonymes Binden ist nicht erlaubt. ", + "Valid configuration, connection established!" : "Gültige Konfiguration, Verbindung hergestellt!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfen Sie die Servereinstellungen und die Anmeldeinformationen. ", + "Invalid configuration. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Details finden Sie in den Logdateien. ", "No action specified" : "Keine Aktion angegeben", "No configuration specified" : "Keine Konfiguration angegeben", "No data specified" : "Keine Daten angegeben", @@ -43,10 +43,10 @@ "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?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Ihrer LDAP-Größe können diese einige Zeit in Anspruch nehmen. Wollen Sie immer noch den Modus wechseln?", "Mode switch" : "Modus umschalten", "Select attributes" : "Attribute auswählen", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Benutzer nicht gefunden. Bitte überprüfen Sie Ihre Anmelde-Attribute und Ihren Benutzernamen. Gültiger Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "Benutzer nicht gefunden. Bitte überprüfen Sie Ihre Anmelde-Attribute und Benutzernamen. Wirksamer Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile):
", "User found and settings verified." : "Benutzer gefunden und Einstellungen überprüft.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen geprüft, es wurde mehr als ein Benutzer gefunden. Nur der ersten Benutzer wird in der Lage sein, sich anzumelden. Verwenden Sie einen weiter einschränkenenden Filter.", - "An unspecified error occurred. Please check the settings and the log." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte überprüfe die Einstellungen und die Logdatei.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Erwägen Sie, Ihre Suche einzugrenzen, da sie viele Benutzer umfaßte. Nur der erste wird sich anmelden können.", + "An unspecified error occurred. Please check log and settings." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte prüfe die Logdatei und Einstellungen.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z.B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten, bitte überprüfen Sie Host, Port und Anmeldeinformationen.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Der \"1 %u id\" Platzhalter fehlt. Er wird durch den Anmeldenamen ersetzt, wenn LDAP / AD abgefragt wird.", @@ -60,7 +60,7 @@ "LDAP / AD integration" : "LDAP/AD-Integration", "_%s group found_::_%s groups found_" : ["%s Gruppe gefunden","%s Gruppen gefunden"], "_%s user found_::_%s users found_" : ["%s Benutzer gefunden","%s Benutzer gefunden"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte geben Sie es in den erweiterten LDAP-Einstellungen selber an.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte geben Sie es selbst in den erweiterten LDAP-Einstellungen an.", "Could not find the desired feature" : "Die gewünschte Funktion konnte nicht gefunden werden", "Invalid Host" : "Ungültiger Host", "Test Configuration" : "Testkonfiguration", diff --git a/apps/user_ldap/l10n/el.js b/apps/user_ldap/l10n/el.js index 4ab5ad6efd..b006f8a886 100644 --- a/apps/user_ldap/l10n/el.js +++ b/apps/user_ldap/l10n/el.js @@ -3,10 +3,7 @@ OC.L10N.register( { "Failed to clear the mappings." : "Αποτυχία εκκαθάρισης των αντιστοιχιών.", "Failed to delete the server configuration" : "Αποτυχία διαγραφής ρυθμίσεων διακομιστή", - "The configuration is invalid: anonymous bind is not allowed." : "Η διαμόρφωση δεν είναι έγκυρη: δεν επιτρέπεται ανώνυμη δέσμευση.", - "The configuration is valid and the connection could be established!" : "Οι ρυθμίσεις είναι έγκυρες και η σύνδεση μπορεί να πραγματοποιηθεί!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Οι ρυθμίσεις είναι έγκυρες, αλλά απέτυχε η σύνδεση. Παρακαλώ ελέγξτε τις ρυθμίσεις του διακομιστή και τα διαπιστευτήρια.", - "The configuration is invalid. Please have a look at the logs for further details." : "Η διαμόρφωση είναι άκυρη. Παρακαλώ ελέγξτε τα αρχεία σφαλμάτων για περαιτέρω λεπτομέρειες.", + "Valid configuration, connection established!" : "Επιτυχής ρύθμιση, συνδεθήκατε με επιτυχία", "No action specified" : "Καμμία εντολή δεν προσδιορίστηκε", "No configuration specified" : "Καμμία διαμόρφωση δεν προσδιορίστηκε", "No data specified" : "Δεν προσδιορίστηκαν δεδομένα", @@ -43,21 +40,22 @@ 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?" : "Η αλλαγή της κατάστασης θα ενεργοποιήσει αυτόματα ερωτήματα LDAP. Ανάλογα με το μέγεθος του LDAP αυτό μπορεί να διαρκέσει αρκετά. Θέλετε ακόμη να αλλάξετε κατάσταση λειτουργίας;", "Mode switch" : "Αλλαγή κατάστασης", "Select attributes" : "Επιλογή χαρακτηριστικών", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Δεν βρέθηκε ο χρήστης. Παρακαλούμε ελέγξτε ότι τις ιδιότητες σύνδεσης και το όνομα χρήστη. Ενεργό φίλτρο (για αντιγραφή και επικόλληση για επικύρωση σε γραμμή εντολών): ", "User found and settings verified." : "Ο χρήστης βρέθηκε και οι ρυθμίσεις επιβεβαιώθηκαν.", - "An unspecified error occurred. Please check the settings and the log." : "Προέκυψε ένα απροσδιόριστο σφάλμα. Παρακαλούμε ελέγξτε τις ρυθμίσεςι και το αρχείο ακταγραφής.", + "An unspecified error occurred. Please check log and settings." : "Παρουσιάστηκε ακαθόριστο λάθος. Παρακαλώ ελέγξτε το αρχείο καταγραφής και τις ρυθμίσεις.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Το φίλτρο αναζήτησης δεν είναι έγκυρο, πιθανώς λόγω συντακτικών προβλημάτων όπως μη ταίριασμα ανοίγματος και κλεισίματος αγκυλών. Παρακαλούμε διορθώστε.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Προέκυψε σφάλμα σύνδεσης στο LDAP / AD, παρακαλούμε ελέγξτε διακομιστή θύρα και διαπιστευτήρια.", "Please provide a login name to test against" : "Παρακαλούμε δώστε ένα όνομα σύνδεσης για να γίνει δοκιμή", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Το πεδίο ομάδας απενεργοποιήθηκε επειδή ο διακομιστής LDAP / AD δεν υποστηρίζει το memberOf.", + "Please login with the new password" : "Παρακαλώ κάντε είσοδο με το νέο συνθηματικό", "Your password will expire tomorrow." : "Το συνθηματικό σας θα λήξει αύριο.", + "Your password will expire today." : "Το συνθηματικό σας λήγει σήμερα.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Το συνθηματικό σας θα λήξει σε %n ημέρα.","Το συνθηματικό σας θα λήξει σε %n ημέρες."], + "LDAP / AD integration" : "LDAP / AD ενσωμάτωση", "_%s group found_::_%s groups found_" : ["%s ομάδα βρέθηκε","%s ομάδες βρέθηκαν"], "_%s user found_::_%s users found_" : ["%s χρήστης βρέθηκε","%s χρήστες βρέθηκαν"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Δεν ήταν δυνατή η ανίχνευση της ιδιότητας του εμφανιζόμενου ονόματος χρήστη . Παρακαλείστε να το προσδιορίσετε στις προηγμένες ρυθμίσεις LDAP", - "Could not find the desired feature" : "Αδυναμία εύρεσης επιθυμητου χαρακτηριστικού", + "Could not find the desired feature" : "Αδυναμία εύρεσης επιθυμητού χαρακτηριστικού", "Invalid Host" : "Άκυρος εξυπηρετητής", - "Test Configuration" : "Δοκιμαστικες ρυθμισεις", + "Test Configuration" : "Δοκιμαστικές ρυθμίσεις", "Help" : "Βοήθεια", "Groups meeting these criteria are available in %s:" : "Οι ομάδες που πληρούν τα κριτήρια είναι διαθέσιμες σε %s:", "Only these object classes:" : "Μόνο οι κλάσεις αντικειμένων:", @@ -68,8 +66,10 @@ OC.L10N.register( "Edit LDAP Query" : "Επεξεργασία ερωτήματος ", "LDAP Filter:" : "Φίλτρο LDAP:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Το φίλτρο καθορίζει ποιες ομάδες LDAP θα έχουν πρόσβαση στην εγκατάσταση %s.", + "Verify settings and count the groups" : "Έλεγχος ρυθμίσεων και μέτρημα ομάδων", "When logging in, %s will find the user based on the following attributes:" : "Κατά τη σύνδεση, το %s θα βρει το χρήστη βασιζόμενος στις ακόλουθες ιδιότητες:", "LDAP / AD Username:" : "Όνομα χρήστη LDAP / AD:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Μπορείτε να παρακάμψετε το πρωτόκολο αν δεν επιθυμείτε SSL. Εάν είναι επιθυμητό ξεκινήστε με ldaps://", "LDAP / AD Email Address:" : "Διεύθυνση ηλ. ταχυδρομείου LDAP / AD:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Επιτρέπει με χρήση μια ιδιότητας email. Τα mail και mailPrimaryAddress θα επιτραπούν.", "Other Attributes:" : "Άλλες Ιδιότητες:", @@ -94,6 +94,7 @@ OC.L10N.register( "Test Base DN" : "Δοκιμή ", "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Αποφυγή αυτόματων αιτημάτων LDAP. Προτιμότερο για μεγαλύτερες εγκαταστάσεις, αλλά απαιτεί κάποιες γνώσεις LDAP.", "Manually enter LDAP filters (recommended for large directories)" : "Εισάγετε με μη αυτόματο τρόπο φίλτρα LDAP (προτείνεται για μεγάλους καταλόγους)", + "Listing and searching for users is constrained by these criteria:" : "Η εμφάνιση και αναζήτηση για χρήστες περιορίζεται από τα κριτήρια:", "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." : "Οι πιο συνηθισμένες κλάσεις αντικειμένων για τους χρήστες είναι οι organizationalPerson, person, user, και inetOrgPerson. Εάν δεν είσαστε σίγουροι πιο κλάση να επιλέξετε, παρακαλώ συμβουλευτείτε τον διαχειριστή του καταλόγου σας.", "The filter specifies which LDAP users shall have access to the %s instance." : "Το φίλτρο καθορίζει ποιοι χρήστες LDAP θα έχουν πρόσβαση στην εγκατάσταση %s.", "Verify settings and count users" : "Επαλήθευση ρυθμίσεων και καταμέτρηση χρηστών", @@ -146,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 6878070cea..57e5ac6097 100644 --- a/apps/user_ldap/l10n/el.json +++ b/apps/user_ldap/l10n/el.json @@ -1,10 +1,7 @@ { "translations": { "Failed to clear the mappings." : "Αποτυχία εκκαθάρισης των αντιστοιχιών.", "Failed to delete the server configuration" : "Αποτυχία διαγραφής ρυθμίσεων διακομιστή", - "The configuration is invalid: anonymous bind is not allowed." : "Η διαμόρφωση δεν είναι έγκυρη: δεν επιτρέπεται ανώνυμη δέσμευση.", - "The configuration is valid and the connection could be established!" : "Οι ρυθμίσεις είναι έγκυρες και η σύνδεση μπορεί να πραγματοποιηθεί!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Οι ρυθμίσεις είναι έγκυρες, αλλά απέτυχε η σύνδεση. Παρακαλώ ελέγξτε τις ρυθμίσεις του διακομιστή και τα διαπιστευτήρια.", - "The configuration is invalid. Please have a look at the logs for further details." : "Η διαμόρφωση είναι άκυρη. Παρακαλώ ελέγξτε τα αρχεία σφαλμάτων για περαιτέρω λεπτομέρειες.", + "Valid configuration, connection established!" : "Επιτυχής ρύθμιση, συνδεθήκατε με επιτυχία", "No action specified" : "Καμμία εντολή δεν προσδιορίστηκε", "No configuration specified" : "Καμμία διαμόρφωση δεν προσδιορίστηκε", "No data specified" : "Δεν προσδιορίστηκαν δεδομένα", @@ -41,21 +38,22 @@ "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?" : "Η αλλαγή της κατάστασης θα ενεργοποιήσει αυτόματα ερωτήματα LDAP. Ανάλογα με το μέγεθος του LDAP αυτό μπορεί να διαρκέσει αρκετά. Θέλετε ακόμη να αλλάξετε κατάσταση λειτουργίας;", "Mode switch" : "Αλλαγή κατάστασης", "Select attributes" : "Επιλογή χαρακτηριστικών", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Δεν βρέθηκε ο χρήστης. Παρακαλούμε ελέγξτε ότι τις ιδιότητες σύνδεσης και το όνομα χρήστη. Ενεργό φίλτρο (για αντιγραφή και επικόλληση για επικύρωση σε γραμμή εντολών): ", "User found and settings verified." : "Ο χρήστης βρέθηκε και οι ρυθμίσεις επιβεβαιώθηκαν.", - "An unspecified error occurred. Please check the settings and the log." : "Προέκυψε ένα απροσδιόριστο σφάλμα. Παρακαλούμε ελέγξτε τις ρυθμίσεςι και το αρχείο ακταγραφής.", + "An unspecified error occurred. Please check log and settings." : "Παρουσιάστηκε ακαθόριστο λάθος. Παρακαλώ ελέγξτε το αρχείο καταγραφής και τις ρυθμίσεις.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Το φίλτρο αναζήτησης δεν είναι έγκυρο, πιθανώς λόγω συντακτικών προβλημάτων όπως μη ταίριασμα ανοίγματος και κλεισίματος αγκυλών. Παρακαλούμε διορθώστε.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Προέκυψε σφάλμα σύνδεσης στο LDAP / AD, παρακαλούμε ελέγξτε διακομιστή θύρα και διαπιστευτήρια.", "Please provide a login name to test against" : "Παρακαλούμε δώστε ένα όνομα σύνδεσης για να γίνει δοκιμή", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Το πεδίο ομάδας απενεργοποιήθηκε επειδή ο διακομιστής LDAP / AD δεν υποστηρίζει το memberOf.", + "Please login with the new password" : "Παρακαλώ κάντε είσοδο με το νέο συνθηματικό", "Your password will expire tomorrow." : "Το συνθηματικό σας θα λήξει αύριο.", + "Your password will expire today." : "Το συνθηματικό σας λήγει σήμερα.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Το συνθηματικό σας θα λήξει σε %n ημέρα.","Το συνθηματικό σας θα λήξει σε %n ημέρες."], + "LDAP / AD integration" : "LDAP / AD ενσωμάτωση", "_%s group found_::_%s groups found_" : ["%s ομάδα βρέθηκε","%s ομάδες βρέθηκαν"], "_%s user found_::_%s users found_" : ["%s χρήστης βρέθηκε","%s χρήστες βρέθηκαν"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Δεν ήταν δυνατή η ανίχνευση της ιδιότητας του εμφανιζόμενου ονόματος χρήστη . Παρακαλείστε να το προσδιορίσετε στις προηγμένες ρυθμίσεις LDAP", - "Could not find the desired feature" : "Αδυναμία εύρεσης επιθυμητου χαρακτηριστικού", + "Could not find the desired feature" : "Αδυναμία εύρεσης επιθυμητού χαρακτηριστικού", "Invalid Host" : "Άκυρος εξυπηρετητής", - "Test Configuration" : "Δοκιμαστικες ρυθμισεις", + "Test Configuration" : "Δοκιμαστικές ρυθμίσεις", "Help" : "Βοήθεια", "Groups meeting these criteria are available in %s:" : "Οι ομάδες που πληρούν τα κριτήρια είναι διαθέσιμες σε %s:", "Only these object classes:" : "Μόνο οι κλάσεις αντικειμένων:", @@ -66,8 +64,10 @@ "Edit LDAP Query" : "Επεξεργασία ερωτήματος ", "LDAP Filter:" : "Φίλτρο LDAP:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Το φίλτρο καθορίζει ποιες ομάδες LDAP θα έχουν πρόσβαση στην εγκατάσταση %s.", + "Verify settings and count the groups" : "Έλεγχος ρυθμίσεων και μέτρημα ομάδων", "When logging in, %s will find the user based on the following attributes:" : "Κατά τη σύνδεση, το %s θα βρει το χρήστη βασιζόμενος στις ακόλουθες ιδιότητες:", "LDAP / AD Username:" : "Όνομα χρήστη LDAP / AD:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Μπορείτε να παρακάμψετε το πρωτόκολο αν δεν επιθυμείτε SSL. Εάν είναι επιθυμητό ξεκινήστε με ldaps://", "LDAP / AD Email Address:" : "Διεύθυνση ηλ. ταχυδρομείου LDAP / AD:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Επιτρέπει με χρήση μια ιδιότητας email. Τα mail και mailPrimaryAddress θα επιτραπούν.", "Other Attributes:" : "Άλλες Ιδιότητες:", @@ -92,6 +92,7 @@ "Test Base DN" : "Δοκιμή ", "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Αποφυγή αυτόματων αιτημάτων LDAP. Προτιμότερο για μεγαλύτερες εγκαταστάσεις, αλλά απαιτεί κάποιες γνώσεις LDAP.", "Manually enter LDAP filters (recommended for large directories)" : "Εισάγετε με μη αυτόματο τρόπο φίλτρα LDAP (προτείνεται για μεγάλους καταλόγους)", + "Listing and searching for users is constrained by these criteria:" : "Η εμφάνιση και αναζήτηση για χρήστες περιορίζεται από τα κριτήρια:", "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." : "Οι πιο συνηθισμένες κλάσεις αντικειμένων για τους χρήστες είναι οι organizationalPerson, person, user, και inetOrgPerson. Εάν δεν είσαστε σίγουροι πιο κλάση να επιλέξετε, παρακαλώ συμβουλευτείτε τον διαχειριστή του καταλόγου σας.", "The filter specifies which LDAP users shall have access to the %s instance." : "Το φίλτρο καθορίζει ποιοι χρήστες LDAP θα έχουν πρόσβαση στην εγκατάσταση %s.", "Verify settings and count users" : "Επαλήθευση ρυθμίσεων και καταμέτρηση χρηστών", @@ -144,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/en_GB.js b/apps/user_ldap/l10n/en_GB.js index b3601b4b22..db9f8cd216 100644 --- a/apps/user_ldap/l10n/en_GB.js +++ b/apps/user_ldap/l10n/en_GB.js @@ -3,10 +3,10 @@ OC.L10N.register( { "Failed to clear the mappings." : "Failed to clear the mappings.", "Failed to delete the server configuration" : "Failed to delete the server configuration", - "The configuration is invalid: anonymous bind is not allowed." : "The configuration is invalid: anonymous bind is not allowed.", - "The configuration is valid and the connection could be established!" : "The configuration is valid and the connection could be established!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "The configuration is valid, but the Bind failed. Please check the server settings and credentials.", - "The configuration is invalid. Please have a look at the logs for further details." : "The configuration is invalid. Please have a look at the logs for further details.", + "Invalid configuration: Anonymous binding is not allowed." : "Invalid configuration: Anonymous binding is not allowed.", + "Valid configuration, connection established!" : "Valid configuration, connection established!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Valid configuration, but binding failed. Please check the server settings and credentials.", + "Invalid configuration. Please have a look at the logs for further details." : "Invalid configuration. Please have a look at the logs for further details.", "No action specified" : "No action specified", "No configuration specified" : "No configuration specified", "No data specified" : "No data specified", @@ -45,10 +45,10 @@ 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?" : "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?", "Mode switch" : "Mode switch", "Select attributes" : "Select attributes", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
", "User found and settings verified." : "User found and settings verified.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter.", - "An unspecified error occurred. Please check the settings and the log." : "An unspecified error occurred. Please check the settings and the log.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in.", + "An unspecified error occurred. Please check log and settings." : "An unspecified error occurred. Please check log and settings.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "The search filter is invalid, probably due to syntax issues like an uneven number of opened and closed brackets. Please revise.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "A connection error to LDAP / AD occurred, please check host, port and credentials.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD.", @@ -62,7 +62,7 @@ OC.L10N.register( "LDAP / AD integration" : "LDAP / AD integration", "_%s group found_::_%s groups found_" : ["%s group found","%s groups found"], "_%s user found_::_%s users found_" : ["%s user found","%s users found"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings.", "Could not find the desired feature" : "Could not find the desired feature", "Invalid Host" : "Invalid Host", "Test Configuration" : "Test Configuration", diff --git a/apps/user_ldap/l10n/en_GB.json b/apps/user_ldap/l10n/en_GB.json index 6bea154a08..2a1f1ffcdf 100644 --- a/apps/user_ldap/l10n/en_GB.json +++ b/apps/user_ldap/l10n/en_GB.json @@ -1,10 +1,10 @@ { "translations": { "Failed to clear the mappings." : "Failed to clear the mappings.", "Failed to delete the server configuration" : "Failed to delete the server configuration", - "The configuration is invalid: anonymous bind is not allowed." : "The configuration is invalid: anonymous bind is not allowed.", - "The configuration is valid and the connection could be established!" : "The configuration is valid and the connection could be established!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "The configuration is valid, but the Bind failed. Please check the server settings and credentials.", - "The configuration is invalid. Please have a look at the logs for further details." : "The configuration is invalid. Please have a look at the logs for further details.", + "Invalid configuration: Anonymous binding is not allowed." : "Invalid configuration: Anonymous binding is not allowed.", + "Valid configuration, connection established!" : "Valid configuration, connection established!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Valid configuration, but binding failed. Please check the server settings and credentials.", + "Invalid configuration. Please have a look at the logs for further details." : "Invalid configuration. Please have a look at the logs for further details.", "No action specified" : "No action specified", "No configuration specified" : "No configuration specified", "No data specified" : "No data specified", @@ -43,10 +43,10 @@ "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?" : "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?", "Mode switch" : "Mode switch", "Select attributes" : "Select attributes", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
", "User found and settings verified." : "User found and settings verified.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter.", - "An unspecified error occurred. Please check the settings and the log." : "An unspecified error occurred. Please check the settings and the log.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in.", + "An unspecified error occurred. Please check log and settings." : "An unspecified error occurred. Please check log and settings.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "The search filter is invalid, probably due to syntax issues like an uneven number of opened and closed brackets. Please revise.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "A connection error to LDAP / AD occurred, please check host, port and credentials.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD.", @@ -60,7 +60,7 @@ "LDAP / AD integration" : "LDAP / AD integration", "_%s group found_::_%s groups found_" : ["%s group found","%s groups found"], "_%s user found_::_%s users found_" : ["%s user found","%s users found"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings.", "Could not find the desired feature" : "Could not find the desired feature", "Invalid Host" : "Invalid Host", "Test Configuration" : "Test Configuration", diff --git a/apps/user_ldap/l10n/es.js b/apps/user_ldap/l10n/es.js index 461aa2aea1..8388bf93b3 100644 --- a/apps/user_ldap/l10n/es.js +++ b/apps/user_ldap/l10n/es.js @@ -3,10 +3,8 @@ OC.L10N.register( { "Failed to clear the mappings." : "Ocurrió un fallo al borrar las asignaciones.", "Failed to delete the server configuration" : "No se pudo borrar la configuración del servidor", - "The configuration is invalid: anonymous bind is not allowed." : "La configuración no es válida: no están permitidos enlaces anónimos.", - "The configuration is valid and the connection could be established!" : "¡La configuración es válida y la conexión puede establecerse!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuración es válida, pero falló el nexo. Por favor, compruebe la configuración del servidor y las credenciales.", - "The configuration is invalid. Please have a look at the logs for further details." : "La configuración no es válida. Por favor, revise el registro para más detalles.", + "Valid configuration, connection established!" : "Configuración válida. ¡Conexión establecida!", + "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor, echa un vistazo al registro para más detalles.", "No action specified" : "No se ha especificado la acción", "No configuration specified" : "No se ha especificado la configuración", "No data specified" : "No se han especificado los datos", @@ -45,10 +43,10 @@ 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?" : "Cambiando el modo habilitará automáticamente las consultas LDAP. Dependiendo del tamaño de su LDAP puede tardar un rato. ¿Desea cambiar el modo?", "Mode switch" : "Modo interruptor", "Select attributes" : "Seleccionar atributos", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Usuario no encontrado. Por favor verifique los atributos de inicio de sesión y nombre de usuario. Filtro eficaz (copie-y-pegue para validar desde la línea de comando):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "Usuario no encontrado. Por favor, comprueba tus atributos de registro y el nombre de usuario. Filtro efectivo (para copiar y pegar para validación en línea de comandos):
", "User found and settings verified." : "Usuario encontrado y configuración verificada.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ajustes verificados, pero más de un usuario encontrado. Solo el primero será capaz de iniciar sesión. Considere un filtro más fino.", - "An unspecified error occurred. Please check the settings and the log." : "Un error no especificado ocurrió. Por favor verifique las configuraciones y el registro.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Considera ajustar tu búsqueda, pues abarca varios usuarios, solo el primero de los cuales podrá entrar.", + "An unspecified error occurred. Please check log and settings." : "Ha ocurrido un error no especificado. Por favor, comprueba el registro y las configuraciones.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de búsqueda es inválido, probablemente debido a problemas de sintáxis tales como números impares de paréntesis abiertos y cerrados. Por favor revíselos.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Un error de conexión a LDAP / AD ocurrió, por favor verifique host, puerto y credenciales.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Falta el marcador de posición \"%uid\". Será reemplazado por el nombre de registro al consultar LDAP / AD.", @@ -62,7 +60,7 @@ OC.L10N.register( "LDAP / AD integration" : "Integración LDAP / AD", "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","Grupos %s encontrados"], "_%s user found_::_%s users found_" : ["Usuario %s encontrado","Usuarios %s encontrados"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "No se pudo detectar el atributo de nombre de usuario pantalla. Por favor especifique lo mismo en ajustes avanzados ldap.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No se ha podido detectar el atributo del nombre ", "Could not find the desired feature" : "No se puede encontrar la función deseada.", "Invalid Host" : "Host inválido", "Test Configuration" : "Configuración de prueba", diff --git a/apps/user_ldap/l10n/es.json b/apps/user_ldap/l10n/es.json index 953e9d264a..0580589b7e 100644 --- a/apps/user_ldap/l10n/es.json +++ b/apps/user_ldap/l10n/es.json @@ -1,10 +1,8 @@ { "translations": { "Failed to clear the mappings." : "Ocurrió un fallo al borrar las asignaciones.", "Failed to delete the server configuration" : "No se pudo borrar la configuración del servidor", - "The configuration is invalid: anonymous bind is not allowed." : "La configuración no es válida: no están permitidos enlaces anónimos.", - "The configuration is valid and the connection could be established!" : "¡La configuración es válida y la conexión puede establecerse!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuración es válida, pero falló el nexo. Por favor, compruebe la configuración del servidor y las credenciales.", - "The configuration is invalid. Please have a look at the logs for further details." : "La configuración no es válida. Por favor, revise el registro para más detalles.", + "Valid configuration, connection established!" : "Configuración válida. ¡Conexión establecida!", + "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor, echa un vistazo al registro para más detalles.", "No action specified" : "No se ha especificado la acción", "No configuration specified" : "No se ha especificado la configuración", "No data specified" : "No se han especificado los datos", @@ -43,10 +41,10 @@ "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?" : "Cambiando el modo habilitará automáticamente las consultas LDAP. Dependiendo del tamaño de su LDAP puede tardar un rato. ¿Desea cambiar el modo?", "Mode switch" : "Modo interruptor", "Select attributes" : "Seleccionar atributos", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Usuario no encontrado. Por favor verifique los atributos de inicio de sesión y nombre de usuario. Filtro eficaz (copie-y-pegue para validar desde la línea de comando):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "Usuario no encontrado. Por favor, comprueba tus atributos de registro y el nombre de usuario. Filtro efectivo (para copiar y pegar para validación en línea de comandos):
", "User found and settings verified." : "Usuario encontrado y configuración verificada.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ajustes verificados, pero más de un usuario encontrado. Solo el primero será capaz de iniciar sesión. Considere un filtro más fino.", - "An unspecified error occurred. Please check the settings and the log." : "Un error no especificado ocurrió. Por favor verifique las configuraciones y el registro.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Considera ajustar tu búsqueda, pues abarca varios usuarios, solo el primero de los cuales podrá entrar.", + "An unspecified error occurred. Please check log and settings." : "Ha ocurrido un error no especificado. Por favor, comprueba el registro y las configuraciones.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de búsqueda es inválido, probablemente debido a problemas de sintáxis tales como números impares de paréntesis abiertos y cerrados. Por favor revíselos.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Un error de conexión a LDAP / AD ocurrió, por favor verifique host, puerto y credenciales.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Falta el marcador de posición \"%uid\". Será reemplazado por el nombre de registro al consultar LDAP / AD.", @@ -60,7 +58,7 @@ "LDAP / AD integration" : "Integración LDAP / AD", "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","Grupos %s encontrados"], "_%s user found_::_%s users found_" : ["Usuario %s encontrado","Usuarios %s encontrados"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "No se pudo detectar el atributo de nombre de usuario pantalla. Por favor especifique lo mismo en ajustes avanzados ldap.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No se ha podido detectar el atributo del nombre ", "Could not find the desired feature" : "No se puede encontrar la función deseada.", "Invalid Host" : "Host inválido", "Test Configuration" : "Configuración de prueba", diff --git a/apps/user_ldap/l10n/es_AR.js b/apps/user_ldap/l10n/es_AR.js index 2988aab059..50cc5c63ac 100644 --- a/apps/user_ldap/l10n/es_AR.js +++ b/apps/user_ldap/l10n/es_AR.js @@ -3,10 +3,6 @@ OC.L10N.register( { "Failed to clear the mappings." : "Se presentó una falla al borrar los mapeos.", "Failed to delete the server configuration" : "Se presentó una falla al borrar la configuración del servidor", - "The configuration is invalid: anonymous bind is not allowed." : "La configuración es inválida: No se permite hacer una vinculación anónima . ", - "The configuration is valid and the connection could be established!" : "¡La configuración es válida y la conexión pudo ser establecida!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuración es válida, pero falló la Vinculación. Favor de verificar los ajustes del servidor y las credenciales.", - "The configuration is invalid. Please have a look at the logs for further details." : "La configuración es inválida. Favor de consultar las bitácoras para más detalles.", "No action specified" : "No se ha especificado una acción", "No configuration specified" : "No se ha especificado una configuración", "No data specified" : "No se han especificado datos", @@ -45,10 +41,7 @@ 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?" : "Cambiar la modalidad habilitará las consultas automaticas de LDAP. Dependiendo del tamaño de su LDAP esto puede tomar algun tiempo. ¿Aún desea cambiar la modalidad?", "Mode switch" : "Cambio de modo", "Select attributes" : "Seleccionar atributos", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "El usuario no fue encontrado. Favor de verficar los atributos de inicio de sesión así como su nombre de usuario. Filtro aplicado (para copiar-y-pegar para validar en la línea de comandos):
", "User found and settings verified." : "Usuario encontrado y configuraciones verificadas. ", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Configuraciones verficados, pero se encontró más de un usuario. Sólo el primero será capaz de iniciar sesión. Considere un filtro más refinado.", - "An unspecified error occurred. Please check the settings and the log." : "Se presentó un error no especificado. Favor de verificar las configuraciones y la bitácroa. ", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Favor de verificar. ", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Se presentó una falla con la conexión al servidor LDAP / AD, favor de verificar el servidor, puerto y credenciales. ", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Falta el \"%uid\" del marcador de posición. Será reemplazado con el nombre de usuario al consultar LDAP / AD.", @@ -62,7 +55,6 @@ OC.L10N.register( "LDAP / AD integration" : "Integración con LDAP / AD", "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados"], "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "No fue posible detectar el atributo nombre a desplegar del usuario. Favor de especificarlo usted mismo en las configuraciones avanzadas de LDAP.", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", "Test Configuration" : "Probar configuración", diff --git a/apps/user_ldap/l10n/es_AR.json b/apps/user_ldap/l10n/es_AR.json index e284895699..1d2c2ec754 100644 --- a/apps/user_ldap/l10n/es_AR.json +++ b/apps/user_ldap/l10n/es_AR.json @@ -1,10 +1,6 @@ { "translations": { "Failed to clear the mappings." : "Se presentó una falla al borrar los mapeos.", "Failed to delete the server configuration" : "Se presentó una falla al borrar la configuración del servidor", - "The configuration is invalid: anonymous bind is not allowed." : "La configuración es inválida: No se permite hacer una vinculación anónima . ", - "The configuration is valid and the connection could be established!" : "¡La configuración es válida y la conexión pudo ser establecida!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuración es válida, pero falló la Vinculación. Favor de verificar los ajustes del servidor y las credenciales.", - "The configuration is invalid. Please have a look at the logs for further details." : "La configuración es inválida. Favor de consultar las bitácoras para más detalles.", "No action specified" : "No se ha especificado una acción", "No configuration specified" : "No se ha especificado una configuración", "No data specified" : "No se han especificado datos", @@ -43,10 +39,7 @@ "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?" : "Cambiar la modalidad habilitará las consultas automaticas de LDAP. Dependiendo del tamaño de su LDAP esto puede tomar algun tiempo. ¿Aún desea cambiar la modalidad?", "Mode switch" : "Cambio de modo", "Select attributes" : "Seleccionar atributos", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "El usuario no fue encontrado. Favor de verficar los atributos de inicio de sesión así como su nombre de usuario. Filtro aplicado (para copiar-y-pegar para validar en la línea de comandos):
", "User found and settings verified." : "Usuario encontrado y configuraciones verificadas. ", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Configuraciones verficados, pero se encontró más de un usuario. Sólo el primero será capaz de iniciar sesión. Considere un filtro más refinado.", - "An unspecified error occurred. Please check the settings and the log." : "Se presentó un error no especificado. Favor de verificar las configuraciones y la bitácroa. ", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Favor de verificar. ", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Se presentó una falla con la conexión al servidor LDAP / AD, favor de verificar el servidor, puerto y credenciales. ", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Falta el \"%uid\" del marcador de posición. Será reemplazado con el nombre de usuario al consultar LDAP / AD.", @@ -60,7 +53,6 @@ "LDAP / AD integration" : "Integración con LDAP / AD", "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados"], "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "No fue posible detectar el atributo nombre a desplegar del usuario. Favor de especificarlo usted mismo en las configuraciones avanzadas de LDAP.", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", "Test Configuration" : "Probar configuración", diff --git a/apps/user_ldap/l10n/es_MX.js b/apps/user_ldap/l10n/es_MX.js index ad15b12899..89f9bfe67c 100644 --- a/apps/user_ldap/l10n/es_MX.js +++ b/apps/user_ldap/l10n/es_MX.js @@ -3,10 +3,10 @@ OC.L10N.register( { "Failed to clear the mappings." : "Se presentó una falla al borrar los mapeos.", "Failed to delete the server configuration" : "Se presentó una falla al borrar la configuración del servidor", - "The configuration is invalid: anonymous bind is not allowed." : "La configuración es inválida: No se permite hacer una vinculación anónima.", - "The configuration is valid and the connection could be established!" : "¡La configuración es válida y la conexión pudo ser establecida!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuración es válida, pero falló la Vinculación. Por favor verifica los ajustes del servidor y las credenciales.", - "The configuration is invalid. Please have a look at the logs for further details." : "La configuración es inválida. Por favor consulta las bitácoras para más detalles.", + "Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ", + "Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.", + "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.", "No action specified" : "No se ha especificado alguna acción", "No configuration specified" : "No se ha especificado una configuración", "No data specified" : "No se han especificado datos", @@ -45,10 +45,10 @@ 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?" : "Cambiar la modalidad habilitará las consultas automaticas de LDAP. Dependiendo del tamaño de su LDAP esto puede tomar algun tiempo. ¿Aún desea cambiar la modalidad?", "Mode switch" : "Cambio de modo", "Select attributes" : "Seleccionar atributos", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "El usuario no fue encontrado. Por favor verfica los atributos de inicio de sesión así como tu nombre de usuario. Filtro aplicado (para copiar-y-pegar para validar en la línea de comandos):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "Usuario no encontrado. Por favor verifica tus atributos de inicio de sesión y tu usuario. Filtro aplicado (para copiar-y-pegar para una validación de línea de comando):
", "User found and settings verified." : "Usuario encontrado y configuraciones verificadas. ", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Las configuraciones han sido verficadas, pero se encontró más de un usuario. Sólo el primero será capaz de iniciar sesión. Considere un filtro más refinado.", - "An unspecified error occurred. Please check the settings and the log." : "Se presentó un error no especificado. Por favor verifica las configuraciones y la bitácroa. ", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Considera refinar la búsqueda, ya que abarca demasiados usuarios y solo el primero de ellos podrá iniciar sesión. ", + "An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Se presentó una falla con la conexión al servidor LDAP / AD, por favor verifica el servidor, puerto y credenciales. ", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Falta el \"%uid\" del marcador de posición. Será reemplazado con el nombre de usuario al consultar LDAP / AD.", @@ -62,7 +62,7 @@ OC.L10N.register( "LDAP / AD integration" : "Integración con LDAP / AD", "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados"], "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "No fue posible detectar el atributo nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", "Test Configuration" : "Probar configuración", diff --git a/apps/user_ldap/l10n/es_MX.json b/apps/user_ldap/l10n/es_MX.json index bc8d2e6aa0..062f7c4439 100644 --- a/apps/user_ldap/l10n/es_MX.json +++ b/apps/user_ldap/l10n/es_MX.json @@ -1,10 +1,10 @@ { "translations": { "Failed to clear the mappings." : "Se presentó una falla al borrar los mapeos.", "Failed to delete the server configuration" : "Se presentó una falla al borrar la configuración del servidor", - "The configuration is invalid: anonymous bind is not allowed." : "La configuración es inválida: No se permite hacer una vinculación anónima.", - "The configuration is valid and the connection could be established!" : "¡La configuración es válida y la conexión pudo ser establecida!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuración es válida, pero falló la Vinculación. Por favor verifica los ajustes del servidor y las credenciales.", - "The configuration is invalid. Please have a look at the logs for further details." : "La configuración es inválida. Por favor consulta las bitácoras para más detalles.", + "Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ", + "Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.", + "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.", "No action specified" : "No se ha especificado alguna acción", "No configuration specified" : "No se ha especificado una configuración", "No data specified" : "No se han especificado datos", @@ -43,10 +43,10 @@ "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?" : "Cambiar la modalidad habilitará las consultas automaticas de LDAP. Dependiendo del tamaño de su LDAP esto puede tomar algun tiempo. ¿Aún desea cambiar la modalidad?", "Mode switch" : "Cambio de modo", "Select attributes" : "Seleccionar atributos", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "El usuario no fue encontrado. Por favor verfica los atributos de inicio de sesión así como tu nombre de usuario. Filtro aplicado (para copiar-y-pegar para validar en la línea de comandos):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "Usuario no encontrado. Por favor verifica tus atributos de inicio de sesión y tu usuario. Filtro aplicado (para copiar-y-pegar para una validación de línea de comando):
", "User found and settings verified." : "Usuario encontrado y configuraciones verificadas. ", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Las configuraciones han sido verficadas, pero se encontró más de un usuario. Sólo el primero será capaz de iniciar sesión. Considere un filtro más refinado.", - "An unspecified error occurred. Please check the settings and the log." : "Se presentó un error no especificado. Por favor verifica las configuraciones y la bitácroa. ", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Considera refinar la búsqueda, ya que abarca demasiados usuarios y solo el primero de ellos podrá iniciar sesión. ", + "An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Se presentó una falla con la conexión al servidor LDAP / AD, por favor verifica el servidor, puerto y credenciales. ", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Falta el \"%uid\" del marcador de posición. Será reemplazado con el nombre de usuario al consultar LDAP / AD.", @@ -60,7 +60,7 @@ "LDAP / AD integration" : "Integración con LDAP / AD", "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados"], "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "No fue posible detectar el atributo nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", "Test Configuration" : "Probar configuración", diff --git a/apps/user_ldap/l10n/fr.js b/apps/user_ldap/l10n/fr.js index 22c6209ae6..55bb5b5c97 100644 --- a/apps/user_ldap/l10n/fr.js +++ b/apps/user_ldap/l10n/fr.js @@ -3,10 +3,10 @@ OC.L10N.register( { "Failed to clear the mappings." : "Erreur lors de la suppression des associations.", "Failed to delete the server configuration" : "Échec de la suppression de la configuration du serveur", - "The configuration is invalid: anonymous bind is not allowed." : "La configuration n'est pas valide : le lien anonyme n'est pas autorisé.", - "The configuration is valid and the connection could be established!" : "La configuration est valide et la connexion peut être établie !", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuration est valable, mais le Bind a échoué. Veuillez vérifier les paramètres du serveur ainsi que vos identifiants de connexion.", - "The configuration is invalid. Please have a look at the logs for further details." : "La configuration n'est pas valable. Veuillez consulter les logs pour plus de détails.", + "Invalid configuration: Anonymous binding is not allowed." : "Configuration non valide : Le lien anonyme n'est pas autorisé.", + "Valid configuration, connection established!" : "Configuration valide, connexion établie !", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuration valide, mais le lien a échoué. Veuillez vérifier les paramètres du serveur ainsi que vos identifiants de connexion.", + "Invalid configuration. Please have a look at the logs for further details." : "Configuration non valide. Veuillez consulter les logs pour plus de détails.", "No action specified" : "Aucune action spécifiée", "No configuration specified" : "Aucune configuration spécifiée", "No data specified" : "Aucune donnée spécifiée", @@ -45,10 +45,10 @@ 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?" : "Changer de mode activera les requêtes LDAP automatiques. Selon la taille de votre annuaire LDAP, cela peut prendre du temps. Voulez-vous toujours changer de mode ?", "Mode switch" : "Basculer de mode", "Select attributes" : "Sélectionner les attributs", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Utilisateur introuvable. Veuillez vérifier les attributs de login et le nom d'utilisateur. Filtre effectif (à copier-coller pour valider en ligne de commande):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "Utilisateur introuvable. Veuillez vérifier les attributs de login et le nom d'utilisateur. Filtre effectif (à copier-coller pour valider en ligne de commande):
", "User found and settings verified." : "Utilisateur trouvé et paramètres vérifiés.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Paramètres vérifiés, mais plus d'un utilisateur trouvé. Seul le premier pourra se connecter. Considérez un filtre plus restreint.", - "An unspecified error occurred. Please check the settings and the log." : "Une erreur inconnue s'est produite. Veuillez vérifier les paramètres et le log.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Veuillez affiner votre recherche, car elle inclue de nombreux utilisateurs. Seul le premier de cette liste sera capable de se connecter.", + "An unspecified error occurred. Please check log and settings." : "Une erreur inconnue s'est produite. Veuillez vérifier le log et les paramètres.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Le filtre de recherche n'est pas valide, probablement à cause de problèmes de syntaxe tels que des parenthèses manquantes. Veuillez le corriger.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Une erreur s'est produite lors de la connexion au LDAP / AD. Veuillez vérifier l'hôte, le port et les informations d'identification.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "La chaîne \"%uid\" est manquante. Cette chaîne est remplacée par l'identifiant de connexion lors des requêtes LDAP / AD.", @@ -62,7 +62,7 @@ OC.L10N.register( "LDAP / AD integration" : "Intégration LDAP/AD", "_%s group found_::_%s groups found_" : ["%s groupe trouvé","%s groupes trouvés"], "_%s user found_::_%s users found_" : ["%s utilisateur trouvé","%s utilisateurs trouvés"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Impossible de détecter l'attribut contenant le nom d'affichage des utilisateurs. Veuillez l'indiquer vous-même dans les paramètres ldap avancés.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Impossible de détecter l'attribut contenant le nom d'affichage des utilisateurs. Veuillez l'indiquer vous-même dans les paramètres LDAP avancés.", "Could not find the desired feature" : "Impossible de trouver la fonction souhaitée", "Invalid Host" : "Hôte non valide", "Test Configuration" : "Tester la configuration", diff --git a/apps/user_ldap/l10n/fr.json b/apps/user_ldap/l10n/fr.json index c23669f35e..c35a04011d 100644 --- a/apps/user_ldap/l10n/fr.json +++ b/apps/user_ldap/l10n/fr.json @@ -1,10 +1,10 @@ { "translations": { "Failed to clear the mappings." : "Erreur lors de la suppression des associations.", "Failed to delete the server configuration" : "Échec de la suppression de la configuration du serveur", - "The configuration is invalid: anonymous bind is not allowed." : "La configuration n'est pas valide : le lien anonyme n'est pas autorisé.", - "The configuration is valid and the connection could be established!" : "La configuration est valide et la connexion peut être établie !", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuration est valable, mais le Bind a échoué. Veuillez vérifier les paramètres du serveur ainsi que vos identifiants de connexion.", - "The configuration is invalid. Please have a look at the logs for further details." : "La configuration n'est pas valable. Veuillez consulter les logs pour plus de détails.", + "Invalid configuration: Anonymous binding is not allowed." : "Configuration non valide : Le lien anonyme n'est pas autorisé.", + "Valid configuration, connection established!" : "Configuration valide, connexion établie !", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuration valide, mais le lien a échoué. Veuillez vérifier les paramètres du serveur ainsi que vos identifiants de connexion.", + "Invalid configuration. Please have a look at the logs for further details." : "Configuration non valide. Veuillez consulter les logs pour plus de détails.", "No action specified" : "Aucune action spécifiée", "No configuration specified" : "Aucune configuration spécifiée", "No data specified" : "Aucune donnée spécifiée", @@ -43,10 +43,10 @@ "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?" : "Changer de mode activera les requêtes LDAP automatiques. Selon la taille de votre annuaire LDAP, cela peut prendre du temps. Voulez-vous toujours changer de mode ?", "Mode switch" : "Basculer de mode", "Select attributes" : "Sélectionner les attributs", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Utilisateur introuvable. Veuillez vérifier les attributs de login et le nom d'utilisateur. Filtre effectif (à copier-coller pour valider en ligne de commande):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "Utilisateur introuvable. Veuillez vérifier les attributs de login et le nom d'utilisateur. Filtre effectif (à copier-coller pour valider en ligne de commande):
", "User found and settings verified." : "Utilisateur trouvé et paramètres vérifiés.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Paramètres vérifiés, mais plus d'un utilisateur trouvé. Seul le premier pourra se connecter. Considérez un filtre plus restreint.", - "An unspecified error occurred. Please check the settings and the log." : "Une erreur inconnue s'est produite. Veuillez vérifier les paramètres et le log.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Veuillez affiner votre recherche, car elle inclue de nombreux utilisateurs. Seul le premier de cette liste sera capable de se connecter.", + "An unspecified error occurred. Please check log and settings." : "Une erreur inconnue s'est produite. Veuillez vérifier le log et les paramètres.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Le filtre de recherche n'est pas valide, probablement à cause de problèmes de syntaxe tels que des parenthèses manquantes. Veuillez le corriger.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Une erreur s'est produite lors de la connexion au LDAP / AD. Veuillez vérifier l'hôte, le port et les informations d'identification.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "La chaîne \"%uid\" est manquante. Cette chaîne est remplacée par l'identifiant de connexion lors des requêtes LDAP / AD.", @@ -60,7 +60,7 @@ "LDAP / AD integration" : "Intégration LDAP/AD", "_%s group found_::_%s groups found_" : ["%s groupe trouvé","%s groupes trouvés"], "_%s user found_::_%s users found_" : ["%s utilisateur trouvé","%s utilisateurs trouvés"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Impossible de détecter l'attribut contenant le nom d'affichage des utilisateurs. Veuillez l'indiquer vous-même dans les paramètres ldap avancés.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Impossible de détecter l'attribut contenant le nom d'affichage des utilisateurs. Veuillez l'indiquer vous-même dans les paramètres LDAP avancés.", "Could not find the desired feature" : "Impossible de trouver la fonction souhaitée", "Invalid Host" : "Hôte non valide", "Test Configuration" : "Tester la configuration", diff --git a/apps/user_ldap/l10n/id.js b/apps/user_ldap/l10n/id.js index f7ad6623f0..aca22db6a5 100644 --- a/apps/user_ldap/l10n/id.js +++ b/apps/user_ldap/l10n/id.js @@ -3,10 +3,6 @@ OC.L10N.register( { "Failed to clear the mappings." : "Gagal membersihkan pemetaan.", "Failed to delete the server configuration" : "Gagal menghapus konfigurasi server", - "The configuration is invalid: anonymous bind is not allowed." : "Konfigurasi tidak sah: bind anonim tidak diizinkan", - "The configuration is valid and the connection could be established!" : "Konfigurasi valid dan koneksi dapat dilakukan!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurasi valid, tetapi Bind gagal. Silakan periksa pengaturan server dan kredensial.", - "The configuration is invalid. Please have a look at the logs for further details." : "Konfigurasi tidak sah. Silakan lihat log untuk rincian lebih lanjut.", "No action specified" : "Tidak ada tindakan yang ditetapkan", "No configuration specified" : "Tidak ada konfigurasi yang ditetapkan", "No data specified" : "Tidak ada data yang ditetapkan", @@ -38,10 +34,7 @@ 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?" : "Beralih modus akan mengaktifkan kueri LDAP secara otomatis. Hal ini memerlukan beberapa saat tergantung pada ukuran LDAP Anda. Apakah Anda tetap ingin beralih modus?", "Mode switch" : "Beralih modus", "Select attributes" : "Pilih atribut", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Pengguna tidak ditemukan. Mohon periksa atribut login dan nama pengguna Anda. Penyaring efektif (salin dan tempel berikut untuk validasi baris perintah):\n
", "User found and settings verified." : "Pengguna ditemukan dan pengaturan terverifikasi.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Pengaturan terverifikasi, tapi lebih dari satu pengguna ditemukan. Hanya pengguna pertama yang dapat masuk log. Pertimbangkan lebih mempersempit penyaringan.", - "An unspecified error occurred. Please check the settings and the log." : "Terjadi kesalahan yang tidak disebutkan. Mohon periksa pengaturan dan log.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Penyaring pencarian tidak sah, kemungkinan karena masalah sintaks seperti jumlah kurung buka dan tutup tidak sama. Mohon diperiksa.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Terjadi kesalahan sambungan ke LDAP / AD, mohon periksa host, port dan kredensial.", "Please provide a login name to test against" : "Mohon berikan nama login untuk mengujinya kembali", @@ -50,7 +43,6 @@ OC.L10N.register( "LDAP / AD integration" : "Integrasi LDAP / AD", "_%s group found_::_%s groups found_" : ["%s grup ditemukan"], "_%s user found_::_%s users found_" : ["%s pengguna ditemukan"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Tidak mendeteksi atribut nama tampilan pengguna. Silakan menentukannya sendiri di pengaturan ldap lanjutan.", "Could not find the desired feature" : "Tidak dapat menemukan fitur yang diinginkan", "Invalid Host" : "Host tidak sah", "Test Configuration" : "Uji Konfigurasi", diff --git a/apps/user_ldap/l10n/id.json b/apps/user_ldap/l10n/id.json index b38d6ff76b..a91af849bd 100644 --- a/apps/user_ldap/l10n/id.json +++ b/apps/user_ldap/l10n/id.json @@ -1,10 +1,6 @@ { "translations": { "Failed to clear the mappings." : "Gagal membersihkan pemetaan.", "Failed to delete the server configuration" : "Gagal menghapus konfigurasi server", - "The configuration is invalid: anonymous bind is not allowed." : "Konfigurasi tidak sah: bind anonim tidak diizinkan", - "The configuration is valid and the connection could be established!" : "Konfigurasi valid dan koneksi dapat dilakukan!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurasi valid, tetapi Bind gagal. Silakan periksa pengaturan server dan kredensial.", - "The configuration is invalid. Please have a look at the logs for further details." : "Konfigurasi tidak sah. Silakan lihat log untuk rincian lebih lanjut.", "No action specified" : "Tidak ada tindakan yang ditetapkan", "No configuration specified" : "Tidak ada konfigurasi yang ditetapkan", "No data specified" : "Tidak ada data yang ditetapkan", @@ -36,10 +32,7 @@ "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?" : "Beralih modus akan mengaktifkan kueri LDAP secara otomatis. Hal ini memerlukan beberapa saat tergantung pada ukuran LDAP Anda. Apakah Anda tetap ingin beralih modus?", "Mode switch" : "Beralih modus", "Select attributes" : "Pilih atribut", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Pengguna tidak ditemukan. Mohon periksa atribut login dan nama pengguna Anda. Penyaring efektif (salin dan tempel berikut untuk validasi baris perintah):\n
", "User found and settings verified." : "Pengguna ditemukan dan pengaturan terverifikasi.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Pengaturan terverifikasi, tapi lebih dari satu pengguna ditemukan. Hanya pengguna pertama yang dapat masuk log. Pertimbangkan lebih mempersempit penyaringan.", - "An unspecified error occurred. Please check the settings and the log." : "Terjadi kesalahan yang tidak disebutkan. Mohon periksa pengaturan dan log.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Penyaring pencarian tidak sah, kemungkinan karena masalah sintaks seperti jumlah kurung buka dan tutup tidak sama. Mohon diperiksa.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Terjadi kesalahan sambungan ke LDAP / AD, mohon periksa host, port dan kredensial.", "Please provide a login name to test against" : "Mohon berikan nama login untuk mengujinya kembali", @@ -48,7 +41,6 @@ "LDAP / AD integration" : "Integrasi LDAP / AD", "_%s group found_::_%s groups found_" : ["%s grup ditemukan"], "_%s user found_::_%s users found_" : ["%s pengguna ditemukan"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Tidak mendeteksi atribut nama tampilan pengguna. Silakan menentukannya sendiri di pengaturan ldap lanjutan.", "Could not find the desired feature" : "Tidak dapat menemukan fitur yang diinginkan", "Invalid Host" : "Host tidak sah", "Test Configuration" : "Uji Konfigurasi", diff --git a/apps/user_ldap/l10n/it.js b/apps/user_ldap/l10n/it.js index cca2ebf879..a1e2ffdcd7 100644 --- a/apps/user_ldap/l10n/it.js +++ b/apps/user_ldap/l10n/it.js @@ -3,10 +3,6 @@ OC.L10N.register( { "Failed to clear the mappings." : "Cancellazione delle associazioni non riuscita.", "Failed to delete the server configuration" : "Eliminazione della configurazione del server non riuscita", - "The configuration is invalid: anonymous bind is not allowed." : "La configurazione non è valida: l'associazione anonima non è consentita.", - "The configuration is valid and the connection could be established!" : "La configurazione è valida e la connessione può essere stabilita.", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configurazione è valida, ma il Bind non è riuscito. Controlla le impostazioni del server e le credenziali.", - "The configuration is invalid. Please have a look at the logs for further details." : "La configurazione non è valida. Controlla i log per ulteriori dettagli.", "No action specified" : "Nessuna azione specificata", "No configuration specified" : "Nessuna configurazione specificata", "No data specified" : "Nessun dato specificato", @@ -42,10 +38,7 @@ 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?" : "Il cambio di modalità abiliterà le query LDAP automatiche. In base alla dimensione di LDAP, potrebbero richiedere del tempo. Vuoi ancora cambiare modalità?", "Mode switch" : "Cambio modalità", "Select attributes" : "Seleziona gli attributi", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Utente non trovato. Controlla i tuoi attributi di accesso e il nome utente.\nFiltro effettivo (copiare e incollare per la convalida della riga di comando):
", "User found and settings verified." : "Utente trovato e impostazioni verificate.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Le impostazioni sono state verificate, ma è stato trovato più di un utente. Solo il primo sarà in grado di accedere. Considera un filtro più restrittivo.", - "An unspecified error occurred. Please check the settings and the log." : "Si è non specificato un errore sconosciuto. Controlla le impostazioni e il file di log.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Il filtro di ricerca non è valido, probabilmente a causa di problemi di sintassi come un numero dispari di parentesi aperte e chiuse. Controlla.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Si è verificato un errore di connessione a LDAP / AD, controlla l'host, la porta e le credenziali.", "Please provide a login name to test against" : "Fornisci un nome di accesso da provare", @@ -57,7 +50,6 @@ OC.L10N.register( "LDAP / AD integration" : "Integrazione LDAP / AD", "_%s group found_::_%s groups found_" : ["%s gruppo trovato","%s gruppi trovati"], "_%s user found_::_%s users found_" : ["%s utente trovato","%s utenti trovati"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Impossibile rilevare l'attributo nome visualizzato dell'utente. Specificalo nelle impostazioni avanzate di ldap.", "Could not find the desired feature" : "Impossibile trovare la funzionalità desiderata", "Invalid Host" : "Host non valido", "Test Configuration" : "Prova configurazione", diff --git a/apps/user_ldap/l10n/it.json b/apps/user_ldap/l10n/it.json index c85a42a262..d88d08b7ec 100644 --- a/apps/user_ldap/l10n/it.json +++ b/apps/user_ldap/l10n/it.json @@ -1,10 +1,6 @@ { "translations": { "Failed to clear the mappings." : "Cancellazione delle associazioni non riuscita.", "Failed to delete the server configuration" : "Eliminazione della configurazione del server non riuscita", - "The configuration is invalid: anonymous bind is not allowed." : "La configurazione non è valida: l'associazione anonima non è consentita.", - "The configuration is valid and the connection could be established!" : "La configurazione è valida e la connessione può essere stabilita.", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configurazione è valida, ma il Bind non è riuscito. Controlla le impostazioni del server e le credenziali.", - "The configuration is invalid. Please have a look at the logs for further details." : "La configurazione non è valida. Controlla i log per ulteriori dettagli.", "No action specified" : "Nessuna azione specificata", "No configuration specified" : "Nessuna configurazione specificata", "No data specified" : "Nessun dato specificato", @@ -40,10 +36,7 @@ "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?" : "Il cambio di modalità abiliterà le query LDAP automatiche. In base alla dimensione di LDAP, potrebbero richiedere del tempo. Vuoi ancora cambiare modalità?", "Mode switch" : "Cambio modalità", "Select attributes" : "Seleziona gli attributi", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Utente non trovato. Controlla i tuoi attributi di accesso e il nome utente.\nFiltro effettivo (copiare e incollare per la convalida della riga di comando):
", "User found and settings verified." : "Utente trovato e impostazioni verificate.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Le impostazioni sono state verificate, ma è stato trovato più di un utente. Solo il primo sarà in grado di accedere. Considera un filtro più restrittivo.", - "An unspecified error occurred. Please check the settings and the log." : "Si è non specificato un errore sconosciuto. Controlla le impostazioni e il file di log.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Il filtro di ricerca non è valido, probabilmente a causa di problemi di sintassi come un numero dispari di parentesi aperte e chiuse. Controlla.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Si è verificato un errore di connessione a LDAP / AD, controlla l'host, la porta e le credenziali.", "Please provide a login name to test against" : "Fornisci un nome di accesso da provare", @@ -55,7 +48,6 @@ "LDAP / AD integration" : "Integrazione LDAP / AD", "_%s group found_::_%s groups found_" : ["%s gruppo trovato","%s gruppi trovati"], "_%s user found_::_%s users found_" : ["%s utente trovato","%s utenti trovati"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Impossibile rilevare l'attributo nome visualizzato dell'utente. Specificalo nelle impostazioni avanzate di ldap.", "Could not find the desired feature" : "Impossibile trovare la funzionalità desiderata", "Invalid Host" : "Host non valido", "Test Configuration" : "Prova configurazione", diff --git a/apps/user_ldap/l10n/ja.js b/apps/user_ldap/l10n/ja.js index a3f292ee22..55e3419764 100644 --- a/apps/user_ldap/l10n/ja.js +++ b/apps/user_ldap/l10n/ja.js @@ -3,15 +3,15 @@ OC.L10N.register( { "Failed to clear the mappings." : "マッピングのクリアに失敗しました。", "Failed to delete the server configuration" : "サーバー設定の削除に失敗しました", - "The configuration is invalid: anonymous bind is not allowed." : "設定は無効です: 匿名接続は、許可されていません。", - "The configuration is valid and the connection could be established!" : "設定は有効です。接続できました。", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "設定は有効ですが、接続に失敗しました。サーバー設定と資格情報を確認してください。", - "The configuration is invalid. Please have a look at the logs for further details." : "設定が無効です。詳細はログを確認してください。", "No action specified" : "アクションが指定されていません", "No configuration specified" : "構成が指定されていません", "No data specified" : "データが指定されていません", " Could not set configuration %s" : "構成 %s を設定できませんでした", "Action does not exist" : "アクションが存在しません", + "Weak password" : "脆弱なパスワード", + "So-so password" : "悪くないパスワード", + "Good password" : "良いパスワード", + "Strong password" : "強固なパスワード", "The Base DN appears to be wrong" : "ベース DN が誤っている可能性があります", "Testing configuration…" : "設定検証中…", "Configuration incorrect" : "設定に誤りがあります", @@ -38,10 +38,7 @@ 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?" : "モード切替により自動LDAP問合せが有効になります。LDAPのデータ量により時間がかかる可能性があります。モードを切り替えますか?", "Mode switch" : "モード変更", "Select attributes" : "属性を選択", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "ユーザーは見つかりませんでした。ログインの属性とユーザー名をチェックしてください。適用されているフィルター(コピーペーストしてコマンドラインでの確認できます):
", "User found and settings verified." : "ユーザーが見つかり、設定が検証できました。", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "設定は検証できましたが、ユーザーが複数見つかりました。最初の1名だけログインできます。より厳しいフィルターを検討してください。", - "An unspecified error occurred. Please check the settings and the log." : "不明なエラーが発生しました。設定とログを確認してください。", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "検索フィルターが不正です。恐らく文法の問題で、開き括弧と閉じ括弧がマッチしていません。修正をお願いします。", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP / AD の接続エラーが発生しました。ホスト名、ポート、権限をチェックしてください。", "Please provide a login name to test against" : "テストの為にログイン名を入力してください。", @@ -50,7 +47,6 @@ OC.L10N.register( "LDAP / AD integration" : "LDAP / AD 統合", "_%s group found_::_%s groups found_" : ["%s グループが見つかりました"], "_%s user found_::_%s users found_" : ["%s ユーザーが見つかりました"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "ユーザー表示名の属性を検出できませんでした。詳細設定で対応する属性を指定してください。", "Could not find the desired feature" : "望ましい機能は見つかりませんでした", "Invalid Host" : "無効なホスト", "Test Configuration" : "設定をテスト", @@ -150,7 +146,7 @@ OC.L10N.register( "User Home Folder Naming Rule" : "ユーザーのホームフォルダー命名規則", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "ユーザー名を空のままにしてください(デフォルト)。もしくは、LDAPもしくはADの属性を指定してください。", "Internal Username" : "内部ユーザー名", - "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." : "デフォルトでは、内部的なユーザー名がUUID属性から作成されます。これにより、ユーザー名がユニークであり、かつ文字の変換が不要であることを保証します。内部ユーザー名には、[ a-zA-Z0-9_.@- ] の文字のみが有効であるという制限があり、その他の文字は対応する ASCII コードに変換されるか単に無視されます。そのため、他のユーザー名との衝突の回数が増加するでしょう。内部ユーザー名は、内部的にユーザーを識別するために用いられ、また、ownCloudにおけるデフォルトのホームフォルダー名としても用いられます。例えば*DAVサービスのように、リモートURLの一部でもあります。この設定により、デフォルトの振る舞いを再定義します。ownCloud 5 以前と同じような振る舞いにするためには、以下のフィールドにユーザー表示名の属性を入力します。空にするとデフォルトの振る舞いとなります。変更は新しくマッピング(追加)されたLDAPユーザーにおいてのみ有効となります。", + "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." : "デフォルトでは、内部的なユーザー名がUUID属性から作成されます。これにより、ユーザー名がユニークであり、かつ文字の変換が不要であることを保証します。内部ユーザー名には、[ a-zA-Z0-9_.@- ] の文字のみが有効であるという制限があり、その他の文字は対応する ASCII コードに変換されるか単に無視されます。そのため、他のユーザー名との衝突の回数が増加するでしょう。内部ユーザー名は、内部的にユーザーを識別するために用いられ、また、Nextcloud におけるデフォルトのホームフォルダー名としても用いられます。例えば*DAVサービスのように、リモートURLの一部でもあります。この設定により、デフォルトの振る舞いを再定義します。ownCloud 5 以前と同じような振る舞いにするためには、以下のフィールドにユーザー表示名の属性を入力します。空にするとデフォルトの振る舞いとなります。変更は新しくマッピング(追加)されたLDAPユーザーにおいてのみ有効となります。", "Internal Username Attribute:" : "内部ユーザー名属性:", "Override UUID detection" : "UUID検出を再定義する", "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." : "デフォルトでは、UUID 属性は自動的に検出されます。UUID属性は、LDAPユーザーとLDAPグループを間違いなく識別するために利用されます。また、もしこれを指定しない場合は、内部ユーザー名はUUIDに基づいて作成されます。この設定は再定義することができ、あなたの選択した属性を用いることができます。選択した属性がユーザーとグループの両方に対して適用でき、かつユニークであることを確認してください。空であればデフォルトの振る舞いとなります。変更は、新しくマッピング(追加)されたLDAPユーザーとLDAPグループに対してのみ有効となります。", diff --git a/apps/user_ldap/l10n/ja.json b/apps/user_ldap/l10n/ja.json index b89394d9bd..5152937aa2 100644 --- a/apps/user_ldap/l10n/ja.json +++ b/apps/user_ldap/l10n/ja.json @@ -1,15 +1,15 @@ { "translations": { "Failed to clear the mappings." : "マッピングのクリアに失敗しました。", "Failed to delete the server configuration" : "サーバー設定の削除に失敗しました", - "The configuration is invalid: anonymous bind is not allowed." : "設定は無効です: 匿名接続は、許可されていません。", - "The configuration is valid and the connection could be established!" : "設定は有効です。接続できました。", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "設定は有効ですが、接続に失敗しました。サーバー設定と資格情報を確認してください。", - "The configuration is invalid. Please have a look at the logs for further details." : "設定が無効です。詳細はログを確認してください。", "No action specified" : "アクションが指定されていません", "No configuration specified" : "構成が指定されていません", "No data specified" : "データが指定されていません", " Could not set configuration %s" : "構成 %s を設定できませんでした", "Action does not exist" : "アクションが存在しません", + "Weak password" : "脆弱なパスワード", + "So-so password" : "悪くないパスワード", + "Good password" : "良いパスワード", + "Strong password" : "強固なパスワード", "The Base DN appears to be wrong" : "ベース DN が誤っている可能性があります", "Testing configuration…" : "設定検証中…", "Configuration incorrect" : "設定に誤りがあります", @@ -36,10 +36,7 @@ "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?" : "モード切替により自動LDAP問合せが有効になります。LDAPのデータ量により時間がかかる可能性があります。モードを切り替えますか?", "Mode switch" : "モード変更", "Select attributes" : "属性を選択", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "ユーザーは見つかりませんでした。ログインの属性とユーザー名をチェックしてください。適用されているフィルター(コピーペーストしてコマンドラインでの確認できます):
", "User found and settings verified." : "ユーザーが見つかり、設定が検証できました。", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "設定は検証できましたが、ユーザーが複数見つかりました。最初の1名だけログインできます。より厳しいフィルターを検討してください。", - "An unspecified error occurred. Please check the settings and the log." : "不明なエラーが発生しました。設定とログを確認してください。", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "検索フィルターが不正です。恐らく文法の問題で、開き括弧と閉じ括弧がマッチしていません。修正をお願いします。", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP / AD の接続エラーが発生しました。ホスト名、ポート、権限をチェックしてください。", "Please provide a login name to test against" : "テストの為にログイン名を入力してください。", @@ -48,7 +45,6 @@ "LDAP / AD integration" : "LDAP / AD 統合", "_%s group found_::_%s groups found_" : ["%s グループが見つかりました"], "_%s user found_::_%s users found_" : ["%s ユーザーが見つかりました"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "ユーザー表示名の属性を検出できませんでした。詳細設定で対応する属性を指定してください。", "Could not find the desired feature" : "望ましい機能は見つかりませんでした", "Invalid Host" : "無効なホスト", "Test Configuration" : "設定をテスト", @@ -148,7 +144,7 @@ "User Home Folder Naming Rule" : "ユーザーのホームフォルダー命名規則", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "ユーザー名を空のままにしてください(デフォルト)。もしくは、LDAPもしくはADの属性を指定してください。", "Internal Username" : "内部ユーザー名", - "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." : "デフォルトでは、内部的なユーザー名がUUID属性から作成されます。これにより、ユーザー名がユニークであり、かつ文字の変換が不要であることを保証します。内部ユーザー名には、[ a-zA-Z0-9_.@- ] の文字のみが有効であるという制限があり、その他の文字は対応する ASCII コードに変換されるか単に無視されます。そのため、他のユーザー名との衝突の回数が増加するでしょう。内部ユーザー名は、内部的にユーザーを識別するために用いられ、また、ownCloudにおけるデフォルトのホームフォルダー名としても用いられます。例えば*DAVサービスのように、リモートURLの一部でもあります。この設定により、デフォルトの振る舞いを再定義します。ownCloud 5 以前と同じような振る舞いにするためには、以下のフィールドにユーザー表示名の属性を入力します。空にするとデフォルトの振る舞いとなります。変更は新しくマッピング(追加)されたLDAPユーザーにおいてのみ有効となります。", + "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." : "デフォルトでは、内部的なユーザー名がUUID属性から作成されます。これにより、ユーザー名がユニークであり、かつ文字の変換が不要であることを保証します。内部ユーザー名には、[ a-zA-Z0-9_.@- ] の文字のみが有効であるという制限があり、その他の文字は対応する ASCII コードに変換されるか単に無視されます。そのため、他のユーザー名との衝突の回数が増加するでしょう。内部ユーザー名は、内部的にユーザーを識別するために用いられ、また、Nextcloud におけるデフォルトのホームフォルダー名としても用いられます。例えば*DAVサービスのように、リモートURLの一部でもあります。この設定により、デフォルトの振る舞いを再定義します。ownCloud 5 以前と同じような振る舞いにするためには、以下のフィールドにユーザー表示名の属性を入力します。空にするとデフォルトの振る舞いとなります。変更は新しくマッピング(追加)されたLDAPユーザーにおいてのみ有効となります。", "Internal Username Attribute:" : "内部ユーザー名属性:", "Override UUID detection" : "UUID検出を再定義する", "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." : "デフォルトでは、UUID 属性は自動的に検出されます。UUID属性は、LDAPユーザーとLDAPグループを間違いなく識別するために利用されます。また、もしこれを指定しない場合は、内部ユーザー名はUUIDに基づいて作成されます。この設定は再定義することができ、あなたの選択した属性を用いることができます。選択した属性がユーザーとグループの両方に対して適用でき、かつユニークであることを確認してください。空であればデフォルトの振る舞いとなります。変更は、新しくマッピング(追加)されたLDAPユーザーとLDAPグループに対してのみ有効となります。", diff --git a/apps/user_ldap/l10n/ko.js b/apps/user_ldap/l10n/ko.js index 57679a677a..931344009d 100644 --- a/apps/user_ldap/l10n/ko.js +++ b/apps/user_ldap/l10n/ko.js @@ -3,10 +3,6 @@ OC.L10N.register( { "Failed to clear the mappings." : "매핑을 비울 수 없습니다.", "Failed to delete the server configuration" : "서버 설정을 삭제할 수 없습니다.", - "The configuration is invalid: anonymous bind is not allowed." : "설정이 잘못되었습니다: 익명 연결은 허용되지 않습니다.", - "The configuration is valid and the connection could be established!" : "설정 정보가 올바르고 연결할 수 있습니다!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "설정 정보가 올바르지만 바인딩이 실패했습니다. 서버 설정과 인증 정보를 확인하십시오.", - "The configuration is invalid. Please have a look at the logs for further details." : "설정이 올바르지 않습니다. 자세한 사항은 로그를 참고하십시오.", "No action specified" : "동작이 지정되지 않음", "No configuration specified" : "설정이 지정되지 않음", "No data specified" : "데이터가 지정되지 않음", @@ -45,10 +41,7 @@ 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?" : "모드를 전환하면 자동 LDAP 질의를 활성화합니다. LDAP 크기에 따라서 시간이 걸릴 수도 있습니다. 모드를 전환하시겠습니까?", "Mode switch" : "모드 전환", "Select attributes" : "속성 선택", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "사용자를 찾을 수 없습니다. 로그인 속성과 사용자 이름을 확인하십시오. 적용되는 필터(명령행에 붙여넣어 검증 가능):
", "User found and settings verified." : "사용자를 찾았고 설정을 확인했습니다.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "설정을 확인했지만 사용자가 한 명 이상 있습니다. 첫 번째 사용자만 로그인할 수 있습니다. 더 구체적인 필터를 지정하십시오.", - "An unspecified error occurred. Please check the settings and the log." : "알 수 없는 오류가 발생했습니다. 설정과 로그를 확인하십시오.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "검색 필터가 잘못되었습니다. 열고 닫는 괄호 쌍이 맞지 않을 수도 있습니다. 확인 후 수정하십시오.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP/AD 연결 오류가 발생했습니다. 호스트, 포트, 인증 정보를 확인하십시오.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "\"%uid\" 자리 비움자가 없습니다. LDAP/AD에 조회할 때 로그인 이름으로 대체됩니다.", @@ -62,7 +55,6 @@ OC.L10N.register( "LDAP / AD integration" : "LDAP/AD 통합", "_%s group found_::_%s groups found_" : ["그룹 %s개 찾음"], "_%s user found_::_%s users found_" : ["사용자 %s명 찾음"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "사용자 표시 이름을 결정할 수 없습니다. 고급 LDAP 설정에서 직접 입력하십시오.", "Could not find the desired feature" : "필요한 기능을 찾을 수 없음", "Invalid Host" : "잘못된 호스트", "Test Configuration" : "설정 시험", diff --git a/apps/user_ldap/l10n/ko.json b/apps/user_ldap/l10n/ko.json index efab0b46af..f2711d8a31 100644 --- a/apps/user_ldap/l10n/ko.json +++ b/apps/user_ldap/l10n/ko.json @@ -1,10 +1,6 @@ { "translations": { "Failed to clear the mappings." : "매핑을 비울 수 없습니다.", "Failed to delete the server configuration" : "서버 설정을 삭제할 수 없습니다.", - "The configuration is invalid: anonymous bind is not allowed." : "설정이 잘못되었습니다: 익명 연결은 허용되지 않습니다.", - "The configuration is valid and the connection could be established!" : "설정 정보가 올바르고 연결할 수 있습니다!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "설정 정보가 올바르지만 바인딩이 실패했습니다. 서버 설정과 인증 정보를 확인하십시오.", - "The configuration is invalid. Please have a look at the logs for further details." : "설정이 올바르지 않습니다. 자세한 사항은 로그를 참고하십시오.", "No action specified" : "동작이 지정되지 않음", "No configuration specified" : "설정이 지정되지 않음", "No data specified" : "데이터가 지정되지 않음", @@ -43,10 +39,7 @@ "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?" : "모드를 전환하면 자동 LDAP 질의를 활성화합니다. LDAP 크기에 따라서 시간이 걸릴 수도 있습니다. 모드를 전환하시겠습니까?", "Mode switch" : "모드 전환", "Select attributes" : "속성 선택", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "사용자를 찾을 수 없습니다. 로그인 속성과 사용자 이름을 확인하십시오. 적용되는 필터(명령행에 붙여넣어 검증 가능):
", "User found and settings verified." : "사용자를 찾았고 설정을 확인했습니다.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "설정을 확인했지만 사용자가 한 명 이상 있습니다. 첫 번째 사용자만 로그인할 수 있습니다. 더 구체적인 필터를 지정하십시오.", - "An unspecified error occurred. Please check the settings and the log." : "알 수 없는 오류가 발생했습니다. 설정과 로그를 확인하십시오.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "검색 필터가 잘못되었습니다. 열고 닫는 괄호 쌍이 맞지 않을 수도 있습니다. 확인 후 수정하십시오.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP/AD 연결 오류가 발생했습니다. 호스트, 포트, 인증 정보를 확인하십시오.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "\"%uid\" 자리 비움자가 없습니다. LDAP/AD에 조회할 때 로그인 이름으로 대체됩니다.", @@ -60,7 +53,6 @@ "LDAP / AD integration" : "LDAP/AD 통합", "_%s group found_::_%s groups found_" : ["그룹 %s개 찾음"], "_%s user found_::_%s users found_" : ["사용자 %s명 찾음"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "사용자 표시 이름을 결정할 수 없습니다. 고급 LDAP 설정에서 직접 입력하십시오.", "Could not find the desired feature" : "필요한 기능을 찾을 수 없음", "Invalid Host" : "잘못된 호스트", "Test Configuration" : "설정 시험", diff --git a/apps/user_ldap/l10n/nb.js b/apps/user_ldap/l10n/nb.js index 09b66485b4..2d6549f6b1 100644 --- a/apps/user_ldap/l10n/nb.js +++ b/apps/user_ldap/l10n/nb.js @@ -3,10 +3,10 @@ OC.L10N.register( { "Failed to clear the mappings." : "Klarte ikke å nullstille tilknytningene.", "Failed to delete the server configuration" : "Klarte ikke å slette tjener-konfigurasjonen.", - "The configuration is invalid: anonymous bind is not allowed." : "Oppsettet er ugyldig: Anonym binding er ikke tillatt.", - "The configuration is valid and the connection could be established!" : "Oppsettet er i orden og tilkoblingen skal være etablert!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Oppsettet er i orden, men binding mislyktes. Sjekk tjener-oppsettet og påloggingsinformasjonen.", - "The configuration is invalid. Please have a look at the logs for further details." : "Oppsettet er ikke gyldig. Sjekk loggene for flere detaljer.", + "Invalid configuration: Anonymous binding is not allowed." : "Oppsettet er ugyldig: Anonym binding er ikke tillatt.", + "Valid configuration, connection established!" : "Gyldig oppsett, tilkoblet.", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Oppsettet er i orden, men binding mislyktes. Sjekk tjener-oppsettet og påloggingsinformasjonen.", + "Invalid configuration. Please have a look at the logs for further details." : "Oppsettet er ikke gyldig. Sjekk loggene for flere detaljer.", "No action specified" : "Ingen handling spesifisert", "No configuration specified" : "Inget oppsett spesifisert", "No data specified" : "Ingen data spesifisert", @@ -45,10 +45,10 @@ 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?" : "Endring av modus vil aktivere automatiske LDAP-spørringer. Avhengig av din LDAP-størrelse kan de ta litt tid. Vil du likevel endre modus?", "Mode switch" : "Endring av modus", "Select attributes" : "Velg attributter", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Bruker ikke funnet. Sjekk påloggingsattributtene og brukernavnet. Virksomt filter (kopier og lim inn for validering på kommandolinjen):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "Bruker ikke funnet. Sjekk påloggingsattributtene og brukernavnet. Virksomt filter (kopier og lim inn for validering på kommandolinjen):
", "User found and settings verified." : "Bruker funnet og innstillinger bekreftet.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Innstillinger sjekket, men mer enn én bruker funnet. Kun den første vil kunne logge inn. Vurder et smalere filter.", - "An unspecified error occurred. Please check the settings and the log." : "En uspesifisert feil oppstod. Sjekk innstillingene og loggen.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Overvei å snevre inn søket ditt, siden det spenner over mange brukere, bare den første derav vil kunne logge inn.", + "An unspecified error occurred. Please check log and settings." : "En uspesifisert feil oppstod. Sjekk loggen og innstillingene.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Søkefilteret er ugyldig, antakelig pga. syntaksproblemer som ulikt antall start- og sluttparenteser. Sjekk det.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Det oppstod en feil ved tilkobling til LDAP / AD. Sjekk vertsnavn, portnummer og påloggingsdetaljer.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Plassholder \"%uid\" mangler. Den erstattes av påloggingsnavnet ved spørring mot LDAP / AD.", @@ -62,7 +62,7 @@ OC.L10N.register( "LDAP / AD integration" : "LDAP / AD integrasjon", "_%s group found_::_%s groups found_" : ["%s gruppe funnet","%s grupper funnet"], "_%s user found_::_%s users found_" : ["%s bruker funnet","%s brukere funnet"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunne ikke påvise attributt for brukers visningsnavn. Du må selv spesifisere det i avanserte LDAP-innstillinger.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Kunne ikke påvise attributt for brukers visningsnavn. Du må selv spesifisere det i avanserte LDAP-innstillinger.", "Could not find the desired feature" : "Fant ikke den ønskede funksjonaliteten", "Invalid Host" : "Ugyldig tjener", "Test Configuration" : "Test oppsettet", diff --git a/apps/user_ldap/l10n/nb.json b/apps/user_ldap/l10n/nb.json index 9db7a3780c..ee9b60f03b 100644 --- a/apps/user_ldap/l10n/nb.json +++ b/apps/user_ldap/l10n/nb.json @@ -1,10 +1,10 @@ { "translations": { "Failed to clear the mappings." : "Klarte ikke å nullstille tilknytningene.", "Failed to delete the server configuration" : "Klarte ikke å slette tjener-konfigurasjonen.", - "The configuration is invalid: anonymous bind is not allowed." : "Oppsettet er ugyldig: Anonym binding er ikke tillatt.", - "The configuration is valid and the connection could be established!" : "Oppsettet er i orden og tilkoblingen skal være etablert!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Oppsettet er i orden, men binding mislyktes. Sjekk tjener-oppsettet og påloggingsinformasjonen.", - "The configuration is invalid. Please have a look at the logs for further details." : "Oppsettet er ikke gyldig. Sjekk loggene for flere detaljer.", + "Invalid configuration: Anonymous binding is not allowed." : "Oppsettet er ugyldig: Anonym binding er ikke tillatt.", + "Valid configuration, connection established!" : "Gyldig oppsett, tilkoblet.", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Oppsettet er i orden, men binding mislyktes. Sjekk tjener-oppsettet og påloggingsinformasjonen.", + "Invalid configuration. Please have a look at the logs for further details." : "Oppsettet er ikke gyldig. Sjekk loggene for flere detaljer.", "No action specified" : "Ingen handling spesifisert", "No configuration specified" : "Inget oppsett spesifisert", "No data specified" : "Ingen data spesifisert", @@ -43,10 +43,10 @@ "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?" : "Endring av modus vil aktivere automatiske LDAP-spørringer. Avhengig av din LDAP-størrelse kan de ta litt tid. Vil du likevel endre modus?", "Mode switch" : "Endring av modus", "Select attributes" : "Velg attributter", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Bruker ikke funnet. Sjekk påloggingsattributtene og brukernavnet. Virksomt filter (kopier og lim inn for validering på kommandolinjen):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "Bruker ikke funnet. Sjekk påloggingsattributtene og brukernavnet. Virksomt filter (kopier og lim inn for validering på kommandolinjen):
", "User found and settings verified." : "Bruker funnet og innstillinger bekreftet.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Innstillinger sjekket, men mer enn én bruker funnet. Kun den første vil kunne logge inn. Vurder et smalere filter.", - "An unspecified error occurred. Please check the settings and the log." : "En uspesifisert feil oppstod. Sjekk innstillingene og loggen.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Overvei å snevre inn søket ditt, siden det spenner over mange brukere, bare den første derav vil kunne logge inn.", + "An unspecified error occurred. Please check log and settings." : "En uspesifisert feil oppstod. Sjekk loggen og innstillingene.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Søkefilteret er ugyldig, antakelig pga. syntaksproblemer som ulikt antall start- og sluttparenteser. Sjekk det.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Det oppstod en feil ved tilkobling til LDAP / AD. Sjekk vertsnavn, portnummer og påloggingsdetaljer.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Plassholder \"%uid\" mangler. Den erstattes av påloggingsnavnet ved spørring mot LDAP / AD.", @@ -60,7 +60,7 @@ "LDAP / AD integration" : "LDAP / AD integrasjon", "_%s group found_::_%s groups found_" : ["%s gruppe funnet","%s grupper funnet"], "_%s user found_::_%s users found_" : ["%s bruker funnet","%s brukere funnet"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunne ikke påvise attributt for brukers visningsnavn. Du må selv spesifisere det i avanserte LDAP-innstillinger.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Kunne ikke påvise attributt for brukers visningsnavn. Du må selv spesifisere det i avanserte LDAP-innstillinger.", "Could not find the desired feature" : "Fant ikke den ønskede funksjonaliteten", "Invalid Host" : "Ugyldig tjener", "Test Configuration" : "Test oppsettet", diff --git a/apps/user_ldap/l10n/nl.js b/apps/user_ldap/l10n/nl.js index dbcf774f8d..d2b337957e 100644 --- a/apps/user_ldap/l10n/nl.js +++ b/apps/user_ldap/l10n/nl.js @@ -3,10 +3,6 @@ OC.L10N.register( { "Failed to clear the mappings." : "Niet gelukt de vertalingen leeg te maken.", "Failed to delete the server configuration" : "Verwijderen serverconfiguratie mislukt", - "The configuration is invalid: anonymous bind is not allowed." : "De configuratie is ongeldig: anonieme bind is niet toegestaan.", - "The configuration is valid and the connection could be established!" : "De configuratie is geldig en de verbinding is geslaagd!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "De configuratie is geldig, maar Bind mislukte. Controleer de serverinstellingen en inloggegevens.", - "The configuration is invalid. Please have a look at the logs for further details." : "De configuratie is ongeldig. Bekijk de logbestanden voor meer details.", "No action specified" : "Geen actie opgegeven", "No configuration specified" : "Geen configuratie opgegeven", "No data specified" : "Geen gegevens verstrekt", @@ -45,10 +41,7 @@ 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?" : "Omschakelen van de modus schakelt automatische LDAP opvragingen in. Afhankelijk van je LDAP omvang kan dat even duren. Wil je nog steeds omschakelen?", "Mode switch" : "Omschakelen modus", "Select attributes" : "Selecteer attributen", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Gebruiker niet gevonden. Verifieer je inloggegevens en gebruikersnaam. Geldig filter (kopiëren en plakken voor commandoregel validatie):
", "User found and settings verified." : "Gebruiker gevonden en instellingen geverifieerd.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Instellingen geverifieerd, slechts één gebruiker gevonden. Alleen de eerste kan inloggen. Overweeg een krapper filter.", - "An unspecified error occurred. Please check the settings and the log." : "Er trad een ongedefinieerde fout op. Controleer de instellingen en de logging.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Het zoekfilter is ongeldig, waarschijnlijk door syntax problemen zoals een ongelijk aantal open- en sluithaakjes. Graag aanpassen.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Er trad een verbindingsfout naar LDAP / AD op, verifieer servernaam, poort en inloggegevens.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "De \"%uid\" opvultekst ontbreekt. Die wordt vervangen door de inlognaam bij het bevragen van LDAP / AD.", @@ -62,7 +55,6 @@ OC.L10N.register( "LDAP / AD integration" : "LDAP / AD integratie", "_%s group found_::_%s groups found_" : ["%s groep gevonden","%s groepen gevonden"], "_%s user found_::_%s users found_" : ["%s gebruiker gevonden","%s gebruikers gevonden"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kon het weergavenaam attribuut van de gebruiker niet vinden. Geef het zelf op in de geavanceerde ldap instellingen.", "Could not find the desired feature" : "Kon de gewenste functie niet vinden", "Invalid Host" : "Ongeldige server", "Test Configuration" : "Test configuratie", diff --git a/apps/user_ldap/l10n/nl.json b/apps/user_ldap/l10n/nl.json index b67be00943..945ffc6bc8 100644 --- a/apps/user_ldap/l10n/nl.json +++ b/apps/user_ldap/l10n/nl.json @@ -1,10 +1,6 @@ { "translations": { "Failed to clear the mappings." : "Niet gelukt de vertalingen leeg te maken.", "Failed to delete the server configuration" : "Verwijderen serverconfiguratie mislukt", - "The configuration is invalid: anonymous bind is not allowed." : "De configuratie is ongeldig: anonieme bind is niet toegestaan.", - "The configuration is valid and the connection could be established!" : "De configuratie is geldig en de verbinding is geslaagd!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "De configuratie is geldig, maar Bind mislukte. Controleer de serverinstellingen en inloggegevens.", - "The configuration is invalid. Please have a look at the logs for further details." : "De configuratie is ongeldig. Bekijk de logbestanden voor meer details.", "No action specified" : "Geen actie opgegeven", "No configuration specified" : "Geen configuratie opgegeven", "No data specified" : "Geen gegevens verstrekt", @@ -43,10 +39,7 @@ "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?" : "Omschakelen van de modus schakelt automatische LDAP opvragingen in. Afhankelijk van je LDAP omvang kan dat even duren. Wil je nog steeds omschakelen?", "Mode switch" : "Omschakelen modus", "Select attributes" : "Selecteer attributen", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Gebruiker niet gevonden. Verifieer je inloggegevens en gebruikersnaam. Geldig filter (kopiëren en plakken voor commandoregel validatie):
", "User found and settings verified." : "Gebruiker gevonden en instellingen geverifieerd.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Instellingen geverifieerd, slechts één gebruiker gevonden. Alleen de eerste kan inloggen. Overweeg een krapper filter.", - "An unspecified error occurred. Please check the settings and the log." : "Er trad een ongedefinieerde fout op. Controleer de instellingen en de logging.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Het zoekfilter is ongeldig, waarschijnlijk door syntax problemen zoals een ongelijk aantal open- en sluithaakjes. Graag aanpassen.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Er trad een verbindingsfout naar LDAP / AD op, verifieer servernaam, poort en inloggegevens.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "De \"%uid\" opvultekst ontbreekt. Die wordt vervangen door de inlognaam bij het bevragen van LDAP / AD.", @@ -60,7 +53,6 @@ "LDAP / AD integration" : "LDAP / AD integratie", "_%s group found_::_%s groups found_" : ["%s groep gevonden","%s groepen gevonden"], "_%s user found_::_%s users found_" : ["%s gebruiker gevonden","%s gebruikers gevonden"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kon het weergavenaam attribuut van de gebruiker niet vinden. Geef het zelf op in de geavanceerde ldap instellingen.", "Could not find the desired feature" : "Kon de gewenste functie niet vinden", "Invalid Host" : "Ongeldige server", "Test Configuration" : "Test configuratie", diff --git a/apps/user_ldap/l10n/pl.js b/apps/user_ldap/l10n/pl.js index e0da13deb2..27ab10ef90 100644 --- a/apps/user_ldap/l10n/pl.js +++ b/apps/user_ldap/l10n/pl.js @@ -3,10 +3,6 @@ OC.L10N.register( { "Failed to clear the mappings." : "Nie udało się wyczyścić mapowania.", "Failed to delete the server configuration" : "Nie można usunąć konfiguracji serwera", - "The configuration is invalid: anonymous bind is not allowed." : "Konfiguracja jest nieprawidłowa: anonimowe złączenie nie jest dozwolone.", - "The configuration is valid and the connection could be established!" : "Konfiguracja jest prawidłowa i można ustanowić połączenie!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfiguracja jest prawidłowa, ale Bind nie. Sprawdź ustawienia serwera i poświadczenia.", - "The configuration is invalid. Please have a look at the logs for further details." : "Konfiguracja jest nieprawidłowa. Proszę rzucić okiem na dzienniki dla dalszych szczegółów.", "No action specified" : "Nie określono akcji", "No configuration specified" : "Nie określono konfiguracji", "No data specified" : "Nie określono danych", @@ -45,10 +41,7 @@ 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?" : "Zmiana trybu włączy automatyczne odpytywanie LDAP-a. W zależności od jego wielkości może to trochę potrwać. Nadal chcesz zmienić tryb?", "Mode switch" : "Przełącznik trybów", "Select attributes" : "Wybierz atrybuty", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Nie znaleziono użytkownika. Sprawdź proszę atrybuty logowania i nazwę użytkownika. Filtr efektywny (dla sprawdzenia w konsoli przez kopiuj/wklej):
", "User found and settings verified." : "Znaleziono użytkownika i zweryfikowano ustawienia.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ustawienia zweryfikowano, ale znaleziono więcej niż jednego użytkownika. Tylko pierwszy będzie mógł się zalogować. Rozważ większe zawężenie filtrami.", - "An unspecified error occurred. Please check the settings and the log." : "Błąd niewiadomego pochodzenia. Sprawdź proszę ustawienia i logi.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtr szukania jest nieprawidłowy, prawdopodobnie przez problem składniowy taki jak nierówna liczba otwartych i zamkniętych nawiasów. Zweryfikuj to.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Błąd połączenia do LDAP / AD, proszę sprawdzić adres hosta, port i poświadczenia.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Brakuje tekstu zastępczego \"%uid\". W trakcie odpytywania serwera LDAP / AD zostanie on zastąpiony nazwą logowania.", @@ -62,7 +55,6 @@ OC.L10N.register( "LDAP / AD integration" : "Integracja z LDAP / AD", "_%s group found_::_%s groups found_" : ["%s znaleziona grupa","%s znalezionych grup","%s znalezionych grup","%s znalezionych grup"], "_%s user found_::_%s users found_" : ["%s znaleziony użytkownik","%s znalezionych użytkowników","%s znalezionych użytkowników","%s znalezionych użytkowników"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nie udało się wykryć atrybutu wyświetlanej nazwy użytkownika. Określ ją w zaawansowanych ustawieniach LDAP.", "Could not find the desired feature" : "Nie można znaleźć żądanej funkcji", "Invalid Host" : "Niepoprawny Host", "Test Configuration" : "Sprawdź konfigurację", diff --git a/apps/user_ldap/l10n/pl.json b/apps/user_ldap/l10n/pl.json index c30e35215f..5a9a6aabaf 100644 --- a/apps/user_ldap/l10n/pl.json +++ b/apps/user_ldap/l10n/pl.json @@ -1,10 +1,6 @@ { "translations": { "Failed to clear the mappings." : "Nie udało się wyczyścić mapowania.", "Failed to delete the server configuration" : "Nie można usunąć konfiguracji serwera", - "The configuration is invalid: anonymous bind is not allowed." : "Konfiguracja jest nieprawidłowa: anonimowe złączenie nie jest dozwolone.", - "The configuration is valid and the connection could be established!" : "Konfiguracja jest prawidłowa i można ustanowić połączenie!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfiguracja jest prawidłowa, ale Bind nie. Sprawdź ustawienia serwera i poświadczenia.", - "The configuration is invalid. Please have a look at the logs for further details." : "Konfiguracja jest nieprawidłowa. Proszę rzucić okiem na dzienniki dla dalszych szczegółów.", "No action specified" : "Nie określono akcji", "No configuration specified" : "Nie określono konfiguracji", "No data specified" : "Nie określono danych", @@ -43,10 +39,7 @@ "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?" : "Zmiana trybu włączy automatyczne odpytywanie LDAP-a. W zależności od jego wielkości może to trochę potrwać. Nadal chcesz zmienić tryb?", "Mode switch" : "Przełącznik trybów", "Select attributes" : "Wybierz atrybuty", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Nie znaleziono użytkownika. Sprawdź proszę atrybuty logowania i nazwę użytkownika. Filtr efektywny (dla sprawdzenia w konsoli przez kopiuj/wklej):
", "User found and settings verified." : "Znaleziono użytkownika i zweryfikowano ustawienia.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ustawienia zweryfikowano, ale znaleziono więcej niż jednego użytkownika. Tylko pierwszy będzie mógł się zalogować. Rozważ większe zawężenie filtrami.", - "An unspecified error occurred. Please check the settings and the log." : "Błąd niewiadomego pochodzenia. Sprawdź proszę ustawienia i logi.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtr szukania jest nieprawidłowy, prawdopodobnie przez problem składniowy taki jak nierówna liczba otwartych i zamkniętych nawiasów. Zweryfikuj to.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Błąd połączenia do LDAP / AD, proszę sprawdzić adres hosta, port i poświadczenia.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Brakuje tekstu zastępczego \"%uid\". W trakcie odpytywania serwera LDAP / AD zostanie on zastąpiony nazwą logowania.", @@ -60,7 +53,6 @@ "LDAP / AD integration" : "Integracja z LDAP / AD", "_%s group found_::_%s groups found_" : ["%s znaleziona grupa","%s znalezionych grup","%s znalezionych grup","%s znalezionych grup"], "_%s user found_::_%s users found_" : ["%s znaleziony użytkownik","%s znalezionych użytkowników","%s znalezionych użytkowników","%s znalezionych użytkowników"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nie udało się wykryć atrybutu wyświetlanej nazwy użytkownika. Określ ją w zaawansowanych ustawieniach LDAP.", "Could not find the desired feature" : "Nie można znaleźć żądanej funkcji", "Invalid Host" : "Niepoprawny Host", "Test Configuration" : "Sprawdź konfigurację", diff --git a/apps/user_ldap/l10n/pt_BR.js b/apps/user_ldap/l10n/pt_BR.js index 5e6894ce6f..2297bb83be 100644 --- a/apps/user_ldap/l10n/pt_BR.js +++ b/apps/user_ldap/l10n/pt_BR.js @@ -3,10 +3,10 @@ OC.L10N.register( { "Failed to clear the mappings." : "Falhou ao limpar os mapeamentos.", "Failed to delete the server configuration" : "Falha ao excluir a configuração do servidor", - "The configuration is invalid: anonymous bind is not allowed." : "A configuração é inválida: vínculo anônimo não é permitido.", - "The configuration is valid and the connection could be established!" : "A configuração é válida e a conexão foi estabelecida!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "A configuração é válida, mas o vínculo falhou. Verifique as configurações do servidor e as credenciais.", - "The configuration is invalid. Please have a look at the logs for further details." : "Configuração inválida. Por favor, dê uma olhada nos logs para mais detalhes.", + "Invalid configuration: Anonymous binding is not allowed." : "Configuração inválida: A ligação anônima não é permitida.", + "Valid configuration, connection established!" : "Configuração válida, conexão estabelecida!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuração válida, mas a ligação falhou. Verifique as configurações e as credenciais do servidor.", + "Invalid configuration. Please have a look at the logs for further details." : "Configuração inválida. Por favor dê uma olhada nos logs para mais detalhes.", "No action specified" : "Nenhuma ação especificada", "No configuration specified" : "Nenhuma configuração especificada", "No data specified" : "Nenhum dado especificado", @@ -45,10 +45,10 @@ 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?" : "Mudar o modo irá permitir consultas LDAP automáticas. Dependendo do tamanho do LDAP isso pode demorar um pouco. Você ainda quer mudar o modo?", "Mode switch" : "Trocar de modo", "Select attributes" : "Selecionar atributos", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Usuário não encontrado. Por favor verifique os seus atributos de login e nome de usuário. Filtro eficaz (para copiar-e-colar para validação de linha de comando):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "Usuário não encontrado. Verifique seus atributos de login e nome de usuário. Filtro efetivo (para copiar e colar para validação de linha de comando):
", "User found and settings verified." : "Usuário encontrado e configurações verificadas.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Configurações verificadas, mas mais de um usuário foi encontrado. Apenas o primeiro será capaz de fazer login. Considere um filtro mais apurado.", - "An unspecified error occurred. Please check the settings and the log." : "Ocorreu um erro não especificado. Por favor, verifique as configurações e os logs.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Considere restringir sua pesquisa, pois abrange muitos usuários, apenas o primeiro de quem poderá fazer logon.", + "An unspecified error occurred. Please check log and settings." : "Ocorreu um erro não especificado. Verifique o log e as configurações.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de pesquisa é inválido, provavelmente devido a questões de sintaxe, como número ímpar de colchetes abertos e fechados. Por favor, revise.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Um erro de conexão para LDAP / AD ocorreu, por favor, verifique host, porta e as credenciais.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "O marcador de posição \"%uid\" está faltando. Ele será substituído pelo nome de login quando consutando via LDAP / AD.", @@ -62,7 +62,7 @@ OC.L10N.register( "LDAP / AD integration" : "Integração LDAP / AD", "_%s group found_::_%s groups found_" : ["grupo% s encontrado","grupos% s encontrado"], "_%s user found_::_%s users found_" : ["usuário %s encontrado","%s usuários encontrados"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Não foi possível detectar o atributo de nome de exibição do usuário. Por favor, indique-o em configurações avançadas do LDAP.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Não foi possível detectar o atributo do nome de exibição do usuário. Por favor, especifique-o você mesmo nas configurações LDAP avançadas.", "Could not find the desired feature" : "Não foi possível encontrar o recurso desejado", "Invalid Host" : "Host inválido", "Test Configuration" : "Teste de Configuração", diff --git a/apps/user_ldap/l10n/pt_BR.json b/apps/user_ldap/l10n/pt_BR.json index 0b79551431..8bdd45c3d0 100644 --- a/apps/user_ldap/l10n/pt_BR.json +++ b/apps/user_ldap/l10n/pt_BR.json @@ -1,10 +1,10 @@ { "translations": { "Failed to clear the mappings." : "Falhou ao limpar os mapeamentos.", "Failed to delete the server configuration" : "Falha ao excluir a configuração do servidor", - "The configuration is invalid: anonymous bind is not allowed." : "A configuração é inválida: vínculo anônimo não é permitido.", - "The configuration is valid and the connection could be established!" : "A configuração é válida e a conexão foi estabelecida!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "A configuração é válida, mas o vínculo falhou. Verifique as configurações do servidor e as credenciais.", - "The configuration is invalid. Please have a look at the logs for further details." : "Configuração inválida. Por favor, dê uma olhada nos logs para mais detalhes.", + "Invalid configuration: Anonymous binding is not allowed." : "Configuração inválida: A ligação anônima não é permitida.", + "Valid configuration, connection established!" : "Configuração válida, conexão estabelecida!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuração válida, mas a ligação falhou. Verifique as configurações e as credenciais do servidor.", + "Invalid configuration. Please have a look at the logs for further details." : "Configuração inválida. Por favor dê uma olhada nos logs para mais detalhes.", "No action specified" : "Nenhuma ação especificada", "No configuration specified" : "Nenhuma configuração especificada", "No data specified" : "Nenhum dado especificado", @@ -43,10 +43,10 @@ "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?" : "Mudar o modo irá permitir consultas LDAP automáticas. Dependendo do tamanho do LDAP isso pode demorar um pouco. Você ainda quer mudar o modo?", "Mode switch" : "Trocar de modo", "Select attributes" : "Selecionar atributos", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Usuário não encontrado. Por favor verifique os seus atributos de login e nome de usuário. Filtro eficaz (para copiar-e-colar para validação de linha de comando):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "Usuário não encontrado. Verifique seus atributos de login e nome de usuário. Filtro efetivo (para copiar e colar para validação de linha de comando):
", "User found and settings verified." : "Usuário encontrado e configurações verificadas.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Configurações verificadas, mas mais de um usuário foi encontrado. Apenas o primeiro será capaz de fazer login. Considere um filtro mais apurado.", - "An unspecified error occurred. Please check the settings and the log." : "Ocorreu um erro não especificado. Por favor, verifique as configurações e os logs.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Considere restringir sua pesquisa, pois abrange muitos usuários, apenas o primeiro de quem poderá fazer logon.", + "An unspecified error occurred. Please check log and settings." : "Ocorreu um erro não especificado. Verifique o log e as configurações.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de pesquisa é inválido, provavelmente devido a questões de sintaxe, como número ímpar de colchetes abertos e fechados. Por favor, revise.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Um erro de conexão para LDAP / AD ocorreu, por favor, verifique host, porta e as credenciais.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "O marcador de posição \"%uid\" está faltando. Ele será substituído pelo nome de login quando consutando via LDAP / AD.", @@ -60,7 +60,7 @@ "LDAP / AD integration" : "Integração LDAP / AD", "_%s group found_::_%s groups found_" : ["grupo% s encontrado","grupos% s encontrado"], "_%s user found_::_%s users found_" : ["usuário %s encontrado","%s usuários encontrados"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Não foi possível detectar o atributo de nome de exibição do usuário. Por favor, indique-o em configurações avançadas do LDAP.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Não foi possível detectar o atributo do nome de exibição do usuário. Por favor, especifique-o você mesmo nas configurações LDAP avançadas.", "Could not find the desired feature" : "Não foi possível encontrar o recurso desejado", "Invalid Host" : "Host inválido", "Test Configuration" : "Teste de Configuração", diff --git a/apps/user_ldap/l10n/pt_PT.js b/apps/user_ldap/l10n/pt_PT.js index 73cb96fc81..55ae12d89e 100644 --- a/apps/user_ldap/l10n/pt_PT.js +++ b/apps/user_ldap/l10n/pt_PT.js @@ -3,10 +3,6 @@ OC.L10N.register( { "Failed to clear the mappings." : "Falhou ao limpar os mapas.", "Failed to delete the server configuration" : "Erro ao eliminar a configuração do servidor", - "The configuration is invalid: anonymous bind is not allowed." : "A configuração é inválida: ligação anónima não é permitida.", - "The configuration is valid and the connection could be established!" : "A configuração está correcta e foi possível estabelecer a ligação!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "A configuração está correcta, mas não foi possível estabelecer a conexão. Por favor, verifique as configurações do servidor e as credenciais.", - "The configuration is invalid. Please have a look at the logs for further details." : "A configuração é inválida. Por favor, veja o registo (log) do ownCloud para mais detalhes.", "No action specified" : "Nenhuma ação especificada", "No configuration specified" : "Nenhuma configuração especificada", "No data specified" : "Nenhuma data especificada", @@ -38,16 +34,13 @@ 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?" : "Trocando o modo vai permitir a busca automática no LDAP. Dependendo do tamanho do seu LDAP poderá demorar um pouco. Ainda pretende trocar o modo?", "Mode switch" : "Trocar de modo", "Select attributes" : "Selecionar atributos", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "O utilizador não foi encontrado. Por favor, verifique nome de utilizador e os atributos de permissão. Filtro eficaz (para copiar/colar na linha de comando de validação):
", "User found and settings verified." : "Utilizador encontrado e as definilções verificadas", - "An unspecified error occurred. Please check the settings and the log." : "ocorreu um erro não especificado. Por favor, verifique as configurações e o registo.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de procura é inválido, provavelmente devido a problemas de sintaxe. Verifique se existem números ímpares de parêntisis abertos e/ou fechados. Por favor reveja.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Ocorreu um erro de conexão ao servidor LDAP / AD. Por favor, reveja as definições de endereço, porto e credenciais.", "Please provide a login name to test against" : "Por favor, indique um nome de sessão para testar", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Uma vez que o servidor LDAP / AD não suporta a propriedade \"memberOf\" (grupos) a caixa de grupos foi desactivada.", "_%s group found_::_%s groups found_" : ["%s grupo encontrado","%s grupos encontrados"], "_%s user found_::_%s users found_" : ["%s utilizador encontrado","%s utilizadores encontrados"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Não foi possível detetar o atributo do nome do utilizador. Por favor especifique-o nas configurações ldap avançadas.", "Could not find the desired feature" : "Não se encontrou a função desejada", "Invalid Host" : "Hospedeiro Inválido", "Test Configuration" : "Testar a configuração", diff --git a/apps/user_ldap/l10n/pt_PT.json b/apps/user_ldap/l10n/pt_PT.json index 84d48eb9fe..e0f4fe2c12 100644 --- a/apps/user_ldap/l10n/pt_PT.json +++ b/apps/user_ldap/l10n/pt_PT.json @@ -1,10 +1,6 @@ { "translations": { "Failed to clear the mappings." : "Falhou ao limpar os mapas.", "Failed to delete the server configuration" : "Erro ao eliminar a configuração do servidor", - "The configuration is invalid: anonymous bind is not allowed." : "A configuração é inválida: ligação anónima não é permitida.", - "The configuration is valid and the connection could be established!" : "A configuração está correcta e foi possível estabelecer a ligação!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "A configuração está correcta, mas não foi possível estabelecer a conexão. Por favor, verifique as configurações do servidor e as credenciais.", - "The configuration is invalid. Please have a look at the logs for further details." : "A configuração é inválida. Por favor, veja o registo (log) do ownCloud para mais detalhes.", "No action specified" : "Nenhuma ação especificada", "No configuration specified" : "Nenhuma configuração especificada", "No data specified" : "Nenhuma data especificada", @@ -36,16 +32,13 @@ "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?" : "Trocando o modo vai permitir a busca automática no LDAP. Dependendo do tamanho do seu LDAP poderá demorar um pouco. Ainda pretende trocar o modo?", "Mode switch" : "Trocar de modo", "Select attributes" : "Selecionar atributos", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "O utilizador não foi encontrado. Por favor, verifique nome de utilizador e os atributos de permissão. Filtro eficaz (para copiar/colar na linha de comando de validação):
", "User found and settings verified." : "Utilizador encontrado e as definilções verificadas", - "An unspecified error occurred. Please check the settings and the log." : "ocorreu um erro não especificado. Por favor, verifique as configurações e o registo.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de procura é inválido, provavelmente devido a problemas de sintaxe. Verifique se existem números ímpares de parêntisis abertos e/ou fechados. Por favor reveja.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Ocorreu um erro de conexão ao servidor LDAP / AD. Por favor, reveja as definições de endereço, porto e credenciais.", "Please provide a login name to test against" : "Por favor, indique um nome de sessão para testar", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Uma vez que o servidor LDAP / AD não suporta a propriedade \"memberOf\" (grupos) a caixa de grupos foi desactivada.", "_%s group found_::_%s groups found_" : ["%s grupo encontrado","%s grupos encontrados"], "_%s user found_::_%s users found_" : ["%s utilizador encontrado","%s utilizadores encontrados"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Não foi possível detetar o atributo do nome do utilizador. Por favor especifique-o nas configurações ldap avançadas.", "Could not find the desired feature" : "Não se encontrou a função desejada", "Invalid Host" : "Hospedeiro Inválido", "Test Configuration" : "Testar a configuração", diff --git a/apps/user_ldap/l10n/ru.js b/apps/user_ldap/l10n/ru.js index 0835a2c935..23de1ae160 100644 --- a/apps/user_ldap/l10n/ru.js +++ b/apps/user_ldap/l10n/ru.js @@ -3,17 +3,17 @@ OC.L10N.register( { "Failed to clear the mappings." : "Не удалось очистить соответствия.", "Failed to delete the server configuration" : "Не удалось удалить конфигурацию сервера", - "The configuration is invalid: anonymous bind is not allowed." : "Некорректная конфигурация: анонимная связь не разрешается.", - "The configuration is valid and the connection could be established!" : "Конфигурация корректна и подключение может быть установлено!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Конфигурация корректна, но операция подключения завершилась неудачно. Проверьте настройки сервера и учетные данные.", - "The configuration is invalid. Please have a look at the logs for further details." : "Конфигурация некорректна. Проверьте журналы для уточнения деталей.", + "Invalid configuration: Anonymous binding is not allowed." : "Неверная конфигурация: анонимное связывание не разрешается.", + "Valid configuration, connection established!" : "Конфигурация настроена верно, связь установлена!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Конфигурация настроена верно, но связывание не удалось. Проверьте настройки сервера и реквизиты доступа.", + "Invalid configuration. Please have a look at the logs for further details." : "Неверная конфигурация. Просмотрите журналы для получения дополнительных сведений.", "No action specified" : "Действие не указано", "No configuration specified" : "Конфигурация не указана", "No data specified" : "Нет данных", " Could not set configuration %s" : "Невозможно создать конфигурацию %s", "Action does not exist" : "Действия не существует", "LDAP user and group backend" : "Интерфейс пользователей и групп LDAP", - "Renewing …" : "Обновляется…", + "Renewing …" : "Обновление…", "Very weak password" : "Очень слабый пароль", "Weak password" : "Слабый пароль", "So-so password" : "Так себе пароль", @@ -45,10 +45,10 @@ 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?" : "Переключение режима задействует автоматические запросы LDAP. В зависимости от размера LDAP это может занять много времени. Вы все еще желаете переключить режим?", "Mode switch" : "Переключение режима", "Select attributes" : "Выберите атрибуты", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Пользователь не найден. Пожалуйста проверьте учетные данные. Применяемый фильтр (для проверки в командой строке):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "Пользователь не найден. Проверьте данные для входа и имя пользователя. Действующий фильтр (для копирования и вставки при проверке в командой строке):
", "User found and settings verified." : "Пользователь найден и настройки проверены.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Настройки проверены, но найден более чем один пользователь. Только первый сможет произвести вход в систему. Советуем пересмотреть фильтр.", - "An unspecified error occurred. Please check the settings and the log." : "Произошла неуказанная ошибка. Пожалуйста проверьте настройки и журнал.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Подумайте о сужении поиска, поскольку он охватывает многих пользователей, но только первый из которых сможет войти в систему.", + "An unspecified error occurred. Please check log and settings." : "Произошла неуказанная ошибка. Проверьте настройки и журнал.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Некорректный фильтр поиска, возможно из-за синтаксических проблем, таких как несоответствие открывающих и закрывающих скобок. Пожалуйста проверьте.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Произошла ошибка подключения к LDAP / AD, пожалуйста проверьте настройки подключения и учетные данные.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Отсутствует заполнитель «%uid». Он будет заменен на логин при запросе к LDAP / AD.", @@ -62,7 +62,7 @@ OC.L10N.register( "LDAP / AD integration" : "Интеграция LDAP / AD", "_%s group found_::_%s groups found_" : ["%s группа найдена","%s группы найдены","%s групп найдено","%s групп найдено"], "_%s user found_::_%s users found_" : ["%s пользователь найден","%s пользователя найдено","%s пользователей найдено","%s пользователей найдено"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Не удалось автоматически определить атрибут содержащий отображаемое имя пользователя. Зайдите в расширенные настройки ldap и укажите его вручную.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Не удалось автоматически определить атрибут, содержащий отображаемое имя пользователя. Зайдите в расширенные настройки LDAP и укажите его вручную.", "Could not find the desired feature" : "Не удается найти требуемую функциональность", "Invalid Host" : "Некорректный адрес сервера", "Test Configuration" : "Проверить конфигурацию", diff --git a/apps/user_ldap/l10n/ru.json b/apps/user_ldap/l10n/ru.json index 1086cf695d..ded858226e 100644 --- a/apps/user_ldap/l10n/ru.json +++ b/apps/user_ldap/l10n/ru.json @@ -1,17 +1,17 @@ { "translations": { "Failed to clear the mappings." : "Не удалось очистить соответствия.", "Failed to delete the server configuration" : "Не удалось удалить конфигурацию сервера", - "The configuration is invalid: anonymous bind is not allowed." : "Некорректная конфигурация: анонимная связь не разрешается.", - "The configuration is valid and the connection could be established!" : "Конфигурация корректна и подключение может быть установлено!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Конфигурация корректна, но операция подключения завершилась неудачно. Проверьте настройки сервера и учетные данные.", - "The configuration is invalid. Please have a look at the logs for further details." : "Конфигурация некорректна. Проверьте журналы для уточнения деталей.", + "Invalid configuration: Anonymous binding is not allowed." : "Неверная конфигурация: анонимное связывание не разрешается.", + "Valid configuration, connection established!" : "Конфигурация настроена верно, связь установлена!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Конфигурация настроена верно, но связывание не удалось. Проверьте настройки сервера и реквизиты доступа.", + "Invalid configuration. Please have a look at the logs for further details." : "Неверная конфигурация. Просмотрите журналы для получения дополнительных сведений.", "No action specified" : "Действие не указано", "No configuration specified" : "Конфигурация не указана", "No data specified" : "Нет данных", " Could not set configuration %s" : "Невозможно создать конфигурацию %s", "Action does not exist" : "Действия не существует", "LDAP user and group backend" : "Интерфейс пользователей и групп LDAP", - "Renewing …" : "Обновляется…", + "Renewing …" : "Обновление…", "Very weak password" : "Очень слабый пароль", "Weak password" : "Слабый пароль", "So-so password" : "Так себе пароль", @@ -43,10 +43,10 @@ "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?" : "Переключение режима задействует автоматические запросы LDAP. В зависимости от размера LDAP это может занять много времени. Вы все еще желаете переключить режим?", "Mode switch" : "Переключение режима", "Select attributes" : "Выберите атрибуты", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Пользователь не найден. Пожалуйста проверьте учетные данные. Применяемый фильтр (для проверки в командой строке):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "Пользователь не найден. Проверьте данные для входа и имя пользователя. Действующий фильтр (для копирования и вставки при проверке в командой строке):
", "User found and settings verified." : "Пользователь найден и настройки проверены.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Настройки проверены, но найден более чем один пользователь. Только первый сможет произвести вход в систему. Советуем пересмотреть фильтр.", - "An unspecified error occurred. Please check the settings and the log." : "Произошла неуказанная ошибка. Пожалуйста проверьте настройки и журнал.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Подумайте о сужении поиска, поскольку он охватывает многих пользователей, но только первый из которых сможет войти в систему.", + "An unspecified error occurred. Please check log and settings." : "Произошла неуказанная ошибка. Проверьте настройки и журнал.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Некорректный фильтр поиска, возможно из-за синтаксических проблем, таких как несоответствие открывающих и закрывающих скобок. Пожалуйста проверьте.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Произошла ошибка подключения к LDAP / AD, пожалуйста проверьте настройки подключения и учетные данные.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Отсутствует заполнитель «%uid». Он будет заменен на логин при запросе к LDAP / AD.", @@ -60,7 +60,7 @@ "LDAP / AD integration" : "Интеграция LDAP / AD", "_%s group found_::_%s groups found_" : ["%s группа найдена","%s группы найдены","%s групп найдено","%s групп найдено"], "_%s user found_::_%s users found_" : ["%s пользователь найден","%s пользователя найдено","%s пользователей найдено","%s пользователей найдено"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Не удалось автоматически определить атрибут содержащий отображаемое имя пользователя. Зайдите в расширенные настройки ldap и укажите его вручную.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Не удалось автоматически определить атрибут, содержащий отображаемое имя пользователя. Зайдите в расширенные настройки LDAP и укажите его вручную.", "Could not find the desired feature" : "Не удается найти требуемую функциональность", "Invalid Host" : "Некорректный адрес сервера", "Test Configuration" : "Проверить конфигурацию", diff --git a/apps/user_ldap/l10n/sk.js b/apps/user_ldap/l10n/sk.js index 27f87a4b31..05ec82cd48 100644 --- a/apps/user_ldap/l10n/sk.js +++ b/apps/user_ldap/l10n/sk.js @@ -3,10 +3,6 @@ OC.L10N.register( { "Failed to clear the mappings." : "Nepodarilo sa vymazať mapovania.", "Failed to delete the server configuration" : "Zlyhalo zmazanie nastavenia servera.", - "The configuration is invalid: anonymous bind is not allowed." : "Nastavenia sú neplatné: anonymný bind nie je povolený.", - "The configuration is valid and the connection could be established!" : "Nastavenie je v poriadku a pripojenie je stabilné.", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Nastavenie je v poriadku, ale pripojenie zlyhalo. Skontrolujte nastavenia servera a prihlasovacie údaje.", - "The configuration is invalid. Please have a look at the logs for further details." : "Konfigurácia je chybná. Prosím, pozrite sa do logov pre ďalšie podrobnosti.", "No action specified" : "Nie je vybraná akcia", "No configuration specified" : "Nie je určená konfigurácia", "No data specified" : "Nie sú vybraté dáta", @@ -38,9 +34,7 @@ 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?" : "Prepnutie režimu povolí automatické LDAP požiadavky. V závislosti na veľkosti vášho LDAP môže vyhľadávanie chvíľu trvať. Naozaj chcete prepnúť režim?", "Mode switch" : "Prepínač režimov", "Select attributes" : "Vyberte atribúty", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Používateľ nenájdený. Skontrolujte si svoje prihlasovacie údaje a meno. Použitý filter (pre skopírovanie a overenie v príkazovom riadku):
", "User found and settings verified." : "Používateľ bol nájdený a nastavenie bolo overené.", - "An unspecified error occurred. Please check the settings and the log." : "Nastala nešpecifikovaná chyba. Overte nastavenia a súbor logu.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filter vyhľadávania je neplatný, pravdepodobne je chybný syntax, napr. neuzatvorené zátvorky. Overte si to.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Nastala chyba pri pripojení k LDAP / AD, skontrolujte položky host, port a prihlasovacie údaje.", "Please provide a login name to test against" : "Zadajte prihlasovacie meno na otestovanie", @@ -49,7 +43,6 @@ OC.L10N.register( "LDAP / AD integration" : "Spolupráca s LDAP/AD", "_%s group found_::_%s groups found_" : ["%s nájdená skupina","%s nájdené skupiny","%s nájdených skupín"], "_%s user found_::_%s users found_" : ["%s nájdený používateľ","%s nájdení používatelia","%s nájdených používateľov"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nemožno zistiť používateľský atribút pre zobrazenie používateľského mena. Prosím, zadajte ho sami v pokročilých nastaveniach LDAP.", "Could not find the desired feature" : "Nemožno nájsť požadovanú funkciu", "Invalid Host" : "Neplatný hostiteľ", "Test Configuration" : "Test nastavenia", diff --git a/apps/user_ldap/l10n/sk.json b/apps/user_ldap/l10n/sk.json index 9d06c29d11..e8617fe177 100644 --- a/apps/user_ldap/l10n/sk.json +++ b/apps/user_ldap/l10n/sk.json @@ -1,10 +1,6 @@ { "translations": { "Failed to clear the mappings." : "Nepodarilo sa vymazať mapovania.", "Failed to delete the server configuration" : "Zlyhalo zmazanie nastavenia servera.", - "The configuration is invalid: anonymous bind is not allowed." : "Nastavenia sú neplatné: anonymný bind nie je povolený.", - "The configuration is valid and the connection could be established!" : "Nastavenie je v poriadku a pripojenie je stabilné.", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Nastavenie je v poriadku, ale pripojenie zlyhalo. Skontrolujte nastavenia servera a prihlasovacie údaje.", - "The configuration is invalid. Please have a look at the logs for further details." : "Konfigurácia je chybná. Prosím, pozrite sa do logov pre ďalšie podrobnosti.", "No action specified" : "Nie je vybraná akcia", "No configuration specified" : "Nie je určená konfigurácia", "No data specified" : "Nie sú vybraté dáta", @@ -36,9 +32,7 @@ "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?" : "Prepnutie režimu povolí automatické LDAP požiadavky. V závislosti na veľkosti vášho LDAP môže vyhľadávanie chvíľu trvať. Naozaj chcete prepnúť režim?", "Mode switch" : "Prepínač režimov", "Select attributes" : "Vyberte atribúty", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Používateľ nenájdený. Skontrolujte si svoje prihlasovacie údaje a meno. Použitý filter (pre skopírovanie a overenie v príkazovom riadku):
", "User found and settings verified." : "Používateľ bol nájdený a nastavenie bolo overené.", - "An unspecified error occurred. Please check the settings and the log." : "Nastala nešpecifikovaná chyba. Overte nastavenia a súbor logu.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filter vyhľadávania je neplatný, pravdepodobne je chybný syntax, napr. neuzatvorené zátvorky. Overte si to.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Nastala chyba pri pripojení k LDAP / AD, skontrolujte položky host, port a prihlasovacie údaje.", "Please provide a login name to test against" : "Zadajte prihlasovacie meno na otestovanie", @@ -47,7 +41,6 @@ "LDAP / AD integration" : "Spolupráca s LDAP/AD", "_%s group found_::_%s groups found_" : ["%s nájdená skupina","%s nájdené skupiny","%s nájdených skupín"], "_%s user found_::_%s users found_" : ["%s nájdený používateľ","%s nájdení používatelia","%s nájdených používateľov"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nemožno zistiť používateľský atribút pre zobrazenie používateľského mena. Prosím, zadajte ho sami v pokročilých nastaveniach LDAP.", "Could not find the desired feature" : "Nemožno nájsť požadovanú funkciu", "Invalid Host" : "Neplatný hostiteľ", "Test Configuration" : "Test nastavenia", diff --git a/apps/user_ldap/l10n/sl.js b/apps/user_ldap/l10n/sl.js index d2f7297a5d..cfc628cae3 100644 --- a/apps/user_ldap/l10n/sl.js +++ b/apps/user_ldap/l10n/sl.js @@ -3,10 +3,6 @@ OC.L10N.register( { "Failed to clear the mappings." : "Čiščenje preslikav je spodletelo.", "Failed to delete the server configuration" : "Brisanje nastavitev strežnika je spodletelo.", - "The configuration is invalid: anonymous bind is not allowed." : "Nastavitev ni veljavna: brezimne povezave niso dovoljene.", - "The configuration is valid and the connection could be established!" : "Nastavitev je veljavna, zato je povezavo mogoče vzpostaviti!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Nastavitev je veljavna, vendar pa je vez spodletela. Preveriti je treba nastavitve strežnika in ustreznost poveril.", - "The configuration is invalid. Please have a look at the logs for further details." : "Nastavitev ni veljavna. Več podrobnosti o napaki je zabeleženih v dnevniku.", "No action specified" : "Ni določenega dejanja", "No configuration specified" : "Ni določenih nastavitev", "No data specified" : "Ni navedenih podatkov", @@ -38,9 +34,7 @@ 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?" : "Preklop načina omogoči samodejne poizvedbe LDAP. Glede na velikost je lahko opravilo dolgotrajno. Ali res želite preklopiti način?", "Mode switch" : "Preklop načina", "Select attributes" : "Izbor atributov", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Uporabnika ni mogoče najti. Preverite atribute prijave in uporabniško ime. Učinkovit filter (za kopiranje overitve ukazne vrstice):
", "User found and settings verified." : "Uporabnik je najden in nastavitve so overjene.", - "An unspecified error occurred. Please check the settings and the log." : "Prišlo je do nedoločene napake. Preveriti je treba dnevnik in nastavitve.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filter iskanja ni veljaven. Najverjetneje je to zaradi napake skladnje, kot je neustrezno ali neskladno uporabljen oklepaj. Preverite vpis.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Prišlo je do napake povezave z LDAP / AD. Preverite podatke o gostitelju, vratih in poverilih.", "Please provide a login name to test against" : "Vpisati je treba uporabniško ime za preizkus", @@ -49,7 +43,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Vaše geslo bo poteklo naslednji dan", "_%s group found_::_%s groups found_" : ["%s najdena skupina","%s najdeni skupini","%s najdene skupine","%s najdenih skupin"], "_%s user found_::_%s users found_" : ["%s najden uporabnik","%s najdena uporabnika","%s najdeni uporabniki","%s najdenih uporabnikov"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Ni mogoče prebrati atributa prikaznega imena. Določiti ga je treba ročno med nastavitvami LDAP.", "Could not find the desired feature" : "Želene zmožnosti ni mogoče najti", "Invalid Host" : "Neveljaven gostitelj", "Test Configuration" : "Preizkusne nastavitve", diff --git a/apps/user_ldap/l10n/sl.json b/apps/user_ldap/l10n/sl.json index c80ff0b6f9..6f5a5d9674 100644 --- a/apps/user_ldap/l10n/sl.json +++ b/apps/user_ldap/l10n/sl.json @@ -1,10 +1,6 @@ { "translations": { "Failed to clear the mappings." : "Čiščenje preslikav je spodletelo.", "Failed to delete the server configuration" : "Brisanje nastavitev strežnika je spodletelo.", - "The configuration is invalid: anonymous bind is not allowed." : "Nastavitev ni veljavna: brezimne povezave niso dovoljene.", - "The configuration is valid and the connection could be established!" : "Nastavitev je veljavna, zato je povezavo mogoče vzpostaviti!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Nastavitev je veljavna, vendar pa je vez spodletela. Preveriti je treba nastavitve strežnika in ustreznost poveril.", - "The configuration is invalid. Please have a look at the logs for further details." : "Nastavitev ni veljavna. Več podrobnosti o napaki je zabeleženih v dnevniku.", "No action specified" : "Ni določenega dejanja", "No configuration specified" : "Ni določenih nastavitev", "No data specified" : "Ni navedenih podatkov", @@ -36,9 +32,7 @@ "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?" : "Preklop načina omogoči samodejne poizvedbe LDAP. Glede na velikost je lahko opravilo dolgotrajno. Ali res želite preklopiti način?", "Mode switch" : "Preklop načina", "Select attributes" : "Izbor atributov", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Uporabnika ni mogoče najti. Preverite atribute prijave in uporabniško ime. Učinkovit filter (za kopiranje overitve ukazne vrstice):
", "User found and settings verified." : "Uporabnik je najden in nastavitve so overjene.", - "An unspecified error occurred. Please check the settings and the log." : "Prišlo je do nedoločene napake. Preveriti je treba dnevnik in nastavitve.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filter iskanja ni veljaven. Najverjetneje je to zaradi napake skladnje, kot je neustrezno ali neskladno uporabljen oklepaj. Preverite vpis.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Prišlo je do napake povezave z LDAP / AD. Preverite podatke o gostitelju, vratih in poverilih.", "Please provide a login name to test against" : "Vpisati je treba uporabniško ime za preizkus", @@ -47,7 +41,6 @@ "Your password will expire tomorrow." : "Vaše geslo bo poteklo naslednji dan", "_%s group found_::_%s groups found_" : ["%s najdena skupina","%s najdeni skupini","%s najdene skupine","%s najdenih skupin"], "_%s user found_::_%s users found_" : ["%s najden uporabnik","%s najdena uporabnika","%s najdeni uporabniki","%s najdenih uporabnikov"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Ni mogoče prebrati atributa prikaznega imena. Določiti ga je treba ročno med nastavitvami LDAP.", "Could not find the desired feature" : "Želene zmožnosti ni mogoče najti", "Invalid Host" : "Neveljaven gostitelj", "Test Configuration" : "Preizkusne nastavitve", diff --git a/apps/user_ldap/l10n/sq.js b/apps/user_ldap/l10n/sq.js index 3254abf800..874615ed51 100644 --- a/apps/user_ldap/l10n/sq.js +++ b/apps/user_ldap/l10n/sq.js @@ -3,10 +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", - "The configuration is invalid: anonymous bind is not allowed." : "Formësimi është i pavlefshëm: nuk lejohen bind-e anonimë.", - "The configuration is valid and the connection could be established!" : "Formësimi është i vlefshëm dhe lidhja mund të vendoset!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Formësimi është i vlefshëm, por Bind-i dështoi. Ju lutemi, kontrolloni rregullimet dhe kredencialet e shërbyesit.", - "The configuration is invalid. Please have a look at the logs for further details." : "Formësimi është i pavlefshëm. Ju lutemi, për hollësi të mëtejshme, hidhuni një sy regjistrave.", + "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", @@ -45,22 +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):
" : "S’u gjet përdorues. Ju lutemi, kontrolloni atributet tuaja për hyrje dhe emrin e përdoruesit. Filtër efektiv (për kopjim dhe hedhje në rresht urdhrash për vleftësim):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "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):
", "User found and settings verified." : "Përdoruesi u gjet dhe rregullimet u verifikuan.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Konfigurimet u verifikuan, por më shumë se një përdorues u gjet. Vetëm i pari do të jetë në gjendje të kyçet. Konsideroni një filter më të kufizuar. ", - "An unspecified error occurred. Please check the settings and the log." : "Ndodhi një gabim i papërcaktuar. Ju lutemi, kontrolloni rregullimet dhe regjistrin.", + "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." : "S’u zbulua dot atribut emri përdoruesi në ekran. Ju lutemi, caktojeni ju vetë te rregullime e mëtejshme për LDAP.", + "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", @@ -74,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ë:", @@ -84,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", @@ -99,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", @@ -130,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", @@ -151,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 f5af2b619e..3c01d607e0 100644 --- a/apps/user_ldap/l10n/sq.json +++ b/apps/user_ldap/l10n/sq.json @@ -1,10 +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", - "The configuration is invalid: anonymous bind is not allowed." : "Formësimi është i pavlefshëm: nuk lejohen bind-e anonimë.", - "The configuration is valid and the connection could be established!" : "Formësimi është i vlefshëm dhe lidhja mund të vendoset!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Formësimi është i vlefshëm, por Bind-i dështoi. Ju lutemi, kontrolloni rregullimet dhe kredencialet e shërbyesit.", - "The configuration is invalid. Please have a look at the logs for further details." : "Formësimi është i pavlefshëm. Ju lutemi, për hollësi të mëtejshme, hidhuni një sy regjistrave.", + "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", @@ -43,22 +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):
" : "S’u gjet përdorues. Ju lutemi, kontrolloni atributet tuaja për hyrje dhe emrin e përdoruesit. Filtër efektiv (për kopjim dhe hedhje në rresht urdhrash për vleftësim):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "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):
", "User found and settings verified." : "Përdoruesi u gjet dhe rregullimet u verifikuan.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Konfigurimet u verifikuan, por më shumë se një përdorues u gjet. Vetëm i pari do të jetë në gjendje të kyçet. Konsideroni një filter më të kufizuar. ", - "An unspecified error occurred. Please check the settings and the log." : "Ndodhi një gabim i papërcaktuar. Ju lutemi, kontrolloni rregullimet dhe regjistrin.", + "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." : "S’u zbulua dot atribut emri përdoruesi në ekran. Ju lutemi, caktojeni ju vetë te rregullime e mëtejshme për LDAP.", + "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", @@ -72,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ë:", @@ -82,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", @@ -97,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", @@ -128,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", @@ -149,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/l10n/sv.js b/apps/user_ldap/l10n/sv.js index f83c03b860..547ab0d50b 100644 --- a/apps/user_ldap/l10n/sv.js +++ b/apps/user_ldap/l10n/sv.js @@ -3,10 +3,6 @@ OC.L10N.register( { "Failed to clear the mappings." : "Fel vid rensning av mappningar", "Failed to delete the server configuration" : "Misslyckades med att radera serverinställningen", - "The configuration is invalid: anonymous bind is not allowed." : "Denna konfiguration är ogiltig: anonymous bind är ej tillåten.", - "The configuration is valid and the connection could be established!" : "Inställningen är giltig och anslutningen kunde upprättas!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurationen är riktig, men Bind felade. Var vänlig och kontrollera serverinställningar och logininformation.", - "The configuration is invalid. Please have a look at the logs for further details." : "Inställningen är ogiltig. Vänligen se ownCloud-loggen för fler detaljer.", "No action specified" : "Ingen åtgärd har angetts", "No configuration specified" : "Ingen konfiguration har angetts", "No data specified" : "Ingen data har angetts", @@ -37,10 +33,7 @@ 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?" : "Byte av läge kommer aktivera automatiska LDAP förfrågningar. Beroende på din LDAP storlek kan de ta ett tag. Vill du fortfarande ändra läge?", "Mode switch" : "Lägesändring", "Select attributes" : "Välj attribut", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Användare inte hittad. Var god kontrollera din inloggnings attribut och användarnamn. Effektivt filter (för att kopiera och klistra in i kommandofönster validering):", "User found and settings verified." : "Användare hittad och inställnings bekräftade.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Inställningarna verifierade men flera än 1 användare hittades. Endast den första kommer att kunna logga in. Annars testa med att göra en mer specifik sökning.", - "An unspecified error occurred. Please check the settings and the log." : "Ett ospecificerat fel uppstod. Var god kontrollera inställningar och logfilen.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Sökfiltret är ej giltigt, antagligen på grund utav ett syntaxfel så som ojämnat antal öppna och stängda klammrar. Var god granska.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Ett anslutningsfel till LDAP / AD uppstod. Var god granska värd, port och inloggningsuppgifter.", "Please provide a login name to test against" : "Vänligen ange ett inloggningsnamn att försöka ansluta med", @@ -49,7 +42,6 @@ OC.L10N.register( "LDAP / AD integration" : "LDAP / AD integration", "_%s group found_::_%s groups found_" : ["%s grupp hittad","%s grupper hittade"], "_%s user found_::_%s users found_" : ["%s användare hittad","%s användare hittade"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunde inte upptäcka attributet användarvisningsnamn. Vänligen ange det själv i de avancerade LDAP-inställningarna.", "Could not find the desired feature" : "Det gick inte hitta den önskade funktionen", "Invalid Host" : "Felaktig värd", "Test Configuration" : "Testa konfigurationen", @@ -147,6 +139,14 @@ OC.L10N.register( "Username-LDAP User Mapping" : "Användarnamn-LDAP användarmappning", "Clear Username-LDAP User Mapping" : "Rensa användarnamn-LDAP användarmappning", "Clear Groupname-LDAP Group Mapping" : "Rensa gruppnamn-LDAP gruppmappning", + "The configuration is invalid: anonymous bind is not allowed." : "Denna konfiguration är ogiltig: anonymous bind är ej tillåten.", + "The configuration is valid and the connection could be established!" : "Inställningen är giltig och anslutningen kunde upprättas!", + "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurationen är riktig, men Bind felade. Var vänlig och kontrollera serverinställningar och logininformation.", + "The configuration is invalid. Please have a look at the logs for further details." : "Inställningen är ogiltig. Vänligen se ownCloud-loggen för fler detaljer.", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Användare inte hittad. Var god kontrollera din inloggnings attribut och användarnamn. Effektivt filter (för att kopiera och klistra in i kommandofönster validering):", + "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Inställningarna verifierade men flera än 1 användare hittades. Endast den första kommer att kunna logga in. Annars testa med att göra en mer specifik sökning.", + "An unspecified error occurred. Please check the settings and the log." : "Ett ospecificerat fel uppstod. Var god kontrollera inställningar och logfilen.", + "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunde inte upptäcka attributet användarvisningsnamn. Vänligen ange det själv i de avancerade LDAP-inställningarna.", "Verify settings and count groups" : "Verifiera inställningar och räkna grupper", "Add a new and blank configuration" : "Skapa en ny och tom konfiguration", "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Du behöver inte ange protokoll förutom om du använder SSL. Starta då med ldaps://", diff --git a/apps/user_ldap/l10n/sv.json b/apps/user_ldap/l10n/sv.json index e2cca5157d..16db579294 100644 --- a/apps/user_ldap/l10n/sv.json +++ b/apps/user_ldap/l10n/sv.json @@ -1,10 +1,6 @@ { "translations": { "Failed to clear the mappings." : "Fel vid rensning av mappningar", "Failed to delete the server configuration" : "Misslyckades med att radera serverinställningen", - "The configuration is invalid: anonymous bind is not allowed." : "Denna konfiguration är ogiltig: anonymous bind är ej tillåten.", - "The configuration is valid and the connection could be established!" : "Inställningen är giltig och anslutningen kunde upprättas!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurationen är riktig, men Bind felade. Var vänlig och kontrollera serverinställningar och logininformation.", - "The configuration is invalid. Please have a look at the logs for further details." : "Inställningen är ogiltig. Vänligen se ownCloud-loggen för fler detaljer.", "No action specified" : "Ingen åtgärd har angetts", "No configuration specified" : "Ingen konfiguration har angetts", "No data specified" : "Ingen data har angetts", @@ -35,10 +31,7 @@ "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?" : "Byte av läge kommer aktivera automatiska LDAP förfrågningar. Beroende på din LDAP storlek kan de ta ett tag. Vill du fortfarande ändra läge?", "Mode switch" : "Lägesändring", "Select attributes" : "Välj attribut", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Användare inte hittad. Var god kontrollera din inloggnings attribut och användarnamn. Effektivt filter (för att kopiera och klistra in i kommandofönster validering):", "User found and settings verified." : "Användare hittad och inställnings bekräftade.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Inställningarna verifierade men flera än 1 användare hittades. Endast den första kommer att kunna logga in. Annars testa med att göra en mer specifik sökning.", - "An unspecified error occurred. Please check the settings and the log." : "Ett ospecificerat fel uppstod. Var god kontrollera inställningar och logfilen.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Sökfiltret är ej giltigt, antagligen på grund utav ett syntaxfel så som ojämnat antal öppna och stängda klammrar. Var god granska.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Ett anslutningsfel till LDAP / AD uppstod. Var god granska värd, port och inloggningsuppgifter.", "Please provide a login name to test against" : "Vänligen ange ett inloggningsnamn att försöka ansluta med", @@ -47,7 +40,6 @@ "LDAP / AD integration" : "LDAP / AD integration", "_%s group found_::_%s groups found_" : ["%s grupp hittad","%s grupper hittade"], "_%s user found_::_%s users found_" : ["%s användare hittad","%s användare hittade"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunde inte upptäcka attributet användarvisningsnamn. Vänligen ange det själv i de avancerade LDAP-inställningarna.", "Could not find the desired feature" : "Det gick inte hitta den önskade funktionen", "Invalid Host" : "Felaktig värd", "Test Configuration" : "Testa konfigurationen", @@ -145,6 +137,14 @@ "Username-LDAP User Mapping" : "Användarnamn-LDAP användarmappning", "Clear Username-LDAP User Mapping" : "Rensa användarnamn-LDAP användarmappning", "Clear Groupname-LDAP Group Mapping" : "Rensa gruppnamn-LDAP gruppmappning", + "The configuration is invalid: anonymous bind is not allowed." : "Denna konfiguration är ogiltig: anonymous bind är ej tillåten.", + "The configuration is valid and the connection could be established!" : "Inställningen är giltig och anslutningen kunde upprättas!", + "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurationen är riktig, men Bind felade. Var vänlig och kontrollera serverinställningar och logininformation.", + "The configuration is invalid. Please have a look at the logs for further details." : "Inställningen är ogiltig. Vänligen se ownCloud-loggen för fler detaljer.", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Användare inte hittad. Var god kontrollera din inloggnings attribut och användarnamn. Effektivt filter (för att kopiera och klistra in i kommandofönster validering):", + "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Inställningarna verifierade men flera än 1 användare hittades. Endast den första kommer att kunna logga in. Annars testa med att göra en mer specifik sökning.", + "An unspecified error occurred. Please check the settings and the log." : "Ett ospecificerat fel uppstod. Var god kontrollera inställningar och logfilen.", + "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunde inte upptäcka attributet användarvisningsnamn. Vänligen ange det själv i de avancerade LDAP-inställningarna.", "Verify settings and count groups" : "Verifiera inställningar och räkna grupper", "Add a new and blank configuration" : "Skapa en ny och tom konfiguration", "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Du behöver inte ange protokoll förutom om du använder SSL. Starta då med ldaps://", diff --git a/apps/user_ldap/l10n/th.js b/apps/user_ldap/l10n/th.js index ee96a99b51..b04775e1ab 100644 --- a/apps/user_ldap/l10n/th.js +++ b/apps/user_ldap/l10n/th.js @@ -3,10 +3,6 @@ OC.L10N.register( { "Failed to clear the mappings." : "ล้มเหลวขณะล้าง Mappings", "Failed to delete the server configuration" : "ลบการกำหนดค่าเซิร์ฟเวอร์ล้มเหลว", - "The configuration is invalid: anonymous bind is not allowed." : "การกำหนดค่าไม่ถูกต้อง: การไม่ระบุตัวตนไม่ได้รับอนุญาต", - "The configuration is valid and the connection could be established!" : "การกำหนดค่าถูกต้องและการเชื่อมต่อสามารถเชื่อมต่อได้!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "การกำหนดค่าถูกต้อง, แต่การผูกข้อมูลล้มเหลว, กรุณาตรวจสอบการตั้งค่าเซิร์ฟเวอร์และข้อมูลการเข้าใช้งาน", - "The configuration is invalid. Please have a look at the logs for further details." : "การกำหนดค่าไม่ถูกต้อง ดูได้ที่บันทึกสำหรับรายละเอียดเพิ่มเติม", "No action specified" : "ไม่ได้ระบุการดำเนินการ", "No configuration specified" : "ไม่ได้กำหนดค่า", "No data specified" : "ไม่มีข้อมูลที่ระบุ", @@ -38,16 +34,13 @@ 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?" : "โหมดสลับจะช่วยค้นหา LDAP อัตโนมัติ ขึ้นอยู่กับขนาด LDAP ของคุณมันอาจใช้เวลาสักครู่ คุณยังยังต้องการใช้โหมดสลับ?", "Mode switch" : "โหมดสลับ", "Select attributes" : "เลือกคุณลักษณะ", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "ไม่พบผู้ใช้ กรุณาตรวจสอบคุณลักษณะการเข้าสู่ระบบและชื่อผู้ใช้ของคุณ ตัวกรองที่มีประสิทธิภาพ (การคัดลอกและวางสำหรับการตรวจสอบคำสั่งทีละบรรทัด):
", "User found and settings verified." : "พบผู้ใช้และการตั้งค่าได้รับการตรวจสอบแล้ว", - "An unspecified error occurred. Please check the settings and the log." : "เกิดข้อผิดพลาดที่ระบุไม่ได้ กรุณาตรวจสอบการตั้งค่าและบันทึกของคุณ", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "ตัวกรองการค้นหาไม่ถูกต้องอาจเป็นเพราะปัญหาไวยากรณ์เช่นหมายเลขที่ไม่สม่ำเสมอของวงเล็บเปิดและปิด กรุณาแก้ไข", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "เกิดข้อผิดพลาดขณะเชื่อมต่อไปยัง LDAP/AD โปรดตรวจสอบโฮสต์พอร์ตและข้อมูลอื่นๆ", "Please provide a login name to test against" : "โปรดระบุชื่อที่ใช้ในการเข้าสู่ระบบเพื่อทดสอบข้อขัดแย้ง", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "กล่องข้อความกลุ่มถูกปิดการใช้งานเนื่องจากเซิร์ฟเวอร์ LDAP/AD ไม่สนับสนุน memberOf", "_%s group found_::_%s groups found_" : ["พบ %s กลุ่ม"], "_%s user found_::_%s users found_" : ["พบผู้ใช้ %s คน"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "ไม่สามารถตรวจสอบคุณลักษณะการแสดงชื่อของผู้ใช้ กรุณาระบุการตั้งค่า LDAP ขั้นสูงด้วยตัวคุณเอง", "Could not find the desired feature" : "ไม่พบคุณลักษณะที่ต้องการ", "Invalid Host" : "โฮสต์ไม่ถูกต้อง", "Test Configuration" : "ทดสอบการตั้งค่า", diff --git a/apps/user_ldap/l10n/th.json b/apps/user_ldap/l10n/th.json index c060ff33dc..89e89ca302 100644 --- a/apps/user_ldap/l10n/th.json +++ b/apps/user_ldap/l10n/th.json @@ -1,10 +1,6 @@ { "translations": { "Failed to clear the mappings." : "ล้มเหลวขณะล้าง Mappings", "Failed to delete the server configuration" : "ลบการกำหนดค่าเซิร์ฟเวอร์ล้มเหลว", - "The configuration is invalid: anonymous bind is not allowed." : "การกำหนดค่าไม่ถูกต้อง: การไม่ระบุตัวตนไม่ได้รับอนุญาต", - "The configuration is valid and the connection could be established!" : "การกำหนดค่าถูกต้องและการเชื่อมต่อสามารถเชื่อมต่อได้!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "การกำหนดค่าถูกต้อง, แต่การผูกข้อมูลล้มเหลว, กรุณาตรวจสอบการตั้งค่าเซิร์ฟเวอร์และข้อมูลการเข้าใช้งาน", - "The configuration is invalid. Please have a look at the logs for further details." : "การกำหนดค่าไม่ถูกต้อง ดูได้ที่บันทึกสำหรับรายละเอียดเพิ่มเติม", "No action specified" : "ไม่ได้ระบุการดำเนินการ", "No configuration specified" : "ไม่ได้กำหนดค่า", "No data specified" : "ไม่มีข้อมูลที่ระบุ", @@ -36,16 +32,13 @@ "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?" : "โหมดสลับจะช่วยค้นหา LDAP อัตโนมัติ ขึ้นอยู่กับขนาด LDAP ของคุณมันอาจใช้เวลาสักครู่ คุณยังยังต้องการใช้โหมดสลับ?", "Mode switch" : "โหมดสลับ", "Select attributes" : "เลือกคุณลักษณะ", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "ไม่พบผู้ใช้ กรุณาตรวจสอบคุณลักษณะการเข้าสู่ระบบและชื่อผู้ใช้ของคุณ ตัวกรองที่มีประสิทธิภาพ (การคัดลอกและวางสำหรับการตรวจสอบคำสั่งทีละบรรทัด):
", "User found and settings verified." : "พบผู้ใช้และการตั้งค่าได้รับการตรวจสอบแล้ว", - "An unspecified error occurred. Please check the settings and the log." : "เกิดข้อผิดพลาดที่ระบุไม่ได้ กรุณาตรวจสอบการตั้งค่าและบันทึกของคุณ", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "ตัวกรองการค้นหาไม่ถูกต้องอาจเป็นเพราะปัญหาไวยากรณ์เช่นหมายเลขที่ไม่สม่ำเสมอของวงเล็บเปิดและปิด กรุณาแก้ไข", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "เกิดข้อผิดพลาดขณะเชื่อมต่อไปยัง LDAP/AD โปรดตรวจสอบโฮสต์พอร์ตและข้อมูลอื่นๆ", "Please provide a login name to test against" : "โปรดระบุชื่อที่ใช้ในการเข้าสู่ระบบเพื่อทดสอบข้อขัดแย้ง", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "กล่องข้อความกลุ่มถูกปิดการใช้งานเนื่องจากเซิร์ฟเวอร์ LDAP/AD ไม่สนับสนุน memberOf", "_%s group found_::_%s groups found_" : ["พบ %s กลุ่ม"], "_%s user found_::_%s users found_" : ["พบผู้ใช้ %s คน"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "ไม่สามารถตรวจสอบคุณลักษณะการแสดงชื่อของผู้ใช้ กรุณาระบุการตั้งค่า LDAP ขั้นสูงด้วยตัวคุณเอง", "Could not find the desired feature" : "ไม่พบคุณลักษณะที่ต้องการ", "Invalid Host" : "โฮสต์ไม่ถูกต้อง", "Test Configuration" : "ทดสอบการตั้งค่า", diff --git a/apps/user_ldap/l10n/tr.js b/apps/user_ldap/l10n/tr.js index 6197dff6ca..fa51ef4710 100644 --- a/apps/user_ldap/l10n/tr.js +++ b/apps/user_ldap/l10n/tr.js @@ -3,10 +3,10 @@ OC.L10N.register( { "Failed to clear the mappings." : "Eşleştirmeler temizlenemedi.", "Failed to delete the server configuration" : "Sunucu yapılandırması silinemedi", - "The configuration is invalid: anonymous bind is not allowed." : "Yapılandırma geçersiz: anonim bağlamaya izin verilmiyor.", - "The configuration is valid and the connection could be established!" : "Yapılandırma geçerli. Bağlanabilir!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Yapılandırma geçerli ancak bağlanamadı. Lütfen sunucu ayarları ve kimlik doğrulama bilgilerini denetleyin.", - "The configuration is invalid. Please have a look at the logs for further details." : "Yapılandırma geçersiz. Lütfen ayrıntılı bilgi almak için günlüklere bakın.", + "Invalid configuration: Anonymous binding is not allowed." : "Yapılandırma geçersiz: Adsız bağlantı kurulmasına izin verilmiyor.", + "Valid configuration, connection established!" : "Yapılandırma geçerli, bağlantı kuruldu.", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Yapılandırma geçerli ancak bağlantı kurulamadı. Lütfen sunucu ayarları ve kimlik doğrulama bilgilerini denetleyin.", + "Invalid configuration. Please have a look at the logs for further details." : "Yapılandırma geçersiz. Lütfen ayrıntılı bilgi almak için günlüklere bakın.", "No action specified" : "Hehrangi bir işlem belirtilmemiş", "No configuration specified" : "Herhangi bir yapılandırma belirtilmemiş", "No data specified" : "Herhangi bir veri belirtilmemiş", @@ -45,10 +45,10 @@ 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?" : "Kipi değiştirmek otomatik LDAP sorgularını etkinleştirir. LDAP sisteminizin boyutlarına göre bu işlem uzun sürebilir. Kipi yine de değiştirmek istiyor musunuz?", "Mode switch" : "Kip değişimi", "Select attributes" : "Öznitelikleri seçin", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Kullanıcı bulunamadı. Lütfen oturum açma özniteliklerini ve kullanıcı adını denetleyin. Etkin süzgeç (komut satırı doğrulamasında kullanmak için kopyalayıp yapıştırın):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "Kullanıcı bulunamadı. Lütfen oturum açma özniteliklerini ve kullanıcı adını denetleyin. Etkin süzgeç (komut satırı doğrulamasında kullanmak için kopyalayıp yapıştırın):
", "User found and settings verified." : "Kullanıcı bulundu ve ayarlar doğrulandı.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ayarlar doğrulandı ancak birden fazla kullanıcı bulundu. Yalnız ilk kullanıcı oturum açabilecek. Lütfen daha dar bir süzgeç seçin.", - "An unspecified error occurred. Please check the settings and the log." : "Bilinmeyen bir sorun çıktı. Lütfen ayarları ve günlüğü denetleyin.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Çok sayıda kullanıcı bulunduğundan ve yalnız birinci kullanıcı oturum açabileceğinden arama ölçütlerinizi sıkılaştırmayı deneyin.", + "An unspecified error occurred. Please check log and settings." : "Bilinmeyen bir sorun çıktı. Lütfen günlüğü ve ayarları denetleyin.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Arama süzgeci, açılmış ve kapatılmış parantez sayılarının eşit olmaması gibi bir söz dizimi sorunu nedeniyle geçersiz. Lütfen gözden geçirin.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP / AD için bir bağlantı sorunu çıktı. Lütfen istemci, kapı numarası ve kimlik doğrulama bilgilerini denetleyin.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "LDAP / AD sorgularında kullanıcı adı ile değiştirilecek \"%uid\" yer belirleyicisi eksik. ", @@ -62,7 +62,7 @@ OC.L10N.register( "LDAP / AD integration" : "LDAP / AD bütünleştirmesi", "_%s group found_::_%s groups found_" : ["%s grup bulundu","%s grup bulundu"], "_%s user found_::_%s users found_" : ["%s kullanıcı bulundu","%s kullanıcı bulundu"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Görüntülenecek kullanıcı adı özniteliği algılanamadı. Lütfen gelişmiş ldap ayarları bölümünden kendiniz belirleyin.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Görüntülenecek kullanıcı adı özniteliği algılanamadı. Lütfen gelişmiş LDAP ayarları bölümünden siz belirtin.", "Could not find the desired feature" : "İstenilen özellik bulunamadı", "Invalid Host" : "Sunucu Geçersiz", "Test Configuration" : "Yapılandırmayı Sına", diff --git a/apps/user_ldap/l10n/tr.json b/apps/user_ldap/l10n/tr.json index 707f7cac60..cb13b1bef5 100644 --- a/apps/user_ldap/l10n/tr.json +++ b/apps/user_ldap/l10n/tr.json @@ -1,10 +1,10 @@ { "translations": { "Failed to clear the mappings." : "Eşleştirmeler temizlenemedi.", "Failed to delete the server configuration" : "Sunucu yapılandırması silinemedi", - "The configuration is invalid: anonymous bind is not allowed." : "Yapılandırma geçersiz: anonim bağlamaya izin verilmiyor.", - "The configuration is valid and the connection could be established!" : "Yapılandırma geçerli. Bağlanabilir!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Yapılandırma geçerli ancak bağlanamadı. Lütfen sunucu ayarları ve kimlik doğrulama bilgilerini denetleyin.", - "The configuration is invalid. Please have a look at the logs for further details." : "Yapılandırma geçersiz. Lütfen ayrıntılı bilgi almak için günlüklere bakın.", + "Invalid configuration: Anonymous binding is not allowed." : "Yapılandırma geçersiz: Adsız bağlantı kurulmasına izin verilmiyor.", + "Valid configuration, connection established!" : "Yapılandırma geçerli, bağlantı kuruldu.", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Yapılandırma geçerli ancak bağlantı kurulamadı. Lütfen sunucu ayarları ve kimlik doğrulama bilgilerini denetleyin.", + "Invalid configuration. Please have a look at the logs for further details." : "Yapılandırma geçersiz. Lütfen ayrıntılı bilgi almak için günlüklere bakın.", "No action specified" : "Hehrangi bir işlem belirtilmemiş", "No configuration specified" : "Herhangi bir yapılandırma belirtilmemiş", "No data specified" : "Herhangi bir veri belirtilmemiş", @@ -43,10 +43,10 @@ "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?" : "Kipi değiştirmek otomatik LDAP sorgularını etkinleştirir. LDAP sisteminizin boyutlarına göre bu işlem uzun sürebilir. Kipi yine de değiştirmek istiyor musunuz?", "Mode switch" : "Kip değişimi", "Select attributes" : "Öznitelikleri seçin", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "Kullanıcı bulunamadı. Lütfen oturum açma özniteliklerini ve kullanıcı adını denetleyin. Etkin süzgeç (komut satırı doğrulamasında kullanmak için kopyalayıp yapıştırın):
", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "Kullanıcı bulunamadı. Lütfen oturum açma özniteliklerini ve kullanıcı adını denetleyin. Etkin süzgeç (komut satırı doğrulamasında kullanmak için kopyalayıp yapıştırın):
", "User found and settings verified." : "Kullanıcı bulundu ve ayarlar doğrulandı.", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ayarlar doğrulandı ancak birden fazla kullanıcı bulundu. Yalnız ilk kullanıcı oturum açabilecek. Lütfen daha dar bir süzgeç seçin.", - "An unspecified error occurred. Please check the settings and the log." : "Bilinmeyen bir sorun çıktı. Lütfen ayarları ve günlüğü denetleyin.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Çok sayıda kullanıcı bulunduğundan ve yalnız birinci kullanıcı oturum açabileceğinden arama ölçütlerinizi sıkılaştırmayı deneyin.", + "An unspecified error occurred. Please check log and settings." : "Bilinmeyen bir sorun çıktı. Lütfen günlüğü ve ayarları denetleyin.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Arama süzgeci, açılmış ve kapatılmış parantez sayılarının eşit olmaması gibi bir söz dizimi sorunu nedeniyle geçersiz. Lütfen gözden geçirin.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP / AD için bir bağlantı sorunu çıktı. Lütfen istemci, kapı numarası ve kimlik doğrulama bilgilerini denetleyin.", "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "LDAP / AD sorgularında kullanıcı adı ile değiştirilecek \"%uid\" yer belirleyicisi eksik. ", @@ -60,7 +60,7 @@ "LDAP / AD integration" : "LDAP / AD bütünleştirmesi", "_%s group found_::_%s groups found_" : ["%s grup bulundu","%s grup bulundu"], "_%s user found_::_%s users found_" : ["%s kullanıcı bulundu","%s kullanıcı bulundu"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Görüntülenecek kullanıcı adı özniteliği algılanamadı. Lütfen gelişmiş ldap ayarları bölümünden kendiniz belirleyin.", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Görüntülenecek kullanıcı adı özniteliği algılanamadı. Lütfen gelişmiş LDAP ayarları bölümünden siz belirtin.", "Could not find the desired feature" : "İstenilen özellik bulunamadı", "Invalid Host" : "Sunucu Geçersiz", "Test Configuration" : "Yapılandırmayı Sına", diff --git a/apps/user_ldap/l10n/zh_CN.js b/apps/user_ldap/l10n/zh_CN.js index ff259ae235..a8bd4ed651 100644 --- a/apps/user_ldap/l10n/zh_CN.js +++ b/apps/user_ldap/l10n/zh_CN.js @@ -3,15 +3,16 @@ OC.L10N.register( { "Failed to clear the mappings." : "清除映射失败。", "Failed to delete the server configuration" : "未能删除服务器配置", - "The configuration is invalid: anonymous bind is not allowed." : "配置无效:不允许匿名绑定。", - "The configuration is valid and the connection could be established!" : "配置有效,能够建立连接!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "配置有效但绑定失败。请检查服务器设置和认证信息。", - "The configuration is invalid. Please have a look at the logs for further details." : "配置无效。更多细节请查看 ownCloud 日志。", + "Invalid configuration: Anonymous binding is not allowed." : "配置无效:不允许匿名绑定。", + "Valid configuration, connection established!" : "配置有效,连接成功!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "配置有效但绑定失败。请检查服务器设置和认证信息。", + "Invalid configuration. Please have a look at the logs for further details." : "配置无效。更多细节请查看日志。", "No action specified" : "未指定操作", "No configuration specified" : "未指定配置文件", "No data specified" : "未指定数据", " Could not set configuration %s" : " 无法设定配置文件 %s", "Action does not exist" : "操作不存在", + "LDAP user and group backend" : "LDAP用户和组", "Renewing …" : "更新...", "Very weak password" : "非常弱的密码", "Weak password" : "弱密码", @@ -44,12 +45,13 @@ 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?" : "切换模式将启用自动LDAP查询。根据您的LDAP规模,可能需要一段时间。是否继续切换模式?", "Mode switch" : "切换模式", "Select attributes" : "选择属性", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "找不到用户。请检查您的登录属性和用户名。有效过滤(复制和粘贴命令行验证):", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "找不到用户。请检查您的登录属性和用户名。有效过滤(复制和粘贴命令行验证):", "User found and settings verified." : "用户已找到,设置已验证。", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "已验证设置,但找到了多个用户。 只有第一个用户能登录。 请您考虑使用一个更小的过滤范围。", - "An unspecified error occurred. Please check the settings and the log." : "发生未指定的错误。请检查设置和日志。", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "如返回结果太多可考虑进一步缩小搜索范围,仅返回的第一个用户有效。", + "An unspecified error occurred. Please check log and settings." : "发生未指定的错误。请检查设置和日志。", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "搜索的筛选条件无效,可能是由于不完全开闭括号的句法的问题,请检查。", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP/ AD连接错误,请检查主机,端口和凭证。", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "该%uid占位符缺失。它将在LDAP/ AD登录名查询时进行替换。", "Please provide a login name to test against" : "请提供登录名以测试", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "该组框被禁用,因为LDAP/ AD服务器不支持memberOf。", "Password change rejected. Hint: " : "密码更改出错。提示:", @@ -60,7 +62,7 @@ OC.L10N.register( "LDAP / AD integration" : "LDAP / AD 整合", "_%s group found_::_%s groups found_" : ["发现 %s 个群组"], "_%s user found_::_%s users found_" : ["发现 %s 个用户"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "无法检测到用户的显示名称属性。请在高级LDAP设置中指定。", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "无法检测到用户的显示名称属性。请在高级LDAP设置中指定。", "Could not find the desired feature" : "无法找到所需的功能", "Invalid Host" : "无效的主机", "Test Configuration" : "测试配置", @@ -74,8 +76,10 @@ OC.L10N.register( "Edit LDAP Query" : "编辑LDAP查询", "LDAP Filter:" : "LDAP筛选:", "The filter specifies which LDAP groups shall have access to the %s instance." : "该筛选条件指定哪些LDAP组有权访问%s的实例。", + "Verify settings and count the groups" : "验证设置和统计组", "When logging in, %s will find the user based on the following attributes:" : "登录时,%s将查找基于以下属性的用户:", "LDAP / AD Username:" : "LDAP/AD用户名:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "允许是能被检测到的UID或SAM帐户LDAP/ AD用户名登录。", "LDAP / AD Email Address:" : "LDAP/AD邮箱地址:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "允许email属性登录。邮件和邮件主地址将被允许。", "Other Attributes:" : "其他属性:", @@ -161,10 +165,15 @@ OC.L10N.register( "Enable LDAP password changes per user" : "每个用户可以更改 LDAP 密码", "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." : "允许LDAP用户更改其密码,并允许超级管理员和组管理员更改LDAP用户的密码。 仅在LDAP服务器上相应配置访问控制策略时有效。 由于密码以纯文本形式发送到LDAP服务器,因此必须使用传输加密,并在LDAP服务器上配置散列密码。", "(New password is sent as plain text to LDAP)" : "(新的密码将以纯文本形式发送到 LDAP)", + "Default password policy DN" : "默认的密码规则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。只有当LDAP密码修改并且用户启用的情况下有效,仅支持OpenLDAP。留空以禁用密码过期处理。", "Special Attributes" : "特殊属性", "Quota Field" : "配额字段", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "指定一个 LDAP/AD 属性。留空,则使用用户名称(默认)。", "Quota Default" : "默认配额", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "覆盖配额域中没有配额设置的LDAP用户的默认配额。", "Email Field" : "电邮字段", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "从LDAP属性设置用户的电子邮件。留空则采用为默认行为。", "User Home Folder Naming Rule" : "用户主目录命名规则", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "指定一个 LDAP/AD 属性。留空,则使用用户名称(默认)。", "Internal Username" : "内部用户名", diff --git a/apps/user_ldap/l10n/zh_CN.json b/apps/user_ldap/l10n/zh_CN.json index d238123f81..ed59fb8b8f 100644 --- a/apps/user_ldap/l10n/zh_CN.json +++ b/apps/user_ldap/l10n/zh_CN.json @@ -1,15 +1,16 @@ { "translations": { "Failed to clear the mappings." : "清除映射失败。", "Failed to delete the server configuration" : "未能删除服务器配置", - "The configuration is invalid: anonymous bind is not allowed." : "配置无效:不允许匿名绑定。", - "The configuration is valid and the connection could be established!" : "配置有效,能够建立连接!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "配置有效但绑定失败。请检查服务器设置和认证信息。", - "The configuration is invalid. Please have a look at the logs for further details." : "配置无效。更多细节请查看 ownCloud 日志。", + "Invalid configuration: Anonymous binding is not allowed." : "配置无效:不允许匿名绑定。", + "Valid configuration, connection established!" : "配置有效,连接成功!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "配置有效但绑定失败。请检查服务器设置和认证信息。", + "Invalid configuration. Please have a look at the logs for further details." : "配置无效。更多细节请查看日志。", "No action specified" : "未指定操作", "No configuration specified" : "未指定配置文件", "No data specified" : "未指定数据", " Could not set configuration %s" : " 无法设定配置文件 %s", "Action does not exist" : "操作不存在", + "LDAP user and group backend" : "LDAP用户和组", "Renewing …" : "更新...", "Very weak password" : "非常弱的密码", "Weak password" : "弱密码", @@ -42,12 +43,13 @@ "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?" : "切换模式将启用自动LDAP查询。根据您的LDAP规模,可能需要一段时间。是否继续切换模式?", "Mode switch" : "切换模式", "Select attributes" : "选择属性", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation):
" : "找不到用户。请检查您的登录属性和用户名。有效过滤(复制和粘贴命令行验证):", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation):
" : "找不到用户。请检查您的登录属性和用户名。有效过滤(复制和粘贴命令行验证):", "User found and settings verified." : "用户已找到,设置已验证。", - "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "已验证设置,但找到了多个用户。 只有第一个用户能登录。 请您考虑使用一个更小的过滤范围。", - "An unspecified error occurred. Please check the settings and the log." : "发生未指定的错误。请检查设置和日志。", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "如返回结果太多可考虑进一步缩小搜索范围,仅返回的第一个用户有效。", + "An unspecified error occurred. Please check log and settings." : "发生未指定的错误。请检查设置和日志。", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "搜索的筛选条件无效,可能是由于不完全开闭括号的句法的问题,请检查。", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP/ AD连接错误,请检查主机,端口和凭证。", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "该%uid占位符缺失。它将在LDAP/ AD登录名查询时进行替换。", "Please provide a login name to test against" : "请提供登录名以测试", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "该组框被禁用,因为LDAP/ AD服务器不支持memberOf。", "Password change rejected. Hint: " : "密码更改出错。提示:", @@ -58,7 +60,7 @@ "LDAP / AD integration" : "LDAP / AD 整合", "_%s group found_::_%s groups found_" : ["发现 %s 个群组"], "_%s user found_::_%s users found_" : ["发现 %s 个用户"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "无法检测到用户的显示名称属性。请在高级LDAP设置中指定。", + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "无法检测到用户的显示名称属性。请在高级LDAP设置中指定。", "Could not find the desired feature" : "无法找到所需的功能", "Invalid Host" : "无效的主机", "Test Configuration" : "测试配置", @@ -72,8 +74,10 @@ "Edit LDAP Query" : "编辑LDAP查询", "LDAP Filter:" : "LDAP筛选:", "The filter specifies which LDAP groups shall have access to the %s instance." : "该筛选条件指定哪些LDAP组有权访问%s的实例。", + "Verify settings and count the groups" : "验证设置和统计组", "When logging in, %s will find the user based on the following attributes:" : "登录时,%s将查找基于以下属性的用户:", "LDAP / AD Username:" : "LDAP/AD用户名:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "允许是能被检测到的UID或SAM帐户LDAP/ AD用户名登录。", "LDAP / AD Email Address:" : "LDAP/AD邮箱地址:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "允许email属性登录。邮件和邮件主地址将被允许。", "Other Attributes:" : "其他属性:", @@ -159,10 +163,15 @@ "Enable LDAP password changes per user" : "每个用户可以更改 LDAP 密码", "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." : "允许LDAP用户更改其密码,并允许超级管理员和组管理员更改LDAP用户的密码。 仅在LDAP服务器上相应配置访问控制策略时有效。 由于密码以纯文本形式发送到LDAP服务器,因此必须使用传输加密,并在LDAP服务器上配置散列密码。", "(New password is sent as plain text to LDAP)" : "(新的密码将以纯文本形式发送到 LDAP)", + "Default password policy DN" : "默认的密码规则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。只有当LDAP密码修改并且用户启用的情况下有效,仅支持OpenLDAP。留空以禁用密码过期处理。", "Special Attributes" : "特殊属性", "Quota Field" : "配额字段", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "指定一个 LDAP/AD 属性。留空,则使用用户名称(默认)。", "Quota Default" : "默认配额", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "覆盖配额域中没有配额设置的LDAP用户的默认配额。", "Email Field" : "电邮字段", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "从LDAP属性设置用户的电子邮件。留空则采用为默认行为。", "User Home Folder Naming Rule" : "用户主目录命名规则", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "指定一个 LDAP/AD 属性。留空,则使用用户名称(默认)。", "Internal Username" : "内部用户名", diff --git a/apps/user_ldap/lib/Configuration.php b/apps/user_ldap/lib/Configuration.php index 851ff03cbb..c65e6e34e2 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/Group_LDAP.php b/apps/user_ldap/lib/Group_LDAP.php index 60ce664684..f7617fa5a5 100644 --- a/apps/user_ldap/lib/Group_LDAP.php +++ b/apps/user_ldap/lib/Group_LDAP.php @@ -1067,7 +1067,7 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface { * @return boolean * * Returns the supported actions as int to be - * compared with OC_USER_BACKEND_CREATE_USER etc. + * compared with \OC\User\Backend::CREATE_USER etc. */ public function implementsActions($actions) { return (bool)(\OC\Group\Backend::COUNT_USERS & $actions); diff --git a/apps/user_ldap/lib/Group_Proxy.php b/apps/user_ldap/lib/Group_Proxy.php index c102e7ac62..e546c84a90 100644 --- a/apps/user_ldap/lib/Group_Proxy.php +++ b/apps/user_ldap/lib/Group_Proxy.php @@ -190,7 +190,7 @@ class Group_Proxy extends Proxy implements \OCP\GroupInterface { * @return boolean * * Returns the supported actions as int to be - * compared with OC_USER_BACKEND_CREATE_USER etc. + * compared with \OC\User\Backend::CREATE_USER etc. */ public function implementsActions($actions) { //it's the same across all our user backends obviously diff --git a/apps/user_ldap/lib/Notification/Notifier.php b/apps/user_ldap/lib/Notification/Notifier.php index 0099d764f0..795d8d4c34 100644 --- a/apps/user_ldap/lib/Notification/Notifier.php +++ b/apps/user_ldap/lib/Notification/Notifier.php @@ -63,9 +63,9 @@ class Notifier implements INotifier { $params = $notification->getSubjectParameters(); $days = (int) $params[0]; if ($days === 2) { - $notification->setParsedSubject($l->t('Your password will expire tomorrow.', $days)); + $notification->setParsedSubject($l->t('Your password will expire tomorrow.')); } else if ($days === 1) { - $notification->setParsedSubject($l->t('Your password will expire today.', $days)); + $notification->setParsedSubject($l->t('Your password will expire today.')); } else { $notification->setParsedSubject($l->n( 'Your password will expire within %n day.', diff --git a/apps/user_ldap/lib/User_LDAP.php b/apps/user_ldap/lib/User_LDAP.php index 75cdb3951c..3cc2fec740 100644 --- a/apps/user_ldap/lib/User_LDAP.php +++ b/apps/user_ldap/lib/User_LDAP.php @@ -486,7 +486,7 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn * @return boolean * * Returns the supported actions as int to be - * compared with OC_USER_BACKEND_CREATE_USER etc. + * compared with \OC\User\Backend::CREATE_USER etc. */ public function implementsActions($actions) { return (bool)((Backend::CHECK_PASSWORD diff --git a/apps/user_ldap/lib/User_Proxy.php b/apps/user_ldap/lib/User_Proxy.php index 8e81b10f7b..d1784ad7c1 100644 --- a/apps/user_ldap/lib/User_Proxy.php +++ b/apps/user_ldap/lib/User_Proxy.php @@ -119,7 +119,7 @@ class User_Proxy extends Proxy implements \OCP\IUserBackend, \OCP\UserInterface, * @return boolean * * Returns the supported actions as int to be - * compared with OC_USER_BACKEND_CREATE_USER etc. + * compared with \OC\User\Backend::CREATE_USER etc. */ public function implementsActions($actions) { //it's the same across all our user backends obviously diff --git a/apps/user_ldap/lib/Wizard.php b/apps/user_ldap/lib/Wizard.php index 73fcd4f1e4..f6b78208fd 100644 --- a/apps/user_ldap/lib/Wizard.php +++ b/apps/user_ldap/lib/Wizard.php @@ -107,7 +107,7 @@ class Wizard extends LDAPUtility { } else if ($type === 'objects') { $result = $this->access->countObjects($limit); } else { - throw new \Exception('internal error: invalid object type', 500); + throw new \Exception('Internal error: Invalid object type', 500); } return $result; @@ -244,7 +244,7 @@ class Wizard extends LDAPUtility { } }; - throw new \Exception(self::$l->t('Could not detect user display name attribute. Please specify it yourself in advanced ldap settings.')); + throw new \Exception(self::$l->t('Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings.')); } /** @@ -905,7 +905,7 @@ class Wizard extends LDAPUtility { $er = $this->ldap->firstEntry($cr, $rr); $attrs = $this->ldap->getAttributes($cr, $er); $dn = $this->ldap->getDN($cr, $er); - if ($dn == false || $dn === '') { + if ($dn === false || $dn === '') { continue; } $filterPart = '(memberof=' . $dn . ')'; diff --git a/apps/user_ldap/templates/part.wizard-loginfilter.php b/apps/user_ldap/templates/part.wizard-loginfilter.php index 779b3fdb9a..2b0bd3f230 100644 --- a/apps/user_ldap/templates/part.wizard-loginfilter.php +++ b/apps/user_ldap/templates/part.wizard-loginfilter.php @@ -9,7 +9,7 @@ " name="ldap_loginfilter_username" value="1" />

@@ -18,7 +18,7 @@ " name="ldap_loginfilter_email" value="1" />

@@ -41,7 +41,7 @@

diff --git a/apps/workflowengine/l10n/el.js b/apps/workflowengine/l10n/el.js index a8ea95f7ae..8fc59e0785 100644 --- a/apps/workflowengine/l10n/el.js +++ b/apps/workflowengine/l10n/el.js @@ -3,7 +3,7 @@ OC.L10N.register( { "Saved" : "Αποθηκεύτηκε", "Saving failed:" : "Απέτυχε η αποθήκευση:", - "File MIME type" : "MIME τύπος αρχείου", + "File MIME type" : "Τύπος αρχείου MIME", "is" : "είναι", "is not" : "δεν είναι", "matches" : "ταιριάζει", @@ -37,9 +37,11 @@ OC.L10N.register( "Android client" : "Πελάτης Android", "iOS client" : "Πελάτης iOS", "Desktop client" : "Πελάτης σταθερού υπολογιστή", + "User group membership" : "Συμμετοχή σε ομάδα χρηστών", "is member of" : "είναι μέλος του", "is not member of" : "δεν είναι μέλος του", "The given operator is invalid" : "Ο δοσμένος πάροχος δεν είναι έγκυρος", + "The given regular expression is invalid" : "Η δοθείσα κανονική έκφραση δεν είναι έγκυρη", "The given file size is invalid" : "Το δοσμένο μέγεθος αρχείου δεν είναι έγκυρο", "The given tag id is invalid" : "Το δοσμένο id της ετικέτας δεν είναι έγκυρο", "The given IP range is invalid" : "Η δοσμένη περιοχή IP δεν είναι έγκυρη", @@ -57,6 +59,7 @@ OC.L10N.register( "Check %s is invalid" : "Έλεγχος %s δεν είναι έγκυρος", "Check #%s does not exist" : "Έλεγχος #%s δεν υπάρχει", "Workflow" : "Ροή εργασίας", + "Files workflow engine" : "Μηχανή αρχείων ροής εργασιών", "Open documentation" : "Άνοιγμ τεκμηρίωσης", "Add rule group" : "Προσθέστε κανόνα ομάδας", "Short rule description" : "Μικρή περιγραφή κανόνα", diff --git a/apps/workflowengine/l10n/el.json b/apps/workflowengine/l10n/el.json index 3dbeb509ab..214b88d887 100644 --- a/apps/workflowengine/l10n/el.json +++ b/apps/workflowengine/l10n/el.json @@ -1,7 +1,7 @@ { "translations": { "Saved" : "Αποθηκεύτηκε", "Saving failed:" : "Απέτυχε η αποθήκευση:", - "File MIME type" : "MIME τύπος αρχείου", + "File MIME type" : "Τύπος αρχείου MIME", "is" : "είναι", "is not" : "δεν είναι", "matches" : "ταιριάζει", @@ -35,9 +35,11 @@ "Android client" : "Πελάτης Android", "iOS client" : "Πελάτης iOS", "Desktop client" : "Πελάτης σταθερού υπολογιστή", + "User group membership" : "Συμμετοχή σε ομάδα χρηστών", "is member of" : "είναι μέλος του", "is not member of" : "δεν είναι μέλος του", "The given operator is invalid" : "Ο δοσμένος πάροχος δεν είναι έγκυρος", + "The given regular expression is invalid" : "Η δοθείσα κανονική έκφραση δεν είναι έγκυρη", "The given file size is invalid" : "Το δοσμένο μέγεθος αρχείου δεν είναι έγκυρο", "The given tag id is invalid" : "Το δοσμένο id της ετικέτας δεν είναι έγκυρο", "The given IP range is invalid" : "Η δοσμένη περιοχή IP δεν είναι έγκυρη", @@ -55,6 +57,7 @@ "Check %s is invalid" : "Έλεγχος %s δεν είναι έγκυρος", "Check #%s does not exist" : "Έλεγχος #%s δεν υπάρχει", "Workflow" : "Ροή εργασίας", + "Files workflow engine" : "Μηχανή αρχείων ροής εργασιών", "Open documentation" : "Άνοιγμ τεκμηρίωσης", "Add rule group" : "Προσθέστε κανόνα ομάδας", "Short rule description" : "Μικρή περιγραφή κανόνα", diff --git a/apps/workflowengine/l10n/lt_LT.js b/apps/workflowengine/l10n/lt_LT.js new file mode 100644 index 0000000000..270e10a058 --- /dev/null +++ b/apps/workflowengine/l10n/lt_LT.js @@ -0,0 +1,74 @@ +OC.L10N.register( + "workflowengine", + { + "Saved" : "Įrašyta", + "Saving failed:" : "Įrašymas nepavyko:", + "File MIME type" : "Failo MIME tipas", + "is" : "yra", + "is not" : "nėra", + "matches" : "atitinka", + "does not match" : "nesutapo", + "Example: {placeholder}" : "Pavyzdys: {placeholder}", + "File size (upload)" : "Failo dydis (įkėlimas)", + "less" : "mažiau", + "less or equals" : "mažiau arba lygu", + "greater or equals" : "daugiau arba lygu", + "greater" : "daugiau", + "File system tag" : "Failų sistemos žymė", + "is tagged with" : "pažymėtas", + "is not tagged with" : "nepažymėtas", + "Select tag…" : "Pasirinkite žymę…", + "Request remote address" : "Užklausos nutolęs adresas", + "matches IPv4" : "atitinka IPv4", + "does not match IPv4" : "neatitinka IPv4", + "matches IPv6" : "atitinka IPv6", + "does not match IPv6" : "neatitinka IPv6", + "Request time" : "Užklausos laikas", + "between" : "tarp", + "not between" : "nėra tarp", + "Start" : "Pradžia", + "End" : "Pabaiga", + "Select timezone…" : "Pasirinkite laiko juostą…", + "Request URL" : "Užklausos URL", + "Predefined URLs" : "Apibrėžti URLs", + "Files WebDAV" : "WebDAV failai", + "Request user agent" : "Užklausos vartotojo agentas", + "Sync clients" : "Sinchronizavimo klientas", + "Android client" : "Android klientas", + "iOS client" : "iOS klientas", + "Desktop client" : "Darbalaukio klientas", + "User group membership" : "Vartotojų grupių narystės", + "is member of" : "priklauso", + "is not member of" : "nepriklauso", + "The given operator is invalid" : "Nurodytas operatorius yra neteisingas", + "The given regular expression is invalid" : "Nurodyta reguliari išraiška neteisinga", + "The given file size is invalid" : "Nurodytas failo dydis neteisingas", + "The given tag id is invalid" : "Nurodyta žymė neteisinga", + "The given IP range is invalid" : "Nurodytas IP rėžis nėra korektiškas", + "The given IP range is not valid for IPv4" : "Nurodytas IPv4 adresas neteisingas", + "The given IP range is not valid for IPv6" : "Nurodytas IPv6 adresas neteisingas", + "The given time span is invalid" : "Neteisingai nurodytas laiko tarpsnis", + "The given start time is invalid" : "Neteisingai nurodyta laiko pradžia", + "The given end time is invalid" : "Neteisingai nurodyta laiko pabaiga", + "The given group does not exist" : "Pateikta grupė neegzistuoja", + "Check %s is invalid or does not exist" : "%s neteisingas arba neegzistuoja", + "Operation #%s does not exist" : "Operacijos #%s nėra", + "Operation %s does not exist" : "Operacijos %s nėra", + "Operation %s is invalid" : "Neteisinga %s operacija", + "Check %s does not exist" : "%s neegzistuoja", + "Check %s is invalid" : "Neteisingas %s", + "Check #%s does not exist" : "#%s neegzistuoja", + "Workflow" : "Darbo eiga", + "Files workflow engine" : "Darbo eigos su failais variklis", + "Open documentation" : "Atverti dokumentaciją", + "Add rule group" : "Pridėti taisyklių grupę", + "Short rule description" : "Rodyti taisyklės aprašymą", + "Add rule" : "Pridėti taisyklę", + "Reset" : "Atstatyti", + "Save" : "Įrašyti", + "Saving…" : "Įrašoma…", + "Loading…" : "Įkeliama…", + "Successfully saved" : "Sėkmingai įrašyta", + "File mime type" : "Failo mime tipas" +}, +"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/workflowengine/l10n/lt_LT.json b/apps/workflowengine/l10n/lt_LT.json new file mode 100644 index 0000000000..09dc1a4b53 --- /dev/null +++ b/apps/workflowengine/l10n/lt_LT.json @@ -0,0 +1,72 @@ +{ "translations": { + "Saved" : "Įrašyta", + "Saving failed:" : "Įrašymas nepavyko:", + "File MIME type" : "Failo MIME tipas", + "is" : "yra", + "is not" : "nėra", + "matches" : "atitinka", + "does not match" : "nesutapo", + "Example: {placeholder}" : "Pavyzdys: {placeholder}", + "File size (upload)" : "Failo dydis (įkėlimas)", + "less" : "mažiau", + "less or equals" : "mažiau arba lygu", + "greater or equals" : "daugiau arba lygu", + "greater" : "daugiau", + "File system tag" : "Failų sistemos žymė", + "is tagged with" : "pažymėtas", + "is not tagged with" : "nepažymėtas", + "Select tag…" : "Pasirinkite žymę…", + "Request remote address" : "Užklausos nutolęs adresas", + "matches IPv4" : "atitinka IPv4", + "does not match IPv4" : "neatitinka IPv4", + "matches IPv6" : "atitinka IPv6", + "does not match IPv6" : "neatitinka IPv6", + "Request time" : "Užklausos laikas", + "between" : "tarp", + "not between" : "nėra tarp", + "Start" : "Pradžia", + "End" : "Pabaiga", + "Select timezone…" : "Pasirinkite laiko juostą…", + "Request URL" : "Užklausos URL", + "Predefined URLs" : "Apibrėžti URLs", + "Files WebDAV" : "WebDAV failai", + "Request user agent" : "Užklausos vartotojo agentas", + "Sync clients" : "Sinchronizavimo klientas", + "Android client" : "Android klientas", + "iOS client" : "iOS klientas", + "Desktop client" : "Darbalaukio klientas", + "User group membership" : "Vartotojų grupių narystės", + "is member of" : "priklauso", + "is not member of" : "nepriklauso", + "The given operator is invalid" : "Nurodytas operatorius yra neteisingas", + "The given regular expression is invalid" : "Nurodyta reguliari išraiška neteisinga", + "The given file size is invalid" : "Nurodytas failo dydis neteisingas", + "The given tag id is invalid" : "Nurodyta žymė neteisinga", + "The given IP range is invalid" : "Nurodytas IP rėžis nėra korektiškas", + "The given IP range is not valid for IPv4" : "Nurodytas IPv4 adresas neteisingas", + "The given IP range is not valid for IPv6" : "Nurodytas IPv6 adresas neteisingas", + "The given time span is invalid" : "Neteisingai nurodytas laiko tarpsnis", + "The given start time is invalid" : "Neteisingai nurodyta laiko pradžia", + "The given end time is invalid" : "Neteisingai nurodyta laiko pabaiga", + "The given group does not exist" : "Pateikta grupė neegzistuoja", + "Check %s is invalid or does not exist" : "%s neteisingas arba neegzistuoja", + "Operation #%s does not exist" : "Operacijos #%s nėra", + "Operation %s does not exist" : "Operacijos %s nėra", + "Operation %s is invalid" : "Neteisinga %s operacija", + "Check %s does not exist" : "%s neegzistuoja", + "Check %s is invalid" : "Neteisingas %s", + "Check #%s does not exist" : "#%s neegzistuoja", + "Workflow" : "Darbo eiga", + "Files workflow engine" : "Darbo eigos su failais variklis", + "Open documentation" : "Atverti dokumentaciją", + "Add rule group" : "Pridėti taisyklių grupę", + "Short rule description" : "Rodyti taisyklės aprašymą", + "Add rule" : "Pridėti taisyklę", + "Reset" : "Atstatyti", + "Save" : "Įrašyti", + "Saving…" : "Įrašoma…", + "Loading…" : "Įkeliama…", + "Successfully saved" : "Sėkmingai įrašyta", + "File mime type" : "Failo mime tipas" +},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +} \ No newline at end of file diff --git a/apps/workflowengine/l10n/lv.js b/apps/workflowengine/l10n/lv.js index 3245afed08..1e96ec1d72 100644 --- a/apps/workflowengine/l10n/lv.js +++ b/apps/workflowengine/l10n/lv.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Saved" : "Saglabāts", "Saving failed:" : "Saglabāšana neizdevās:", + "File MIME type" : "Faila MIME tips", "is" : "ir", "is not" : "nav", "matches" : "atbilst", @@ -58,6 +59,7 @@ OC.L10N.register( "Check %s is invalid" : "Pārbaude %s ir nederīga", "Check #%s does not exist" : "Pārbaude #%s nepastāv", "Workflow" : "Darbplūsma", + "Files workflow engine" : "Faila darblūsmas programma", "Open documentation" : "Atvērt dokumentāciju", "Add rule group" : "Pievienot kārtulu grupas", "Short rule description" : "Īss kārtulas apraksts", diff --git a/apps/workflowengine/l10n/lv.json b/apps/workflowengine/l10n/lv.json index fabd7d1557..90bd428f4b 100644 --- a/apps/workflowengine/l10n/lv.json +++ b/apps/workflowengine/l10n/lv.json @@ -1,6 +1,7 @@ { "translations": { "Saved" : "Saglabāts", "Saving failed:" : "Saglabāšana neizdevās:", + "File MIME type" : "Faila MIME tips", "is" : "ir", "is not" : "nav", "matches" : "atbilst", @@ -56,6 +57,7 @@ "Check %s is invalid" : "Pārbaude %s ir nederīga", "Check #%s does not exist" : "Pārbaude #%s nepastāv", "Workflow" : "Darbplūsma", + "Files workflow engine" : "Faila darblūsmas programma", "Open documentation" : "Atvērt dokumentāciju", "Add rule group" : "Pievienot kārtulu grupas", "Short rule description" : "Īss kārtulas apraksts", diff --git a/apps/workflowengine/l10n/zh_TW.js b/apps/workflowengine/l10n/zh_TW.js index 07ed427b3a..82c4f6905f 100644 --- a/apps/workflowengine/l10n/zh_TW.js +++ b/apps/workflowengine/l10n/zh_TW.js @@ -25,6 +25,7 @@ OC.L10N.register( "does not match IPv6" : "不能匹配 IPv6", "Request time" : "請求時間", "between" : "之間", + "not between" : "皆非", "Start" : "開始", "End" : "結束", "Select timezone…" : "選擇時區...", @@ -36,6 +37,9 @@ OC.L10N.register( "Android client" : "Android 客戶端", "iOS client" : "iOS 客戶端", "Desktop client" : "桌面客戶端", + "User group membership" : "使用者成員關係", + "is member of" : "是成員來自", + "is not member of" : "不是成員來自", "The given operator is invalid" : "指定的操作無效", "The given regular expression is invalid" : "指定的規則表達式無效", "The given file size is invalid" : "指定的檔案大小無效", diff --git a/apps/workflowengine/l10n/zh_TW.json b/apps/workflowengine/l10n/zh_TW.json index 27fa421bac..0b561b98d2 100644 --- a/apps/workflowengine/l10n/zh_TW.json +++ b/apps/workflowengine/l10n/zh_TW.json @@ -23,6 +23,7 @@ "does not match IPv6" : "不能匹配 IPv6", "Request time" : "請求時間", "between" : "之間", + "not between" : "皆非", "Start" : "開始", "End" : "結束", "Select timezone…" : "選擇時區...", @@ -34,6 +35,9 @@ "Android client" : "Android 客戶端", "iOS client" : "iOS 客戶端", "Desktop client" : "桌面客戶端", + "User group membership" : "使用者成員關係", + "is member of" : "是成員來自", + "is not member of" : "不是成員來自", "The given operator is invalid" : "指定的操作無效", "The given regular expression is invalid" : "指定的規則表達式無效", "The given file size is invalid" : "指定的檔案大小無效", diff --git a/apps/workflowengine/lib/Manager.php b/apps/workflowengine/lib/Manager.php index e93498b507..48d29cf207 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/build/.phan/config.php b/build/.phan/config.php new file mode 100644 index 0000000000..2642152943 --- /dev/null +++ b/build/.phan/config.php @@ -0,0 +1,159 @@ + [ + 'build/.phan/stubs', + '3rdparty', + 'lib/composer', + 'themes', + 'lib/', + 'apps/', + 'core/', + 'ocs/', + 'ocs-provider/', + 'settings/', + 'tests/lib/Util/User', + ], + + // A directory list that defines files that will be excluded + // from static analysis, but whose class and method + // information should be included. + // + // Generally, you'll want to include the directories for + // third-party code (such as "vendor/") in this list. + // + // n.b.: If you'd like to parse but not analyze 3rd + // party code, directories containing that code + // should be added to the `directory_list` as + // to `exclude_analysis_directory_list`. + "exclude_analysis_directory_list" => [ + '3rdparty', + 'lib/composer', + 'apps/admin_audit/tests', + 'apps/comments/tests', + 'apps/dav/tests', + 'apps/encryption/tests', + 'apps/federatedfilesharing/tests', + 'apps/federation/tests', + 'apps/files/tests', + 'apps/files_external/3rdparty', + 'apps/files_external/tests', + 'apps/files_sharing/tests', + 'apps/files_trashbin/tests', + 'apps/files_versions/tests', + 'apps/lookup_server_connector/tests', + 'apps/oauth2/tests', + 'apps/provisioning_api/tests', + 'apps/sharebymail/tests', + 'apps/systemtags/tests', + 'apps/testing/tests', + 'apps/theming/tests', + 'apps/twofactor_backupcodes/tests', + 'apps/updatenotification/tests', + 'apps/user_ldap/tests', + 'apps/workflowengine/tests', + ], + + // The number of processes to fork off during the analysis + // phase. + 'processes' => 10, + + // Backwards Compatibility Checking. This is slow + // and expensive, but you should consider running + // it before upgrading your version of PHP to a + // new version that has backward compatibility + // breaks. + 'backward_compatibility_checks' => false, + + // Run a quick version of checks that takes less + // time at the cost of not running as thorough + // an analysis. You should consider setting this + // to true only when you wish you had more issues + // to fix in your code base. + 'quick_mode' => true, + + // If enabled, check all methods that override a + // parent method to make sure its signature is + // compatible with the parent's. This check + // can add quite a bit of time to the analysis. + 'analyze_signature_compatibility' => false, + + // The minimum severity level to report on. This can be + // set to Issue::SEVERITY_LOW, Issue::SEVERITY_NORMAL or + // Issue::SEVERITY_CRITICAL. Setting it to only + // critical issues is a good place to start on a big + // sloppy mature code base. + 'minimum_severity' => 10, + + // If true, missing properties will be created when + // they are first seen. If false, we'll report an + // error message if there is an attempt to write + // to a class property that wasn't explicitly + // defined. + 'allow_missing_properties' => true, + + // Allow null to be cast as any type and for any + // type to be cast to null. Setting this to false + // will cut down on false positives. + 'null_casts_as_any_type' => true, + + // Allow null to be cast as any array-like type (Requires 0.9.3+) + // This is an incremental step in migrating away from null_casts_as_any_type. + // If null_casts_as_any_type is true, this has no effect. + 'null_casts_as_array' => false, + + // Allow any array-like type to be cast to null. (Requires 0.9.3+) + // This is an incremental step in migrating away from null_casts_as_any_type. + // If null_casts_as_any_type is true, this has no effect. + 'array_casts_as_null' => false, + + // If enabled, scalars (int, float, bool, true, false, string, null) + // are treated as if they can cast to each other. + 'scalar_implicit_cast' => true, + + // If this has entries, scalars (int, float, bool, true, false, string, null) + // are allowed to perform the casts listed. + // E.g. ['int' => ['float', 'string'], 'float' => ['int'], 'string' => ['int'], 'null' => ['string']] + // allows casting null to a string, but not vice versa. + // (subset of scalar_implicit_cast) + // (Requires 0.9.3+) + 'scalar_implicit_partial' => [], + + // If true, seemingly undeclared variables in the global + // scope will be ignored. This is useful for projects + // with complicated cross-file globals that you have no + // hope of fixing. + 'ignore_undeclared_variables_in_global_scope' => true, + + // Add any issue types (such as 'PhanUndeclaredMethod') + // to this black-list to inhibit them from being reported. + 'suppress_issue_types' => [ + // 'PhanUndeclaredMethod', + ], + + // If empty, no filter against issues types will be applied. + // If this white-list is non-empty, only issues within the list + // will be emitted by Phan. + 'whitelist_issue_types' => [ + // 'PhanAccessMethodPrivate', + ], + + // A list of plugin files to execute + 'plugins' => [ + 'build/.phan/plugins/SqlInjectionCheckerPlugin.php', + ], +]; diff --git a/build/.phan/plugin-checker.php b/build/.phan/plugin-checker.php new file mode 100644 index 0000000000..681904264f --- /dev/null +++ b/build/.phan/plugin-checker.php @@ -0,0 +1,44 @@ + + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * 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 + * along with this program. If not, see . + * + */ + +$expected = << + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * 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 + * along with this program. If not, see . + * + */ + +declare(strict_types=1); + +use Phan\PluginV2; +use Phan\PluginV2\AnalyzeNodeCapability; +use Phan\PluginV2\PluginAwareAnalysisVisitor; + +class SqlInjectionCheckerPlugin extends PluginV2 implements AnalyzeNodeCapability{ + public static function getAnalyzeNodeVisitorClassName() : string { + return SqlInjectionCheckerVisitor::class; + } +} + +class SqlInjectionCheckerVisitor extends PluginAwareAnalysisVisitor { + + private function throwError() { + $this->emit( + 'SqlInjectionChecker', + 'Potential SQL injection detected', + [], + \Phan\Issue::SEVERITY_CRITICAL + ); + } + + /** + * Checks whether the query builder functions are using prepared statements + * + * @param \ast\Node $node + */ + private function checkQueryBuilderParameters(\ast\Node $node) { + $dangerousFunctions = [ + 'eq', + 'neq', + 'lt', + 'lte', + 'gt', + 'gte', + 'like', + 'iLike', + 'notLike', + ]; + + $safeFunctions = [ + 'createNamedParameter', + 'createPositionalParameter', + 'createParameter', + ]; + + $functionsToSearch = [ + 'set', + 'setValue', + ]; + + $expandedNode = \Phan\Language\UnionType::fromNode($this->context, $this->code_base, $node); + $expandedNodeType = (string)$expandedNode->asExpandedTypes($this->code_base); + + if($expandedNodeType === '\OCP\DB\QueryBuilder\IQueryBuilder') { + /** @var \ast\Node $child */ + foreach($node->children as $child) { + if(isset($child->kind) && $child->kind === 128) { + if(isset($child->children)) { + /** @var \ast\Node $subChild */ + foreach ($child->children as $subChild) { + // For set actions + if(isset($node->children['method']) && in_array($node->children['method'], $functionsToSearch, true) && !is_string($subChild)) { + if(!isset($subChild->children['method']) || !in_array($subChild->children['method'], $safeFunctions, true)) { + $this->throwError(); + } + } + + if(isset($subChild->children['method'])) { + // For all "eq" etc. actions + $method = $subChild->children['method']; + if(!in_array($method, $dangerousFunctions, true)) { + return; + } + + /** @var \ast\Node $functionNode */ + $functionNode = $subChild->children['args']; + + /** @var \ast\Node $secondParameterNode */ + $secondParameterNode = $functionNode->children[1]; + $expandedNode = \Phan\Language\UnionType::fromNode($this->context, $this->code_base, $secondParameterNode); + + // For literals with a plain string or integer inside + if(isset($secondParameterNode->children['method']) && $secondParameterNode->children['method'] === 'literal') { + /** @var \ast\Node $functionNode */ + $functionNode = $secondParameterNode->children['args']; + + $expandedNode = \Phan\Language\UnionType::fromNode($this->context, $this->code_base, $functionNode); + if(isset($functionNode->children[0]) && (is_string($functionNode->children[0]) || is_int($functionNode->children[0]))) { + return; + } + } + + // If it is an IParameter or a pure string no error is thrown + if((string)$expandedNode !== '\OCP\DB\QueryBuilder\IParameter' && !is_string($secondParameterNode)) { + $this->throwError(); + } + } + } + } + } + } + } + } + + public function visitMethodCall(\ast\Node $node) { + $this->checkQueryBuilderParameters($node); + } + +} + +return new SqlInjectionCheckerPlugin(); diff --git a/build/.phan/stubs/APCIterator.php b/build/.phan/stubs/APCIterator.php new file mode 100644 index 0000000000..e837b3971a --- /dev/null +++ b/build/.phan/stubs/APCIterator.php @@ -0,0 +1,82 @@ + value pairs. + * The constant_name must follow the normal constant naming rules. Value must evaluate to a scalar value. + * @param bool $case_sensitive The default behaviour for constants is to be declared case-sensitive; + * i.e. CONSTANT and Constant represent different values. If this parameter evaluates to FALSE + * the constants will be declared as case-insensitive symbols. + * @return bool Returns TRUE on success or FALSE on failure. + */ +function apc_define_constants($key, array $constants, $case_sensitive = true){} + +/** + * Caches a variable in the data store, only if it's not already stored + * @link http://php.net/manual/en/function.apc-add.php + * @param string $key Store the variable using this name. Keys are cache-unique, + * so attempting to use apc_add() to store data with a key that already exists will not + * overwrite the existing data, and will instead return FALSE. (This is the only difference + * between apc_add() and apc_store().) + * @param mixed $var The variable to store + * @param int $ttl Time To Live; store var in the cache for ttl seconds. After the ttl has passed, + * the stored variable will be expunged from the cache (on the next request). If no ttl is supplied + * (or if the ttl is 0), the value will persist until it is removed from the cache manually, + * or otherwise fails to exist in the cache (clear, restart, etc.). + * @return bool + */ +function apc_add($key, $var, $ttl = 0){} + +/** + * Stores a file in the bytecode cache, bypassing all filters + * @link http://php.net/manual/en/function.apc-compile-file.php + * @param string|string[] $filename Full or relative path to a PHP file that will be + * compiled and stored in the bytecode cache. + * @param bool $atomic + * @return bool Returns TRUE on success or FALSE on failure. + */ +function apc_compile_file($filename, $atomic = true){} + +/** + * Loads a set of constants from the cache + * @link http://php.net/manual/en/function.apc-load-constants.php + * @param string $key The name of the constant set (that was stored + * with apc_define_constants()) to be retrieved. + * @param bool $case_sensitive The default behaviour for constants is to be declared case-sensitive; + * i.e. CONSTANT and Constant represent different values. If this parameter evaluates to FALSE + * the constants will be declared as case-insensitive symbols. + * @return bool Returns TRUE on success or FALSE on failure. + */ +function apc_load_constants($key, $case_sensitive = true){} + +/** + * Checks if APC key exists + * @link http://php.net/manual/en/function.apc-exists.php + * @param bool|string[] $keys A string, or an array of strings, that contain keys. + * @return bool|string[] Returns TRUE if the key exists, otherwise FALSE + * Or if an array was passed to keys, then an array is returned that + * contains all existing keys, or an empty array if none exist. + */ +function apc_exists($keys){} + +/** + * Deletes the given files from the opcode cache + * + * Accepts a string, array of strings, or APCIterator object. + * Returns True/False, or for an Array an Array of failed files. + * + * @link http://php.net/manual/en/function.apc-delete-file.php + * @param string|string[]|APCIterator $keys + * @return bool|string[] + */ +function apc_delete_file($keys){} + +/** + * Increase a stored number + * @link http://php.net/manual/en/function.apc-inc.php + * @param string $key The key of the value being increased. + * @param int $step The step, or value to increase. + * @param bool $success Optionally pass the success or fail boolean value to this referenced variable. + * @return int|bool Returns the current value of key's value on success, or FALSE on failure. + */ +function apc_inc($key, $step = 1, &$success = null){} + +/** + * Decrease a stored number + * @link http://php.net/manual/en/function.apc-dec.php + * @param string $key The key of the value being decreased. + * @param int $step The step, or value to decrease. + * @param bool $success Optionally pass the success or fail boolean value to this referenced variable. + * @return int|bool Returns the current value of key's value on success, or FALSE on failure. + */ +function apc_dec($key, $step = 1, &$success = null){} + +/** + * @link http://php.net/manual/en/function.apc-cas.php + * @param string $key + * @param int $old + * @param int $new + * @return bool + */ +function apc_cas($key, $old, $new){} + +/** + * Returns a binary dump of the given files and user variables from the APC cache + * + * A NULL for files or user_vars signals a dump of every entry, while array() will dump nothing. + * + * @link http://php.net/manual/en/function.apc-bin-dump.php + * @param string[]|null $files The files. Passing in NULL signals a dump of every entry, while passing in array() will dump nothing. + * @param string[]|null $user_vars The user vars. Passing in NULL signals a dump of every entry, while passing in array() will dump nothing. + * @return string|bool|null Returns a binary dump of the given files and user variables from the APC cache, FALSE if APC is not enabled, or NULL if an unknown error is encountered. + */ +function apc_bin_dump($files = null, $user_vars = null){} + +/** + * Output a binary dump of the given files and user variables from the APC cache to the named file + * @link http://php.net/manual/en/function.apc-bin-dumpfile.php + * @param string[]|null $files The file names being dumped. + * @param string[]|null $user_vars The user variables being dumped. + * @param string $filename The filename where the dump is being saved. + * @param int $flags Flags passed to the filename stream. See the file_put_contents() documentation for details. + * @param resource $context The context passed to the filename stream. See the file_put_contents() documentation for details. + * @return int|bool The number of bytes written to the file, otherwise FALSE if APC + * is not enabled, filename is an invalid file name, filename can't be opened, + * the file dump can't be completed (e.g., the hard drive is out of disk space), + * or an unknown error was encountered. + */ +function apc_bin_dumpfile($files, $user_vars, $filename, $flags = 0, $context = null){} + +/** + * Load the given binary dump into the APC file/user cache + * @link http://php.net/manual/en/function.apc-bin-load.php + * @param string $data The binary dump being loaded, likely from apc_bin_dump(). + * @param int $flags Either APC_BIN_VERIFY_CRC32, APC_BIN_VERIFY_MD5, or both. + * @return bool Returns TRUE if the binary dump data was loaded with success, otherwise FALSE is returned. + * FALSE is returned if APC is not enabled, or if the data is not a valid APC binary dump (e.g., unexpected size). + */ +function apc_bin_load($data, $flags = 0){} + +/** + * Load the given binary dump from the named file into the APC file/user cache + * @link http://php.net/manual/en/function.apc-bin-loadfile.php + * @param string $filename The file name containing the dump, likely from apc_bin_dumpfile(). + * @param resource $context The files context. + * @param int $flags Either APC_BIN_VERIFY_CRC32, APC_BIN_VERIFY_MD5, or both. + * @return bool Returns TRUE on success, otherwise FALSE Reasons it may return FALSE include APC + * is not enabled, filename is an invalid file name or empty, filename can't be opened, + * the file dump can't be completed, or if the data is not a valid APC binary dump (e.g., unexpected size). + */ +function apc_bin_loadfile($filename, $context = null, $flags = 0){} + diff --git a/build/.phan/stubs/apcu.php b/build/.phan/stubs/apcu.php new file mode 100644 index 0000000000..f08f860d4f --- /dev/null +++ b/build/.phan/stubs/apcu.php @@ -0,0 +1,235 @@ +Atomically attempts to find key in the cache, if it cannot be found generator is called, + * passing key as the only argument. The return value of the call is then cached with the optionally + * specified ttl, and returned. + *

+ * + *

Note: When control enters apcu_entry() the lock for the cache is acquired exclusively, it is released when + * control leaves apcu_entry(): In effect, this turns the body of generator into a critical section, + * disallowing two processes from executing the same code paths concurrently. + * In addition, it prohibits the concurrent execution of any other APCu functions, + * since they will acquire the same lock. + *

+ * + * @link http://php.net/manual/en/function.apcu-entry.php + * + * @param string $key Identity of cache entry + * @param callable $generator A callable that accepts key as the only argument and returns the value to cache. + *

Warning + * The only APCu function that can be called safely by generator is apcu_entry().

+ * @param int $ttl [optional] Time To Live; store var in the cache for ttl seconds. + * After the ttl has passed, the stored variable will be expunged from the cache (on the next request). + * If no ttl is supplied (or if the ttl is 0), the value will persist until it is removed from the cache manually, + * or otherwise fails to exist in the cache (clear, restart, etc.). + * @return mixed Returns the cached value + * @since APCu 5.1.0 + */ +function apcu_entry($key, callable $generator, $ttl = 0){} + +/** + * Retrieves cached information from APCu's data store + * + * @link http://php.net/manual/en/function.apcu-cache-info.php + * + * @param bool $limited If limited is TRUE, the return value will exclude the individual list of cache entries. + * This is useful when trying to optimize calls for statistics gathering. + * @return array|bool Array of cached data (and meta-data) or FALSE on failure + */ +function apcu_cache_info($limited = false){} diff --git a/build/.phan/stubs/memcached.php b/build/.phan/stubs/memcached.php new file mode 100644 index 0000000000..2c8aced175 --- /dev/null +++ b/build/.phan/stubs/memcached.php @@ -0,0 +1,1257 @@ +Enables or disables payload compression. When enabled, + * item values longer than a certain threshold (currently 100 bytes) will be + * compressed during storage and decompressed during retrieval + * transparently.

+ *

Type: boolean, default: TRUE.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const OPT_COMPRESSION = -1001; + const OPT_COMPRESSION_TYPE = -1004; + + /** + *

This can be used to create a "domain" for your item keys. The value + * specified here will be prefixed to each of the keys. It cannot be + * longer than 128 characters and will reduce the + * maximum available key size. The prefix is applied only to the item keys, + * not to the server keys.

+ *

Type: string, default: "".

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const OPT_PREFIX_KEY = -1002; + + /** + *

+ * Specifies the serializer to use for serializing non-scalar values. + * The valid serializers are Memcached::SERIALIZER_PHP + * or Memcached::SERIALIZER_IGBINARY. The latter is + * supported only when memcached is configured with + * --enable-memcached-igbinary option and the + * igbinary extension is loaded. + *

+ *

Type: integer, default: Memcached::SERIALIZER_PHP.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const OPT_SERIALIZER = -1003; + + /** + *

Indicates whether igbinary serializer support is available.

+ *

Type: boolean.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const HAVE_IGBINARY = 0; + + /** + *

Indicates whether JSON serializer support is available.

+ *

Type: boolean.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const HAVE_JSON = 0; + const HAVE_SESSION = 1; + const HAVE_SASL = 0; + + /** + *

Specifies the hashing algorithm used for the item keys. The valid + * values are supplied via Memcached::HASH_* constants. + * Each hash algorithm has its advantages and its disadvantages. Go with the + * default if you don't know or don't care.

+ *

Type: integer, default: Memcached::HASH_DEFAULT

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const OPT_HASH = 2; + + /** + *

The default (Jenkins one-at-a-time) item key hashing algorithm.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const HASH_DEFAULT = 0; + + /** + *

MD5 item key hashing algorithm.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const HASH_MD5 = 1; + + /** + *

CRC item key hashing algorithm.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const HASH_CRC = 2; + + /** + *

FNV1_64 item key hashing algorithm.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const HASH_FNV1_64 = 3; + + /** + *

FNV1_64A item key hashing algorithm.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const HASH_FNV1A_64 = 4; + + /** + *

FNV1_32 item key hashing algorithm.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const HASH_FNV1_32 = 5; + + /** + *

FNV1_32A item key hashing algorithm.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const HASH_FNV1A_32 = 6; + + /** + *

Hsieh item key hashing algorithm.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const HASH_HSIEH = 7; + + /** + *

Murmur item key hashing algorithm.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const HASH_MURMUR = 8; + + /** + *

Specifies the method of distributing item keys to the servers. + * Currently supported methods are modulo and consistent hashing. Consistent + * hashing delivers better distribution and allows servers to be added to + * the cluster with minimal cache losses.

+ *

Type: integer, default: Memcached::DISTRIBUTION_MODULA.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const OPT_DISTRIBUTION = 9; + + /** + *

Modulo-based key distribution algorithm.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const DISTRIBUTION_MODULA = 0; + + /** + *

Consistent hashing key distribution algorithm (based on libketama).

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const DISTRIBUTION_CONSISTENT = 1; + const DISTRIBUTION_VIRTUAL_BUCKET = 6; + + /** + *

Enables or disables compatibility with libketama-like behavior. When + * enabled, the item key hashing algorithm is set to MD5 and distribution is + * set to be weighted consistent hashing distribution. This is useful + * because other libketama-based clients (Python, Ruby, etc.) with the same + * server configuration will be able to access the keys transparently. + *

+ *

+ * It is highly recommended to enable this option if you want to use + * consistent hashing, and it may be enabled by default in future + * releases. + *

+ *

Type: boolean, default: FALSE.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const OPT_LIBKETAMA_COMPATIBLE = 16; + const OPT_LIBKETAMA_HASH = 17; + const OPT_TCP_KEEPALIVE = 32; + + /** + *

Enables or disables buffered I/O. Enabling buffered I/O causes + * storage commands to "buffer" instead of being sent. Any action that + * retrieves data causes this buffer to be sent to the remote connection. + * Quitting the connection or closing down the connection will also cause + * the buffered data to be pushed to the remote connection.

+ *

Type: boolean, default: FALSE.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const OPT_BUFFER_WRITES = 10; + + /** + *

Enable the use of the binary protocol. Please note that you cannot + * toggle this option on an open connection.

+ *

Type: boolean, default: FALSE.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const OPT_BINARY_PROTOCOL = 18; + + /** + *

Enables or disables asynchronous I/O. This is the fastest transport + * available for storage functions.

+ *

Type: boolean, default: FALSE.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const OPT_NO_BLOCK = 0; + + /** + *

Enables or disables the no-delay feature for connecting sockets (may + * be faster in some environments).

+ *

Type: boolean, default: FALSE.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const OPT_TCP_NODELAY = 1; + + /** + *

The maximum socket send buffer in bytes.

+ *

Type: integer, default: varies by platform/kernel + * configuration.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const OPT_SOCKET_SEND_SIZE = 4; + + /** + *

The maximum socket receive buffer in bytes.

+ *

Type: integer, default: varies by platform/kernel + * configuration.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const OPT_SOCKET_RECV_SIZE = 5; + + /** + *

In non-blocking mode this set the value of the timeout during socket + * connection, in milliseconds.

+ *

Type: integer, default: 1000.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const OPT_CONNECT_TIMEOUT = 14; + + /** + *

The amount of time, in seconds, to wait until retrying a failed + * connection attempt.

+ *

Type: integer, default: 0.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const OPT_RETRY_TIMEOUT = 15; + + /** + *

Socket sending timeout, in microseconds. In cases where you cannot + * use non-blocking I/O this will allow you to still have timeouts on the + * sending of data.

+ *

Type: integer, default: 0.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const OPT_SEND_TIMEOUT = 19; + + /** + *

Socket reading timeout, in microseconds. In cases where you cannot + * use non-blocking I/O this will allow you to still have timeouts on the + * reading of data.

+ *

Type: integer, default: 0.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const OPT_RECV_TIMEOUT = 20; + + /** + *

Timeout for connection polling, in milliseconds.

+ *

Type: integer, default: 1000.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const OPT_POLL_TIMEOUT = 8; + + /** + *

Enables or disables caching of DNS lookups.

+ *

Type: boolean, default: FALSE.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const OPT_CACHE_LOOKUPS = 6; + + /** + *

Specifies the failure limit for server connection attempts. The + * server will be removed after this many continuous connection + * failures.

+ *

Type: integer, default: 0.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const OPT_SERVER_FAILURE_LIMIT = 21; + const OPT_AUTO_EJECT_HOSTS = 28; + const OPT_HASH_WITH_PREFIX_KEY = 25; + const OPT_NOREPLY = 26; + const OPT_SORT_HOSTS = 12; + const OPT_VERIFY_KEY = 13; + const OPT_USE_UDP = 27; + const OPT_NUMBER_OF_REPLICAS = 29; + const OPT_RANDOMIZE_REPLICA_READ = 30; + const OPT_REMOVE_FAILED_SERVERS = 35; + + /** + *

The operation was successful.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_SUCCESS = 0; + + /** + *

The operation failed in some fashion.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_FAILURE = 1; + + /** + *

DNS lookup failed.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_HOST_LOOKUP_FAILURE = 2; + + /** + *

Failed to read network data.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_UNKNOWN_READ_FAILURE = 7; + + /** + *

Bad command in memcached protocol.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_PROTOCOL_ERROR = 8; + + /** + *

Error on the client side.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_CLIENT_ERROR = 9; + + /** + *

Error on the server side.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_SERVER_ERROR = 10; + + /** + *

Failed to write network data.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_WRITE_FAILURE = 5; + + /** + *

Failed to do compare-and-swap: item you are trying to store has been + * modified since you last fetched it.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_DATA_EXISTS = 12; + + /** + *

Item was not stored: but not because of an error. This normally + * means that either the condition for an "add" or a "replace" command + * wasn't met, or that the item is in a delete queue.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_NOTSTORED = 14; + + /** + *

Item with this key was not found (with "get" operation or "cas" + * operations).

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_NOTFOUND = 16; + + /** + *

Partial network data read error.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_PARTIAL_READ = 18; + + /** + *

Some errors occurred during multi-get.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_SOME_ERRORS = 19; + + /** + *

Server list is empty.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_NO_SERVERS = 20; + + /** + *

End of result set.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_END = 21; + + /** + *

System error.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_ERRNO = 26; + + /** + *

The operation was buffered.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_BUFFERED = 32; + + /** + *

The operation timed out.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_TIMEOUT = 31; + + /** + *

Bad key.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_BAD_KEY_PROVIDED = 33; + const RES_STORED = 15; + const RES_DELETED = 22; + const RES_STAT = 24; + const RES_ITEM = 25; + const RES_NOT_SUPPORTED = 28; + const RES_FETCH_NOTFINISHED = 30; + const RES_SERVER_MARKED_DEAD = 35; + const RES_UNKNOWN_STAT_KEY = 36; + const RES_INVALID_HOST_PROTOCOL = 34; + const RES_MEMORY_ALLOCATION_FAILURE = 17; + const RES_E2BIG = 37; + const RES_KEY_TOO_BIG = 39; + const RES_SERVER_TEMPORARILY_DISABLED = 47; + const RES_SERVER_MEMORY_ALLOCATION_FAILURE = 48; + const RES_AUTH_PROBLEM = 40; + const RES_AUTH_FAILURE = 41; + const RES_AUTH_CONTINUE = 42; + + + /** + *

Failed to create network socket.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_CONNECTION_SOCKET_CREATE_FAILURE = 11; + + /** + *

Payload failure: could not compress/decompress or serialize/unserialize the value.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const RES_PAYLOAD_FAILURE = -1001; + + /** + *

The default PHP serializer.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const SERIALIZER_PHP = 1; + + /** + *

The igbinary serializer. + * Instead of textual representation it stores PHP data structures in a + * compact binary form, resulting in space and time gains.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const SERIALIZER_IGBINARY = 2; + + /** + *

The JSON serializer. Requires PHP 5.2.10+.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const SERIALIZER_JSON = 3; + const SERIALIZER_JSON_ARRAY = 4; + const COMPRESSION_FASTLZ = 2; + const COMPRESSION_ZLIB = 1; + + /** + *

A flag for Memcached::getMulti and + * Memcached::getMultiByKey to ensure that the keys are + * returned in the same order as they were requested in. Non-existing keys + * get a default value of NULL.

+ * @link http://php.net/manual/en/memcached.constants.php + */ + const GET_PRESERVE_ORDER = 1; + const GET_ERROR_RETURN_VALUE = false; + + + /** + * (PECL memcached >= 0.1.0)
+ * Create a Memcached instance + * @link http://php.net/manual/en/memcached.construct.php + * @param $persistent_id [optional] + * @param $callback [optional] + */ + public function __construct ($persistent_id, $callback) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Return the result code of the last operation + * @link http://php.net/manual/en/memcached.getresultcode.php + * @return int Result code of the last Memcached operation. + */ + public function getResultCode () {} + + /** + * (PECL memcached >= 1.0.0)
+ * Return the message describing the result of the last operation + * @link http://php.net/manual/en/memcached.getresultmessage.php + * @return string Message describing the result of the last Memcached operation. + */ + public function getResultMessage () {} + + /** + * (PECL memcached >= 0.1.0)
+ * Retrieve an item + * @link http://php.net/manual/en/memcached.get.php + * @param string $key

+ * The key of the item to retrieve. + *

+ * @param callable $cache_cb [optional]

+ * Read-through caching callback or NULL. + *

+ * @param float $cas_token [optional]

+ * The variable to store the CAS token in. + *

+ * @return mixed the value stored in the cache or FALSE otherwise. + * The Memcached::getResultCode will return + * Memcached::RES_NOTFOUND if the key does not exist. + */ + public function get ($key, callable $cache_cb = null, &$cas_token = null) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Retrieve an item from a specific server + * @link http://php.net/manual/en/memcached.getbykey.php + * @param string $server_key

+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. + *

+ * @param string $key

+ * The key of the item to fetch. + *

+ * @param callable $cache_cb [optional]

+ * Read-through caching callback or NULL + *

+ * @param float $cas_token [optional]

+ * The variable to store the CAS token in. + *

+ * @return mixed the value stored in the cache or FALSE otherwise. + * The Memcached::getResultCode will return + * Memcached::RES_NOTFOUND if the key does not exist. + */ + public function getByKey ($server_key, $key, callable $cache_cb = null, &$cas_token = null) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Retrieve multiple items + * @link http://php.net/manual/en/memcached.getmulti.php + * @param array $keys

+ * Array of keys to retrieve. + *

+ * @param array $cas_tokens [optional]

+ * The variable to store the CAS tokens for the found items. + *

+ * @param int $flags [optional]

+ * The flags for the get operation. + *

+ * @return mixed the array of found items or FALSE on failure. + * Use Memcached::getResultCode if necessary. + */ + public function getMulti (array $keys, array &$cas_tokens = null, $flags = null) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Retrieve multiple items from a specific server + * @link http://php.net/manual/en/memcached.getmultibykey.php + * @param string $server_key

+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. + *

+ * @param array $keys

+ * Array of keys to retrieve. + *

+ * @param string $cas_tokens [optional]

+ * The variable to store the CAS tokens for the found items. + *

+ * @param int $flags [optional]

+ * The flags for the get operation. + *

+ * @return array the array of found items or FALSE on failure. + * Use Memcached::getResultCode if necessary. + */ + public function getMultiByKey ($server_key, array $keys, &$cas_tokens = null, $flags = null) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Request multiple items + * @link http://php.net/manual/en/memcached.getdelayed.php + * @param array $keys

+ * Array of keys to request. + *

+ * @param bool $with_cas [optional]

+ * Whether to request CAS token values also. + *

+ * @param callable $value_cb [optional]

+ * The result callback or NULL. + *

+ * @return bool TRUE on success or FALSE on failure. + * Use Memcached::getResultCode if necessary. + */ + public function getDelayed (array $keys, $with_cas = null, callable $value_cb = null) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Request multiple items from a specific server + * @link http://php.net/manual/en/memcached.getdelayedbykey.php + * @param string $server_key

+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. + *

+ * @param array $keys

+ * Array of keys to request. + *

+ * @param bool $with_cas [optional]

+ * Whether to request CAS token values also. + *

+ * @param callable $value_cb [optional]

+ * The result callback or NULL. + *

+ * @return bool TRUE on success or FALSE on failure. + * Use Memcached::getResultCode if necessary. + */ + public function getDelayedByKey ($server_key, array $keys, $with_cas = null, callable $value_cb = null) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Fetch the next result + * @link http://php.net/manual/en/memcached.fetch.php + * @return array the next result or FALSE otherwise. + * The Memcached::getResultCode will return + * Memcached::RES_END if result set is exhausted. + */ + public function fetch () {} + + /** + * (PECL memcached >= 0.1.0)
+ * Fetch all the remaining results + * @link http://php.net/manual/en/memcached.fetchall.php + * @return array the results or FALSE on failure. + * Use Memcached::getResultCode if necessary. + */ + public function fetchAll () {} + + /** + * (PECL memcached >= 0.1.0)
+ * Store an item + * @link http://php.net/manual/en/memcached.set.php + * @param string $key

+ * The key under which to store the value. + *

+ * @param mixed $value

+ * The value to store. + *

+ * @param int $expiration [optional]

+ * The expiration time, defaults to 0. See Expiration Times for more info. + *

+ * @return bool TRUE on success or FALSE on failure. + * Use Memcached::getResultCode if necessary. + */ + public function set ($key, $value, $expiration = null) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Store an item on a specific server + * @link http://php.net/manual/en/memcached.setbykey.php + * @param string $server_key

+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. + *

+ * @param string $key

+ * The key under which to store the value. + *

+ * @param mixed $value

+ * The value to store. + *

+ * @param int $expiration [optional]

+ * The expiration time, defaults to 0. See Expiration Times for more info. + *

+ * @return bool TRUE on success or FALSE on failure. + * Use Memcached::getResultCode if necessary. + */ + public function setByKey ($server_key, $key, $value, $expiration = null) {} + + /** + * (PECL memcached >= 2.0.0)
+ * Set a new expiration on an item + * @link http://php.net/manual/en/memcached.touch.php + * @param string $key

+ * The key under which to store the value. + *

+ * @param int $expiration

+ * The expiration time, defaults to 0. See Expiration Times for more info. + *

+ * @return bool TRUE on success or FALSE on failure. + * Use Memcached::getResultCode if necessary. + */ + public function touch ($key, $expiration) {} + + /** + * (PECL memcached >= 2.0.0)
+ * Set a new expiration on an item on a specific server + * @link http://php.net/manual/en/memcached.touchbykey.php + * @param string $server_key

+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. + *

+ * @param string $key

+ * The key under which to store the value. + *

+ * @param int $expiration

+ * The expiration time, defaults to 0. See Expiration Times for more info. + *

+ * @return bool TRUE on success or FALSE on failure. + * Use Memcached::getResultCode if necessary. + */ + public function touchByKey ($server_key, $key, $expiration) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Store multiple items + * @link http://php.net/manual/en/memcached.setmulti.php + * @param array $items

+ * An array of key/value pairs to store on the server. + *

+ * @param int $expiration [optional]

+ * The expiration time, defaults to 0. See Expiration Times for more info. + *

+ * @return bool TRUE on success or FALSE on failure. + * Use Memcached::getResultCode if necessary. + */ + public function setMulti (array $items, $expiration = null) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Store multiple items on a specific server + * @link http://php.net/manual/en/memcached.setmultibykey.php + * @param string $server_key

+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. + *

+ * @param array $items

+ * An array of key/value pairs to store on the server. + *

+ * @param int $expiration [optional]

+ * The expiration time, defaults to 0. See Expiration Times for more info. + *

+ * @return bool TRUE on success or FALSE on failure. + * Use Memcached::getResultCode if necessary. + */ + public function setMultiByKey ($server_key, array $items, $expiration = null) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Compare and swap an item + * @link http://php.net/manual/en/memcached.cas.php + * @param float $cas_token

+ * Unique value associated with the existing item. Generated by memcache. + *

+ * @param string $key

+ * The key under which to store the value. + *

+ * @param mixed $value

+ * The value to store. + *

+ * @param int $expiration [optional]

+ * The expiration time, defaults to 0. See Expiration Times for more info. + *

+ * @return bool TRUE on success or FALSE on failure. + * The Memcached::getResultCode will return + * Memcached::RES_DATA_EXISTS if the item you are trying + * to store has been modified since you last fetched it. + */ + public function cas ($cas_token, $key, $value, $expiration = null) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Compare and swap an item on a specific server + * @link http://php.net/manual/en/memcached.casbykey.php + * @param float $cas_token

+ * Unique value associated with the existing item. Generated by memcache. + *

+ * @param string $server_key

+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. + *

+ * @param string $key

+ * The key under which to store the value. + *

+ * @param mixed $value

+ * The value to store. + *

+ * @param int $expiration [optional]

+ * The expiration time, defaults to 0. See Expiration Times for more info. + *

+ * @return bool TRUE on success or FALSE on failure. + * The Memcached::getResultCode will return + * Memcached::RES_DATA_EXISTS if the item you are trying + * to store has been modified since you last fetched it. + */ + public function casByKey ($cas_token, $server_key, $key, $value, $expiration = null) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Add an item under a new key + * @link http://php.net/manual/en/memcached.add.php + * @param string $key

+ * The key under which to store the value. + *

+ * @param mixed $value

+ * The value to store. + *

+ * @param int $expiration [optional]

+ * The expiration time, defaults to 0. See Expiration Times for more info. + *

+ * @return bool TRUE on success or FALSE on failure. + * The Memcached::getResultCode will return + * Memcached::RES_NOTSTORED if the key already exists. + */ + public function add ($key, $value, $expiration = null) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Add an item under a new key on a specific server + * @link http://php.net/manual/en/memcached.addbykey.php + * @param string $server_key

+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. + *

+ * @param string $key

+ * The key under which to store the value. + *

+ * @param mixed $value

+ * The value to store. + *

+ * @param int $expiration [optional]

+ * The expiration time, defaults to 0. See Expiration Times for more info. + *

+ * @return bool TRUE on success or FALSE on failure. + * The Memcached::getResultCode will return + * Memcached::RES_NOTSTORED if the key already exists. + */ + public function addByKey ($server_key, $key, $value, $expiration = null) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Append data to an existing item + * @link http://php.net/manual/en/memcached.append.php + * @param string $key

+ * The key under which to store the value. + *

+ * @param string $value

+ * The string to append. + *

+ * @return bool TRUE on success or FALSE on failure. + * The Memcached::getResultCode will return + * Memcached::RES_NOTSTORED if the key does not exist. + */ + public function append ($key, $value) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Append data to an existing item on a specific server + * @link http://php.net/manual/en/memcached.appendbykey.php + * @param string $server_key

+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. + *

+ * @param string $key

+ * The key under which to store the value. + *

+ * @param string $value

+ * The string to append. + *

+ * @return bool TRUE on success or FALSE on failure. + * The Memcached::getResultCode will return + * Memcached::RES_NOTSTORED if the key does not exist. + */ + public function appendByKey ($server_key, $key, $value) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Prepend data to an existing item + * @link http://php.net/manual/en/memcached.prepend.php + * @param string $key

+ * The key of the item to prepend the data to. + *

+ * @param string $value

+ * The string to prepend. + *

+ * @return bool TRUE on success or FALSE on failure. + * The Memcached::getResultCode will return + * Memcached::RES_NOTSTORED if the key does not exist. + */ + public function prepend ($key, $value) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Prepend data to an existing item on a specific server + * @link http://php.net/manual/en/memcached.prependbykey.php + * @param string $server_key

+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. + *

+ * @param string $key

+ * The key of the item to prepend the data to. + *

+ * @param string $value

+ * The string to prepend. + *

+ * @return bool TRUE on success or FALSE on failure. + * The Memcached::getResultCode will return + * Memcached::RES_NOTSTORED if the key does not exist. + */ + public function prependByKey ($server_key, $key, $value) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Replace the item under an existing key + * @link http://php.net/manual/en/memcached.replace.php + * @param string $key

+ * The key under which to store the value. + *

+ * @param mixed $value

+ * The value to store. + *

+ * @param int $expiration [optional]

+ * The expiration time, defaults to 0. See Expiration Times for more info. + *

+ * @return bool TRUE on success or FALSE on failure. + * The Memcached::getResultCode will return + * Memcached::RES_NOTSTORED if the key does not exist. + */ + public function replace ($key, $value, $expiration = null) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Replace the item under an existing key on a specific server + * @link http://php.net/manual/en/memcached.replacebykey.php + * @param string $server_key

+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. + *

+ * @param string $key

+ * The key under which to store the value. + *

+ * @param mixed $value

+ * The value to store. + *

+ * @param int $expiration [optional]

+ * The expiration time, defaults to 0. See Expiration Times for more info. + *

+ * @return bool TRUE on success or FALSE on failure. + * The Memcached::getResultCode will return + * Memcached::RES_NOTSTORED if the key does not exist. + */ + public function replaceByKey ($server_key, $key, $value, $expiration = null) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Delete an item + * @link http://php.net/manual/en/memcached.delete.php + * @param string $key

+ * The key to be deleted. + *

+ * @param int $time [optional]

+ * The amount of time the server will wait to delete the item. + *

+ * @return bool TRUE on success or FALSE on failure. + * The Memcached::getResultCode will return + * Memcached::RES_NOTFOUND if the key does not exist. + */ + public function delete ($key, $time = 0) {} + + /** + * (PECL memcached >= 2.0.0)
+ * Delete multiple items + * @link http://php.net/manual/en/memcached.deletemulti.php + * @param array $keys

+ * The keys to be deleted. + *

+ * @param int $time [optional]

+ * The amount of time the server will wait to delete the items. + *

+ * @return bool TRUE on success or FALSE on failure. + * The Memcached::getResultCode will return + * Memcached::RES_NOTFOUND if the key does not exist. + */ + public function deleteMulti (array $keys, $time = 0) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Delete an item from a specific server + * @link http://php.net/manual/en/memcached.deletebykey.php + * @param string $server_key

+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. + *

+ * @param string $key

+ * The key to be deleted. + *

+ * @param int $time [optional]

+ * The amount of time the server will wait to delete the item. + *

+ * @return bool TRUE on success or FALSE on failure. + * The Memcached::getResultCode will return + * Memcached::RES_NOTFOUND if the key does not exist. + */ + public function deleteByKey ($server_key, $key, $time = 0) {} + + /** + * (PECL memcached >= 2.0.0)
+ * Delete multiple items from a specific server + * @link http://php.net/manual/en/memcached.deletemultibykey.php + * @param string $server_key

+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. + *

+ * @param array $keys

+ * The keys to be deleted. + *

+ * @param int $time [optional]

+ * The amount of time the server will wait to delete the items. + *

+ * @return bool TRUE on success or FALSE on failure. + * The Memcached::getResultCode will return + * Memcached::RES_NOTFOUND if the key does not exist. + */ + public function deleteMultiByKey ($server_key, array $keys, $time = 0) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Increment numeric item's value + * @link http://php.net/manual/en/memcached.increment.php + * @param string $key

+ * The key of the item to increment. + *

+ * @param int $offset [optional]

+ * The amount by which to increment the item's value. + *

+ * @param int $initial_value [optional]

+ * The value to set the item to if it doesn't currently exist. + *

+ * @param int $expiry [optional]

+ * The expiry time to set on the item. + *

+ * @return int new item's value on success or FALSE on failure. + */ + public function increment ($key, $offset = 1, $initial_value = 0, $expiry = 0) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Decrement numeric item's value + * @link http://php.net/manual/en/memcached.decrement.php + * @param string $key

+ * The key of the item to decrement. + *

+ * @param int $offset [optional]

+ * The amount by which to decrement the item's value. + *

+ * @param int $initial_value [optional]

+ * The value to set the item to if it doesn't currently exist. + *

+ * @param int $expiry [optional]

+ * The expiry time to set on the item. + *

+ * @return int item's new value on success or FALSE on failure. + */ + public function decrement ($key, $offset = 1, $initial_value = 0, $expiry = 0) {} + + /** + * (PECL memcached >= 2.0.0)
+ * Increment numeric item's value, stored on a specific server + * @link http://php.net/manual/en/memcached.incrementbykey.php + * @param string $server_key

+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. + *

+ * @param string $key

+ * The key of the item to increment. + *

+ * @param int $offset [optional]

+ * The amount by which to increment the item's value. + *

+ * @param int $initial_value [optional]

+ * The value to set the item to if it doesn't currently exist. + *

+ * @param int $expiry [optional]

+ * The expiry time to set on the item. + *

+ * @return int new item's value on success or FALSE on failure. + */ + public function incrementByKey ($server_key, $key, $offset = 1, $initial_value = 0, $expiry = 0) {} + + /** + * (PECL memcached >= 2.0.0)
+ * Decrement numeric item's value, stored on a specific server + * @link http://php.net/manual/en/memcached.decrementbykey.php + * @param string $server_key

+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. + *

+ * @param string $key

+ * The key of the item to decrement. + *

+ * @param int $offset [optional]

+ * The amount by which to decrement the item's value. + *

+ * @param int $initial_value [optional]

+ * The value to set the item to if it doesn't currently exist. + *

+ * @param int $expiry [optional]

+ * The expiry time to set on the item. + *

+ * @return int item's new value on success or FALSE on failure. + */ + public function decrementByKey ($server_key, $key, $offset = 1, $initial_value = 0, $expiry = 0) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Add a server to the server pool + * @link http://php.net/manual/en/memcached.addserver.php + * @param string $host

+ * The hostname of the memcache server. If the hostname is invalid, data-related + * operations will set + * Memcached::RES_HOST_LOOKUP_FAILURE result code. + *

+ * @param int $port

+ * The port on which memcache is running. Usually, this is + * 11211. + *

+ * @param int $weight [optional]

+ * The weight of the server relative to the total weight of all the + * servers in the pool. This controls the probability of the server being + * selected for operations. This is used only with consistent distribution + * option and usually corresponds to the amount of memory available to + * memcache on that server. + *

+ * @return bool TRUE on success or FALSE on failure. + */ + public function addServer ($host, $port, $weight = 0) {} + + /** + * (PECL memcached >= 0.1.1)
+ * Add multiple servers to the server pool + * @link http://php.net/manual/en/memcached.addservers.php + * @param array $servers + * @return bool TRUE on success or FALSE on failure. + */ + public function addServers (array $servers) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Get the list of the servers in the pool + * @link http://php.net/manual/en/memcached.getserverlist.php + * @return array The list of all servers in the server pool. + */ + public function getServerList () {} + + /** + * (PECL memcached >= 0.1.0)
+ * Map a key to a server + * @link http://php.net/manual/en/memcached.getserverbykey.php + * @param string $server_key

+ * The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations. + *

+ * @return array an array containing three keys of host, + * port, and weight on success or FALSE + * on failure. + * Use Memcached::getResultCode if necessary. + */ + public function getServerByKey ($server_key) {} + + /** + * (PECL memcached >= 2.0.0)
+ * Clears all servers from the server list + * @link http://php.net/manual/en/memcached.resetserverlist.php + * @return bool TRUE on success or FALSE on failure. + */ + public function resetServerList () {} + + /** + * (PECL memcached >= 2.0.0)
+ * Close any open connections + * @link http://php.net/manual/en/memcached.quit.php + * @return bool TRUE on success or FALSE on failure. + */ + public function quit () {} + + /** + * (PECL memcached >= 0.1.0)
+ * Get server pool statistics + * @link http://php.net/manual/en/memcached.getstats.php + * @return array Array of server statistics, one entry per server. + */ + public function getStats () {} + + /** + * (PECL memcached >= 0.1.5)
+ * Get server pool version info + * @link http://php.net/manual/en/memcached.getversion.php + * @return array Array of server versions, one entry per server. + */ + public function getVersion () {} + + /** + * (PECL memcached >= 2.0.0)
+ * Gets the keys stored on all the servers + * @link http://php.net/manual/en/memcached.getallkeys.php + * @return array the keys stored on all the servers on success or FALSE on failure. + */ + public function getAllKeys () {} + + /** + * (PECL memcached >= 0.1.0)
+ * Invalidate all items in the cache + * @link http://php.net/manual/en/memcached.flush.php + * @param int $delay [optional]

+ * Numer of seconds to wait before invalidating the items. + *

+ * @return bool TRUE on success or FALSE on failure. + * Use Memcached::getResultCode if necessary. + */ + public function flush ($delay = 0) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Retrieve a Memcached option value + * @link http://php.net/manual/en/memcached.getoption.php + * @param int $option

+ * One of the Memcached::OPT_* constants. + *

+ * @return mixed the value of the requested option, or FALSE on + * error. + */ + public function getOption ($option) {} + + /** + * (PECL memcached >= 0.1.0)
+ * Set a Memcached option + * @link http://php.net/manual/en/memcached.setoption.php + * @param int $option + * @param mixed $value + * @return bool TRUE on success or FALSE on failure. + */ + public function setOption ($option, $value) {} + + /** + * (PECL memcached >= 2.0.0)
+ * Set Memcached options + * @link http://php.net/manual/en/memcached.setoptions.php + * @param array $options

+ * An associative array of options where the key is the option to set and + * the value is the new value for the option. + *

+ * @return bool TRUE on success or FALSE on failure. + */ + public function setOptions (array $options) {} + + /** + * (PECL memcached >= 2.0.0)
+ * Check if a persitent connection to memcache is being used + * @link http://php.net/manual/en/memcached.ispersistent.php + * @return bool true if Memcache instance uses a persistent connection, false otherwise. + */ + public function isPersistent () {} + + /** + * (PECL memcached >= 2.0.0)
+ * Check if the instance was recently created + * @link http://php.net/manual/en/memcached.ispristine.php + * @return bool the true if instance is recently created, false otherwise. + */ + public function isPristine () {} + +} + +/** + * @link http://php.net/manual/en/class.memcachedexception.php + */ +class MemcachedException extends RuntimeException { + +} +// End of memcached v.2.1.0 diff --git a/build/.phan/stubs/xcache.php b/build/.phan/stubs/xcache.php new file mode 100644 index 0000000000..22700b1b19 --- /dev/null +++ b/build/.phan/stubs/xcache.php @@ -0,0 +1,217 @@ + + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * 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 + * along with this program. If not, see . + * + */ + +$builder = \OC::$server->getDatabaseConnection()->getQueryBuilder(); +$builder->select('*')->from('ado')->where($this->qb->expr()->eq('asdf', $_GET['asdf'])); + +class SqlInjectionCheckerTest { + private $qb; + + public function __construct(\OCP\IDBConnection $dbConnection) { + $this->qb = $dbConnection->getQueryBuilder(); + } + + public function testEqAndNeq() { + $this->qb->select('*')->from('ado')->where($this->qb->expr()->eq('asdf', $this->qb->expr()->literal('myString'))); + $this->qb->select('*')->from('ado')->where($this->qb->expr()->eq('asdf', $this->qb->expr()->literal(0))); + $this->qb->select('*')->from('ado')->where($this->qb->expr()->eq('asdf', $this->qb->expr()->literal($_GET['bar']))); + $asdf = '123'; + $this->qb->select('*')->from('ado')->where($this->qb->expr()->eq('asdf', $this->qb->expr()->literal($asdf))); + $asdf = 1; + $this->qb->select('*')->from('ado')->where($this->qb->expr()->neq('asdf', $asdf)); + $asdf = '123'; + $this->qb->select('*')->from('ado')->where($this->qb->expr()->lt('asdf', $asdf)); + $this->qb->select('*')->from('ado')->where($this->qb->expr()->eq('s.resourceid', 'a.id')); + $this->qb->select('*')->from('ado')->andWhere($this->qb->expr()->gte('asdf', $_GET['asdf'])); + $this->qb->select('*') + ->from('ado') + ->where($this->qb->expr()->eq('asdf', $this->qb->createNamedParameter('asdf'))); + $this->qb->select('*') + ->from('ado') + ->where($this->qb->expr()->eq('asdf', $this->qb->createPositionalParameter('asdf'))); + } + + public function testInstantiatingDatabaseConnection() { + $qb = \OC::$server->getDatabaseConnection(); + $qb->getQueryBuilder()->select('*')->from('ado')->where($this->qb->expr()->eq('asdf', $_GET['asdf'])); + } + + public function testSet() { + $this->qb->update('file_locks')->set('lock', $this->qb->createNamedParameter('lukaslukaslukas')); + $this->qb->update('file_locks')->set('lock', '1234'); + $asdf = '1234'; + $this->qb->update('file_locks')->set('lock', $asdf); + $this->qb->update('file_locks')->set('lock', $_GET['asdf']); + } + + public function testSetValue() { + $this->qb->update('file_locks')->setValue('lock', $this->qb->createNamedParameter('lukaslukaslukas')); + $this->qb->update('file_locks')->setValue('lock', '1234'); + $asdf = '1234'; + $this->qb->update('file_locks')->setValue('lock', $asdf); + $this->qb->update('file_locks')->setValue('lock', $_GET['asdf']); + } +} \ No newline at end of file diff --git a/build/files-checker.php b/build/files-checker.php index 4d4e64e361..66c44bd971 100644 --- a/build/files-checker.php +++ b/build/files-checker.php @@ -58,7 +58,6 @@ $expectedFiles = [ 'COPYING-README', 'core', 'cron.php', - 'db_structure.xml', 'index.html', 'index.php', 'issue_template.md', diff --git a/core/img/image-optimization.sh b/build/image-optimization.sh similarity index 93% rename from core/img/image-optimization.sh rename to build/image-optimization.sh index b5de96e018..cf82e120dc 100755 --- a/core/img/image-optimization.sh +++ b/build/image-optimization.sh @@ -17,4 +17,4 @@ do done; } -recursive_optimize_images ../../ +recursive_optimize_images ../ diff --git a/config/config.sample.php b/config/config.sample.php index 3d1ccb8c2c..71d1aa3a02 100644 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -902,10 +902,6 @@ $CONFIG = array( * - OC\Preview\TIFF * - OC\Preview\Font * - * .. note:: Troubleshooting steps for the MS Word previews are available - * at the :doc:`../configuration_files/collaborative_documents_configuration` - * section of the Administrators Manual. - * * The following providers are not available in Microsoft Windows: * * - OC\Preview\Movie @@ -1262,7 +1258,7 @@ $CONFIG = array( * * If you want to convert an existing 3-byte setup into a 4-byte setup please * set the parameters in MySQL as mentioned below and run the migration command: - * ./occ db:convert-mysql-charset + * ./occ db:convert-mysql-charset * The config setting will be set automatically after a successful run. * * Consult the documentation for more details. diff --git a/core/Command/App/Install.php b/core/Command/App/Install.php new file mode 100644 index 0000000000..0c99c7ff85 --- /dev/null +++ b/core/Command/App/Install.php @@ -0,0 +1,77 @@ + + * + * @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 + * + */ + +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/Command/App/ListApps.php b/core/Command/App/ListApps.php index e03e3ce8f5..c933a2519e 100644 --- a/core/Command/App/ListApps.php +++ b/core/Command/App/ListApps.php @@ -73,7 +73,7 @@ class ListApps extends Base { //sort enabled apps above disabled apps foreach ($apps as $app) { - if ($shippedFilter !== null && \OC_App::isShipped($app) !== $shippedFilter){ + if ($shippedFilter !== null && $this->manager->isShipped($app) !== $shippedFilter){ continue; } if ($this->manager->isInstalled($app)) { diff --git a/core/Command/Db/ConvertType.php b/core/Command/Db/ConvertType.php index 4ca7899fec..a783952293 100644 --- a/core/Command/Db/ConvertType.php +++ b/core/Command/Db/ConvertType.php @@ -28,6 +28,10 @@ namespace OC\Core\Command\Db; +use Doctrine\DBAL\DBALException; +use Doctrine\DBAL\Schema\Table; +use Doctrine\DBAL\Types\Type; +use OC\DB\MigrationService; use OCP\DB\QueryBuilder\IQueryBuilder; use \OCP\IConfig; use OC\DB\Connection; @@ -190,7 +194,7 @@ class ConvertType extends Command implements CompletionAwareInterface { $this->clearSchema($toDB, $input, $output); } - $this->createSchema($toDB, $input, $output); + $this->createSchema($fromDB, $toDB, $input, $output); $toTables = $this->getTables($toDB); $fromTables = $this->getTables($fromDB); @@ -217,27 +221,43 @@ class ConvertType extends Command implements CompletionAwareInterface { $this->convertDB($fromDB, $toDB, $intersectingTables, $input, $output); } - protected function createSchema(Connection $toDB, InputInterface $input, OutputInterface $output) { + protected function createSchema(Connection $fromDB, Connection $toDB, InputInterface $input, OutputInterface $output) { $output->writeln('Creating schema in new database'); + + $fromMS = new MigrationService('core', $fromDB); + $currentMigration = $fromMS->getMigration('current'); + if ($currentMigration !== '0') { + $toMS = new MigrationService('core', $toDB); + $toMS->migrate($currentMigration); + } + $schemaManager = new \OC\DB\MDB2SchemaManager($toDB); - $schemaManager->createDbFromStructure(\OC::$SERVERROOT.'/db_structure.xml'); $apps = $input->getOption('all-apps') ? \OC_App::getAllApps() : \OC_App::getEnabledApps(); foreach($apps as $app) { if (file_exists(\OC_App::getAppPath($app).'/appinfo/database.xml')) { $schemaManager->createDbFromStructure(\OC_App::getAppPath($app).'/appinfo/database.xml'); + } else { + // Make sure autoloading works... + \OC_App::loadApp($app); + $fromMS = new MigrationService($app, $fromDB); + $currentMigration = $fromMS->getMigration('current'); + if ($currentMigration !== '0') { + $toMS = new MigrationService($app, $toDB); + $toMS->migrate($currentMigration); + } } } } protected function getToDBConnection(InputInterface $input, OutputInterface $output) { $type = $input->getArgument('type'); - $connectionParams = array( + $connectionParams = $this->connectionFactory->createConnectionParams(); + $connectionParams = array_merge($connectionParams, [ 'host' => $input->getArgument('hostname'), 'user' => $input->getArgument('username'), 'password' => $input->getOption('password'), 'dbname' => $input->getArgument('database'), - 'tablePrefix' => $this->config->getSystemValue('dbtableprefix', 'oc_'), - ); + ]); if ($input->getOption('port')) { $connectionParams['port'] = $input->getOption('port'); } @@ -261,13 +281,26 @@ class ConvertType extends Command implements CompletionAwareInterface { return $db->getSchemaManager()->listTableNames(); } - protected function copyTable(Connection $fromDB, Connection $toDB, $table, InputInterface $input, OutputInterface $output) { + /** + * @param Connection $fromDB + * @param Connection $toDB + * @param Table $table + * @param InputInterface $input + * @param OutputInterface $output + * @suppress SqlInjectionChecker + */ + protected function copyTable(Connection $fromDB, Connection $toDB, Table $table, InputInterface $input, OutputInterface $output) { + if ($table->getName() === $toDB->getPrefix() . 'migrations') { + $output->writeln('Skipping migrations table because it was already filled by running the migrations'); + return; + } + $chunkSize = $input->getOption('chunk-size'); $query = $fromDB->getQueryBuilder(); $query->automaticTablePrefix(false); $query->selectAlias($query->createFunction('COUNT(*)'), 'num_entries') - ->from($table); + ->from($table->getName()); $result = $query->execute(); $count = $result->fetchColumn(); $result->closeCursor(); @@ -285,12 +318,25 @@ class ConvertType extends Command implements CompletionAwareInterface { $query = $fromDB->getQueryBuilder(); $query->automaticTablePrefix(false); $query->select('*') - ->from($table) + ->from($table->getName()) ->setMaxResults($chunkSize); + try { + $orderColumns = $table->getPrimaryKeyColumns(); + } catch (DBALException $e) { + $orderColumns = []; + foreach ($table->getColumns() as $column) { + $orderColumns[] = $column->getName(); + } + } + + foreach ($orderColumns as $column) { + $query->addOrderBy($column); + } + $insertQuery = $toDB->getQueryBuilder(); $insertQuery->automaticTablePrefix(false); - $insertQuery->insert($table); + $insertQuery->insert($table->getName()); $parametersCreated = false; for ($chunk = 0; $chunk < $numChunks; $chunk++) { @@ -322,33 +368,35 @@ class ConvertType extends Command implements CompletionAwareInterface { $progress->finish(); } - protected function getColumnType($table, $column) { - if (isset($this->columnTypes[$table][$column])) { - return $this->columnTypes[$table][$column]; - } - $prefix = $this->config->getSystemValue('dbtableprefix', 'oc_'); - - $this->columnTypes[$table][$column] = false; - - if ($table === $prefix . 'cards' && $column === 'carddata') { - $this->columnTypes[$table][$column] = IQueryBuilder::PARAM_LOB; - } else if ($column === 'calendardata') { - if ($table === $prefix . 'calendarobjects' || - $table === $prefix . 'schedulingobjects') { - $this->columnTypes[$table][$column] = IQueryBuilder::PARAM_LOB; - } + protected function getColumnType(Table $table, $columnName) { + $tableName = $table->getName(); + if (isset($this->columnTypes[$tableName][$columnName])) { + return $this->columnTypes[$tableName][$columnName]; } - return $this->columnTypes[$table][$column]; + $type = $table->getColumn($columnName)->getType()->getName(); + + switch ($type) { + case Type::BLOB: + case Type::TEXT: + $this->columnTypes[$tableName][$columnName] = IQueryBuilder::PARAM_LOB; + break; + default: + $this->columnTypes[$tableName][$columnName] = false; + } + + return $this->columnTypes[$tableName][$columnName]; } protected function convertDB(Connection $fromDB, Connection $toDB, array $tables, InputInterface $input, OutputInterface $output) { $this->config->setSystemValue('maintenance', true); + $schema = $fromDB->createSchema(); + try { // copy table rows foreach($tables as $table) { $output->writeln($table); - $this->copyTable($fromDB, $toDB, $table, $input, $output); + $this->copyTable($fromDB, $toDB, $schema->getTable($table), $input, $output); } if ($input->getArgument('type') === 'pgsql') { $tools = new \OC\DB\PgSqlTools($this->config); diff --git a/core/Command/Db/GenerateChangeScript.php b/core/Command/Db/GenerateChangeScript.php deleted file mode 100644 index bbe8d29958..0000000000 --- a/core/Command/Db/GenerateChangeScript.php +++ /dev/null @@ -1,89 +0,0 @@ - - * @author Thomas Müller - * - * @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 - * - */ - -namespace OC\Core\Command\Db; - -use Stecman\Component\Symfony\Console\BashCompletion\Completion; -use Stecman\Component\Symfony\Console\BashCompletion\Completion\CompletionAwareInterface; -use Stecman\Component\Symfony\Console\BashCompletion\Completion\ShellPathCompletion; -use Stecman\Component\Symfony\Console\BashCompletion\CompletionContext; -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 GenerateChangeScript extends Command implements CompletionAwareInterface { - protected function configure() { - $this - ->setName('db:generate-change-script') - ->setDescription('generates the change script from the current connected db to db_structure.xml') - ->addArgument( - 'schema-xml', - InputArgument::OPTIONAL, - 'the schema xml to be used as target schema', - \OC::$SERVERROOT . '/db_structure.xml' - ) - ; - } - - protected function execute(InputInterface $input, OutputInterface $output) { - - $file = $input->getArgument('schema-xml'); - - $schemaManager = new \OC\DB\MDB2SchemaManager(\OC::$server->getDatabaseConnection()); - - try { - $result = $schemaManager->updateDbFromStructure($file, true); - $output->writeln($result); - } catch (\Exception $e) { - $output->writeln('Failed to update database structure ('.$e.')'); - } - - } - - /** - * @param string $optionName - * @param CompletionContext $context - * @return string[] - */ - public function completeOptionValues($optionName, CompletionContext $context) { - return []; - } - - /** - * @param string $argumentName - * @param CompletionContext $context - * @return string[] - */ - public function completeArgumentValues($argumentName, CompletionContext $context) { - if ($argumentName === 'schema-xml') { - $helper = new ShellPathCompletion( - $this->getName(), - 'schema-xml', - Completion::TYPE_ARGUMENT - ); - return $helper->run(); - } - return []; - } -} diff --git a/core/Command/Db/Migrations/GenerateCommand.php b/core/Command/Db/Migrations/GenerateCommand.php index e6c38d06e5..4db82d6eff 100644 --- a/core/Command/Db/Migrations/GenerateCommand.php +++ b/core/Command/Db/Migrations/GenerateCommand.php @@ -36,9 +36,9 @@ use Symfony\Component\Console\Output\OutputInterface; class GenerateCommand extends Command { - private static $_templateSimple = + protected static $_templateSimple = '; +namespace {{ extends SimpleMigrationStep { +class {{classname}} extends SimpleMigrationStep { /** * @param IOutput $output @@ -66,7 +66,7 @@ class extends SimpleMigrationStep { * @since 13.0.0 */ public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) { - return null; +{{schemabody}} } /** @@ -81,7 +81,7 @@ class extends SimpleMigrationStep { '; /** @var IDBConnection */ - private $connection; + protected $connection; /** * @param IDBConnection $connection @@ -123,16 +123,24 @@ class extends SimpleMigrationStep { /** * @param MigrationService $ms * @param string $className + * @param string $schemaBody * @return string */ - private function generateMigration(MigrationService $ms, $className) { + protected function generateMigration(MigrationService $ms, $className, $schemaBody = '') { + if ($schemaBody === '') { + $schemaBody = "\t\t" . 'return null;'; + } + + $placeHolders = [ - '', - '', + '{{namespace}}', + '{{classname}}', + '{{schemabody}}', ]; $replacements = [ $ms->getMigrationsNamespace(), $className, + $schemaBody, ]; $code = str_replace($placeHolders, $replacements, self::$_templateSimple); $dir = $ms->getMigrationsDirectory(); @@ -147,7 +155,7 @@ class extends SimpleMigrationStep { return $path; } - private function ensureMigrationDirExists($directory) { + protected function ensureMigrationDirExists($directory) { if (file_exists($directory) && is_dir($directory)) { return; } diff --git a/core/Command/Db/Migrations/GenerateFromSchemaFileCommand.php b/core/Command/Db/Migrations/GenerateFromSchemaFileCommand.php new file mode 100644 index 0000000000..54a4d95738 --- /dev/null +++ b/core/Command/Db/Migrations/GenerateFromSchemaFileCommand.php @@ -0,0 +1,199 @@ + + * + * @author Joas Schilling + * @author Julius Haertl + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * 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 + * along with this program. If not, see . + * + */ + +namespace OC\Core\Command\Db\Migrations; + + +use Doctrine\DBAL\Schema\Schema; +use OC\DB\MDB2SchemaReader; +use OC\DB\MigrationService; +use OC\Migration\ConsoleOutput; +use OCP\App\IAppManager; +use OCP\IConfig; +use OCP\IDBConnection; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class GenerateFromSchemaFileCommand extends GenerateCommand { + + /** @var IConfig */ + protected $config; + + /** @var IAppManager */ + protected $appManager; + + public function __construct(IConfig $config, IAppManager $appManager, IDBConnection $connection) { + parent::__construct($connection); + $this->config = $config; + $this->appManager = $appManager; + } + + + protected function configure() { + parent::configure(); + + $this->setName('migrations:generate-from-schema'); + } + + public function execute(InputInterface $input, OutputInterface $output) { + $appName = $input->getArgument('app'); + $version = $input->getArgument('version'); + + if (!preg_match('/^\d{1,16}$/',$version)) { + $output->writeln('The given version is invalid. Only 0-9 are allowed (max. 16 digits)'); + return 1; + } + + $schemaFile = $this->appManager->getAppPath($appName) . '/appinfo/database.xml'; + if (!file_exists($schemaFile)) { + $output->writeln('App ' . $appName . ' does not have a database.xml file'); + return 2; + } + + $reader = new MDB2SchemaReader($this->config, $this->connection->getDatabasePlatform()); + $schema = new Schema(); + $reader->loadSchemaFromFile($schemaFile, $schema); + + $schemaBody = $this->schemaToMigration($schema); + + $ms = new MigrationService($appName, $this->connection, new ConsoleOutput($output)); + + $date = date('YmdHis'); + $path = $this->generateMigration($ms, 'Version' . $version . 'Date' . $date, $schemaBody); + + $output->writeln("New migration class has been generated to $path"); + return 0; + } + + /** + * @param Schema $schema + * @return string + */ + protected function schemaToMigration(Schema $schema) { + $content = <<<'EOT' + /** @var Schema $schema */ + $schema = $schemaClosure(); + +EOT; + + foreach ($schema->getTables() as $table) { + $content .= str_replace('{{table-name}}', substr($table->getName(), 3), <<<'EOT' + + if (!$schema->hasTable('{{table-name}}')) { + $table = $schema->createTable('{{table-name}}'); + +EOT + ); + + foreach ($table->getColumns() as $column) { + $content .= str_replace(['{{name}}', '{{type}}'], [$column->getName(), $column->getType()->getName()], <<<'EOT' + $table->addColumn('{{name}}', '{{type}}', [ + +EOT + ); + if ($column->getAutoincrement()) { + $content .= <<<'EOT' + 'autoincrement' => true, + +EOT; + } + $content .= str_replace('{{notnull}}', $column->getNotnull() ? 'true' : 'false', <<<'EOT' + 'notnull' => {{notnull}}, + +EOT + ); + if ($column->getLength() !== null) { + $content .= str_replace('{{length}}', $column->getLength(), <<<'EOT' + 'length' => {{length}}, + +EOT + ); + } + $default = $column->getDefault(); + if ($default !== null) { + $default = is_numeric($default) ? $default : "'$default'"; + $content .= str_replace('{{default}}', $default, <<<'EOT' + 'default' => {{default}}, + +EOT + ); + } + $content .= <<<'EOT' + ]); + +EOT; + } + + $content .= <<<'EOT' + +EOT; + + $primaryKey = $table->getPrimaryKey(); + if ($primaryKey !== null) { + $content .= str_replace('{{columns}}', implode('\', \'', $primaryKey->getUnquotedColumns()), <<<'EOT' + $table->setPrimaryKey(['{{columns}}']); + +EOT + ); + } + + foreach ($table->getIndexes() as $index) { + if ($index->isPrimary()) { + continue; + } + + if ($index->isUnique()) { + $content .= str_replace( + ['{{columns}}', '{{name}}'], + [implode('\', \'', $index->getUnquotedColumns()), $index->getName()], + <<<'EOT' + $table->addUniqueIndex(['{{columns}}'], '{{name}}'); + +EOT + ); + } else { + $content .= str_replace( + ['{{columns}}', '{{name}}'], + [implode('\', \'', $index->getUnquotedColumns()), $index->getName()], + <<<'EOT' + $table->addIndex(['{{columns}}'], '{{name}}'); + +EOT + ); + } + } + + $content .= <<<'EOT' + } + +EOT; + } + + $content .= <<<'EOT' + return $schema; +EOT; + + return $content; + } +} diff --git a/core/Command/Maintenance/Install.php b/core/Command/Maintenance/Install.php index fa6262d24a..342614236d 100644 --- a/core/Command/Maintenance/Install.php +++ b/core/Command/Maintenance/Install.php @@ -61,6 +61,7 @@ class Install extends Command { ->addOption('database-user', null, InputOption::VALUE_REQUIRED, 'User name to connect to the database') ->addOption('database-pass', null, InputOption::VALUE_OPTIONAL, 'Password of the database user', null) ->addOption('database-table-prefix', null, InputOption::VALUE_OPTIONAL, 'Prefix for all tables (default: oc_)', null) + ->addOption('database-table-space', null, InputOption::VALUE_OPTIONAL, 'Table space of the database (oci only)', null) ->addOption('admin-user', null, InputOption::VALUE_REQUIRED, 'User name of the admin account', 'admin') ->addOption('admin-pass', null, InputOption::VALUE_REQUIRED, 'Password of the admin account') ->addOption('data-dir', null, InputOption::VALUE_REQUIRED, 'Path to data directory', \OC::$SERVERROOT."/data"); @@ -171,6 +172,9 @@ class Install extends Command { 'adminpass' => $adminPassword, 'directory' => $dataDir ]; + if ($db === 'oci') { + $options['dbtablespace'] = $input->getParameterOption('--database-table-space', ''); + } return $options; } diff --git a/core/Controller/AvatarController.php b/core/Controller/AvatarController.php index 5a3d630914..cb0ece9fa4 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 bbb990f1a4..76eaf11085 100644 --- a/core/Controller/ContactsMenuController.php +++ b/core/Controller/ContactsMenuController.php @@ -54,7 +54,7 @@ class ContactsMenuController extends Controller { * @NoAdminRequired * * @param string|null filter - * @return JSONResponse + * @return \JsonSerializable[] */ public function index($filter = null) { return $this->manager->getEntries($this->userSession->getUser(), $filter); @@ -65,15 +65,14 @@ class ContactsMenuController extends Controller { * * @param integer $shareType * @param string $shareWith - * @return JSONResponse + * @return JSONResponse|\JsonSerializable */ public function findOne($shareType, $shareWith) { $contact = $this->manager->findOne($this->userSession->getUser(), $shareType, $shareWith); if ($contact) { return $contact; - } else { - return new JSONResponse([], Http::STATUS_NOT_FOUND); } + return new JSONResponse([], Http::STATUS_NOT_FOUND); } } diff --git a/core/Controller/LoginController.php b/core/Controller/LoginController.php index 1c75b1f3c8..1243157125 100644 --- a/core/Controller/LoginController.php +++ b/core/Controller/LoginController.php @@ -248,7 +248,7 @@ class LoginController extends Controller { $args['redirect_url'] = $redirect_url; } $response = new RedirectResponse($this->urlGenerator->linkToRoute('core.login.showLoginForm', $args)); - $response->throttle(); + $response->throttle(['user' => $user]); $this->session->set('loginMessages', [ ['invalidpassword'], [] ]); diff --git a/core/Controller/LostController.php b/core/Controller/LostController.php index 0d5988a249..59a4e0b253 100644 --- a/core/Controller/LostController.php +++ b/core/Controller/LostController.php @@ -267,7 +267,7 @@ class LostController extends Controller { \OC_Hook::emit('\OC\Core\LostPassword\Controller\LostController', 'post_passwordReset', array('uid' => $userId, 'password' => $password)); $this->config->deleteUserValue($userId, 'core', 'lostpassword'); - @\OC_User::unsetMagicInCookie(); + @\OC::$server->getUserSession()->unsetMagicInCookie(); } catch (\Exception $e){ return $this->error($e->getMessage()); } diff --git a/core/Controller/OCSController.php b/core/Controller/OCSController.php index 35eac3a3d8..ff939f71a4 100644 --- a/core/Controller/OCSController.php +++ b/core/Controller/OCSController.php @@ -122,11 +122,11 @@ class OCSController extends \OCP\AppFramework\OCSController { ]); } - $response = new DataResponse(null, 102); + $response = new DataResponse([], 102); $response->throttle(); return $response; } - return new DataResponse(null, 101); + return new DataResponse([], 101); } /** @@ -146,6 +146,6 @@ class OCSController extends \OCP\AppFramework\OCSController { return new DataResponse($data); } - return new DataResponse('User not found', 404); + return new DataResponse(['User not found'], 404); } } diff --git a/core/Middleware/TwoFactorMiddleware.php b/core/Middleware/TwoFactorMiddleware.php index e35c53d404..a4e0d7219e 100644 --- a/core/Middleware/TwoFactorMiddleware.php +++ b/core/Middleware/TwoFactorMiddleware.php @@ -104,7 +104,7 @@ class TwoFactorMiddleware extends Middleware { // TODO: dont check/enforce 2FA if a auth token is used } - private function checkTwoFactor($controller, $methodName, IUser $user) { + private function checkTwoFactor(Controller $controller, $methodName, IUser $user) { // If two-factor auth is in progress disallow access to any controllers // defined within "LoginController". $needsSecondFactor = $this->twoFactorManager->needsSecondFactor($user); diff --git a/core/Migrations/Version13000Date20170718121200.php b/core/Migrations/Version13000Date20170718121200.php new file mode 100644 index 0000000000..81743bd203 --- /dev/null +++ b/core/Migrations/Version13000Date20170718121200.php @@ -0,0 +1,897 @@ +hasTable('appconfig')) { + $table = $schema->createTable('appconfig'); + $table->addColumn('appid', 'string', [ + 'notnull' => true, + 'length' => 32, + 'default' => '', + ]); + $table->addColumn('configkey', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('configvalue', 'text', [ + 'notnull' => false, + ]); + $table->setPrimaryKey(['appid', 'configkey']); + $table->addIndex(['configkey'], 'appconfig_config_key_index'); + $table->addIndex(['appid'], 'appconfig_appid_key'); + } + + if (!$schema->hasTable('storages')) { + $table = $schema->createTable('storages'); + $table->addColumn('id', 'string', [ + 'notnull' => false, + 'length' => 64, + ]); + $table->addColumn('numeric_id', 'integer', [ + 'autoincrement' => true, + 'notnull' => true, + 'length' => 4, + ]); + $table->addColumn('available', 'integer', [ + 'notnull' => true, + 'default' => 1, + ]); + $table->addColumn('last_checked', 'integer', [ + 'notnull' => false, + ]); + $table->setPrimaryKey(['numeric_id']); + $table->addUniqueIndex(['id'], 'storages_id_index'); + } + + if (!$schema->hasTable('mounts')) { + $table = $schema->createTable('mounts'); + $table->addColumn('id', 'integer', [ + 'autoincrement' => true, + 'notnull' => true, + 'length' => 4, + ]); + $table->addColumn('storage_id', 'integer', [ + 'notnull' => true, + ]); + $table->addColumn('root_id', 'integer', [ + 'notnull' => true, + ]); + $table->addColumn('user_id', 'string', [ + 'notnull' => true, + 'length' => 64, + ]); + $table->addColumn('mount_point', 'string', [ + 'notnull' => true, + 'length' => 4000, + ]); + $table->addColumn('mount_id', 'integer', [ + 'notnull' => false, + ]); + $table->setPrimaryKey(['id']); + $table->addIndex(['user_id'], 'mounts_user_index'); + $table->addIndex(['storage_id'], 'mounts_storage_index'); + $table->addIndex(['root_id'], 'mounts_root_index'); + $table->addIndex(['mount_id'], 'mounts_mount_id_index'); + $table->addUniqueIndex(['user_id', 'root_id'], 'mounts_user_root_index'); + } + + if (!$schema->hasTable('mimetypes')) { + $table = $schema->createTable('mimetypes'); + $table->addColumn('id', 'integer', [ + 'autoincrement' => true, + 'notnull' => true, + 'length' => 4, + ]); + $table->addColumn('mimetype', 'string', [ + 'notnull' => true, + 'length' => 255, + 'default' => '', + ]); + $table->setPrimaryKey(['id']); + $table->addUniqueIndex(['mimetype'], 'mimetype_id_index'); + } + + if (!$schema->hasTable('filecache')) { + $table = $schema->createTable('filecache'); + $table->addColumn('fileid', 'integer', [ + 'autoincrement' => true, + 'notnull' => true, + 'length' => 4, + ]); + $table->addColumn('storage', 'integer', [ + 'notnull' => true, + 'length' => 4, + 'default' => 0, + ]); + $table->addColumn('path', 'string', [ + 'notnull' => false, + 'length' => 4000, + ]); + $table->addColumn('path_hash', 'string', [ + 'notnull' => true, + 'length' => 32, + 'default' => '', + ]); + $table->addColumn('parent', 'integer', [ + 'notnull' => true, + 'length' => 4, + 'default' => 0, + ]); + $table->addColumn('name', 'string', [ + 'notnull' => false, + 'length' => 250, + ]); + $table->addColumn('mimetype', 'integer', [ + 'notnull' => true, + 'length' => 4, + 'default' => 0, + ]); + $table->addColumn('mimepart', 'integer', [ + 'notnull' => true, + 'length' => 4, + 'default' => 0, + ]); + $table->addColumn('size', 'bigint', [ + 'notnull' => true, + 'length' => 8, + 'default' => 0, + ]); + $table->addColumn('mtime', 'integer', [ + 'notnull' => true, + 'length' => 4, + 'default' => 0, + ]); + $table->addColumn('storage_mtime', 'integer', [ + 'notnull' => true, + 'length' => 4, + 'default' => 0, + ]); + $table->addColumn('encrypted', 'integer', [ + 'notnull' => true, + 'length' => 4, + 'default' => 0, + ]); + $table->addColumn('unencrypted_size', 'bigint', [ + 'notnull' => true, + 'length' => 8, + 'default' => 0, + ]); + $table->addColumn('etag', 'string', [ + 'notnull' => false, + 'length' => 40, + ]); + $table->addColumn('permissions', 'integer', [ + 'notnull' => false, + 'length' => 4, + 'default' => 0, + ]); + $table->addColumn('checksum', 'string', [ + 'notnull' => false, + 'length' => 255, + ]); + $table->setPrimaryKey(['fileid']); + $table->addUniqueIndex(['storage', 'path_hash'], 'fs_storage_path_hash'); + $table->addIndex(['parent', 'name'], 'fs_parent_name_hash'); + $table->addIndex(['storage', 'mimetype'], 'fs_storage_mimetype'); + $table->addIndex(['storage', 'mimepart'], 'fs_storage_mimepart'); + $table->addIndex(['storage', 'size', 'fileid'], 'fs_storage_size'); + } + + if (!$schema->hasTable('group_user')) { + $table = $schema->createTable('group_user'); + $table->addColumn('gid', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('uid', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->setPrimaryKey(['gid', 'uid']); + $table->addIndex(['uid'], 'gu_uid_index'); + } + + if (!$schema->hasTable('group_admin')) { + $table = $schema->createTable('group_admin'); + $table->addColumn('gid', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('uid', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->setPrimaryKey(['gid', 'uid']); + $table->addIndex(['uid'], 'group_admin_uid'); + } + + if (!$schema->hasTable('groups')) { + $table = $schema->createTable('groups'); + $table->addColumn('gid', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->setPrimaryKey(['gid']); + } + + if (!$schema->hasTable('preferences')) { + $table = $schema->createTable('preferences'); + $table->addColumn('userid', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('appid', 'string', [ + 'notnull' => true, + 'length' => 32, + 'default' => '', + ]); + $table->addColumn('configkey', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('configvalue', 'text', [ + 'notnull' => false, + ]); + $table->setPrimaryKey(['userid', 'appid', 'configkey']); + } + + if (!$schema->hasTable('properties')) { + $table = $schema->createTable('properties'); + $table->addColumn('id', 'integer', [ + 'autoincrement' => true, + 'notnull' => true, + 'length' => 4, + ]); + $table->addColumn('userid', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('propertypath', 'string', [ + 'notnull' => true, + 'length' => 255, + 'default' => '', + ]); + $table->addColumn('propertyname', 'string', [ + 'notnull' => true, + 'length' => 255, + 'default' => '', + ]); + $table->addColumn('propertyvalue', 'text', [ + 'notnull' => true, + ]); + $table->setPrimaryKey(['id']); + $table->addIndex(['userid'], 'property_index'); + } + + if (!$schema->hasTable('share')) { + $table = $schema->createTable('share'); + $table->addColumn('id', 'integer', [ + 'autoincrement' => true, + 'notnull' => true, + 'length' => 4, + ]); + $table->addColumn('share_type', 'smallint', [ + 'notnull' => true, + 'length' => 1, + 'default' => 0, + ]); + $table->addColumn('share_with', 'string', [ + 'notnull' => false, + 'length' => 255, + ]); + $table->addColumn('password', 'string', [ + 'notnull' => false, + 'length' => 255, + ]); + $table->addColumn('uid_owner', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('uid_initiator', 'string', [ + 'notnull' => false, + 'length' => 64, + ]); + $table->addColumn('parent', 'integer', [ + 'notnull' => false, + 'length' => 4, + ]); + $table->addColumn('item_type', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('item_source', 'string', [ + 'notnull' => false, + 'length' => 255, + ]); + $table->addColumn('item_target', 'string', [ + 'notnull' => false, + 'length' => 255, + ]); + $table->addColumn('file_source', 'integer', [ + 'notnull' => false, + 'length' => 4, + ]); + $table->addColumn('file_target', 'string', [ + 'notnull' => false, + 'length' => 512, + ]); + $table->addColumn('permissions', 'smallint', [ + 'notnull' => true, + 'length' => 1, + 'default' => 0, + ]); + $table->addColumn('stime', 'bigint', [ + 'notnull' => true, + 'length' => 8, + 'default' => 0, + ]); + $table->addColumn('accepted', 'smallint', [ + 'notnull' => true, + 'length' => 1, + 'default' => 0, + ]); + $table->addColumn('expiration', 'datetime', [ + 'notnull' => false, + ]); + $table->addColumn('token', 'string', [ + 'notnull' => false, + 'length' => 32, + ]); + $table->addColumn('mail_send', 'smallint', [ + 'notnull' => true, + 'length' => 1, + 'default' => 0, + ]); + $table->addColumn('share_name', 'string', [ + 'notnull' => false, + 'length' => 64, + ]); + $table->setPrimaryKey(['id']); + $table->addIndex(['item_type', 'share_type'], 'item_share_type_index'); + $table->addIndex(['file_source'], 'file_source_index'); + $table->addIndex(['token'], 'token_index'); + } + + if (!$schema->hasTable('jobs')) { + $table = $schema->createTable('jobs'); + $table->addColumn('id', 'integer', [ + 'autoincrement' => true, + 'notnull' => true, + 'length' => 4, + ]); + $table->addColumn('class', 'string', [ + 'notnull' => true, + 'length' => 255, + 'default' => '', + ]); + $table->addColumn('argument', 'string', [ + 'notnull' => true, + 'length' => 4000, + 'default' => '', + ]); + $table->addColumn('last_run', 'integer', [ + 'notnull' => false, + 'default' => 0, + ]); + $table->addColumn('last_checked', 'integer', [ + 'notnull' => false, + 'default' => 0, + ]); + $table->addColumn('reserved_at', 'integer', [ + 'notnull' => false, + 'default' => 0, + ]); + $table->addColumn('execution_duration', 'integer', [ + 'notnull' => true, + 'default' => 0, + ]); + $table->setPrimaryKey(['id']); + $table->addIndex(['class'], 'job_class_index'); + } + + if (!$schema->hasTable('users')) { + $table = $schema->createTable('users'); + $table->addColumn('uid', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('displayname', 'string', [ + 'notnull' => false, + 'length' => 64, + ]); + $table->addColumn('password', 'string', [ + 'notnull' => true, + 'length' => 255, + 'default' => '', + ]); + $table->setPrimaryKey(['uid']); + } + + if (!$schema->hasTable('authtoken')) { + $table = $schema->createTable('authtoken'); + $table->addColumn('id', 'integer', [ + 'autoincrement' => true, + 'notnull' => true, + 'length' => 4, + ]); + $table->addColumn('uid', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('login_name', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('password', 'text', [ + 'notnull' => false, + ]); + $table->addColumn('name', 'text', [ + 'notnull' => true, + 'default' => '', + ]); + $table->addColumn('token', 'string', [ + 'notnull' => true, + 'length' => 200, + 'default' => '', + ]); + $table->addColumn('type', 'smallint', [ + 'notnull' => true, + 'length' => 2, + 'default' => 0, + ]); + $table->addColumn('remember', 'smallint', [ + 'notnull' => true, + 'length' => 1, + 'default' => 0, + ]); + $table->addColumn('last_activity', 'integer', [ + 'notnull' => true, + 'length' => 4, + 'default' => 0, + ]); + $table->addColumn('last_check', 'integer', [ + 'notnull' => true, + 'length' => 4, + 'default' => 0, + ]); + $table->addColumn('scope', 'text', [ + 'notnull' => false, + ]); + $table->setPrimaryKey(['id']); + $table->addUniqueIndex(['token'], 'authtoken_token_index'); + $table->addIndex(['last_activity'], 'authtoken_last_activity_index'); + } + + if (!$schema->hasTable('bruteforce_attempts')) { + $table = $schema->createTable('bruteforce_attempts'); + $table->addColumn('id', 'integer', [ + 'autoincrement' => true, + 'notnull' => true, + 'length' => 4, + ]); + $table->addColumn('action', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('occurred', 'integer', [ + 'notnull' => true, + 'length' => 4, + 'default' => 0, + ]); + $table->addColumn('ip', 'string', [ + 'notnull' => true, + 'length' => 255, + 'default' => '', + ]); + $table->addColumn('subnet', 'string', [ + 'notnull' => true, + 'length' => 255, + 'default' => '', + ]); + $table->addColumn('metadata', 'string', [ + 'notnull' => true, + 'length' => 255, + 'default' => '', + ]); + $table->setPrimaryKey(['id']); + $table->addIndex(['ip'], 'bruteforce_attempts_ip'); + $table->addIndex(['subnet'], 'bruteforce_attempts_subnet'); + } + + if (!$schema->hasTable('vcategory')) { + $table = $schema->createTable('vcategory'); + $table->addColumn('id', 'integer', [ + 'autoincrement' => true, + 'notnull' => true, + 'length' => 4, + ]); + $table->addColumn('uid', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('type', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('category', 'string', [ + 'notnull' => true, + 'length' => 255, + 'default' => '', + ]); + $table->setPrimaryKey(['id']); + $table->addIndex(['uid'], 'uid_index'); + $table->addIndex(['type'], 'type_index'); + $table->addIndex(['category'], 'category_index'); + } + + if (!$schema->hasTable('vcategory_to_object')) { + $table = $schema->createTable('vcategory_to_object'); + $table->addColumn('objid', 'integer', [ + 'notnull' => true, + 'length' => 4, + 'default' => 0, + ]); + $table->addColumn('categoryid', 'integer', [ + 'notnull' => true, + 'length' => 4, + 'default' => 0, + ]); + $table->addColumn('type', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->setPrimaryKey(['categoryid', 'objid', 'type']); + $table->addIndex(['objid', 'type'], 'vcategory_objectd_index'); + } + + if (!$schema->hasTable('systemtag')) { + $table = $schema->createTable('systemtag'); + $table->addColumn('id', 'integer', [ + 'autoincrement' => true, + 'notnull' => true, + 'length' => 4, + ]); + $table->addColumn('name', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('visibility', 'smallint', [ + 'notnull' => true, + 'length' => 1, + 'default' => 1, + ]); + $table->addColumn('editable', 'smallint', [ + 'notnull' => true, + 'length' => 1, + 'default' => 1, + ]); + $table->setPrimaryKey(['id']); + $table->addUniqueIndex(['name', 'visibility', 'editable'], 'tag_ident'); + } + + if (!$schema->hasTable('systemtag_object_mapping')) { + $table = $schema->createTable('systemtag_object_mapping'); + $table->addColumn('objectid', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('objecttype', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('systemtagid', 'integer', [ + 'notnull' => true, + 'length' => 4, + 'default' => 0, + ]); + $table->addUniqueIndex(['objecttype', 'objectid', 'systemtagid'], 'mapping'); + } + + if (!$schema->hasTable('systemtag_group')) { + $table = $schema->createTable('systemtag_group'); + $table->addColumn('systemtagid', 'integer', [ + 'notnull' => true, + 'length' => 4, + 'default' => 0, + ]); + $table->addColumn('gid', 'string', [ + 'notnull' => true, + ]); + $table->setPrimaryKey(['gid', 'systemtagid']); + } + + if (!$schema->hasTable('file_locks')) { + $table = $schema->createTable('file_locks'); + $table->addColumn('id', 'integer', [ + 'autoincrement' => true, + 'notnull' => true, + 'length' => 4, + ]); + $table->addColumn('lock', 'integer', [ + 'notnull' => true, + 'length' => 4, + 'default' => 0, + ]); + $table->addColumn('key', 'string', [ + 'notnull' => true, + 'length' => 64, + ]); + $table->addColumn('ttl', 'integer', [ + 'notnull' => true, + 'length' => 4, + 'default' => -1, + ]); + $table->setPrimaryKey(['id']); + $table->addUniqueIndex(['key'], 'lock_key_index'); + $table->addIndex(['ttl'], 'lock_ttl_index'); + } + + if (!$schema->hasTable('comments')) { + $table = $schema->createTable('comments'); + $table->addColumn('id', 'integer', [ + 'autoincrement' => true, + 'notnull' => true, + 'length' => 4, + ]); + $table->addColumn('parent_id', 'integer', [ + 'notnull' => true, + 'length' => 4, + 'default' => 0, + ]); + $table->addColumn('topmost_parent_id', 'integer', [ + 'notnull' => true, + 'length' => 4, + 'default' => 0, + ]); + $table->addColumn('children_count', 'integer', [ + 'notnull' => true, + 'length' => 4, + 'default' => 0, + ]); + $table->addColumn('actor_type', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('actor_id', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('message', 'text', [ + 'notnull' => false, + ]); + $table->addColumn('verb', 'string', [ + 'notnull' => false, + 'length' => 64, + ]); + $table->addColumn('creation_timestamp', 'datetime', [ + 'notnull' => false, + ]); + $table->addColumn('latest_child_timestamp', 'datetime', [ + 'notnull' => false, + ]); + $table->addColumn('object_type', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('object_id', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->setPrimaryKey(['id']); + $table->addIndex(['parent_id'], 'comments_parent_id_index'); + $table->addIndex(['topmost_parent_id'], 'comments_topmost_parent_id_idx'); + $table->addIndex(['object_type', 'object_id', 'creation_timestamp'], 'comments_object_index'); + $table->addIndex(['actor_type', 'actor_id'], 'comments_actor_index'); + } + + if (!$schema->hasTable('comments_read_markers')) { + $table = $schema->createTable('comments_read_markers'); + $table->addColumn('user_id', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('marker_datetime', 'datetime', [ + 'notnull' => false, + ]); + $table->addColumn('object_type', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('object_id', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addIndex(['object_type', 'object_id'], 'comments_marker_object_index'); + $table->addUniqueIndex(['user_id', 'object_type', 'object_id'], 'comments_marker_index'); + } + + if (!$schema->hasTable('credentials')) { + $table = $schema->createTable('credentials'); + $table->addColumn('user', 'string', [ + 'notnull' => true, + 'length' => 64, + ]); + $table->addColumn('identifier', 'string', [ + 'notnull' => true, + 'length' => 64, + ]); + $table->addColumn('credentials', 'text', [ + 'notnull' => false, + ]); + $table->setPrimaryKey(['user', 'identifier']); + $table->addIndex(['user'], 'credentials_user'); + } + + if (!$schema->hasTable('admin_sections')) { + $table = $schema->createTable('admin_sections'); + $table->addColumn('id', 'string', [ + 'notnull' => true, + 'length' => 64, + ]); + $table->addColumn('class', 'string', [ + 'notnull' => true, + 'length' => 255, + 'default' => '', + ]); + $table->addColumn('priority', 'smallint', [ + 'notnull' => true, + 'length' => 1, + 'default' => 0, + ]); + $table->setPrimaryKey(['id']); + $table->addUniqueIndex(['class'], 'admin_sections_class'); + } + + if (!$schema->hasTable('admin_settings')) { + $table = $schema->createTable('admin_settings'); + $table->addColumn('id', 'integer', [ + 'autoincrement' => true, + 'notnull' => true, + 'length' => 4, + ]); + $table->addColumn('class', 'string', [ + 'notnull' => true, + 'length' => 255, + 'default' => '', + ]); + $table->addColumn('section', 'string', [ + 'notnull' => false, + 'length' => 64, + ]); + $table->addColumn('priority', 'smallint', [ + 'notnull' => true, + 'length' => 1, + 'default' => 0, + ]); + $table->setPrimaryKey(['id']); + $table->addUniqueIndex(['class'], 'admin_settings_class'); + $table->addIndex(['section'], 'admin_settings_section'); + } + + if (!$schema->hasTable('personal_sections')) { + $table = $schema->createTable('personal_sections'); + $table->addColumn('id', 'string', [ + 'notnull' => true, + 'length' => 64, + ]); + $table->addColumn('class', 'string', [ + 'notnull' => true, + 'length' => 255, + 'default' => '', + ]); + $table->addColumn('priority', 'smallint', [ + 'notnull' => true, + 'length' => 1, + 'default' => 0, + ]); + $table->setPrimaryKey(['id']); + $table->addUniqueIndex(['class'], 'personal_sections_class'); + } + + if (!$schema->hasTable('personal_settings')) { + $table = $schema->createTable('personal_settings'); + $table->addColumn('id', 'integer', [ + 'autoincrement' => true, + 'notnull' => true, + 'length' => 4, + ]); + $table->addColumn('class', 'string', [ + 'notnull' => true, + 'length' => 255, + 'default' => '', + ]); + $table->addColumn('section', 'string', [ + 'notnull' => false, + 'length' => 64, + ]); + $table->addColumn('priority', 'smallint', [ + 'notnull' => true, + 'length' => 1, + 'default' => 0, + ]); + $table->setPrimaryKey(['id']); + $table->addUniqueIndex(['class'], 'personal_settings_class'); + $table->addIndex(['section'], 'personal_settings_section'); + } + + if (!$schema->hasTable('accounts')) { + $table = $schema->createTable('accounts'); + $table->addColumn('uid', 'string', [ + 'notnull' => true, + 'length' => 64, + 'default' => '', + ]); + $table->addColumn('data', 'text', [ + 'notnull' => true, + 'default' => '', + ]); + $table->setPrimaryKey(['uid']); + } + return $schema; + } + + /** + * @param IOutput $output + * @param \Closure $schemaClosure The `\Closure` returns a `Schema` + * @param array $options + * @since 13.0.0 + */ + public function postSchemaChange(IOutput $output, \Closure $schemaClosure, array $options) { + } +} diff --git a/core/ajax/update.php b/core/ajax/update.php index d23e3b0d56..818291d3ef 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/header.scss b/core/css/header.scss index c4d4205103..e744d3acb4 100644 --- a/core/css/header.scss +++ b/core/css/header.scss @@ -137,18 +137,18 @@ vertical-align: middle; } - #header-left, - #header-right { + #header-left, .header-left, + #header-right, .header-right { display: inline-flex; align-items: center; } - #header-left { + #header-left, .header-left { flex: 0 0; flex-grow: 1; } - #header-right { + #header-right, .header-right { justify-content: flex-end; } } @@ -211,7 +211,8 @@ nav { margin-left: -54px; } -#navigation { +#navigation, +.ui-datepicker { position: relative; left: -100%; width: 160px; @@ -272,6 +273,7 @@ nav { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; + max-width: 110px; } svg, span { diff --git a/core/css/icons.scss b/core/css/icons.scss index ae6df353f1..e694d807ba 100644 --- a/core/css/icons.scss +++ b/core/css/icons.scss @@ -18,6 +18,20 @@ background-position: center; min-width: 16px; min-height: 16px; + display: inline-flex; + align-self: center; + position: relative; +} + +[class^='icon-'] svg, +[class*=' icon-'] svg { + height: 16px; + width: 16px; + vertical-align: -3px; // counter default DOM offset +} + +.icon-white svg path { + fill: $color-primary-text; } .icon-breadcrumb { @@ -369,6 +383,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'); } @@ -441,14 +459,6 @@ img, object, video, button, textarea, input, select { background-image: url('../img/places/calendar-dark.svg?v=1'); } -.icon-contacts { - background-image: url('../img/places/contacts.svg?v=1'); -} - -.icon-contacts-dark { - background-image: url('../img/places/contacts-dark.svg?v=1'); -} - .icon-files { background-image: url('../img/places/files.svg?v=1'); } diff --git a/core/css/inputs.scss b/core/css/inputs.scss index 13a164e13f..3ea90d322b 100644 --- a/core/css/inputs.scss +++ b/core/css/inputs.scss @@ -492,8 +492,9 @@ input { } .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { - border: none; - background: nc-darken($color-main-background, 3%); + border: 1px solid transparent; + background: inherit; + color: $color-primary; } /* Animation */ diff --git a/core/css/styles.scss b/core/css/styles.scss index 35fc300eaf..f2acca38e1 100644 --- a/core/css/styles.scss +++ b/core/css/styles.scss @@ -964,6 +964,83 @@ code { background-image: url('../img/actions/play-previous.svg?v=1'); } +/* ---- jQuery UI datepicker ---- */ +.ui-widget.ui-datepicker { + margin-top: 10px; + padding: 4px 8px; + width: auto; + + .ui-state-default, + .ui-widget-content .ui-state-default, + .ui-widget-header .ui-state-default { + border: 1px solid transparent; + background: inherit; + } + .ui-widget-header { + padding: 7px; + font-size: 13px; + border: none; + background-color: $color-main-background; + color: $color-main-text; + + .ui-datepicker-title { + line-height: 1; + font-weight: 300; + } + .ui-icon { + opacity: .5; + + &.ui-icon-circle-triangle-e { + background: url("../img/actions/arrow-right.svg") center center no-repeat; + } + &.ui-icon-circle-triangle-w { + background: url("../img/actions/arrow-left.svg") center center no-repeat; + } + } + .ui-state-hover .ui-icon { + opacity: 1; + } + } + .ui-datepicker-calendar { + th { + font-weight: normal; + color: nc-lighten($color-main-text, 33%); + opacity: .8; + } + tr:hover { + background-color: inherit; + } + td { + > * { + border-radius: 50%; + text-align: center; + font-weight: normal; + color: $color-main-text; + padding: 6px; + line-height: 12px; + } + + &.ui-datepicker-today a:not(.ui-state-hover) { + background-color: nc-lighten($color-main-text, 86%); + } + + &.ui-datepicker-current-day a.ui-state-active, + .ui-state-hover, + .ui-state-focus { + background-color: $color-primary; + color: $color-primary-text; + font-weight: bold; + } + + &.ui-datepicker-week-end :not(.ui-state-hover), + .ui-priority-secondary:not(.ui-state-hover) { + color: nc-lighten($color-main-text, 33%); + opacity: .8; + } + } + } +} + .ui-datepicker-prev, .ui-datepicker-next { border: nc-lighten($color-main-text, 86%); background: $color-main-background; diff --git a/core/img/actions/arrow-left.svg b/core/img/actions/arrow-left.svg new file mode 100644 index 0000000000..34b2fda242 --- /dev/null +++ b/core/img/actions/arrow-left.svg @@ -0,0 +1 @@ + diff --git a/core/img/actions/arrow-right.svg b/core/img/actions/arrow-right.svg new file mode 100644 index 0000000000..102b9cf6b5 --- /dev/null +++ b/core/img/actions/arrow-right.svg @@ -0,0 +1 @@ + diff --git a/core/img/places/contacts-dark.svg b/core/img/places/contacts-dark.svg deleted file mode 100644 index 56ff262e91..0000000000 --- a/core/img/places/contacts-dark.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/core/img/places/contacts.svg b/core/img/places/contacts.svg index 4e6206db09..56ff262e91 100644 --- a/core/img/places/contacts.svg +++ b/core/img/places/contacts.svg @@ -1 +1 @@ - + diff --git a/core/js/files/client.js b/core/js/files/client.js index d8e615f6d6..176cabf04b 100644 --- a/core/js/files/client.js +++ b/core/js/files/client.js @@ -331,11 +331,10 @@ case 'C': case 'K': data.permissions |= OC.PERMISSION_CREATE; - if (!isFile) { - data.permissions |= OC.PERMISSION_UPDATE; - } break; case 'W': + case 'N': + case 'V': data.permissions |= OC.PERMISSION_UPDATE; break; case 'D': diff --git a/core/js/jquery-showpassword.js b/core/js/jquery-showpassword.js index 5d518c78bc..fc9de2170f 100644 --- a/core/js/jquery-showpassword.js +++ b/core/js/jquery-showpassword.js @@ -74,7 +74,7 @@ // Create clone var $clone = cloneElement($input); - $clone.insertAfter($input); + $clone.insertBefore($input); // Set callback arguments if(callback.fn){ diff --git a/core/js/js.js b/core/js/js.js index 2aa7bf1bc5..c02ef5c792 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -1203,7 +1203,7 @@ OC.Notification={ /** * Updates (replaces) a sanitized notification. - * + * * @param {string} text Message to display * @return {jQuery} JQuery element for notificaiton row */ @@ -1512,7 +1512,7 @@ function initCore() { var resizeMenu = function() { var appList = $('#appmenu li'); - var headerWidth = $('#header-left').width() - $('#nextcloud').width() + var headerWidth = $('.header-left').width() - $('#nextcloud').width() var usePercentualAppMenuLimit = 0.33; var minAppsDesktop = 8; var availableWidth = headerWidth - $(appList).width(); diff --git a/core/js/tests/specs/setupchecksSpec.js b/core/js/tests/specs/setupchecksSpec.js index 507abd7e77..35279f3501 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 documentation.', + msg: 'No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our documentation.', 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 documentation.', + msg: 'No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our documentation.', type: OC.SetupChecks.MESSAGE_TYPE_INFO }]); done(); diff --git a/core/l10n/ca.js b/core/l10n/ca.js index bd1abee203..7040a5cf74 100644 --- a/core/l10n/ca.js +++ b/core/l10n/ca.js @@ -3,7 +3,7 @@ OC.L10N.register( { "Please select a file." : "Seleccioneu un fitxer.", "File is too big" : "El fitxer és massa gran", - "The selected file is not an image." : "El fitxer seleccionat no és una imatge", + "The selected file is not an image." : "El fitxer seleccionat no és una imatge.", "The selected file cannot be read." : "El fitxer seleccionat no es pot llegir.", "Invalid file provided" : "El fitxer proporcionat no és vàlid", "No image or file provided" : "No s'han proporcionat imatges o fitxers", @@ -20,23 +20,30 @@ OC.L10N.register( "Couldn't reset password because the token is expired" : "No es pot restablir la contrasenya perquè el testimoni ha vençut", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "No s'ha pogut enviar correu de restabliment. No hi ha correu per aquest compte. Contacteu amb l'administrador.", "Password reset" : "Canvi de contrasenya", + "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Prem el següent botó per reinicialitzar la teva contrasenya. Si no has sol·licitat un canvi de contrasenya, ignora aquest correu.", + "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Feu clic al següent enllaç per restablir la contrasenya. Si no sol·liciteu la reinicialització de contrasenya, llavors ignoreu aquest correu electrònic.", "Reset your password" : "Canvia la teva contrasenya", "%s password reset" : "restableix la contrasenya %s", "Couldn't send reset email. Please contact your administrator." : "No s'ha pogut restablir el correu. Contacteu amb l'administrador.", "Couldn't send reset email. Please make sure your username is correct." : "No s'ha pogut enviar el correu de restabliment. Assegureu-vos que el vostre nom d'usuari és correcte.", "Preparing update" : "Preparant l'actualització", "[%d / %d]: %s" : "[%d / %d]: %s", - "Repair warning: " : "Advertiment de reparació:", - "Repair error: " : "Error de reparació:", + "Repair warning: " : "Advertiment de reparació: ", + "Repair error: " : "Error de reparació: ", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Utilitzeu l’actualitzador de línia de comandes perquè l'actualització automàtica està deshabilitada en el config.php.", "[%d / %d]: Checking table %s" : "[%d / %d]: Revisant la taula %s", "Turned on maintenance mode" : "Activat el mode de manteniment", "Turned off maintenance mode" : "Desactivat el mode de manteniment", "Maintenance mode is kept active" : "El mode de manteniment es manté activat", "Updating database schema" : "Actualitzant l'esquema de la base de dades", "Updated database" : "Actualitzada la base de dades", + "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Comprovar si l'esquema de base de dades es pot actualitzar (això pot trigar temps segons la mida de la base de dades)", "Checked database schema update" : "S'ha comprobat l'actualització de l'esquema de la base de dades", "Checking updates of apps" : "Comprovant les actualitzacions d'aplicacions", + "Checking for update of app \"%s\" in appstore" : "Comprovant les actualitzacions de l'aplicació \"%s\" al repositori", "Update app \"%s\" from appstore" : "Actualitza l'aplicació \"%s\" del repositori", + "Checked for update of app \"%s\" in appstore" : "Comprovades les actualitzacions de l'aplicació \"%s\" al repositori", + "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Comprovar si l'esquema de base de dades per %s pot ser actualitzat (això pot trigar temps segons la mida de la base de dades)", "Checked database schema update for apps" : "S'ha comprobat l'actualització de l'esquema de la base de dades per les apps", "Updated \"%s\" to %s" : "Actualitzat \"%s\" a %s", "Set log level to debug" : "Modifica el nivell de registre a depuració", @@ -47,15 +54,18 @@ OC.L10N.register( "%s (incompatible)" : "%s (incompatible)", "Following apps have been disabled: %s" : "Les aplicacions següents s'han deshabilitat: %s", "Already up to date" : "Ja actualitzat", + "Search contacts …" : "Cerca contactes …", "No contacts found" : "No s'han trobat contactes", - "Show all contacts …" : "Mostra tots els contactes...", + "Show all contacts …" : "Mostra tots els contactes …", "There was an error loading your contacts" : "Hi ha hagut un error al carregar els teus contactes", - "Loading your contacts …" : "Carregant els teus contactes...", + "Loading your contacts …" : "Carregant els teus contactes …", "Looking for {term} …" : "Buscant {term} …", + "There were problems with the code integrity check. More information…" : "Hi ha hagut problemes amb la comprovació d'integritat del codi. Més informació…", "No action available" : "Cap acció disponible", "Error fetching contact actions" : "Error al carregar les accions del contacte", "Settings" : "Configuració", "Connection to server lost" : "S'ha perdut la connexió amb el servidor", + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problemes carregant la pagina, recarregant en 1%n segon","Problemes carregant la pagina, recarregant en 1%n segons"], "Saving..." : "Desant...", "Dismiss" : "Rebutja", "This action requires you to confirm your password" : "Aquesta acció requereix que confirmis la teva contrasenya", @@ -63,9 +73,11 @@ OC.L10N.register( "Password" : "Contrasenya", "Cancel" : "Cancel·la", "Confirm" : "Confirma", + "Failed to authenticate, try again" : "Error d'autenticació, torna-ho a intentar", "seconds ago" : "segons enrere", - "Logging in …" : "Accedint a...", + "Logging in …" : "Accedint a …", "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator." : "L'enllaç per reiniciar la vostra contrasenya s'ha enviat al vostre correu. Si no el rebeu en un temps raonable comproveu les carpetes de spam.
Si no és allà, pregunteu a l'administrador local.", + "Your files are encrypted. There will be no way to get your data back after your password is reset.
If you are not sure what to do, please contact your administrator before you continue.
Do you really want to continue?" : "Els vostres fitxers estan encriptats. No hi haurà manera de recuperar les dades després que reestabliu la contrasenya.
Si no esteu segurs del que feu, contacteu amb l'administrador abans de continuar.
Voleu continuar?", "I know what I'm doing" : "Sé el que faig", "Password can not be changed. Please contact your administrator." : "La contrasenya no es pot canviar. Contacteu amb l'administrador.", "No" : "No", @@ -75,7 +87,7 @@ OC.L10N.register( "Error loading file picker template: {error}" : "Error en carregar la plantilla de càrrega de fitxers: {error}", "OK" : "D'acord", "Error loading message template: {error}" : "Error en carregar la plantilla de missatge: {error}", - "read-only" : "Només de lectura", + "read-only" : "només de lectura", "_{count} file conflict_::_{count} file conflicts_" : ["{count} conflicte de fitxer","{count} conflictes de fitxer"], "One file conflict" : "Un fitxer en conflicte", "New Files" : "Fitxers nous", @@ -93,8 +105,21 @@ OC.L10N.register( "Good password" : "Contrasenya bona", "Strong password" : "Contrasenya forta", "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "El servidor web no està configurat correctament per permetre la sincronització de fitxers perquè la interfície WebDAV sembla no funcionar correctament.", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our documentation." : "El teu servidor web no està configurat correctament per resoldre \"{url}\". Trobareu més informació a la nostra documentació.", + "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Aquest servidor no té cap connexió a Internet operativa: múltiples punts finals no es van poder contactar. Això significa que algunes de les funcions com muntatge d'emmagatzematge extern, notificacions sobre les actualitzacions o instal·lació d'apps de terceres parts no funcionarà. L’accés remot a arxius i l’enviament d'e-mail de notificació podrien no funcionar tampoc. Suggerim habilitar la connexió a Internet per a aquest servidor si voleu tenir tota la funcionalitat.", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our documentation." : "No s’ha configurat cap memòria cau. Per millorar el seu rendiment configureu un memcache si està disponible. Trobareu més informació a la nostra documentació.", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our documentation." : "/dev/urandom no és llegible per PHP que no és gens recomenable per motius de seguretat. Trobareu més informació a la nostra documentació.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by the PHP Group as soon as your distribution supports it." : "Actualment esteu executant PHP {version}. Us animem a actualitzar la versió de PHP que feu servir per tenir avantatge d’actualitzacions de rendiment i seguretat proporcionats pel PHP Group tan aviat com ho suporti la vostra distribució.", + "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our documentation." : "La configuració de les capçaleres del proxi invers és incorrecta o estàs accedint a Nextcloud des d'un proxy de confiança. Si no estàs accedint a Nextcloud des d'un proxy de confiança, això és un risc de seguretat i pot permetre a un atacant suplantar la teva adreça d'IP com visible a Nextcloud. Trobareu més informació a la nostra documentació.", + "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 memcached wiki about both modules." : "Memcached es configura com a una memoria cau distribuïda, però s’ha instal·lat el mòdul erroni de PHP \"memcache\". \\OC\\Memcache\\Memcached només dóna suport a “memcached\" i no \"memcache\". Mireu el wiki de memcached sobre ambdós mòduls.", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our documentation. (List of invalid files… / Rescan…)" : "Alguns fitxers no han passat la comprovació d'integritat. Trobareu més informació sobre com resoldre aquest assumpte a la nostra documentació. (Llista de fitxers no vàlids... / Reescannejar...)", + "The PHP OPcache is not properly configured. For better performance we recommend to use following settings in the php.ini:" : "La OPcache de PHP no està configurada correctament. Per millor rendiment recomanem utilitzar-la seguint la configuració en el php.ini:", + "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "La funció PHP \"set_time_limit\" no està disponible. Això podria resultar en scripts que s’aturin a mig execució, trencant la instal·lació. Us recomanem activar aquesta funció.", "Error occurred while checking server setup" : "Hi ha hagut un error en comprovar la configuració del servidor", - "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our security tips." : "Esteu accedint aquesta web a través de HTTP. Us recomanem que configureu el servidor per requerir HTTPS tal i com es descriu als consells de seguretat", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "El teu directori de dades i fitxers són probablement accessibles des d'Internet. L'arxiu .htaccess no està funcionant. Es recomana que configureu el servidor web de manera que el directori de dades no estigui accessible o moure el directori de dades fora de l'arrel de document de servidor de web.", + "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "L'encapçalament “{header}” HTTP no està configurat per ser igual a “{expected}”. Aquest és un potencial risc de seguretat o privacitat, i es recomana ajustar aquesta configuració.", + "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our security tips." : "La capçalera HTTP “Strict-Transport-Security” no està configurada a un mínim de “{seconds}” segons. Per millor seguretat recomanem permetre HSTS com es descriu en els nostres consells de seguretat.", + "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our security tips." : "Esteu accedint aquesta web a través de HTTP. Us recomanem que configureu el servidor per requerir HTTPS tal i com es descriu als consells de seguretat.", "Shared" : "Compartit", "Shared with {recipients}" : "Compartit amb {recipients}", "Error setting expiration date" : "Error en establir la data de venciment", @@ -103,6 +128,7 @@ OC.L10N.register( "Expiration" : "Expiració", "Expiration date" : "Data de venciment", "Choose a password for the public link" : "Escolliu una contrasenya per l'enllaç públic", + "Choose a password for the public link or press the \"Enter\" key" : "Escolliu una contrasenya per l'enllaç públic o premeu la tecla \"Enter\"", "Copied!" : "Copiat!", "Copy" : "Copia", "Not supported!" : "No soportat!", @@ -122,10 +148,11 @@ OC.L10N.register( "Shared with you and the group {group} by {owner}" : "Compartit amb vos i amb el grup {group} per {owner}", "Shared with you by {owner}" : "Compartit amb vos per {owner}", "Choose a password for the mail share" : "Escolliu una contrasenya pel mail de compartició", + "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartit per enllaç", "group" : "grup", "remote" : "remot", "email" : "email", - "shared by {sharer}" : "Compartit per {sharer}", + "shared by {sharer}" : "compartit per {sharer}", "Unshare" : "Deixa de compartir", "Can reshare" : "Pot recompartir", "Can edit" : "Pot editar", @@ -135,17 +162,27 @@ OC.L10N.register( "Access control" : "Control d'accés", "Could not unshare" : "No pot descompartir", "Error while sharing" : "Error en compartir", + "Share details could not be loaded for this item." : "No s'han pogut carregar els detalls de compartició de l'element.", + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Com a mínim cal {count} caràcter per a l'autocompletat","Com a mínim calen {count} caràcters per a l'autocompletat"], + "This list is maybe truncated - please refine your search term to see more results." : "Aquesta llista potser està truncada - refineu el vostre terme de cerca per veure més resultats.", + "No users or groups found for {search}" : "No s'han trobat usuaris ni grups per {search}", "No users found for {search}" : "No s'han trobat usuaris per {search}", - "An error occurred. Please try again" : "S'ha produït un error. Si us plau, torni a intentar-ho.", + "An error occurred. Please try again" : "S'ha produït un error. Si us plau, torni a intentar-ho", "{sharee} (group)" : "{sharee} (grup)", "{sharee} (remote)" : "{sharee} (remot)", "{sharee} (email)" : "{sharee} (email)", "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", "Share" : "Comparteix", + "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Compartir amb altres persones introduint un usuari o grup, un ID de núvol federat o una adreça d’email.", + "Share with other people by entering a user or group or a federated cloud ID." : "Compartir amb altres persones introduint un usuari o grup o ID de núvol federat.", + "Share with other people by entering a user or group or an email address." : "Compartir amb altres persones introduint un usuari o grup o una adreça d’email.", "Name or email address..." : "Nom o adreça electrònica...", + "Name or federated cloud ID..." : "Nom o ID de Núvol Federat…", + "Name, federated cloud ID or email address..." : "Nom, ID de núvol federat o adreça d’email…", "Name..." : "Nom...", "Error" : "Error", "Error removing share" : "Error al treure compartició", + "Non-existing tag #{tag}" : "Etiqueta inexistent #{tag}", "restricted" : "restringit", "invisible" : "invisible", "({scope})" : "({scope})", @@ -158,13 +195,20 @@ OC.L10N.register( "sunny" : "asolellat", "Hello {name}, the weather is {weather}" : "Hola {name}, el temps és {weather}", "Hello {name}" : "Hola {name}", - "new" : "Nou", - "_download %n file_::_download %n files_" : ["descarregar l'arxiu %n","descarregar arxius %n "], + "These are your search results" : "Aquests són els resultats de la cerca", + "new" : "nou", + "_download %n file_::_download %n files_" : ["descarregar l'arxiu %n","descarregar arxius %n"], + "The update is in progress, leaving this page might interrupt the process in some environments." : "L'actualització està en marxa, abandonar aquesta pàgina podria interrompre el procés en alguns entorns.", "Update to {version}" : "Actualitza a {version}", - "An error occurred." : "S'ha produït un error", + "An error occurred." : "S'ha produït un error.", "Please reload the page." : "Carregueu la pàgina de nou.", + "The update was unsuccessful. For more information check our forum post covering this issue." : "L'actualització no va tenir èxit. Per a més informació consulta la nostra nota al fòrum que cobreix aquest assumpte.", + "The update was unsuccessful. Please report this issue to the Nextcloud community." : "L'actualització no va tenir èxit. Si us plau reporti aquest assumpte a la comunitat Nextcloud.", "Continue to Nextcloud" : "Continua a Nextcloud", + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["L'actualització va ser reeixida. Redirigint a Nextcloud en %n segon.","L’actualització va ser reeixida. Redirigint a Nextcloud en %n segons."], "Searching other places" : "Buscant altres ubicacions", + "No search results in other folders for {tag}{filter}{endtag}" : "No hi ha resultats de la cerca en altres carpetes per {tag}{filter}{endtag}", + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} resultat de cerca en altres carpetes","{count} resultats de cerca en altres carpetes"], "Personal" : "Personal", "Users" : "Usuaris", "Apps" : "Aplicacions", @@ -180,7 +224,7 @@ OC.L10N.register( "More details can be found in the server log." : "Pots trobar més detalls al llistat del servidor.", "Technical details" : "Detalls tècnics", "Remote Address: %s" : "Adreça remota: %s", - "Request ID: %s" : "Sol·licitud ID: %s ", + "Request ID: %s" : "Sol·licitud ID: %s", "Type: %s" : "Tipus: %s", "Code: %s" : "Codi: %s", "Message: %s" : "Missatge: %s", @@ -189,12 +233,13 @@ OC.L10N.register( "Trace" : "Traça", "Security warning" : "Advertiment de seguretat", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "La carpeta de dades i els seus fitxers probablement són accessibles des d'internet perquè el fitxer .htaccess no funciona.", + "For information how to properly configure your server, please see the documentation." : "Per a informació sobre com configurar correctament el servidor, podeu consultar la documentació.", "Create an admin account" : "Crea un compte d'administrador", "Username" : "Nom d'usuari", "Storage & database" : "Emmagatzematge i base de dades", "Data folder" : "Carpeta de dades", "Configure the database" : "Configura la base de dades", - "Only %s is available." : "Només hi ha disponible %s", + "Only %s is available." : "Només hi ha disponible %s.", "Install and activate additional PHP modules to choose other database types." : "Instal·la i activa mòduls PHP addicionals per seleccionar altres tipus de bases de dades.", "For more details check out the documentation." : "Per més detalls consulteu la documentació.", "Database user" : "Usuari de la base de dades", @@ -202,20 +247,23 @@ OC.L10N.register( "Database name" : "Nom de la base de dades", "Database tablespace" : "Espai de taula de la base de dades", "Database host" : "Ordinador central de la base de dades", + "Please specify the port number along with the host name (e.g., localhost:5432)." : "Si us plau, especifiqueu el nombre de port juntament amb el nom de servidor (per exemple, localhost:5432).", "Performance warning" : "Alerta de rendiment", "SQLite will be used as database." : "SQLite s'utilitzarà com a base de dades.", "For larger installations we recommend to choose a different database backend." : "Per a instal·lacions més grans es recomana triar una base de dades diferent.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "L'ús de SQLite està desaconsellat especialment quan s'usa el client d'escriptori per sincronitzar els fitxers.", "Finish setup" : "Acaba la configuració", - "Finishing …" : "Acabant...", + "Finishing …" : "Acabant …", "Need help?" : "Necessites ajuda?", "See the documentation" : "Consulti la documentació", "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Aquesta aplicació requereix Javascript per al seu correcte funcionament . Per favor, {linkstart}habiliti Javascript{linkend} i torni a carregar la pàgina.", "More apps" : "Més aplicacions", "Search" : "Cerca", + "This action requires you to confirm your password:" : "Aquesta acció necessita que confirmis la teva contrasenya:", "Confirm your password" : "Confirma la teva contrasenya", "Server side authentication failed!" : "L'autenticació del servidor ha fallat!", "Please contact your administrator." : "Contacteu amb l'administrador.", + "An internal error occurred." : "S'ha produït un error intern.", "Please try again or contact your administrator." : "Intenti-ho de nou o posi's en contacte amb el seu administrador.", "Username or email" : "Nom d'usuari o correu electrònic", "Wrong password. Reset it?" : "Contrasenya incorrecta. Voleu restablir-la?", @@ -223,31 +271,41 @@ OC.L10N.register( "Log in" : "Inici de sessió", "Stay logged in" : "Mantén la sessió connectada", "Alternative Logins" : "Acreditacions alternatives", + "You are about to grant \"%s\" access to your %s account." : "Estàs a punt de concedir accés \"%s\" al teu %s compte.", "App token" : "Testimoni d'aplicació", - "Redirecting …" : "Redirigint...", + "Alternative login using app token" : "Acreditació alternativa utilitzat testimoni d'aplicació", + "Redirecting …" : "Redirigint …", "New password" : "Contrasenya nova", "New Password" : "Contrasenya nova", "Reset password" : "Reinicialitza la contrasenya", "Two-factor authentication" : "Segon factor d'autenticació", + "Enhanced security is enabled for your account. Please authenticate using a second factor." : "La seguretat millorada està habilitada per al vostre compte. Si us plau autentica’t amb un segon factor.", "Cancel log in" : "Cancel·la l'accés a", "Use backup code" : "Utilitza un codi de copia de seguretat", - "You are accessing the server from an untrusted domain." : "Esteu accedint al servidor des d'un domini no fiable", + "Error while validating your second factor" : "Error al validar el segon factor d'autenticació", + "You are accessing the server from an untrusted domain." : "Esteu accedint al servidor des d'un domini no fiable.", + "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Contacteu amb l'administrador. Si ets un administrador d'aquesta instància, configurar la opció \"trusted_domains\" en config/config.php. Config/config.sample.php ofereix una configuració d'exemple.", "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "En funció de la teva configuració, com a administrador podries utilitzar el botó d'abaix per confiar en aquest domini.", "Add \"%s\" as trusted domain" : "Afegeix \"%s\" com a domini de confiança", "App update required" : "Cal que actualitzeu la aplicació", "%s will be updated to version %s" : "%s s'actualitzarà a la versió %s", "These apps will be updated:" : "Aquestes aplicacions s'actualitzaran:", "These incompatible apps will be disabled:" : "Aquestes aplicacions incompatibles es desactivaran:", - "The theme %s has been disabled." : "S'ha desactivat el tema %s", + "The theme %s has been disabled." : "S'ha desactivat el tema %s.", "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Assegureu-vos que heu fet una còpia de seguretat de la base de dades, del fitxer de configuració i de la carpeta de dades abans de continuar.", "Start update" : "Inicia l'actualització", - "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Per evitar que s'esgoti el temps d'espera en instalacions grans, pots en el seu lloc fer córrer la següent comanda en el directori d'instalació. ", + "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Per evitar que s'esgoti el temps d'espera en instalacions grans, pots en el seu lloc fer córrer la següent comanda en el directori d'instalació:", "Detailed logs" : "Registres detallats", "Update needed" : "Actualització necessaria", + "Please use the command line updater because you have a big instance with more than 50 users." : "Utilitzeu l'updater de línia de comandes perquè tens un gran instància amb més de 50 usuàries.", + "For help, see the documentation." : "Per obtenir ajuda, mira la documentació.", + "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sé que si continuo fent l'actualització mitjançant l’interfície d’usuari web té el risc que la sol·licitud esgoti un temps d'espera, que podria causa pèrdua de dades, però tinc una còpia de seguretat i se com restaurar la meva instància en cas de fallada.", + "Upgrade via web on my own risk" : "Actualitza via web sota la teva responsabilitat", "This %s instance is currently in maintenance mode, which may take a while." : "Aquesta instància %s està actualment en manteniment i podria trigar una estona.", "This page will refresh itself when the %s instance is available again." : "Aquesta pàgina s'actualitzarà automàticament quan la instància %s estigui disponible de nou.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Contacteu amb l'administrador del sistema si aquest missatge persisteix o apareix inesperadament.", "Thank you for your patience." : "Gràcies per la paciència.", + "Problem loading page, reloading in 5 seconds" : "Problemes carregant la pagina, recarregant en 5 segons", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.
If you are not sure what to do, please contact your administrator before you continue.
Do you really want to continue?" : "Els vostres fitxers estan encriptats. Si no heu habilitat la clau de recuperació no hi haurà manera de recuperar les dades després que reestabliu la contrasenya.
Si sabeu què fer, contacteu amb l'administrador abans de continuar.
Voleu continuar?", "Ok" : "D'acord", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest 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." : "La carpeta de dades i els vostres fitxers probablement són accessibles des d'Internet. El fitxer .htaccess no funciona. Us recomanem que configureu el servidor web de tal manera que la carpeta de dades no sigui accessible o que moveu la carpeta de dades fora de l'arrel de documents del servidor web.", @@ -256,8 +314,16 @@ OC.L10N.register( "can edit" : "pot editar", "can create" : "pot crear", "can change" : "pot canviar", - "can delete" : "Pot esborrar", + "can delete" : "pot esborrar", "access control" : "control d'accés", + "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "Compartir amb gent a altres servidors utilitzant els seus ID de núvol federats usuari@exemple.com/nextcloud", + "Share with users or by mail..." : "Comparteix amb usuaris o per correu...", + "Share with users or remote users..." : "Comparteix amb usuaris o usuaris remots ...", + "Share with users, remote users or by mail..." : "Comparteix amb usuaris, usuaris remots o per correu...", + "Share with users or groups..." : "Comparteix amb usuaris o grups...", + "Share with users, groups or by mail..." : "Comparteix amb usuaris, grups o per correu...", + "Share with users, groups or remote users..." : "Comparteix amb usuaris, grups o usuaris remots...", + "Share with users, groups, remote users or by mail..." : "Comparteix amb usuaris, grups, usuaris remots o per correu...", "Share with users..." : "Comparteix amb usuaris...", "The object type is not specified." : "No s'ha especificat el tipus d'objecte.", "Enter new" : "Escriu nou", @@ -265,6 +331,7 @@ OC.L10N.register( "Edit tags" : "Edita etiquetes", "Error loading dialog template: {error}" : "Error en carregar la plantilla de diàleg: {error}", "No tags selected for deletion." : "No heu seleccionat les etiquetes a eliminar.", + "The update was successful. Redirecting you to Nextcloud now." : "L'actualització ha estat exitosa. Redirigint al teu Nextcloud.", "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Ei,\n\nnomés fer-te saber que %s ha compartit %s amb tu.\nMira-ho a: %s\n\n", "The share will expire on %s." : "La compartició venç el %s.", "Cheers!" : "Salut!", @@ -272,6 +339,7 @@ OC.L10N.register( "Use the following link to reset your password: {link}" : "Useu l'enllaç següent per restablir la contrasenya: {link}", "Hey there,

just letting you know that %s shared %s with you.
View it!

" : "Ei,

només fer-vos saber que %s us ha comparti %s.
Mireu-ho!", "This Nextcloud instance is currently in single user mode." : "La instància Nextcloud està en mode d'usuari únic.", - "This means only administrators can use the instance." : "Això significa que només els administradors poden usar la instància." + "This means only administrators can use the instance." : "Això significa que només els administradors poden usar la instància.", + "Please use the command line updater because you have a big instance." : "Si us plau, utilitza l'actualització per línia de comandes perquè tens una instància gran." }, "nplurals=2; plural=(n != 1);"); diff --git a/core/l10n/ca.json b/core/l10n/ca.json index 6d88bd21ff..ff7af7846f 100644 --- a/core/l10n/ca.json +++ b/core/l10n/ca.json @@ -1,7 +1,7 @@ { "translations": { "Please select a file." : "Seleccioneu un fitxer.", "File is too big" : "El fitxer és massa gran", - "The selected file is not an image." : "El fitxer seleccionat no és una imatge", + "The selected file is not an image." : "El fitxer seleccionat no és una imatge.", "The selected file cannot be read." : "El fitxer seleccionat no es pot llegir.", "Invalid file provided" : "El fitxer proporcionat no és vàlid", "No image or file provided" : "No s'han proporcionat imatges o fitxers", @@ -18,23 +18,30 @@ "Couldn't reset password because the token is expired" : "No es pot restablir la contrasenya perquè el testimoni ha vençut", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "No s'ha pogut enviar correu de restabliment. No hi ha correu per aquest compte. Contacteu amb l'administrador.", "Password reset" : "Canvi de contrasenya", + "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Prem el següent botó per reinicialitzar la teva contrasenya. Si no has sol·licitat un canvi de contrasenya, ignora aquest correu.", + "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Feu clic al següent enllaç per restablir la contrasenya. Si no sol·liciteu la reinicialització de contrasenya, llavors ignoreu aquest correu electrònic.", "Reset your password" : "Canvia la teva contrasenya", "%s password reset" : "restableix la contrasenya %s", "Couldn't send reset email. Please contact your administrator." : "No s'ha pogut restablir el correu. Contacteu amb l'administrador.", "Couldn't send reset email. Please make sure your username is correct." : "No s'ha pogut enviar el correu de restabliment. Assegureu-vos que el vostre nom d'usuari és correcte.", "Preparing update" : "Preparant l'actualització", "[%d / %d]: %s" : "[%d / %d]: %s", - "Repair warning: " : "Advertiment de reparació:", - "Repair error: " : "Error de reparació:", + "Repair warning: " : "Advertiment de reparació: ", + "Repair error: " : "Error de reparació: ", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Utilitzeu l’actualitzador de línia de comandes perquè l'actualització automàtica està deshabilitada en el config.php.", "[%d / %d]: Checking table %s" : "[%d / %d]: Revisant la taula %s", "Turned on maintenance mode" : "Activat el mode de manteniment", "Turned off maintenance mode" : "Desactivat el mode de manteniment", "Maintenance mode is kept active" : "El mode de manteniment es manté activat", "Updating database schema" : "Actualitzant l'esquema de la base de dades", "Updated database" : "Actualitzada la base de dades", + "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Comprovar si l'esquema de base de dades es pot actualitzar (això pot trigar temps segons la mida de la base de dades)", "Checked database schema update" : "S'ha comprobat l'actualització de l'esquema de la base de dades", "Checking updates of apps" : "Comprovant les actualitzacions d'aplicacions", + "Checking for update of app \"%s\" in appstore" : "Comprovant les actualitzacions de l'aplicació \"%s\" al repositori", "Update app \"%s\" from appstore" : "Actualitza l'aplicació \"%s\" del repositori", + "Checked for update of app \"%s\" in appstore" : "Comprovades les actualitzacions de l'aplicació \"%s\" al repositori", + "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Comprovar si l'esquema de base de dades per %s pot ser actualitzat (això pot trigar temps segons la mida de la base de dades)", "Checked database schema update for apps" : "S'ha comprobat l'actualització de l'esquema de la base de dades per les apps", "Updated \"%s\" to %s" : "Actualitzat \"%s\" a %s", "Set log level to debug" : "Modifica el nivell de registre a depuració", @@ -45,15 +52,18 @@ "%s (incompatible)" : "%s (incompatible)", "Following apps have been disabled: %s" : "Les aplicacions següents s'han deshabilitat: %s", "Already up to date" : "Ja actualitzat", + "Search contacts …" : "Cerca contactes …", "No contacts found" : "No s'han trobat contactes", - "Show all contacts …" : "Mostra tots els contactes...", + "Show all contacts …" : "Mostra tots els contactes …", "There was an error loading your contacts" : "Hi ha hagut un error al carregar els teus contactes", - "Loading your contacts …" : "Carregant els teus contactes...", + "Loading your contacts …" : "Carregant els teus contactes …", "Looking for {term} …" : "Buscant {term} …", + "There were problems with the code integrity check. More information…" : "Hi ha hagut problemes amb la comprovació d'integritat del codi. Més informació…", "No action available" : "Cap acció disponible", "Error fetching contact actions" : "Error al carregar les accions del contacte", "Settings" : "Configuració", "Connection to server lost" : "S'ha perdut la connexió amb el servidor", + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problemes carregant la pagina, recarregant en 1%n segon","Problemes carregant la pagina, recarregant en 1%n segons"], "Saving..." : "Desant...", "Dismiss" : "Rebutja", "This action requires you to confirm your password" : "Aquesta acció requereix que confirmis la teva contrasenya", @@ -61,9 +71,11 @@ "Password" : "Contrasenya", "Cancel" : "Cancel·la", "Confirm" : "Confirma", + "Failed to authenticate, try again" : "Error d'autenticació, torna-ho a intentar", "seconds ago" : "segons enrere", - "Logging in …" : "Accedint a...", + "Logging in …" : "Accedint a …", "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator." : "L'enllaç per reiniciar la vostra contrasenya s'ha enviat al vostre correu. Si no el rebeu en un temps raonable comproveu les carpetes de spam.
Si no és allà, pregunteu a l'administrador local.", + "Your files are encrypted. There will be no way to get your data back after your password is reset.
If you are not sure what to do, please contact your administrator before you continue.
Do you really want to continue?" : "Els vostres fitxers estan encriptats. No hi haurà manera de recuperar les dades després que reestabliu la contrasenya.
Si no esteu segurs del que feu, contacteu amb l'administrador abans de continuar.
Voleu continuar?", "I know what I'm doing" : "Sé el que faig", "Password can not be changed. Please contact your administrator." : "La contrasenya no es pot canviar. Contacteu amb l'administrador.", "No" : "No", @@ -73,7 +85,7 @@ "Error loading file picker template: {error}" : "Error en carregar la plantilla de càrrega de fitxers: {error}", "OK" : "D'acord", "Error loading message template: {error}" : "Error en carregar la plantilla de missatge: {error}", - "read-only" : "Només de lectura", + "read-only" : "només de lectura", "_{count} file conflict_::_{count} file conflicts_" : ["{count} conflicte de fitxer","{count} conflictes de fitxer"], "One file conflict" : "Un fitxer en conflicte", "New Files" : "Fitxers nous", @@ -91,8 +103,21 @@ "Good password" : "Contrasenya bona", "Strong password" : "Contrasenya forta", "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "El servidor web no està configurat correctament per permetre la sincronització de fitxers perquè la interfície WebDAV sembla no funcionar correctament.", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our documentation." : "El teu servidor web no està configurat correctament per resoldre \"{url}\". Trobareu més informació a la nostra documentació.", + "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Aquest servidor no té cap connexió a Internet operativa: múltiples punts finals no es van poder contactar. Això significa que algunes de les funcions com muntatge d'emmagatzematge extern, notificacions sobre les actualitzacions o instal·lació d'apps de terceres parts no funcionarà. L’accés remot a arxius i l’enviament d'e-mail de notificació podrien no funcionar tampoc. Suggerim habilitar la connexió a Internet per a aquest servidor si voleu tenir tota la funcionalitat.", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our documentation." : "No s’ha configurat cap memòria cau. Per millorar el seu rendiment configureu un memcache si està disponible. Trobareu més informació a la nostra documentació.", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our documentation." : "/dev/urandom no és llegible per PHP que no és gens recomenable per motius de seguretat. Trobareu més informació a la nostra documentació.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by the PHP Group as soon as your distribution supports it." : "Actualment esteu executant PHP {version}. Us animem a actualitzar la versió de PHP que feu servir per tenir avantatge d’actualitzacions de rendiment i seguretat proporcionats pel PHP Group tan aviat com ho suporti la vostra distribució.", + "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our documentation." : "La configuració de les capçaleres del proxi invers és incorrecta o estàs accedint a Nextcloud des d'un proxy de confiança. Si no estàs accedint a Nextcloud des d'un proxy de confiança, això és un risc de seguretat i pot permetre a un atacant suplantar la teva adreça d'IP com visible a Nextcloud. Trobareu més informació a la nostra documentació.", + "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 memcached wiki about both modules." : "Memcached es configura com a una memoria cau distribuïda, però s’ha instal·lat el mòdul erroni de PHP \"memcache\". \\OC\\Memcache\\Memcached només dóna suport a “memcached\" i no \"memcache\". Mireu el wiki de memcached sobre ambdós mòduls.", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our documentation. (List of invalid files… / Rescan…)" : "Alguns fitxers no han passat la comprovació d'integritat. Trobareu més informació sobre com resoldre aquest assumpte a la nostra documentació. (Llista de fitxers no vàlids... / Reescannejar...)", + "The PHP OPcache is not properly configured. For better performance we recommend to use following settings in the php.ini:" : "La OPcache de PHP no està configurada correctament. Per millor rendiment recomanem utilitzar-la seguint la configuració en el php.ini:", + "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "La funció PHP \"set_time_limit\" no està disponible. Això podria resultar en scripts que s’aturin a mig execució, trencant la instal·lació. Us recomanem activar aquesta funció.", "Error occurred while checking server setup" : "Hi ha hagut un error en comprovar la configuració del servidor", - "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our security tips." : "Esteu accedint aquesta web a través de HTTP. Us recomanem que configureu el servidor per requerir HTTPS tal i com es descriu als consells de seguretat", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "El teu directori de dades i fitxers són probablement accessibles des d'Internet. L'arxiu .htaccess no està funcionant. Es recomana que configureu el servidor web de manera que el directori de dades no estigui accessible o moure el directori de dades fora de l'arrel de document de servidor de web.", + "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "L'encapçalament “{header}” HTTP no està configurat per ser igual a “{expected}”. Aquest és un potencial risc de seguretat o privacitat, i es recomana ajustar aquesta configuració.", + "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our security tips." : "La capçalera HTTP “Strict-Transport-Security” no està configurada a un mínim de “{seconds}” segons. Per millor seguretat recomanem permetre HSTS com es descriu en els nostres consells de seguretat.", + "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our security tips." : "Esteu accedint aquesta web a través de HTTP. Us recomanem que configureu el servidor per requerir HTTPS tal i com es descriu als consells de seguretat.", "Shared" : "Compartit", "Shared with {recipients}" : "Compartit amb {recipients}", "Error setting expiration date" : "Error en establir la data de venciment", @@ -101,6 +126,7 @@ "Expiration" : "Expiració", "Expiration date" : "Data de venciment", "Choose a password for the public link" : "Escolliu una contrasenya per l'enllaç públic", + "Choose a password for the public link or press the \"Enter\" key" : "Escolliu una contrasenya per l'enllaç públic o premeu la tecla \"Enter\"", "Copied!" : "Copiat!", "Copy" : "Copia", "Not supported!" : "No soportat!", @@ -120,10 +146,11 @@ "Shared with you and the group {group} by {owner}" : "Compartit amb vos i amb el grup {group} per {owner}", "Shared with you by {owner}" : "Compartit amb vos per {owner}", "Choose a password for the mail share" : "Escolliu una contrasenya pel mail de compartició", + "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartit per enllaç", "group" : "grup", "remote" : "remot", "email" : "email", - "shared by {sharer}" : "Compartit per {sharer}", + "shared by {sharer}" : "compartit per {sharer}", "Unshare" : "Deixa de compartir", "Can reshare" : "Pot recompartir", "Can edit" : "Pot editar", @@ -133,17 +160,27 @@ "Access control" : "Control d'accés", "Could not unshare" : "No pot descompartir", "Error while sharing" : "Error en compartir", + "Share details could not be loaded for this item." : "No s'han pogut carregar els detalls de compartició de l'element.", + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Com a mínim cal {count} caràcter per a l'autocompletat","Com a mínim calen {count} caràcters per a l'autocompletat"], + "This list is maybe truncated - please refine your search term to see more results." : "Aquesta llista potser està truncada - refineu el vostre terme de cerca per veure més resultats.", + "No users or groups found for {search}" : "No s'han trobat usuaris ni grups per {search}", "No users found for {search}" : "No s'han trobat usuaris per {search}", - "An error occurred. Please try again" : "S'ha produït un error. Si us plau, torni a intentar-ho.", + "An error occurred. Please try again" : "S'ha produït un error. Si us plau, torni a intentar-ho", "{sharee} (group)" : "{sharee} (grup)", "{sharee} (remote)" : "{sharee} (remot)", "{sharee} (email)" : "{sharee} (email)", "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", "Share" : "Comparteix", + "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Compartir amb altres persones introduint un usuari o grup, un ID de núvol federat o una adreça d’email.", + "Share with other people by entering a user or group or a federated cloud ID." : "Compartir amb altres persones introduint un usuari o grup o ID de núvol federat.", + "Share with other people by entering a user or group or an email address." : "Compartir amb altres persones introduint un usuari o grup o una adreça d’email.", "Name or email address..." : "Nom o adreça electrònica...", + "Name or federated cloud ID..." : "Nom o ID de Núvol Federat…", + "Name, federated cloud ID or email address..." : "Nom, ID de núvol federat o adreça d’email…", "Name..." : "Nom...", "Error" : "Error", "Error removing share" : "Error al treure compartició", + "Non-existing tag #{tag}" : "Etiqueta inexistent #{tag}", "restricted" : "restringit", "invisible" : "invisible", "({scope})" : "({scope})", @@ -156,13 +193,20 @@ "sunny" : "asolellat", "Hello {name}, the weather is {weather}" : "Hola {name}, el temps és {weather}", "Hello {name}" : "Hola {name}", - "new" : "Nou", - "_download %n file_::_download %n files_" : ["descarregar l'arxiu %n","descarregar arxius %n "], + "These are your search results" : "Aquests són els resultats de la cerca", + "new" : "nou", + "_download %n file_::_download %n files_" : ["descarregar l'arxiu %n","descarregar arxius %n"], + "The update is in progress, leaving this page might interrupt the process in some environments." : "L'actualització està en marxa, abandonar aquesta pàgina podria interrompre el procés en alguns entorns.", "Update to {version}" : "Actualitza a {version}", - "An error occurred." : "S'ha produït un error", + "An error occurred." : "S'ha produït un error.", "Please reload the page." : "Carregueu la pàgina de nou.", + "The update was unsuccessful. For more information check our forum post covering this issue." : "L'actualització no va tenir èxit. Per a més informació consulta la nostra nota al fòrum que cobreix aquest assumpte.", + "The update was unsuccessful. Please report this issue to the Nextcloud community." : "L'actualització no va tenir èxit. Si us plau reporti aquest assumpte a la comunitat Nextcloud.", "Continue to Nextcloud" : "Continua a Nextcloud", + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["L'actualització va ser reeixida. Redirigint a Nextcloud en %n segon.","L’actualització va ser reeixida. Redirigint a Nextcloud en %n segons."], "Searching other places" : "Buscant altres ubicacions", + "No search results in other folders for {tag}{filter}{endtag}" : "No hi ha resultats de la cerca en altres carpetes per {tag}{filter}{endtag}", + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} resultat de cerca en altres carpetes","{count} resultats de cerca en altres carpetes"], "Personal" : "Personal", "Users" : "Usuaris", "Apps" : "Aplicacions", @@ -178,7 +222,7 @@ "More details can be found in the server log." : "Pots trobar més detalls al llistat del servidor.", "Technical details" : "Detalls tècnics", "Remote Address: %s" : "Adreça remota: %s", - "Request ID: %s" : "Sol·licitud ID: %s ", + "Request ID: %s" : "Sol·licitud ID: %s", "Type: %s" : "Tipus: %s", "Code: %s" : "Codi: %s", "Message: %s" : "Missatge: %s", @@ -187,12 +231,13 @@ "Trace" : "Traça", "Security warning" : "Advertiment de seguretat", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "La carpeta de dades i els seus fitxers probablement són accessibles des d'internet perquè el fitxer .htaccess no funciona.", + "For information how to properly configure your server, please see the documentation." : "Per a informació sobre com configurar correctament el servidor, podeu consultar la documentació.", "Create an admin account" : "Crea un compte d'administrador", "Username" : "Nom d'usuari", "Storage & database" : "Emmagatzematge i base de dades", "Data folder" : "Carpeta de dades", "Configure the database" : "Configura la base de dades", - "Only %s is available." : "Només hi ha disponible %s", + "Only %s is available." : "Només hi ha disponible %s.", "Install and activate additional PHP modules to choose other database types." : "Instal·la i activa mòduls PHP addicionals per seleccionar altres tipus de bases de dades.", "For more details check out the documentation." : "Per més detalls consulteu la documentació.", "Database user" : "Usuari de la base de dades", @@ -200,20 +245,23 @@ "Database name" : "Nom de la base de dades", "Database tablespace" : "Espai de taula de la base de dades", "Database host" : "Ordinador central de la base de dades", + "Please specify the port number along with the host name (e.g., localhost:5432)." : "Si us plau, especifiqueu el nombre de port juntament amb el nom de servidor (per exemple, localhost:5432).", "Performance warning" : "Alerta de rendiment", "SQLite will be used as database." : "SQLite s'utilitzarà com a base de dades.", "For larger installations we recommend to choose a different database backend." : "Per a instal·lacions més grans es recomana triar una base de dades diferent.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "L'ús de SQLite està desaconsellat especialment quan s'usa el client d'escriptori per sincronitzar els fitxers.", "Finish setup" : "Acaba la configuració", - "Finishing …" : "Acabant...", + "Finishing …" : "Acabant …", "Need help?" : "Necessites ajuda?", "See the documentation" : "Consulti la documentació", "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Aquesta aplicació requereix Javascript per al seu correcte funcionament . Per favor, {linkstart}habiliti Javascript{linkend} i torni a carregar la pàgina.", "More apps" : "Més aplicacions", "Search" : "Cerca", + "This action requires you to confirm your password:" : "Aquesta acció necessita que confirmis la teva contrasenya:", "Confirm your password" : "Confirma la teva contrasenya", "Server side authentication failed!" : "L'autenticació del servidor ha fallat!", "Please contact your administrator." : "Contacteu amb l'administrador.", + "An internal error occurred." : "S'ha produït un error intern.", "Please try again or contact your administrator." : "Intenti-ho de nou o posi's en contacte amb el seu administrador.", "Username or email" : "Nom d'usuari o correu electrònic", "Wrong password. Reset it?" : "Contrasenya incorrecta. Voleu restablir-la?", @@ -221,31 +269,41 @@ "Log in" : "Inici de sessió", "Stay logged in" : "Mantén la sessió connectada", "Alternative Logins" : "Acreditacions alternatives", + "You are about to grant \"%s\" access to your %s account." : "Estàs a punt de concedir accés \"%s\" al teu %s compte.", "App token" : "Testimoni d'aplicació", - "Redirecting …" : "Redirigint...", + "Alternative login using app token" : "Acreditació alternativa utilitzat testimoni d'aplicació", + "Redirecting …" : "Redirigint …", "New password" : "Contrasenya nova", "New Password" : "Contrasenya nova", "Reset password" : "Reinicialitza la contrasenya", "Two-factor authentication" : "Segon factor d'autenticació", + "Enhanced security is enabled for your account. Please authenticate using a second factor." : "La seguretat millorada està habilitada per al vostre compte. Si us plau autentica’t amb un segon factor.", "Cancel log in" : "Cancel·la l'accés a", "Use backup code" : "Utilitza un codi de copia de seguretat", - "You are accessing the server from an untrusted domain." : "Esteu accedint al servidor des d'un domini no fiable", + "Error while validating your second factor" : "Error al validar el segon factor d'autenticació", + "You are accessing the server from an untrusted domain." : "Esteu accedint al servidor des d'un domini no fiable.", + "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Contacteu amb l'administrador. Si ets un administrador d'aquesta instància, configurar la opció \"trusted_domains\" en config/config.php. Config/config.sample.php ofereix una configuració d'exemple.", "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "En funció de la teva configuració, com a administrador podries utilitzar el botó d'abaix per confiar en aquest domini.", "Add \"%s\" as trusted domain" : "Afegeix \"%s\" com a domini de confiança", "App update required" : "Cal que actualitzeu la aplicació", "%s will be updated to version %s" : "%s s'actualitzarà a la versió %s", "These apps will be updated:" : "Aquestes aplicacions s'actualitzaran:", "These incompatible apps will be disabled:" : "Aquestes aplicacions incompatibles es desactivaran:", - "The theme %s has been disabled." : "S'ha desactivat el tema %s", + "The theme %s has been disabled." : "S'ha desactivat el tema %s.", "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Assegureu-vos que heu fet una còpia de seguretat de la base de dades, del fitxer de configuració i de la carpeta de dades abans de continuar.", "Start update" : "Inicia l'actualització", - "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Per evitar que s'esgoti el temps d'espera en instalacions grans, pots en el seu lloc fer córrer la següent comanda en el directori d'instalació. ", + "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Per evitar que s'esgoti el temps d'espera en instalacions grans, pots en el seu lloc fer córrer la següent comanda en el directori d'instalació:", "Detailed logs" : "Registres detallats", "Update needed" : "Actualització necessaria", + "Please use the command line updater because you have a big instance with more than 50 users." : "Utilitzeu l'updater de línia de comandes perquè tens un gran instància amb més de 50 usuàries.", + "For help, see the documentation." : "Per obtenir ajuda, mira la documentació.", + "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sé que si continuo fent l'actualització mitjançant l’interfície d’usuari web té el risc que la sol·licitud esgoti un temps d'espera, que podria causa pèrdua de dades, però tinc una còpia de seguretat i se com restaurar la meva instància en cas de fallada.", + "Upgrade via web on my own risk" : "Actualitza via web sota la teva responsabilitat", "This %s instance is currently in maintenance mode, which may take a while." : "Aquesta instància %s està actualment en manteniment i podria trigar una estona.", "This page will refresh itself when the %s instance is available again." : "Aquesta pàgina s'actualitzarà automàticament quan la instància %s estigui disponible de nou.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Contacteu amb l'administrador del sistema si aquest missatge persisteix o apareix inesperadament.", "Thank you for your patience." : "Gràcies per la paciència.", + "Problem loading page, reloading in 5 seconds" : "Problemes carregant la pagina, recarregant en 5 segons", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.
If you are not sure what to do, please contact your administrator before you continue.
Do you really want to continue?" : "Els vostres fitxers estan encriptats. Si no heu habilitat la clau de recuperació no hi haurà manera de recuperar les dades després que reestabliu la contrasenya.
Si sabeu què fer, contacteu amb l'administrador abans de continuar.
Voleu continuar?", "Ok" : "D'acord", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest 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." : "La carpeta de dades i els vostres fitxers probablement són accessibles des d'Internet. El fitxer .htaccess no funciona. Us recomanem que configureu el servidor web de tal manera que la carpeta de dades no sigui accessible o que moveu la carpeta de dades fora de l'arrel de documents del servidor web.", @@ -254,8 +312,16 @@ "can edit" : "pot editar", "can create" : "pot crear", "can change" : "pot canviar", - "can delete" : "Pot esborrar", + "can delete" : "pot esborrar", "access control" : "control d'accés", + "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "Compartir amb gent a altres servidors utilitzant els seus ID de núvol federats usuari@exemple.com/nextcloud", + "Share with users or by mail..." : "Comparteix amb usuaris o per correu...", + "Share with users or remote users..." : "Comparteix amb usuaris o usuaris remots ...", + "Share with users, remote users or by mail..." : "Comparteix amb usuaris, usuaris remots o per correu...", + "Share with users or groups..." : "Comparteix amb usuaris o grups...", + "Share with users, groups or by mail..." : "Comparteix amb usuaris, grups o per correu...", + "Share with users, groups or remote users..." : "Comparteix amb usuaris, grups o usuaris remots...", + "Share with users, groups, remote users or by mail..." : "Comparteix amb usuaris, grups, usuaris remots o per correu...", "Share with users..." : "Comparteix amb usuaris...", "The object type is not specified." : "No s'ha especificat el tipus d'objecte.", "Enter new" : "Escriu nou", @@ -263,6 +329,7 @@ "Edit tags" : "Edita etiquetes", "Error loading dialog template: {error}" : "Error en carregar la plantilla de diàleg: {error}", "No tags selected for deletion." : "No heu seleccionat les etiquetes a eliminar.", + "The update was successful. Redirecting you to Nextcloud now." : "L'actualització ha estat exitosa. Redirigint al teu Nextcloud.", "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Ei,\n\nnomés fer-te saber que %s ha compartit %s amb tu.\nMira-ho a: %s\n\n", "The share will expire on %s." : "La compartició venç el %s.", "Cheers!" : "Salut!", @@ -270,6 +337,7 @@ "Use the following link to reset your password: {link}" : "Useu l'enllaç següent per restablir la contrasenya: {link}", "Hey there,

just letting you know that %s shared %s with you.
View it!

" : "Ei,

només fer-vos saber que %s us ha comparti %s.
Mireu-ho!", "This Nextcloud instance is currently in single user mode." : "La instància Nextcloud està en mode d'usuari únic.", - "This means only administrators can use the instance." : "Això significa que només els administradors poden usar la instància." + "This means only administrators can use the instance." : "Això significa que només els administradors poden usar la instància.", + "Please use the command line updater because you have a big instance." : "Si us plau, utilitza l'actualització per línia de comandes perquè tens una instància gran." },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js index 544969405c..0ba52b2baf 100644 --- a/core/l10n/de_DE.js +++ b/core/l10n/de_DE.js @@ -54,7 +54,7 @@ OC.L10N.register( "%s (incompatible)" : "%s (inkompatibel)", "Following apps have been disabled: %s" : "Die folgenden Apps wurden deaktiviert: %s", "Already up to date" : "Bereits aktuell", - "Search contacts …" : "…", + "Search contacts …" : "Kontakte suchen…", "No contacts found" : "Keine Kontakte gefunden", "Show all contacts …" : "Zeige alle Kontakte…", "There was an error loading your contacts" : "Fehler beim Laden Ihrer Kontakte", diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json index f34fa4dfaa..bdfca055c6 100644 --- a/core/l10n/de_DE.json +++ b/core/l10n/de_DE.json @@ -52,7 +52,7 @@ "%s (incompatible)" : "%s (inkompatibel)", "Following apps have been disabled: %s" : "Die folgenden Apps wurden deaktiviert: %s", "Already up to date" : "Bereits aktuell", - "Search contacts …" : "…", + "Search contacts …" : "Kontakte suchen…", "No contacts found" : "Keine Kontakte gefunden", "Show all contacts …" : "Zeige alle Kontakte…", "There was an error loading your contacts" : "Fehler beim Laden Ihrer Kontakte", diff --git a/core/l10n/el.js b/core/l10n/el.js index 67ad387b97..1c9e65c59e 100644 --- a/core/l10n/el.js +++ b/core/l10n/el.js @@ -13,11 +13,11 @@ OC.L10N.register( "No temporary profile picture available, try again" : "Δεν υπάρχει προσωρινή φωτογραφία προφίλ, δοκιμάστε ξανά", "No crop data provided" : "Δεν δόθηκαν δεδομένα περικοπής", "No valid crop data provided" : "Έχουν δοθεί μη έγκυρα δεδομένα περικοπής", - "Crop is not square" : "Η περικοπή δεν εχει τετραγωνικό σχήμα", + "Crop is not square" : "Η περικοπή δεν έχει τετράγωνο σχήμα", "State token does not match" : "Το αναγνωριστικό κατάστασης δεν ταιριάζει", "Password reset is disabled" : "Η επαναφορά συνθηματικού είναι απενεργοποιημένη", - "Couldn't reset password because the token is invalid" : "Αδυναμία επαναφοράς συνθηματικού λόγω μη έγκυρου διακριτικού", - "Couldn't reset password because the token is expired" : "Αδυναμία επαναφοράς συνθηματικού επειδή το διακριτικό έχει λήξει", + "Couldn't reset password because the token is invalid" : "Αδυναμία επαναφοράς συνθηματικού λόγω μη έγκυρου αναγνωριστικού", + "Couldn't reset password because the token is expired" : "Αδυναμία επαναφοράς συνθηματικού επειδή το αναγνωριστικό έχει λήξει", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Αδυναμία αποστολής ηλεκτρονικού μηνύματος επαναφοράς διότι δεν υπάρχει διεύθυνση ηλεκτρινικής αλληλογραφίας για αυτόν τον χρήστη. Παρακαλώ επικοινωνήστε με το διαχειριστή.", "Password reset" : "Επαναφορά συνθηματικού", "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Κάντε κλικ στο παρακάτω κουμπί για να επαναφέρετε το συνθηματικό σας. Εάν δεν αιτηθήκατε επαναφορά συνθηματικού, αγνοήστε αυτό το μήνυμα αλληλογραφίας.", @@ -40,12 +40,13 @@ OC.L10N.register( "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Έλεγχος αν η διάταξη της βάσης δεδομένων μπορεί να ενημερωθεί (αυτό μπορεί να πάρει αρκετή ώρα ανάλογα με το μέγεθος της βάσης δεδομένων)", "Checked database schema update" : "Έλεγχος ενημέρωσης διάταξης βάσης δεδομένων", "Checking updates of apps" : "Έλεγχος ενημερώσεων εφαρμογών", - "Checking for update of app \"%s\" in appstore" : "Έλεγχος για ενημέρωση της εφαρμογής \"%s\" στο κέτρο εφαρμογών", - "Update app \"%s\" from appstore" : "Ενημέρωση εφαρμογής \"%s\" από το κέντρο εφαρμογών", + "Checking for update of app \"%s\" in appstore" : "Έλεγχος για ενημέρωση της εφαρμογής \"%s\" στο App Store", + "Update app \"%s\" from appstore" : "Ενημέρωση εφαρμογής \"%s\" από το App Store", + "Checked for update of app \"%s\" in appstore" : "Έλεγχος ενημέρωσης εφαρμογής \" 1 %s \" στο App Store", "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Έλεγχος αν η διάταξη της βάσης δεδομένων για %s μπορεί να ενημερωθεί (αυτό μπορεί να πάρει αρκετή ώρα ανάλογα με το μέγεθος της βάσης δεδομένων)", "Checked database schema update for apps" : "Έλεγχος ενημέρωσης διάταξης βάσης δεδομένων για εφαρμογές", "Updated \"%s\" to %s" : "Ενημερώθηκε \"%s\" σε %s", - "Set log level to debug" : "Ορισμός επιπέδου ιστορικού για αποσφαλμάτωση", + "Set log level to debug" : "Ορισμός επιπέδου ιστορικού σε αποσφαλμάτωση", "Reset log level" : "Επαναφορά επιπέδου ιστορικού", "Starting code integrity check" : "Εκκίνηση ελέγχου ακεραιότητας του κώδικα", "Finished code integrity check" : "Ολοκληρώθηκε ο έλεγχος ακεραιότητας του κώδικα", @@ -53,6 +54,7 @@ OC.L10N.register( "%s (incompatible)" : "%s (ασύμβατη)", "Following apps have been disabled: %s" : "Οι ακόλουθες εφαρμογές έχουν απενεργοποιηθεί: %s", "Already up to date" : "Ήδη ενημερωμένο", + "Search contacts …" : "Αναζήτηση επαφών ...", "No contacts found" : "Δεν βρέθηκαν επαφές", "Show all contacts …" : "Εμφάνιση όλων των επαφών ...", "There was an error loading your contacts" : "Υπήρξε σφάλμα κατά την φόρτωση των επαφών σας", @@ -74,7 +76,7 @@ OC.L10N.register( "Failed to authenticate, try again" : "Αποτυχία πιστοποίησης, δοκιμάστε πάλι", "seconds ago" : "δευτερόλεπτα πριν", "Logging in …" : "Σύνδεση ...", - "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator." : "Ο σύνδεσμος για την επαναφορά του συνθηματικού σας απεστάλη με ηλεκτρονικό ταχυδρομείο. Εάν δεν το παραλάβετε μέσα σε ένα εύλογο χρονικό διάστημα, ελέγξτε το φάκελο ανεπιθύμητων μηνυμάτων σας.
Εάν δεν βρίσκεται εκεί ρωτήστε τον διαχειριστή.", + "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator." : "Ο σύνδεσμος για την επαναφορά του συνθηματικού σας απεστάλη στο ηλ. ταχυδρομείο σας. Εάν δεν το παραλάβετε μέσα σε ένα εύλογο χρονικό διάστημα, ελέγξτε το φάκελο ανεπιθύμητων μηνυμάτων σας.
Εάν δεν βρίσκεται εκεί ρωτήστε τον διαχειριστή σας.", "Your files are encrypted. There will be no way to get your data back after your password is reset.
If you are not sure what to do, please contact your administrator before you continue.
Do you really want to continue?" : "Τα αρχεία σας είναι κρυπτογραφημένα. Δεν θα υπάρξει κανένας τρόπος για να έχετε πρόσβαση στα δεδομένα σας μετά την επαναφορά του συνθηματικού σας.
Αν δεν είστε σίγουροι για το τι πρέπει να κάνετε, επικοινωνήστε με το διαχειριστή, πριν να συνεχίσετε.
Θέλετε να συνεχίσετε;", "I know what I'm doing" : "Γνωρίζω τι κάνω", "Password can not be changed. Please contact your administrator." : "Το συνθηματικό σας δεν μπορεί να αλλάξει. Παρακαλώ επικοινωνήστε με το διαχειριστή.", @@ -82,8 +84,8 @@ OC.L10N.register( "Yes" : "Ναι", "No files in here" : "Δεν υπάρχουν αρχεία", "Choose" : "Επιλέξτε", - "Error loading file picker template: {error}" : "Σφάλμα κατά την φόρτωση του προτύπου του επιλογέα αρχείων: {error}", - "OK" : "Εντάξει", + "Error loading file picker template: {error}" : "Σφάλμα κατά την φόρτωση του προτύπου επιλογέα αρχείων: {error}", + "OK" : "ΟΚ", "Error loading message template: {error}" : "Σφάλμα φόρτωσης προτύπου μηνυμάτων: {error}", "read-only" : "μόνο για ανάγνωση", "_{count} file conflict_::_{count} file conflicts_" : ["{count} αρχείο διαφέρει","{count} αρχεία είναι σε διένεξη"], @@ -109,8 +111,9 @@ OC.L10N.register( "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our documentation." : "Η συσκευή /dev/urandom δεν είναι αναγνώσιμη από την PHP κάτι που θα έπρεπε να μπορεί για λόγους ασφάλειας. Περισσότερες πληροφορίες μπορείτε να βρείτε στην τεκμηρίωση.", "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by the PHP Group as soon as your distribution supports it." : "Έχετε εγκατεστημένη έκδοση PHP {version}. Σας ενθαρρύνουμε να αναβαθμίσετε την έκδοση της PHP το συντομότερο δυνατόν που η διανομή σας το υποστηρίξει ώστε να εκμεταλλευτείτε τις επιδόσεις και τις ενημερώσεις ασφάλειας που παρέχονται από την ομάδα PHP .", "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 documentation." : "Η διαμόρφωση των reverse proxy headers είναι εσφαλμένη, ή έχετε πρόσβαση στο Nextcloud από έναν αξιόπιστο διαμεσολαβητή. Εάν δεν έχετε πρόσβαση στο Nextcloud από έναν αξιόπιστο διαμεσολαβητή, αυτό είναι ένα ζήτημα ασφαλείας και μπορείτε να επιτρέψετε σε κάποιον εισβολέα να παρουσιάσει την διεύθυνση IP του παραπλανητικά ως ορατή στο Nextcloud. Περισσότερες πληροφορίες μπορείτε να βρείτε στην τεκμηρίωση.", - "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 memcached wiki about both modules." : "Το Memcached είναι ρυθμισμένο ως κατανεμημένη λανθάνουσα μνήμη, αλλά είναι εγκατεστημένη το λάθος άρθρωμα \"memcache\" της PHP. Το \\OC\\Memcache\\Memcached υποστηρίζει μόνο τη \"memcached\" και όχι τη \"memcache\". Δείτε το memcached wiki και για τα δύο αρθρώματα.", + "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 memcached wiki about both modules." : "Το Memcached είναι ρυθμισμένο ως κατανεμημένη λανθάνουσα μνήμη, αλλά είναι εγκατεστημένο το λάθος άρθρωμα \"memcache\" της PHP. Το \\OC\\Memcache\\Memcached υποστηρίζει μόνο τη \"memcached\" και όχι τη \"memcache\". Δείτε το memcached wiki και για τα δύο αρθρώματα.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our documentation. (List of invalid files… / Rescan…)" : "Μερικά αρχεία δεν πέρασαν από τον έλεγχο της ακεραιότητας. Περισσότερες πληροφορίες για το πως να επιλύσετε πρόβλημα μπορείτε να βρείτε στην τεκμηρίωση. (Λίστα από μή έγκυρα αρχεία… / Σάρωση ξανά…)", + "The PHP OPcache is not properly configured. For better performance we recommend to use following settings in the php.ini:" : "H PHP OPcache δεν είναι σωστά διαμορφωμένη. Για καλύτερη απόδοση προτείνεταινα χρησιμοποιήσετε τις εξής ρυθμίσεις στο php.ini:", "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." : "Μη διαθέσιμη η λειτουργία της PHP \"set_time_limit\". Αυτό μπορεί να διακόψει την εκτέλεση των διαφόρων scripts με αποτέλεσμα να διακοπεί η εγκατάστασή σας. Σας συνιστούμε να ενεργοποιήσετε αυτή τη λειτουργία.", "Error occurred while checking server setup" : "Παρουσιάστηκε σφάλμα κατά τον έλεγχο των ρυθμίσεων του διακομιστή σας", "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." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανόν προσβάσιμα από το διαδίκτυο. Το αρχείο .htaccess δεν λειτουργεί. Σας προτείνουμε να ρυθμίσετε το διακομιστή σας με τέτοιο τρόπο ώστε ο κατάλογος δεδομένων να μην είναι πλέον προσβάσιμος ή να μετακινήσετε τον κατάλογο δεδομένων εκτός του ριζικού καταλόγου εγγράφων του διακομιστή.", @@ -125,6 +128,7 @@ OC.L10N.register( "Expiration" : "Λήξη", "Expiration date" : "Ημερομηνία λήξης", "Choose a password for the public link" : "Επιλέξτε συνθηματικό για τον δημόσιο σύνδεσμο", + "Choose a password for the public link or press the \"Enter\" key" : "Επιλέξτε ένα συνθηματικό για την δημόσια διεύθυνση ή πατήστε το \"Enter\" πλήκτρο", "Copied!" : "Αντιγράφτηκε!", "Copy" : "Αντιγραφή", "Not supported!" : "Δεν υποστηρίζεται!", @@ -134,11 +138,11 @@ OC.L10N.register( "Share to {name}" : "Διαμοιρασμός με {name}", "Share link" : "Διαμοιρασμός συνδέσμου", "Link" : "Σύνδεσμος", - "Password protect" : "Προστασία συνθηματικού", - "Allow editing" : "Επιτρέπεται η επεξεργασία", + "Password protect" : "Προστασία με συνθηματικό", + "Allow editing" : "Επέτρεψε την επεξεργασία", "Email link to person" : "Αποστολή συνδέσμου με email", "Send" : "Αποστολή", - "Allow upload and editing" : "Επιτρέπονται η μεταφόρτωση και η επεξεργασία", + "Allow upload and editing" : "Επέτρεψε την μεταφόρτωση και επεξεργασία", "Read only" : "Μόνο για ανάγνωση", "File drop (upload only)" : "Απόθεση αρχείου (μόνο μεταφόρτωση)", "Shared with you and the group {group} by {owner}" : "Διαμοιράστηκε με σας και με την ομάδα {group} του {owner}", @@ -160,7 +164,7 @@ OC.L10N.register( "Error while sharing" : "Σφάλμα κατά τον διαμοιρασμό", "Share details could not be loaded for this item." : "Αδυναμία φόρτωσης λεπτομερειών διαμοιρασμού για αυτό το αντικείμενο.", "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Απαιτείται τουλάχιστο {count} χαρακτήρας για αυτόματη συμπλήρωση","Απαιτούνται τουλάχιστο {count} χαρακτήρες για αυτόματη συμπλήρωση"], - "This list is maybe truncated - please refine your search term to see more results." : "Αυτή η λίστα είναι ίσως περικοπεί - παρακαλούμε βελτιώσετε τους όρους αναζήτησης για περισσότερα αποτελέσματα.", + "This list is maybe truncated - please refine your search term to see more results." : "Αυτή η λίστα ίσως να έχει περικοπεί - παρακαλούμε βελτιώσετε τους όρους αναζήτησης για περισσότερα αποτελέσματα.", "No users or groups found for {search}" : "Δεν βρέθηκαν χρήστες ή ομάδες για την αναζήτηση {search}", "No users found for {search}" : "Δεν βρέθηκαν χρήστες για την αναζήτηση {search}", "An error occurred. Please try again" : "Παρουσιάστηκε σφάλμα. Παρακαλώ δοκιμάστε αργότερα", @@ -184,7 +188,7 @@ OC.L10N.register( "({scope})" : "({scope})", "Delete" : "Διαγραφή", "Rename" : "Μετονομασία", - "Collaborative tags" : "Συνεργατική ετικέτα", + "Collaborative tags" : "Συνεργατικές ετικέτες", "No tags found" : "Δεν βρέθηκαν ετικέτες", "unknown text" : "άγνωστο κείμενο", "Hello world!" : "Γεια σου κόσμε!", @@ -202,7 +206,7 @@ OC.L10N.register( "The update was unsuccessful. Please report this issue to the Nextcloud community." : "Μη επιτυχημένη ενημέρωση. Παρακαλούμε αναφέρετε αυτό το πρόβλημα στην κοινότητα Nextcloud.", "Continue to Nextcloud" : "Συνέχεια στον Nextcloud", "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Επιτυχημένη ενημέρωση. Θα γίνει ανακατεύθυνση στο Nextcloud σε %n δευτερόλεπτο.","Επιτυχημένη ενημέρωση. Θα γίνει ανακατεύθυνση στο Nextcloud σε %n δευτερόλεπτα."], - "Searching other places" : "Έρευνα σε άλλα σημεία.", + "Searching other places" : "Αναζήτηση σε άλλα σημεία.", "No search results in other folders for {tag}{filter}{endtag}" : "Κανένα αποτέλεσμα αναζήτησης σε άλλους φακέλους για {tag}{filter}{endtag}", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} αποτέλεσμα αναζήτησης σε άλλο φάκελο","{count} αποτελέσματα αναζήτησης σε άλλους φακέλους"], "Personal" : "Προσωπικά", @@ -220,15 +224,15 @@ OC.L10N.register( "More details can be found in the server log." : "Περισσότερες λεπτομέρειες μπορείτε να βρείτε στο αρχείο καταγραφής του διακομιστή.", "Technical details" : "Τεχνικές λεπτομέρειες", "Remote Address: %s" : "Απομακρυσμένη διεύθυνση: %s", - "Request ID: %s" : "Ταυτότητα αιτήματος: %s", + "Request ID: %s" : "ID αιτήματος: %s", "Type: %s" : "Τύπος: %s", - "Code: %s" : "Κωδικός: %s", + "Code: %s" : "Κώδικας: %s", "Message: %s" : "Μήνυμα: %s", "File: %s" : "Αρχείο: %s", "Line: %s" : "Γραμμή: %s", "Trace" : "Ανίχνευση", "Security warning" : "Προειδοποίηση ασφαλείας", - "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανό προσβάσιμα από το διαδίκτυο διότι δεν δουλεύει το αρχείο .htaccess.", + "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανό να είναι προσβάσιμα από το διαδίκτυο διότι δεν δουλεύει το αρχείο .htaccess.", "For information how to properly configure your server, please see the documentation." : "Για πληροφορίες πως μπορείτε να ρυθμίσετε σωστά τον διακομιστή, παρακαλούμε δείτε την τεκμηρίωση.", "Create an admin account" : "Δημιουργήστε έναν λογαριασμό διαχειριστή", "Username" : "Όνομα χρήστη", @@ -236,18 +240,18 @@ OC.L10N.register( "Data folder" : "Φάκελος δεδομένων", "Configure the database" : "Ρύθμιση της βάσης δεδομένων", "Only %s is available." : "Μόνο %s είναι διαθέσιμο.", - "Install and activate additional PHP modules to choose other database types." : "Εγκαταστήστε και ενεργοποιείστε επιπλέον αρθρώματα PHP για να επιλέξετε άλλους τύπους βάσεων δεδομένων.", + "Install and activate additional PHP modules to choose other database types." : "Εγκαταστήστε και ενεργοποιείστε επιπλέον αρθρώματα της PHP για να επιλέξετε άλλους τύπους βάσεων δεδομένων.", "For more details check out the documentation." : "Για περισσότερες πληροφορίες ανατρέξτε στην τεκμηρίωση.", "Database user" : "Χρήστης βάσης δεδομένων", "Database password" : "Συνθηματικό βάσης δεδομένων", "Database name" : "Όνομα βάσης δεδομένων", "Database tablespace" : "Κενά πινάκων βάσης δεδομένων", "Database host" : "Διακομιστής βάσης δεδομένων", - "Please specify the port number along with the host name (e.g., localhost:5432)." : "Παρακαλώ καθορίστε τον αριθμό της θύρας μαζί με το όνομα κεντρικού υπολογιστή (πχ localhost: 5432).", + "Please specify the port number along with the host name (e.g., localhost:5432)." : "Παρακαλώ καθορίστε τον αριθμό της θύρας μαζί με το όνομα διακομιστή (πχ localhost: 5432).", "Performance warning" : "Προειδοποίηση απόδοσης", "SQLite will be used as database." : "Η SQLite θα χρησιμοποιηθεί ως βάση δεδομένων.", "For larger installations we recommend to choose a different database backend." : "Για μεγαλύτερες εγκαταστάσεις συνιστούμε να επιλέξετε διαφορετικό σύστημα υποστήριξης βάσης δεδομένων.", - "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Ειδικά όταν χρησιμοποιείτε τον πελάτη για συγχρονισμό στον υπολογιστή σας, δεν συνίσταται η χρήση της SQLite.", + "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Ειδικά όταν χρησιμοποιείτε το λογισμικό για συγχρονισμό στον υπολογιστή σας, δεν συνίσταται η χρήση της SQLite.", "Finish setup" : "Ολοκλήρωση ρύθμισης", "Finishing …" : "Ολοκλήρωση...", "Need help?" : "Θέλετε βοήθεια;", @@ -257,7 +261,7 @@ OC.L10N.register( "Search" : "Αναζήτηση", "This action requires you to confirm your password:" : "Αυτή η ενέργεια απαιτεί επιβεβαίωση του συνθηματικού σας:", "Confirm your password" : "Επιβεβαίωση συνθηματικού", - "Server side authentication failed!" : "Αποτυχημένη πιστοποίηση από την πλευράς διακομιστή!", + "Server side authentication failed!" : "Αποτυχημένη πιστοποίηση από πλευράς διακομιστή!", "Please contact your administrator." : "Παρακαλούμε επικοινωνήστε με τον διαχειριστή.", "An internal error occurred." : "Παρουσιάστηκε ένα εσωτερικό σφάλμα.", "Please try again or contact your administrator." : "Παρακαλούμε δοκιμάστε ξανά ή επικοινωνήστε με τον διαχειριστή.", @@ -266,14 +270,15 @@ OC.L10N.register( "Wrong password." : "Λάθος συνθηματικό.", "Log in" : "Είσοδος", "Stay logged in" : "Μείνετε συνδεδεμένος", - "Alternative Logins" : "Εναλλακτικές συνδέσεις", + "Alternative Logins" : "Εναλλακτικές είσοδοι", + "You are about to grant \"%s\" access to your %s account." : "Πρόκειται να δώσετε δικαίωμα πρόσβασης%sστον%sλογαριασμό.", "App token" : "Διακριτικό εφαρμογής", "Alternative login using app token" : "Εναλλακτική είσοδος με την χρήση του διακριτικού της εφαρμογής", "Redirecting …" : "Γίνεται ανακατεύθυνση ...", "New password" : "Νέο συνθηματικό", - "New Password" : "Νέο συνθηματικό", + "New Password" : "Νέο Συνθηματικό", "Reset password" : "Επαναφορά συνθηματικού", - "Two-factor authentication" : "Πιστοποίηση με 2 παράγοντες", + "Two-factor authentication" : "Πιστοποίηση Δύο-Παραγόντων", "Enhanced security is enabled for your account. Please authenticate using a second factor." : "Έχει ενεργοποιηθεί βελτιωμένη ασφάλεια για τον λογαριασμό σας. Παρακαλώ πιστοποιήστε με την χρήση δεύτερου παράγοντα", "Cancel log in" : "Ακύρωση εισόδου", "Use backup code" : "Χρήση εφεδρικών κωδικών", @@ -294,14 +299,15 @@ OC.L10N.register( "Update needed" : "Απαιτείται ενημέρωση", "Please use the command line updater because you have a big instance with more than 50 users." : "Παρακαλούμε χρησιμοποιήστε την ενημέρωση μέσω γραμμής εντολών διότι έχετε μια μεγάλη εγκατάσταση με περισσότερους από 50 χρήστες.", "For help, see the documentation." : "Για βοήθεια, δείτε στην τεκμηρίωση.", - "Upgrade via web on my own risk" : "Αναβάθμιση μέσω δικτύου με δικιά μου ευθύνη", + "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." : "Γνωρίζω ότι συνεχίζοντας την ενημέρωση μέσω web UI αποτελεί ρίσκο, το χρονικό όριο του αιτήματος μπορεί να εξαντληθεί με συνέπεια το χάσιμο δεδομένων, αλλά έχω πραγματοποιήσει αντίγραφο ασφαλείας και γνωρίζω πως να κάνω αποκατάσταση σε περίπτωση αποτυχίας.", + "Upgrade via web on my own risk" : "Αναβάθμιση μέσω ιστού με δική μου ευθύνη", "This %s instance is currently in maintenance mode, which may take a while." : "Αυτή %s η εγκατάσταση είναι σε λειτουργία συντήρησης, η οποία μπορεί να διαρκέσει κάποιο χρόνο.", "This page will refresh itself when the %s instance is available again." : "Αυτή η σελίδα θα ανανεωθεί από μόνη της όταν η %s εγκατάσταση είναι διαθέσιμη ξανά.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Επικοινωνήστε με το διαχειριστή του συστήματος αν αυτό το μήνυμα συνεχίζει να εμφανίζεται ή εμφανίστηκε απρόσμενα.", "Thank you for your patience." : "Σας ευχαριστούμε για την υπομονή σας.", "Problem loading page, reloading in 5 seconds" : "Πρόβλημα φόρτωσης σελίδας, φόρτωση ξανά σε 5 λεπτά", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.
If you are not sure what to do, please contact your administrator before you continue.
Do you really want to continue?" : "Τα αρχεία σας είναι κρυπτογραφημένα. Εάν δεν έχετε ενεργοποιήσει το κλειδί επαναφοράς, δεν θα υπάρχει τρόπος να ανακτήσετε τα δεδομένα σας μετά την επαναφορά του συνθηματικού σας.
Εάν δεν είστε σίγουροι για το τι θα θέλατε να κάνετε, παρακαλώ επικοινωνήστε με το διαχειριστή σας πριν συνεχίσετε.
Θέλετε να συνεχίσετε;", - "Ok" : "Εντάξει", + "Ok" : "ΟΚ", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest 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." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανόν προσβάσιμα από το διαδίκτυο. Το αρχείο .htaccess δεν λειτουργεί. Σας προτείνουμε ανεπιφύλακτα να ρυθμίσετε το διακομιστή σας με τέτοιο τρόπο ώστε ο κατάλογος δεδομένων να μην είναι πλέον προσβάσιμος ή να μετακινήσετε τον κατάλογο δεδομένων εκτός του ριζικού καταλόγου εγγράφων του διακομιστή.", "Error while unsharing" : "Σφάλμα κατά την αναίρεση του διαμοιρασμού", "can reshare" : "δυνατότητα να διαμοιραστεί ξανά", @@ -333,7 +339,7 @@ OC.L10N.register( "Use the following link to reset your password: {link}" : "Χρησιμοποιήστε τον ακόλουθο σύνδεσμο για να επαναφέρετε το συνθηματικό: {link}", "Hey there,

just letting you know that %s shared %s with you.
View it!

" : "Γεια χαρά,

απλά σας ενημερώνω πως ο %s μοιράστηκε το%s με εσάς.
Δείτε το!

", "This Nextcloud instance is currently in single user mode." : "Αυτή η εγκατάσταση Nextcloud είναι τώρα σε κατάσταση ενός χρήστη.", - "This means only administrators can use the instance." : "Αυτό σημαίνει ότι μόνο διαχειριστές μπορούν να χρησιμοποιήσουν την εγκατάσταση.", + "This means only administrators can use the instance." : "Αυτό σημαίνει ότι μόνο οι διαχειριστές μπορούν να χρησιμοποιήσουν την εγκατάσταση.", "Please use the command line updater because you have a big instance." : "Παρακαλούμε χρησιμοποιήστε την ενημέρωση μέσω γραμμής εντολών διότι έχετε μεγάλη εγκατάσταση." }, "nplurals=2; plural=(n != 1);"); diff --git a/core/l10n/el.json b/core/l10n/el.json index 0471af680f..5e170a8e01 100644 --- a/core/l10n/el.json +++ b/core/l10n/el.json @@ -11,11 +11,11 @@ "No temporary profile picture available, try again" : "Δεν υπάρχει προσωρινή φωτογραφία προφίλ, δοκιμάστε ξανά", "No crop data provided" : "Δεν δόθηκαν δεδομένα περικοπής", "No valid crop data provided" : "Έχουν δοθεί μη έγκυρα δεδομένα περικοπής", - "Crop is not square" : "Η περικοπή δεν εχει τετραγωνικό σχήμα", + "Crop is not square" : "Η περικοπή δεν έχει τετράγωνο σχήμα", "State token does not match" : "Το αναγνωριστικό κατάστασης δεν ταιριάζει", "Password reset is disabled" : "Η επαναφορά συνθηματικού είναι απενεργοποιημένη", - "Couldn't reset password because the token is invalid" : "Αδυναμία επαναφοράς συνθηματικού λόγω μη έγκυρου διακριτικού", - "Couldn't reset password because the token is expired" : "Αδυναμία επαναφοράς συνθηματικού επειδή το διακριτικό έχει λήξει", + "Couldn't reset password because the token is invalid" : "Αδυναμία επαναφοράς συνθηματικού λόγω μη έγκυρου αναγνωριστικού", + "Couldn't reset password because the token is expired" : "Αδυναμία επαναφοράς συνθηματικού επειδή το αναγνωριστικό έχει λήξει", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Αδυναμία αποστολής ηλεκτρονικού μηνύματος επαναφοράς διότι δεν υπάρχει διεύθυνση ηλεκτρινικής αλληλογραφίας για αυτόν τον χρήστη. Παρακαλώ επικοινωνήστε με το διαχειριστή.", "Password reset" : "Επαναφορά συνθηματικού", "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Κάντε κλικ στο παρακάτω κουμπί για να επαναφέρετε το συνθηματικό σας. Εάν δεν αιτηθήκατε επαναφορά συνθηματικού, αγνοήστε αυτό το μήνυμα αλληλογραφίας.", @@ -38,12 +38,13 @@ "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Έλεγχος αν η διάταξη της βάσης δεδομένων μπορεί να ενημερωθεί (αυτό μπορεί να πάρει αρκετή ώρα ανάλογα με το μέγεθος της βάσης δεδομένων)", "Checked database schema update" : "Έλεγχος ενημέρωσης διάταξης βάσης δεδομένων", "Checking updates of apps" : "Έλεγχος ενημερώσεων εφαρμογών", - "Checking for update of app \"%s\" in appstore" : "Έλεγχος για ενημέρωση της εφαρμογής \"%s\" στο κέτρο εφαρμογών", - "Update app \"%s\" from appstore" : "Ενημέρωση εφαρμογής \"%s\" από το κέντρο εφαρμογών", + "Checking for update of app \"%s\" in appstore" : "Έλεγχος για ενημέρωση της εφαρμογής \"%s\" στο App Store", + "Update app \"%s\" from appstore" : "Ενημέρωση εφαρμογής \"%s\" από το App Store", + "Checked for update of app \"%s\" in appstore" : "Έλεγχος ενημέρωσης εφαρμογής \" 1 %s \" στο App Store", "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Έλεγχος αν η διάταξη της βάσης δεδομένων για %s μπορεί να ενημερωθεί (αυτό μπορεί να πάρει αρκετή ώρα ανάλογα με το μέγεθος της βάσης δεδομένων)", "Checked database schema update for apps" : "Έλεγχος ενημέρωσης διάταξης βάσης δεδομένων για εφαρμογές", "Updated \"%s\" to %s" : "Ενημερώθηκε \"%s\" σε %s", - "Set log level to debug" : "Ορισμός επιπέδου ιστορικού για αποσφαλμάτωση", + "Set log level to debug" : "Ορισμός επιπέδου ιστορικού σε αποσφαλμάτωση", "Reset log level" : "Επαναφορά επιπέδου ιστορικού", "Starting code integrity check" : "Εκκίνηση ελέγχου ακεραιότητας του κώδικα", "Finished code integrity check" : "Ολοκληρώθηκε ο έλεγχος ακεραιότητας του κώδικα", @@ -51,6 +52,7 @@ "%s (incompatible)" : "%s (ασύμβατη)", "Following apps have been disabled: %s" : "Οι ακόλουθες εφαρμογές έχουν απενεργοποιηθεί: %s", "Already up to date" : "Ήδη ενημερωμένο", + "Search contacts …" : "Αναζήτηση επαφών ...", "No contacts found" : "Δεν βρέθηκαν επαφές", "Show all contacts …" : "Εμφάνιση όλων των επαφών ...", "There was an error loading your contacts" : "Υπήρξε σφάλμα κατά την φόρτωση των επαφών σας", @@ -72,7 +74,7 @@ "Failed to authenticate, try again" : "Αποτυχία πιστοποίησης, δοκιμάστε πάλι", "seconds ago" : "δευτερόλεπτα πριν", "Logging in …" : "Σύνδεση ...", - "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator." : "Ο σύνδεσμος για την επαναφορά του συνθηματικού σας απεστάλη με ηλεκτρονικό ταχυδρομείο. Εάν δεν το παραλάβετε μέσα σε ένα εύλογο χρονικό διάστημα, ελέγξτε το φάκελο ανεπιθύμητων μηνυμάτων σας.
Εάν δεν βρίσκεται εκεί ρωτήστε τον διαχειριστή.", + "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator." : "Ο σύνδεσμος για την επαναφορά του συνθηματικού σας απεστάλη στο ηλ. ταχυδρομείο σας. Εάν δεν το παραλάβετε μέσα σε ένα εύλογο χρονικό διάστημα, ελέγξτε το φάκελο ανεπιθύμητων μηνυμάτων σας.
Εάν δεν βρίσκεται εκεί ρωτήστε τον διαχειριστή σας.", "Your files are encrypted. There will be no way to get your data back after your password is reset.
If you are not sure what to do, please contact your administrator before you continue.
Do you really want to continue?" : "Τα αρχεία σας είναι κρυπτογραφημένα. Δεν θα υπάρξει κανένας τρόπος για να έχετε πρόσβαση στα δεδομένα σας μετά την επαναφορά του συνθηματικού σας.
Αν δεν είστε σίγουροι για το τι πρέπει να κάνετε, επικοινωνήστε με το διαχειριστή, πριν να συνεχίσετε.
Θέλετε να συνεχίσετε;", "I know what I'm doing" : "Γνωρίζω τι κάνω", "Password can not be changed. Please contact your administrator." : "Το συνθηματικό σας δεν μπορεί να αλλάξει. Παρακαλώ επικοινωνήστε με το διαχειριστή.", @@ -80,8 +82,8 @@ "Yes" : "Ναι", "No files in here" : "Δεν υπάρχουν αρχεία", "Choose" : "Επιλέξτε", - "Error loading file picker template: {error}" : "Σφάλμα κατά την φόρτωση του προτύπου του επιλογέα αρχείων: {error}", - "OK" : "Εντάξει", + "Error loading file picker template: {error}" : "Σφάλμα κατά την φόρτωση του προτύπου επιλογέα αρχείων: {error}", + "OK" : "ΟΚ", "Error loading message template: {error}" : "Σφάλμα φόρτωσης προτύπου μηνυμάτων: {error}", "read-only" : "μόνο για ανάγνωση", "_{count} file conflict_::_{count} file conflicts_" : ["{count} αρχείο διαφέρει","{count} αρχεία είναι σε διένεξη"], @@ -107,8 +109,9 @@ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our documentation." : "Η συσκευή /dev/urandom δεν είναι αναγνώσιμη από την PHP κάτι που θα έπρεπε να μπορεί για λόγους ασφάλειας. Περισσότερες πληροφορίες μπορείτε να βρείτε στην τεκμηρίωση.", "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by the PHP Group as soon as your distribution supports it." : "Έχετε εγκατεστημένη έκδοση PHP {version}. Σας ενθαρρύνουμε να αναβαθμίσετε την έκδοση της PHP το συντομότερο δυνατόν που η διανομή σας το υποστηρίξει ώστε να εκμεταλλευτείτε τις επιδόσεις και τις ενημερώσεις ασφάλειας που παρέχονται από την ομάδα PHP .", "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 documentation." : "Η διαμόρφωση των reverse proxy headers είναι εσφαλμένη, ή έχετε πρόσβαση στο Nextcloud από έναν αξιόπιστο διαμεσολαβητή. Εάν δεν έχετε πρόσβαση στο Nextcloud από έναν αξιόπιστο διαμεσολαβητή, αυτό είναι ένα ζήτημα ασφαλείας και μπορείτε να επιτρέψετε σε κάποιον εισβολέα να παρουσιάσει την διεύθυνση IP του παραπλανητικά ως ορατή στο Nextcloud. Περισσότερες πληροφορίες μπορείτε να βρείτε στην τεκμηρίωση.", - "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 memcached wiki about both modules." : "Το Memcached είναι ρυθμισμένο ως κατανεμημένη λανθάνουσα μνήμη, αλλά είναι εγκατεστημένη το λάθος άρθρωμα \"memcache\" της PHP. Το \\OC\\Memcache\\Memcached υποστηρίζει μόνο τη \"memcached\" και όχι τη \"memcache\". Δείτε το memcached wiki και για τα δύο αρθρώματα.", + "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 memcached wiki about both modules." : "Το Memcached είναι ρυθμισμένο ως κατανεμημένη λανθάνουσα μνήμη, αλλά είναι εγκατεστημένο το λάθος άρθρωμα \"memcache\" της PHP. Το \\OC\\Memcache\\Memcached υποστηρίζει μόνο τη \"memcached\" και όχι τη \"memcache\". Δείτε το memcached wiki και για τα δύο αρθρώματα.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our documentation. (List of invalid files… / Rescan…)" : "Μερικά αρχεία δεν πέρασαν από τον έλεγχο της ακεραιότητας. Περισσότερες πληροφορίες για το πως να επιλύσετε πρόβλημα μπορείτε να βρείτε στην τεκμηρίωση. (Λίστα από μή έγκυρα αρχεία… / Σάρωση ξανά…)", + "The PHP OPcache is not properly configured. For better performance we recommend to use following settings in the php.ini:" : "H PHP OPcache δεν είναι σωστά διαμορφωμένη. Για καλύτερη απόδοση προτείνεταινα χρησιμοποιήσετε τις εξής ρυθμίσεις στο php.ini:", "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." : "Μη διαθέσιμη η λειτουργία της PHP \"set_time_limit\". Αυτό μπορεί να διακόψει την εκτέλεση των διαφόρων scripts με αποτέλεσμα να διακοπεί η εγκατάστασή σας. Σας συνιστούμε να ενεργοποιήσετε αυτή τη λειτουργία.", "Error occurred while checking server setup" : "Παρουσιάστηκε σφάλμα κατά τον έλεγχο των ρυθμίσεων του διακομιστή σας", "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." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανόν προσβάσιμα από το διαδίκτυο. Το αρχείο .htaccess δεν λειτουργεί. Σας προτείνουμε να ρυθμίσετε το διακομιστή σας με τέτοιο τρόπο ώστε ο κατάλογος δεδομένων να μην είναι πλέον προσβάσιμος ή να μετακινήσετε τον κατάλογο δεδομένων εκτός του ριζικού καταλόγου εγγράφων του διακομιστή.", @@ -123,6 +126,7 @@ "Expiration" : "Λήξη", "Expiration date" : "Ημερομηνία λήξης", "Choose a password for the public link" : "Επιλέξτε συνθηματικό για τον δημόσιο σύνδεσμο", + "Choose a password for the public link or press the \"Enter\" key" : "Επιλέξτε ένα συνθηματικό για την δημόσια διεύθυνση ή πατήστε το \"Enter\" πλήκτρο", "Copied!" : "Αντιγράφτηκε!", "Copy" : "Αντιγραφή", "Not supported!" : "Δεν υποστηρίζεται!", @@ -132,11 +136,11 @@ "Share to {name}" : "Διαμοιρασμός με {name}", "Share link" : "Διαμοιρασμός συνδέσμου", "Link" : "Σύνδεσμος", - "Password protect" : "Προστασία συνθηματικού", - "Allow editing" : "Επιτρέπεται η επεξεργασία", + "Password protect" : "Προστασία με συνθηματικό", + "Allow editing" : "Επέτρεψε την επεξεργασία", "Email link to person" : "Αποστολή συνδέσμου με email", "Send" : "Αποστολή", - "Allow upload and editing" : "Επιτρέπονται η μεταφόρτωση και η επεξεργασία", + "Allow upload and editing" : "Επέτρεψε την μεταφόρτωση και επεξεργασία", "Read only" : "Μόνο για ανάγνωση", "File drop (upload only)" : "Απόθεση αρχείου (μόνο μεταφόρτωση)", "Shared with you and the group {group} by {owner}" : "Διαμοιράστηκε με σας και με την ομάδα {group} του {owner}", @@ -158,7 +162,7 @@ "Error while sharing" : "Σφάλμα κατά τον διαμοιρασμό", "Share details could not be loaded for this item." : "Αδυναμία φόρτωσης λεπτομερειών διαμοιρασμού για αυτό το αντικείμενο.", "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Απαιτείται τουλάχιστο {count} χαρακτήρας για αυτόματη συμπλήρωση","Απαιτούνται τουλάχιστο {count} χαρακτήρες για αυτόματη συμπλήρωση"], - "This list is maybe truncated - please refine your search term to see more results." : "Αυτή η λίστα είναι ίσως περικοπεί - παρακαλούμε βελτιώσετε τους όρους αναζήτησης για περισσότερα αποτελέσματα.", + "This list is maybe truncated - please refine your search term to see more results." : "Αυτή η λίστα ίσως να έχει περικοπεί - παρακαλούμε βελτιώσετε τους όρους αναζήτησης για περισσότερα αποτελέσματα.", "No users or groups found for {search}" : "Δεν βρέθηκαν χρήστες ή ομάδες για την αναζήτηση {search}", "No users found for {search}" : "Δεν βρέθηκαν χρήστες για την αναζήτηση {search}", "An error occurred. Please try again" : "Παρουσιάστηκε σφάλμα. Παρακαλώ δοκιμάστε αργότερα", @@ -182,7 +186,7 @@ "({scope})" : "({scope})", "Delete" : "Διαγραφή", "Rename" : "Μετονομασία", - "Collaborative tags" : "Συνεργατική ετικέτα", + "Collaborative tags" : "Συνεργατικές ετικέτες", "No tags found" : "Δεν βρέθηκαν ετικέτες", "unknown text" : "άγνωστο κείμενο", "Hello world!" : "Γεια σου κόσμε!", @@ -200,7 +204,7 @@ "The update was unsuccessful. Please report this issue to the Nextcloud community." : "Μη επιτυχημένη ενημέρωση. Παρακαλούμε αναφέρετε αυτό το πρόβλημα στην κοινότητα Nextcloud.", "Continue to Nextcloud" : "Συνέχεια στον Nextcloud", "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Επιτυχημένη ενημέρωση. Θα γίνει ανακατεύθυνση στο Nextcloud σε %n δευτερόλεπτο.","Επιτυχημένη ενημέρωση. Θα γίνει ανακατεύθυνση στο Nextcloud σε %n δευτερόλεπτα."], - "Searching other places" : "Έρευνα σε άλλα σημεία.", + "Searching other places" : "Αναζήτηση σε άλλα σημεία.", "No search results in other folders for {tag}{filter}{endtag}" : "Κανένα αποτέλεσμα αναζήτησης σε άλλους φακέλους για {tag}{filter}{endtag}", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} αποτέλεσμα αναζήτησης σε άλλο φάκελο","{count} αποτελέσματα αναζήτησης σε άλλους φακέλους"], "Personal" : "Προσωπικά", @@ -218,15 +222,15 @@ "More details can be found in the server log." : "Περισσότερες λεπτομέρειες μπορείτε να βρείτε στο αρχείο καταγραφής του διακομιστή.", "Technical details" : "Τεχνικές λεπτομέρειες", "Remote Address: %s" : "Απομακρυσμένη διεύθυνση: %s", - "Request ID: %s" : "Ταυτότητα αιτήματος: %s", + "Request ID: %s" : "ID αιτήματος: %s", "Type: %s" : "Τύπος: %s", - "Code: %s" : "Κωδικός: %s", + "Code: %s" : "Κώδικας: %s", "Message: %s" : "Μήνυμα: %s", "File: %s" : "Αρχείο: %s", "Line: %s" : "Γραμμή: %s", "Trace" : "Ανίχνευση", "Security warning" : "Προειδοποίηση ασφαλείας", - "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανό προσβάσιμα από το διαδίκτυο διότι δεν δουλεύει το αρχείο .htaccess.", + "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανό να είναι προσβάσιμα από το διαδίκτυο διότι δεν δουλεύει το αρχείο .htaccess.", "For information how to properly configure your server, please see the documentation." : "Για πληροφορίες πως μπορείτε να ρυθμίσετε σωστά τον διακομιστή, παρακαλούμε δείτε την τεκμηρίωση.", "Create an admin account" : "Δημιουργήστε έναν λογαριασμό διαχειριστή", "Username" : "Όνομα χρήστη", @@ -234,18 +238,18 @@ "Data folder" : "Φάκελος δεδομένων", "Configure the database" : "Ρύθμιση της βάσης δεδομένων", "Only %s is available." : "Μόνο %s είναι διαθέσιμο.", - "Install and activate additional PHP modules to choose other database types." : "Εγκαταστήστε και ενεργοποιείστε επιπλέον αρθρώματα PHP για να επιλέξετε άλλους τύπους βάσεων δεδομένων.", + "Install and activate additional PHP modules to choose other database types." : "Εγκαταστήστε και ενεργοποιείστε επιπλέον αρθρώματα της PHP για να επιλέξετε άλλους τύπους βάσεων δεδομένων.", "For more details check out the documentation." : "Για περισσότερες πληροφορίες ανατρέξτε στην τεκμηρίωση.", "Database user" : "Χρήστης βάσης δεδομένων", "Database password" : "Συνθηματικό βάσης δεδομένων", "Database name" : "Όνομα βάσης δεδομένων", "Database tablespace" : "Κενά πινάκων βάσης δεδομένων", "Database host" : "Διακομιστής βάσης δεδομένων", - "Please specify the port number along with the host name (e.g., localhost:5432)." : "Παρακαλώ καθορίστε τον αριθμό της θύρας μαζί με το όνομα κεντρικού υπολογιστή (πχ localhost: 5432).", + "Please specify the port number along with the host name (e.g., localhost:5432)." : "Παρακαλώ καθορίστε τον αριθμό της θύρας μαζί με το όνομα διακομιστή (πχ localhost: 5432).", "Performance warning" : "Προειδοποίηση απόδοσης", "SQLite will be used as database." : "Η SQLite θα χρησιμοποιηθεί ως βάση δεδομένων.", "For larger installations we recommend to choose a different database backend." : "Για μεγαλύτερες εγκαταστάσεις συνιστούμε να επιλέξετε διαφορετικό σύστημα υποστήριξης βάσης δεδομένων.", - "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Ειδικά όταν χρησιμοποιείτε τον πελάτη για συγχρονισμό στον υπολογιστή σας, δεν συνίσταται η χρήση της SQLite.", + "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Ειδικά όταν χρησιμοποιείτε το λογισμικό για συγχρονισμό στον υπολογιστή σας, δεν συνίσταται η χρήση της SQLite.", "Finish setup" : "Ολοκλήρωση ρύθμισης", "Finishing …" : "Ολοκλήρωση...", "Need help?" : "Θέλετε βοήθεια;", @@ -255,7 +259,7 @@ "Search" : "Αναζήτηση", "This action requires you to confirm your password:" : "Αυτή η ενέργεια απαιτεί επιβεβαίωση του συνθηματικού σας:", "Confirm your password" : "Επιβεβαίωση συνθηματικού", - "Server side authentication failed!" : "Αποτυχημένη πιστοποίηση από την πλευράς διακομιστή!", + "Server side authentication failed!" : "Αποτυχημένη πιστοποίηση από πλευράς διακομιστή!", "Please contact your administrator." : "Παρακαλούμε επικοινωνήστε με τον διαχειριστή.", "An internal error occurred." : "Παρουσιάστηκε ένα εσωτερικό σφάλμα.", "Please try again or contact your administrator." : "Παρακαλούμε δοκιμάστε ξανά ή επικοινωνήστε με τον διαχειριστή.", @@ -264,14 +268,15 @@ "Wrong password." : "Λάθος συνθηματικό.", "Log in" : "Είσοδος", "Stay logged in" : "Μείνετε συνδεδεμένος", - "Alternative Logins" : "Εναλλακτικές συνδέσεις", + "Alternative Logins" : "Εναλλακτικές είσοδοι", + "You are about to grant \"%s\" access to your %s account." : "Πρόκειται να δώσετε δικαίωμα πρόσβασης%sστον%sλογαριασμό.", "App token" : "Διακριτικό εφαρμογής", "Alternative login using app token" : "Εναλλακτική είσοδος με την χρήση του διακριτικού της εφαρμογής", "Redirecting …" : "Γίνεται ανακατεύθυνση ...", "New password" : "Νέο συνθηματικό", - "New Password" : "Νέο συνθηματικό", + "New Password" : "Νέο Συνθηματικό", "Reset password" : "Επαναφορά συνθηματικού", - "Two-factor authentication" : "Πιστοποίηση με 2 παράγοντες", + "Two-factor authentication" : "Πιστοποίηση Δύο-Παραγόντων", "Enhanced security is enabled for your account. Please authenticate using a second factor." : "Έχει ενεργοποιηθεί βελτιωμένη ασφάλεια για τον λογαριασμό σας. Παρακαλώ πιστοποιήστε με την χρήση δεύτερου παράγοντα", "Cancel log in" : "Ακύρωση εισόδου", "Use backup code" : "Χρήση εφεδρικών κωδικών", @@ -292,14 +297,15 @@ "Update needed" : "Απαιτείται ενημέρωση", "Please use the command line updater because you have a big instance with more than 50 users." : "Παρακαλούμε χρησιμοποιήστε την ενημέρωση μέσω γραμμής εντολών διότι έχετε μια μεγάλη εγκατάσταση με περισσότερους από 50 χρήστες.", "For help, see the documentation." : "Για βοήθεια, δείτε στην τεκμηρίωση.", - "Upgrade via web on my own risk" : "Αναβάθμιση μέσω δικτύου με δικιά μου ευθύνη", + "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." : "Γνωρίζω ότι συνεχίζοντας την ενημέρωση μέσω web UI αποτελεί ρίσκο, το χρονικό όριο του αιτήματος μπορεί να εξαντληθεί με συνέπεια το χάσιμο δεδομένων, αλλά έχω πραγματοποιήσει αντίγραφο ασφαλείας και γνωρίζω πως να κάνω αποκατάσταση σε περίπτωση αποτυχίας.", + "Upgrade via web on my own risk" : "Αναβάθμιση μέσω ιστού με δική μου ευθύνη", "This %s instance is currently in maintenance mode, which may take a while." : "Αυτή %s η εγκατάσταση είναι σε λειτουργία συντήρησης, η οποία μπορεί να διαρκέσει κάποιο χρόνο.", "This page will refresh itself when the %s instance is available again." : "Αυτή η σελίδα θα ανανεωθεί από μόνη της όταν η %s εγκατάσταση είναι διαθέσιμη ξανά.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Επικοινωνήστε με το διαχειριστή του συστήματος αν αυτό το μήνυμα συνεχίζει να εμφανίζεται ή εμφανίστηκε απρόσμενα.", "Thank you for your patience." : "Σας ευχαριστούμε για την υπομονή σας.", "Problem loading page, reloading in 5 seconds" : "Πρόβλημα φόρτωσης σελίδας, φόρτωση ξανά σε 5 λεπτά", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.
If you are not sure what to do, please contact your administrator before you continue.
Do you really want to continue?" : "Τα αρχεία σας είναι κρυπτογραφημένα. Εάν δεν έχετε ενεργοποιήσει το κλειδί επαναφοράς, δεν θα υπάρχει τρόπος να ανακτήσετε τα δεδομένα σας μετά την επαναφορά του συνθηματικού σας.
Εάν δεν είστε σίγουροι για το τι θα θέλατε να κάνετε, παρακαλώ επικοινωνήστε με το διαχειριστή σας πριν συνεχίσετε.
Θέλετε να συνεχίσετε;", - "Ok" : "Εντάξει", + "Ok" : "ΟΚ", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest 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." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανόν προσβάσιμα από το διαδίκτυο. Το αρχείο .htaccess δεν λειτουργεί. Σας προτείνουμε ανεπιφύλακτα να ρυθμίσετε το διακομιστή σας με τέτοιο τρόπο ώστε ο κατάλογος δεδομένων να μην είναι πλέον προσβάσιμος ή να μετακινήσετε τον κατάλογο δεδομένων εκτός του ριζικού καταλόγου εγγράφων του διακομιστή.", "Error while unsharing" : "Σφάλμα κατά την αναίρεση του διαμοιρασμού", "can reshare" : "δυνατότητα να διαμοιραστεί ξανά", @@ -331,7 +337,7 @@ "Use the following link to reset your password: {link}" : "Χρησιμοποιήστε τον ακόλουθο σύνδεσμο για να επαναφέρετε το συνθηματικό: {link}", "Hey there,

just letting you know that %s shared %s with you.
View it!

" : "Γεια χαρά,

απλά σας ενημερώνω πως ο %s μοιράστηκε το%s με εσάς.
Δείτε το!

", "This Nextcloud instance is currently in single user mode." : "Αυτή η εγκατάσταση Nextcloud είναι τώρα σε κατάσταση ενός χρήστη.", - "This means only administrators can use the instance." : "Αυτό σημαίνει ότι μόνο διαχειριστές μπορούν να χρησιμοποιήσουν την εγκατάσταση.", + "This means only administrators can use the instance." : "Αυτό σημαίνει ότι μόνο οι διαχειριστές μπορούν να χρησιμοποιήσουν την εγκατάσταση.", "Please use the command line updater because you have a big instance." : "Παρακαλούμε χρησιμοποιήστε την ενημέρωση μέσω γραμμής εντολών διότι έχετε μεγάλη εγκατάσταση." },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/core/l10n/es_MX.js b/core/l10n/es_MX.js index 982f82d3b6..1556777704 100644 --- a/core/l10n/es_MX.js +++ b/core/l10n/es_MX.js @@ -1,7 +1,7 @@ OC.L10N.register( "core", { - "Please select a file." : "Por favor selecciona un archivo.un ", + "Please select a file." : "Por favor selecciona un archivo.", "File is too big" : "El archivo es demasiado grande.", "The selected file is not an image." : "El archivo seleccionado no es una imagen.", "The selected file cannot be read." : "El archivo seleccionado no se puede leer.", @@ -20,8 +20,8 @@ OC.L10N.register( "Couldn't reset password because the token is expired" : "No ha sido posible restablecer la contraseña porque la ficha ha expirado", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "No fue posible enviar el correo electrónico para restablecer porque no hay una dirección de correo electrónico para este usuario. Por favor contacta a tu adminsitrador. ", "Password reset" : "Restablecer contraseña", - "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Has click en el siguiente botón para restablecer tu contraseña. Si no has solicitado restablecer su contraseña, por favor ignora este correo. ", - "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Has click en la siguiente liga para restablecer su contraseña. Si no has solicitado restablecer la contraseña, por favor ignora este mensaje. ", + "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Haz click en el siguiente botón para restablecer tu contraseña. Si no has solicitado restablecer su contraseña, por favor ignora este correo. ", + "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Haz click en la siguiente liga para restablecer su contraseña. Si no has solicitado restablecer la contraseña, por favor ignora este mensaje. ", "Reset your password" : "Restablecer tu contraseña", "%s password reset" : "%s restablecer la contraseña", "Couldn't send reset email. Please contact your administrator." : "No fue posible enviar el correo de restauración. Por favor contacta a tu adminsitrador. ", @@ -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 8bc080b1b3..7618554e20 100644 --- a/core/l10n/es_MX.json +++ b/core/l10n/es_MX.json @@ -1,5 +1,5 @@ { "translations": { - "Please select a file." : "Por favor selecciona un archivo.un ", + "Please select a file." : "Por favor selecciona un archivo.", "File is too big" : "El archivo es demasiado grande.", "The selected file is not an image." : "El archivo seleccionado no es una imagen.", "The selected file cannot be read." : "El archivo seleccionado no se puede leer.", @@ -18,8 +18,8 @@ "Couldn't reset password because the token is expired" : "No ha sido posible restablecer la contraseña porque la ficha ha expirado", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "No fue posible enviar el correo electrónico para restablecer porque no hay una dirección de correo electrónico para este usuario. Por favor contacta a tu adminsitrador. ", "Password reset" : "Restablecer contraseña", - "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Has click en el siguiente botón para restablecer tu contraseña. Si no has solicitado restablecer su contraseña, por favor ignora este correo. ", - "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Has click en la siguiente liga para restablecer su contraseña. Si no has solicitado restablecer la contraseña, por favor ignora este mensaje. ", + "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Haz click en el siguiente botón para restablecer tu contraseña. Si no has solicitado restablecer su contraseña, por favor ignora este correo. ", + "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Haz click en la siguiente liga para restablecer su contraseña. Si no has solicitado restablecer la contraseña, por favor ignora este mensaje. ", "Reset your password" : "Restablecer tu contraseña", "%s password reset" : "%s restablecer la contraseña", "Couldn't send reset email. Please contact your administrator." : "No fue posible enviar el correo de restauración. Por favor contacta a tu adminsitrador. ", @@ -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/ja.js b/core/l10n/ja.js index 628a3cbe57..5f0a2a61e1 100644 --- a/core/l10n/ja.js +++ b/core/l10n/ja.js @@ -105,6 +105,7 @@ OC.L10N.register( "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our documentation. (List of invalid files… / Rescan…)" : "いくつかのファイルでチェックサムが適合しませんでした。この問題を解決するためは、ドキュメントの詳細を見てください。(不適合ファイルのリスト… / 再チェック…)", "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." : "PHP 関数 \"set_time_limit\" は使用できません。これにより実行スクリプトが途中で停止されて、インストールを破壊する可能性があります。この機能を有効にすることを強くお勧めします。", "Error occurred while checking server setup" : "サーバー設定のチェック中にエラーが発生しました", + "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." : ".htaccess ファイルが機能していないため、インターネットからあなたのデータディレクトリとファイルにアクセスできる可能性があります。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." : "\"{header}\" HTTP ヘッダは \"{expected}\" に設定されていません。これは潜在的なセキュリティリスクもしくはプライバシーリスクとなる可能性があるため、この設定を見直すことをおすすめします。", "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 security tips." : "HTTP ヘッダ の \"Strict-Transport-Security\" が少なくとも \"{seconds}\" 秒に設定されていません。 セキュリティを強化するため、セキュリティTipsを参照して、HSTS を有効にすることをおすすめします。", "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our security tips." : "HTTP経由でアクセスしています。security tipsを参照して、代わりにHTTPSを使用するようサーバーを設定することを強くおすすめします。 instead as described in our .", diff --git a/core/l10n/ja.json b/core/l10n/ja.json index 995618d17e..402d7b470a 100644 --- a/core/l10n/ja.json +++ b/core/l10n/ja.json @@ -103,6 +103,7 @@ "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our documentation. (List of invalid files… / Rescan…)" : "いくつかのファイルでチェックサムが適合しませんでした。この問題を解決するためは、ドキュメントの詳細を見てください。(不適合ファイルのリスト… / 再チェック…)", "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." : "PHP 関数 \"set_time_limit\" は使用できません。これにより実行スクリプトが途中で停止されて、インストールを破壊する可能性があります。この機能を有効にすることを強くお勧めします。", "Error occurred while checking server setup" : "サーバー設定のチェック中にエラーが発生しました", + "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." : ".htaccess ファイルが機能していないため、インターネットからあなたのデータディレクトリとファイルにアクセスできる可能性があります。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." : "\"{header}\" HTTP ヘッダは \"{expected}\" に設定されていません。これは潜在的なセキュリティリスクもしくはプライバシーリスクとなる可能性があるため、この設定を見直すことをおすすめします。", "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 security tips." : "HTTP ヘッダ の \"Strict-Transport-Security\" が少なくとも \"{seconds}\" 秒に設定されていません。 セキュリティを強化するため、セキュリティTipsを参照して、HSTS を有効にすることをおすすめします。", "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our security tips." : "HTTP経由でアクセスしています。security tipsを参照して、代わりにHTTPSを使用するようサーバーを設定することを強くおすすめします。 instead as described in our .", diff --git a/core/l10n/lt_LT.js b/core/l10n/lt_LT.js new file mode 100644 index 0000000000..1c13e2e0b8 --- /dev/null +++ b/core/l10n/lt_LT.js @@ -0,0 +1,345 @@ +OC.L10N.register( + "core", + { + "Please select a file." : "Prašome pasirinkti failą.", + "File is too big" : "Failas yra per didelis", + "The selected file is not an image." : "Pasirinktas failas nėra paveikslas.", + "The selected file cannot be read." : "Nepavyksta perskaityti pasirinkto failo.", + "Invalid file provided" : "Pateiktas neteisingas failas", + "No image or file provided" : "Nenurodytas paveikslas ar failas", + "Unknown filetype" : "Nežinomas failo tipas", + "Invalid image" : "Netinkamas paveikslėlis", + "An error occurred. Please contact your admin." : "Įvyko klaida. Susisiekite su savo administratoriumi.", + "No temporary profile picture available, try again" : "Nėra laikino profilio paveikslo, bandykite dar kartą", + "No crop data provided" : "Nenurodyti apkirpimo duomenys", + "No valid crop data provided" : "Pateikti neteisingi apkirpimo duomenys", + "Crop is not square" : "Apkirpimo plotas nėra kvadratas", + "State token does not match" : "Išorinės sistemos leidimai nesutampa su turimais.", + "Password reset is disabled" : "Slaptažodžio atkūrimas išjungtas", + "Couldn't reset password because the token is invalid" : "Nepavyko atstatyti slaptažodžio, kadangi prieigos raktas yra neteisingas", + "Couldn't reset password because the token is expired" : "Nepavyko atstatyti slaptažodžio, kadangi prieigos rakto galiojimas yra pasibaigęs", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nepavyko išsiųsti atstatymo el. laiško dėl to, kad šiam naudotojo vardui nėra nustatytas joks el. pašto adresas. Prašome susisiekti su savo administratoriumi.", + "Password reset" : "Slaptažodžio atstatymas", + "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Paspauskite mygtuką slaptažodžio atkūrimui. Jei slaptažodžio atkūrimas nėra reikalingas, ignoruokite šį laišką.", + "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Paspauskite nuorodą slaptažodžio atkūrimui. Jei slaptažodžio atkūrimas nėra reikalingas, ignoruokite šį laišką.", + "Reset your password" : "Atkurkite savo slaptažodį", + "%s password reset" : "%s slaptažodžio atkūrimas", + "Couldn't send reset email. Please contact your administrator." : "Nepavyko išsiųsti atstatymo el. laiško. Prašome susisiekti su savo administratoriumi.", + "Couldn't send reset email. Please make sure your username is correct." : "Nepavyko išsiųsti atstatymo el. laiško. Prašome įsitikinti, kad jūsų naudotojo vardas yra teisingas.", + "Preparing update" : "Ruošiamas atnaujinimas", + "[%d / %d]: %s" : "[%d / %d]: %s", + "Repair warning: " : "Pataisymo įspėjimas: ", + "Repair error: " : "Pataisymo klaida: ", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Automatinis atnaujinimas išjungtas config.php faile. Naudokite komandinės eilutės atnaujinimo įrankį.", + "[%d / %d]: Checking table %s" : "[%d / %d]: Tikrinama lentelė %s", + "Turned on maintenance mode" : "Įjungta techninės priežiūros veiksena", + "Turned off maintenance mode" : "Išjungta techninės priežiūros veiksena", + "Maintenance mode is kept active" : "Techninės priežiūros veiksena yra aktyvi", + "Updating database schema" : "Atnaujinama duomenų bazės struktūra", + "Updated database" : "Atnaujinta duomenų bazė", + "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Tikrinama ar duomenų bazės struktūra gali būti atnaujinta (priklausomai nuo duomenų bazės dydžio, operacija gali ilgai užtrukti)", + "Checked database schema update" : "Tikrinama duomenų bazės struktūra", + "Checking updates of apps" : "Tikrinami programėlių atnaujinimai", + "Checking for update of app \"%s\" in appstore" : "Ieškomas įskiepio %s atnaujinimas programinės įrangos saugykloje", + "Update app \"%s\" from appstore" : "Atnaujinkite \"%s\" įskiepį iš programinės įrangos saugyklos", + "Checked for update of app \"%s\" in appstore" : "Atlikta atnaujinimų paieška įskiepiui \"%s\" programinės įrangos saugykloje", + "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Tikrinama ar duomenų bazės struktūra %s gali būti atnaujinta (priklausomai nuo duomenų bazės dydžio, operacija gali ilgai užtrukti)", + "Checked database schema update for apps" : "Duomenų bazės struktūra paruošta įskiepių atnaujinimui", + "Updated \"%s\" to %s" : "Atnaujinta \"%s\" į %s", + "Set log level to debug" : "Nustatyti žurnalo išvesties lygį į \"derinimas\"", + "Reset log level" : "Atstatyti numatytąjį žurnalo išvesties lygį", + "Starting code integrity check" : "Pradedama kodo vientisumo patikra", + "Finished code integrity check" : "Kodo vientisumo patikra užbaigta", + "%s (3rdparty)" : "%s (trečiųjų asmenų programinė įranga)", + "%s (incompatible)" : "%s (nesuderinama programinė įranga)", + "Following apps have been disabled: %s" : "Šie įskiepiai buvo išjungti: %s", + "Already up to date" : "Naudojama naujausia versija", + "Search contacts …" : "Pažįstamų asmenų paieška...", + "No contacts found" : "Pažįstamų asmenų nerasta", + "Show all contacts …" : "Rodyti visus pažįstamus asmenis...", + "There was an error loading your contacts" : "Įvyko klaida bandant parodyti pažįstamų asmenų informaciją", + "Loading your contacts …" : "Kraunami informacija apie pažįstamus asmenis", + "Looking for {term} …" : "Ieškoma {term} ...", + "There were problems with the code integrity check. More information…" : "Buvo problemų su kodo vientisumo patikrinimu. Daugiau informacijos…", + "No action available" : "Jokie veiksmai negalimi", + "Error fetching contact actions" : "Klaida bandant gauti veiksmus darbui su pažįstamų asmenų informacija", + "Settings" : "Nustatymai", + "Connection to server lost" : "Ryšys su serveriu nutrūko", + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundės","Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundžių","Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundžių"], + "Saving..." : "Įrašoma...", + "Dismiss" : "Atmesti", + "This action requires you to confirm your password" : "Šis veiksmas reikalauja, kad įvestumėte savo slaptažodį", + "Authentication required" : "Reikalingas tapatybės nustatymas", + "Password" : "Slaptažodis", + "Cancel" : "Atsisakyti", + "Confirm" : "Patvirtinti", + "Failed to authenticate, try again" : "Nepavyko nustatyti tapatybės, bandykite dar kartą", + "seconds ago" : "prieš keletą sekundžių", + "Logging in …" : "Prisijungiama …", + "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator." : "Slaptažodžio atkūrimo nuoroda buvo išsiųsta nurodytu elektroninio pašto adresu. Jei greitu laiku negausite laiško, patikrinkite \"šlamšto\" skyrių elektroniniame pašte.
Jei laiško vis tiek nerandate, susiekite su sistemos administratoriumi.", + "Your files are encrypted. There will be no way to get your data back after your password is reset.
If you are not sure what to do, please contact your administrator before you continue.
Do you really want to continue?" : "Jūsų duomenys yra užšifruoti. Nepraraskite slaptažodžio, nes slaptažodžio atkūrimas neįmanomas ir nebus įmanoma toliau naudotis duomenimis.
Jei nežinote, ką daryti, susisiekite sus sistemos administratoriumi prieš tęsdami darbą su sistema.
Ar norite tęsti?", + "I know what I'm doing" : "Aš žinau ką darau", + "Password can not be changed. Please contact your administrator." : "Slaptažodis negali būti pakeistas, susisiekite su savo administratoriumi.", + "No" : "Ne", + "Yes" : "Taip", + "No files in here" : "Duomenų nėra", + "Choose" : "Pasirinkti", + "Error loading file picker template: {error}" : "Klaida įkeliant failo parinkimo ruošinį: {error}", + "OK" : "Gerai", + "Error loading message template: {error}" : "Klaida įkeliant žinutės ruošinį: {error}", + "read-only" : "tik skaitymui", + "_{count} file conflict_::_{count} file conflicts_" : ["{count} failas konfliktuoja","{count} failai konfliktuoja","{count} nesuderinami rinkmenų pakeitimai"], + "One file conflict" : "Nesuderinama rinkmena", + "New Files" : "Įkeliamos rinkmenos", + "Already existing files" : "Egzistuojančios rinkmenos saugykloje", + "Which files do you want to keep?" : "Kurias rinkmenas norite pasilikti?", + "If you select both versions, the copied file will have a number added to its name." : "Jei pasiliekate abi rinkmenų versijas, nukopijuota rinkmena turės papildomą numerį pavadinime.", + "Continue" : "Tęsti", + "(all selected)" : "(visi pažymėti)", + "({count} selected)" : "({count} pažymėtų)", + "Error loading file exists template" : "Klaida įkeliant saugykloje esančių rinkmenų ruošinį", + "Pending" : "Vykdoma", + "Very weak password" : "Labai silpnas slaptažodis", + "Weak password" : "Silpnas slaptažodis", + "So-so password" : "Neblogas slaptažodis", + "Good password" : "Geras slaptažodis", + "Strong password" : "Stiprus slaptažodis", + "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Jūsų tinklo kompiuteris nėra tinkamai paruoštas duomenų sinchronizacijai, panašu, kad \"WebDAV\" sistemos prieiga yra neveikianti. ", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our documentation." : "Jūsų tinklo kompiuteris nėra tinkamai paruoštas atidaryti nuorodą \"{url}\". Detalesnę informaciją galima rasti dokumentacijoje.", + "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." : "Tinklo kompiuteris neturi veikiančio interneto ryšio: negalima pasiekti atitinkamų prieigos taškų. Tai reiškia, kad tam tikras funkcionalumas, kaip tinklo laikmenos prijungimas, pranešimai apie atnaujinimus ir trečiųjų šalių programinės įrangos diegimas neveiks. Taip pat gali neveikti nuotolinė duomenų prieiga ir priminimų siuntimas elektroniniu paštu. Jei norite turėti šį funkcionalumą, mes siūlome prijungti interneto ryšį šiam tinklo kompiuteriui.", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our documentation." : "Nėra spartinančiosios atminties konfigūracijos. Siekiant pagerinti sistemos efektyvumą reikia paruošti spartinančiosios atminties konfigūraciją, jei tokia konfigūracija yra įmanoma. Detalesnę informaciją galima rasti dokumentacijoje. ", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our documentation." : "PHP sistema negali skaityti \"/dev/urandom\" direktorijos, skaitymo leidimas yra rekomenduotinas saugumo sumetimais. Detalesnę informaciją galima rasti dokumentacijoje.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by the PHP Group as soon as your distribution supports it." : "Naudojama {version} PHP versija. Rekomenduojame atnaujinti PHP versiją ir turėti geresnį sistemos efektyvumą ir saugumą užtikrinančius atnaujinimus iš PHP Group ", + "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 documentation." : "Tarpinio serverio antraščių konfigūracija neteisinga, nebent jūs bandote pasiekti NextCloud per patikimą tarpinį serverį. Jei jūs nebandote pasiekti NextCloud per patikimą tarpinį serverį, tai yra tikėtina, kad turite saugumo problemą, kuri leidžia įsilaužėliams šnipinėti prisijungiančius IP adresus. Detalesnę informaciją galima rasti dokumentacijoje.", + "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 memcached wiki about both modules." : "Sukonfigūruota \"Memcached\" skirstoma spartinančiosios atminties sistema, tačiau neteisingas PHP modulis \"memcache\" yra įdiegtas. \\OC\\Memcache\\Memcached palaiko \"memcached\" sistemą, o ne \"memcache\". Dėl detalesnės informacijos žiūrėkite memcached wiki pasakojimą apie abu modulius.", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our documentation. (List of invalid files… / Rescan…)" : "Kai kurie duomenys neįveikė integralumo patikrinimo. Detalesnę informaciją, kaip išspręsti šią problemą galima rasti mūsų dokumentacijoje. (Sugadintų rinkmenų sąrašas... / Patikrinti iš naujo...)", + "The PHP OPcache is not properly configured. For better performance we recommend to use following settings in the php.ini:" : "PHP OPcache yra neteisingai sukonfigūruotas. Siekiant geresnio sistemos našumo rekomenduojame įrašyti šiuos nustatymus php.ini byloje:", + "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." : "PHP sistemos funkcija \"set_time_limit\" yra nepasiekiama. To pasekmėje, tikėtina, kad įdiegta sistema bus sugadinta. Primygtinai reikalaujame įjungti šią funkciją.", + "Error occurred while checking server setup" : "Tikrinant serverio sąranką, įvyko klaida", + "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." : "Jūsų duomenys gali būti laisvai prieinami per internetą. Nustatymų byla \".htaccess\" neveikia. Primygtinai reikalaujame tinklo kompiuterį sukonfigūruoti taip, kad duomenys nebūtų laisvai prieinami per internetą, iškelti sistemos duomenų aplanką iš sistemos įdiegimo aplanko.", + "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." : "HTTP antraštė \"{header}\" nesukonfigūruota atitikti antraštę \"{expected}\". Šitai yra saugumo ar privatumo problema ir mes rekomenduojame pataisyti nustatymą.", + "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 security tips." : "\"Strict-Transport-Security\" HTTP antraštė turi būti nustatyta į bent \"{seconds}\" sekundes (-ių). Tam, kad saugumas būtų sustiprintas, rekomenduojame nustatyti HSTS palaikymą taip, kaip aprašyta saugumo patarimuose.", + "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our security tips." : "Jūs bandote prieiti šį interneto puslapį per HTTP protokolą. Mes siūlome jūsų tinklo kompiuteryje palaikyti tik HTTPS protokolą, kaip yra apibūdinta mūsų saugumo patarimuose.", + "Shared" : "Dalinamasi", + "Shared with {recipients}" : "Dalinamasi su {recipients}", + "Error setting expiration date" : "Klaida nustatant dalinimosi pabaigos laiką", + "The public link will expire no later than {days} days after it is created" : "Nuoroda veiks ne mažiau kaip {days} dienas nuo sukūrimo", + "Set expiration date" : "Nustatykite veikimo pabaigos datą", + "Expiration" : "Veikimo pabaiga", + "Expiration date" : "Veikimo pabaigos data", + "Choose a password for the public link" : "Pasirinkite slaptažodį, skirtą nuorodai atidaryti", + "Choose a password for the public link or press the \"Enter\" key" : "Pasirinkite slaptažodį, skirtą nuorodai atidaryti arba paspauskite \"Enter\" klavišą", + "Copied!" : "Nukopijuota!", + "Copy" : "Kopijuoti", + "Not supported!" : "Nepalaikoma!", + "Press ⌘-C to copy." : "Norėdami nukopijuoti, paspauskite ⌘-C.", + "Press Ctrl-C to copy." : "Norėdami nukopijuoti, paspauskite Ctrl-C.", + "Resharing is not allowed" : "Dalijinasis išnaujo negalimas", + "Share to {name}" : "Parodyti asmeniui vardu {name}", + "Share link" : "Dalintis nuoroda", + "Link" : "Nuoroda", + "Password protect" : "Apsaugotas slaptažodžiu", + "Allow editing" : "Leisti redaguoti", + "Email link to person" : "Nusiųsti nuorodą paštu", + "Send" : "Siųsti", + "Allow upload and editing" : "Leisti įkėlimą ir redagavimą", + "Read only" : "Leidžiama tik skaityti", + "File drop (upload only)" : "Tempti rinkmeną čia (veikia tik įkeliant)", + "Shared with you and the group {group} by {owner}" : "{owner} pasidalino su Jumis ir {group} grupe", + "Shared with you by {owner}" : "{owner} pasidalino su Jumis ", + "Choose a password for the mail share" : "Pasirinkite slaptažodį pasidalinimui per elektroninį paštą", + "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} pasidalino per nuorodą", + "group" : "grupė", + "remote" : "nuotolinis", + "email" : "elektroninis paštas", + "shared by {sharer}" : "pasidalino {sharer}", + "Unshare" : "Nebesidalinti", + "Can reshare" : "Galima dalintis su kitais", + "Can edit" : "Galima redaguoti", + "Can create" : "Galima kurti nauja", + "Can change" : "Galima keisti", + "Can delete" : "Galima trinti", + "Access control" : "Prieigos valdymas", + "Could not unshare" : "Negalima nustoti dalintis", + "Error while sharing" : "Klaida, dalijimosi metu", + "Share details could not be loaded for this item." : "Dalinimosi detalės negali būti atskleistos šiai bylai", + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius","Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius","Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius"], + "This list is maybe truncated - please refine your search term to see more results." : "Sąrašas galimai sutrumpintas - prašome patikslinti paiešką, norint matyti daugiau rezultatų.", + "No users or groups found for {search}" : "Nerasta vartotojų ar grupių pagal paieškos kriterijų: {search}", + "No users found for {search}" : "Nerasta vartotojų pagal paieškos kriterijų: {search}", + "An error occurred. Please try again" : "Įvyko klaida. Bandykite dar kartą", + "{sharee} (group)" : "{sharee} (grupė)", + "{sharee} (remote)" : "{sharee} (nuotolinis)", + "{sharee} (email)" : "{sharee} (elektroninis paštas)", + "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", + "Share" : "Dalintis", + "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Pasidalinti su kitais asmenimis galima įvedus vartotojo ar grupės vardą, NextCloud tinklo kompiuterio ID arba elektroninio pašto adresą.", + "Share with other people by entering a user or group or a federated cloud ID." : "Pasidalinti su kitais asmenimis galima įvedus vartotojo ar grupės vardą arba NextCloud tinklo kompiuterio ID.", + "Share with other people by entering a user or group or an email address." : "Pasidalinti su kitais asmenimis galima įvedus vartotojo ar grupės vardą arba elektroninio pašto adresą.", + "Name or email address..." : "Vardas arba elektroninio pašto adresas...", + "Name or federated cloud ID..." : "Vardas arba NextCloud tinklo kompiuterio ID...", + "Name, federated cloud ID or email address..." : "Vardas, NextCloud tinklo kompiuterio ID arba elektroninio pašto adresas...", + "Name..." : "Vardas...", + "Error" : "Klaida", + "Error removing share" : "Klaida bandant sustabdyti dalinimąsi", + "Non-existing tag #{tag}" : "Neegzistuojanti žymė #{tag}", + "restricted" : "apribota", + "invisible" : "nematoma", + "({scope})" : "({scope})", + "Delete" : "Ištrinti", + "Rename" : "Pervadinti", + "Collaborative tags" : "Žymes skirtos dalinimuisi su kitais asmenimis", + "No tags found" : "Nerasta jokių žymių", + "unknown text" : "nežinomas tekstas", + "Hello world!" : "Sveikas pasauli!", + "sunny" : "saulėta", + "Hello {name}, the weather is {weather}" : "Sveiki {name}, šiandienos oras yra {weather}", + "Hello {name}" : "Sveiki, {name},", + "These are your search results" : "Paieškos rezultatai:", + "new" : "Naujas", + "_download %n file_::_download %n files_" : ["parsisiųsti %n rinkmenas","parsisiųsti %n rinkmenas","parsisiųsti %n rinkmenas"], + "The update is in progress, leaving this page might interrupt the process in some environments." : "Vykdomas atnaujinimas, jei šis puslapis bus neuždarytas, yra tikimybė, kad sistemos atnaujinimas nepavyks.", + "Update to {version}" : "Atnaujinti į versiją {version}", + "An error occurred." : "Įvyko klaida.", + "Please reload the page." : "Prašome iš naujo įkelti puslapį.", + "The update was unsuccessful. For more information check our forum post covering this issue." : "Atnaujinimas nebuvo sėkmingas. Detalesnę problemos sprendimo informaciją rasite forumo puslapyje.", + "The update was unsuccessful. Please report this issue to the Nextcloud community." : "Atnaujinimas buvo nesėkmingas. Prašome pranešti apie problemą NextCloud bendruomenei.", + "Continue to Nextcloud" : "Eiti į NextCloud", + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių.","Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių.","Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių."], + "Searching other places" : "Ieškoma kitose vietose", + "No search results in other folders for {tag}{filter}{endtag}" : "Nėra paieškos rezultatų kituose aplankuose naudojat paieškos kriterijus: {tag}{filter}{endtag}", + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} paieškos rezultatai kituose aplankuose","{count} paieškos rezultatai kituose aplankuose","{count} paieškos rezultatai kituose aplankuose"], + "Personal" : "Asmeniniai", + "Users" : "Naudotojai", + "Apps" : "Programėlės", + "Admin" : "Administravimas", + "Help" : "Pagalba", + "Access forbidden" : "Prieiga uždrausta", + "File not found" : "Failas nerastas", + "The specified document has not been found on the server." : "Ieškotas dokumentas nerastas sistemoje.", + "You can click here to return to %s." : "Paspauskite čia norėdami grįžti į %s.", + "Internal Server Error" : "Vidinė serverio klaida", + "The server encountered an internal error and was unable to complete your request." : "Sistemoje įvyko klaida bandant įvykdyti jūsų užklausą.", + "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Susisiekite su sistemos administratoriumi, jei klaida pasikartos. Prašome nupasakoti, kaip įvyko klaida žemiau esančioje ataskaitoje.", + "More details can be found in the server log." : "Detalesnė informacija yra sistemos žurnale.", + "Technical details" : "Techniniai duomenys", + "Remote Address: %s" : "Nuotolinis adresas: %s", + "Request ID: %s" : "Užklausos ID: %s", + "Type: %s" : "Tipas: %s", + "Code: %s" : "Kodas: %s", + "Message: %s" : "Žinutė: %s", + "File: %s" : "Failas: %s", + "Line: %s" : "Eilutė: %s", + "Trace" : "Sekti", + "Security warning" : "Saugumo įspėjimas", + "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Jūsų duomenų katalogas ir failai, tikriausiai, yra prieinami per internetą, nes .htaccess failas neveikia.", + "For information how to properly configure your server, please see the documentation." : "Išsamesnei informacijai apie tai kaip tinkamai sukonfigūruoti savo serverį, prašome žiūrėti dokumentaciją.", + "Create an admin account" : "Sukurkite administratoriaus paskyrą", + "Username" : "Naudotojo vardas", + "Storage & database" : "Saugykla ir duomenų bazė", + "Data folder" : "Duomenų aplankas", + "Configure the database" : "Konfigūruokite duomenų bazę", + "Only %s is available." : "Yra prieinama tik %s.", + "Install and activate additional PHP modules to choose other database types." : "Įdiekite ir aktyvuokite papildomus PHP modulius, kad pasirinktumėte kitus duomenų bazės tipus.", + "For more details check out the documentation." : "Išsamesnei informacijai, žiūrėkite dokumentaciją.", + "Database user" : "Duomenų bazės naudotojas", + "Database password" : "Duomenų bazės slaptažodis", + "Database name" : "Duomenų bazės pavadinimas", + "Database tablespace" : "Duomenų bazės loginis saugojimas", + "Database host" : "Duomenų bazės serveris", + "Please specify the port number along with the host name (e.g., localhost:5432)." : "Prašome nurodyti domeno vardą ir protokolo numerį, pavyzdžiui: \"localhost:5432\".", + "Performance warning" : "Sistemos našumo problemos perspėjimas", + "SQLite will be used as database." : "SQLite bus naudojama kaip duomenų bazė.", + "For larger installations we recommend to choose a different database backend." : "Didesnei sistemai įdiegti rekomenduojame pasirinkti kitą duomenų bazę.", + "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "SQLite naudojimas yra nerekomenduotinas, kai duomenų sinchronizacijai naudojamas darbalaukio klientas.", + "Finish setup" : "Užbaigti sąranką", + "Finishing …" : "Užbaigiama …", + "Need help?" : "Reikia pagalbos?", + "See the documentation" : "Žiūrėkite dokumentaciją", + "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Sistemos veikimui reikalingas JavaScript palaikymas. Prašome {linkstart}įjungti JavaScript palaikymą{linkend} ir atnaujinti puslapį.", + "More apps" : "Daugiau programinės įrangos", + "Search" : "Ieškoti", + "This action requires you to confirm your password:" : "Šis veiksmas reikalauja, kad patvirtintumėte savo slaptažodį:", + "Confirm your password" : "Patvirtinkite savo slaptažodį", + "Server side authentication failed!" : "Autentikacija serveryje nepavyko!", + "Please contact your administrator." : "Kreipkitės į savo sistemos administratorių.", + "An internal error occurred." : "Įvyko vidinė klaida.", + "Please try again or contact your administrator." : "Pabandykite dar kartą arba susisiekite su sistemos administratoriumi.", + "Username or email" : "Naudotojo vardas ar el. paštas", + "Wrong password. Reset it?" : "Neteisingas slaptažodis. Atstatyti jį?", + "Wrong password." : "Neteisingas slaptažodis.", + "Log in" : "Prisijungti", + "Stay logged in" : "Likti prisijungus", + "Alternative Logins" : "Alternatyvūs prisijungimai", + "You are about to grant \"%s\" access to your %s account." : "Leisite \"%s\" naudoti jūsų %s paskyrą.", + "App token" : "Išorinės sistemos įskiepio kodas", + "Alternative login using app token" : "Alternatyvus prisijungimas naudojant išorinės sistemos kodą", + "Redirecting …" : "Nukreipiama...", + "New password" : "Naujas slaptažodis", + "New Password" : "Naujas slaptažodis", + "Reset password" : "Atstatyti slaptažodį", + "Two-factor authentication" : "Dviejų žingsnių prisijungimas", + "Enhanced security is enabled for your account. Please authenticate using a second factor." : "Jūsų paskyros saugumas yra sustiprintas. Prašome prisijungti naudojant antrą prisijungimo variantą.", + "Cancel log in" : "Atšaukti prisijungimą", + "Use backup code" : "Naudoti atsarginį kodą", + "Error while validating your second factor" : "Klaida antrame prisijungimo žingsnyje", + "You are accessing the server from an untrusted domain." : "Jūs bandote prisijungti prie sistemos iš nepatikimo domeno.", + "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Susisiekite su sistemos administratoriumi. Jei jūs esate administratorius, pridėkite \"trusted_domains\" nustatymą config/config.php byloje. Pavyzdinė konfigūracija pateikta config/config.sample.php byloje.", + "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Priklausomai nuo sistemos konfigūracijos, administratorius gali naudoti mygtuką apačioje tam, kad pridėtų patikimą domeno vardą.", + "Add \"%s\" as trusted domain" : "Pridėti \"%s\" į patikimų domenų sąrašą", + "App update required" : "Reikalingas įskiepio atnaujinimas", + "%s will be updated to version %s" : "%s bus atnaujintas iki %s versijos", + "These apps will be updated:" : "Šie įskiepiai bus atnaujinti:", + "These incompatible apps will be disabled:" : "Šie nesuderinami įskiepiai bus išjungti:", + "The theme %s has been disabled." : "Spalvų tema %s buvo panaikinta.", + "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Prie pradedant, užtikrinkite, kad duomenų bazė, konfigūracijos aplankas ir duomenų aplankas turi atsarginę kopiją.", + "Start update" : "Pradėti atnaujinimą", + "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Norėdami sutaupyti laiko, galite paleisti šią komandą diegimo aplanke:", + "Detailed logs" : "Tikslus žurnalas", + "Update needed" : "Reikalingas atnaujinimas", + "Please use the command line updater because you have a big instance with more than 50 users." : "Naudokite komandinę eilutę atnaujinimui, nes sistema turi daugiau nei 50 vartotojų.", + "For help, see the documentation." : "Detalesnės informacijos ieškokite dokumentacijoje", + "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." : "Suprantu, kad atnaujinimui naudodamas vartotojo aplinką, rizikuoju, kad sistemos darbas sutriks ir prisijungę vartotojai gali netekti duomenų, turiu atsarginę duomenų kopiją ir žinau, kaip atstatyti duomenis nesėkmės atveju.", + "Upgrade via web on my own risk" : "Atnaujinti per interneto naršyklę prisiimant riziką", + "This %s instance is currently in maintenance mode, which may take a while." : "Šis %s egzempliorius šiuo metu yra techninės priežiūros veiksenoje, kas savo ruožtu gali šiek tiek užtrukti.", + "This page will refresh itself when the %s instance is available again." : "Šis puslapis bus įkeltas iš naujo, kai %s egzempliorius bus ir vėl prieinamas.", + "Contact your system administrator if this message persists or appeared unexpectedly." : "Susisiekite su savo sistemos administratoriumi jei šis pranešimas nedingsta arba jei jis pasirodė netikėtai.", + "Thank you for your patience." : "Dėkojame už jūsų kantrumą.", + "Problem loading page, reloading in 5 seconds" : "Problemos įkeliant puslapį. Įkeliama iš naujo po 5 sekundžių", + "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.
If you are not sure what to do, please contact your administrator before you continue.
Do you really want to continue?" : "Jūsų duomenys yra šifruoti. Jei neturite atstatymo rakto, duomenų naudojimas bus nebeįmanomas po slaptažodžio atstatymo.
Jei nesate tikras dėl to, ką norite padaryti, susisiekite su sistemos administratoriumi.
Ar norite tęsti?", + "Ok" : "Gerai", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest 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." : "Jūsų duomenys gali būti laisvai prieinami per internetą. Nustatymų byla \".htaccess\" neveikia. Primygtinai reikalaujame tinklo kompiuterį sukonfigūruoti taip, kad duomenys nebūtų laisvai prieinami per internetą, iškelti sistemos duomenų aplanką iš sistemos įdiegimo aplanko.", + "Error while unsharing" : "Klaida, kai atšaukiamas dalijimasis", + "can reshare" : "gali pakartotinai dalintis", + "can edit" : "gali redaguoti", + "can create" : "gali kurti", + "can change" : "gali keisti", + "can delete" : "gali trinti", + "access control" : "prieigos valdymas", + "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "naudotojo vardasPasidalinti su asmenimis ekvivalenčiose sistemose, naudojantis Federated Cloud ID username@example.com/nextcloud", + "Share with users or by mail..." : "Pasidalinti su vartotojais arba per elektroninį paštą...", + "Share with users or remote users..." : "Pasidalinti su vartotojais arba vartotojais kitose sistemose...", + "Share with users, remote users or by mail..." : "Pasidalinti su vartotojais, kitų sistemų vartotojais arba per elektroninį paštą...", + "Share with users or groups..." : "Pasidalinti su vartotojais ar jų grupe...", + "Share with users, groups or by mail..." : "Pasidalinti su vartotojais, grupėmis arba per elektroninį paštą...", + "Share with users, groups or remote users..." : "Pasidalinti su vartotojais, grupėmis ar kitų sistemų vartotojais...", + "Share with users, groups, remote users or by mail..." : "Pasidalinti su vartotojais, kitų sistemų vartotojais arba per elektroninį paštą...", + "Share with users..." : "Pasidalinti su vartotojais...", + "The object type is not specified." : "Objekto tipas nenurodytas.", + "Enter new" : "Įveskite naują", + "Add" : "Pridėti", + "Edit tags" : "Redaguoti žymes", + "Error loading dialog template: {error}" : "Klaida įkeliant dialogo ruošinį: {error}", + "No tags selected for deletion." : "Trynimui nepasirinkta jokia žymė.", + "The update was successful. Redirecting you to Nextcloud now." : "Sėkmingai atnaujinta. Nukreipiama į NextCloud.", + "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Labas,\n\nInformuojame, kad %s pasidalino su Jumis %s.\nPažiūrėti tai: %s\n", + "The share will expire on %s." : "Bendrinimo laikas baigsis %s.", + "Cheers!" : "Sveikinimai!", + "Log out" : "Atsijungti", + "Use the following link to reset your password: {link}" : "Naudokite šią nuorodą, kad atstatytumėte savo slaptažodį: {link}", + "Hey there,

just letting you know that %s shared %s with you.
View it!

" : "Labas,

tik norime pranešti, kad %s pasidalino %s su jumis.
Peržiūrėti

", + "This Nextcloud instance is currently in single user mode." : "Šis Nextcloud egzempliorius šiuo metu yra vieno naudotojo veiksenoje.", + "This means only administrators can use the instance." : "Tai reiškia, kad tik administratorius gali naudotis sistema.", + "Please use the command line updater because you have a big instance." : "Prašome atnaujinti per komandinę eilutę, nes jūsų sistema yra didelė." +}, +"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/core/l10n/lt_LT.json b/core/l10n/lt_LT.json new file mode 100644 index 0000000000..d01ba4b2e2 --- /dev/null +++ b/core/l10n/lt_LT.json @@ -0,0 +1,343 @@ +{ "translations": { + "Please select a file." : "Prašome pasirinkti failą.", + "File is too big" : "Failas yra per didelis", + "The selected file is not an image." : "Pasirinktas failas nėra paveikslas.", + "The selected file cannot be read." : "Nepavyksta perskaityti pasirinkto failo.", + "Invalid file provided" : "Pateiktas neteisingas failas", + "No image or file provided" : "Nenurodytas paveikslas ar failas", + "Unknown filetype" : "Nežinomas failo tipas", + "Invalid image" : "Netinkamas paveikslėlis", + "An error occurred. Please contact your admin." : "Įvyko klaida. Susisiekite su savo administratoriumi.", + "No temporary profile picture available, try again" : "Nėra laikino profilio paveikslo, bandykite dar kartą", + "No crop data provided" : "Nenurodyti apkirpimo duomenys", + "No valid crop data provided" : "Pateikti neteisingi apkirpimo duomenys", + "Crop is not square" : "Apkirpimo plotas nėra kvadratas", + "State token does not match" : "Išorinės sistemos leidimai nesutampa su turimais.", + "Password reset is disabled" : "Slaptažodžio atkūrimas išjungtas", + "Couldn't reset password because the token is invalid" : "Nepavyko atstatyti slaptažodžio, kadangi prieigos raktas yra neteisingas", + "Couldn't reset password because the token is expired" : "Nepavyko atstatyti slaptažodžio, kadangi prieigos rakto galiojimas yra pasibaigęs", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nepavyko išsiųsti atstatymo el. laiško dėl to, kad šiam naudotojo vardui nėra nustatytas joks el. pašto adresas. Prašome susisiekti su savo administratoriumi.", + "Password reset" : "Slaptažodžio atstatymas", + "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Paspauskite mygtuką slaptažodžio atkūrimui. Jei slaptažodžio atkūrimas nėra reikalingas, ignoruokite šį laišką.", + "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Paspauskite nuorodą slaptažodžio atkūrimui. Jei slaptažodžio atkūrimas nėra reikalingas, ignoruokite šį laišką.", + "Reset your password" : "Atkurkite savo slaptažodį", + "%s password reset" : "%s slaptažodžio atkūrimas", + "Couldn't send reset email. Please contact your administrator." : "Nepavyko išsiųsti atstatymo el. laiško. Prašome susisiekti su savo administratoriumi.", + "Couldn't send reset email. Please make sure your username is correct." : "Nepavyko išsiųsti atstatymo el. laiško. Prašome įsitikinti, kad jūsų naudotojo vardas yra teisingas.", + "Preparing update" : "Ruošiamas atnaujinimas", + "[%d / %d]: %s" : "[%d / %d]: %s", + "Repair warning: " : "Pataisymo įspėjimas: ", + "Repair error: " : "Pataisymo klaida: ", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Automatinis atnaujinimas išjungtas config.php faile. Naudokite komandinės eilutės atnaujinimo įrankį.", + "[%d / %d]: Checking table %s" : "[%d / %d]: Tikrinama lentelė %s", + "Turned on maintenance mode" : "Įjungta techninės priežiūros veiksena", + "Turned off maintenance mode" : "Išjungta techninės priežiūros veiksena", + "Maintenance mode is kept active" : "Techninės priežiūros veiksena yra aktyvi", + "Updating database schema" : "Atnaujinama duomenų bazės struktūra", + "Updated database" : "Atnaujinta duomenų bazė", + "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Tikrinama ar duomenų bazės struktūra gali būti atnaujinta (priklausomai nuo duomenų bazės dydžio, operacija gali ilgai užtrukti)", + "Checked database schema update" : "Tikrinama duomenų bazės struktūra", + "Checking updates of apps" : "Tikrinami programėlių atnaujinimai", + "Checking for update of app \"%s\" in appstore" : "Ieškomas įskiepio %s atnaujinimas programinės įrangos saugykloje", + "Update app \"%s\" from appstore" : "Atnaujinkite \"%s\" įskiepį iš programinės įrangos saugyklos", + "Checked for update of app \"%s\" in appstore" : "Atlikta atnaujinimų paieška įskiepiui \"%s\" programinės įrangos saugykloje", + "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Tikrinama ar duomenų bazės struktūra %s gali būti atnaujinta (priklausomai nuo duomenų bazės dydžio, operacija gali ilgai užtrukti)", + "Checked database schema update for apps" : "Duomenų bazės struktūra paruošta įskiepių atnaujinimui", + "Updated \"%s\" to %s" : "Atnaujinta \"%s\" į %s", + "Set log level to debug" : "Nustatyti žurnalo išvesties lygį į \"derinimas\"", + "Reset log level" : "Atstatyti numatytąjį žurnalo išvesties lygį", + "Starting code integrity check" : "Pradedama kodo vientisumo patikra", + "Finished code integrity check" : "Kodo vientisumo patikra užbaigta", + "%s (3rdparty)" : "%s (trečiųjų asmenų programinė įranga)", + "%s (incompatible)" : "%s (nesuderinama programinė įranga)", + "Following apps have been disabled: %s" : "Šie įskiepiai buvo išjungti: %s", + "Already up to date" : "Naudojama naujausia versija", + "Search contacts …" : "Pažįstamų asmenų paieška...", + "No contacts found" : "Pažįstamų asmenų nerasta", + "Show all contacts …" : "Rodyti visus pažįstamus asmenis...", + "There was an error loading your contacts" : "Įvyko klaida bandant parodyti pažįstamų asmenų informaciją", + "Loading your contacts …" : "Kraunami informacija apie pažįstamus asmenis", + "Looking for {term} …" : "Ieškoma {term} ...", + "There were problems with the code integrity check. More information…" : "Buvo problemų su kodo vientisumo patikrinimu. Daugiau informacijos…", + "No action available" : "Jokie veiksmai negalimi", + "Error fetching contact actions" : "Klaida bandant gauti veiksmus darbui su pažįstamų asmenų informacija", + "Settings" : "Nustatymai", + "Connection to server lost" : "Ryšys su serveriu nutrūko", + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundės","Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundžių","Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundžių"], + "Saving..." : "Įrašoma...", + "Dismiss" : "Atmesti", + "This action requires you to confirm your password" : "Šis veiksmas reikalauja, kad įvestumėte savo slaptažodį", + "Authentication required" : "Reikalingas tapatybės nustatymas", + "Password" : "Slaptažodis", + "Cancel" : "Atsisakyti", + "Confirm" : "Patvirtinti", + "Failed to authenticate, try again" : "Nepavyko nustatyti tapatybės, bandykite dar kartą", + "seconds ago" : "prieš keletą sekundžių", + "Logging in …" : "Prisijungiama …", + "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator." : "Slaptažodžio atkūrimo nuoroda buvo išsiųsta nurodytu elektroninio pašto adresu. Jei greitu laiku negausite laiško, patikrinkite \"šlamšto\" skyrių elektroniniame pašte.
Jei laiško vis tiek nerandate, susiekite su sistemos administratoriumi.", + "Your files are encrypted. There will be no way to get your data back after your password is reset.
If you are not sure what to do, please contact your administrator before you continue.
Do you really want to continue?" : "Jūsų duomenys yra užšifruoti. Nepraraskite slaptažodžio, nes slaptažodžio atkūrimas neįmanomas ir nebus įmanoma toliau naudotis duomenimis.
Jei nežinote, ką daryti, susisiekite sus sistemos administratoriumi prieš tęsdami darbą su sistema.
Ar norite tęsti?", + "I know what I'm doing" : "Aš žinau ką darau", + "Password can not be changed. Please contact your administrator." : "Slaptažodis negali būti pakeistas, susisiekite su savo administratoriumi.", + "No" : "Ne", + "Yes" : "Taip", + "No files in here" : "Duomenų nėra", + "Choose" : "Pasirinkti", + "Error loading file picker template: {error}" : "Klaida įkeliant failo parinkimo ruošinį: {error}", + "OK" : "Gerai", + "Error loading message template: {error}" : "Klaida įkeliant žinutės ruošinį: {error}", + "read-only" : "tik skaitymui", + "_{count} file conflict_::_{count} file conflicts_" : ["{count} failas konfliktuoja","{count} failai konfliktuoja","{count} nesuderinami rinkmenų pakeitimai"], + "One file conflict" : "Nesuderinama rinkmena", + "New Files" : "Įkeliamos rinkmenos", + "Already existing files" : "Egzistuojančios rinkmenos saugykloje", + "Which files do you want to keep?" : "Kurias rinkmenas norite pasilikti?", + "If you select both versions, the copied file will have a number added to its name." : "Jei pasiliekate abi rinkmenų versijas, nukopijuota rinkmena turės papildomą numerį pavadinime.", + "Continue" : "Tęsti", + "(all selected)" : "(visi pažymėti)", + "({count} selected)" : "({count} pažymėtų)", + "Error loading file exists template" : "Klaida įkeliant saugykloje esančių rinkmenų ruošinį", + "Pending" : "Vykdoma", + "Very weak password" : "Labai silpnas slaptažodis", + "Weak password" : "Silpnas slaptažodis", + "So-so password" : "Neblogas slaptažodis", + "Good password" : "Geras slaptažodis", + "Strong password" : "Stiprus slaptažodis", + "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Jūsų tinklo kompiuteris nėra tinkamai paruoštas duomenų sinchronizacijai, panašu, kad \"WebDAV\" sistemos prieiga yra neveikianti. ", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our documentation." : "Jūsų tinklo kompiuteris nėra tinkamai paruoštas atidaryti nuorodą \"{url}\". Detalesnę informaciją galima rasti dokumentacijoje.", + "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." : "Tinklo kompiuteris neturi veikiančio interneto ryšio: negalima pasiekti atitinkamų prieigos taškų. Tai reiškia, kad tam tikras funkcionalumas, kaip tinklo laikmenos prijungimas, pranešimai apie atnaujinimus ir trečiųjų šalių programinės įrangos diegimas neveiks. Taip pat gali neveikti nuotolinė duomenų prieiga ir priminimų siuntimas elektroniniu paštu. Jei norite turėti šį funkcionalumą, mes siūlome prijungti interneto ryšį šiam tinklo kompiuteriui.", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our documentation." : "Nėra spartinančiosios atminties konfigūracijos. Siekiant pagerinti sistemos efektyvumą reikia paruošti spartinančiosios atminties konfigūraciją, jei tokia konfigūracija yra įmanoma. Detalesnę informaciją galima rasti dokumentacijoje. ", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our documentation." : "PHP sistema negali skaityti \"/dev/urandom\" direktorijos, skaitymo leidimas yra rekomenduotinas saugumo sumetimais. Detalesnę informaciją galima rasti dokumentacijoje.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by the PHP Group as soon as your distribution supports it." : "Naudojama {version} PHP versija. Rekomenduojame atnaujinti PHP versiją ir turėti geresnį sistemos efektyvumą ir saugumą užtikrinančius atnaujinimus iš PHP Group ", + "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 documentation." : "Tarpinio serverio antraščių konfigūracija neteisinga, nebent jūs bandote pasiekti NextCloud per patikimą tarpinį serverį. Jei jūs nebandote pasiekti NextCloud per patikimą tarpinį serverį, tai yra tikėtina, kad turite saugumo problemą, kuri leidžia įsilaužėliams šnipinėti prisijungiančius IP adresus. Detalesnę informaciją galima rasti dokumentacijoje.", + "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 memcached wiki about both modules." : "Sukonfigūruota \"Memcached\" skirstoma spartinančiosios atminties sistema, tačiau neteisingas PHP modulis \"memcache\" yra įdiegtas. \\OC\\Memcache\\Memcached palaiko \"memcached\" sistemą, o ne \"memcache\". Dėl detalesnės informacijos žiūrėkite memcached wiki pasakojimą apie abu modulius.", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our documentation. (List of invalid files… / Rescan…)" : "Kai kurie duomenys neįveikė integralumo patikrinimo. Detalesnę informaciją, kaip išspręsti šią problemą galima rasti mūsų dokumentacijoje. (Sugadintų rinkmenų sąrašas... / Patikrinti iš naujo...)", + "The PHP OPcache is not properly configured. For better performance we recommend to use following settings in the php.ini:" : "PHP OPcache yra neteisingai sukonfigūruotas. Siekiant geresnio sistemos našumo rekomenduojame įrašyti šiuos nustatymus php.ini byloje:", + "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." : "PHP sistemos funkcija \"set_time_limit\" yra nepasiekiama. To pasekmėje, tikėtina, kad įdiegta sistema bus sugadinta. Primygtinai reikalaujame įjungti šią funkciją.", + "Error occurred while checking server setup" : "Tikrinant serverio sąranką, įvyko klaida", + "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." : "Jūsų duomenys gali būti laisvai prieinami per internetą. Nustatymų byla \".htaccess\" neveikia. Primygtinai reikalaujame tinklo kompiuterį sukonfigūruoti taip, kad duomenys nebūtų laisvai prieinami per internetą, iškelti sistemos duomenų aplanką iš sistemos įdiegimo aplanko.", + "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." : "HTTP antraštė \"{header}\" nesukonfigūruota atitikti antraštę \"{expected}\". Šitai yra saugumo ar privatumo problema ir mes rekomenduojame pataisyti nustatymą.", + "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 security tips." : "\"Strict-Transport-Security\" HTTP antraštė turi būti nustatyta į bent \"{seconds}\" sekundes (-ių). Tam, kad saugumas būtų sustiprintas, rekomenduojame nustatyti HSTS palaikymą taip, kaip aprašyta saugumo patarimuose.", + "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our security tips." : "Jūs bandote prieiti šį interneto puslapį per HTTP protokolą. Mes siūlome jūsų tinklo kompiuteryje palaikyti tik HTTPS protokolą, kaip yra apibūdinta mūsų saugumo patarimuose.", + "Shared" : "Dalinamasi", + "Shared with {recipients}" : "Dalinamasi su {recipients}", + "Error setting expiration date" : "Klaida nustatant dalinimosi pabaigos laiką", + "The public link will expire no later than {days} days after it is created" : "Nuoroda veiks ne mažiau kaip {days} dienas nuo sukūrimo", + "Set expiration date" : "Nustatykite veikimo pabaigos datą", + "Expiration" : "Veikimo pabaiga", + "Expiration date" : "Veikimo pabaigos data", + "Choose a password for the public link" : "Pasirinkite slaptažodį, skirtą nuorodai atidaryti", + "Choose a password for the public link or press the \"Enter\" key" : "Pasirinkite slaptažodį, skirtą nuorodai atidaryti arba paspauskite \"Enter\" klavišą", + "Copied!" : "Nukopijuota!", + "Copy" : "Kopijuoti", + "Not supported!" : "Nepalaikoma!", + "Press ⌘-C to copy." : "Norėdami nukopijuoti, paspauskite ⌘-C.", + "Press Ctrl-C to copy." : "Norėdami nukopijuoti, paspauskite Ctrl-C.", + "Resharing is not allowed" : "Dalijinasis išnaujo negalimas", + "Share to {name}" : "Parodyti asmeniui vardu {name}", + "Share link" : "Dalintis nuoroda", + "Link" : "Nuoroda", + "Password protect" : "Apsaugotas slaptažodžiu", + "Allow editing" : "Leisti redaguoti", + "Email link to person" : "Nusiųsti nuorodą paštu", + "Send" : "Siųsti", + "Allow upload and editing" : "Leisti įkėlimą ir redagavimą", + "Read only" : "Leidžiama tik skaityti", + "File drop (upload only)" : "Tempti rinkmeną čia (veikia tik įkeliant)", + "Shared with you and the group {group} by {owner}" : "{owner} pasidalino su Jumis ir {group} grupe", + "Shared with you by {owner}" : "{owner} pasidalino su Jumis ", + "Choose a password for the mail share" : "Pasirinkite slaptažodį pasidalinimui per elektroninį paštą", + "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} pasidalino per nuorodą", + "group" : "grupė", + "remote" : "nuotolinis", + "email" : "elektroninis paštas", + "shared by {sharer}" : "pasidalino {sharer}", + "Unshare" : "Nebesidalinti", + "Can reshare" : "Galima dalintis su kitais", + "Can edit" : "Galima redaguoti", + "Can create" : "Galima kurti nauja", + "Can change" : "Galima keisti", + "Can delete" : "Galima trinti", + "Access control" : "Prieigos valdymas", + "Could not unshare" : "Negalima nustoti dalintis", + "Error while sharing" : "Klaida, dalijimosi metu", + "Share details could not be loaded for this item." : "Dalinimosi detalės negali būti atskleistos šiai bylai", + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius","Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius","Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius"], + "This list is maybe truncated - please refine your search term to see more results." : "Sąrašas galimai sutrumpintas - prašome patikslinti paiešką, norint matyti daugiau rezultatų.", + "No users or groups found for {search}" : "Nerasta vartotojų ar grupių pagal paieškos kriterijų: {search}", + "No users found for {search}" : "Nerasta vartotojų pagal paieškos kriterijų: {search}", + "An error occurred. Please try again" : "Įvyko klaida. Bandykite dar kartą", + "{sharee} (group)" : "{sharee} (grupė)", + "{sharee} (remote)" : "{sharee} (nuotolinis)", + "{sharee} (email)" : "{sharee} (elektroninis paštas)", + "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", + "Share" : "Dalintis", + "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Pasidalinti su kitais asmenimis galima įvedus vartotojo ar grupės vardą, NextCloud tinklo kompiuterio ID arba elektroninio pašto adresą.", + "Share with other people by entering a user or group or a federated cloud ID." : "Pasidalinti su kitais asmenimis galima įvedus vartotojo ar grupės vardą arba NextCloud tinklo kompiuterio ID.", + "Share with other people by entering a user or group or an email address." : "Pasidalinti su kitais asmenimis galima įvedus vartotojo ar grupės vardą arba elektroninio pašto adresą.", + "Name or email address..." : "Vardas arba elektroninio pašto adresas...", + "Name or federated cloud ID..." : "Vardas arba NextCloud tinklo kompiuterio ID...", + "Name, federated cloud ID or email address..." : "Vardas, NextCloud tinklo kompiuterio ID arba elektroninio pašto adresas...", + "Name..." : "Vardas...", + "Error" : "Klaida", + "Error removing share" : "Klaida bandant sustabdyti dalinimąsi", + "Non-existing tag #{tag}" : "Neegzistuojanti žymė #{tag}", + "restricted" : "apribota", + "invisible" : "nematoma", + "({scope})" : "({scope})", + "Delete" : "Ištrinti", + "Rename" : "Pervadinti", + "Collaborative tags" : "Žymes skirtos dalinimuisi su kitais asmenimis", + "No tags found" : "Nerasta jokių žymių", + "unknown text" : "nežinomas tekstas", + "Hello world!" : "Sveikas pasauli!", + "sunny" : "saulėta", + "Hello {name}, the weather is {weather}" : "Sveiki {name}, šiandienos oras yra {weather}", + "Hello {name}" : "Sveiki, {name},", + "These are your search results" : "Paieškos rezultatai:", + "new" : "Naujas", + "_download %n file_::_download %n files_" : ["parsisiųsti %n rinkmenas","parsisiųsti %n rinkmenas","parsisiųsti %n rinkmenas"], + "The update is in progress, leaving this page might interrupt the process in some environments." : "Vykdomas atnaujinimas, jei šis puslapis bus neuždarytas, yra tikimybė, kad sistemos atnaujinimas nepavyks.", + "Update to {version}" : "Atnaujinti į versiją {version}", + "An error occurred." : "Įvyko klaida.", + "Please reload the page." : "Prašome iš naujo įkelti puslapį.", + "The update was unsuccessful. For more information check our forum post covering this issue." : "Atnaujinimas nebuvo sėkmingas. Detalesnę problemos sprendimo informaciją rasite forumo puslapyje.", + "The update was unsuccessful. Please report this issue to the Nextcloud community." : "Atnaujinimas buvo nesėkmingas. Prašome pranešti apie problemą NextCloud bendruomenei.", + "Continue to Nextcloud" : "Eiti į NextCloud", + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių.","Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių.","Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių."], + "Searching other places" : "Ieškoma kitose vietose", + "No search results in other folders for {tag}{filter}{endtag}" : "Nėra paieškos rezultatų kituose aplankuose naudojat paieškos kriterijus: {tag}{filter}{endtag}", + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} paieškos rezultatai kituose aplankuose","{count} paieškos rezultatai kituose aplankuose","{count} paieškos rezultatai kituose aplankuose"], + "Personal" : "Asmeniniai", + "Users" : "Naudotojai", + "Apps" : "Programėlės", + "Admin" : "Administravimas", + "Help" : "Pagalba", + "Access forbidden" : "Prieiga uždrausta", + "File not found" : "Failas nerastas", + "The specified document has not been found on the server." : "Ieškotas dokumentas nerastas sistemoje.", + "You can click here to return to %s." : "Paspauskite čia norėdami grįžti į %s.", + "Internal Server Error" : "Vidinė serverio klaida", + "The server encountered an internal error and was unable to complete your request." : "Sistemoje įvyko klaida bandant įvykdyti jūsų užklausą.", + "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Susisiekite su sistemos administratoriumi, jei klaida pasikartos. Prašome nupasakoti, kaip įvyko klaida žemiau esančioje ataskaitoje.", + "More details can be found in the server log." : "Detalesnė informacija yra sistemos žurnale.", + "Technical details" : "Techniniai duomenys", + "Remote Address: %s" : "Nuotolinis adresas: %s", + "Request ID: %s" : "Užklausos ID: %s", + "Type: %s" : "Tipas: %s", + "Code: %s" : "Kodas: %s", + "Message: %s" : "Žinutė: %s", + "File: %s" : "Failas: %s", + "Line: %s" : "Eilutė: %s", + "Trace" : "Sekti", + "Security warning" : "Saugumo įspėjimas", + "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Jūsų duomenų katalogas ir failai, tikriausiai, yra prieinami per internetą, nes .htaccess failas neveikia.", + "For information how to properly configure your server, please see the documentation." : "Išsamesnei informacijai apie tai kaip tinkamai sukonfigūruoti savo serverį, prašome žiūrėti dokumentaciją.", + "Create an admin account" : "Sukurkite administratoriaus paskyrą", + "Username" : "Naudotojo vardas", + "Storage & database" : "Saugykla ir duomenų bazė", + "Data folder" : "Duomenų aplankas", + "Configure the database" : "Konfigūruokite duomenų bazę", + "Only %s is available." : "Yra prieinama tik %s.", + "Install and activate additional PHP modules to choose other database types." : "Įdiekite ir aktyvuokite papildomus PHP modulius, kad pasirinktumėte kitus duomenų bazės tipus.", + "For more details check out the documentation." : "Išsamesnei informacijai, žiūrėkite dokumentaciją.", + "Database user" : "Duomenų bazės naudotojas", + "Database password" : "Duomenų bazės slaptažodis", + "Database name" : "Duomenų bazės pavadinimas", + "Database tablespace" : "Duomenų bazės loginis saugojimas", + "Database host" : "Duomenų bazės serveris", + "Please specify the port number along with the host name (e.g., localhost:5432)." : "Prašome nurodyti domeno vardą ir protokolo numerį, pavyzdžiui: \"localhost:5432\".", + "Performance warning" : "Sistemos našumo problemos perspėjimas", + "SQLite will be used as database." : "SQLite bus naudojama kaip duomenų bazė.", + "For larger installations we recommend to choose a different database backend." : "Didesnei sistemai įdiegti rekomenduojame pasirinkti kitą duomenų bazę.", + "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "SQLite naudojimas yra nerekomenduotinas, kai duomenų sinchronizacijai naudojamas darbalaukio klientas.", + "Finish setup" : "Užbaigti sąranką", + "Finishing …" : "Užbaigiama …", + "Need help?" : "Reikia pagalbos?", + "See the documentation" : "Žiūrėkite dokumentaciją", + "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Sistemos veikimui reikalingas JavaScript palaikymas. Prašome {linkstart}įjungti JavaScript palaikymą{linkend} ir atnaujinti puslapį.", + "More apps" : "Daugiau programinės įrangos", + "Search" : "Ieškoti", + "This action requires you to confirm your password:" : "Šis veiksmas reikalauja, kad patvirtintumėte savo slaptažodį:", + "Confirm your password" : "Patvirtinkite savo slaptažodį", + "Server side authentication failed!" : "Autentikacija serveryje nepavyko!", + "Please contact your administrator." : "Kreipkitės į savo sistemos administratorių.", + "An internal error occurred." : "Įvyko vidinė klaida.", + "Please try again or contact your administrator." : "Pabandykite dar kartą arba susisiekite su sistemos administratoriumi.", + "Username or email" : "Naudotojo vardas ar el. paštas", + "Wrong password. Reset it?" : "Neteisingas slaptažodis. Atstatyti jį?", + "Wrong password." : "Neteisingas slaptažodis.", + "Log in" : "Prisijungti", + "Stay logged in" : "Likti prisijungus", + "Alternative Logins" : "Alternatyvūs prisijungimai", + "You are about to grant \"%s\" access to your %s account." : "Leisite \"%s\" naudoti jūsų %s paskyrą.", + "App token" : "Išorinės sistemos įskiepio kodas", + "Alternative login using app token" : "Alternatyvus prisijungimas naudojant išorinės sistemos kodą", + "Redirecting …" : "Nukreipiama...", + "New password" : "Naujas slaptažodis", + "New Password" : "Naujas slaptažodis", + "Reset password" : "Atstatyti slaptažodį", + "Two-factor authentication" : "Dviejų žingsnių prisijungimas", + "Enhanced security is enabled for your account. Please authenticate using a second factor." : "Jūsų paskyros saugumas yra sustiprintas. Prašome prisijungti naudojant antrą prisijungimo variantą.", + "Cancel log in" : "Atšaukti prisijungimą", + "Use backup code" : "Naudoti atsarginį kodą", + "Error while validating your second factor" : "Klaida antrame prisijungimo žingsnyje", + "You are accessing the server from an untrusted domain." : "Jūs bandote prisijungti prie sistemos iš nepatikimo domeno.", + "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Susisiekite su sistemos administratoriumi. Jei jūs esate administratorius, pridėkite \"trusted_domains\" nustatymą config/config.php byloje. Pavyzdinė konfigūracija pateikta config/config.sample.php byloje.", + "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Priklausomai nuo sistemos konfigūracijos, administratorius gali naudoti mygtuką apačioje tam, kad pridėtų patikimą domeno vardą.", + "Add \"%s\" as trusted domain" : "Pridėti \"%s\" į patikimų domenų sąrašą", + "App update required" : "Reikalingas įskiepio atnaujinimas", + "%s will be updated to version %s" : "%s bus atnaujintas iki %s versijos", + "These apps will be updated:" : "Šie įskiepiai bus atnaujinti:", + "These incompatible apps will be disabled:" : "Šie nesuderinami įskiepiai bus išjungti:", + "The theme %s has been disabled." : "Spalvų tema %s buvo panaikinta.", + "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Prie pradedant, užtikrinkite, kad duomenų bazė, konfigūracijos aplankas ir duomenų aplankas turi atsarginę kopiją.", + "Start update" : "Pradėti atnaujinimą", + "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Norėdami sutaupyti laiko, galite paleisti šią komandą diegimo aplanke:", + "Detailed logs" : "Tikslus žurnalas", + "Update needed" : "Reikalingas atnaujinimas", + "Please use the command line updater because you have a big instance with more than 50 users." : "Naudokite komandinę eilutę atnaujinimui, nes sistema turi daugiau nei 50 vartotojų.", + "For help, see the documentation." : "Detalesnės informacijos ieškokite dokumentacijoje", + "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." : "Suprantu, kad atnaujinimui naudodamas vartotojo aplinką, rizikuoju, kad sistemos darbas sutriks ir prisijungę vartotojai gali netekti duomenų, turiu atsarginę duomenų kopiją ir žinau, kaip atstatyti duomenis nesėkmės atveju.", + "Upgrade via web on my own risk" : "Atnaujinti per interneto naršyklę prisiimant riziką", + "This %s instance is currently in maintenance mode, which may take a while." : "Šis %s egzempliorius šiuo metu yra techninės priežiūros veiksenoje, kas savo ruožtu gali šiek tiek užtrukti.", + "This page will refresh itself when the %s instance is available again." : "Šis puslapis bus įkeltas iš naujo, kai %s egzempliorius bus ir vėl prieinamas.", + "Contact your system administrator if this message persists or appeared unexpectedly." : "Susisiekite su savo sistemos administratoriumi jei šis pranešimas nedingsta arba jei jis pasirodė netikėtai.", + "Thank you for your patience." : "Dėkojame už jūsų kantrumą.", + "Problem loading page, reloading in 5 seconds" : "Problemos įkeliant puslapį. Įkeliama iš naujo po 5 sekundžių", + "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.
If you are not sure what to do, please contact your administrator before you continue.
Do you really want to continue?" : "Jūsų duomenys yra šifruoti. Jei neturite atstatymo rakto, duomenų naudojimas bus nebeįmanomas po slaptažodžio atstatymo.
Jei nesate tikras dėl to, ką norite padaryti, susisiekite su sistemos administratoriumi.
Ar norite tęsti?", + "Ok" : "Gerai", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest 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." : "Jūsų duomenys gali būti laisvai prieinami per internetą. Nustatymų byla \".htaccess\" neveikia. Primygtinai reikalaujame tinklo kompiuterį sukonfigūruoti taip, kad duomenys nebūtų laisvai prieinami per internetą, iškelti sistemos duomenų aplanką iš sistemos įdiegimo aplanko.", + "Error while unsharing" : "Klaida, kai atšaukiamas dalijimasis", + "can reshare" : "gali pakartotinai dalintis", + "can edit" : "gali redaguoti", + "can create" : "gali kurti", + "can change" : "gali keisti", + "can delete" : "gali trinti", + "access control" : "prieigos valdymas", + "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "naudotojo vardasPasidalinti su asmenimis ekvivalenčiose sistemose, naudojantis Federated Cloud ID username@example.com/nextcloud", + "Share with users or by mail..." : "Pasidalinti su vartotojais arba per elektroninį paštą...", + "Share with users or remote users..." : "Pasidalinti su vartotojais arba vartotojais kitose sistemose...", + "Share with users, remote users or by mail..." : "Pasidalinti su vartotojais, kitų sistemų vartotojais arba per elektroninį paštą...", + "Share with users or groups..." : "Pasidalinti su vartotojais ar jų grupe...", + "Share with users, groups or by mail..." : "Pasidalinti su vartotojais, grupėmis arba per elektroninį paštą...", + "Share with users, groups or remote users..." : "Pasidalinti su vartotojais, grupėmis ar kitų sistemų vartotojais...", + "Share with users, groups, remote users or by mail..." : "Pasidalinti su vartotojais, kitų sistemų vartotojais arba per elektroninį paštą...", + "Share with users..." : "Pasidalinti su vartotojais...", + "The object type is not specified." : "Objekto tipas nenurodytas.", + "Enter new" : "Įveskite naują", + "Add" : "Pridėti", + "Edit tags" : "Redaguoti žymes", + "Error loading dialog template: {error}" : "Klaida įkeliant dialogo ruošinį: {error}", + "No tags selected for deletion." : "Trynimui nepasirinkta jokia žymė.", + "The update was successful. Redirecting you to Nextcloud now." : "Sėkmingai atnaujinta. Nukreipiama į NextCloud.", + "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Labas,\n\nInformuojame, kad %s pasidalino su Jumis %s.\nPažiūrėti tai: %s\n", + "The share will expire on %s." : "Bendrinimo laikas baigsis %s.", + "Cheers!" : "Sveikinimai!", + "Log out" : "Atsijungti", + "Use the following link to reset your password: {link}" : "Naudokite šią nuorodą, kad atstatytumėte savo slaptažodį: {link}", + "Hey there,

just letting you know that %s shared %s with you.
View it!

" : "Labas,

tik norime pranešti, kad %s pasidalino %s su jumis.
Peržiūrėti

", + "This Nextcloud instance is currently in single user mode." : "Šis Nextcloud egzempliorius šiuo metu yra vieno naudotojo veiksenoje.", + "This means only administrators can use the instance." : "Tai reiškia, kad tik administratorius gali naudotis sistema.", + "Please use the command line updater because you have a big instance." : "Prašome atnaujinti per komandinę eilutę, nes jūsų sistema yra didelė." +},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +} \ No newline at end of file diff --git a/core/l10n/lv.js b/core/l10n/lv.js index 7e23a0887e..f1c3af371c 100644 --- a/core/l10n/lv.js +++ b/core/l10n/lv.js @@ -54,6 +54,7 @@ OC.L10N.register( "%s (incompatible)" : "%s (nesaderīgs)", "Following apps have been disabled: %s" : "Sekojošas programmas tika atslēgtas: %s", "Already up to date" : "Jau ir jaunākā", + "Search contacts …" : "Meklēt kontaktpersonu", "No contacts found" : "Nav atrasta ne viena kontaktpersona", "Show all contacts …" : "Rādīt visas kontaktpersonas", "There was an error loading your contacts" : "Notikusi kļūda ielādējot kontaktpersonu sarakstu", @@ -96,11 +97,14 @@ OC.L10N.register( "Continue" : "Turpināt", "(all selected)" : "(visus iezīmētos)", "({count} selected)" : "({count} iezīmēti)", + "Pending" : "Gaida", "Very weak password" : "Ļoti vāja parole", "Weak password" : "Vāja parole", "So-so password" : "Normāla parole", "Good password" : "Laba parole", "Strong password" : "Lieliska parole", + "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Jūsu serveris nav pareizi uzstādīts lai atļautu failu sinhronizēšanu jo WebDAV interfeiss šķiet salūzis.", + "Error occurred while checking server setup" : "Radās kļūda, pārbaudot servera ", "Shared" : "Koplietots", "Shared with {recipients}" : "Koplietots ar {recipients}", "Error setting expiration date" : "Kļūda, iestatot termiņa datumu", @@ -108,12 +112,14 @@ OC.L10N.register( "Expiration" : "Termiņš", "Expiration date" : "Termiņa datums", "Choose a password for the public link" : "Izvēlies paroli publiskai saitei", + "Choose a password for the public link or press the \"Enter\" key" : "Izvēlies paroli publiskai saitei vai nospiediet \"Enter\" taustiņu", "Copied!" : "Nokopēts!", "Copy" : "Kopēt", "Not supported!" : "Nav atbalstīts!", "Press ⌘-C to copy." : "Spiet ⌘-C lai kopētu.", "Press Ctrl-C to copy." : "Spiet Ctrl-C lai kopētu.", "Resharing is not allowed" : "Atkārtota dalīšanās nav atļauta", + "Share to {name}" : "Dalīties ar {name}", "Share link" : "Koplietot saiti", "Link" : "Saite", "Password protect" : "Aizsargāt ar paroli", @@ -121,13 +127,20 @@ OC.L10N.register( "Email link to person" : "Sūtīt saiti personai pa e-pastu", "Send" : "Sūtīt", "Allow upload and editing" : "Atļaut augšupielādi un rediģēšanu", + "Read only" : "Tikai lasāms", "Shared with you and the group {group} by {owner}" : "{owner} koplietoja ar jums un grupu {group}", "Shared with you by {owner}" : "{owner} koplietoja ar jums", "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} koplietots ar saiti", "group" : "grupa", "remote" : "attālināti", "email" : "e-pasts", + "shared by {sharer}" : "Koplietoja {sharer}", "Unshare" : "Pārtraukt koplietošanu", + "Can edit" : "Var rediģēt", + "Can create" : "Var izveidot", + "Can change" : "Var mainīt", + "Can delete" : "Var dzēst", + "Access control" : "Piekļuves vadība", "Could not unshare" : "Nevarēja pārtraukt koplietošanu", "Error while sharing" : "Kļūda, daloties", "Share details could not be loaded for this item." : "Šim nevarēja ielādēt koplietošanas detaļas.", @@ -137,7 +150,15 @@ OC.L10N.register( "{sharee} (group)" : "{sharee} (grupa)", "{sharee} (remote)" : "{sharee} (attālināti)", "{sharee} (email)" : "{sharee} (e-pasts)", + "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", "Share" : "Koplietot", + "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu, federated cloud ID vai e-pasta adresi.", + "Share with other people by entering a user or group or a federated cloud ID." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu vai federated cloud ID.", + "Share with other people by entering a user or group or an email address." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu vai e-pasta adresi.", + "Name or email address..." : "Vārds vai e-pasta adrese...", + "Name or federated cloud ID..." : "Vārds vai federated cloud ID", + "Name, federated cloud ID or email address..." : "Vārds, federated cloud ID vai e-pasta adrese...", + "Name..." : "Vārds...", "Error" : "Kļūda", "Error removing share" : "Kļūda, noņemot koplietošanu", "restricted" : "ierobežots", @@ -154,11 +175,16 @@ OC.L10N.register( "Hello {name}" : "Sveiks {name}", "new" : "jauns", "_download %n file_::_download %n files_" : ["lejupielādēt %n failus","lejupielādēt %n failus","lejupielādēt %n failus"], + "The update is in progress, leaving this page might interrupt the process in some environments." : "Notiek atjaunināšana, šīs lapas atstāšana var pārtraukt procesu dažās vidēs.", "Update to {version}" : "Atjaunināts uz {version}", "An error occurred." : "Radās kļūda.", "Please reload the page." : "Lūdzu, atkārtoti ielādējiet lapu.", + "The update was unsuccessful. For more information check our forum post covering this issue." : "Atjauninājums nebija veiksmīgs. Plašāku informāciju skatiet mūsu foruma rakstā par šo problēmu.", + "The update was unsuccessful. Please report this issue to the Nextcloud community." : "Atjauninājums nebija veiksmīgs. Lūdzu ziņojiet šo ķļūdu Nextcloud kopienā.", "Continue to Nextcloud" : "Turpināt ar Nextcloud", + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Atjaunināšana ir bijusi veiksmīga. Novirzīsim jūs uz Nextcloud pēc %n sekundēm.","Atjaunināšana ir bijusi veiksmīga. Novirzīsim jūs uz Nextcloud pēc %n sekundes.","Atjaunināšana ir bijusi veiksmīga. Novirzīsim jūs uz Nextcloud pēc %n sekundēm."], "Searching other places" : "Meklēt citās vietās", + "No search results in other folders for {tag}{filter}{endtag}" : "Nav nekas atrasts citā mapēs {tag}{filter}{endtag}", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} meklēšanas rezultāti citās mapēs","{count} meklēšanas rezultāti citās mapēs","{count} meklēšanas rezultāti citās mapēs"], "Personal" : "Personīgi", "Users" : "Lietotāji", @@ -171,6 +197,7 @@ OC.L10N.register( "You can click here to return to %s." : "Jūs varat noklikšķināt šeit, lai atgrieztos uz %s.", "Internal Server Error" : "Iekšēja servera kļūda", "The server encountered an internal error and was unable to complete your request." : "Serverī radās iekšēja kļūda, un tas nevarēja pabeigt jūsu pieprasījumu.", + "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Lūdzu sazinieties ar servera administrātoru ja šī kļūda parādās vairākas reizes, lūdzu iekļaujiet zemāk redzamās tehniskās detaļas jūsu ziņojumā.", "More details can be found in the server log." : "Sīkāka informācija atrodama servera žurnāl failā.", "Technical details" : "Tehniskās detaļas", "Remote Address: %s" : "Attālinātā adrese: %s", @@ -183,12 +210,15 @@ OC.L10N.register( "Trace" : "Izsekot", "Security warning" : "Drošības brīdinājums", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Visticamāk, jūsu datu direktorija un datnes ir pieejamas no interneta, jo .htaccess datne nedarbojas.", + "For information how to properly configure your server, please see the documentation." : "Priekš informācijas kā pareizi konfigurēt jūsu serveri skatiet dokumentācijā.", "Create an admin account" : "Izveidot administratora kontu", "Username" : "Lietotājvārds", "Storage & database" : "Krātuve & datubāze", "Data folder" : "Datu mape", "Configure the database" : "Konfigurēt datubāzi", "Only %s is available." : "Tikai %s ir pieejams.", + "Install and activate additional PHP modules to choose other database types." : "Instalējiet un aktivizējiet papildus PHP moduļus lai izvēlētos citus datubāžu tipus.", + "For more details check out the documentation." : "Sīkākai informācijai skatiet dokumentāciju.", "Database user" : "Datubāzes lietotājs", "Database password" : "Datubāzes parole", "Database name" : "Datubāzes nosaukums", @@ -197,10 +227,14 @@ OC.L10N.register( "Please specify the port number along with the host name (e.g., localhost:5432)." : "Lūdzu, norādiet porta numuru kopā ar resursdatora nosaukumu (piemēram, localhost: 5432).", "Performance warning" : "Veiktspējas brīdinājums", "SQLite will be used as database." : "SQLite tiks izmantota kā datu bāze.", + "For larger installations we recommend to choose a different database backend." : "Priekš lielākām instalācijām mēs iesakām izvēlēties citu datubāzes serveri.", + "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "It sevišķi, ja, izmantojot darbvirsmas klientu, lai veiktu failu sinhronizāciju SQLite izmantošana nav ieteicama.", "Finish setup" : "Pabeigt iestatīšanu", "Finishing …" : "Pabeidz ...", "Need help?" : "Vajadzīga palīdzība?", "See the documentation" : "Skatiet dokumentāciju", + "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Šai programmai nepieciešams JavaScript. Lūdzu {linkstart}ieslēdziet JavasScript{linkend} un pārlādējiet lapu.", + "More apps" : "Vairāk programmu", "Search" : "Meklēt", "This action requires you to confirm your password:" : "Šī darbība ir nepieciešama, lai apstiprinātu jūsu paroli:", "Confirm your password" : "Apstipriniet paroli", @@ -214,29 +248,44 @@ OC.L10N.register( "Log in" : "Ierakstīties", "Stay logged in" : "Palikt ierakstītam", "Alternative Logins" : "Alternatīvās pieteikšanās", + "App token" : "Programmas pilnvara", + "Alternative login using app token" : "Alternatīvās pieteikšanās izmantojot programmas pilnvaru.", + "Redirecting …" : "Novirzam ...", "New password" : "Jauna parole", "New Password" : "Jauna parole", "Reset password" : "Mainīt paroli", "Two-factor authentication" : "Divpakāpju autentifikācija", + "Enhanced security is enabled for your account. Please authenticate using a second factor." : "Uzlabota drošība ir iespējota jūsu kontam. Lūdzu autentificējies izmantojot otru faktoru.", "Cancel log in" : "Atcelt pierakstīšanos", "Use backup code" : "Izmantojiet dublēšanas kodu", + "Error while validating your second factor" : "Kļūda validējot jūsu otru faktoru.", "You are accessing the server from an untrusted domain." : "Jums ir piekļuve serverim no neuzticama domēna.", + "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Lūdzu sazinieties ar jūsu administrātoru. Ja jūs esat šīs instances administrātors, konfigurējiet \"trusted_domains\" iestatījumu config/config.php failā. Piemēra konfigurācija ir pieejama config/config.sample.php failā.", + "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Atkarīgi no jūsu konfigurācijas, kā administrātors jūs varētu izmantot zemāk redzamo pogu lai uzticētos šim domēnam.", "Add \"%s\" as trusted domain" : "Pievienot \"%s\" kā uzticamu domēnu", "App update required" : "Programmai nepieciešama atjaunināšana", "%s will be updated to version %s" : "%s tiks atjaunināts uz versiju %s", "These apps will be updated:" : "Šīs programmas tiks atjauninātas:", + "These incompatible apps will be disabled:" : "Šīs nesaderīgās programmas tiks atspējotas:", "The theme %s has been disabled." : "Tēma %s ir atspējota.", + "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Lūdzu pārliecinieties ka datubāze, config mape un data mape ir dublētas pirms turpināšanas.", "Start update" : "Sākt atjaunināšanu", + "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Lai izvairītos no noliedzes ar lielākām instalācijām, jūs varat palaist sekojošo komandu no jūsu instalācijas mapes:", "Detailed logs" : "Detalizētas informācijas žurnālfaili", "Update needed" : "Nepieciešama atjaunināšana", + "Please use the command line updater because you have a big instance with more than 50 users." : "Lūdzu, izmantojiet komandrindas atjauninātāju, jo jums ir vairāk nekā 50 lietotāji.", "For help, see the documentation." : "Lai saņemtu palīdzību, skatiet dokumentāciju.", + "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Es zinu ka ja es turpināšu atjauninājumu caur tīmekļa atjauninātāju ir risks ka pieprasījumam būs noliedze , kas var radīt datu zudumu, bet man ir dublējumkopija un es zinu kā atjaunot instanci neveiksmes gadijumā.", + "Upgrade via web on my own risk" : "Atjaunināt caur tīmekļa atjauninātāju uz mana paša risku.", "This %s instance is currently in maintenance mode, which may take a while." : "Šis %s serveris pašlaik darbojas uzturēšanas režīmā, tas var ilgt kādu laiku.", + "This page will refresh itself when the %s instance is available again." : "Lapa tiks atsvaidzināta kad %s instance atkal ir pieejama.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Sazinieties ar sistēmas administratoru, ja šis ziņojums tiek rādīts.. vai parādījās negaidīti", "Thank you for your patience." : "Paldies par jūsu pacietību.", "Problem loading page, reloading in 5 seconds" : "Problēma ielādējot lapu, pārlādēšana pēc 5 sekundēm", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.
If you are not sure what to do, please contact your administrator before you continue.
Do you really want to continue?" : "Jūsu faili ir šifrēti. Ja neesat iespējojis atkopšanas atslēgu, nevarēsiet atgūt datus atpakaļ, pēc jūsu paroles atiestatīšanas.
Ja neesat pārliecināts par to, ko darīt, lūdzu, pirms turpināt, sazinieties ar administratoru.
Vai tiešām vēlaties turpināt?", "Ok" : "Labi", "Error while unsharing" : "Kļūda, beidzot dalīties", + "can reshare" : "var atkārtoti kopīgot", "can edit" : "var rediģēt", "can create" : "var izveidot", "can change" : "var mainīt", @@ -249,11 +298,13 @@ OC.L10N.register( "Share with users or groups..." : "Koplietot ar lietotājiem vai grupām...", "Share with users, groups or by mail..." : "Koplietot ar lietotājiem, grupām vai izmantojot e-pastu...", "Share with users, groups or remote users..." : "Koplietot ar lietotājiem, grupām vai attāliem lietotājiem...", + "Share with users, groups, remote users or by mail..." : "Koplietot ar lietotājiem, grupām, attāliem lietotājiem vai izmantojot e-pastu...", "Share with users..." : "Koplietots ar lietotājiem...", "The object type is not specified." : "Nav norādīts objekta tips.", "Enter new" : "Ievadīt jaunu", "Add" : "Pievienot", "Edit tags" : "Rediģēt atzīmes", + "Error loading dialog template: {error}" : "Kļūda ielādējot dialoga veidni: {error}", "The update was successful. Redirecting you to Nextcloud now." : "Atjaunināšana ir bijusi veiksmīga. Tagad novirzīsim jūs uz Nextcloud.", "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Sveiki,\n\ninformējam, ka %s koplietoja ar jums %s.\nApskati to: %s\n", "The share will expire on %s." : "Koplietošana beigsies %s.", diff --git a/core/l10n/lv.json b/core/l10n/lv.json index 9a56aa3a1f..a40a9fa831 100644 --- a/core/l10n/lv.json +++ b/core/l10n/lv.json @@ -52,6 +52,7 @@ "%s (incompatible)" : "%s (nesaderīgs)", "Following apps have been disabled: %s" : "Sekojošas programmas tika atslēgtas: %s", "Already up to date" : "Jau ir jaunākā", + "Search contacts …" : "Meklēt kontaktpersonu", "No contacts found" : "Nav atrasta ne viena kontaktpersona", "Show all contacts …" : "Rādīt visas kontaktpersonas", "There was an error loading your contacts" : "Notikusi kļūda ielādējot kontaktpersonu sarakstu", @@ -94,11 +95,14 @@ "Continue" : "Turpināt", "(all selected)" : "(visus iezīmētos)", "({count} selected)" : "({count} iezīmēti)", + "Pending" : "Gaida", "Very weak password" : "Ļoti vāja parole", "Weak password" : "Vāja parole", "So-so password" : "Normāla parole", "Good password" : "Laba parole", "Strong password" : "Lieliska parole", + "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Jūsu serveris nav pareizi uzstādīts lai atļautu failu sinhronizēšanu jo WebDAV interfeiss šķiet salūzis.", + "Error occurred while checking server setup" : "Radās kļūda, pārbaudot servera ", "Shared" : "Koplietots", "Shared with {recipients}" : "Koplietots ar {recipients}", "Error setting expiration date" : "Kļūda, iestatot termiņa datumu", @@ -106,12 +110,14 @@ "Expiration" : "Termiņš", "Expiration date" : "Termiņa datums", "Choose a password for the public link" : "Izvēlies paroli publiskai saitei", + "Choose a password for the public link or press the \"Enter\" key" : "Izvēlies paroli publiskai saitei vai nospiediet \"Enter\" taustiņu", "Copied!" : "Nokopēts!", "Copy" : "Kopēt", "Not supported!" : "Nav atbalstīts!", "Press ⌘-C to copy." : "Spiet ⌘-C lai kopētu.", "Press Ctrl-C to copy." : "Spiet Ctrl-C lai kopētu.", "Resharing is not allowed" : "Atkārtota dalīšanās nav atļauta", + "Share to {name}" : "Dalīties ar {name}", "Share link" : "Koplietot saiti", "Link" : "Saite", "Password protect" : "Aizsargāt ar paroli", @@ -119,13 +125,20 @@ "Email link to person" : "Sūtīt saiti personai pa e-pastu", "Send" : "Sūtīt", "Allow upload and editing" : "Atļaut augšupielādi un rediģēšanu", + "Read only" : "Tikai lasāms", "Shared with you and the group {group} by {owner}" : "{owner} koplietoja ar jums un grupu {group}", "Shared with you by {owner}" : "{owner} koplietoja ar jums", "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} koplietots ar saiti", "group" : "grupa", "remote" : "attālināti", "email" : "e-pasts", + "shared by {sharer}" : "Koplietoja {sharer}", "Unshare" : "Pārtraukt koplietošanu", + "Can edit" : "Var rediģēt", + "Can create" : "Var izveidot", + "Can change" : "Var mainīt", + "Can delete" : "Var dzēst", + "Access control" : "Piekļuves vadība", "Could not unshare" : "Nevarēja pārtraukt koplietošanu", "Error while sharing" : "Kļūda, daloties", "Share details could not be loaded for this item." : "Šim nevarēja ielādēt koplietošanas detaļas.", @@ -135,7 +148,15 @@ "{sharee} (group)" : "{sharee} (grupa)", "{sharee} (remote)" : "{sharee} (attālināti)", "{sharee} (email)" : "{sharee} (e-pasts)", + "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", "Share" : "Koplietot", + "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu, federated cloud ID vai e-pasta adresi.", + "Share with other people by entering a user or group or a federated cloud ID." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu vai federated cloud ID.", + "Share with other people by entering a user or group or an email address." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu vai e-pasta adresi.", + "Name or email address..." : "Vārds vai e-pasta adrese...", + "Name or federated cloud ID..." : "Vārds vai federated cloud ID", + "Name, federated cloud ID or email address..." : "Vārds, federated cloud ID vai e-pasta adrese...", + "Name..." : "Vārds...", "Error" : "Kļūda", "Error removing share" : "Kļūda, noņemot koplietošanu", "restricted" : "ierobežots", @@ -152,11 +173,16 @@ "Hello {name}" : "Sveiks {name}", "new" : "jauns", "_download %n file_::_download %n files_" : ["lejupielādēt %n failus","lejupielādēt %n failus","lejupielādēt %n failus"], + "The update is in progress, leaving this page might interrupt the process in some environments." : "Notiek atjaunināšana, šīs lapas atstāšana var pārtraukt procesu dažās vidēs.", "Update to {version}" : "Atjaunināts uz {version}", "An error occurred." : "Radās kļūda.", "Please reload the page." : "Lūdzu, atkārtoti ielādējiet lapu.", + "The update was unsuccessful. For more information check our forum post covering this issue." : "Atjauninājums nebija veiksmīgs. Plašāku informāciju skatiet mūsu foruma rakstā par šo problēmu.", + "The update was unsuccessful. Please report this issue to the Nextcloud community." : "Atjauninājums nebija veiksmīgs. Lūdzu ziņojiet šo ķļūdu Nextcloud kopienā.", "Continue to Nextcloud" : "Turpināt ar Nextcloud", + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Atjaunināšana ir bijusi veiksmīga. Novirzīsim jūs uz Nextcloud pēc %n sekundēm.","Atjaunināšana ir bijusi veiksmīga. Novirzīsim jūs uz Nextcloud pēc %n sekundes.","Atjaunināšana ir bijusi veiksmīga. Novirzīsim jūs uz Nextcloud pēc %n sekundēm."], "Searching other places" : "Meklēt citās vietās", + "No search results in other folders for {tag}{filter}{endtag}" : "Nav nekas atrasts citā mapēs {tag}{filter}{endtag}", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} meklēšanas rezultāti citās mapēs","{count} meklēšanas rezultāti citās mapēs","{count} meklēšanas rezultāti citās mapēs"], "Personal" : "Personīgi", "Users" : "Lietotāji", @@ -169,6 +195,7 @@ "You can click here to return to %s." : "Jūs varat noklikšķināt šeit, lai atgrieztos uz %s.", "Internal Server Error" : "Iekšēja servera kļūda", "The server encountered an internal error and was unable to complete your request." : "Serverī radās iekšēja kļūda, un tas nevarēja pabeigt jūsu pieprasījumu.", + "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Lūdzu sazinieties ar servera administrātoru ja šī kļūda parādās vairākas reizes, lūdzu iekļaujiet zemāk redzamās tehniskās detaļas jūsu ziņojumā.", "More details can be found in the server log." : "Sīkāka informācija atrodama servera žurnāl failā.", "Technical details" : "Tehniskās detaļas", "Remote Address: %s" : "Attālinātā adrese: %s", @@ -181,12 +208,15 @@ "Trace" : "Izsekot", "Security warning" : "Drošības brīdinājums", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Visticamāk, jūsu datu direktorija un datnes ir pieejamas no interneta, jo .htaccess datne nedarbojas.", + "For information how to properly configure your server, please see the documentation." : "Priekš informācijas kā pareizi konfigurēt jūsu serveri skatiet dokumentācijā.", "Create an admin account" : "Izveidot administratora kontu", "Username" : "Lietotājvārds", "Storage & database" : "Krātuve & datubāze", "Data folder" : "Datu mape", "Configure the database" : "Konfigurēt datubāzi", "Only %s is available." : "Tikai %s ir pieejams.", + "Install and activate additional PHP modules to choose other database types." : "Instalējiet un aktivizējiet papildus PHP moduļus lai izvēlētos citus datubāžu tipus.", + "For more details check out the documentation." : "Sīkākai informācijai skatiet dokumentāciju.", "Database user" : "Datubāzes lietotājs", "Database password" : "Datubāzes parole", "Database name" : "Datubāzes nosaukums", @@ -195,10 +225,14 @@ "Please specify the port number along with the host name (e.g., localhost:5432)." : "Lūdzu, norādiet porta numuru kopā ar resursdatora nosaukumu (piemēram, localhost: 5432).", "Performance warning" : "Veiktspējas brīdinājums", "SQLite will be used as database." : "SQLite tiks izmantota kā datu bāze.", + "For larger installations we recommend to choose a different database backend." : "Priekš lielākām instalācijām mēs iesakām izvēlēties citu datubāzes serveri.", + "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "It sevišķi, ja, izmantojot darbvirsmas klientu, lai veiktu failu sinhronizāciju SQLite izmantošana nav ieteicama.", "Finish setup" : "Pabeigt iestatīšanu", "Finishing …" : "Pabeidz ...", "Need help?" : "Vajadzīga palīdzība?", "See the documentation" : "Skatiet dokumentāciju", + "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Šai programmai nepieciešams JavaScript. Lūdzu {linkstart}ieslēdziet JavasScript{linkend} un pārlādējiet lapu.", + "More apps" : "Vairāk programmu", "Search" : "Meklēt", "This action requires you to confirm your password:" : "Šī darbība ir nepieciešama, lai apstiprinātu jūsu paroli:", "Confirm your password" : "Apstipriniet paroli", @@ -212,29 +246,44 @@ "Log in" : "Ierakstīties", "Stay logged in" : "Palikt ierakstītam", "Alternative Logins" : "Alternatīvās pieteikšanās", + "App token" : "Programmas pilnvara", + "Alternative login using app token" : "Alternatīvās pieteikšanās izmantojot programmas pilnvaru.", + "Redirecting …" : "Novirzam ...", "New password" : "Jauna parole", "New Password" : "Jauna parole", "Reset password" : "Mainīt paroli", "Two-factor authentication" : "Divpakāpju autentifikācija", + "Enhanced security is enabled for your account. Please authenticate using a second factor." : "Uzlabota drošība ir iespējota jūsu kontam. Lūdzu autentificējies izmantojot otru faktoru.", "Cancel log in" : "Atcelt pierakstīšanos", "Use backup code" : "Izmantojiet dublēšanas kodu", + "Error while validating your second factor" : "Kļūda validējot jūsu otru faktoru.", "You are accessing the server from an untrusted domain." : "Jums ir piekļuve serverim no neuzticama domēna.", + "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Lūdzu sazinieties ar jūsu administrātoru. Ja jūs esat šīs instances administrātors, konfigurējiet \"trusted_domains\" iestatījumu config/config.php failā. Piemēra konfigurācija ir pieejama config/config.sample.php failā.", + "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Atkarīgi no jūsu konfigurācijas, kā administrātors jūs varētu izmantot zemāk redzamo pogu lai uzticētos šim domēnam.", "Add \"%s\" as trusted domain" : "Pievienot \"%s\" kā uzticamu domēnu", "App update required" : "Programmai nepieciešama atjaunināšana", "%s will be updated to version %s" : "%s tiks atjaunināts uz versiju %s", "These apps will be updated:" : "Šīs programmas tiks atjauninātas:", + "These incompatible apps will be disabled:" : "Šīs nesaderīgās programmas tiks atspējotas:", "The theme %s has been disabled." : "Tēma %s ir atspējota.", + "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Lūdzu pārliecinieties ka datubāze, config mape un data mape ir dublētas pirms turpināšanas.", "Start update" : "Sākt atjaunināšanu", + "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Lai izvairītos no noliedzes ar lielākām instalācijām, jūs varat palaist sekojošo komandu no jūsu instalācijas mapes:", "Detailed logs" : "Detalizētas informācijas žurnālfaili", "Update needed" : "Nepieciešama atjaunināšana", + "Please use the command line updater because you have a big instance with more than 50 users." : "Lūdzu, izmantojiet komandrindas atjauninātāju, jo jums ir vairāk nekā 50 lietotāji.", "For help, see the documentation." : "Lai saņemtu palīdzību, skatiet dokumentāciju.", + "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Es zinu ka ja es turpināšu atjauninājumu caur tīmekļa atjauninātāju ir risks ka pieprasījumam būs noliedze , kas var radīt datu zudumu, bet man ir dublējumkopija un es zinu kā atjaunot instanci neveiksmes gadijumā.", + "Upgrade via web on my own risk" : "Atjaunināt caur tīmekļa atjauninātāju uz mana paša risku.", "This %s instance is currently in maintenance mode, which may take a while." : "Šis %s serveris pašlaik darbojas uzturēšanas režīmā, tas var ilgt kādu laiku.", + "This page will refresh itself when the %s instance is available again." : "Lapa tiks atsvaidzināta kad %s instance atkal ir pieejama.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Sazinieties ar sistēmas administratoru, ja šis ziņojums tiek rādīts.. vai parādījās negaidīti", "Thank you for your patience." : "Paldies par jūsu pacietību.", "Problem loading page, reloading in 5 seconds" : "Problēma ielādējot lapu, pārlādēšana pēc 5 sekundēm", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.
If you are not sure what to do, please contact your administrator before you continue.
Do you really want to continue?" : "Jūsu faili ir šifrēti. Ja neesat iespējojis atkopšanas atslēgu, nevarēsiet atgūt datus atpakaļ, pēc jūsu paroles atiestatīšanas.
Ja neesat pārliecināts par to, ko darīt, lūdzu, pirms turpināt, sazinieties ar administratoru.
Vai tiešām vēlaties turpināt?", "Ok" : "Labi", "Error while unsharing" : "Kļūda, beidzot dalīties", + "can reshare" : "var atkārtoti kopīgot", "can edit" : "var rediģēt", "can create" : "var izveidot", "can change" : "var mainīt", @@ -247,11 +296,13 @@ "Share with users or groups..." : "Koplietot ar lietotājiem vai grupām...", "Share with users, groups or by mail..." : "Koplietot ar lietotājiem, grupām vai izmantojot e-pastu...", "Share with users, groups or remote users..." : "Koplietot ar lietotājiem, grupām vai attāliem lietotājiem...", + "Share with users, groups, remote users or by mail..." : "Koplietot ar lietotājiem, grupām, attāliem lietotājiem vai izmantojot e-pastu...", "Share with users..." : "Koplietots ar lietotājiem...", "The object type is not specified." : "Nav norādīts objekta tips.", "Enter new" : "Ievadīt jaunu", "Add" : "Pievienot", "Edit tags" : "Rediģēt atzīmes", + "Error loading dialog template: {error}" : "Kļūda ielādējot dialoga veidni: {error}", "The update was successful. Redirecting you to Nextcloud now." : "Atjaunināšana ir bijusi veiksmīga. Tagad novirzīsim jūs uz Nextcloud.", "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Sveiki,\n\ninformējam, ka %s koplietoja ar jums %s.\nApskati to: %s\n", "The share will expire on %s." : "Koplietošana beigsies %s.", diff --git a/core/l10n/nb.js b/core/l10n/nb.js index 21e40359b2..58258a8dac 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 77f036d1ee..7ff847593f 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 0c348180d6..6a347d4ce3 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 ...", "There were problems with the code integrity check. More information…" : "Au apărut probleme la verificarea integrității codului. Mai multe informații…", "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 ec0daa559d..3e9b393e5e 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 ...", "There were problems with the code integrity check. More information…" : "Au apărut probleme la verificarea integrității codului. Mai multe informații…", "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/ru.js b/core/l10n/ru.js index 48c411811d..6d6899d58c 100644 --- a/core/l10n/ru.js +++ b/core/l10n/ru.js @@ -198,7 +198,7 @@ OC.L10N.register( "These are your search results" : "Эти результаты поиска", "new" : "новый", "_download %n file_::_download %n files_" : ["скачать %n файл","скачать %n файла","скачать %n файлов","скачать %n файлов"], - "The update is in progress, leaving this page might interrupt the process in some environments." : "Выполняется обновление. Уход с этой страницы в некоторых случаях может прервать процесс.", + "The update is in progress, leaving this page might interrupt the process in some environments." : "Выполняется обновление. Не уходите с этой страницы, т.к. в некоторых случаях может прервать процесс.", "Update to {version}" : "Обновление до {version}", "An error occurred." : "Произошла ошибка.", "Please reload the page." : "Обновите страницу.", diff --git a/core/l10n/ru.json b/core/l10n/ru.json index 6de568a5bb..9f73b5d37c 100644 --- a/core/l10n/ru.json +++ b/core/l10n/ru.json @@ -196,7 +196,7 @@ "These are your search results" : "Эти результаты поиска", "new" : "новый", "_download %n file_::_download %n files_" : ["скачать %n файл","скачать %n файла","скачать %n файлов","скачать %n файлов"], - "The update is in progress, leaving this page might interrupt the process in some environments." : "Выполняется обновление. Уход с этой страницы в некоторых случаях может прервать процесс.", + "The update is in progress, leaving this page might interrupt the process in some environments." : "Выполняется обновление. Не уходите с этой страницы, т.к. в некоторых случаях может прервать процесс.", "Update to {version}" : "Обновление до {version}", "An error occurred." : "Произошла ошибка.", "Please reload the page." : "Обновите страницу.", diff --git a/core/l10n/sq.js b/core/l10n/sq.js index b8228adc73..5da0e92c38 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: ", @@ -59,8 +61,11 @@ OC.L10N.register( "Loading your contacts …" : "Kontaktet tuaja po ngarkohen ...", "Looking for {term} …" : "Duke kërkuar {për] ...", "There were problems with the code integrity check. More information…" : "Pati probleme me kontrollin e integritetit të kodit. Më tepër të dhëna…", + "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.", @@ -80,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"], @@ -107,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 documentation." : "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ë documentation.", "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 memcached wiki about both modules." : "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 wiki-n mbi memcached rreth të dy moduleve.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our documentation. (List of invalid files… / Rescan…)" : "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 dokumentimi ynë. (Listë e kartelave të pavlefshme… / Rikontrollojini…)", + "The PHP OPcache is not properly configured. For better performance we recommend to use following settings in the php.ini:" : "PHP OPcache nuk ësht konfiguruar siç duhet. Për performancë më të mirë ne rekomandojmë të përdorni konfigurimet e mëposhtme në php.ini :", + "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 security tips." : "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ë këshillat tona mbi sigurinë.", "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our security tips." : "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 këshillat tona mbi sigurinë.", @@ -119,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", @@ -170,7 +196,7 @@ OC.L10N.register( "Hello {name}, the weather is {weather}" : "Tungjatjeta {name}, koha është {weather}", "Hello {name}" : "Tungjatjeta {name}", "These are your search results" : "Këto janë rezultatet e juaj të kërkimit" : "Këto janë rezultatet e juaj të kërkimit" : "以下是您的搜尋結果", "new" : "新", "_download %n file_::_download %n files_" : ["下載 %n 個檔案"], "The update is in progress, leaving this page might interrupt the process in some environments." : "正在更新,在某些狀況下,離開本頁面可能會導致更新中斷", @@ -181,8 +203,11 @@ OC.L10N.register( "An error occurred." : "發生錯誤", "Please reload the page." : "請重新整理頁面", "The update was unsuccessful. For more information check our forum post covering this issue." : "更新失敗,檢視論壇上的文章來瞭解更多", + "The update was unsuccessful. Please report this issue to the Nextcloud community." : "更新不成功。請在Nextcloud社群回報此問題。", "Continue to Nextcloud" : "繼續前往 Nextcloud", + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["更新成功,將在 %n 秒後重導向至 Nextcloud"], "Searching other places" : "搜尋其他位置", + "No search results in other folders for {tag}{filter}{endtag}" : "{tag}{filter}{endtag} 在其他資料夾中沒有比對結果", "_{count} search result in another folder_::_{count} search results in other folders_" : ["在其他資料夾中有 {count} 比結果"], "Personal" : "個人", "Users" : "使用者", @@ -208,6 +233,7 @@ OC.L10N.register( "Trace" : "追蹤", "Security warning" : "安全性警告", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "您的資料目錄看起來可以被 Internet 公開存取,因為 .htaccess 設定並未生效。", + "For information how to properly configure your server, please see the documentation." : "關於如何有效設定您伺服器的資訊,請參閱此說明文件", "Create an admin account" : "建立一個管理者帳號", "Username" : "使用者名稱", "Storage & database" : "儲存空間和資料庫", @@ -221,6 +247,7 @@ OC.L10N.register( "Database name" : "資料庫名稱", "Database tablespace" : "資料庫 tablespace", "Database host" : "資料庫主機", + "Please specify the port number along with the host name (e.g., localhost:5432)." : "請將具體指定連接埠號與主機名稱。(例如:localhost:5432)", "Performance warning" : "效能警告", "SQLite will be used as database." : "將使用 SQLite 為資料庫", "For larger installations we recommend to choose a different database backend." : "在大型安裝中建議使用其他種資料庫", @@ -244,10 +271,15 @@ OC.L10N.register( "Log in" : "登入", "Stay logged in" : "保持登入狀態", "Alternative Logins" : "其他登入方法", + "You are about to grant \"%s\" access to your %s account." : "您將授予「%s」存取您的%s帳戶", + "App token" : "App token", + "Alternative login using app token" : "透過應用程式憑證的方式登入", + "Redirecting …" : "重新導向…", "New password" : "新密碼", "New Password" : "新密碼", "Reset password" : "重設密碼", "Two-factor authentication" : "二階段認證", + "Enhanced security is enabled for your account. Please authenticate using a second factor." : "您的帳號已啟用進階安全機制,請使用第二階段來認證。", "Cancel log in" : "取消登入", "Use backup code" : "使用備用認證碼", "Error while validating your second factor" : "驗證二階段因子發生錯誤", @@ -265,6 +297,10 @@ OC.L10N.register( "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "在大型安裝上,為了避免升級請求逾時,你也可以在安裝目錄執行下列指令:", "Detailed logs" : "詳細記錄檔", "Update needed" : "需要更新", + "Please use the command line updater because you have a big instance with more than 50 users." : "因為您有超過50名使用者,服務規模較大,請透過命令提示字元介面更新", + "For help, see the documentation." : "請參閱說明文件取得協助。", + "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." : "若我繼續透過網頁介面更新時我已了解有其風險,若請求逾時可能導致資料遺失,萬一更新失敗,我已準備好備份並知道如何回復運作。", + "Upgrade via web on my own risk" : "願意承擔風險透過網頁更新", "This %s instance is currently in maintenance mode, which may take a while." : "這個 %s 安裝目前處於維護模式,需要一段時間恢復。", "This page will refresh itself when the %s instance is available again." : "%s 安裝恢復可用之後,本頁會自動重新整理", "Contact your system administrator if this message persists or appeared unexpectedly." : "若這個訊息持續出現,請聯絡系統管理員", @@ -276,7 +312,19 @@ OC.L10N.register( "Error while unsharing" : "取消分享時發生錯誤", "can reshare" : "允許轉分享", "can edit" : "可編輯", + "can create" : "允許新增", + "can change" : "允許更動", + "can delete" : "允許刪除", "access control" : "存取控制", + "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "透過使用他人的聯盟式雲端ID如username@example.com/nextcloud,可以在別的伺服器上分享給其他人", + "Share with users or by mail..." : "與使用者或透過email分享...", + "Share with users or remote users..." : "與使用者或遠端使用者分享…", + "Share with users, remote users or by mail..." : "與用戶、遠端使用者或透過email分享 ...", + "Share with users or groups..." : "與使用者和群組分享...", + "Share with users, groups or by mail..." : "與用戶、群組或透過email分享 ...", + "Share with users, groups or remote users..." : "與用戶、群組或是遠端使用者分享 ...", + "Share with users, groups, remote users or by mail..." : "與用戶、群組、遠端使用者或是透過email分享 ...", + "Share with users..." : "分享給其他使用者…", "The object type is not specified." : "未指定物件類型", "Enter new" : "輸入新的", "Add" : "增加", diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json index 11121e9d58..c4a5b6eb60 100644 --- a/core/l10n/zh_TW.json +++ b/core/l10n/zh_TW.json @@ -18,6 +18,8 @@ "Couldn't reset password because the token is expired" : "無法重設密碼,因為 token 過期", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "無法寄送重設 email ,因為這個帳號沒有設定 email 地址,請聯絡您的系統管理員。", "Password reset" : "密碼重設", + "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "點取下方的按鈕以重設您的密碼。 如果您沒有要求重設密碼的話,請忽略這封信。", + "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "點取下方的連結以重設您的密碼。 如果您沒有要求重設密碼的話,請忽略這封信。", "Reset your password" : "重設您的密碼", "%s password reset" : "%s 密碼重設", "Couldn't send reset email. Please contact your administrator." : "無法寄送重設 email ,請聯絡系統管理員", @@ -36,6 +38,9 @@ "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "檢查是否有可更新的資料庫格式(若資料庫較大,可能需要一段時間)", "Checked database schema update" : "已檢查資料庫格式更新", "Checking updates of apps" : "檢查 app 更新", + "Checking for update of app \"%s\" in appstore" : "從應用商店檢查 \"%s\" 的更新", + "Update app \"%s\" from appstore" : "從應用商店更新 \"%s\"", + "Checked for update of app \"%s\" in appstore" : "從應用商店檢查 \"%s\" 的更新", "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "檢查 %s 是否有可更新的資料庫格式(若資料庫較大,可能需要一段時間)", "Checked database schema update for apps" : "已檢查應用程式的資料庫格式更新", "Updated \"%s\" to %s" : "已更新 %s 到 %s", @@ -100,8 +105,18 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "您的網頁伺服器無法提供檔案同步功能,因為 WebDAV 界面有問題", "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our documentation." : "您的網頁伺服器並未正確設定來解析 \"{url}\" ,請查看我們的說明文件以瞭解更多", "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." : "伺服器沒有網際網路連線,有些功能,像是外部儲存、更新版通知將無法運作。從遠端存取資料或是寄送 email 通知可能也無法運作。建議您設定好網際網路連線以使用所有功能。", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our documentation." : "記憶體快取尚未設定。如果可以,請完成設定來提升效能。更多資訊請查閱說明文件", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our documentation." : "/dev/urandom出於安全原因很遺憾的無法被PHP讀取,進一步訊息可參考我們的文件", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by the PHP Group as soon as your distribution supports it." : "你目前正運行PHP{version}。基於您的部屬的版本可支援與PHP社群提供的性能與安全性更新,我們很建議您更新您的PHP版本會更好", + "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 documentation." : "反向代理標頭設定不正確,或者您正透過可信任的代理伺服器存取Nextcloud。若您不是透過可信任的代理伺服器存取Nextcloud,此安全問題會允許攻擊者對Nextcloud假冒IP位址。更多資訊請查閱說明文件。", + "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 memcached wiki about both modules." : "Memcached是用於分散式緩存的設置,但是目前安裝了錯誤的PHP模組為「memcache」。\\OC\\Memcache\\Memcached僅支援「memcached」而不是「memcache」。請參閱memcached wiki了解兩種模組資訊", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our documentation. (List of invalid files… / Rescan…)" : "有些檔案並未通過完整性檢查。可參閱詳細資訊,如我們的說明文件(無效檔案列表/重新檢查)以解決這些問題。", + "The PHP OPcache is not properly configured. For better performance we recommend to use following settings in the php.ini:" : "PHP的OPcache功能並未被妥善設定。為了有更好的效能表現我們建議在php.ini檔案中使用以下設定:", + "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." : "無法取得PHP中的「set_time_limit」函式。這可能導致執行過程中被終止並造成不完整安裝。我們強烈建議啟用該函式。", "Error occurred while checking server setup" : "檢查伺服器設定時發生錯誤", + "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." : "您的資料目錄和檔案看來可以被公開存取,這表示 .htaccess 檔案並未生效,我們強烈建議您設定您的網頁伺服器,拒絕資料目錄被公開存取,或者將您的資料目錄移出網頁伺服器根目錄。", "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." : "\"{header}\" HTTP 標頭配置與 \"{expected}\"不一樣,這是一個潛在安全性或者隱私上的風險,因此我們建議您調整此設定", + "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 security tips." : "此HTTP「強制安全傳輸」標頭並未設定持續至少\"{seconds}\"秒。為了提高安全性,我們的在安全提示中有詳述並建議啟用HSTS。", "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our security tips." : "您正在藉由 HTTP 訪問此網站,如我們的安全性提示所述,我們強烈建議設定您的伺服器須要求使用 HTTPS", "Shared" : "已分享", "Shared with {recipients}" : "與 {recipients} 分享", @@ -146,6 +161,8 @@ "Could not unshare" : "無法取消分享", "Error while sharing" : "分享時發生錯誤", "Share details could not be loaded for this item." : "無法載入分享細節", + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["至少需要 {count} 字才能自動完成"], + "This list is maybe truncated - please refine your search term to see more results." : "這個列表有可能並不完全 - 請使用更好的搜尋字眼以查看更多的結果", "No users or groups found for {search}" : "沒有群組或使用者符合 {search}", "No users found for {search}" : "沒有使用者符合 {search}", "An error occurred. Please try again" : "發生錯誤,請再試一次", @@ -154,7 +171,11 @@ "{sharee} (email)" : "{sharee} (email)", "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", "Share" : "分享", + "Share with other people by entering a user or group, a federated cloud ID or an email address." : "透過輸入使用者、群組名稱,聯盟式雲端ID或e-mail信箱來分享給其他人。 ", + "Share with other people by entering a user or group or a federated cloud ID." : "透過輸入使用者、群組名稱,聯盟式雲端ID來分享給其他人。", + "Share with other people by entering a user or group or an email address." : "透過輸入使用者、群組名稱或email來分享給其他人。", "Name or email address..." : "名字或電子郵件地址", + "Name or federated cloud ID..." : "名稱或者聯盟式雲端ID...", "Name, federated cloud ID or email address..." : "名字、聯邦雲 ID 或是電子郵件地址", "Name..." : "名字…", "Error" : "錯誤", @@ -172,6 +193,7 @@ "sunny" : "晴朗的", "Hello {name}, the weather is {weather}" : "哈囉 {name}, 天氣是 {weather}", "Hello {name}" : "哈囉 {name}", + "These are your search results" : "以下是您的搜尋結果", "new" : "新", "_download %n file_::_download %n files_" : ["下載 %n 個檔案"], "The update is in progress, leaving this page might interrupt the process in some environments." : "正在更新,在某些狀況下,離開本頁面可能會導致更新中斷", @@ -179,8 +201,11 @@ "An error occurred." : "發生錯誤", "Please reload the page." : "請重新整理頁面", "The update was unsuccessful. For more information check our forum post covering this issue." : "更新失敗,檢視論壇上的文章來瞭解更多", + "The update was unsuccessful. Please report this issue to the Nextcloud community." : "更新不成功。請在Nextcloud社群回報此問題。", "Continue to Nextcloud" : "繼續前往 Nextcloud", + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["更新成功,將在 %n 秒後重導向至 Nextcloud"], "Searching other places" : "搜尋其他位置", + "No search results in other folders for {tag}{filter}{endtag}" : "{tag}{filter}{endtag} 在其他資料夾中沒有比對結果", "_{count} search result in another folder_::_{count} search results in other folders_" : ["在其他資料夾中有 {count} 比結果"], "Personal" : "個人", "Users" : "使用者", @@ -206,6 +231,7 @@ "Trace" : "追蹤", "Security warning" : "安全性警告", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "您的資料目錄看起來可以被 Internet 公開存取,因為 .htaccess 設定並未生效。", + "For information how to properly configure your server, please see the documentation." : "關於如何有效設定您伺服器的資訊,請參閱此說明文件", "Create an admin account" : "建立一個管理者帳號", "Username" : "使用者名稱", "Storage & database" : "儲存空間和資料庫", @@ -219,6 +245,7 @@ "Database name" : "資料庫名稱", "Database tablespace" : "資料庫 tablespace", "Database host" : "資料庫主機", + "Please specify the port number along with the host name (e.g., localhost:5432)." : "請將具體指定連接埠號與主機名稱。(例如:localhost:5432)", "Performance warning" : "效能警告", "SQLite will be used as database." : "將使用 SQLite 為資料庫", "For larger installations we recommend to choose a different database backend." : "在大型安裝中建議使用其他種資料庫", @@ -242,10 +269,15 @@ "Log in" : "登入", "Stay logged in" : "保持登入狀態", "Alternative Logins" : "其他登入方法", + "You are about to grant \"%s\" access to your %s account." : "您將授予「%s」存取您的%s帳戶", + "App token" : "App token", + "Alternative login using app token" : "透過應用程式憑證的方式登入", + "Redirecting …" : "重新導向…", "New password" : "新密碼", "New Password" : "新密碼", "Reset password" : "重設密碼", "Two-factor authentication" : "二階段認證", + "Enhanced security is enabled for your account. Please authenticate using a second factor." : "您的帳號已啟用進階安全機制,請使用第二階段來認證。", "Cancel log in" : "取消登入", "Use backup code" : "使用備用認證碼", "Error while validating your second factor" : "驗證二階段因子發生錯誤", @@ -263,6 +295,10 @@ "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "在大型安裝上,為了避免升級請求逾時,你也可以在安裝目錄執行下列指令:", "Detailed logs" : "詳細記錄檔", "Update needed" : "需要更新", + "Please use the command line updater because you have a big instance with more than 50 users." : "因為您有超過50名使用者,服務規模較大,請透過命令提示字元介面更新", + "For help, see the documentation." : "請參閱說明文件取得協助。", + "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." : "若我繼續透過網頁介面更新時我已了解有其風險,若請求逾時可能導致資料遺失,萬一更新失敗,我已準備好備份並知道如何回復運作。", + "Upgrade via web on my own risk" : "願意承擔風險透過網頁更新", "This %s instance is currently in maintenance mode, which may take a while." : "這個 %s 安裝目前處於維護模式,需要一段時間恢復。", "This page will refresh itself when the %s instance is available again." : "%s 安裝恢復可用之後,本頁會自動重新整理", "Contact your system administrator if this message persists or appeared unexpectedly." : "若這個訊息持續出現,請聯絡系統管理員", @@ -274,7 +310,19 @@ "Error while unsharing" : "取消分享時發生錯誤", "can reshare" : "允許轉分享", "can edit" : "可編輯", + "can create" : "允許新增", + "can change" : "允許更動", + "can delete" : "允許刪除", "access control" : "存取控制", + "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "透過使用他人的聯盟式雲端ID如username@example.com/nextcloud,可以在別的伺服器上分享給其他人", + "Share with users or by mail..." : "與使用者或透過email分享...", + "Share with users or remote users..." : "與使用者或遠端使用者分享…", + "Share with users, remote users or by mail..." : "與用戶、遠端使用者或透過email分享 ...", + "Share with users or groups..." : "與使用者和群組分享...", + "Share with users, groups or by mail..." : "與用戶、群組或透過email分享 ...", + "Share with users, groups or remote users..." : "與用戶、群組或是遠端使用者分享 ...", + "Share with users, groups, remote users or by mail..." : "與用戶、群組、遠端使用者或是透過email分享 ...", + "Share with users..." : "分享給其他使用者…", "The object type is not specified." : "未指定物件類型", "Enter new" : "輸入新的", "Add" : "增加", diff --git a/core/register_command.php b/core/register_command.php index bfb1138c5e..02bdbedc6e 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() )); @@ -82,12 +83,12 @@ if (\OC::$server->getConfig()->getSystemValue('installed', false)) { $application->add(new OC\Core\Command\Config\System\GetConfig(\OC::$server->getSystemConfig())); $application->add(new OC\Core\Command\Config\System\SetConfig(\OC::$server->getSystemConfig())); - $application->add(new OC\Core\Command\Db\GenerateChangeScript()); $application->add(new OC\Core\Command\Db\ConvertType(\OC::$server->getConfig(), new \OC\DB\ConnectionFactory(\OC::$server->getSystemConfig()))); $application->add(new OC\Core\Command\Db\ConvertMysqlToMB4(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection(), \OC::$server->getURLGenerator(), \OC::$server->getLogger())); $application->add(new OC\Core\Command\Db\Migrations\StatusCommand(\OC::$server->getDatabaseConnection())); $application->add(new OC\Core\Command\Db\Migrations\MigrateCommand(\OC::$server->getDatabaseConnection())); $application->add(new OC\Core\Command\Db\Migrations\GenerateCommand(\OC::$server->getDatabaseConnection())); + $application->add(new OC\Core\Command\Db\Migrations\GenerateFromSchemaFileCommand(\OC::$server->getConfig(), \OC::$server->getAppManager(), \OC::$server->getDatabaseConnection())); $application->add(new OC\Core\Command\Db\Migrations\ExecuteCommand(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig())); $application->add(new OC\Core\Command\Encryption\Disable(\OC::$server->getConfig())); diff --git a/core/routes.php b/core/routes.php index c167dad2f9..a572c83d74 100644 --- a/core/routes.php +++ b/core/routes.php @@ -89,6 +89,10 @@ $this->create('files.viewcontroller.showFile', '/f/{fileid}')->action(function($ }); // Call routes +/** + * @suppress PhanUndeclaredClassConstant + * @suppress PhanUndeclaredClassMethod + */ $this->create('spreed.pagecontroller.showCall', '/call/{token}')->action(function($urlParams) { if (class_exists(\OCA\Spreed\AppInfo\Application::class, false)) { $app = new \OCA\Spreed\AppInfo\Application($urlParams); diff --git a/core/templates/403.php b/core/templates/403.php index 7d07c72c87..e053fad764 100644 --- a/core/templates/403.php +++ b/core/templates/403.php @@ -1,10 +1,10 @@ printPage(); + + $urlGenerator = \OC::$server->getURLGenerator(); + header('Location: ' . $urlGenerator->getAbsoluteURL('/')); exit; } // @codeCoverageIgnoreEnd diff --git a/core/templates/404.php b/core/templates/404.php index cc45cbeaf5..0f7318e937 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/core/templates/layout.guest.php b/core/templates/layout.guest.php index d97da10984..9a4f9c3719 100644 --- a/core/templates/layout.guest.php +++ b/core/templates/layout.guest.php @@ -33,7 +33,6 @@ - diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index 337032ab66..8dfd86731c 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -31,7 +31,7 @@
- - - *dbprefix*appconfig - - - - - appid - text - - true - 32 - - - - configkey - text - - true - 64 - - - - configvalue - clob - false - - - - appconfig_appid_key_index - true - true - - appid - ascending - - - configkey - ascending - - - - appconfig_config_key_index - - configkey - ascending - - - - appconfig_appid_key - - appid - ascending - - - - - -
- - - - - *dbprefix*storages - - - - - id - text - - false - 64 - - - - numeric_id - integer - 0 - true - 1 - 4 - - - - available - integer - 1 - true - - - - last_checked - integer - - - - storages_id_index - true - - id - ascending - - - - - -
- - - - - *dbprefix*mounts - - - - - id - integer - 0 - true - 1 - 4 - - - - storage_id - integer - true - - - - - root_id - integer - true - - - - user_id - text - true - 64 - - - - mount_point - text - true - 4000 - - - - mount_id - integer - - - - mounts_user_index - false - - user_id - ascending - - - - - mounts_storage_index - false - - storage_id - ascending - - - - - mounts_root_index - false - - root_id - ascending - - - - - mounts_mount_id_index - false - - mount_id - ascending - - - - - mounts_user_root_index - true - - user_id - ascending - - - root_id - ascending - - - - - -
- - - - - *dbprefix*mimetypes - - - - - id - integer - 0 - true - 1 - 4 - - - - mimetype - text - - true - 255 - - - - mimetype_id_index - true - - mimetype - ascending - - - - - -
- - - - - *dbprefix*filecache - - - - - fileid - integer - 0 - true - 1 - 4 - - - - - storage - integer - - true - 4 - - - - path - text - - false - 4000 - - - - path_hash - text - - true - 32 - - - - - parent - integer - - true - 4 - - - - name - text - - false - 250 - - - - - mimetype - integer - - true - 4 - - - - - mimepart - integer - - true - 4 - - - - size - integer - - true - 8 - - - - mtime - integer - - true - 4 - - - - storage_mtime - integer - - true - 4 - - - - encrypted - integer - 0 - true - 4 - - - - unencrypted_size - integer - 0 - true - 8 - - - - etag - text - - false - 40 - - - - permissions - integer - 0 - false - 4 - - - - checksum - text - - false - 255 - - - - - fs_storage_path_hash - true - - storage - ascending - - - path_hash - ascending - - - - - fs_parent_name_hash - - parent - ascending - - - name - ascending - - - - - fs_storage_mimetype - - storage - ascending - - - mimetype - ascending - - - - - fs_storage_mimepart - - storage - ascending - - - mimepart - ascending - - - - - fs_storage_size - - storage - ascending - - - size - ascending - - - fileid - - - - - -
- - - - - *dbprefix*group_user - - - - - - gid - text - - true - 64 - - - - - uid - text - - true - 64 - - - - gu_gid_uid_index - true - true - - gid - ascending - - - uid - ascending - - - - - gu_uid_index - - uid - ascending - - - - - -
- - - - - *dbprefix*group_admin - - - - - - gid - text - - true - 64 - - - - - uid - text - - true - 64 - - - group_admin_uid - - uid - ascending - - - - - ga_gid_uid_index - true - true - - gid - ascending - - - uid - ascending - - - - - -
- - - - - *dbprefix*groups - - - - - gid - text - - true - 64 - - - - groups_pKey - true - - gid - ascending - - - - - -
- - - - - *dbprefix*preferences - - - - - - userid - text - - true - 64 - - - - appid - text - - true - 32 - - - - configkey - text - - true - 64 - - - - configvalue - clob - false - - - - pref_userid_appid_key_index - true - true - - userid - ascending - - - appid - ascending - - - configkey - ascending - - - - - -
- - - - - *dbprefix*properties - - - - - id - 1 - integer - 0 - true - 4 - - - - - userid - text - - true - 64 - - - - propertypath - text - - true - 255 - - - - propertyname - text - - true - 255 - - - - propertyvalue - clob - true - - - - property_index - - userid - ascending - - - - - -
- - - - - *dbprefix*share - - - - - id - 1 - integer - 0 - true - 4 - - - - - share_type - integer - 0 - true - 1 - - - - - share_with - text - - false - 255 - - - password - text - - false - 255 - - - - - - uid_owner - text - - true - 64 - - - - - - uid_initiator - text - - false - 64 - - - - - - - parent - integer - false - 4 - - - - - item_type - text - - true - 64 - - - - - item_source - text - - false - 255 - - - - item_target - text - - false - 255 - - - - - file_source - integer - false - 4 - - - - file_target - text - - false - 512 - - - - - permissions - integer - 0 - true - 1 - - - - - stime - integer - 0 - true - 8 - - - - - accepted - integer - 0 - true - 1 - - - - - expiration - timestamp - - false - - - - token - text - - false - 32 - - - - mail_send - integer - 0 - true - 1 - - - - share_name - text - - false - 64 - - - - item_share_type_index - - item_type - ascending - - - share_type - ascending - - - - file_source_index - - file_source - ascending - - - - token_index - - token - ascending - - - - -
- - - - - *dbprefix*jobs - - - - - id - integer - 0 - true - 1 - true - 4 - - - - class - text - - true - 255 - - - - argument - text - - true - 4000 - - - - - last_run - integer - - false - - - - - last_checked - integer - - false - - - - - reserved_at - integer - - false - - - - - execution_duration - integer - - true - - - - job_class_index - - class - ascending - - - - - -
- - - - - *dbprefix*users - - - - - uid - text - - true - 64 - - - - displayname - text - - 64 - - - - password - text - - true - 255 - - - - users_pKey - true - - uid - ascending - - - - - -
- - - *dbprefix*authtoken - - - - - id - integer - 0 - true - 1 - true - 4 - - - - - uid - text - - true - 64 - - - - login_name - text - - true - 64 - - - - password - clob - - false - - - - name - clob - - true - - - - token - text - - true - 200 - - - - type - integer - 0 - true - true - 2 - - - - remember - integer - 0 - true - true - 1 - - - - last_activity - integer - 0 - true - true - 4 - - - - last_check - integer - 0 - true - true - 4 - - - - scope - clob - - false - - - - authtoken_token_index - true - - token - ascending - - - - - authtoken_last_activity_index - - last_activity - ascending - - - - -
- - - - - *dbprefix*bruteforce_attempts - - - - id - integer - 0 - true - 1 - true - 4 - - - - action - text - - true - 64 - - - - occurred - integer - 0 - true - true - 4 - - - - ip - text - - true - 255 - - - - subnet - text - - true - 255 - - - - metadata - text - - true - 255 - - - - bruteforce_attempts_ip - - ip - ascending - - - - bruteforce_attempts_subnet - - subnet - ascending - - - - - -
- - - - - *dbprefix*vcategory - - - - - id - integer - 0 - true - 1 - true - 4 - - - - - uid - text - - true - 64 - - - - type - text - - true - 64 - - - - category - text - - true - 255 - - - - uid_index - - uid - ascending - - - - - type_index - - type - ascending - - - - - category_index - - category - ascending - - - - -
- - - - - *dbprefix*vcategory_to_object - - - - - objid - integer - 0 - true - true - 4 - - - - - categoryid - integer - 0 - true - true - 4 - - - - type - text - - true - 64 - - - - true - true - category_object_index - - categoryid - ascending - - - objid - ascending - - - type - ascending - - - - - vcategory_objectd_index - - objid - ascending - - - type - ascending - - - - - -
- - - - *dbprefix*systemtag - - - - - id - integer - 0 - true - 1 - true - 4 - - - - - name - text - - true - 64 - - - - - visibility - integer - 1 - true - 1 - - - - - editable - integer - 1 - true - 1 - - - - tag_ident - true - - name - ascending - - - visibility - ascending - - - editable - ascending - - - - -
- - - - - *dbprefix*systemtag_object_mapping - - - - - - objectid - text - - true - 64 - - - - - objecttype - text - - true - 64 - - - - - systemtagid - integer - 0 - true - true - 4 - - - - true - mapping - - objecttype - ascending - - - objectid - ascending - - - systemtagid - ascending - - - - - -
- - - - - *dbprefix*systemtag_group - - - - - - systemtagid - integer - 0 - true - true - 4 - - - - gid - string - true - - - - systemtag_group - true - true - - gid - ascending - - - systemtagid - ascending - - - - - -
- - - - - *dbprefix*privatedata - - - - - keyid - integer - 0 - true - true - 4 - 1 - - - - - user - text - - true - 64 - - - - app - text - - true - 255 - - - - key - text - - true - 255 - - - - value - text - - true - 255 - - - - true - true - keyid_index - - keyid - ascending - - - - - -
- - - - - *dbprefix*file_locks - - - - - id - integer - 0 - true - true - 4 - 1 - - - - lock - integer - 0 - true - 4 - - - - key - text - true - 64 - - - - ttl - integer - -1 - true - 4 - - - - true - true - lock_id_index - - id - ascending - - - - - true - lock_key_index - - key - ascending - - - - - lock_ttl_index - - ttl - ascending - - - - - -
- - - - *dbprefix*comments - - - - - id - integer - 0 - true - true - 4 - 1 - - - - parent_id - integer - 0 - true - true - 4 - - - - topmost_parent_id - integer - 0 - true - true - 4 - - - - children_count - integer - 0 - true - true - 4 - - - - actor_type - text - - true - 64 - - - - actor_id - text - - true - 64 - - - - message - clob - - false - - - - verb - text - - false - 64 - - - - creation_timestamp - timestamp - - false - - - - latest_child_timestamp - timestamp - - false - - - - object_type - text - - true - 64 - - - - object_id - text - - true - 64 - - - - comments_parent_id_index - false - - parent_id - descending - - - - - comments_topmost_parent_id_idx - false - - topmost_parent_id - descending - - - - - comments_object_index - false - - object_type - ascending - - - object_id - ascending - - - creation_timestamp - descending - - - - - comments_actor_index - false - - actor_type - ascending - - - actor_id - ascending - - - - - -
- - - - *dbprefix*comments_read_markers - - - - - user_id - text - - true - 64 - - - - marker_datetime - timestamp - - false - - - - object_type - text - - true - 64 - - - - object_id - text - - true - 64 - - - - comments_marker_object_index - false - - object_type - ascending - - - object_id - ascending - - - - - comments_marker_index - true - - user_id - descending - - - object_type - ascending - - - object_id - ascending - - - - - -
- - - - *dbprefix*credentials - - - - - user - text - - false - 64 - - - - identifier - text - true - 64 - - - - credentials - clob - false - - - - credentials_user_id - true - true - - user - ascending - - - identifier - ascending - - - - - credentials_user - false - - user - ascending - - - - - -
- - - - *dbprefix*admin_sections - - - - - id - text - - false - 64 - - - - class - text - - true - 255 - - - - priority - integer - - true - 1 - - - - admin_sections_id_index - true - - id - ascending - - - - - admin_sections_class - true - - class - ascending - - - - -
- - - - *dbprefix*admin_settings - - - - - id - integer - 0 - true - 1 - 4 - - - - class - text - - true - 255 - - - - - section - text - - false - 64 - - - - priority - integer - - true - 1 - - - - admin_settings_id_index - true - - id - ascending - - - - - admin_settings_class - true - - class - ascending - - - - - admin_settings_section - false - - section - ascending - - - - -
- - - - *dbprefix*personal_sections - - - - - id - text - - false - 64 - - - - class - text - - true - 255 - - - - priority - integer - - true - 1 - - - - personal_sections_id_index - true - - id - ascending - - - - - personal_sections_class - true - - class - ascending - - - - -
- - - - *dbprefix*personal_settings - - - - - id - integer - 0 - true - 1 - 4 - - - - class - text - - true - 255 - - - - - section - text - - false - 64 - - - - priority - integer - - true - 1 - - - - personal_settings_id_index - true - - id - ascending - - - - - personal_settings_class - true - - class - ascending - - - - - personal_settings_section - false - - section - ascending - - - - -
- - - - *dbprefix*accounts - - - - uid - text - - true - 64 - - - data - clob - - true - - - - uid_index - true - true - - uid - ascending - - - - -
- - diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index 5bfabba2e0..2df64663d6 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -326,6 +326,7 @@ return array( 'OC\\App\\AppStore\\Bundles\\Bundle' => $baseDir . '/lib/private/App/AppStore/Bundles/Bundle.php', 'OC\\App\\AppStore\\Bundles\\BundleFetcher' => $baseDir . '/lib/private/App/AppStore/Bundles/BundleFetcher.php', 'OC\\App\\AppStore\\Bundles\\CoreBundle' => $baseDir . '/lib/private/App/AppStore/Bundles/CoreBundle.php', + 'OC\\App\\AppStore\\Bundles\\EducationBundle' => $baseDir . '/lib/private/App/AppStore/Bundles/EducationBundle.php', 'OC\\App\\AppStore\\Bundles\\EnterpriseBundle' => $baseDir . '/lib/private/App/AppStore/Bundles/EnterpriseBundle.php', 'OC\\App\\AppStore\\Bundles\\GroupwareBundle' => $baseDir . '/lib/private/App/AppStore/Bundles/GroupwareBundle.php', 'OC\\App\\AppStore\\Bundles\\SocialSharingBundle' => $baseDir . '/lib/private/App/AppStore/Bundles/SocialSharingBundle.php', @@ -404,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', @@ -423,9 +425,9 @@ return array( 'OC\\Core\\Command\\Config\\System\\SetConfig' => $baseDir . '/core/Command/Config/System/SetConfig.php', 'OC\\Core\\Command\\Db\\ConvertMysqlToMB4' => $baseDir . '/core/Command/Db/ConvertMysqlToMB4.php', 'OC\\Core\\Command\\Db\\ConvertType' => $baseDir . '/core/Command/Db/ConvertType.php', - 'OC\\Core\\Command\\Db\\GenerateChangeScript' => $baseDir . '/core/Command/Db/GenerateChangeScript.php', 'OC\\Core\\Command\\Db\\Migrations\\ExecuteCommand' => $baseDir . '/core/Command/Db/Migrations/ExecuteCommand.php', 'OC\\Core\\Command\\Db\\Migrations\\GenerateCommand' => $baseDir . '/core/Command/Db/Migrations/GenerateCommand.php', + 'OC\\Core\\Command\\Db\\Migrations\\GenerateFromSchemaFileCommand' => $baseDir . '/core/Command/Db/Migrations/GenerateFromSchemaFileCommand.php', 'OC\\Core\\Command\\Db\\Migrations\\MigrateCommand' => $baseDir . '/core/Command/Db/Migrations/MigrateCommand.php', 'OC\\Core\\Command\\Db\\Migrations\\StatusCommand' => $baseDir . '/core/Command/Db/Migrations/StatusCommand.php', 'OC\\Core\\Command\\Encryption\\ChangeKeyStorageRoot' => $baseDir . '/core/Command/Encryption/ChangeKeyStorageRoot.php', @@ -489,6 +491,7 @@ return array( 'OC\\Core\\Controller\\UserController' => $baseDir . '/core/Controller/UserController.php', 'OC\\Core\\Middleware\\TwoFactorMiddleware' => $baseDir . '/core/Middleware/TwoFactorMiddleware.php', 'OC\\Core\\Migrations\\Version13000Date20170705121758' => $baseDir . '/core/Migrations/Version13000Date20170705121758.php', + 'OC\\Core\\Migrations\\Version13000Date20170718121200' => $baseDir . '/core/Migrations/Version13000Date20170718121200.php', 'OC\\DB\\Adapter' => $baseDir . '/lib/private/DB/Adapter.php', 'OC\\DB\\AdapterMySQL' => $baseDir . '/lib/private/DB/AdapterMySQL.php', 'OC\\DB\\AdapterOCI8' => $baseDir . '/lib/private/DB/AdapterOCI8.php', @@ -664,6 +667,7 @@ return array( 'OC\\IntegrityCheck\\Iterator\\ExcludeFoldersByPathFilterIterator' => $baseDir . '/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php', 'OC\\L10N\\Factory' => $baseDir . '/lib/private/L10N/Factory.php', 'OC\\L10N\\L10N' => $baseDir . '/lib/private/L10N/L10N.php', + 'OC\\L10N\\L10NString' => $baseDir . '/lib/private/L10N/L10NString.php', 'OC\\L10N\\LanguageNotFoundException' => $baseDir . '/lib/private/L10N/LanguageNotFoundException.php', 'OC\\LargeFileHelper' => $baseDir . '/lib/private/LargeFileHelper.php', 'OC\\Lock\\AbstractLockingProvider' => $baseDir . '/lib/private/Lock/AbstractLockingProvider.php', @@ -706,7 +710,6 @@ return array( 'OC\\OCS\\CoreCapabilities' => $baseDir . '/lib/private/OCS/CoreCapabilities.php', 'OC\\OCS\\DiscoveryService' => $baseDir . '/lib/private/OCS/DiscoveryService.php', 'OC\\OCS\\Exception' => $baseDir . '/lib/private/OCS/Exception.php', - 'OC\\OCS\\PrivateData' => $baseDir . '/lib/private/OCS/PrivateData.php', 'OC\\OCS\\Provider' => $baseDir . '/lib/private/OCS/Provider.php', 'OC\\OCS\\Result' => $baseDir . '/lib/private/OCS/Result.php', 'OC\\PreviewManager' => $baseDir . '/lib/private/PreviewManager.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index 2c7ffc420f..9f87c1060a 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -356,6 +356,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OC\\App\\AppStore\\Bundles\\Bundle' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/Bundle.php', 'OC\\App\\AppStore\\Bundles\\BundleFetcher' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/BundleFetcher.php', 'OC\\App\\AppStore\\Bundles\\CoreBundle' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/CoreBundle.php', + 'OC\\App\\AppStore\\Bundles\\EducationBundle' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/EducationBundle.php', 'OC\\App\\AppStore\\Bundles\\EnterpriseBundle' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/EnterpriseBundle.php', 'OC\\App\\AppStore\\Bundles\\GroupwareBundle' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/GroupwareBundle.php', 'OC\\App\\AppStore\\Bundles\\SocialSharingBundle' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/SocialSharingBundle.php', @@ -434,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', @@ -453,9 +455,9 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OC\\Core\\Command\\Config\\System\\SetConfig' => __DIR__ . '/../../..' . '/core/Command/Config/System/SetConfig.php', 'OC\\Core\\Command\\Db\\ConvertMysqlToMB4' => __DIR__ . '/../../..' . '/core/Command/Db/ConvertMysqlToMB4.php', 'OC\\Core\\Command\\Db\\ConvertType' => __DIR__ . '/../../..' . '/core/Command/Db/ConvertType.php', - 'OC\\Core\\Command\\Db\\GenerateChangeScript' => __DIR__ . '/../../..' . '/core/Command/Db/GenerateChangeScript.php', 'OC\\Core\\Command\\Db\\Migrations\\ExecuteCommand' => __DIR__ . '/../../..' . '/core/Command/Db/Migrations/ExecuteCommand.php', 'OC\\Core\\Command\\Db\\Migrations\\GenerateCommand' => __DIR__ . '/../../..' . '/core/Command/Db/Migrations/GenerateCommand.php', + 'OC\\Core\\Command\\Db\\Migrations\\GenerateFromSchemaFileCommand' => __DIR__ . '/../../..' . '/core/Command/Db/Migrations/GenerateFromSchemaFileCommand.php', 'OC\\Core\\Command\\Db\\Migrations\\MigrateCommand' => __DIR__ . '/../../..' . '/core/Command/Db/Migrations/MigrateCommand.php', 'OC\\Core\\Command\\Db\\Migrations\\StatusCommand' => __DIR__ . '/../../..' . '/core/Command/Db/Migrations/StatusCommand.php', 'OC\\Core\\Command\\Encryption\\ChangeKeyStorageRoot' => __DIR__ . '/../../..' . '/core/Command/Encryption/ChangeKeyStorageRoot.php', @@ -519,6 +521,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OC\\Core\\Controller\\UserController' => __DIR__ . '/../../..' . '/core/Controller/UserController.php', 'OC\\Core\\Middleware\\TwoFactorMiddleware' => __DIR__ . '/../../..' . '/core/Middleware/TwoFactorMiddleware.php', 'OC\\Core\\Migrations\\Version13000Date20170705121758' => __DIR__ . '/../../..' . '/core/Migrations/Version13000Date20170705121758.php', + 'OC\\Core\\Migrations\\Version13000Date20170718121200' => __DIR__ . '/../../..' . '/core/Migrations/Version13000Date20170718121200.php', 'OC\\DB\\Adapter' => __DIR__ . '/../../..' . '/lib/private/DB/Adapter.php', 'OC\\DB\\AdapterMySQL' => __DIR__ . '/../../..' . '/lib/private/DB/AdapterMySQL.php', 'OC\\DB\\AdapterOCI8' => __DIR__ . '/../../..' . '/lib/private/DB/AdapterOCI8.php', @@ -694,6 +697,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OC\\IntegrityCheck\\Iterator\\ExcludeFoldersByPathFilterIterator' => __DIR__ . '/../../..' . '/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php', 'OC\\L10N\\Factory' => __DIR__ . '/../../..' . '/lib/private/L10N/Factory.php', 'OC\\L10N\\L10N' => __DIR__ . '/../../..' . '/lib/private/L10N/L10N.php', + 'OC\\L10N\\L10NString' => __DIR__ . '/../../..' . '/lib/private/L10N/L10NString.php', 'OC\\L10N\\LanguageNotFoundException' => __DIR__ . '/../../..' . '/lib/private/L10N/LanguageNotFoundException.php', 'OC\\LargeFileHelper' => __DIR__ . '/../../..' . '/lib/private/LargeFileHelper.php', 'OC\\Lock\\AbstractLockingProvider' => __DIR__ . '/../../..' . '/lib/private/Lock/AbstractLockingProvider.php', @@ -736,7 +740,6 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OC\\OCS\\CoreCapabilities' => __DIR__ . '/../../..' . '/lib/private/OCS/CoreCapabilities.php', 'OC\\OCS\\DiscoveryService' => __DIR__ . '/../../..' . '/lib/private/OCS/DiscoveryService.php', 'OC\\OCS\\Exception' => __DIR__ . '/../../..' . '/lib/private/OCS/Exception.php', - 'OC\\OCS\\PrivateData' => __DIR__ . '/../../..' . '/lib/private/OCS/PrivateData.php', 'OC\\OCS\\Provider' => __DIR__ . '/../../..' . '/lib/private/OCS/Provider.php', 'OC\\OCS\\Result' => __DIR__ . '/../../..' . '/lib/private/OCS/Result.php', 'OC\\PreviewManager' => __DIR__ . '/../../..' . '/lib/private/PreviewManager.php', diff --git a/lib/l10n/ast.js b/lib/l10n/ast.js index ae1f84e3ed..806f011b47 100644 --- a/lib/l10n/ast.js +++ b/lib/l10n/ast.js @@ -90,6 +90,8 @@ OC.L10N.register( "Sharing %s failed, because the sharing backend for %s could not find its source" : "Compartir %s falló porque'l motor compartíu pa %s podría nun atopar el so orixe", "Sharing %s failed, because the file could not be found in the file cache" : "Compartir %s falló, yá que'l ficheru nun pudo atopase na caché de ficheru", "Expiration date is in the past" : "La data de caducidá ta nel pasáu.", + "%s shared »%s« with you" : "%s compartió »%s« contigo", + "%s via %s" : "%s via %s", "Could not find category \"%s\"" : "Nun pudo alcontrase la estaya \"%s.\"", "Sunday" : "Domingu", "Monday" : "Llunes", @@ -168,8 +170,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Nun esiste'l módulu con id: %s . Por favor, activalu na configuración d'aplicaciones o contauta col alministrador.", "Server settings" : "Axustes del sirvidor", "You need to enter either an existing account or the administrator." : "Tienes d'inxertar una cuenta esistente o la del alministrador.", - "%s shared »%s« with you" : "%s compartió »%s« contigo", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Nun se pueden aumentar los permisos de %s", "Files can't be shared with delete permissions" : "Los ficheros nun pueden compartise con permisos desaniciaos", "Files can't be shared with create permissions" : "Los ficheros nun pueden compartise con crear permisos", diff --git a/lib/l10n/ast.json b/lib/l10n/ast.json index 13fcccab92..dee5d90f45 100644 --- a/lib/l10n/ast.json +++ b/lib/l10n/ast.json @@ -88,6 +88,8 @@ "Sharing %s failed, because the sharing backend for %s could not find its source" : "Compartir %s falló porque'l motor compartíu pa %s podría nun atopar el so orixe", "Sharing %s failed, because the file could not be found in the file cache" : "Compartir %s falló, yá que'l ficheru nun pudo atopase na caché de ficheru", "Expiration date is in the past" : "La data de caducidá ta nel pasáu.", + "%s shared »%s« with you" : "%s compartió »%s« contigo", + "%s via %s" : "%s via %s", "Could not find category \"%s\"" : "Nun pudo alcontrase la estaya \"%s.\"", "Sunday" : "Domingu", "Monday" : "Llunes", @@ -166,8 +168,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Nun esiste'l módulu con id: %s . Por favor, activalu na configuración d'aplicaciones o contauta col alministrador.", "Server settings" : "Axustes del sirvidor", "You need to enter either an existing account or the administrator." : "Tienes d'inxertar una cuenta esistente o la del alministrador.", - "%s shared »%s« with you" : "%s compartió »%s« contigo", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Nun se pueden aumentar los permisos de %s", "Files can't be shared with delete permissions" : "Los ficheros nun pueden compartise con permisos desaniciaos", "Files can't be shared with create permissions" : "Los ficheros nun pueden compartise con crear permisos", diff --git a/lib/l10n/cs.js b/lib/l10n/cs.js index 7a09bd8bdb..ac5dd783f5 100644 --- a/lib/l10n/cs.js +++ b/lib/l10n/cs.js @@ -12,6 +12,7 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s a %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s a %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s a %5$s", + "Education Edition" : "Edice pro výuku", "Enterprise bundle" : "Enterprise balíček", "Groupware bundle" : "Balíček groupware", "Social sharing bundle" : "Balíček sociálního sdílení", @@ -120,6 +121,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Soubory nelze sdílet s oprávněními k vytváření", "Expiration date is in the past" : "Datum vypršení je v minulosti", "Can’t set expiration date more than %s days in the future" : "Nelze nastavit datum vypršení platnosti více než %s dní v budoucnu", + "%s shared »%s« with you" : "%s s vámi sdílí »%s«", + "%s via %s" : "%s pomocí %s", "The requested share does not exist anymore" : "Požadované sdílení již neexistuje", "Could not find category \"%s\"" : "Nelze nalézt kategorii \"%s\"", "Sunday" : "Neděle", @@ -224,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s id: %s neexistuje. Povolte ho prosím ve svých nastaveních aplikací nebo kontaktujte svého administrátora.", "Server settings" : "Nastavení serveru", "You need to enter either an existing account or the administrator." : "Musíte zadat existující účet či správce.", - "%s shared »%s« with you" : "%s s vámi sdílí »%s«", - "%s via %s" : "%s pomocí %s", "Cannot increase permissions of %s" : "Nelze navýšit oprávnění u %s", "Files can't be shared with delete permissions" : "Soubory nelze sdílet s oprávněními ke smazání", "Files can't be shared with create permissions" : "Soubory nelze sdílet s vytvořenými oprávněními", diff --git a/lib/l10n/cs.json b/lib/l10n/cs.json index bd5275d291..a94a24ce00 100644 --- a/lib/l10n/cs.json +++ b/lib/l10n/cs.json @@ -10,6 +10,7 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s a %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s a %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s a %5$s", + "Education Edition" : "Edice pro výuku", "Enterprise bundle" : "Enterprise balíček", "Groupware bundle" : "Balíček groupware", "Social sharing bundle" : "Balíček sociálního sdílení", @@ -118,6 +119,8 @@ "Files can’t be shared with create permissions" : "Soubory nelze sdílet s oprávněními k vytváření", "Expiration date is in the past" : "Datum vypršení je v minulosti", "Can’t set expiration date more than %s days in the future" : "Nelze nastavit datum vypršení platnosti více než %s dní v budoucnu", + "%s shared »%s« with you" : "%s s vámi sdílí »%s«", + "%s via %s" : "%s pomocí %s", "The requested share does not exist anymore" : "Požadované sdílení již neexistuje", "Could not find category \"%s\"" : "Nelze nalézt kategorii \"%s\"", "Sunday" : "Neděle", @@ -222,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s id: %s neexistuje. Povolte ho prosím ve svých nastaveních aplikací nebo kontaktujte svého administrátora.", "Server settings" : "Nastavení serveru", "You need to enter either an existing account or the administrator." : "Musíte zadat existující účet či správce.", - "%s shared »%s« with you" : "%s s vámi sdílí »%s«", - "%s via %s" : "%s pomocí %s", "Cannot increase permissions of %s" : "Nelze navýšit oprávnění u %s", "Files can't be shared with delete permissions" : "Soubory nelze sdílet s oprávněními ke smazání", "Files can't be shared with create permissions" : "Soubory nelze sdílet s vytvořenými oprávněními", diff --git a/lib/l10n/de.js b/lib/l10n/de.js index 008e22b54b..0bd0b7a242 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", @@ -120,6 +121,11 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden", "Expiration date is in the past" : "Das Ablaufdatum liegt in der Vergangenheit.", "Can’t set expiration date more than %s days in the future" : "Das Ablaufdatum kann nicht mehr als %s Tage in die Zukunft liegen", + "%s shared »%s« with you" : "%s hat „%s“ mit Dir geteilt", + "%s shared »%s« with you." : "%s hat mit Dir »%s« geteilt.", + "Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche.", + "Open »%s«" : "»%s« öffnen", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr", "Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden", "Sunday" : "Sonntag", @@ -224,8 +230,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Das Modul mit der ID: %s existiert nicht. Bitte die Aktivierung in Deinen App-Einstellungen vornehmen oder Deine Administrator kontaktieren.", "Server settings" : "Servereinstellungen", "You need to enter either an existing account or the administrator." : "Du musst entweder ein existierendes Benutzerkonto oder das Administratorenkonto angeben.", - "%s shared »%s« with you" : "%s hat „%s“ mit Dir geteilt", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Kann die Berechtigungen von %s nicht erhöhen", "Files can't be shared with delete permissions" : "Dateien mit Lösch-Berechtigungen können nicht geteilt werden", "Files can't be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden", diff --git a/lib/l10n/de.json b/lib/l10n/de.json index e40233aa06..6727d60ce2 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", @@ -118,6 +119,11 @@ "Files can’t be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden", "Expiration date is in the past" : "Das Ablaufdatum liegt in der Vergangenheit.", "Can’t set expiration date more than %s days in the future" : "Das Ablaufdatum kann nicht mehr als %s Tage in die Zukunft liegen", + "%s shared »%s« with you" : "%s hat „%s“ mit Dir geteilt", + "%s shared »%s« with you." : "%s hat mit Dir »%s« geteilt.", + "Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche.", + "Open »%s«" : "»%s« öffnen", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr", "Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden", "Sunday" : "Sonntag", @@ -222,8 +228,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Das Modul mit der ID: %s existiert nicht. Bitte die Aktivierung in Deinen App-Einstellungen vornehmen oder Deine Administrator kontaktieren.", "Server settings" : "Servereinstellungen", "You need to enter either an existing account or the administrator." : "Du musst entweder ein existierendes Benutzerkonto oder das Administratorenkonto angeben.", - "%s shared »%s« with you" : "%s hat „%s“ mit Dir geteilt", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Kann die Berechtigungen von %s nicht erhöhen", "Files can't be shared with delete permissions" : "Dateien mit Lösch-Berechtigungen können nicht geteilt werden", "Files can't be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden", diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js index 4af618c62b..db003503e0 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", @@ -120,6 +121,11 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden", "Expiration date is in the past" : "Das Ablaufdatum liegt in der Vergangenheit.", "Can’t set expiration date more than %s days in the future" : "Das Ablaufdatum kann nicht mehr als %s Tage in die Zukunft liegen", + "%s shared »%s« with you" : "%s hat „%s“ mit Ihnen geteilt", + "%s shared »%s« with you." : "%s hat mit Ihnen »%s« geteilt.", + "Click the button below to open it." : "Klicken Sie zum Öffnen auf die untere Schaltfläche.", + "Open »%s«" : "»%s« öffnen", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr", "Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden", "Sunday" : "Sonntag", @@ -224,8 +230,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Das Modul mit der ID: %s existiert nicht. Bitte aktivieren Sie es in Ihren App-Einstellungen oder kontaktieren Sie Ihren Administrator.", "Server settings" : "Servereinstellungen", "You need to enter either an existing account or the administrator." : "Sie müssen entweder ein existierendes Benutzerkonto oder das Administratorenkonto angeben.", - "%s shared »%s« with you" : "%s hat „%s“ mit Ihnen geteilt", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Kann die Berechtigungen von %s nicht erhöhen", "Files can't be shared with delete permissions" : "Dateien mit Lösch-Berechtigungen können nicht geteilt werden", "Files can't be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden", diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json index 6e65ac418f..b842301074 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", @@ -118,6 +119,11 @@ "Files can’t be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden", "Expiration date is in the past" : "Das Ablaufdatum liegt in der Vergangenheit.", "Can’t set expiration date more than %s days in the future" : "Das Ablaufdatum kann nicht mehr als %s Tage in die Zukunft liegen", + "%s shared »%s« with you" : "%s hat „%s“ mit Ihnen geteilt", + "%s shared »%s« with you." : "%s hat mit Ihnen »%s« geteilt.", + "Click the button below to open it." : "Klicken Sie zum Öffnen auf die untere Schaltfläche.", + "Open »%s«" : "»%s« öffnen", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr", "Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden", "Sunday" : "Sonntag", @@ -222,8 +228,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Das Modul mit der ID: %s existiert nicht. Bitte aktivieren Sie es in Ihren App-Einstellungen oder kontaktieren Sie Ihren Administrator.", "Server settings" : "Servereinstellungen", "You need to enter either an existing account or the administrator." : "Sie müssen entweder ein existierendes Benutzerkonto oder das Administratorenkonto angeben.", - "%s shared »%s« with you" : "%s hat „%s“ mit Ihnen geteilt", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Kann die Berechtigungen von %s nicht erhöhen", "Files can't be shared with delete permissions" : "Dateien mit Lösch-Berechtigungen können nicht geteilt werden", "Files can't be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden", diff --git a/lib/l10n/el.js b/lib/l10n/el.js index 6a34a25dc7..38d6f312be 100644 --- a/lib/l10n/el.js +++ b/lib/l10n/el.js @@ -12,8 +12,10 @@ 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" : "Πακέτο κοινωνικού διαμοιρασμού", "PHP %s or higher is required." : "PHP %s ή νεώτερη απαιτείται.", "PHP with a version lower than %s is required." : "Απαιτείται PHP παλαιότερη από την έκδοση %s.", "%sbit or higher PHP required." : "%sbit απαιτείται νεώτερη έκδοση PHP.", @@ -27,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 ημέρες πριν"], @@ -34,21 +37,39 @@ OC.L10N.register( "_%n month ago_::_%n months ago_" : ["πριν %n μήνα","πριν %n μήνες"], "last year" : "τελευταίο χρόνο", "_%n year ago_::_%n years ago_" : ["%n χρόνο πριν","%n χρόνια πριν"], + "_%n hour ago_::_%n hours ago_" : ["%nώρα πριν","%nώρες πριν"], + "_%n minute ago_::_%n minutes ago_" : ["%nλεπτό πριν","%nλεπτά πριν"], "seconds ago" : "δευτερόλεπτα πριν", + "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Το άρθρωμα με ID: %sδεν υπάρχει. Παρακαλούμε ενεργοποιήστε το στις ρυθμίσεις των εφαρμογών σας ή επικοινωνήστε με τον διαχειριστή.", "File name is a reserved word" : "Το όνομα αρχείου είναι λέξη που έχει δεσμευτεί", "File name contains at least one invalid character" : "Το όνομα αρχείου περιέχει έναν τουλάχιστον μη έγκυρο χαρακτήρα", "File name is too long" : "Το όνομα αρχείου είνια πολύ μεγάλο", "Dot files are not allowed" : "Δεν επιτρέπονται αρχεία που ξεκινούν από τελεία - Dot ", "Empty filename is not allowed" : "Δεν επιτρέπεται άδειο όνομα αρχείου", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "Η εφαρμογή \"%s\" δεν μπορεί να εγκατασταθεί διότι δεν είναι δυνατή η ανάγνωση του αρχείου appinfo.", + "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Η εφαρμογή \"%s\" δεν μπορεί να εγκατασταθεί διότι δεν είναι συμβατή με την έκδοση του διακομιστή.", + "This is an automatically sent email, please do not reply." : "Αυτό είναι ένα μήνυμα ηλεκτρονικού ταχυδρομείου που στάλθηκε αυτόματα, παρακαλούμε μην απαντήσετε.", "Help" : "Βοήθεια", "Apps" : "Εφαρμογές", + "Settings" : "Ρυθμίσεις", "Log out" : "Έξοδος", "Users" : "Χρήστες", "APCu" : "APCu", "Redis" : "Redis", + "Basic settings" : "Βασικές ρυθμίσεις", "Sharing" : "Διαμοιρασμός", + "Security" : "Ασφάλεια", "Encryption" : "Κρυπτογράφηση", "Additional settings" : "Επιπρόσθετες ρυθμίσεις", + "Tips & tricks" : "Συμβουλές & κόλπα", + "Personal info" : "Προσωπικές πληροφορίες", + "Sync clients" : "Εφαρμογές συγχρονισμού", + "Unlimited" : "Απεριόριστα", + "__language_name__" : "__language_name__", + "Verifying" : "Γίνεται επαλήθευση", + "Verifying …" : "Γίνεται επαλήθευση ...", + "Verify" : "Επαλήθευση", + "%s enter the database username and name." : "%sπληκτρολογήστε όνομα χρήστη και όνομα βάσης δεδομένων.", "%s enter the database username." : "%s εισάγετε το όνομα χρήστη της βάσης δεδομένων.", "%s enter the database name." : "%s εισάγετε το όνομα της βάσης δεδομένων.", "%s you may not use dots in the database name" : "%s μάλλον δεν χρησιμοποιείτε τελείες στο όνομα της βάσης δεδομένων", @@ -79,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", @@ -94,7 +116,14 @@ 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 ημέρες στο μέλλον", + "%s shared »%s« with you" : "Ο %s διαμοιράστηκε μαζί σας το »%s«", + "%s via %s" : "%s μέσω %s", + "The requested share does not exist anymore" : "Το διαμοιρασμένο που ζητήθηκε δεν υπάρχει πλέον", "Could not find category \"%s\"" : "Αδυναμία εύρεσης κατηγορίας \"%s\"", "Sunday" : "Κυριακή", "Monday" : "Δευτέρα", @@ -141,14 +170,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" : "Δεν ενεργοποιήθηκε η εφαρμογή", @@ -158,36 +191,51 @@ 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 mbstring.func_overload to 0 in your php.ini" : "Για να διορθώσετε αυτό το πρόβλημα ορίστε το mbstring.func_overload σε 0 στο αρχείο 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
giving the webserver write access to the root directory." : "Αυτό μπορεί συνήθως να διορθωθεί δίνοντας στον διακομιστή ιστού δικαιώματα εγγραφής στον βασικό κατάλογο.", "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 8490d43458..30e95a12a1 100644 --- a/lib/l10n/el.json +++ b/lib/l10n/el.json @@ -10,8 +10,10 @@ "%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" : "Πακέτο κοινωνικού διαμοιρασμού", "PHP %s or higher is required." : "PHP %s ή νεώτερη απαιτείται.", "PHP with a version lower than %s is required." : "Απαιτείται PHP παλαιότερη από την έκδοση %s.", "%sbit or higher PHP required." : "%sbit απαιτείται νεώτερη έκδοση PHP.", @@ -25,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 ημέρες πριν"], @@ -32,21 +35,39 @@ "_%n month ago_::_%n months ago_" : ["πριν %n μήνα","πριν %n μήνες"], "last year" : "τελευταίο χρόνο", "_%n year ago_::_%n years ago_" : ["%n χρόνο πριν","%n χρόνια πριν"], + "_%n hour ago_::_%n hours ago_" : ["%nώρα πριν","%nώρες πριν"], + "_%n minute ago_::_%n minutes ago_" : ["%nλεπτό πριν","%nλεπτά πριν"], "seconds ago" : "δευτερόλεπτα πριν", + "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Το άρθρωμα με ID: %sδεν υπάρχει. Παρακαλούμε ενεργοποιήστε το στις ρυθμίσεις των εφαρμογών σας ή επικοινωνήστε με τον διαχειριστή.", "File name is a reserved word" : "Το όνομα αρχείου είναι λέξη που έχει δεσμευτεί", "File name contains at least one invalid character" : "Το όνομα αρχείου περιέχει έναν τουλάχιστον μη έγκυρο χαρακτήρα", "File name is too long" : "Το όνομα αρχείου είνια πολύ μεγάλο", "Dot files are not allowed" : "Δεν επιτρέπονται αρχεία που ξεκινούν από τελεία - Dot ", "Empty filename is not allowed" : "Δεν επιτρέπεται άδειο όνομα αρχείου", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "Η εφαρμογή \"%s\" δεν μπορεί να εγκατασταθεί διότι δεν είναι δυνατή η ανάγνωση του αρχείου appinfo.", + "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Η εφαρμογή \"%s\" δεν μπορεί να εγκατασταθεί διότι δεν είναι συμβατή με την έκδοση του διακομιστή.", + "This is an automatically sent email, please do not reply." : "Αυτό είναι ένα μήνυμα ηλεκτρονικού ταχυδρομείου που στάλθηκε αυτόματα, παρακαλούμε μην απαντήσετε.", "Help" : "Βοήθεια", "Apps" : "Εφαρμογές", + "Settings" : "Ρυθμίσεις", "Log out" : "Έξοδος", "Users" : "Χρήστες", "APCu" : "APCu", "Redis" : "Redis", + "Basic settings" : "Βασικές ρυθμίσεις", "Sharing" : "Διαμοιρασμός", + "Security" : "Ασφάλεια", "Encryption" : "Κρυπτογράφηση", "Additional settings" : "Επιπρόσθετες ρυθμίσεις", + "Tips & tricks" : "Συμβουλές & κόλπα", + "Personal info" : "Προσωπικές πληροφορίες", + "Sync clients" : "Εφαρμογές συγχρονισμού", + "Unlimited" : "Απεριόριστα", + "__language_name__" : "__language_name__", + "Verifying" : "Γίνεται επαλήθευση", + "Verifying …" : "Γίνεται επαλήθευση ...", + "Verify" : "Επαλήθευση", + "%s enter the database username and name." : "%sπληκτρολογήστε όνομα χρήστη και όνομα βάσης δεδομένων.", "%s enter the database username." : "%s εισάγετε το όνομα χρήστη της βάσης δεδομένων.", "%s enter the database name." : "%s εισάγετε το όνομα της βάσης δεδομένων.", "%s you may not use dots in the database name" : "%s μάλλον δεν χρησιμοποιείτε τελείες στο όνομα της βάσης δεδομένων", @@ -77,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", @@ -92,7 +114,14 @@ "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 ημέρες στο μέλλον", + "%s shared »%s« with you" : "Ο %s διαμοιράστηκε μαζί σας το »%s«", + "%s via %s" : "%s μέσω %s", + "The requested share does not exist anymore" : "Το διαμοιρασμένο που ζητήθηκε δεν υπάρχει πλέον", "Could not find category \"%s\"" : "Αδυναμία εύρεσης κατηγορίας \"%s\"", "Sunday" : "Κυριακή", "Monday" : "Δευτέρα", @@ -139,14 +168,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" : "Δεν ενεργοποιήθηκε η εφαρμογή", @@ -156,36 +189,51 @@ "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 mbstring.func_overload to 0 in your php.ini" : "Για να διορθώσετε αυτό το πρόβλημα ορίστε το mbstring.func_overload σε 0 στο αρχείο 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 giving the webserver write access to the root directory." : "Αυτό μπορεί συνήθως να διορθωθεί δίνοντας στον διακομιστή ιστού δικαιώματα εγγραφής στον βασικό κατάλογο.", "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 525dcaf4b8..650fd184ac 100644 --- a/lib/l10n/en_GB.js +++ b/lib/l10n/en_GB.js @@ -12,6 +12,7 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s and %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s and %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s and %5$s", + "Education Edition" : "Education Edition", "Enterprise bundle" : "Enterprise bundle", "Groupware bundle" : "Groupware bundle", "Social sharing bundle" : "Social sharing bundle", @@ -120,6 +121,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Files can’t be shared with create permissions", "Expiration date is in the past" : "Expiration date is in the past", "Can’t set expiration date more than %s days in the future" : "Can’t set expiration date more than %s days in the future", + "%s shared »%s« with you" : "%s shared \"%s\" with you", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "The requested share does not exist anymore", "Could not find category \"%s\"" : "Could not find category \"%s\"", "Sunday" : "Sunday", @@ -224,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator.", "Server settings" : "Server settings", "You need to enter either an existing account or the administrator." : "You need to enter either an existing account or the administrator.", - "%s shared »%s« with you" : "%s shared \"%s\" with you", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Cannot increase permissions of %s", "Files can't be shared with delete permissions" : "Files can't be shared with delete permissions", "Files can't be shared with create permissions" : "Files can't be shared with create permissions", diff --git a/lib/l10n/en_GB.json b/lib/l10n/en_GB.json index 6ee6bde4a2..8ad0399e6b 100644 --- a/lib/l10n/en_GB.json +++ b/lib/l10n/en_GB.json @@ -10,6 +10,7 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s and %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s and %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s and %5$s", + "Education Edition" : "Education Edition", "Enterprise bundle" : "Enterprise bundle", "Groupware bundle" : "Groupware bundle", "Social sharing bundle" : "Social sharing bundle", @@ -118,6 +119,8 @@ "Files can’t be shared with create permissions" : "Files can’t be shared with create permissions", "Expiration date is in the past" : "Expiration date is in the past", "Can’t set expiration date more than %s days in the future" : "Can’t set expiration date more than %s days in the future", + "%s shared »%s« with you" : "%s shared \"%s\" with you", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "The requested share does not exist anymore", "Could not find category \"%s\"" : "Could not find category \"%s\"", "Sunday" : "Sunday", @@ -222,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator.", "Server settings" : "Server settings", "You need to enter either an existing account or the administrator." : "You need to enter either an existing account or the administrator.", - "%s shared »%s« with you" : "%s shared \"%s\" with you", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Cannot increase permissions of %s", "Files can't be shared with delete permissions" : "Files can't be shared with delete permissions", "Files can't be shared with create permissions" : "Files can't be shared with create permissions", diff --git a/lib/l10n/es.js b/lib/l10n/es.js index bd4fbae9eb..66667c5a3d 100644 --- a/lib/l10n/es.js +++ b/lib/l10n/es.js @@ -12,6 +12,7 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s y %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s, y %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s y %5$s", + "Education Edition" : "Edición Educación", "Enterprise bundle" : "Conjunto para empresas", "Groupware bundle" : "Conjunto de groupware", "Social sharing bundle" : "Conjunto para compartir en redes", @@ -120,6 +121,11 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Los archivos no se pueden compartir con permisos de creación", "Expiration date is in the past" : "Ha pasado la fecha de caducidad", "Can’t set expiration date more than %s days in the future" : "No se puede establecer la fecha de expiración a más de %s días en el futuro", + "%s shared »%s« with you" : "%s ha compartido »%s« contigo", + "%s shared »%s« with you." : "%s ha compartido »%s« contigo", + "Click the button below to open it." : "Haz clic en el botón de abajo para abrirlo.", + "Open »%s«" : "Abrir »%s« ", + "%s via %s" : "%s vía %s", "The requested share does not exist anymore" : "El recurso compartido solicitado ya no existe", "Could not find category \"%s\"" : "No puede encontrar la categoría \"%s\"", "Sunday" : "Domingo", @@ -224,8 +230,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Módulo con id: %s no existe. Por favor habilítelo en los ajustes de sus aplicaciones o contáctese con su administrador.", "Server settings" : "Configuración del servidor", "You need to enter either an existing account or the administrator." : "Tiene que ingresar una cuenta existente o la del administrador.", - "%s shared »%s« with you" : "%s ha compartido »%s« contigo", - "%s via %s" : "%s vía %s", "Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s", "Files can't be shared with delete permissions" : "Los archivos no pueden ser compartidos con permisos de borrado", "Files can't be shared with create permissions" : "Los arhivos no pueden ser compartidos con permisos de creación", diff --git a/lib/l10n/es.json b/lib/l10n/es.json index cff0f78bd8..33956b8904 100644 --- a/lib/l10n/es.json +++ b/lib/l10n/es.json @@ -10,6 +10,7 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s y %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s, y %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s y %5$s", + "Education Edition" : "Edición Educación", "Enterprise bundle" : "Conjunto para empresas", "Groupware bundle" : "Conjunto de groupware", "Social sharing bundle" : "Conjunto para compartir en redes", @@ -118,6 +119,11 @@ "Files can’t be shared with create permissions" : "Los archivos no se pueden compartir con permisos de creación", "Expiration date is in the past" : "Ha pasado la fecha de caducidad", "Can’t set expiration date more than %s days in the future" : "No se puede establecer la fecha de expiración a más de %s días en el futuro", + "%s shared »%s« with you" : "%s ha compartido »%s« contigo", + "%s shared »%s« with you." : "%s ha compartido »%s« contigo", + "Click the button below to open it." : "Haz clic en el botón de abajo para abrirlo.", + "Open »%s«" : "Abrir »%s« ", + "%s via %s" : "%s vía %s", "The requested share does not exist anymore" : "El recurso compartido solicitado ya no existe", "Could not find category \"%s\"" : "No puede encontrar la categoría \"%s\"", "Sunday" : "Domingo", @@ -222,8 +228,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Módulo con id: %s no existe. Por favor habilítelo en los ajustes de sus aplicaciones o contáctese con su administrador.", "Server settings" : "Configuración del servidor", "You need to enter either an existing account or the administrator." : "Tiene que ingresar una cuenta existente o la del administrador.", - "%s shared »%s« with you" : "%s ha compartido »%s« contigo", - "%s via %s" : "%s vía %s", "Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s", "Files can't be shared with delete permissions" : "Los archivos no pueden ser compartidos con permisos de borrado", "Files can't be shared with create permissions" : "Los arhivos no pueden ser compartidos con permisos de creación", diff --git a/lib/l10n/es_AR.js b/lib/l10n/es_AR.js index 5c1c692a43..df848e7213 100644 --- a/lib/l10n/es_AR.js +++ b/lib/l10n/es_AR.js @@ -108,6 +108,8 @@ OC.L10N.register( "Sharing %s failed, because the sharing backend for %s could not find its source" : "Se presentó una falla al compartir %s porque el backend que comparte %s no pudo encontrar su origen", "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos", "Expiration date is in the past" : "La fecha de expiración ya ha pasado", + "%s shared »%s« with you" : "%s ha compartido »%s« con usted", + "%s via %s" : "%s por %s", "Could not find category \"%s\"" : "No fue posible encontrar la categoria \"%s\"", "Sunday" : "Domingo", "Monday" : "Lunes", @@ -210,8 +212,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con id: %s no existe. Favor de habilitarlo en sus configuraciones de aplicación o contacte a su administrador. ", "Server settings" : "Configuraciones del servidor", "You need to enter either an existing account or the administrator." : "Necesita ingresar una cuenta ya sea existente o la del administrador.", - "%s shared »%s« with you" : "%s ha compartido »%s« con usted", - "%s via %s" : "%s por %s", "Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s", "Files can't be shared with delete permissions" : "No es posible compartir archivos con permisos de borrado", "Files can't be shared with create permissions" : "No es posible compartir archivos con permisos de creación", diff --git a/lib/l10n/es_AR.json b/lib/l10n/es_AR.json index c9738329ca..28b998e45d 100644 --- a/lib/l10n/es_AR.json +++ b/lib/l10n/es_AR.json @@ -106,6 +106,8 @@ "Sharing %s failed, because the sharing backend for %s could not find its source" : "Se presentó una falla al compartir %s porque el backend que comparte %s no pudo encontrar su origen", "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos", "Expiration date is in the past" : "La fecha de expiración ya ha pasado", + "%s shared »%s« with you" : "%s ha compartido »%s« con usted", + "%s via %s" : "%s por %s", "Could not find category \"%s\"" : "No fue posible encontrar la categoria \"%s\"", "Sunday" : "Domingo", "Monday" : "Lunes", @@ -208,8 +210,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con id: %s no existe. Favor de habilitarlo en sus configuraciones de aplicación o contacte a su administrador. ", "Server settings" : "Configuraciones del servidor", "You need to enter either an existing account or the administrator." : "Necesita ingresar una cuenta ya sea existente o la del administrador.", - "%s shared »%s« with you" : "%s ha compartido »%s« con usted", - "%s via %s" : "%s por %s", "Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s", "Files can't be shared with delete permissions" : "No es posible compartir archivos con permisos de borrado", "Files can't be shared with create permissions" : "No es posible compartir archivos con permisos de creación", diff --git a/lib/l10n/es_MX.js b/lib/l10n/es_MX.js index b55c5d349f..2d613d49f0 100644 --- a/lib/l10n/es_MX.js +++ b/lib/l10n/es_MX.js @@ -12,6 +12,7 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s y %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s y %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s y %5$s", + "Education Edition" : "Edición Educativa", "Enterprise bundle" : "Paquete empresarial", "Groupware bundle" : "Paquete de Groupware", "Social sharing bundle" : "Paquete para compartir en redes sociales", @@ -120,6 +121,11 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Los archivos no se pueden compartir con permisos de creación", "Expiration date is in the past" : "La fecha de expiración se encuentra en el pasado", "Can’t set expiration date more than %s days in the future" : "No es posible establecer la fecha de expiración más allá de %s días en el futuro", + "%s shared »%s« with you" : "%s ha compartido »%s« contigo", + "%s shared »%s« with you." : "%s compartió contigo »%s«.", + "Click the button below to open it." : "Haz click en el botón inferior para abrirlo. ", + "Open »%s«" : "Abrir »%s«", + "%s via %s" : "%s por %s", "The requested share does not exist anymore" : "El recurso compartido solicitado ya no existe", "Could not find category \"%s\"" : "No fue posible encontrar la categoria \"%s\"", "Sunday" : "Domingo", @@ -224,8 +230,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con id: %s no existe. Por favor habilítalo en tus configuraciones de aplicación o contacta a tu administrador. ", "Server settings" : "Configuraciones del servidor", "You need to enter either an existing account or the administrator." : "Necesitas ingresar una cuenta ya existente o la del administrador.", - "%s shared »%s« with you" : "%s ha compartido »%s« contigo", - "%s via %s" : "%s por %s", "Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s", "Files can't be shared with delete permissions" : "No es posible compartir archivos con permisos de borrado", "Files can't be shared with create permissions" : "No es posible compartir archivos con permisos de creación", diff --git a/lib/l10n/es_MX.json b/lib/l10n/es_MX.json index 889a51bda2..15a02daec3 100644 --- a/lib/l10n/es_MX.json +++ b/lib/l10n/es_MX.json @@ -10,6 +10,7 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s y %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s y %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s y %5$s", + "Education Edition" : "Edición Educativa", "Enterprise bundle" : "Paquete empresarial", "Groupware bundle" : "Paquete de Groupware", "Social sharing bundle" : "Paquete para compartir en redes sociales", @@ -118,6 +119,11 @@ "Files can’t be shared with create permissions" : "Los archivos no se pueden compartir con permisos de creación", "Expiration date is in the past" : "La fecha de expiración se encuentra en el pasado", "Can’t set expiration date more than %s days in the future" : "No es posible establecer la fecha de expiración más allá de %s días en el futuro", + "%s shared »%s« with you" : "%s ha compartido »%s« contigo", + "%s shared »%s« with you." : "%s compartió contigo »%s«.", + "Click the button below to open it." : "Haz click en el botón inferior para abrirlo. ", + "Open »%s«" : "Abrir »%s«", + "%s via %s" : "%s por %s", "The requested share does not exist anymore" : "El recurso compartido solicitado ya no existe", "Could not find category \"%s\"" : "No fue posible encontrar la categoria \"%s\"", "Sunday" : "Domingo", @@ -222,8 +228,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con id: %s no existe. Por favor habilítalo en tus configuraciones de aplicación o contacta a tu administrador. ", "Server settings" : "Configuraciones del servidor", "You need to enter either an existing account or the administrator." : "Necesitas ingresar una cuenta ya existente o la del administrador.", - "%s shared »%s« with you" : "%s ha compartido »%s« contigo", - "%s via %s" : "%s por %s", "Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s", "Files can't be shared with delete permissions" : "No es posible compartir archivos con permisos de borrado", "Files can't be shared with create permissions" : "No es posible compartir archivos con permisos de creación", diff --git a/lib/l10n/fi.js b/lib/l10n/fi.js index 1abbed103c..aa660a6a98 100644 --- a/lib/l10n/fi.js +++ b/lib/l10n/fi.js @@ -102,6 +102,7 @@ OC.L10N.register( "Sharing %s failed, because resharing is not allowed" : "Kohteen %s jakaminen epäonnistui, koska jakaminen uudelleen ei ole sallittu", "Sharing %s failed, because the file could not be found in the file cache" : "Kohteen %s jakaminen epäonnistui, koska tiedostoa ei löytynyt tiedostovälimuistista", "Expiration date is in the past" : "Vanhenemispäivä on menneisyydessä", + "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi", "Could not find category \"%s\"" : "Luokkaa \"%s\" ei löytynyt", "Sunday" : "sunnuntai", "Monday" : "maanantai", @@ -198,7 +199,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduulia tunnisteella %s ei ole olemassa. Ota se käyttöön sovellusasetuksista tai ota yhteys ylläpitoon.", "Server settings" : "Palvelimen asetukset", "You need to enter either an existing account or the administrator." : "Sinun täytyy antaa joko olemassa oleva tili tai ylläpitäjä.", - "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi", "Cannot increase permissions of %s" : "Kohteen %s käyttöoikeuksien lisääminen ei onnistu", "Files can't be shared with delete permissions" : "Tiedostoja ei voi jakaa poistamisoikeusilla", "Files can't be shared with create permissions" : "Tiedostoja ei voi jakaa luomisoikeuksilla", diff --git a/lib/l10n/fi.json b/lib/l10n/fi.json index a3aaada740..715c34d827 100644 --- a/lib/l10n/fi.json +++ b/lib/l10n/fi.json @@ -100,6 +100,7 @@ "Sharing %s failed, because resharing is not allowed" : "Kohteen %s jakaminen epäonnistui, koska jakaminen uudelleen ei ole sallittu", "Sharing %s failed, because the file could not be found in the file cache" : "Kohteen %s jakaminen epäonnistui, koska tiedostoa ei löytynyt tiedostovälimuistista", "Expiration date is in the past" : "Vanhenemispäivä on menneisyydessä", + "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi", "Could not find category \"%s\"" : "Luokkaa \"%s\" ei löytynyt", "Sunday" : "sunnuntai", "Monday" : "maanantai", @@ -196,7 +197,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduulia tunnisteella %s ei ole olemassa. Ota se käyttöön sovellusasetuksista tai ota yhteys ylläpitoon.", "Server settings" : "Palvelimen asetukset", "You need to enter either an existing account or the administrator." : "Sinun täytyy antaa joko olemassa oleva tili tai ylläpitäjä.", - "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi", "Cannot increase permissions of %s" : "Kohteen %s käyttöoikeuksien lisääminen ei onnistu", "Files can't be shared with delete permissions" : "Tiedostoja ei voi jakaa poistamisoikeusilla", "Files can't be shared with create permissions" : "Tiedostoja ei voi jakaa luomisoikeuksilla", diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js index 47f7df1155..d685b9615e 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", @@ -120,6 +121,11 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Les fichiers ne peuvent pas être partagés avec les autorisations de création", "Expiration date is in the past" : "La date d'expiration est dans le passé", "Can’t set expiration date more than %s days in the future" : "Impossible de définir la date d'expiration à plus de %s jours dans le futur", + "%s shared »%s« with you" : "%s a partagé «%s» avec vous", + "%s shared »%s« with you." : "%s a partagé «%s» avec vous.", + "Click the button below to open it." : "Cliquez sur le bouton ci-dessous pour l'ouvrir", + "Open »%s«" : "Ouvrir «%s»", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "Le partage demandé n'existe plus", "Could not find category \"%s\"" : "Impossible de trouver la catégorie \"%s\"", "Sunday" : "Dimanche", @@ -224,8 +230,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Le module avec l'id: %s n'existe pas. Merci de l'activer dans les paramètres d'applications ou de contacter votre administrateur.", "Server settings" : "Paramètres serveur", "You need to enter either an existing account or the administrator." : "Vous devez indiquer un compte existant ou celui de l'administrateur.", - "%s shared »%s« with you" : "%s a partagé «%s» avec vous", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Impossible d'augmenter les permissions de %s", "Files can't be shared with delete permissions" : "Les fichiers ne peuvent pas être partagés avec les autorisations de suppression", "Files can't be shared with create permissions" : "Les fichiers ne peuvent pas être partagés avec les autorisations de création", diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json index 502ed939f7..5638c44a97 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", @@ -118,6 +119,11 @@ "Files can’t be shared with create permissions" : "Les fichiers ne peuvent pas être partagés avec les autorisations de création", "Expiration date is in the past" : "La date d'expiration est dans le passé", "Can’t set expiration date more than %s days in the future" : "Impossible de définir la date d'expiration à plus de %s jours dans le futur", + "%s shared »%s« with you" : "%s a partagé «%s» avec vous", + "%s shared »%s« with you." : "%s a partagé «%s» avec vous.", + "Click the button below to open it." : "Cliquez sur le bouton ci-dessous pour l'ouvrir", + "Open »%s«" : "Ouvrir «%s»", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "Le partage demandé n'existe plus", "Could not find category \"%s\"" : "Impossible de trouver la catégorie \"%s\"", "Sunday" : "Dimanche", @@ -222,8 +228,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Le module avec l'id: %s n'existe pas. Merci de l'activer dans les paramètres d'applications ou de contacter votre administrateur.", "Server settings" : "Paramètres serveur", "You need to enter either an existing account or the administrator." : "Vous devez indiquer un compte existant ou celui de l'administrateur.", - "%s shared »%s« with you" : "%s a partagé «%s» avec vous", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Impossible d'augmenter les permissions de %s", "Files can't be shared with delete permissions" : "Les fichiers ne peuvent pas être partagés avec les autorisations de suppression", "Files can't be shared with create permissions" : "Les fichiers ne peuvent pas être partagés avec les autorisations de création", diff --git a/lib/l10n/he.js b/lib/l10n/he.js index 8cbcee2ada..932eedee7e 100644 --- a/lib/l10n/he.js +++ b/lib/l10n/he.js @@ -82,6 +82,8 @@ OC.L10N.register( "Sharing %s failed, because the sharing backend for %s could not find its source" : "השיתוף %s נכשל, כיוון שבצד אחורי לשיתוף עבור %s לא ניתן היה לאתר את מקורו", "Sharing %s failed, because the file could not be found in the file cache" : "השיתוף %s נכשל, כייון שלא ניתן היה למצוא את הקובץ בזכרון המטמון", "Expiration date is in the past" : "תאריך תפוגה הנו בעבר", + "%s shared »%s« with you" : "%s שיתף/שיתפה איתך את »%s«", + "%s via %s" : "%s על בסיס %s", "Could not find category \"%s\"" : "לא ניתן למצוא את הקטגוריה „%s“", "Sunday" : "יום ראשון", "Monday" : "יום שני", @@ -173,8 +175,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "מודול עם זהות: %s אינו קיים. יש לאפשר את זה בהגדרות היישומים או ליצור קשר עם המנהל.", "Server settings" : "הגדרות שרת", "You need to enter either an existing account or the administrator." : "יש להכניס חשבון קיים או מנהל.", - "%s shared »%s« with you" : "%s שיתף/שיתפה איתך את »%s«", - "%s via %s" : "%s על בסיס %s", "Cannot increase permissions of %s" : "לא ניתן להגדיל את ההיתרים של %s", "Files can't be shared with delete permissions" : "קובץ לא ניתן לשיתוף בפעולת מחיקת הרשאות", "Files can't be shared with create permissions" : "קובץ לא ניתן לשיתוף בפעולת יצירת הרשאות", diff --git a/lib/l10n/he.json b/lib/l10n/he.json index 9e24f4eeea..ef1176d789 100644 --- a/lib/l10n/he.json +++ b/lib/l10n/he.json @@ -80,6 +80,8 @@ "Sharing %s failed, because the sharing backend for %s could not find its source" : "השיתוף %s נכשל, כיוון שבצד אחורי לשיתוף עבור %s לא ניתן היה לאתר את מקורו", "Sharing %s failed, because the file could not be found in the file cache" : "השיתוף %s נכשל, כייון שלא ניתן היה למצוא את הקובץ בזכרון המטמון", "Expiration date is in the past" : "תאריך תפוגה הנו בעבר", + "%s shared »%s« with you" : "%s שיתף/שיתפה איתך את »%s«", + "%s via %s" : "%s על בסיס %s", "Could not find category \"%s\"" : "לא ניתן למצוא את הקטגוריה „%s“", "Sunday" : "יום ראשון", "Monday" : "יום שני", @@ -171,8 +173,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "מודול עם זהות: %s אינו קיים. יש לאפשר את זה בהגדרות היישומים או ליצור קשר עם המנהל.", "Server settings" : "הגדרות שרת", "You need to enter either an existing account or the administrator." : "יש להכניס חשבון קיים או מנהל.", - "%s shared »%s« with you" : "%s שיתף/שיתפה איתך את »%s«", - "%s via %s" : "%s על בסיס %s", "Cannot increase permissions of %s" : "לא ניתן להגדיל את ההיתרים של %s", "Files can't be shared with delete permissions" : "קובץ לא ניתן לשיתוף בפעולת מחיקת הרשאות", "Files can't be shared with create permissions" : "קובץ לא ניתן לשיתוף בפעולת יצירת הרשאות", diff --git a/lib/l10n/hu.js b/lib/l10n/hu.js index 0a71f5f8bf..f0d72cd393 100644 --- a/lib/l10n/hu.js +++ b/lib/l10n/hu.js @@ -100,6 +100,8 @@ OC.L10N.register( "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s megosztása nem sikerült, mert %s megosztási alrendszere nem találja", "Sharing %s failed, because the file could not be found in the file cache" : "%s megosztása nem sikerült, mert a fájl nem található a gyorsítótárban", "Expiration date is in the past" : "A lejárati dátum már elmúlt", + "%s shared »%s« with you" : "%s megosztotta veled ezt: »%s«", + "%s via %s" : "%s - %s", "Could not find category \"%s\"" : "Ez a kategória nem található: \"%s\"", "Sunday" : "Vasárnap", "Monday" : "Hétfő", @@ -194,8 +196,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "A modul nem létezik, id: %s. Kérlek engedélyezd az alkalmazás beállításoknál vagy keresd az adminisztrátort.", "Server settings" : "Szerver beállítások", "You need to enter either an existing account or the administrator." : "Vagy egy létező felhasználó vagy az adminisztrátor bejelentkezési nevét kell megadnia", - "%s shared »%s« with you" : "%s megosztotta veled ezt: »%s«", - "%s via %s" : "%s - %s", "Cannot increase permissions of %s" : "%s jogosultságait nem lehet megemelni", "Files can't be shared with delete permissions" : "A fájlokat nem lehet megosztani a törlési jogosultságokkal", "Files can't be shared with create permissions" : "A fájlokat nem lehet megosztani a létrehozási jogosultságokkal", diff --git a/lib/l10n/hu.json b/lib/l10n/hu.json index 6c7b308550..3039b4979d 100644 --- a/lib/l10n/hu.json +++ b/lib/l10n/hu.json @@ -98,6 +98,8 @@ "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s megosztása nem sikerült, mert %s megosztási alrendszere nem találja", "Sharing %s failed, because the file could not be found in the file cache" : "%s megosztása nem sikerült, mert a fájl nem található a gyorsítótárban", "Expiration date is in the past" : "A lejárati dátum már elmúlt", + "%s shared »%s« with you" : "%s megosztotta veled ezt: »%s«", + "%s via %s" : "%s - %s", "Could not find category \"%s\"" : "Ez a kategória nem található: \"%s\"", "Sunday" : "Vasárnap", "Monday" : "Hétfő", @@ -192,8 +194,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "A modul nem létezik, id: %s. Kérlek engedélyezd az alkalmazás beállításoknál vagy keresd az adminisztrátort.", "Server settings" : "Szerver beállítások", "You need to enter either an existing account or the administrator." : "Vagy egy létező felhasználó vagy az adminisztrátor bejelentkezési nevét kell megadnia", - "%s shared »%s« with you" : "%s megosztotta veled ezt: »%s«", - "%s via %s" : "%s - %s", "Cannot increase permissions of %s" : "%s jogosultságait nem lehet megemelni", "Files can't be shared with delete permissions" : "A fájlokat nem lehet megosztani a törlési jogosultságokkal", "Files can't be shared with create permissions" : "A fájlokat nem lehet megosztani a létrehozási jogosultságokkal", diff --git a/lib/l10n/is.js b/lib/l10n/is.js index 8daa0140b1..e2c2abd773 100644 --- a/lib/l10n/is.js +++ b/lib/l10n/is.js @@ -12,6 +12,7 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s og %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s og %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s og %5$s", + "Education Edition" : "Kennsluútgáfa", "Enterprise bundle" : "Fyrirtækjavöndull", "Groupware bundle" : "Hópvinnsluvöndull", "Social sharing bundle" : "Deilivöndull fyrir samfélagsmiðla", @@ -50,6 +51,7 @@ OC.L10N.register( "This is an automatically sent email, please do not reply." : "Þetta er sjálfvirk tölvupóstsending, ekki svara þessu.", "Help" : "Hjálp", "Apps" : "Forrit", + "Settings" : "Stillingar", "Log out" : "Skrá út", "Users" : "Notendur", "APCu" : "APCu", @@ -60,6 +62,13 @@ OC.L10N.register( "Encryption" : "Dulritun", "Additional settings" : "Valfrjálsar stillingar", "Tips & tricks" : "Ábendingar og góð ráð", + "Personal info" : "Persónulegar upplýsingar", + "Sync clients" : "Samstilla biðlara", + "Unlimited" : "Ótakmarkað", + "__language_name__" : "Íslenska", + "Verifying" : "Sannreyni", + "Verifying …" : "Sannreyni …", + "Verify" : "Sannreyna", "%s enter the database username and name." : "%s settu inn notandanafn og nafn á gagnagrunni.", "%s enter the database username." : "%s settu inn notandanafn í gagnagrunni.", "%s enter the database name." : "%s settu inn nafn á gagnagrunni.", @@ -107,7 +116,13 @@ OC.L10N.register( "Sharing %s failed, because resharing is not allowed" : "Deiling %s mistókst, því endurdeiling er ekki leyfð", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Deiling %s mistókst, því bakvinnslukerfið fyrir %s fann ekki upptök þess", "Sharing %s failed, because the file could not be found in the file cache" : "Deiling %s mistókst, því skráin fannst ekki í skyndiminni skráa", + "Can’t increase permissions of %s" : "Get ekki aukið aðgangsheimildir %s", + "Files can’t be shared with delete permissions" : "Ekki er hægt að deila skrá með eyða-heimildum", + "Files can’t be shared with create permissions" : "Ekki er hægt að deila skrá með búa-til-heimildum", "Expiration date is in the past" : "Gildistíminn er þegar runninn út", + "Can’t set expiration date more than %s days in the future" : "Ekki er hægt að setja lokadagsetningu meira en %s daga fram í tímann", + "%s shared »%s« with you" : "%s deildi »%s« með þér", + "%s via %s" : "%s með %s", "The requested share does not exist anymore" : "Umbeðin sameign er ekki lengur til", "Could not find category \"%s\"" : "Fann ekki flokkinn \"%s\"", "Sunday" : "Sunnudagur", @@ -212,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Eining með auðkenni: %s er ekki til. Virkjaðu hana í forritastillingum eða hafðu samband við kerfisstjóra.", "Server settings" : "Stillingar þjóns", "You need to enter either an existing account or the administrator." : "Þú verður að setja inn fyrirliggjandi notandaaðgang eða kerfisstjóra.", - "%s shared »%s« with you" : "%s deildi »%s« með þér", - "%s via %s" : "%s með %s", "Cannot increase permissions of %s" : "Get ekki aukið aðgangsheimildir %s", "Files can't be shared with delete permissions" : "Ekki er hægt að deila skrá með eyða-heimildum", "Files can't be shared with create permissions" : "Ekki er hægt að deila skrá með búa-til-heimildum", diff --git a/lib/l10n/is.json b/lib/l10n/is.json index 59159d1039..9957d7f808 100644 --- a/lib/l10n/is.json +++ b/lib/l10n/is.json @@ -10,6 +10,7 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s og %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s og %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s og %5$s", + "Education Edition" : "Kennsluútgáfa", "Enterprise bundle" : "Fyrirtækjavöndull", "Groupware bundle" : "Hópvinnsluvöndull", "Social sharing bundle" : "Deilivöndull fyrir samfélagsmiðla", @@ -48,6 +49,7 @@ "This is an automatically sent email, please do not reply." : "Þetta er sjálfvirk tölvupóstsending, ekki svara þessu.", "Help" : "Hjálp", "Apps" : "Forrit", + "Settings" : "Stillingar", "Log out" : "Skrá út", "Users" : "Notendur", "APCu" : "APCu", @@ -58,6 +60,13 @@ "Encryption" : "Dulritun", "Additional settings" : "Valfrjálsar stillingar", "Tips & tricks" : "Ábendingar og góð ráð", + "Personal info" : "Persónulegar upplýsingar", + "Sync clients" : "Samstilla biðlara", + "Unlimited" : "Ótakmarkað", + "__language_name__" : "Íslenska", + "Verifying" : "Sannreyni", + "Verifying …" : "Sannreyni …", + "Verify" : "Sannreyna", "%s enter the database username and name." : "%s settu inn notandanafn og nafn á gagnagrunni.", "%s enter the database username." : "%s settu inn notandanafn í gagnagrunni.", "%s enter the database name." : "%s settu inn nafn á gagnagrunni.", @@ -105,7 +114,13 @@ "Sharing %s failed, because resharing is not allowed" : "Deiling %s mistókst, því endurdeiling er ekki leyfð", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Deiling %s mistókst, því bakvinnslukerfið fyrir %s fann ekki upptök þess", "Sharing %s failed, because the file could not be found in the file cache" : "Deiling %s mistókst, því skráin fannst ekki í skyndiminni skráa", + "Can’t increase permissions of %s" : "Get ekki aukið aðgangsheimildir %s", + "Files can’t be shared with delete permissions" : "Ekki er hægt að deila skrá með eyða-heimildum", + "Files can’t be shared with create permissions" : "Ekki er hægt að deila skrá með búa-til-heimildum", "Expiration date is in the past" : "Gildistíminn er þegar runninn út", + "Can’t set expiration date more than %s days in the future" : "Ekki er hægt að setja lokadagsetningu meira en %s daga fram í tímann", + "%s shared »%s« with you" : "%s deildi »%s« með þér", + "%s via %s" : "%s með %s", "The requested share does not exist anymore" : "Umbeðin sameign er ekki lengur til", "Could not find category \"%s\"" : "Fann ekki flokkinn \"%s\"", "Sunday" : "Sunnudagur", @@ -210,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Eining með auðkenni: %s er ekki til. Virkjaðu hana í forritastillingum eða hafðu samband við kerfisstjóra.", "Server settings" : "Stillingar þjóns", "You need to enter either an existing account or the administrator." : "Þú verður að setja inn fyrirliggjandi notandaaðgang eða kerfisstjóra.", - "%s shared »%s« with you" : "%s deildi »%s« með þér", - "%s via %s" : "%s með %s", "Cannot increase permissions of %s" : "Get ekki aukið aðgangsheimildir %s", "Files can't be shared with delete permissions" : "Ekki er hægt að deila skrá með eyða-heimildum", "Files can't be shared with create permissions" : "Ekki er hægt að deila skrá með búa-til-heimildum", diff --git a/lib/l10n/it.js b/lib/l10n/it.js index cb1d91e6d6..fb74583dbe 100644 --- a/lib/l10n/it.js +++ b/lib/l10n/it.js @@ -47,6 +47,7 @@ OC.L10N.register( "This is an automatically sent email, please do not reply." : "Questo è un messaggio di posta inviato automaticamente, non rispondere.", "Help" : "Aiuto", "Apps" : "Applicazioni", + "Settings" : "Impostazioni", "Log out" : "Esci", "Users" : "Utenti", "APCu" : "APCu", @@ -57,6 +58,13 @@ OC.L10N.register( "Encryption" : "Cifratura", "Additional settings" : "Impostazioni aggiuntive", "Tips & tricks" : "Suggerimenti e trucchi", + "Personal info" : "Informazioni personali", + "Sync clients" : "Client di sincronizzazione", + "Unlimited" : "Illimitato", + "__language_name__" : "Italiano", + "Verifying" : "Verifica", + "Verifying …" : "Verifica in corso...", + "Verify" : "Verifica", "%s enter the database username and name." : "%s digita il nome utente e il nome del database.", "%s enter the database username." : "%s digita il nome utente del database.", "%s enter the database name." : "%s digita il nome del database.", @@ -104,7 +112,14 @@ OC.L10N.register( "Sharing %s failed, because resharing is not allowed" : "Condivisione di %s non riuscita, poiché la ri-condivisione non è consentita", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Condivisione di %s non riuscita, poiché il motore di condivisione per %s non riesce a trovare la sua fonte", "Sharing %s failed, because the file could not be found in the file cache" : "Condivisione di %s non riuscita, poiché il file non è stato trovato nella cache", + "Can’t increase permissions of %s" : "Impossibile aumentare i permessi di %s", + "Files can’t be shared with delete permissions" : "I file non possono essere condivisi con permessi di eliminazione", + "Files can’t be shared with create permissions" : "I file non possono essere condivisi con permessi di creazione", "Expiration date is in the past" : "La data di scadenza è nel passato", + "Can’t set expiration date more than %s days in the future" : "Impossibile impostare la data di scadenza a più di %s giorni nel futuro", + "%s shared »%s« with you" : "%s ha condiviso «%s» con te", + "%s via %s" : "%s tramite %s", + "The requested share does not exist anymore" : "La condivisione richiesta non esiste più", "Could not find category \"%s\"" : "Impossibile trovare la categoria \"%s\"", "Sunday" : "Domenica", "Monday" : "Lunedì", @@ -197,6 +212,7 @@ OC.L10N.register( "Your data directory must be an absolute path" : "La cartella dei dati deve essere un percorso assoluto", "Check the value of \"datadirectory\" in your configuration" : "Controlla il valore di \"datadirectory\" nella tua configurazione", "Your data directory is invalid" : "La cartella dei dati non è valida", + "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Assicurati che ci sia un file \".ocdata\" nella radice della cartella data.", "Could not obtain lock type %d on \"%s\"." : "Impossibile ottenere il blocco di tipo %d su \"%s\".", "Storage unauthorized. %s" : "Archiviazione non autorizzata. %s", "Storage incomplete configuration. %s" : "Configurazione dell'archiviazione incompleta.%s", @@ -207,8 +223,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Il modulo con id: %s non esiste. Abilitalo nelle impostazioni delle applicazioni o contatta il tuo amministratore.", "Server settings" : "Impostazioni server", "You need to enter either an existing account or the administrator." : "È necessario inserire un account esistente o l'amministratore.", - "%s shared »%s« with you" : "%s ha condiviso «%s» con te", - "%s via %s" : "%s tramite %s", "Cannot increase permissions of %s" : "Impossibile aumentare i permessi di %s", "Files can't be shared with delete permissions" : "I file non possono essere condivisi con permessi di eliminazione", "Files can't be shared with create permissions" : "I file non possono essere condivisi con permessi di creazione", diff --git a/lib/l10n/it.json b/lib/l10n/it.json index 8cd429ba9c..bd3a35cdef 100644 --- a/lib/l10n/it.json +++ b/lib/l10n/it.json @@ -45,6 +45,7 @@ "This is an automatically sent email, please do not reply." : "Questo è un messaggio di posta inviato automaticamente, non rispondere.", "Help" : "Aiuto", "Apps" : "Applicazioni", + "Settings" : "Impostazioni", "Log out" : "Esci", "Users" : "Utenti", "APCu" : "APCu", @@ -55,6 +56,13 @@ "Encryption" : "Cifratura", "Additional settings" : "Impostazioni aggiuntive", "Tips & tricks" : "Suggerimenti e trucchi", + "Personal info" : "Informazioni personali", + "Sync clients" : "Client di sincronizzazione", + "Unlimited" : "Illimitato", + "__language_name__" : "Italiano", + "Verifying" : "Verifica", + "Verifying …" : "Verifica in corso...", + "Verify" : "Verifica", "%s enter the database username and name." : "%s digita il nome utente e il nome del database.", "%s enter the database username." : "%s digita il nome utente del database.", "%s enter the database name." : "%s digita il nome del database.", @@ -102,7 +110,14 @@ "Sharing %s failed, because resharing is not allowed" : "Condivisione di %s non riuscita, poiché la ri-condivisione non è consentita", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Condivisione di %s non riuscita, poiché il motore di condivisione per %s non riesce a trovare la sua fonte", "Sharing %s failed, because the file could not be found in the file cache" : "Condivisione di %s non riuscita, poiché il file non è stato trovato nella cache", + "Can’t increase permissions of %s" : "Impossibile aumentare i permessi di %s", + "Files can’t be shared with delete permissions" : "I file non possono essere condivisi con permessi di eliminazione", + "Files can’t be shared with create permissions" : "I file non possono essere condivisi con permessi di creazione", "Expiration date is in the past" : "La data di scadenza è nel passato", + "Can’t set expiration date more than %s days in the future" : "Impossibile impostare la data di scadenza a più di %s giorni nel futuro", + "%s shared »%s« with you" : "%s ha condiviso «%s» con te", + "%s via %s" : "%s tramite %s", + "The requested share does not exist anymore" : "La condivisione richiesta non esiste più", "Could not find category \"%s\"" : "Impossibile trovare la categoria \"%s\"", "Sunday" : "Domenica", "Monday" : "Lunedì", @@ -195,6 +210,7 @@ "Your data directory must be an absolute path" : "La cartella dei dati deve essere un percorso assoluto", "Check the value of \"datadirectory\" in your configuration" : "Controlla il valore di \"datadirectory\" nella tua configurazione", "Your data directory is invalid" : "La cartella dei dati non è valida", + "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Assicurati che ci sia un file \".ocdata\" nella radice della cartella data.", "Could not obtain lock type %d on \"%s\"." : "Impossibile ottenere il blocco di tipo %d su \"%s\".", "Storage unauthorized. %s" : "Archiviazione non autorizzata. %s", "Storage incomplete configuration. %s" : "Configurazione dell'archiviazione incompleta.%s", @@ -205,8 +221,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Il modulo con id: %s non esiste. Abilitalo nelle impostazioni delle applicazioni o contatta il tuo amministratore.", "Server settings" : "Impostazioni server", "You need to enter either an existing account or the administrator." : "È necessario inserire un account esistente o l'amministratore.", - "%s shared »%s« with you" : "%s ha condiviso «%s» con te", - "%s via %s" : "%s tramite %s", "Cannot increase permissions of %s" : "Impossibile aumentare i permessi di %s", "Files can't be shared with delete permissions" : "I file non possono essere condivisi con permessi di eliminazione", "Files can't be shared with create permissions" : "I file non possono essere condivisi con permessi di creazione", diff --git a/lib/l10n/ja.js b/lib/l10n/ja.js index 89edf9ddab..70f61ce0c8 100644 --- a/lib/l10n/ja.js +++ b/lib/l10n/ja.js @@ -44,10 +44,12 @@ OC.L10N.register( "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "\"%s\" アプリは、このバージョンのサーバーと互換性がないためインストールされませんでした。", "Help" : "ヘルプ", "Apps" : "アプリ", + "Settings" : "設定", "Log out" : "ログアウト", "Users" : "ユーザー", "APCu" : "APCu", "Redis" : "Redis", + "Basic settings" : "基本設定", "Sharing" : "共有", "Security" : "セキュリティ", "Encryption" : "暗号化", @@ -100,6 +102,8 @@ OC.L10N.register( "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s の共有に失敗しました。%s のバックエンド共有に必要なソースが見つかりませんでした。", "Sharing %s failed, because the file could not be found in the file cache" : "%s の共有に失敗しました。ファイルキャッシュにファイルがありませんでした。", "Expiration date is in the past" : "有効期限が切れています", + "%s shared »%s« with you" : "%sが あなたと »%s«を共有しました", + "%s via %s" : "%s に %s から", "Could not find category \"%s\"" : "カテゴリ \"%s\" が見つかりませんでした", "Sunday" : "日曜日", "Monday" : "月曜日", @@ -197,8 +201,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "id: %sのモジュールは存在しません。アプリ設定で有効にするか、管理者に問い合わせてください。", "Server settings" : "サーバー設定", "You need to enter either an existing account or the administrator." : "既存のアカウントもしくは管理者のどちらかを入力する必要があります。", - "%s shared »%s« with you" : "%sが あなたと »%s«を共有しました", - "%s via %s" : "%s に %s から", "Cannot increase permissions of %s" : "%s の権限を強化できません", "Files can't be shared with delete permissions" : "削除権限つきでファイルを共有できません。", "Files can't be shared with create permissions" : "作成権限つきでファイルを共有できません。", diff --git a/lib/l10n/ja.json b/lib/l10n/ja.json index d1f96e1773..f1cbdb72f7 100644 --- a/lib/l10n/ja.json +++ b/lib/l10n/ja.json @@ -42,10 +42,12 @@ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "\"%s\" アプリは、このバージョンのサーバーと互換性がないためインストールされませんでした。", "Help" : "ヘルプ", "Apps" : "アプリ", + "Settings" : "設定", "Log out" : "ログアウト", "Users" : "ユーザー", "APCu" : "APCu", "Redis" : "Redis", + "Basic settings" : "基本設定", "Sharing" : "共有", "Security" : "セキュリティ", "Encryption" : "暗号化", @@ -98,6 +100,8 @@ "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s の共有に失敗しました。%s のバックエンド共有に必要なソースが見つかりませんでした。", "Sharing %s failed, because the file could not be found in the file cache" : "%s の共有に失敗しました。ファイルキャッシュにファイルがありませんでした。", "Expiration date is in the past" : "有効期限が切れています", + "%s shared »%s« with you" : "%sが あなたと »%s«を共有しました", + "%s via %s" : "%s に %s から", "Could not find category \"%s\"" : "カテゴリ \"%s\" が見つかりませんでした", "Sunday" : "日曜日", "Monday" : "月曜日", @@ -195,8 +199,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "id: %sのモジュールは存在しません。アプリ設定で有効にするか、管理者に問い合わせてください。", "Server settings" : "サーバー設定", "You need to enter either an existing account or the administrator." : "既存のアカウントもしくは管理者のどちらかを入力する必要があります。", - "%s shared »%s« with you" : "%sが あなたと »%s«を共有しました", - "%s via %s" : "%s に %s から", "Cannot increase permissions of %s" : "%s の権限を強化できません", "Files can't be shared with delete permissions" : "削除権限つきでファイルを共有できません。", "Files can't be shared with create permissions" : "作成権限つきでファイルを共有できません。", diff --git a/lib/l10n/ko.js b/lib/l10n/ko.js index 66ca7aab6b..a56411b6bf 100644 --- a/lib/l10n/ko.js +++ b/lib/l10n/ko.js @@ -107,6 +107,8 @@ OC.L10N.register( "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s을(를) 공유할 수 없습니다. %s의 공유 백엔드에서 원본 파일을 찾을 수 없습니다", "Sharing %s failed, because the file could not be found in the file cache" : "%s을(를) 공유할 수 없습니다. 파일 캐시에서 찾을 수 없습니다", "Expiration date is in the past" : "만료 날짜가 과거입니다", + "%s shared »%s« with you" : "%s 님이 %s을(를) 공유했습니다", + "%s via %s" : "%s(%s 경유)", "Could not find category \"%s\"" : "분류 \"%s\"을(를) 찾을 수 없습니다", "Sunday" : "일요일", "Monday" : "월요일", @@ -206,8 +208,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "ID: %s인 모듈이 존재하지 않습니다. 앱 설정에서 활성화하거나 관리자에게 연락하십시오.", "Server settings" : "서버 설정", "You need to enter either an existing account or the administrator." : "기존 계정이나 administrator(관리자)를 입력해야 합니다.", - "%s shared »%s« with you" : "%s 님이 %s을(를) 공유했습니다", - "%s via %s" : "%s(%s 경유)", "Cannot increase permissions of %s" : "%s의 권한을 늘릴 수 없습니다", "Files can't be shared with delete permissions" : "파일을 삭제 권한으로 공유할 수 없습니다", "Files can't be shared with create permissions" : "파일을 생성 권한으로 공유할 수 없습니다", diff --git a/lib/l10n/ko.json b/lib/l10n/ko.json index 1a1a4d1b7e..21602cf109 100644 --- a/lib/l10n/ko.json +++ b/lib/l10n/ko.json @@ -105,6 +105,8 @@ "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s을(를) 공유할 수 없습니다. %s의 공유 백엔드에서 원본 파일을 찾을 수 없습니다", "Sharing %s failed, because the file could not be found in the file cache" : "%s을(를) 공유할 수 없습니다. 파일 캐시에서 찾을 수 없습니다", "Expiration date is in the past" : "만료 날짜가 과거입니다", + "%s shared »%s« with you" : "%s 님이 %s을(를) 공유했습니다", + "%s via %s" : "%s(%s 경유)", "Could not find category \"%s\"" : "분류 \"%s\"을(를) 찾을 수 없습니다", "Sunday" : "일요일", "Monday" : "월요일", @@ -204,8 +206,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "ID: %s인 모듈이 존재하지 않습니다. 앱 설정에서 활성화하거나 관리자에게 연락하십시오.", "Server settings" : "서버 설정", "You need to enter either an existing account or the administrator." : "기존 계정이나 administrator(관리자)를 입력해야 합니다.", - "%s shared »%s« with you" : "%s 님이 %s을(를) 공유했습니다", - "%s via %s" : "%s(%s 경유)", "Cannot increase permissions of %s" : "%s의 권한을 늘릴 수 없습니다", "Files can't be shared with delete permissions" : "파일을 삭제 권한으로 공유할 수 없습니다", "Files can't be shared with create permissions" : "파일을 생성 권한으로 공유할 수 없습니다", diff --git a/lib/l10n/nb.js b/lib/l10n/nb.js index ec86a04be4..9e1a5ec576 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", @@ -120,6 +121,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Filer kan ikke deles med tilgang til opprettelse", "Expiration date is in the past" : "Utløpsdato er i fortid", "Can’t set expiration date more than %s days in the future" : "Kan ikke sette utløpsdato mer enn %s dager i fremtiden", + "%s shared »%s« with you" : "%s delte »%s« med deg", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "Forespurt ressurs finnes ikke lenger", "Could not find category \"%s\"" : "Kunne ikke finne kategori \"%s\"", "Sunday" : "Søndag", @@ -224,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul med ID: %s finnes ikke. Skru den på i programinnstillingene eller kontakt en administrator.", "Server settings" : "Tjenerinnstillinger", "You need to enter either an existing account or the administrator." : "Du må legge inn enten en eksisterende konto eller administratoren.", - "%s shared »%s« with you" : "%s delte »%s« med deg", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Kan ikke øke tillatelser for %s", "Files can't be shared with delete permissions" : "Filer kan ikke deles med rettigheter til sletting", "Files can't be shared with create permissions" : "Filer kan ikke deles med rettigheter til å opprette", diff --git a/lib/l10n/nb.json b/lib/l10n/nb.json index 06f17fbd8f..5471aa887a 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", @@ -118,6 +119,8 @@ "Files can’t be shared with create permissions" : "Filer kan ikke deles med tilgang til opprettelse", "Expiration date is in the past" : "Utløpsdato er i fortid", "Can’t set expiration date more than %s days in the future" : "Kan ikke sette utløpsdato mer enn %s dager i fremtiden", + "%s shared »%s« with you" : "%s delte »%s« med deg", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "Forespurt ressurs finnes ikke lenger", "Could not find category \"%s\"" : "Kunne ikke finne kategori \"%s\"", "Sunday" : "Søndag", @@ -222,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul med ID: %s finnes ikke. Skru den på i programinnstillingene eller kontakt en administrator.", "Server settings" : "Tjenerinnstillinger", "You need to enter either an existing account or the administrator." : "Du må legge inn enten en eksisterende konto eller administratoren.", - "%s shared »%s« with you" : "%s delte »%s« med deg", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Kan ikke øke tillatelser for %s", "Files can't be shared with delete permissions" : "Filer kan ikke deles med rettigheter til sletting", "Files can't be shared with create permissions" : "Filer kan ikke deles med rettigheter til å opprette", diff --git a/lib/l10n/nl.js b/lib/l10n/nl.js index 9ccea90667..88d88563f6 100644 --- a/lib/l10n/nl.js +++ b/lib/l10n/nl.js @@ -120,6 +120,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met 'creëer' permissies", "Expiration date is in the past" : "De vervaldatum ligt in het verleden", "Can’t set expiration date more than %s days in the future" : "Kan de vervaldatum niet meer dan %s dagen in de toekomst instellen", + "%s shared »%s« with you" : "%s deelde »%s« met jou", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "De vezochte share bestaat niet meer", "Could not find category \"%s\"" : "Kon categorie \"%s\" niet vinden", "Sunday" : "Zondag", @@ -224,8 +226,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Module met id: %s bestaat niet. Activeer het in je apps instellingen, of neem contact op met je beheerder.", "Server settings" : "Serverinstellingen", "You need to enter either an existing account or the administrator." : "Geef of een bestaand account op, of het beheerdersaccount.", - "%s shared »%s« with you" : "%s deelde »%s« met jou", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Kan de rechten van %s niet verruimen", "Files can't be shared with delete permissions" : "Bestanden kunnen niet worden gedeeld met verwijder rechten", "Files can't be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met creatie rechten", diff --git a/lib/l10n/nl.json b/lib/l10n/nl.json index 48bb43d470..55e7f71d6c 100644 --- a/lib/l10n/nl.json +++ b/lib/l10n/nl.json @@ -118,6 +118,8 @@ "Files can’t be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met 'creëer' permissies", "Expiration date is in the past" : "De vervaldatum ligt in het verleden", "Can’t set expiration date more than %s days in the future" : "Kan de vervaldatum niet meer dan %s dagen in de toekomst instellen", + "%s shared »%s« with you" : "%s deelde »%s« met jou", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "De vezochte share bestaat niet meer", "Could not find category \"%s\"" : "Kon categorie \"%s\" niet vinden", "Sunday" : "Zondag", @@ -222,8 +224,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Module met id: %s bestaat niet. Activeer het in je apps instellingen, of neem contact op met je beheerder.", "Server settings" : "Serverinstellingen", "You need to enter either an existing account or the administrator." : "Geef of een bestaand account op, of het beheerdersaccount.", - "%s shared »%s« with you" : "%s deelde »%s« met jou", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Kan de rechten van %s niet verruimen", "Files can't be shared with delete permissions" : "Bestanden kunnen niet worden gedeeld met verwijder rechten", "Files can't be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met creatie rechten", diff --git a/lib/l10n/pl.js b/lib/l10n/pl.js index 01a2d5f701..f359bbd405 100644 --- a/lib/l10n/pl.js +++ b/lib/l10n/pl.js @@ -119,6 +119,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Pliki nie mogą zostać udostępnione z prawem do tworzenia", "Expiration date is in the past" : "Data ważności jest przeszła", "Can’t set expiration date more than %s days in the future" : "Nie można ustawić daty ważności dłuższej niż 1%s dni", + "%s shared »%s« with you" : "%s współdzieli »%s« z tobą", + "%s via %s" : "%s przez %s", "The requested share does not exist anymore" : "Żądany obiekt współdzielony już nie istnieje", "Could not find category \"%s\"" : "Nie można odnaleźć kategorii \"%s\"", "Sunday" : "Niedziela", @@ -223,8 +225,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduł z id: %s nie istnieje. Należy go włączyć w ustawieniach aplikacji lub skontaktować się z administratorem.", "Server settings" : "Ustawienia serwera", "You need to enter either an existing account or the administrator." : "Należy wprowadzić istniejące konto użytkownika lub administratora.", - "%s shared »%s« with you" : "%s współdzieli »%s« z tobą", - "%s via %s" : "%s przez %s", "Cannot increase permissions of %s" : "Nie można zwiększyć uprawnienia %s", "Files can't be shared with delete permissions" : "Pliki nie mogą być współdzielone z uprawnieniami kasowania", "Files can't be shared with create permissions" : "Pliki nie mogą być współdzielony z uprawnieniami tworzenia", diff --git a/lib/l10n/pl.json b/lib/l10n/pl.json index fa0ac561c5..e089c1c710 100644 --- a/lib/l10n/pl.json +++ b/lib/l10n/pl.json @@ -117,6 +117,8 @@ "Files can’t be shared with create permissions" : "Pliki nie mogą zostać udostępnione z prawem do tworzenia", "Expiration date is in the past" : "Data ważności jest przeszła", "Can’t set expiration date more than %s days in the future" : "Nie można ustawić daty ważności dłuższej niż 1%s dni", + "%s shared »%s« with you" : "%s współdzieli »%s« z tobą", + "%s via %s" : "%s przez %s", "The requested share does not exist anymore" : "Żądany obiekt współdzielony już nie istnieje", "Could not find category \"%s\"" : "Nie można odnaleźć kategorii \"%s\"", "Sunday" : "Niedziela", @@ -221,8 +223,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduł z id: %s nie istnieje. Należy go włączyć w ustawieniach aplikacji lub skontaktować się z administratorem.", "Server settings" : "Ustawienia serwera", "You need to enter either an existing account or the administrator." : "Należy wprowadzić istniejące konto użytkownika lub administratora.", - "%s shared »%s« with you" : "%s współdzieli »%s« z tobą", - "%s via %s" : "%s przez %s", "Cannot increase permissions of %s" : "Nie można zwiększyć uprawnienia %s", "Files can't be shared with delete permissions" : "Pliki nie mogą być współdzielone z uprawnieniami kasowania", "Files can't be shared with create permissions" : "Pliki nie mogą być współdzielony z uprawnieniami tworzenia", diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js index e98cc71c4f..a7e6a2a073 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", @@ -120,6 +121,11 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Os arquivos não podem ser compartilhados com permissões de criação", "Expiration date is in the past" : "Data de expiração está no passado", "Can’t set expiration date more than %s days in the future" : "Não é possível definir a expiração mais do que %s dias no futuro", + "%s shared »%s« with you" : "%s compartilhou »%s« com você", + "%s shared »%s« with you." : "%s compartilhou »%s« com você.", + "Click the button below to open it." : "Clique no botão abaixo para abri-lo.", + "Open »%s«" : "Abrir »%s«", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "O compartilhamento solicitado não existe mais", "Could not find category \"%s\"" : "Impossível localizar a categoria \"%s\"", "Sunday" : "Domingo", @@ -224,8 +230,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "O módulo com ID: %s não existe. Ative-o em suas configurações de aplicativos ou contacte o administrador.", "Server settings" : "Configurações do servidor", "You need to enter either an existing account or the administrator." : "Você precisa inserir uma conta existente ou a conta do administrador.", - "%s shared »%s« with you" : "%s compartilhou »%s« com você", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Não foi possível aumentar as permissões de %s", "Files can't be shared with delete permissions" : "Os arquivos não podem ser compartilhadas com permissões de exclusão", "Files can't be shared with create permissions" : "Os arquivos não podem ser compartilhados com permissões de criação", diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json index a7fb31d8f9..4f5c8d84aa 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", @@ -118,6 +119,11 @@ "Files can’t be shared with create permissions" : "Os arquivos não podem ser compartilhados com permissões de criação", "Expiration date is in the past" : "Data de expiração está no passado", "Can’t set expiration date more than %s days in the future" : "Não é possível definir a expiração mais do que %s dias no futuro", + "%s shared »%s« with you" : "%s compartilhou »%s« com você", + "%s shared »%s« with you." : "%s compartilhou »%s« com você.", + "Click the button below to open it." : "Clique no botão abaixo para abri-lo.", + "Open »%s«" : "Abrir »%s«", + "%s via %s" : "%s via %s", "The requested share does not exist anymore" : "O compartilhamento solicitado não existe mais", "Could not find category \"%s\"" : "Impossível localizar a categoria \"%s\"", "Sunday" : "Domingo", @@ -222,8 +228,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "O módulo com ID: %s não existe. Ative-o em suas configurações de aplicativos ou contacte o administrador.", "Server settings" : "Configurações do servidor", "You need to enter either an existing account or the administrator." : "Você precisa inserir uma conta existente ou a conta do administrador.", - "%s shared »%s« with you" : "%s compartilhou »%s« com você", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Não foi possível aumentar as permissões de %s", "Files can't be shared with delete permissions" : "Os arquivos não podem ser compartilhadas com permissões de exclusão", "Files can't be shared with create permissions" : "Os arquivos não podem ser compartilhados com permissões de criação", diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js index d17439fa17..e5f3ec70d9 100644 --- a/lib/l10n/ru.js +++ b/lib/l10n/ru.js @@ -12,6 +12,7 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s и %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s и %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s и %5$s", + "Education Edition" : "Образовательная редакция", "Enterprise bundle" : "Корпоративный пакет", "Groupware bundle" : "Пакет для групп", "Social sharing bundle" : "Пакет для соц. сетей", @@ -120,6 +121,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Файлы не могут иметь общий доступ с правами на создание", "Expiration date is in the past" : "Дата окончания срока действия уже прошла", "Can’t set expiration date more than %s days in the future" : "Невозможно установить дату окончания срока действия более %s дней", + "%s shared »%s« with you" : "%s поделился »%s« с вами", + "%s via %s" : "%s через %s", "The requested share does not exist anymore" : "Запрошенный общий ресурс более не существует.", "Could not find category \"%s\"" : "Категория «%s» не найдена", "Sunday" : "Воскресенье", @@ -224,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Модуль с ID %s не существует. Пожалуйста включите его в настройках приложений или обратитесь к администратору.", "Server settings" : "Настройки сервера", "You need to enter either an existing account or the administrator." : "Вы должны войти или в существующий аккаунт или под администратором.", - "%s shared »%s« with you" : "%s поделился »%s« с вами", - "%s via %s" : "%s через %s", "Cannot increase permissions of %s" : "Невозможно увеличить права доступа для %s", "Files can't be shared with delete permissions" : "Файлы не могут иметь общий доступ с правами на удаление", "Files can't be shared with create permissions" : "Файлы не могут иметь общий доступ с правами на создание", diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json index 039cf8b6c1..92348342fe 100644 --- a/lib/l10n/ru.json +++ b/lib/l10n/ru.json @@ -10,6 +10,7 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s и %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s и %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s и %5$s", + "Education Edition" : "Образовательная редакция", "Enterprise bundle" : "Корпоративный пакет", "Groupware bundle" : "Пакет для групп", "Social sharing bundle" : "Пакет для соц. сетей", @@ -118,6 +119,8 @@ "Files can’t be shared with create permissions" : "Файлы не могут иметь общий доступ с правами на создание", "Expiration date is in the past" : "Дата окончания срока действия уже прошла", "Can’t set expiration date more than %s days in the future" : "Невозможно установить дату окончания срока действия более %s дней", + "%s shared »%s« with you" : "%s поделился »%s« с вами", + "%s via %s" : "%s через %s", "The requested share does not exist anymore" : "Запрошенный общий ресурс более не существует.", "Could not find category \"%s\"" : "Категория «%s» не найдена", "Sunday" : "Воскресенье", @@ -222,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Модуль с ID %s не существует. Пожалуйста включите его в настройках приложений или обратитесь к администратору.", "Server settings" : "Настройки сервера", "You need to enter either an existing account or the administrator." : "Вы должны войти или в существующий аккаунт или под администратором.", - "%s shared »%s« with you" : "%s поделился »%s« с вами", - "%s via %s" : "%s через %s", "Cannot increase permissions of %s" : "Невозможно увеличить права доступа для %s", "Files can't be shared with delete permissions" : "Файлы не могут иметь общий доступ с правами на удаление", "Files can't be shared with create permissions" : "Файлы не могут иметь общий доступ с правами на создание", diff --git a/lib/l10n/sk.js b/lib/l10n/sk.js index d0817e4240..0a7e397b56 100644 --- a/lib/l10n/sk.js +++ b/lib/l10n/sk.js @@ -97,6 +97,8 @@ OC.L10N.register( "Sharing %s failed, because the sharing backend for %s could not find its source" : "Sprístupnenie %s zlyhalo, backend nenašiel zdrojový %s", "Sharing %s failed, because the file could not be found in the file cache" : "Sprístupnenie %s zlyhalo, pretože súbor sa nenachádza vo vyrovnávacej pamäti súborov", "Expiration date is in the past" : "Dátum konca platnosti je v minulosti", + "%s shared »%s« with you" : "%s vám sprístupnil »%s«", + "%s via %s" : "%s cez %s", "Could not find category \"%s\"" : "Nemožno nájsť danú kategóriu \"%s\"", "Sunday" : "Nedeľa", "Monday" : "Pondelok", @@ -188,8 +190,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s ID: %s neexistuje. Povoľte ho prosím vo vašom nastavení aplikácií alebo konaktujte správcu.", "Server settings" : "Nastavenia servera", "You need to enter either an existing account or the administrator." : "Musíte zadať jestvujúci účet alebo administrátora.", - "%s shared »%s« with you" : "%s vám sprístupnil »%s«", - "%s via %s" : "%s cez %s", "Cannot set expiration date more than %s days in the future" : "Nie je možné nastaviť dátum konca platnosti viac ako %s dní v budúcnosti", "Personal" : "Osobné", "Admin" : "Administrátor", diff --git a/lib/l10n/sk.json b/lib/l10n/sk.json index b7c9acf31d..a7c5a33161 100644 --- a/lib/l10n/sk.json +++ b/lib/l10n/sk.json @@ -95,6 +95,8 @@ "Sharing %s failed, because the sharing backend for %s could not find its source" : "Sprístupnenie %s zlyhalo, backend nenašiel zdrojový %s", "Sharing %s failed, because the file could not be found in the file cache" : "Sprístupnenie %s zlyhalo, pretože súbor sa nenachádza vo vyrovnávacej pamäti súborov", "Expiration date is in the past" : "Dátum konca platnosti je v minulosti", + "%s shared »%s« with you" : "%s vám sprístupnil »%s«", + "%s via %s" : "%s cez %s", "Could not find category \"%s\"" : "Nemožno nájsť danú kategóriu \"%s\"", "Sunday" : "Nedeľa", "Monday" : "Pondelok", @@ -186,8 +188,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s ID: %s neexistuje. Povoľte ho prosím vo vašom nastavení aplikácií alebo konaktujte správcu.", "Server settings" : "Nastavenia servera", "You need to enter either an existing account or the administrator." : "Musíte zadať jestvujúci účet alebo administrátora.", - "%s shared »%s« with you" : "%s vám sprístupnil »%s«", - "%s via %s" : "%s cez %s", "Cannot set expiration date more than %s days in the future" : "Nie je možné nastaviť dátum konca platnosti viac ako %s dní v budúcnosti", "Personal" : "Osobné", "Admin" : "Administrátor", diff --git a/lib/l10n/sq.js b/lib/l10n/sq.js index 72df40ab6b..6f48e40265 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,17 +51,21 @@ 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" : "Konfigurime", "Log out" : "Shkyçu", "Users" : "Përdorues", "APCu" : "APCu", "Redis" : "Redis", + "Basic settings" : "Konfigurime bazike", "Sharing" : "Ndarja", "Security" : "Siguria", "Encryption" : "Enkriptimi", "Additional settings" : "Konfigurime shtesë", "Tips & tricks" : "Këshilla dhe rrengje", "Personal info" : "Informacion personal", - "Unlimited" : "E pa limituar", + "Sync clients" : "Klientë të sikronizuar", + "Unlimited" : "E palimituar", + "__language_name__" : "_emri_i_gjuhës__", "Verifying" : "Duke e verifikuar", "Verifying …" : "Duke e verifikuar ...", "Verify" : "Verifiko", @@ -66,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! ", @@ -105,15 +116,25 @@ OC.L10N.register( "Sharing %s failed, because resharing is not allowed" : "Ndarja e %s me të tjerët dështoi, ngaqë nuk lejohen rindarje", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Ndarja e %s dështoi, ngaqë mekanizmi i shërbimit për ndarje për %s s’gjeti dot burimin për të", "Sharing %s failed, because the file could not be found in the file cache" : "Ndarja e %s me të tjerët dështoi, ngaqë kartela s’u gjet dot te fshehtina e kartelave", + "Can’t increase permissions of %s" : "Nuk mund të shtohen lejet e %s", + "Files can’t be shared with delete permissions" : "Skedarët nuk mund të ndahen me leje të fshira", + "Files can’t be shared with create permissions" : "matchSkedarët nuk mund të ndahen me leje të krijuara", "Expiration date is in the past" : "Data e skadimit bie në të kaluarën", + "Can’t set expiration date more than %s days in the future" : "Nuk mund të caktohet data e skadimit më shumë se %s ditë në të ardhmen", + "%s shared »%s« with you" : "%s ndau me ju »%s«", + "%s shared »%s« with you." : "1 %s ndarë »1 %s« me ju.", + "Click the button below to open it." : "Kliko butonin më poshtë për të hapur atë.", + "Open »%s«" : "Hap»1 %s«", + "%s via %s" : "%s përmes %s", + "The requested share does not exist anymore" : "Ndarja e kërkuar nuk ekziston më", "Could not find category \"%s\"" : "S’u gjet kategori \"%s\"", - "Sunday" : "E diel", - "Monday" : "E hënë", - "Tuesday" : "E martë", - "Wednesday" : "E mërkurë", - "Thursday" : "E enjte", - "Friday" : "E premte", - "Saturday" : "E shtunë", + "Sunday" : "E Dielë", + "Monday" : "E Hënë", + "Tuesday" : "E Martë", + "Wednesday" : "E Mërkurë", + "Thursday" : "E Enjte", + "Friday" : "E Premte", + "Saturday" : "E Shtunë", "Sun." : "Die.", "Mon." : "Hën.", "Tue." : "Mar.", @@ -124,7 +145,7 @@ OC.L10N.register( "Su" : "Di", "Mo" : "Hë", "Tu" : "Ma", - "We" : "Më", + "We" : "Ne", "Th" : "En", "Fr" : "Pr", "Sa" : "Sh", @@ -155,6 +176,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", @@ -167,11 +189,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.", @@ -189,7 +215,11 @@ OC.L10N.register( "PostgreSQL >= 9 required" : "Lypset PostgreSQL >= 9", "Please upgrade your database version" : "Ju lutemi, përmirësoni bazën tuaj të të dhënave me një version më të ri.", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Ju lutemi, kalojani lejet në 0770, që kështu atë drejtori të mos mund ta shfaqin përdorues të tjerë.", + "Your data directory is readable by other users" : "Direktoria juaj e të dhënave është e lexueshme nga përdorues të tjerë", + "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", @@ -200,8 +230,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "S’ka modul me id: %s. Ju lutemi, aktivizojeni te rregullimet tuaja për aplikacionin ose lidhuni me përgjegjësin tuaj.", "Server settings" : "Konfigurimi i serverit", "You need to enter either an existing account or the administrator." : "Lypset të jepni ose një llogari ekzistuese, ose llogarinë e përgjegjësit.", - "%s shared »%s« with you" : "%s ndau me ju »%s«", - "%s via %s" : "%s përmes %s", "Cannot increase permissions of %s" : "S’mund të shtohen lejet për %s", "Files can't be shared with delete permissions" : "Kartelat s’mund të ndahen me leje fshirjeje", "Files can't be shared with create permissions" : "Kartelat s’mund të ndahen me leje krijimi", diff --git a/lib/l10n/sq.json b/lib/l10n/sq.json index 4ca0cb1c20..3e75292b98 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,17 +49,21 @@ "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" : "Konfigurime", "Log out" : "Shkyçu", "Users" : "Përdorues", "APCu" : "APCu", "Redis" : "Redis", + "Basic settings" : "Konfigurime bazike", "Sharing" : "Ndarja", "Security" : "Siguria", "Encryption" : "Enkriptimi", "Additional settings" : "Konfigurime shtesë", "Tips & tricks" : "Këshilla dhe rrengje", "Personal info" : "Informacion personal", - "Unlimited" : "E pa limituar", + "Sync clients" : "Klientë të sikronizuar", + "Unlimited" : "E palimituar", + "__language_name__" : "_emri_i_gjuhës__", "Verifying" : "Duke e verifikuar", "Verifying …" : "Duke e verifikuar ...", "Verify" : "Verifiko", @@ -64,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! ", @@ -103,15 +114,25 @@ "Sharing %s failed, because resharing is not allowed" : "Ndarja e %s me të tjerët dështoi, ngaqë nuk lejohen rindarje", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Ndarja e %s dështoi, ngaqë mekanizmi i shërbimit për ndarje për %s s’gjeti dot burimin për të", "Sharing %s failed, because the file could not be found in the file cache" : "Ndarja e %s me të tjerët dështoi, ngaqë kartela s’u gjet dot te fshehtina e kartelave", + "Can’t increase permissions of %s" : "Nuk mund të shtohen lejet e %s", + "Files can’t be shared with delete permissions" : "Skedarët nuk mund të ndahen me leje të fshira", + "Files can’t be shared with create permissions" : "matchSkedarët nuk mund të ndahen me leje të krijuara", "Expiration date is in the past" : "Data e skadimit bie në të kaluarën", + "Can’t set expiration date more than %s days in the future" : "Nuk mund të caktohet data e skadimit më shumë se %s ditë në të ardhmen", + "%s shared »%s« with you" : "%s ndau me ju »%s«", + "%s shared »%s« with you." : "1 %s ndarë »1 %s« me ju.", + "Click the button below to open it." : "Kliko butonin më poshtë për të hapur atë.", + "Open »%s«" : "Hap»1 %s«", + "%s via %s" : "%s përmes %s", + "The requested share does not exist anymore" : "Ndarja e kërkuar nuk ekziston më", "Could not find category \"%s\"" : "S’u gjet kategori \"%s\"", - "Sunday" : "E diel", - "Monday" : "E hënë", - "Tuesday" : "E martë", - "Wednesday" : "E mërkurë", - "Thursday" : "E enjte", - "Friday" : "E premte", - "Saturday" : "E shtunë", + "Sunday" : "E Dielë", + "Monday" : "E Hënë", + "Tuesday" : "E Martë", + "Wednesday" : "E Mërkurë", + "Thursday" : "E Enjte", + "Friday" : "E Premte", + "Saturday" : "E Shtunë", "Sun." : "Die.", "Mon." : "Hën.", "Tue." : "Mar.", @@ -122,7 +143,7 @@ "Su" : "Di", "Mo" : "Hë", "Tu" : "Ma", - "We" : "Më", + "We" : "Ne", "Th" : "En", "Fr" : "Pr", "Sa" : "Sh", @@ -153,6 +174,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", @@ -165,11 +187,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.", @@ -187,7 +213,11 @@ "PostgreSQL >= 9 required" : "Lypset PostgreSQL >= 9", "Please upgrade your database version" : "Ju lutemi, përmirësoni bazën tuaj të të dhënave me një version më të ri.", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Ju lutemi, kalojani lejet në 0770, që kështu atë drejtori të mos mund ta shfaqin përdorues të tjerë.", + "Your data directory is readable by other users" : "Direktoria juaj e të dhënave është e lexueshme nga përdorues të tjerë", + "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", @@ -198,8 +228,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "S’ka modul me id: %s. Ju lutemi, aktivizojeni te rregullimet tuaja për aplikacionin ose lidhuni me përgjegjësin tuaj.", "Server settings" : "Konfigurimi i serverit", "You need to enter either an existing account or the administrator." : "Lypset të jepni ose një llogari ekzistuese, ose llogarinë e përgjegjësit.", - "%s shared »%s« with you" : "%s ndau me ju »%s«", - "%s via %s" : "%s përmes %s", "Cannot increase permissions of %s" : "S’mund të shtohen lejet për %s", "Files can't be shared with delete permissions" : "Kartelat s’mund të ndahen me leje fshirjeje", "Files can't be shared with create permissions" : "Kartelat s’mund të ndahen me leje krijimi", diff --git a/lib/l10n/sv.js b/lib/l10n/sv.js index 29e0611f95..b9fc016f63 100644 --- a/lib/l10n/sv.js +++ b/lib/l10n/sv.js @@ -103,6 +103,8 @@ OC.L10N.register( "Sharing %s failed, because the sharing backend for %s could not find its source" : "Delning %s misslyckades därför att delningsgränsnittet för %s inte kunde hitta sin källa", "Sharing %s failed, because the file could not be found in the file cache" : "Delning %s misslyckades därför att filen inte kunde hittas i filcachen", "Expiration date is in the past" : "Utgångsdatum är i det förflutna", + "%s shared »%s« with you" : "%s delade »%s« med dig", + "%s via %s" : "%s via %s", "Could not find category \"%s\"" : "Kunde inte hitta kategorin \"%s\"", "Sunday" : "Söndag", "Monday" : "Måndag", @@ -202,8 +204,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modulen med id: %s finns inte. Vänligen aktivera det i dina app-inställningar eller kontakta din administratör.", "Server settings" : "Serverinställningar", "You need to enter either an existing account or the administrator." : "Du måste antingen ange ett befintligt konto eller administratör.", - "%s shared »%s« with you" : "%s delade »%s« med dig", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Kan ej öka behörigheterna för %s", "Files can't be shared with delete permissions" : "Filerna kan ej delas med \"radera behörigheter\"", "Files can't be shared with create permissions" : "Filerna kan ej delas med \"skapa behörigheter\"", diff --git a/lib/l10n/sv.json b/lib/l10n/sv.json index f5dc6cd86f..0ff89c129e 100644 --- a/lib/l10n/sv.json +++ b/lib/l10n/sv.json @@ -101,6 +101,8 @@ "Sharing %s failed, because the sharing backend for %s could not find its source" : "Delning %s misslyckades därför att delningsgränsnittet för %s inte kunde hitta sin källa", "Sharing %s failed, because the file could not be found in the file cache" : "Delning %s misslyckades därför att filen inte kunde hittas i filcachen", "Expiration date is in the past" : "Utgångsdatum är i det förflutna", + "%s shared »%s« with you" : "%s delade »%s« med dig", + "%s via %s" : "%s via %s", "Could not find category \"%s\"" : "Kunde inte hitta kategorin \"%s\"", "Sunday" : "Söndag", "Monday" : "Måndag", @@ -200,8 +202,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modulen med id: %s finns inte. Vänligen aktivera det i dina app-inställningar eller kontakta din administratör.", "Server settings" : "Serverinställningar", "You need to enter either an existing account or the administrator." : "Du måste antingen ange ett befintligt konto eller administratör.", - "%s shared »%s« with you" : "%s delade »%s« med dig", - "%s via %s" : "%s via %s", "Cannot increase permissions of %s" : "Kan ej öka behörigheterna för %s", "Files can't be shared with delete permissions" : "Filerna kan ej delas med \"radera behörigheter\"", "Files can't be shared with create permissions" : "Filerna kan ej delas med \"skapa behörigheter\"", diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js index 0b1b5a8bff..5ad3ad4f17 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", @@ -120,6 +121,11 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "Ekleme izni ile dosya paylaşılamaz", "Expiration date is in the past" : "Son kullanma tarihi geçmişte", "Can’t set expiration date more than %s days in the future" : "Son kullanma tarihi %sgünden sonrası olarak ayarlanamaz", + "%s shared »%s« with you" : "%s sizinle »%s« ögesini paylaştı", + "%s shared »%s« with you." : "%s sizinle »%s« ögesini paylaştı.", + "Click the button below to open it." : "Açmak için aşağıdaki düğmeye tıklayın.", + "Open »%s«" : "»%s« Aç", + "%s via %s" : "%s, %s aracılığıyla", "The requested share does not exist anymore" : "Erişilmek istenilen paylaşım artık yok", "Could not find category \"%s\"" : "\"%s\" kategorisi bulunamadı", "Sunday" : "Pazar", @@ -224,8 +230,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "%s kodlu modül bulunamadı. Lütfen uygulamalarınız içinden modülü etkinleştirin ya da sistem yöneticinizle görüşün.", "Server settings" : "Sunucu ayarları", "You need to enter either an existing account or the administrator." : "Varolan bir hesap ya da yönetici hesabı yazmalısınız.", - "%s shared »%s« with you" : "%s sizinle »%s« ögesini paylaştı", - "%s via %s" : "%s, %s aracılığıyla", "Cannot increase permissions of %s" : "%s izinleri yükseltilemiyor", "Files can't be shared with delete permissions" : "Dosyalar silme izniyle paylaşılamaz", "Files can't be shared with create permissions" : "Dosyalar oluşturma izniyle paylaşılamaz", diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json index 498e75ffb0..5001fe5193 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", @@ -118,6 +119,11 @@ "Files can’t be shared with create permissions" : "Ekleme izni ile dosya paylaşılamaz", "Expiration date is in the past" : "Son kullanma tarihi geçmişte", "Can’t set expiration date more than %s days in the future" : "Son kullanma tarihi %sgünden sonrası olarak ayarlanamaz", + "%s shared »%s« with you" : "%s sizinle »%s« ögesini paylaştı", + "%s shared »%s« with you." : "%s sizinle »%s« ögesini paylaştı.", + "Click the button below to open it." : "Açmak için aşağıdaki düğmeye tıklayın.", + "Open »%s«" : "»%s« Aç", + "%s via %s" : "%s, %s aracılığıyla", "The requested share does not exist anymore" : "Erişilmek istenilen paylaşım artık yok", "Could not find category \"%s\"" : "\"%s\" kategorisi bulunamadı", "Sunday" : "Pazar", @@ -222,8 +228,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "%s kodlu modül bulunamadı. Lütfen uygulamalarınız içinden modülü etkinleştirin ya da sistem yöneticinizle görüşün.", "Server settings" : "Sunucu ayarları", "You need to enter either an existing account or the administrator." : "Varolan bir hesap ya da yönetici hesabı yazmalısınız.", - "%s shared »%s« with you" : "%s sizinle »%s« ögesini paylaştı", - "%s via %s" : "%s, %s aracılığıyla", "Cannot increase permissions of %s" : "%s izinleri yükseltilemiyor", "Files can't be shared with delete permissions" : "Dosyalar silme izniyle paylaşılamaz", "Files can't be shared with create permissions" : "Dosyalar oluşturma izniyle paylaşılamaz", diff --git a/lib/l10n/zh_CN.js b/lib/l10n/zh_CN.js index aee9d512d9..0402c802a4 100644 --- a/lib/l10n/zh_CN.js +++ b/lib/l10n/zh_CN.js @@ -12,6 +12,7 @@ OC.L10N.register( "%1$s, %2$s and %3$s" : "%1$s, %2$s 和 %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s 和 %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s 和 %5$s", + "Education Edition" : "教育版", "Enterprise bundle" : "企业捆绑包", "Groupware bundle" : "群组捆绑包", "Social sharing bundle" : "社交分享捆绑包", @@ -120,6 +121,8 @@ OC.L10N.register( "Files can’t be shared with create permissions" : "无法分享有创建权限的文件", "Expiration date is in the past" : "到期日期已过.", "Can’t set expiration date more than %s days in the future" : "无法将过期日期设置为超过 %s 天.", + "%s shared »%s« with you" : "%s 向您分享了 »%s«", + "%s via %s" : "%s 通过 %s", "The requested share does not exist anymore" : "当前请求的共享已经不存在", "Could not find category \"%s\"" : "无法找到分类 \"%s\"", "Sunday" : "星期日", @@ -224,8 +227,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "ID 为 %s 的模块不存在. 请在应用设置中启用或联系您的管理员.", "Server settings" : "服务器设置", "You need to enter either an existing account or the administrator." : "你需要输入一个数据库中已有的账户或管理员账户。", - "%s shared »%s« with you" : "%s 向您分享了 »%s«", - "%s via %s" : "%s 通过 %s", "Cannot increase permissions of %s" : "无法提升 %s 的权限", "Files can't be shared with delete permissions" : "无法分享有删除权限的文件", "Files can't be shared with create permissions" : "无法分享有创建权限的文件", diff --git a/lib/l10n/zh_CN.json b/lib/l10n/zh_CN.json index 40af580cd2..de4f91d70d 100644 --- a/lib/l10n/zh_CN.json +++ b/lib/l10n/zh_CN.json @@ -10,6 +10,7 @@ "%1$s, %2$s and %3$s" : "%1$s, %2$s 和 %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s 和 %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s 和 %5$s", + "Education Edition" : "教育版", "Enterprise bundle" : "企业捆绑包", "Groupware bundle" : "群组捆绑包", "Social sharing bundle" : "社交分享捆绑包", @@ -118,6 +119,8 @@ "Files can’t be shared with create permissions" : "无法分享有创建权限的文件", "Expiration date is in the past" : "到期日期已过.", "Can’t set expiration date more than %s days in the future" : "无法将过期日期设置为超过 %s 天.", + "%s shared »%s« with you" : "%s 向您分享了 »%s«", + "%s via %s" : "%s 通过 %s", "The requested share does not exist anymore" : "当前请求的共享已经不存在", "Could not find category \"%s\"" : "无法找到分类 \"%s\"", "Sunday" : "星期日", @@ -222,8 +225,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "ID 为 %s 的模块不存在. 请在应用设置中启用或联系您的管理员.", "Server settings" : "服务器设置", "You need to enter either an existing account or the administrator." : "你需要输入一个数据库中已有的账户或管理员账户。", - "%s shared »%s« with you" : "%s 向您分享了 »%s«", - "%s via %s" : "%s 通过 %s", "Cannot increase permissions of %s" : "无法提升 %s 的权限", "Files can't be shared with delete permissions" : "无法分享有删除权限的文件", "Files can't be shared with create permissions" : "无法分享有创建权限的文件", diff --git a/lib/l10n/zh_TW.js b/lib/l10n/zh_TW.js index fcde5a9016..dc33fd82ac 100644 --- a/lib/l10n/zh_TW.js +++ b/lib/l10n/zh_TW.js @@ -92,6 +92,8 @@ OC.L10N.register( "Sharing %s failed, because the sharing backend for %s could not find its source" : "分享 %s 失敗,因為 %s 的分享後端找不到它的來源", "Sharing %s failed, because the file could not be found in the file cache" : "分享 %s 失敗,因為在快取中找不到該檔案", "Expiration date is in the past" : "到期日是之前的時間", + "%s shared »%s« with you" : "%s 與您分享了 %s", + "%s via %s" : "%s 經由 %s", "Could not find category \"%s\"" : "找不到分類:\"%s\"", "Sunday" : "週日", "Monday" : "週一", @@ -185,8 +187,6 @@ OC.L10N.register( "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "模組編號: %s 不存在,請在應用程式設定中開啟,或是聯絡系統管理員", "Server settings" : "伺服器設定", "You need to enter either an existing account or the administrator." : "您必須輸入一個現有的帳號或管理員帳號。", - "%s shared »%s« with you" : "%s 與您分享了 %s", - "%s via %s" : "%s 經由 %s", "Cannot increase permissions of %s" : "無法增加%s的權限", "Files can't be shared with delete permissions" : "無法分享具有刪除權限的檔案", "Files can't be shared with create permissions" : "無法分享具有新建權限的檔案", diff --git a/lib/l10n/zh_TW.json b/lib/l10n/zh_TW.json index 40c0a83ffc..130d64680e 100644 --- a/lib/l10n/zh_TW.json +++ b/lib/l10n/zh_TW.json @@ -90,6 +90,8 @@ "Sharing %s failed, because the sharing backend for %s could not find its source" : "分享 %s 失敗,因為 %s 的分享後端找不到它的來源", "Sharing %s failed, because the file could not be found in the file cache" : "分享 %s 失敗,因為在快取中找不到該檔案", "Expiration date is in the past" : "到期日是之前的時間", + "%s shared »%s« with you" : "%s 與您分享了 %s", + "%s via %s" : "%s 經由 %s", "Could not find category \"%s\"" : "找不到分類:\"%s\"", "Sunday" : "週日", "Monday" : "週一", @@ -183,8 +185,6 @@ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "模組編號: %s 不存在,請在應用程式設定中開啟,或是聯絡系統管理員", "Server settings" : "伺服器設定", "You need to enter either an existing account or the administrator." : "您必須輸入一個現有的帳號或管理員帳號。", - "%s shared »%s« with you" : "%s 與您分享了 %s", - "%s via %s" : "%s 經由 %s", "Cannot increase permissions of %s" : "無法增加%s的權限", "Files can't be shared with delete permissions" : "無法分享具有刪除權限的檔案", "Files can't be shared with create permissions" : "無法分享具有新建權限的檔案", diff --git a/lib/private/Activity/Manager.php b/lib/private/Activity/Manager.php index bbb6f69415..7640a367e7 100644 --- a/lib/private/Activity/Manager.php +++ b/lib/private/Activity/Manager.php @@ -588,7 +588,7 @@ class Manager implements IManager { $users = $this->config->getUsersForUserValue('activity', 'rsstoken', $token); - if (sizeof($users) !== 1) { + if (count($users) !== 1) { // No unique user found throw new \UnexpectedValueException('The token is invalid'); } diff --git a/lib/private/AllConfig.php b/lib/private/AllConfig.php index 1f59e677a5..52b0679bb2 100644 --- a/lib/private/AllConfig.php +++ b/lib/private/AllConfig.php @@ -409,7 +409,7 @@ class AllConfig implements \OCP\IConfig { array_unshift($queryParams, $key); array_unshift($queryParams, $appName); - $placeholders = (sizeof($chunk) == 50) ? $placeholders50 : implode(',', array_fill(0, sizeof($chunk), '?')); + $placeholders = (count($chunk) === 50) ? $placeholders50 : implode(',', array_fill(0, count($chunk), '?')); $query = 'SELECT `userid`, `configvalue` ' . 'FROM `*PREFIX*preferences` ' . diff --git a/lib/private/App/AppStore/Bundles/BundleFetcher.php b/lib/private/App/AppStore/Bundles/BundleFetcher.php index 01cd4d6a51..3fbdf65cd4 100644 --- a/lib/private/App/AppStore/Bundles/BundleFetcher.php +++ b/lib/private/App/AppStore/Bundles/BundleFetcher.php @@ -42,6 +42,7 @@ class BundleFetcher { new EnterpriseBundle($this->l10n), new GroupwareBundle($this->l10n), new SocialSharingBundle($this->l10n), + new EducationBundle($this->l10n), ]; } diff --git a/lib/private/App/AppStore/Bundles/EducationBundle.php b/lib/private/App/AppStore/Bundles/EducationBundle.php new file mode 100644 index 0000000000..c3885f5e25 --- /dev/null +++ b/lib/private/App/AppStore/Bundles/EducationBundle.php @@ -0,0 +1,50 @@ + + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * 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 + * along with this program. If not, see . + * + */ + +namespace OC\App\AppStore\Bundles; + +class EducationBundle extends Bundle { + + /** + * {@inheritDoc} + */ + public function getName() { + return (string)$this->l10n->t('Education Edition'); + } + + /** + * {@inheritDoc} + */ + public function getAppIdentifiers() { + return [ + 'zenodo', + 'dashboard', + 'circles', + 'groupfolders', + 'announcementcenter', + 'admin_notifications', + 'quota_warning', + 'orcid', + 'user_saml', + ]; + } + +} diff --git a/lib/private/App/CodeChecker/MigrationSchemaChecker.php b/lib/private/App/CodeChecker/MigrationSchemaChecker.php index 9dee358327..ea403ad775 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 84d87efa3d..4e998c71f3 100644 --- a/lib/private/App/DependencyAnalyzer.php +++ b/lib/private/App/DependencyAnalyzer.php @@ -43,7 +43,7 @@ class DependencyAnalyzer { * @param Platform $platform * @param \OCP\IL10N $l */ - function __construct(Platform $platform, IL10N $l) { + public function __construct(Platform $platform, IL10N $l) { $this->platform = $platform; $this->l = $l; } @@ -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', join(', ', $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', join(', ', $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; @@ -349,8 +349,9 @@ class DependencyAnalyzer { * @return mixed */ private function getValue($element) { - if (isset($element['@value'])) + if (isset($element['@value'])) { return $element['@value']; + } return (string)$element; } } diff --git a/lib/private/App/InfoParser.php b/lib/private/App/InfoParser.php index 47ce28e6e9..fef8ab7a1e 100644 --- a/lib/private/App/InfoParser.php +++ b/lib/private/App/InfoParser.php @@ -176,7 +176,7 @@ class InfoParser { * @param \SimpleXMLElement $xml * @return array */ - function xmlToArray($xml) { + public function xmlToArray($xml) { if (!$xml->children()) { return (string)$xml; } diff --git a/lib/private/AppFramework/DependencyInjection/DIContainer.php b/lib/private/AppFramework/DependencyInjection/DIContainer.php index 86d14a2f33..d0c69c3bf3 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(); @@ -315,7 +315,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { * @deprecated implements only deprecated methods * @return IApi */ - function getCoreApi() + public function getCoreApi() { return $this->query('API'); } @@ -323,7 +323,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { /** * @return \OCP\IServerContainer */ - function getServer() + public function getServer() { return $this->server; } @@ -332,7 +332,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { * @param string $middleWare * @return boolean|null */ - function registerMiddleWare($middleWare) { + public function registerMiddleWare($middleWare) { array_push($this->middleWares, $middleWare); } @@ -340,7 +340,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { * used to return the appname of the set application * @return string the name of your application */ - function getAppName() { + public function getAppName() { return $this->query('AppName'); } @@ -348,7 +348,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { * @deprecated use IUserSession->isLoggedIn() * @return boolean */ - function isLoggedIn() { + public function isLoggedIn() { return \OC::$server->getUserSession()->isLoggedIn(); } @@ -356,7 +356,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { * @deprecated use IGroupManager->isAdmin($userId) * @return boolean */ - function isAdminUser() { + public function isAdminUser() { $uid = $this->getUserId(); return \OC_User::isAdminUser($uid); } @@ -371,7 +371,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { * @param string $level * @return mixed */ - function log($message, $level) { + public function log($message, $level) { switch($level){ case 'debug': $level = \OCP\Util::DEBUG; diff --git a/lib/private/AppFramework/Http/Request.php b/lib/private/AppFramework/Http/Request.php index 09e18f7417..956744e5d5 100644 --- a/lib/private/AppFramework/Http/Request.php +++ b/lib/private/AppFramework/Http/Request.php @@ -721,7 +721,7 @@ class Request implements \ArrayAccess, \Countable, IRequest { // strip off the script name's dir and file name // FIXME: Sabre does not really belong here - list($path, $name) = \Sabre\HTTP\URLUtil::splitPath($scriptName); + list($path, $name) = \Sabre\Uri\split($scriptName); if (!empty($path)) { if($path === $pathInfo || strpos($pathInfo, $path.'/') === 0) { $pathInfo = substr($pathInfo, strlen($path)); diff --git a/lib/private/AppFramework/Middleware/OCSMiddleware.php b/lib/private/AppFramework/Middleware/OCSMiddleware.php index 0fc7bb0f0e..46f2881b07 100644 --- a/lib/private/AppFramework/Middleware/OCSMiddleware.php +++ b/lib/private/AppFramework/Middleware/OCSMiddleware.php @@ -52,7 +52,7 @@ class OCSMiddleware extends Middleware { } /** - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName */ public function beforeController($controller, $methodName) { @@ -67,7 +67,7 @@ class OCSMiddleware extends Middleware { } /** - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * @param \Exception $exception * @throws \Exception @@ -87,7 +87,7 @@ class OCSMiddleware extends Middleware { } /** - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * @param Response $response * @return \OCP\AppFramework\Http\Response @@ -120,7 +120,7 @@ class OCSMiddleware extends Middleware { * @param string $message * @return V1Response|V2Response */ - private function buildNewResponse($controller, $code, $message) { + private function buildNewResponse(Controller $controller, $code, $message) { $format = $this->getFormat($controller); $data = new DataResponse(); @@ -135,10 +135,10 @@ class OCSMiddleware extends Middleware { } /** - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @return string */ - private function getFormat($controller) { + private function getFormat(Controller $controller) { // get format from the url format or request format parameter $format = $this->request->getParam('format'); diff --git a/lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php b/lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php index b361f453bd..e349960115 100644 --- a/lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php +++ b/lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php @@ -23,6 +23,7 @@ namespace OC\AppFramework\Middleware\Security; use OC\AppFramework\Utility\ControllerMethodReflector; use OC\Security\Bruteforce\Throttler; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http\Response; use OCP\AppFramework\Middleware; use OCP\IRequest; @@ -75,7 +76,7 @@ class BruteForceMiddleware extends Middleware { $action = $this->reflector->getAnnotationParameter('BruteForceProtection', 'action'); $ip = $this->request->getRemoteAddress(); $this->throttler->sleepDelay($ip, $action); - $this->throttler->registerAttempt($action, $ip); + $this->throttler->registerAttempt($action, $ip, $response->getThrottleMetadata()); } return parent::afterController($controller, $methodName, $response); diff --git a/lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php b/lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php index e9fcc1fdea..28ef8b43ff 100644 --- a/lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php +++ b/lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php @@ -24,6 +24,7 @@ namespace OC\AppFramework\Middleware\Security; use OC\AppFramework\Utility\ControllerMethodReflector; use OC\Security\RateLimiting\Exception\RateLimitExceededException; use OC\Security\RateLimiting\Limiter; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http\JSONResponse; use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Middleware; diff --git a/lib/private/AppFramework/Middleware/SessionMiddleware.php b/lib/private/AppFramework/Middleware/SessionMiddleware.php index c5fefa77fc..dd2029bf05 100644 --- a/lib/private/AppFramework/Middleware/SessionMiddleware.php +++ b/lib/private/AppFramework/Middleware/SessionMiddleware.php @@ -24,6 +24,7 @@ namespace OC\AppFramework\Middleware; use OC\AppFramework\Utility\ControllerMethodReflector; +use OCP\AppFramework\Controller; use OCP\IRequest; use OCP\AppFramework\Http\Response; use OCP\AppFramework\Middleware; @@ -55,7 +56,7 @@ class SessionMiddleware extends Middleware { } /** - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName */ public function beforeController($controller, $methodName) { @@ -66,7 +67,7 @@ class SessionMiddleware extends Middleware { } /** - * @param \OCP\AppFramework\Controller $controller + * @param Controller $controller * @param string $methodName * @param Response $response * @return Response diff --git a/lib/private/Archive/Archive.php b/lib/private/Archive/Archive.php index fadc12d2a2..15ec3e1fe5 100644 --- a/lib/private/Archive/Archive.php +++ b/lib/private/Archive/Archive.php @@ -36,100 +36,100 @@ abstract class Archive { /** * @param $source */ - abstract function __construct($source); + public abstract function __construct($source); /** * add an empty folder to the archive * @param string $path * @return bool */ - abstract function addFolder($path); + public abstract function addFolder($path); /** * add a file to the archive * @param string $path * @param string $source either a local file or string data * @return bool */ - abstract function addFile($path, $source=''); + public abstract function addFile($path, $source=''); /** * rename a file or folder in the archive * @param string $source * @param string $dest * @return bool */ - abstract function rename($source, $dest); + public abstract function rename($source, $dest); /** * get the uncompressed size of a file in the archive * @param string $path * @return int */ - abstract function filesize($path); + public abstract function filesize($path); /** * get the last modified time of a file in the archive * @param string $path * @return int */ - abstract function mtime($path); + public abstract function mtime($path); /** * get the files in a folder * @param string $path * @return array */ - abstract function getFolder($path); + public abstract function getFolder($path); /** * get all files in the archive * @return array */ - abstract function getFiles(); + public abstract function getFiles(); /** * get the content of a file * @param string $path * @return string */ - abstract function getFile($path); + public abstract function getFile($path); /** * extract a single file from the archive * @param string $path * @param string $dest * @return bool */ - abstract function extractFile($path, $dest); + public abstract function extractFile($path, $dest); /** * extract the archive * @param string $dest * @return bool */ - abstract function extract($dest); + public abstract function extract($dest); /** * check if a file or folder exists in the archive * @param string $path * @return bool */ - abstract function fileExists($path); + public abstract function fileExists($path); /** * remove a file or folder from the archive * @param string $path * @return bool */ - abstract function remove($path); + public abstract function remove($path); /** * get a file handler * @param string $path * @param string $mode * @return resource */ - abstract function getStream($path, $mode); + public abstract function getStream($path, $mode); /** * add a folder and all its content * @param string $path * @param string $source * @return boolean|null */ - function addRecursive($path, $source) { + public function addRecursive($path, $source) { $dh = opendir($source); if(is_resource($dh)) { $this->addFolder($path); while (($file = readdir($dh)) !== false) { - if($file=='.' or $file=='..') { + if($file === '.' || $file === '..') { continue; } if(is_dir($source.'/'.$file)) { diff --git a/lib/private/Archive/TAR.php b/lib/private/Archive/TAR.php index 07ccd09f39..e6f7ad2b99 100644 --- a/lib/private/Archive/TAR.php +++ b/lib/private/Archive/TAR.php @@ -52,7 +52,7 @@ class TAR extends Archive { /** * @param string $source */ - function __construct($source) { + public function __construct($source) { $types = array(null, 'gz', 'bz2'); $this->path = $source; $this->tar = new \Archive_Tar($source, $types[self::getTarType($source)]); @@ -90,7 +90,7 @@ class TAR extends Archive { * @param string $path * @return bool */ - function addFolder($path) { + public function addFolder($path) { $tmpBase = \OC::$server->getTempManager()->getTemporaryFolder(); if (substr($path, -1, 1) != '/') { $path .= '/'; @@ -120,7 +120,7 @@ class TAR extends Archive { * @param string $source either a local file or string data * @return bool */ - function addFile($path, $source = '') { + public function addFile($path, $source = '') { if ($this->fileExists($path)) { $this->remove($path); } @@ -140,7 +140,7 @@ class TAR extends Archive { * @param string $dest * @return bool */ - function rename($source, $dest) { + public function rename($source, $dest) { //no proper way to delete, rename entire archive, rename file and remake archive $tmp = \OCP\Files::tmpFolder(); $this->tar->extract($tmp); @@ -180,7 +180,7 @@ class TAR extends Archive { * @param string $path * @return int */ - function filesize($path) { + public function filesize($path) { $stat = $this->getHeader($path); return $stat['size']; } @@ -191,7 +191,7 @@ class TAR extends Archive { * @param string $path * @return int */ - function mtime($path) { + public function mtime($path) { $stat = $this->getHeader($path); return $stat['mtime']; } @@ -202,7 +202,7 @@ class TAR extends Archive { * @param string $path * @return array */ - function getFolder($path) { + public function getFolder($path) { $files = $this->getFiles(); $folderContent = array(); $pathLength = strlen($path); @@ -228,7 +228,7 @@ class TAR extends Archive { * * @return array */ - function getFiles() { + public function getFiles() { if ($this->fileList) { return $this->fileList; } @@ -249,7 +249,7 @@ class TAR extends Archive { * @param string $path * @return string */ - function getFile($path) { + public function getFile($path) { return $this->tar->extractInString($path); } @@ -260,7 +260,7 @@ class TAR extends Archive { * @param string $dest * @return bool */ - function extractFile($path, $dest) { + public function extractFile($path, $dest) { $tmp = \OCP\Files::tmpFolder(); if (!$this->fileExists($path)) { return false; @@ -283,7 +283,7 @@ class TAR extends Archive { * @param string $dest * @return bool */ - function extract($dest) { + public function extract($dest) { return $this->tar->extract($dest); } @@ -293,7 +293,7 @@ class TAR extends Archive { * @param string $path * @return bool */ - function fileExists($path) { + public function fileExists($path) { $files = $this->getFiles(); if ((array_search($path, $files) !== false) or (array_search($path . '/', $files) !== false)) { return true; @@ -322,7 +322,7 @@ class TAR extends Archive { * @param string $path * @return bool */ - function remove($path) { + public function remove($path) { if (!$this->fileExists($path)) { return false; } @@ -346,7 +346,7 @@ class TAR extends Archive { * @param string $mode * @return resource */ - function getStream($path, $mode) { + public function getStream($path, $mode) { if (strrpos($path, '.') !== false) { $ext = substr($path, strrpos($path, '.')); } else { @@ -371,7 +371,7 @@ class TAR extends Archive { /** * write back temporary files */ - function writeBack($tmpFile, $path) { + public function writeBack($tmpFile, $path) { $this->addFile($path, $tmpFile); unlink($tmpFile); } diff --git a/lib/private/Archive/ZIP.php b/lib/private/Archive/ZIP.php index 0ed0f48acc..8d616a7ef9 100644 --- a/lib/private/Archive/ZIP.php +++ b/lib/private/Archive/ZIP.php @@ -43,7 +43,7 @@ class ZIP extends Archive{ /** * @param string $source */ - function __construct($source) { + public function __construct($source) { $this->path=$source; $this->zip=new \ZipArchive(); if($this->zip->open($source, \ZipArchive::CREATE)) { @@ -56,7 +56,7 @@ class ZIP extends Archive{ * @param string $path * @return bool */ - function addFolder($path) { + public function addFolder($path) { return $this->zip->addEmptyDir($path); } /** @@ -65,7 +65,7 @@ class ZIP extends Archive{ * @param string $source either a local file or string data * @return bool */ - function addFile($path, $source='') { + public function addFile($path, $source='') { if($source and $source[0]=='/' and file_exists($source)) { $result=$this->zip->addFile($source, $path); }else{ @@ -83,7 +83,7 @@ class ZIP extends Archive{ * @param string $dest * @return boolean|null */ - function rename($source, $dest) { + public function rename($source, $dest) { $source=$this->stripPath($source); $dest=$this->stripPath($dest); $this->zip->renameName($source, $dest); @@ -93,7 +93,7 @@ class ZIP extends Archive{ * @param string $path * @return int */ - function filesize($path) { + public function filesize($path) { $stat=$this->zip->statName($path); return $stat['size']; } @@ -102,7 +102,7 @@ class ZIP extends Archive{ * @param string $path * @return int */ - function mtime($path) { + public function mtime($path) { return filemtime($this->path); } /** @@ -110,7 +110,7 @@ class ZIP extends Archive{ * @param string $path * @return array */ - function getFolder($path) { + public function getFolder($path) { $files=$this->getFiles(); $folderContent=array(); $pathLength=strlen($path); @@ -127,7 +127,7 @@ class ZIP extends Archive{ * get all files in the archive * @return array */ - function getFiles() { + public function getFiles() { $fileCount=$this->zip->numFiles; $files=array(); for($i=0;$i<$fileCount;$i++) { @@ -140,7 +140,7 @@ class ZIP extends Archive{ * @param string $path * @return string */ - function getFile($path) { + public function getFile($path) { return $this->zip->getFromName($path); } /** @@ -149,7 +149,7 @@ class ZIP extends Archive{ * @param string $dest * @return boolean|null */ - function extractFile($path, $dest) { + public function extractFile($path, $dest) { $fp = $this->zip->getStream($path); file_put_contents($dest, $fp); } @@ -158,7 +158,7 @@ class ZIP extends Archive{ * @param string $dest * @return bool */ - function extract($dest) { + public function extract($dest) { return $this->zip->extractTo($dest); } /** @@ -166,7 +166,7 @@ class ZIP extends Archive{ * @param string $path * @return bool */ - function fileExists($path) { + public function fileExists($path) { return ($this->zip->locateName($path)!==false) or ($this->zip->locateName($path.'/')!==false); } /** @@ -174,7 +174,7 @@ class ZIP extends Archive{ * @param string $path * @return bool */ - function remove($path) { + public function remove($path) { if($this->fileExists($path.'/')) { return $this->zip->deleteName($path.'/'); }else{ @@ -187,7 +187,7 @@ class ZIP extends Archive{ * @param string $mode * @return resource */ - function getStream($path, $mode) { + public function getStream($path, $mode) { if($mode=='r' or $mode=='rb') { return $this->zip->getStream($path); } else { @@ -213,7 +213,7 @@ class ZIP extends Archive{ /** * write back temporary files */ - function writeBack($tmpFile, $path) { + public function writeBack($tmpFile, $path) { $this->addFile($path, $tmpFile); unlink($tmpFile); } diff --git a/lib/private/Authentication/Token/DefaultTokenMapper.php b/lib/private/Authentication/Token/DefaultTokenMapper.php index 44bc553a92..35bb83b85f 100644 --- a/lib/private/Authentication/Token/DefaultTokenMapper.php +++ b/lib/private/Authentication/Token/DefaultTokenMapper.php @@ -82,7 +82,6 @@ class DefaultTokenMapper extends Mapper { if ($data === false) { throw new DoesNotExistException('token does not exist'); } -; return DefaultToken::fromRow($data); } @@ -105,12 +104,12 @@ class DefaultTokenMapper extends Mapper { $result->closeCursor(); if ($data === false) { throw new DoesNotExistException('token does not exist'); - }; + } return DefaultToken::fromRow($data); } /** - * Get all token of a user + * Get all tokens of a user * * The provider may limit the number of result rows in case of an abuse * where a high number of (session) tokens is generated @@ -157,7 +156,7 @@ class DefaultTokenMapper extends Mapper { public function deleteByName($name) { $qb = $this->db->getQueryBuilder(); $qb->delete('authtoken') - ->where($qb->expr()->eq('name', $qb->createNamedParameter($name))); + ->where($qb->expr()->eq('name', $qb->createNamedParameter($name), IQueryBuilder::PARAM_STR)); $qb->execute(); } diff --git a/lib/private/Authentication/Token/DefaultTokenProvider.php b/lib/private/Authentication/Token/DefaultTokenProvider.php index 6fd85295e0..a1a7e83ea2 100644 --- a/lib/private/Authentication/Token/DefaultTokenProvider.php +++ b/lib/private/Authentication/Token/DefaultTokenProvider.php @@ -132,7 +132,7 @@ class DefaultTokenProvider implements IProvider { } /** - * Get all token of a user + * Get all tokens of a user * * The provider may limit the number of result rows in case of an abuse * where a high number of (session) tokens is generated diff --git a/lib/private/Authentication/Token/IProvider.php b/lib/private/Authentication/Token/IProvider.php index 9f280263d7..8ec1d9b8d6 100644 --- a/lib/private/Authentication/Token/IProvider.php +++ b/lib/private/Authentication/Token/IProvider.php @@ -105,7 +105,7 @@ interface IProvider { public function updateTokenActivity(IToken $token); /** - * Get all token of a user + * Get all tokens of a user * * The provider may limit the number of result rows in case of an abuse * where a high number of (session) tokens is generated diff --git a/lib/private/BackgroundJob/Job.php b/lib/private/BackgroundJob/Job.php index cb9328f01b..bf0195b0a1 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/JobList.php b/lib/private/BackgroundJob/JobList.php index b0c580290e..366fe8aac0 100644 --- a/lib/private/BackgroundJob/JobList.php +++ b/lib/private/BackgroundJob/JobList.php @@ -284,6 +284,7 @@ class JobList implements IJobList { * Remove the reservation for a job * * @param IJob $job + * @suppress SqlInjectionChecker */ public function unlockJob(IJob $job) { $query = $this->connection->getQueryBuilder(); diff --git a/lib/private/BackgroundJob/QueuedJob.php b/lib/private/BackgroundJob/QueuedJob.php index e5afc79233..2abfd257a4 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 22b48a8037..9179cf258e 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/Command/AsyncBus.php b/lib/private/Command/AsyncBus.php index 3c1f67da0c..fb3cbee724 100644 --- a/lib/private/Command/AsyncBus.php +++ b/lib/private/Command/AsyncBus.php @@ -45,7 +45,7 @@ class AsyncBus implements IBus { /** * @param \OCP\BackgroundJob\IJobList $jobList */ - function __construct($jobList) { + public function __construct($jobList) { $this->jobList = $jobList; } diff --git a/lib/private/Comments/Manager.php b/lib/private/Comments/Manager.php index f1c5b7dca5..078e1eef4d 100644 --- a/lib/private/Comments/Manager.php +++ b/lib/private/Comments/Manager.php @@ -411,9 +411,12 @@ class Manager implements ICommentsManager { */ public function getNumberOfUnreadCommentsForFolder($folderId, IUser $user) { $qb = $this->dbConn->getQueryBuilder(); - $query = $qb->select('fileid', $qb->createFunction( - 'COUNT(' . $qb->getColumnName('c.id') . ')') - )->from('comments', 'c') + $query = $qb->select('f.fileid') + ->selectAlias( + $qb->createFunction('COUNT(' . $qb->getColumnName('c.id') . ')'), + 'num_ids' + ) + ->from('comments', 'c') ->innerJoin('c', 'filecache', 'f', $qb->expr()->andX( $qb->expr()->eq('c.object_type', $qb->createNamedParameter('files')), $qb->expr()->eq('f.fileid', $qb->expr()->castColumn('c.object_id', IQueryBuilder::PARAM_INT)) @@ -431,9 +434,13 @@ class Manager implements ICommentsManager { ->groupBy('f.fileid'); $resultStatement = $query->execute(); - return array_map(function ($count) { - return (int)$count; - }, $resultStatement->fetchAll(\PDO::FETCH_KEY_PAIR)); + + $results = []; + while ($row = $resultStatement->fetch()) { + $results[$row['fileid']] = (int) $row['num_ids']; + } + $resultStatement->closeCursor(); + return $results; } /** @@ -691,6 +698,7 @@ class Manager implements ICommentsManager { * @param \DateTime $dateTime * @param IUser $user * @since 9.0.0 + * @suppress SqlInjectionChecker */ public function setReadMark($objectType, $objectId, \DateTime $dateTime, IUser $user) { $this->checkRoleParameters('Object', $objectType, $objectId); diff --git a/lib/private/DB/Connection.php b/lib/private/DB/Connection.php index 563c077b04..4f042e403f 100644 --- a/lib/private/DB/Connection.php +++ b/lib/private/DB/Connection.php @@ -272,6 +272,7 @@ class Connection extends \Doctrine\DBAL\Connection implements IDBConnection { * @return int number of new rows * @throws \Doctrine\DBAL\DBALException * @throws PreConditionNotMetException + * @suppress SqlInjectionChecker */ public function setValues($table, array $keys, array $values, array $updatePreconditionValues = []) { try { diff --git a/lib/private/DB/MigrationService.php b/lib/private/DB/MigrationService.php index 92041b5e32..45f6aee83f 100644 --- a/lib/private/DB/MigrationService.php +++ b/lib/private/DB/MigrationService.php @@ -284,7 +284,8 @@ class MigrationService { case 'latest': $this->ensureMigrationsAreLoaded(); - return @end($this->getAvailableVersions()); + $migrations = $this->getAvailableVersions(); + return @end($migrations); } return '0'; } @@ -316,7 +317,8 @@ class MigrationService { if (count($m) === 0) { return '0'; } - return @end(array_values($m)); + $migrations = array_values($m); + return @end($migrations); } /** diff --git a/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php index f172260df7..a32ae4a182 100644 --- a/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php +++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php @@ -31,6 +31,7 @@ use OC\DB\QueryBuilder\QueryFunction; use OC\DB\QueryBuilder\QuoteHelper; use OCP\DB\QueryBuilder\IExpressionBuilder; use OCP\DB\QueryBuilder\ILiteral; +use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\DB\QueryBuilder\IQueryFunction; use OCP\IDBConnection; @@ -350,6 +351,28 @@ class ExpressionBuilder implements IExpressionBuilder { return $this->expressionBuilder->notIn($x, $y); } + /** + * Creates a $x = '' statement, because Oracle needs a different check + * + * @param string $x The field in string format to be inspected by the comparison. + * @return string + * @since 13.0.0 + */ + public function emptyString($x) { + return $this->eq($x, $this->literal('', IQueryBuilder::PARAM_STR)); + } + + /** + * Creates a `$x <> ''` statement, because Oracle needs a different check + * + * @param string $x The field in string format to be inspected by the comparison. + * @return string + * @since 13.0.0 + */ + public function nonEmptyString($x) { + return $this->neq($x, $this->literal('', IQueryBuilder::PARAM_STR)); + } + /** * Binary AND Operator copies a bit to the result if it exists in both operands. * diff --git a/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php index 179ce72e8e..693d2faecf 100644 --- a/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php +++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php @@ -137,6 +137,28 @@ class OCIExpressionBuilder extends ExpressionBuilder { return $this->expressionBuilder->notIn($x, $y); } + /** + * Creates a $x = '' statement, because Oracle needs a different check + * + * @param string $x The field in string format to be inspected by the comparison. + * @return string + * @since 13.0.0 + */ + public function emptyString($x) { + return $this->isNull($x); + } + + /** + * Creates a `$x <> ''` statement, because Oracle needs a different check + * + * @param string $x The field in string format to be inspected by the comparison. + * @return string + * @since 13.0.0 + */ + public function nonEmptyString($x) { + return $this->isNotNull($x); + } + /** * Returns a IQueryFunction that casts the column to the given type * @@ -166,6 +188,6 @@ class OCIExpressionBuilder extends ExpressionBuilder { public function iLike($x, $y, $type = null) { $x = $this->helper->quoteColumnName($x); $y = $this->helper->quoteColumnName($y); - return new QueryFunction('REGEXP_LIKE('.$x.', \'^\' || REPLACE('.$y.', \'%\', \'.*\') || \'$\', \'i\')'); + return new QueryFunction('REGEXP_LIKE(' . $x . ', \'^\' || REPLACE(REPLACE(' . $y . ', \'%\', \'.*\'), \'_\', \'.\') || \'$\', \'i\')'); } } diff --git a/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php b/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php index 27ebf1a04f..26aedb9a8b 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 e985b7306a..f38445a6d3 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 eac13b452a..3fc827c968 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. */ @@ -560,7 +560,7 @@ class QueryBuilder implements IQueryBuilder { public function from($from, $alias = null) { $this->queryBuilder->from( $this->getTableName($from), - $alias + $this->quoteAlias($alias) ); return $this; @@ -585,9 +585,9 @@ class QueryBuilder implements IQueryBuilder { */ public function join($fromAlias, $join, $alias, $condition = null) { $this->queryBuilder->join( - $fromAlias, + $this->quoteAlias($fromAlias), $this->getTableName($join), - $alias, + $this->quoteAlias($alias), $condition ); @@ -613,9 +613,9 @@ class QueryBuilder implements IQueryBuilder { */ public function innerJoin($fromAlias, $join, $alias, $condition = null) { $this->queryBuilder->innerJoin( - $fromAlias, + $this->quoteAlias($fromAlias), $this->getTableName($join), - $alias, + $this->quoteAlias($alias), $condition ); @@ -641,9 +641,9 @@ class QueryBuilder implements IQueryBuilder { */ public function leftJoin($fromAlias, $join, $alias, $condition = null) { $this->queryBuilder->leftJoin( - $fromAlias, + $this->quoteAlias($fromAlias), $this->getTableName($join), - $alias, + $this->quoteAlias($alias), $condition ); @@ -669,9 +669,9 @@ class QueryBuilder implements IQueryBuilder { */ public function rightJoin($fromAlias, $join, $alias, $condition = null) { $this->queryBuilder->rightJoin( - $fromAlias, + $this->quoteAlias($fromAlias), $this->getTableName($join), - $alias, + $this->quoteAlias($alias), $condition ); @@ -1193,4 +1193,18 @@ class QueryBuilder implements IQueryBuilder { return $this->helper->quoteColumnName($tableAlias . $column); } + + /** + * Returns the column name quoted and with table alias prefix as needed by the implementation + * + * @param string $alias + * @return string + */ + public function quoteAlias($alias) { + if ($alias === '' || $alias === null) { + return $alias; + } + + return $this->helper->quoteColumnName($alias); + } } diff --git a/lib/private/DB/QueryBuilder/QuoteHelper.php b/lib/private/DB/QueryBuilder/QuoteHelper.php index 705c3a8971..8821863ed0 100644 --- a/lib/private/DB/QueryBuilder/QuoteHelper.php +++ b/lib/private/DB/QueryBuilder/QuoteHelper.php @@ -70,7 +70,7 @@ class QuoteHelper { list($alias, $columnName) = explode('.', $string, 2); if ($columnName === '*') { - return $string; + return '`' . $alias . '`.*'; } return '`' . $alias . '`.`' . $columnName . '`'; diff --git a/lib/private/DB/SchemaWrapper.php b/lib/private/DB/SchemaWrapper.php index 0be45d8d3f..d686d7e63e 100644 --- a/lib/private/DB/SchemaWrapper.php +++ b/lib/private/DB/SchemaWrapper.php @@ -34,7 +34,7 @@ class SchemaWrapper { protected $schema; /** @var array */ - protected $tablesToDelete; + protected $tablesToDelete = []; /** * @param IDBConnection $connection diff --git a/lib/private/DatabaseException.php b/lib/private/DatabaseException.php index 7ca7435c02..68b617e4c7 100644 --- a/lib/private/DatabaseException.php +++ b/lib/private/DatabaseException.php @@ -24,15 +24,4 @@ namespace OC; class DatabaseException extends \Exception { - private $query; - - //FIXME getQuery seems to be unused, maybe use parent constructor with $message, $code and $previous - public function __construct($message, $query = null){ - parent::__construct($message); - $this->query = $query; - } - - public function getQuery() { - return $this->query; - } } diff --git a/lib/private/Diagnostics/QueryLogger.php b/lib/private/Diagnostics/QueryLogger.php index 875d25e9be..2b007b4f04 100644 --- a/lib/private/Diagnostics/QueryLogger.php +++ b/lib/private/Diagnostics/QueryLogger.php @@ -35,7 +35,7 @@ class QueryLogger implements IQueryLogger { protected $activeQuery; /** - * @var \OC\Diagnostics\Query[] + * @var CappedMemoryCache */ protected $queries; diff --git a/lib/private/Files/Cache/Cache.php b/lib/private/Files/Cache/Cache.php index 1f3f2433e4..e0a4d8da10 100644 --- a/lib/private/Files/Cache/Cache.php +++ b/lib/private/Files/Cache/Cache.php @@ -332,7 +332,7 @@ class Cache implements ICache { protected function buildParts(array $data) { $fields = array( 'path', 'parent', 'name', 'mimetype', 'size', 'mtime', 'storage_mtime', 'encrypted', - 'etag', 'permissions', 'checksum'); + 'etag', 'permissions', 'checksum', 'storage'); $doNotCopyStorageMTime = false; if (array_key_exists('mtime', $data) && $data['mtime'] === null) { @@ -502,6 +502,7 @@ class Cache implements ICache { * @param string $targetPath * @throws \OC\DatabaseException * @throws \Exception if the given storages have an invalid id + * @suppress SqlInjectionChecker */ public function moveFromCache(ICache $sourceCache, $sourcePath, $targetPath) { if ($sourceCache instanceof Cache) { @@ -526,7 +527,7 @@ class Cache implements ICache { $this->connection->beginTransaction(); if ($sourceData['mimetype'] === 'httpd/unix-directory') { //update all child entries - $sourceLength = strlen($sourcePath); + $sourceLength = mb_strlen($sourcePath); $query = $this->connection->getQueryBuilder(); $fun = $query->func(); diff --git a/lib/private/Files/Cache/Propagator.php b/lib/private/Files/Cache/Propagator.php index d597a479f5..be69d174a0 100644 --- a/lib/private/Files/Cache/Propagator.php +++ b/lib/private/Files/Cache/Propagator.php @@ -58,6 +58,7 @@ class Propagator implements IPropagator { * @param string $internalPath * @param int $time * @param int $sizeDifference number of bytes the file has grown + * @suppress SqlInjectionChecker */ public function propagateChange($internalPath, $time, $sizeDifference = 0) { $storageId = (int)$this->storage->getStorageCache()->getNumericId(); @@ -140,6 +141,7 @@ class Propagator implements IPropagator { /** * Commit the active propagation batch + * @suppress SqlInjectionChecker */ public function commitBatch() { if (!$this->inBatch) { diff --git a/lib/private/Files/Cache/Scanner.php b/lib/private/Files/Cache/Scanner.php index 229c6fc7d6..a81c34c31f 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/Config/UserMountCache.php b/lib/private/Files/Config/UserMountCache.php index 80cedfa1cc..9466aaf6c8 100644 --- a/lib/private/Files/Config/UserMountCache.php +++ b/lib/private/Files/Config/UserMountCache.php @@ -334,6 +334,11 @@ class UserMountCache implements IUserMountCache { $query->execute(); } + /** + * @param array $users + * @return array + * @suppress SqlInjectionChecker + */ public function getUsedSpaceForUsers(array $users) { $builder = $this->connection->getQueryBuilder(); @@ -360,6 +365,11 @@ class UserMountCache implements IUserMountCache { $result = $query->execute(); - return $result->fetchAll(\PDO::FETCH_KEY_PAIR); + $results = []; + while ($row = $result->fetch()) { + $results[$row['user_id']] = $row['size']; + } + $result->closeCursor(); + return $results; } } diff --git a/lib/private/Files/FileInfo.php b/lib/private/Files/FileInfo.php index e1b5bf983c..f5a44ba02e 100644 --- a/lib/private/Files/FileInfo.php +++ b/lib/private/Files/FileInfo.php @@ -193,7 +193,7 @@ class FileInfo implements \OCP\Files\FileInfo, \ArrayAccess { */ public function getSize() { $this->updateEntryfromSubMounts(); - return isset($this->data['size']) ? (int) $this->data['size'] : 0; + return isset($this->data['size']) ? 0 + $this->data['size'] : 0; } /** diff --git a/lib/private/Files/Filesystem.php b/lib/private/Files/Filesystem.php index 0ebf23818b..caf23afba1 100644 --- a/lib/private/Files/Filesystem.php +++ b/lib/private/Files/Filesystem.php @@ -646,14 +646,6 @@ class Filesystem { return self::$defaultInstance->rmdir($path); } - static public function opendir($path) { - return self::$defaultInstance->opendir($path); - } - - static public function readdir($path) { - return self::$defaultInstance->readdir($path); - } - static public function is_dir($path) { return self::$defaultInstance->is_dir($path); } diff --git a/lib/private/Files/ObjectStore/S3.php b/lib/private/Files/ObjectStore/S3.php index 5251b473bd..6f37492271 100644 --- a/lib/private/Files/ObjectStore/S3.php +++ b/lib/private/Files/ObjectStore/S3.php @@ -39,7 +39,7 @@ class S3 implements IObjectStore { * @return string the container or bucket name where objects are stored * @since 7.0.0 */ - function getStorageId() { + public function getStorageId() { return $this->id; } @@ -49,7 +49,7 @@ class S3 implements IObjectStore { * @throws \Exception when something goes wrong, message will be logged * @since 7.0.0 */ - function readObject($urn) { + public function readObject($urn) { // Create the command and serialize the request $request = $this->getConnection()->getCommand('GetObject', [ 'Bucket' => $this->bucket, @@ -83,7 +83,7 @@ class S3 implements IObjectStore { * @throws \Exception when something goes wrong, message will be logged * @since 7.0.0 */ - function writeObject($urn, $stream) { + public function writeObject($urn, $stream) { $this->getConnection()->putObject([ 'Bucket' => $this->bucket, 'Key' => $urn, @@ -97,7 +97,7 @@ class S3 implements IObjectStore { * @throws \Exception when something goes wrong, message will be logged * @since 7.0.0 */ - function deleteObject($urn) { + public function deleteObject($urn) { $this->getConnection()->deleteObject([ 'Bucket' => $this->bucket, 'Key' => $urn diff --git a/lib/private/Files/Storage/Common.php b/lib/private/Files/Storage/Common.php index 5a57532f71..b842d86f6a 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 f717c798c5..d2aae33bb2 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 70cb2e0ccc..c19427e5f9 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 2a44a3a17d..1fd38b5d6b 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 389da06f7b..240a1f3e04 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 793849914d..e359e86319 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 4fa2428c96..d30563341c 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 7312ed61dc..e89a8d08de 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 d7cd4b729d..847a714f7d 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/Files/View.php b/lib/private/Files/View.php index 0e22415e6f..71b453d299 100644 --- a/lib/private/Files/View.php +++ b/lib/private/Files/View.php @@ -366,15 +366,6 @@ class View { return $this->basicOperation('opendir', $path, array('read')); } - /** - * @param $handle - * @return mixed - */ - public function readdir($handle) { - $fsLocal = new Storage\Local(array('datadir' => '/')); - return $fsLocal->readdir($handle); - } - /** * @param string $path * @return bool|mixed @@ -779,14 +770,18 @@ class View { $this->changeLock($path1, ILockingProvider::LOCK_EXCLUSIVE, true); $this->changeLock($path2, ILockingProvider::LOCK_EXCLUSIVE, true); - if ($internalPath1 === '' and $mount1 instanceof MoveableMount) { - if ($this->isTargetAllowed($absolutePath2)) { - /** - * @var \OC\Files\Mount\MountPoint | \OC\Files\Mount\MoveableMount $mount1 - */ - $sourceMountPoint = $mount1->getMountPoint(); - $result = $mount1->moveMount($absolutePath2); - $manager->moveMount($sourceMountPoint, $mount1->getMountPoint()); + if ($internalPath1 === '') { + if ($mount1 instanceof MoveableMount) { + if ($this->isTargetAllowed($absolutePath2)) { + /** + * @var \OC\Files\Mount\MountPoint | \OC\Files\Mount\MoveableMount $mount1 + */ + $sourceMountPoint = $mount1->getMountPoint(); + $result = $mount1->moveMount($absolutePath2); + $manager->moveMount($sourceMountPoint, $mount1->getMountPoint()); + } else { + $result = false; + } } else { $result = false; } @@ -1292,7 +1287,7 @@ class View { * @param \OC\Files\Storage\Storage $storage * @param string $internalPath * @param string $relativePath - * @return array|bool + * @return ICacheEntry|bool */ private function getCacheEntry($storage, $internalPath, $relativePath) { $cache = $storage->getCache($internalPath); diff --git a/lib/private/Group/Group.php b/lib/private/Group/Group.php index 69dce21569..32ab79adab 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 61b47fdd44..6d4f5a091c 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/Hooks/LegacyEmitter.php b/lib/private/Hooks/LegacyEmitter.php index 4f936e8aab..d18bb88eae 100644 --- a/lib/private/Hooks/LegacyEmitter.php +++ b/lib/private/Hooks/LegacyEmitter.php @@ -24,6 +24,13 @@ namespace OC\Hooks; abstract class LegacyEmitter extends BasicEmitter { + /** + * @param string $scope + * @param string $method + * @param array $arguments + * + * @suppress PhanAccessMethodProtected + */ protected function emit($scope, $method, array $arguments = array()) { \OC_Hook::emit($scope, $method, $arguments); parent::emit($scope, $method, $arguments); diff --git a/lib/private/Hooks/PublicEmitter.php b/lib/private/Hooks/PublicEmitter.php index 4bdaeec3b4..b34769d9b0 100644 --- a/lib/private/Hooks/PublicEmitter.php +++ b/lib/private/Hooks/PublicEmitter.php @@ -28,6 +28,8 @@ class PublicEmitter extends BasicEmitter { * @param string $scope * @param string $method * @param array $arguments optional + * + * @suppress PhanAccessMethodProtected */ public function emit($scope, $method, array $arguments = array()) { parent::emit($scope, $method, $arguments); diff --git a/lib/private/L10N/L10N.php b/lib/private/L10N/L10N.php index c83b6ea396..b933048982 100644 --- a/lib/private/L10N/L10N.php +++ b/lib/private/L10N/L10N.php @@ -82,7 +82,7 @@ class L10N implements IL10N { * returned. */ public function t($text, $parameters = array()) { - return (string) new \OC_L10N_String($this, $text, $parameters); + return (string) new L10NString($this, $text, $parameters); } /** @@ -103,12 +103,12 @@ class L10N implements IL10N { public function n($text_singular, $text_plural, $count, $parameters = array()) { $identifier = "_${text_singular}_::_${text_plural}_"; if (isset($this->translations[$identifier])) { - return (string) new \OC_L10N_String($this, $identifier, $parameters, $count); + return (string) new L10NString($this, $identifier, $parameters, $count); } else { if ($count === 1) { - return (string) new \OC_L10N_String($this, $text_singular, $parameters, $count); + return (string) new L10NString($this, $text_singular, $parameters, $count); } else { - return (string) new \OC_L10N_String($this, $text_plural, $parameters, $count); + return (string) new L10NString($this, $text_plural, $parameters, $count); } } } diff --git a/lib/private/legacy/l10n/string.php b/lib/private/L10N/L10NString.php similarity index 91% rename from lib/private/legacy/l10n/string.php rename to lib/private/L10N/L10NString.php index 1410db6d73..75fcd7f5e4 100644 --- a/lib/private/legacy/l10n/string.php +++ b/lib/private/L10N/L10NString.php @@ -26,7 +26,9 @@ * */ -class OC_L10N_String implements JsonSerializable { +namespace OC\L10N; + +class L10NString implements \JsonSerializable { /** @var \OC\L10N\L10N */ protected $l10n; @@ -52,6 +54,9 @@ class OC_L10N_String implements JsonSerializable { $this->count = $count; } + /** + * @return string + */ public function __toString() { $translations = $this->l10n->getTranslations(); @@ -68,11 +73,14 @@ class OC_L10N_String 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); } + /** + * @return string + */ public function jsonSerialize() { return $this->__toString(); } diff --git a/lib/private/Lock/DBLockingProvider.php b/lib/private/Lock/DBLockingProvider.php index c521bcf548..f4778a35fa 100644 --- a/lib/private/Lock/DBLockingProvider.php +++ b/lib/private/Lock/DBLockingProvider.php @@ -255,6 +255,7 @@ class DBLockingProvider extends AbstractLockingProvider { /** * release all lock acquired by this instance which were marked using the mark* methods + * @suppress SqlInjectionChecker */ public function releaseAll() { parent::releaseAll(); diff --git a/lib/private/Lockdown/Filesystem/NullStorage.php b/lib/private/Lockdown/Filesystem/NullStorage.php index ea911b9006..831d8a8b2a 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 0ae79345e4..a55e6f9e5b 100644 --- a/lib/private/Mail/EMailTemplate.php +++ b/lib/private/Mail/EMailTemplate.php @@ -100,7 +100,7 @@ EOF;
- +
@@ -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/Mail/Mailer.php b/lib/private/Mail/Mailer.php index b24f72316b..e438f75d2c 100644 --- a/lib/private/Mail/Mailer.php +++ b/lib/private/Mail/Mailer.php @@ -120,7 +120,7 @@ class Mailer implements IMailer { public function send(Message $message) { $debugMode = $this->config->getSystemValue('mail_smtpdebug', false); - if (sizeof($message->getFrom()) === 0) { + if (empty($message->getFrom())) { $message->setFrom([\OCP\Util::getDefaultEmailAddress($this->defaults->getName()) => $this->defaults->getName()]); } @@ -186,7 +186,7 @@ class Mailer implements IMailer { switch ($this->config->getSystemValue('mail_smtpmode', 'php')) { case 'smtp': - $this->instance = $this->getSMTPInstance(); + $this->instance = $this->getSmtpInstance(); break; case 'sendmail': // FIXME: Move into the return statement but requires proper testing diff --git a/lib/private/Mail/Message.php b/lib/private/Mail/Message.php index 3184f26848..5ffc050360 100644 --- a/lib/private/Mail/Message.php +++ b/lib/private/Mail/Message.php @@ -37,7 +37,7 @@ class Message { /** * @param Swift_Message $swiftMessage */ - function __construct(Swift_Message $swiftMessage) { + public function __construct(Swift_Message $swiftMessage) { $this->swiftMessage = $swiftMessage; } diff --git a/lib/private/Memcache/Memcached.php b/lib/private/Memcache/Memcached.php index bf07fd0e6e..4347fc99e5 100644 --- a/lib/private/Memcache/Memcached.php +++ b/lib/private/Memcache/Memcached.php @@ -97,7 +97,7 @@ class Memcached extends Cache implements IMemcache { } public function get($key) { - $result = self::$cache->get($this->getNamespace() . $key); + $result = self::$cache->get($this->getNameSpace() . $key); if ($result === false and self::$cache->getResultCode() == \Memcached::RES_NOTFOUND) { return null; } else { @@ -107,9 +107,9 @@ class Memcached extends Cache implements IMemcache { public function set($key, $value, $ttl = 0) { if ($ttl > 0) { - $result = self::$cache->set($this->getNamespace() . $key, $value, $ttl); + $result = self::$cache->set($this->getNameSpace() . $key, $value, $ttl); } else { - $result = self::$cache->set($this->getNamespace() . $key, $value); + $result = self::$cache->set($this->getNameSpace() . $key, $value); } if ($result !== true) { $this->verifyReturnCode(); @@ -118,12 +118,12 @@ class Memcached extends Cache implements IMemcache { } public function hasKey($key) { - self::$cache->get($this->getNamespace() . $key); + self::$cache->get($this->getNameSpace() . $key); return self::$cache->getResultCode() === \Memcached::RES_SUCCESS; } public function remove($key) { - $result= self::$cache->delete($this->getNamespace() . $key); + $result= self::$cache->delete($this->getNameSpace() . $key); if (self::$cache->getResultCode() !== \Memcached::RES_NOTFOUND) { $this->verifyReturnCode(); } @@ -131,7 +131,7 @@ class Memcached extends Cache implements IMemcache { } public function clear($prefix = '') { - $prefix = $this->getNamespace() . $prefix; + $prefix = $this->getNameSpace() . $prefix; $allKeys = self::$cache->getAllKeys(); if ($allKeys === false) { // newer Memcached doesn't like getAllKeys(), flush everything diff --git a/lib/private/Memcache/XCache.php b/lib/private/Memcache/XCache.php index 7eb7a138d1..549896e6c6 100644 --- a/lib/private/Memcache/XCache.php +++ b/lib/private/Memcache/XCache.php @@ -47,28 +47,28 @@ class XCache extends Cache implements IMemcache { } public function get($key) { - return xcache_get($this->getNamespace() . $key); + return xcache_get($this->getNameSpace() . $key); } public function set($key, $value, $ttl = 0) { if ($ttl > 0) { - return xcache_set($this->getNamespace() . $key, $value, $ttl); + return xcache_set($this->getNameSpace() . $key, $value, $ttl); } else { - return xcache_set($this->getNamespace() . $key, $value); + return xcache_set($this->getNameSpace() . $key, $value); } } public function hasKey($key) { - return xcache_isset($this->getNamespace() . $key); + return xcache_isset($this->getNameSpace() . $key); } public function remove($key) { - return xcache_unset($this->getNamespace() . $key); + return xcache_unset($this->getNameSpace() . $key); } public function clear($prefix = '') { if (function_exists('xcache_unset_by_prefix')) { - return xcache_unset_by_prefix($this->getNamespace() . $prefix); + return xcache_unset_by_prefix($this->getNameSpace() . $prefix); } else { // Since we can not clear by prefix, we just clear the whole cache. xcache_clear_cache(\XC_TYPE_VAR, 0); diff --git a/lib/private/Migration/BackgroundRepair.php b/lib/private/Migration/BackgroundRepair.php index 495b868607..cf4abbce15 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/Notification/Manager.php b/lib/private/Notification/Manager.php index c5cad7f2db..1d13916755 100644 --- a/lib/private/Notification/Manager.php +++ b/lib/private/Notification/Manager.php @@ -142,7 +142,7 @@ class Manager implements IManager { $this->notifiersInfo = []; foreach ($this->notifiersInfoClosures as $closure) { $notifier = $closure(); - if (!is_array($notifier) || sizeof($notifier) !== 2 || !isset($notifier['id']) || !isset($notifier['name'])) { + if (!is_array($notifier) || count($notifier) !== 2 || !isset($notifier['id']) || !isset($notifier['name'])) { throw new \InvalidArgumentException('The given notifier information is invalid'); } if (isset($this->notifiersInfo[$notifier['id']])) { diff --git a/lib/private/OCS/Exception.php b/lib/private/OCS/Exception.php index 58b13f52df..485c5c4d40 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/OCS/PrivateData.php b/lib/private/OCS/PrivateData.php deleted file mode 100644 index 0f5c48b121..0000000000 --- a/lib/private/OCS/PrivateData.php +++ /dev/null @@ -1,114 +0,0 @@ - - * @author Bart Visscher - * @author Frank Karlitschek - * @author Lukas Reschke - * @author Morris Jobke - * @author Roeland Jago Douma - * @author Thomas Müller - * @author Tom Needham - * - * @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 - * - */ - -namespace OC\OCS; - -class PrivateData { - - /** - * read keys - * test: curl http://login:passwd@oc/core/ocs/v1.php/privatedata/getattribute/testy/123 - * test: curl http://login:passwd@oc/core/ocs/v1.php/privatedata/getattribute/testy - * @param array $parameters The OCS parameter - * @return \OC_OCS_Result - */ - public static function get($parameters) { - $user = \OC_User::getUser(); - $app = addslashes(strip_tags($parameters['app'])); - $key = isset($parameters['key']) ? addslashes(strip_tags($parameters['key'])) : null; - - if(empty($key)) { - $query = \OCP\DB::prepare('SELECT `key`, `app`, `value` FROM `*PREFIX*privatedata` WHERE `user` = ? AND `app` = ? '); - $result = $query->execute(array($user, $app)); - } else { - $query = \OCP\DB::prepare('SELECT `key`, `app`, `value` FROM `*PREFIX*privatedata` WHERE `user` = ? AND `app` = ? AND `key` = ? '); - $result = $query->execute(array($user, $app, $key)); - } - - $xml = array(); - while ($row = $result->fetchRow()) { - $data=array(); - $data['key']=$row['key']; - $data['app']=$row['app']; - $data['value']=$row['value']; - $xml[] = $data; - } - - return new Result($xml); - } - - /** - * set a key - * test: curl http://login:passwd@oc/core/ocs/v1.php/privatedata/setattribute/testy/123 --data "value=foobar" - * @param array $parameters The OCS parameter - * @return \OC_OCS_Result - */ - public static function set($parameters) { - $user = \OC_User::getUser(); - $app = addslashes(strip_tags($parameters['app'])); - $key = addslashes(strip_tags($parameters['key'])); - $value = (string)$_POST['value']; - - // update in DB - $query = \OCP\DB::prepare('UPDATE `*PREFIX*privatedata` SET `value` = ? WHERE `user` = ? AND `app` = ? AND `key` = ?'); - $numRows = $query->execute(array($value, $user, $app, $key)); - - if ($numRows === false || $numRows === 0) { - // store in DB - $query = \OCP\DB::prepare('INSERT INTO `*PREFIX*privatedata` (`user`, `app`, `key`, `value`)' . ' VALUES(?, ?, ?, ?)'); - $query->execute(array($user, $app, $key, $value)); - } - - return new Result(null, 100); - } - - /** - * delete a key - * test: curl http://login:passwd@oc/core/ocs/v1.php/privatedata/deleteattribute/testy/123 --data "post=1" - * @param array $parameters The OCS parameter - * @return \OC_OCS_Result - */ - public static function delete($parameters) { - $user = \OC_User::getUser(); - if (!isset($parameters['app']) or !isset($parameters['key'])) { - //key and app are NOT optional here - return new Result(null, 101); - } - - $app = addslashes(strip_tags($parameters['app'])); - $key = addslashes(strip_tags($parameters['key'])); - - // delete in DB - $query = \OCP\DB::prepare('DELETE FROM `*PREFIX*privatedata` WHERE `user` = ? AND `app` = ? AND `key` = ? '); - $query->execute(array($user, $app, $key )); - - return new Result(null, 100); - } -} - diff --git a/lib/private/Preview/Bitmap.php b/lib/private/Preview/Bitmap.php index d3f75b4a20..e9fd6cc7c0 100644 --- a/lib/private/Preview/Bitmap.php +++ b/lib/private/Preview/Bitmap.php @@ -48,7 +48,7 @@ abstract class Bitmap extends Provider { try { $bp = $this->getResizedPreview($tmpPath, $maxX, $maxY); } catch (\Exception $e) { - \OCP\Util::writeLog('core', 'ImageMagick says: ' . $e->getmessage(), \OCP\Util::ERROR); + \OCP\Util::writeLog('core', 'ImageMagick says: ' . $e->getMessage(), \OCP\Util::ERROR); return false; } diff --git a/lib/private/Preview/Office.php b/lib/private/Preview/Office.php index 9b445a2bbe..322b254e38 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); @@ -59,7 +59,7 @@ abstract class Office extends Provider { } catch (\Exception $e) { unlink($absPath); unlink($pdfPreview); - \OCP\Util::writeLog('core', $e->getmessage(), \OCP\Util::ERROR); + \OCP\Util::writeLog('core', $e->getMessage(), \OCP\Util::ERROR); return false; } diff --git a/lib/private/Preview/SVG.php b/lib/private/Preview/SVG.php index 4ad274c893..fb06faf9c2 100644 --- a/lib/private/Preview/SVG.php +++ b/lib/private/Preview/SVG.php @@ -53,7 +53,7 @@ class SVG extends Provider { $svg->readImageBlob($content); $svg->setImageFormat('png32'); } catch (\Exception $e) { - \OCP\Util::writeLog('core', $e->getmessage(), \OCP\Util::ERROR); + \OCP\Util::writeLog('core', $e->getMessage(), \OCP\Util::ERROR); return false; } diff --git a/lib/private/Preview/Watcher.php b/lib/private/Preview/Watcher.php index 0b87bcda86..8d091b84b0 100644 --- a/lib/private/Preview/Watcher.php +++ b/lib/private/Preview/Watcher.php @@ -77,10 +77,16 @@ class Watcher { } /** @var Folder $node */ - $nodes = $node->search(''); + $this->deleteFolder($node); + } + + private function deleteFolder(Folder $folder) { + $nodes = $folder->getDirectoryListing(); foreach ($nodes as $node) { if ($node instanceof File) { $this->toDelete[] = $node->getId(); + } else if ($node instanceof Folder) { + $this->deleteFolder($node); } } } diff --git a/lib/private/Repair/CleanTags.php b/lib/private/Repair/CleanTags.php index 9b44fb1e67..de46d03922 100644 --- a/lib/private/Repair/CleanTags.php +++ b/lib/private/Repair/CleanTags.php @@ -167,6 +167,7 @@ class CleanTags implements IRepairStep { * @param string $sourceId * @param string $sourceNullColumn If this column is null in the source table, * the entry is deleted in the $deleteTable + * @suppress SqlInjectionChecker */ protected function deleteOrphanEntries(IOutput $output, $repairInfo, $deleteTable, $deleteId, $sourceTable, $sourceId, $sourceNullColumn) { $qb = $this->connection->getQueryBuilder(); @@ -201,7 +202,7 @@ class CleanTags implements IRepairStep { } if ($repairInfo) { - $output->info(sprintf($repairInfo, sizeof($orphanItems))); + $output->info(sprintf($repairInfo, count($orphanItems))); } } } diff --git a/lib/private/Repair/NC12/UpdateLanguageCodes.php b/lib/private/Repair/NC12/UpdateLanguageCodes.php index 891473f51a..f4a1204543 100644 --- a/lib/private/Repair/NC12/UpdateLanguageCodes.php +++ b/lib/private/Repair/NC12/UpdateLanguageCodes.php @@ -23,6 +23,7 @@ namespace OC\Repair\NC12; +use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IConfig; use OCP\IDBConnection; use OCP\Migration\IOutput; @@ -80,7 +81,7 @@ class UpdateLanguageCodes implements IRepairStep { ->set('configvalue', $qb->createNamedParameter($newCode)) ->where($qb->expr()->eq('appid', $qb->createNamedParameter('core'))) ->andWhere($qb->expr()->eq('configkey', $qb->createNamedParameter('lang'))) - ->andWhere($qb->expr()->eq('configvalue', $qb->createNamedParameter($oldCode))) + ->andWhere($qb->expr()->eq('configvalue', $qb->createNamedParameter($oldCode), IQueryBuilder::PARAM_STR)) ->execute(); $output->info('Changed ' . $affectedRows . ' setting(s) from "' . $oldCode . '" to "' . $newCode . '" in preferences table.'); diff --git a/lib/private/Repair/NC13/RepairInvalidPaths.php b/lib/private/Repair/NC13/RepairInvalidPaths.php index cf0b9e7783..29a0e1ed15 100644 --- a/lib/private/Repair/NC13/RepairInvalidPaths.php +++ b/lib/private/Repair/NC13/RepairInvalidPaths.php @@ -51,6 +51,10 @@ class RepairInvalidPaths implements IRepairStep { return 'Repair invalid paths in file cache'; } + /** + * @return \Generator + * @suppress SqlInjectionChecker + */ private function getInvalidEntries() { $builder = $this->connection->getQueryBuilder(); @@ -60,23 +64,25 @@ class RepairInvalidPaths implements IRepairStep { ); //select f.path, f.parent,p.path from oc_filecache f inner join oc_filecache p on f.parent=p.fileid and p.path!='' where f.path != p.path || '/' || f.name; - $query = $builder->select('f.fileid', 'f.path', 'p.path AS parent_path', 'f.name', 'f.parent', 'f.storage') + $builder->select('f.fileid', 'f.path', 'f.name', 'f.parent', 'f.storage') + ->selectAlias('p.path', 'parent_path') + ->selectAlias('p.storage', 'parent_storage') ->from('filecache', 'f') ->innerJoin('f', 'filecache', 'p', $builder->expr()->andX( $builder->expr()->eq('f.parent', 'p.fileid'), - $builder->expr()->neq('p.name', $builder->createNamedParameter('')) + $builder->expr()->nonEmptyString('p.name') )) ->where($builder->expr()->neq('f.path', $computedPath)) ->setMaxResults(self::MAX_ROWS); do { - $result = $query->execute(); + $result = $builder->execute(); $rows = $result->fetchAll(); foreach ($rows as $row) { yield $row; } $result->closeCursor(); - } while (count($rows) >= self::MAX_ROWS); + } while (count($rows) > 0); } private function getId($storage, $path) { @@ -95,17 +101,25 @@ class RepairInvalidPaths implements IRepairStep { return $this->getIdQuery->execute()->fetchColumn(); } - private function update($fileid, $newPath) { + /** + * @param string $fileid + * @param string $newPath + * @param string $newStorage + * @suppress SqlInjectionChecker + */ + private function update($fileid, $newPath, $newStorage) { if (!$this->updateQuery) { $builder = $this->connection->getQueryBuilder(); $this->updateQuery = $builder->update('filecache') ->set('path', $builder->createParameter('newpath')) ->set('path_hash', $builder->func()->md5($builder->createParameter('newpath'))) + ->set('storage', $builder->createParameter('newstorage')) ->where($builder->expr()->eq('fileid', $builder->createParameter('fileid'))); } $this->updateQuery->setParameter('newpath', $newPath); + $this->updateQuery->setParameter('newstorage', $newStorage); $this->updateQuery->setParameter('fileid', $fileid, IQueryBuilder::PARAM_INT); $this->updateQuery->execute(); @@ -146,12 +160,12 @@ class RepairInvalidPaths implements IRepairStep { foreach ($entries as $entry) { $count++; $calculatedPath = $entry['parent_path'] . '/' . $entry['name']; - if ($newId = $this->getId($entry['storage'], $calculatedPath)) { + if ($newId = $this->getId($entry['parent_storage'], $calculatedPath)) { // a new entry with the correct path has already been created, reuse that one and delete the incorrect entry $this->reparent($entry['fileid'], $newId); $this->delete($entry['fileid']); } else { - $this->update($entry['fileid'], $calculatedPath); + $this->update($entry['fileid'], $calculatedPath, $entry['parent_storage']); } } $this->connection->commit(); diff --git a/lib/private/Repair/OldGroupMembershipShares.php b/lib/private/Repair/OldGroupMembershipShares.php index ea0256f64b..5b941d1fcb 100644 --- a/lib/private/Repair/OldGroupMembershipShares.php +++ b/lib/private/Repair/OldGroupMembershipShares.php @@ -65,6 +65,7 @@ class OldGroupMembershipShares implements IRepairStep { * Must throw exception on error. * * @throws \Exception in case of failure + * @suppress SqlInjectionChecker */ public function run(IOutput $output) { $deletedEntries = 0; diff --git a/lib/private/Repair/RepairInvalidShares.php b/lib/private/Repair/RepairInvalidShares.php index 78884ca9cd..9242316554 100644 --- a/lib/private/Repair/RepairInvalidShares.php +++ b/lib/private/Repair/RepairInvalidShares.php @@ -56,6 +56,7 @@ class RepairInvalidShares implements IRepairStep { /** * Adjust file share permissions + * @suppress SqlInjectionChecker */ private function adjustFileSharePermissions(IOutput $out) { $mask = \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_SHARE; diff --git a/lib/private/Route/Router.php b/lib/private/Route/Router.php index 71aabe15c5..34ffd244eb 100644 --- a/lib/private/Route/Router.php +++ b/lib/private/Route/Router.php @@ -171,8 +171,6 @@ class Router implements IRouter { $this->root->addCollection($collection); } if ($this->loaded) { - // include ocs routes, must be loaded last for /ocs prefix - require_once __DIR__ . '/../../../ocs/routes.php'; $collection = $this->getCollection('ocs'); $collection->addPrefix('/ocs'); $this->root->addCollection($collection); diff --git a/lib/private/Search/Provider/File.php b/lib/private/Search/Provider/File.php index ddb05c759e..787725ab87 100644 --- a/lib/private/Search/Provider/File.php +++ b/lib/private/Search/Provider/File.php @@ -37,7 +37,7 @@ class File extends \OCP\Search\Provider { * @param string $query * @return \OCP\Search\Result */ - function search($query) { + public function search($query) { $files = Filesystem::search($query); $results = array(); // edit results diff --git a/lib/private/Search/Result/File.php b/lib/private/Search/Result/File.php index eb4750d8de..98ebef8753 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/Bruteforce/Throttler.php b/lib/private/Security/Bruteforce/Throttler.php index ee02bc5a1c..f495baf192 100644 --- a/lib/private/Security/Bruteforce/Throttler.php +++ b/lib/private/Security/Bruteforce/Throttler.php @@ -89,6 +89,7 @@ class Throttler { * @param string $action * @param string $ip * @param array $metadata Optional metadata logged to the database + * @suppress SqlInjectionChecker */ public function registerAttempt($action, $ip, diff --git a/lib/private/Security/CSRF/CsrfToken.php b/lib/private/Security/CSRF/CsrfToken.php index e9bdf5b520..09195fcc3b 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 58c44b88ba..ea7b045c20 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/Security/Crypto.php b/lib/private/Security/Crypto.php index 176faf68e2..1dd680ea13 100644 --- a/lib/private/Security/Crypto.php +++ b/lib/private/Security/Crypto.php @@ -56,7 +56,7 @@ class Crypto implements ICrypto { * @param IConfig $config * @param ISecureRandom $random */ - function __construct(IConfig $config, ISecureRandom $random) { + public function __construct(IConfig $config, ISecureRandom $random) { $this->cipher = new AES(); $this->config = $config; $this->random = $random; @@ -115,7 +115,7 @@ class Crypto implements ICrypto { $this->cipher->setPassword($password); $parts = explode('|', $authenticatedCiphertext); - if(sizeof($parts) !== 3) { + if(count($parts) !== 3) { throw new \Exception('Authenticated ciphertext could not be decoded.'); } diff --git a/lib/private/Security/Hasher.php b/lib/private/Security/Hasher.php index 3bc546fa0a..ddba82fec4 100644 --- a/lib/private/Security/Hasher.php +++ b/lib/private/Security/Hasher.php @@ -58,7 +58,7 @@ class Hasher implements IHasher { /** * @param IConfig $config */ - function __construct(IConfig $config) { + public function __construct(IConfig $config) { $this->config = $config; $hashingCost = $this->config->getSystemValue('hashingCost', null); @@ -86,7 +86,7 @@ class Hasher implements IHasher { */ protected function splitHash($prefixedHash) { $explodedString = explode('|', $prefixedHash, 2); - if(sizeof($explodedString) === 2) { + if(count($explodedString) === 2) { if((int)$explodedString[0] > 0) { return array('version' => (int)$explodedString[0], 'hash' => $explodedString[1]); } diff --git a/lib/private/Security/TrustedDomainHelper.php b/lib/private/Security/TrustedDomainHelper.php index a8cbdb6ee6..221d21fb6a 100644 --- a/lib/private/Security/TrustedDomainHelper.php +++ b/lib/private/Security/TrustedDomainHelper.php @@ -38,7 +38,7 @@ class TrustedDomainHelper { /** * @param IConfig $config */ - function __construct(IConfig $config) { + public function __construct(IConfig $config) { $this->config = $config; } @@ -89,7 +89,7 @@ class TrustedDomainHelper { if (gettype($trusted) !== 'string') { break; } - $regex = '/^' . join('[-\.a-zA-Z0-9]*', array_map(function($v) { return preg_quote($v, '/'); }, explode('*', $trusted))) . '$/'; + $regex = '/^' . implode('[-\.a-zA-Z0-9]*', array_map(function($v) { return preg_quote($v, '/'); }, explode('*', $trusted))) . '$/'; if (preg_match($regex, $domain) || preg_match($regex, $domainWithPort)) { return true; } diff --git a/lib/private/Server.php b/lib/private/Server.php index be432c0cf2..60a5de97bb 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -113,6 +113,7 @@ use OCP\IServerContainer; use OCP\ITempManager; use OCP\Contacts\ContactsMenu\IActionFactory; use OCP\IURLGenerator; +use OCP\Lock\ILockingProvider; use OCP\RichObjectStrings\IValidator; use OCP\Security\IContentSecurityPolicyManager; use OCP\Share\IShareHelper; @@ -785,7 +786,7 @@ class Server extends ServerContainer implements IServerContainer { $factory = new $factoryClass($this); return $factory->getLDAPProvider(); }); - $this->registerService('LockingProvider', function (Server $c) { + $this->registerService(ILockingProvider::class, function (Server $c) { $ini = $c->getIniWrapper(); $config = $c->getConfig(); $ttl = $config->getSystemValue('filelocking.ttl', max(3600, $ini->getNumeric('max_execution_time'))); @@ -800,6 +801,7 @@ class Server extends ServerContainer implements IServerContainer { } return new NoopLockingProvider(); }); + $this->registerAlias('LockingProvider', ILockingProvider::class); $this->registerService(\OCP\Files\Mount\IMountManager::class, function () { return new \OC\Files\Mount\Manager(); @@ -866,7 +868,7 @@ class Server extends ServerContainer implements IServerContainer { $classExists = false; } - if ($classExists && $c->getConfig()->getSystemValue('installed', false) && $c->getAppManager()->isInstalled('theming')) { + if ($classExists && $c->getConfig()->getSystemValue('installed', false) && $c->getAppManager()->isInstalled('theming') && $c->getTrustedDomainHelper()->isTrustedDomain($c->getRequest()->getInsecureServerHost())) { return new ThemingDefaults( $c->getConfig(), $c->getL10N('theming'), @@ -962,7 +964,10 @@ class Server extends ServerContainer implements IServerContainer { $factory, $c->getUserManager(), $c->getLazyRootFolder(), - $c->getEventDispatcher() + $c->getEventDispatcher(), + $c->getMailer(), + $c->getURLGenerator(), + $c->getThemingDefaults() ); return $manager; @@ -1247,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 67a673cb30..1cec267065 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/Mapper.php b/lib/private/Settings/Mapper.php index 3219a812cd..ceb68c9eeb 100644 --- a/lib/private/Settings/Mapper.php +++ b/lib/private/Settings/Mapper.php @@ -198,6 +198,7 @@ class Mapper { * @param string $idCol * @param string $id * @param array $values + * @suppress SqlInjectionChecker */ public function update($table, $idCol, $id, $values) { $query = $this->dbc->getQueryBuilder(); diff --git a/lib/private/Settings/Personal/PersonalInfo.php b/lib/private/Settings/Personal/PersonalInfo.php index fb1f388c59..e92541c001 100644 --- a/lib/private/Settings/Personal/PersonalInfo.php +++ b/lib/private/Settings/Personal/PersonalInfo.php @@ -118,10 +118,10 @@ class PersonalInfo implements ISettings { 'usage' => \OC_Helper::humanFileSize($storageInfo['used']), 'usage_relative' => $storageInfo['relative'], 'quota' => $storageInfo['quota'], - 'avatarChangeSupported' => \OC_User::canUserChangeAvatar($uid), + 'avatarChangeSupported' => $user->canChangeAvatar(), 'lookupServerUploadEnabled' => $lookupServerUploadEnabled, 'avatarScope' => $userData[AccountManager::PROPERTY_AVATAR]['scope'], - 'displayNameChangeSupported' => \OC_User::canUserChangeDisplayName($uid), + 'displayNameChangeSupported' => $user->canChangeDisplayName(), 'displayName' => $userData[AccountManager::PROPERTY_DISPLAYNAME]['value'], 'displayNameScope' => $userData[AccountManager::PROPERTY_DISPLAYNAME]['scope'], 'email' => $userData[AccountManager::PROPERTY_EMAIL]['value'], @@ -138,7 +138,7 @@ class PersonalInfo implements ISettings { 'twitterScope' => $userData[AccountManager::PROPERTY_TWITTER]['scope'], 'twitterVerification' => $userData[AccountManager::PROPERTY_TWITTER]['verified'], 'groups' => $this->getGroups($user), - 'passwordChangeSupported' => \OC_User::canUserChangePassword($uid), + 'passwordChangeSupported' => $user->canChangePassword(), ] + $messageParameters + $languageParameters; diff --git a/lib/private/Settings/RemoveOrphaned.php b/lib/private/Settings/RemoveOrphaned.php index fbee95c887..29c7cf212b 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 5cd3c84ce9..521a8f75f8 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.') ); @@ -282,8 +282,7 @@ class Setup { $class = self::$dbSetupClasses[$dbType]; /** @var \OC\Setup\AbstractDatabase $dbSetup */ - $dbSetup = new $class($l, 'db_structure.xml', $this->config, - $this->logger, $this->random); + $dbSetup = new $class($l, $this->config, $this->logger, $this->random); $error = array_merge($error, $dbSetup->validate($options)); // validate the data directory @@ -450,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/Setup/AbstractDatabase.php b/lib/private/Setup/AbstractDatabase.php index 2fbec326a5..0e0981e077 100644 --- a/lib/private/Setup/AbstractDatabase.php +++ b/lib/private/Setup/AbstractDatabase.php @@ -38,8 +38,6 @@ abstract class AbstractDatabase { /** @var IL10N */ protected $trans; /** @var string */ - protected $dbDefinitionFile; - /** @var string */ protected $dbUser; /** @var string */ protected $dbPassword; @@ -58,9 +56,8 @@ abstract class AbstractDatabase { /** @var ISecureRandom */ protected $random; - public function __construct(IL10N $trans, $dbDefinitionFile, SystemConfig $config, ILogger $logger, ISecureRandom $random) { + public function __construct(IL10N $trans, SystemConfig $config, ILogger $logger, ISecureRandom $random) { $this->trans = $trans; - $this->dbDefinitionFile = $dbDefinitionFile; $this->config = $config; $this->logger = $logger; $this->random = $random; diff --git a/lib/private/Setup/MySQL.php b/lib/private/Setup/MySQL.php index b4ca02d2e8..d03e4858b6 100644 --- a/lib/private/Setup/MySQL.php +++ b/lib/private/Setup/MySQL.php @@ -51,11 +51,7 @@ class MySQL extends AbstractDatabase { //fill the database if needed $query='select count(*) from information_schema.tables where table_schema=? AND table_name = ?'; - $result = $connection->executeQuery($query, [$this->dbName, $this->tablePrefix.'users']); - $row = $result->fetch(); - if (!$row or $row['count(*)'] === '0') { - \OC_DB::createDbFromStructure($this->dbDefinitionFile); - } + $connection->executeQuery($query, [$this->dbName, $this->tablePrefix.'users']); } /** diff --git a/lib/private/Setup/OCI.php b/lib/private/Setup/OCI.php index 1bc6b08117..3051987917 100644 --- a/lib/private/Setup/OCI.php +++ b/lib/private/Setup/OCI.php @@ -165,14 +165,7 @@ class OCI extends AbstractDatabase { $entry .= $this->trans->t('Offending command was: "%s"', array($query)) . '
'; $this->logger->warning( $entry, ['app' => 'setup.oci']); } - $result = oci_execute($stmt); - - if($result) { - $row = oci_fetch_row($stmt); - } - if(!$result or $row[0]==0) { - \OC_DB::createDbFromStructure($this->dbDefinitionFile); - } + oci_execute($stmt); } /** diff --git a/lib/private/Setup/PostgreSQL.php b/lib/private/Setup/PostgreSQL.php index 18ed9fcdef..dbcb94d6d7 100644 --- a/lib/private/Setup/PostgreSQL.php +++ b/lib/private/Setup/PostgreSQL.php @@ -34,6 +34,11 @@ use OCP\IDBConnection; class PostgreSQL extends AbstractDatabase { public $dbprettyname = 'PostgreSQL'; + /** + * @param string $username + * @throws \OC\DatabaseSetupException + * @suppress SqlInjectionChecker + */ public function setupDatabase($username) { try { $connection = $this->connect([ @@ -100,11 +105,6 @@ class PostgreSQL extends AbstractDatabase { throw new \OC\DatabaseSetupException($this->trans->t('PostgreSQL username and/or password not valid'), $this->trans->t('You need to enter details of an existing account.')); } - - - if (!$tablesSetup) { - \OC_DB::createDbFromStructure($this->dbDefinitionFile); - } } private function createDatabase(IDBConnection $connection) { diff --git a/lib/private/Setup/Sqlite.php b/lib/private/Setup/Sqlite.php index 87c0b82682..d95e70c8b0 100644 --- a/lib/private/Setup/Sqlite.php +++ b/lib/private/Setup/Sqlite.php @@ -41,6 +41,5 @@ class Sqlite extends AbstractDatabase { } //in case of sqlite, we can always fill the database error_log("creating sqlite db"); - \OC_DB::createDbFromStructure($this->dbDefinitionFile); } } diff --git a/lib/private/Share/Share.php b/lib/private/Share/Share.php index dc96d856ba..93117bf3c7 100644 --- a/lib/private/Share/Share.php +++ b/lib/private/Share/Share.php @@ -338,6 +338,7 @@ class Share extends Constants { } } } + $result->closeCursor(); } } @@ -913,8 +914,7 @@ class Share extends Constants { $token = $oldToken; } else { $token = \OC::$server->getSecureRandom()->generate(self::TOKEN_LENGTH, - \OCP\Security\ISecureRandom::CHAR_LOWER.\OCP\Security\ISecureRandom::CHAR_UPPER. - \OCP\Security\ISecureRandom::CHAR_DIGITS + \OCP\Security\ISecureRandom::CHAR_HUMAN_READABLE ); } $result = self::put($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions, @@ -1461,8 +1461,9 @@ class Share extends Constants { ->from('share') ->where($qb->expr()->eq('id', $qb->createParameter('shareId'))) ->setParameter(':shareId', $shareId); - $result = $qb->execute(); - $result = $result->fetch(); + $dbResult = $qb->execute(); + $result = $dbResult->fetch(); + $dbResult->closeCursor(); if (empty($result)) { throw new \Exception('Share not found'); diff --git a/lib/private/Share20/DefaultShareProvider.php b/lib/private/Share20/DefaultShareProvider.php index 6f3741f5ae..6503e67a8f 100644 --- a/lib/private/Share20/DefaultShareProvider.php +++ b/lib/private/Share20/DefaultShareProvider.php @@ -860,7 +860,7 @@ class DefaultShareProvider implements IShareProvider { if (isset($data['f_permissions'])) { $entryData = $data; $entryData['permissions'] = $entryData['f_permissions']; - $entryData['parent'] = $entryData['f_parent'];; + $entryData['parent'] = $entryData['f_parent']; $share->setNodeCacheEntry(Cache::cacheEntryFromData($entryData, \OC::$server->getMimeTypeLoader())); } diff --git a/lib/private/Share20/LegacyHooks.php b/lib/private/Share20/LegacyHooks.php index 728ea78a8a..e7fbe7336b 100644 --- a/lib/private/Share20/LegacyHooks.php +++ b/lib/private/Share20/LegacyHooks.php @@ -40,6 +40,7 @@ class LegacyHooks { $this->eventDispatcher->addListener('OCP\Share::preUnshare', [$this, 'preUnshare']); $this->eventDispatcher->addListener('OCP\Share::postUnshare', [$this, 'postUnshare']); + $this->eventDispatcher->addListener('OCP\Share::postUnshareFromSelf', [$this, 'postUnshareFromSelf']); } /** @@ -71,7 +72,21 @@ class LegacyHooks { $formatted['deletedShares'] = $formattedDeletedShares; - \OC_Hook::emit('OCP\Share', 'pre_unshare', $formatted); + \OC_Hook::emit('OCP\Share', 'post_unshare', $formatted); + } + + /** + * @param GenericEvent $e + */ + public function postUnshareFromSelf(GenericEvent $e) { + /** @var IShare $share */ + $share = $e->getSubject(); + + $formatted = $this->formatHookParams($share); + $formatted['itemTarget'] = $formatted['fileTarget']; + $formatted['unsharedItems'] = [$formatted]; + + \OC_Hook::emit('OCP\Share', 'post_unshareFromSelf', $formatted); } private function formatHookParams(IShare $share) { diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php index 798ea93703..9eee9a505e 100644 --- a/lib/private/Share20/Manager.php +++ b/lib/private/Share20/Manager.php @@ -31,6 +31,7 @@ use OC\Cache\CappedMemoryCache; use OC\Files\Mount\MoveableMount; use OC\HintException; use OC\Share20\Exception\ProviderException; +use OCP\Defaults; use OCP\Files\File; use OCP\Files\Folder; use OCP\Files\IRootFolder; @@ -40,7 +41,10 @@ use OCP\IConfig; use OCP\IGroupManager; use OCP\IL10N; use OCP\ILogger; +use OCP\IURLGenerator; +use OCP\IUser; use OCP\IUserManager; +use OCP\Mail\IMailer; use OCP\Security\IHasher; use OCP\Security\ISecureRandom; use OCP\Share\Exceptions\GenericShareException; @@ -82,6 +86,12 @@ class Manager implements IManager { private $eventDispatcher; /** @var LegacyHooks */ private $legacyHooks; + /** @var IMailer */ + private $mailer; + /** @var IURLGenerator */ + private $urlGenerator; + /** @var \OC_Defaults */ + private $defaults; /** @@ -98,6 +108,9 @@ class Manager implements IManager { * @param IUserManager $userManager * @param IRootFolder $rootFolder * @param EventDispatcher $eventDispatcher + * @param IMailer $mailer + * @param IURLGenerator $urlGenerator + * @param \OC_Defaults $defaults */ public function __construct( ILogger $logger, @@ -110,7 +123,10 @@ class Manager implements IManager { IProviderFactory $factory, IUserManager $userManager, IRootFolder $rootFolder, - EventDispatcher $eventDispatcher + EventDispatcher $eventDispatcher, + IMailer $mailer, + IURLGenerator $urlGenerator, + \OC_Defaults $defaults ) { $this->logger = $logger; $this->config = $config; @@ -125,6 +141,9 @@ class Manager implements IManager { $this->eventDispatcher = $eventDispatcher; $this->sharingDisabledForUsersCache = new CappedMemoryCache(); $this->legacyHooks = new LegacyHooks($this->eventDispatcher); + $this->mailer = $mailer; + $this->urlGenerator = $urlGenerator; + $this->defaults = $defaults; } /** @@ -168,6 +187,8 @@ class Manager implements IManager { * @param \OCP\Share\IShare $share * @throws \InvalidArgumentException * @throws GenericShareException + * + * @suppress PhanUndeclaredClassMethod */ protected function generalCreateChecks(\OCP\Share\IShare $share) { if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) { @@ -581,9 +602,7 @@ class Manager implements IManager { $share->setToken( $this->secureRandom->generate( \OC\Share\Constants::TOKEN_LENGTH, - \OCP\Security\ISecureRandom::CHAR_LOWER. - \OCP\Security\ISecureRandom::CHAR_UPPER. - \OCP\Security\ISecureRandom::CHAR_DIGITS + \OCP\Security\ISecureRandom::CHAR_HUMAN_READABLE ) ); @@ -601,9 +620,7 @@ class Manager implements IManager { $share->setToken( $this->secureRandom->generate( \OC\Share\Constants::TOKEN_LENGTH, - \OCP\Security\ISecureRandom::CHAR_LOWER. - \OCP\Security\ISecureRandom::CHAR_UPPER. - \OCP\Security\ISecureRandom::CHAR_DIGITS + \OCP\Security\ISecureRandom::CHAR_HUMAN_READABLE ) ); } @@ -666,9 +683,90 @@ class Manager implements IManager { \OC_Hook::emit('OCP\Share', 'post_shared', $postHookData); + if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) { + $user = $this->userManager->get($share->getSharedWith()); + if ($user !== null) { + $emailAddress = $user->getEMailAddress(); + if ($emailAddress !== null && $emailAddress !== '') { + $this->sendMailNotification( + $share->getNode()->getName(), + $this->urlGenerator->linkToRouteAbsolute('files.viewcontroller.showFile', [ 'fileid' => $share->getNode()->getId() ]), + $share->getSharedBy(), + $emailAddress + ); + $this->logger->debug('Send share notification to ' . $emailAddress . ' for share with ID ' . $share->getId(), ['app' => 'share']); + } else { + $this->logger->debug('Share notification not send to ' . $share->getSharedWith() . ' because email address is not set.', ['app' => 'share']); + } + } else { + $this->logger->debug('Share notification not send to ' . $share->getSharedWith() . ' because user could not be found.', ['app' => 'share']); + } + } + return $share; } + /** + * @param string $filename file/folder name + * @param string $link link to the file/folder + * @param string $initiator user ID of share sender + * @param string $shareWith email address of share receiver + * @throws \Exception If mail couldn't be sent + */ + protected function sendMailNotification($filename, + $link, + $initiator, + $shareWith) { + $initiatorUser = $this->userManager->get($initiator); + $initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator; + $subject = (string)$this->l->t('%s shared »%s« with you', array($initiatorDisplayName, $filename)); + + $message = $this->mailer->createMessage(); + + $emailTemplate = $this->mailer->createEMailTemplate(); + + $emailTemplate->addHeader(); + $emailTemplate->addHeading($this->l->t('%s shared »%s« with you', [$initiatorDisplayName, $filename]), false); + $text = $this->l->t('%s shared »%s« with you.', [$initiatorDisplayName, $filename]); + + $emailTemplate->addBodyText( + $text . ' ' . $this->l->t('Click the button below to open it.'), + $text + ); + $emailTemplate->addBodyButton( + $this->l->t('Open »%s«', [$filename]), + $link + ); + + $message->setTo([$shareWith]); + + // The "From" contains the sharers name + $instanceName = $this->defaults->getName(); + $senderName = $this->l->t( + '%s via %s', + [ + $initiatorDisplayName, + $instanceName + ] + ); + $message->setFrom([\OCP\Util::getDefaultEmailAddress($instanceName) => $senderName]); + + // The "Reply-To" is set to the sharer if an mail address is configured + // also the default footer contains a "Do not reply" which needs to be adjusted. + $initiatorEmail = $initiatorUser->getEMailAddress(); + if($initiatorEmail !== null) { + $message->setReplyTo([$initiatorEmail => $initiatorDisplayName]); + $emailTemplate->addFooter($instanceName . ' - ' . $this->defaults->getSlogan()); + } else { + $emailTemplate->addFooter(); + } + + $message->setSubject($subject); + $message->setPlainBody($emailTemplate->renderText()); + $message->setHtmlBody($emailTemplate->renderHtml()); + $this->mailer->send($message); + } + /** * Update a share * @@ -873,6 +971,8 @@ class Manager implements IManager { $provider = $this->factory->getProvider($providerId); $provider->deleteFromSelf($share, $recipientId); + $event = new GenericEvent($share); + $this->eventDispatcher->dispatch('OCP\Share::postUnshareFromSelf', $event); } /** diff --git a/lib/private/Share20/ProviderFactory.php b/lib/private/Share20/ProviderFactory.php index aedad6a32a..2b7d0e78c5 100644 --- a/lib/private/Share20/ProviderFactory.php +++ b/lib/private/Share20/ProviderFactory.php @@ -177,6 +177,8 @@ class ProviderFactory implements IProviderFactory { * Create the circle share provider * * @return FederatedShareProvider + * + * @suppress PhanUndeclaredClassMethod */ protected function getShareByCircleProvider() { diff --git a/lib/private/SystemTag/SystemTagManager.php b/lib/private/SystemTag/SystemTagManager.php index ab0deba036..08f9b6bc4a 100644 --- a/lib/private/SystemTag/SystemTagManager.php +++ b/lib/private/SystemTag/SystemTagManager.php @@ -408,7 +408,7 @@ class SystemTagManager implements ISystemTagManager { $this->connection->commit(); } catch (\Exception $e) { - $this->connection->rollback(); + $this->connection->rollBack(); throw $e; } } diff --git a/lib/private/SystemTag/SystemTagObjectMapper.php b/lib/private/SystemTag/SystemTagObjectMapper.php index e562a2dfd4..4a6ffdeddf 100644 --- a/lib/private/SystemTag/SystemTagObjectMapper.php +++ b/lib/private/SystemTag/SystemTagObjectMapper.php @@ -112,7 +112,7 @@ class SystemTagObjectMapper implements ISystemTagObjectMapper { ->andWhere($query->expr()->eq('objecttype', $query->createNamedParameter($objectType))); if ($limit) { - if (sizeof($tagIds) !== 1) { + if (count($tagIds) !== 1) { throw new \InvalidArgumentException('Limit is only allowed with a single tag'); } diff --git a/lib/private/Tags.php b/lib/private/Tags.php index 3ec1af00e3..b63435ff83 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/TempManager.php b/lib/private/TempManager.php index 4dfcbe7f52..dc6dad15d3 100644 --- a/lib/private/TempManager.php +++ b/lib/private/TempManager.php @@ -256,7 +256,7 @@ class TempManager implements ITempManager { // suppress any possible errors caused by is_writable // checks missing or invalid path or characters, wrong permissions etc try { - if (is_writeable($directory)) { + if (is_writable($directory)) { return true; } } catch (\Exception $e) { diff --git a/lib/private/Template/JSCombiner.php b/lib/private/Template/JSCombiner.php index 8254174bfc..8a9e7e747e 100644 --- a/lib/private/Template/JSCombiner.php +++ b/lib/private/Template/JSCombiner.php @@ -28,6 +28,7 @@ use OCP\Files\IAppData; use OCP\Files\NotFoundException; use OCP\Files\NotPermittedException; use OCP\Files\SimpleFS\ISimpleFolder; +use OCP\ILogger; use OCP\IURLGenerator; class JSCombiner { @@ -44,20 +45,26 @@ class JSCombiner { /** @var SystemConfig */ protected $config; + /** @var ILogger */ + protected $logger; + /** * @param IAppData $appData * @param IURLGenerator $urlGenerator * @param ICache $depsCache * @param SystemConfig $config + * @param ILogger $logger */ public function __construct(IAppData $appData, IURLGenerator $urlGenerator, ICache $depsCache, - SystemConfig $config) { + SystemConfig $config, + ILogger $logger) { $this->appData = $appData; $this->urlGenerator = $urlGenerator; $this->depsCache = $depsCache; $this->config = $config; + $this->logger = $logger; } /** @@ -102,6 +109,12 @@ class JSCombiner { $depFile = $folder->getFile($fileName); $deps = $depFile->getContent(); } + // check again + if ($deps === null || $deps === '') { + $this->logger->info('JSCombiner: deps file empty: ' . $fileName); + return false; + } + $deps = json_decode($deps, true); foreach ($deps as $file=>$mtime) { diff --git a/lib/private/Template/JSConfigHelper.php b/lib/private/Template/JSConfigHelper.php index 9a11e84f8d..fb9b27f076 100644 --- a/lib/private/Template/JSConfigHelper.php +++ b/lib/private/Template/JSConfigHelper.php @@ -238,7 +238,7 @@ class JSConfigHelper { 'docBaseUrl' => $this->defaults->getDocBaseUrl(), 'docPlaceholderUrl' => $this->defaults->buildDocLinkToKey('PLACEHOLDER'), 'slogan' => $this->defaults->getSlogan(), - 'logoClaim' => $this->defaults->getLogoClaim(), + 'logoClaim' => '', 'shortFooter' => $this->defaults->getShortFooter(), 'longFooter' => $this->defaults->getLongFooter(), 'folder' => \OC_Util::getTheme(), diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php index f7bb23cd3d..9e9ec709cf 100644 --- a/lib/private/TemplateLayout.php +++ b/lib/private/TemplateLayout.php @@ -243,7 +243,8 @@ class TemplateLayout extends \OC_Template { \OC::$server->getAppDataDir('js'), \OC::$server->getURLGenerator(), \OC::$server->getMemCacheFactory()->create('JS'), - \OC::$server->getSystemConfig() + \OC::$server->getSystemConfig(), + \OC::$server->getLogger() ) ); $locator->find($scripts); diff --git a/lib/private/Updater.php b/lib/private/Updater.php index 6c23a43c35..902d22f667 100644 --- a/lib/private/Updater.php +++ b/lib/private/Updater.php @@ -315,10 +315,11 @@ class Updater extends BasicEmitter { $apps = \OC_App::getEnabledApps(); $this->emit('\OC\Updater', 'appUpgradeCheckBefore'); + $appManager = \OC::$server->getAppManager(); foreach ($apps as $appId) { $info = \OC_App::getAppInfo($appId); $compatible = \OC_App::isAppCompatible($version, $info); - $isShipped = \OC_App::isShipped($appId); + $isShipped = $appManager->isShipped($appId); if ($compatible && $isShipped && \OC_App::shouldUpgrade($appId)) { /** @@ -407,11 +408,12 @@ class Updater extends BasicEmitter { $apps = OC_App::getEnabledApps(); $version = Util::getVersion(); $disabledApps = []; + $appManager = \OC::$server->getAppManager(); foreach ($apps as $app) { // check if the app is compatible with this version of ownCloud $info = OC_App::getAppInfo($app); if(!OC_App::isAppCompatible($version, $info)) { - if (OC_App::isShipped($app)) { + if ($appManager->isShipped($app)) { throw new \UnexpectedValueException('The files of the app "' . $app . '" were not correctly replaced before running the update'); } OC_App::disable($app); @@ -422,7 +424,7 @@ class Updater extends BasicEmitter { continue; } // shipped apps will remain enabled - if (OC_App::isShipped($app)) { + if ($appManager->isShipped($app)) { continue; } // authentication and session apps will remain enabled as well diff --git a/lib/private/User/Manager.php b/lib/private/User/Manager.php index c04f426c2c..8f3c98d4b5 100644 --- a/lib/private/User/Manager.php +++ b/lib/private/User/Manager.php @@ -34,6 +34,7 @@ namespace OC\User; use OC\Hooks\PublicEmitter; +use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IUser; use OCP\IUserBackend; use OCP\IUserManager; @@ -126,6 +127,9 @@ class Manager extends PublicEmitter implements IUserManager { * @return \OC\User\User|null Either the user or null if the specified user does not exist */ public function get($uid) { + if (is_null($uid) || $uid === '' || $uid === false) { + return null; + } if (isset($this->cachedUsers[$uid])) { //check the cache first to prevent having to loop over the backends return $this->cachedUsers[$uid]; } @@ -433,7 +437,7 @@ class Manager extends PublicEmitter implements IUserManager { ->from('preferences') ->where($queryBuilder->expr()->eq('appid', $queryBuilder->createNamedParameter('core'))) ->andWhere($queryBuilder->expr()->eq('configkey', $queryBuilder->createNamedParameter('enabled'))) - ->andWhere($queryBuilder->expr()->eq('configvalue', $queryBuilder->createNamedParameter('false'))); + ->andWhere($queryBuilder->expr()->eq('configvalue', $queryBuilder->createNamedParameter('false'), IQueryBuilder::PARAM_STR)); $query = $queryBuilder->execute(); diff --git a/lib/private/legacy/api.php b/lib/private/legacy/api.php index 894aee2856..f65275bf1d 100644 --- a/lib/private/legacy/api.php +++ b/lib/private/legacy/api.php @@ -123,13 +123,14 @@ class OC_API { $name = $parameters['_route']; // Foreach registered action $responses = array(); + $appManager = \OC::$server->getAppManager(); foreach(self::$actions[$name] as $action) { // Check authentication and availability if(!self::isAuthorised($action)) { $responses[] = array( 'app' => $action['app'], 'response' => new OC_OCS_Result(null, API::RESPOND_UNAUTHORISED, 'Unauthorised'), - 'shipped' => OC_App::isShipped($action['app']), + 'shipped' => $appManager->isShipped($action['app']), ); continue; } @@ -137,7 +138,7 @@ class OC_API { $responses[] = array( 'app' => $action['app'], 'response' => new OC_OCS_Result(null, API::RESPOND_NOT_FOUND, 'Api method not found'), - 'shipped' => OC_App::isShipped($action['app']), + 'shipped' => $appManager->isShipped($action['app']), ); continue; } @@ -145,7 +146,7 @@ class OC_API { $responses[] = array( 'app' => $action['app'], 'response' => call_user_func($action['action'], $parameters), - 'shipped' => OC_App::isShipped($action['app']), + 'shipped' => $appManager->isShipped($action['app']), ); } $response = self::mergeResponses($responses); diff --git a/lib/private/legacy/app.php b/lib/private/legacy/app.php index 463e13da91..872c1c120a 100644 --- a/lib/private/legacy/app.php +++ b/lib/private/legacy/app.php @@ -282,18 +282,6 @@ class OC_App { } } - /** - * check if app is shipped - * - * @param string $appId the id of the app to check - * @return bool - * - * Check if an app that is installed is a shipped app or installed from the appstore. - */ - public static function isShipped($appId) { - return \OC::$server->getAppManager()->isShipped($appId); - } - /** * get all enabled apps */ @@ -396,7 +384,7 @@ class OC_App { * @return bool */ public static function removeApp($app) { - if (self::isShipped($app)) { + if (\OC::$server->getAppManager()->isShipped($app)) { return false; } @@ -777,8 +765,9 @@ class OC_App { public function listAllApps() { $installedApps = OC_App::getAllApps(); + $appManager = \OC::$server->getAppManager(); //we don't want to show configuration for these - $blacklist = \OC::$server->getAppManager()->getAlwaysEnabledApps(); + $blacklist = $appManager->getAlwaysEnabledApps(); $appList = array(); $langCode = \OC::$server->getL10N('core')->getLanguageCode(); $urlGenerator = \OC::$server->getURLGenerator(); @@ -810,7 +799,7 @@ class OC_App { $info['active'] = $active; - if (self::isShipped($app)) { + if ($appManager->isShipped($app)) { $info['internal'] = true; $info['level'] = self::officialApp; $info['removable'] = false; @@ -823,12 +812,12 @@ class OC_App { if($appPath !== false) { $appIcon = $appPath . '/img/' . $app . '.svg'; if (file_exists($appIcon)) { - $info['preview'] = \OC::$server->getURLGenerator()->imagePath($app, $app . '.svg'); + $info['preview'] = $urlGenerator->imagePath($app, $app . '.svg'); $info['previewAsIcon'] = true; } else { $appIcon = $appPath . '/img/app.svg'; if (file_exists($appIcon)) { - $info['preview'] = \OC::$server->getURLGenerator()->imagePath($app, 'app.svg'); + $info['preview'] = $urlGenerator->imagePath($app, 'app.svg'); $info['previewAsIcon'] = true; } } @@ -1244,7 +1233,7 @@ class OC_App { $dependencyAnalyzer = new DependencyAnalyzer(new Platform($config), $l); $missing = $dependencyAnalyzer->analyze($info); if (!empty($missing)) { - $missingMsg = join(PHP_EOL, $missing); + $missingMsg = implode(PHP_EOL, $missing); throw new \Exception( $l->t('App "%s" cannot be installed because the following dependencies are not fulfilled: %s', [$info['name'], $missingMsg] diff --git a/lib/private/legacy/db.php b/lib/private/legacy/db.php index 415701d402..843970d7d5 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 * @@ -65,7 +65,7 @@ class OC_DB { try { $result =$connection->prepare($query, $limit, $offset); } catch (\Doctrine\DBAL\DBALException $e) { - throw new \OC\DatabaseException($e->getMessage(), $query); + throw new \OC\DatabaseException($e->getMessage()); } // differentiate between query and manipulation $result = new OC_DB_StatementWrapper($result, $isManipulation); @@ -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(); @@ -214,7 +214,7 @@ class OC_DB { } else { $message .= ', Root cause:' . self::getErrorMessage(); } - throw new \OC\DatabaseException($message, \OC::$server->getDatabaseConnection()->errorCode()); + throw new \OC\DatabaseException($message); } } diff --git a/lib/private/legacy/db/statementwrapper.php b/lib/private/legacy/db/statementwrapper.php index 53f7b484d0..cac4598e65 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/defaults.php b/lib/private/legacy/defaults.php index f6d72d9776..adfbe71377 100644 --- a/lib/private/legacy/defaults.php +++ b/lib/private/legacy/defaults.php @@ -45,7 +45,6 @@ class OC_Defaults { private $defaultDocBaseUrl; private $defaultDocVersion; private $defaultSlogan; - private $defaultLogoClaim; private $defaultColorPrimary; public function __construct() { @@ -62,7 +61,6 @@ class OC_Defaults { $this->defaultDocBaseUrl = 'https://docs.nextcloud.com'; $this->defaultDocVersion = '12'; // used to generate doc links $this->defaultSlogan = $this->l->t('a safe home for all your data'); - $this->defaultLogoClaim = ''; $this->defaultColorPrimary = '#0082c9'; $themePath = OC::$SERVERROOT . '/themes/' . OC_Util::getTheme() . '/defaults.php'; @@ -222,13 +220,10 @@ class OC_Defaults { /** * Returns logo claim * @return string logo claim + * @deprecated 13.0.0 */ public function getLogoClaim() { - if ($this->themeExist('getLogoClaim')) { - return $this->theme->getLogoClaim(); - } else { - return $this->defaultLogoClaim; - } + return ''; } /** diff --git a/lib/private/legacy/eventsource.php b/lib/private/legacy/eventsource.php index 6211d85142..74beb157e1 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 6775fe99dc..48b7d037c5 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 0e598a68ee..180dd7c448 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'; @@ -159,7 +167,7 @@ class OC_JSON{ * Convert OC_L10N_String to string, for use in json encodings */ protected static function to_string(&$value) { - if ($value instanceof OC_L10N_String) { + if ($value instanceof \OC\L10N\L10NString) { $value = (string)$value; } } @@ -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/ocs/privatedata.php b/lib/private/legacy/ocs/privatedata.php deleted file mode 100644 index 3571c842b9..0000000000 --- a/lib/private/legacy/ocs/privatedata.php +++ /dev/null @@ -1,28 +0,0 @@ - - * @author Thomas Müller - * - * @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 - * - */ - -/** - * @deprecated Since 9.1.0 use \OC\OCS\PrivateData - */ -class OC_OCS_Privatedata extends \OC\OCS\PrivateData { -} diff --git a/lib/private/legacy/response.php b/lib/private/legacy/response.php index fa73f3d6d0..e45fe616e4 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 4f7c11d0b6..8c6185cd55 100644 --- a/lib/private/legacy/template.php +++ b/lib/private/legacy/template.php @@ -108,9 +108,9 @@ class OC_Template extends \OC\Template\Base { } } + OC_Util::addStyle('server', null, true); OC_Util::addStyle('jquery-ui-fixes',null,true); OC_Util::addVendorStyle('jquery-ui/themes/base/jquery-ui',null,true); - OC_Util::addStyle('server', null, true); OC_Util::addVendorStyle('select2/select2', null, true); OC_Util::addStyle('jquery.ocdialog'); OC_Util::addTranslations("core", null, true); @@ -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 65179a9410..bca16b48c1 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