diff --git a/.drone.yml b/.drone.yml index bd06ae137394f60f8492b161f5d5d0cf67ab0496..11bc75092d509c02e3caa0ff69724e8b5de831f5 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 07743ee981367141c7dd553e1d2dc13b527991ac..1851bd4095b04a917fe04bb999ce2bad4596e67c 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 cae79927de50c6ab0bf77e5653015b6579ae2aea..107e29e4c81d6b255abee5bc77fef3040df6ca07 160000 --- a/3rdparty +++ b/3rdparty @@ -1 +1 @@ -Subproject commit cae79927de50c6ab0bf77e5653015b6579ae2aea +Subproject commit 107e29e4c81d6b255abee5bc77fef3040df6ca07 diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f61c17c26813b550fc4e88cc275769678533f7c..9789386dd097ea6a50f2512cb6b65b8170e3df5e 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 17035a4d91fc7b9933eca92114936c8b5c547902..9b7aa4298bcb824bf57634cef80c241ddf2d0a67 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 ab751ddb2a2472d403dc1d5a8e72278b66d17762..66b3abe61be7dda6971f35d0bef1f74e49adaa67 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 fa36f68d1a0509671c5e09f5d24e3e439a1fbd62..e96144e1c6c4f8a0e9353ed3690d4ffdf719af36 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 9181bd9eb732596a1472d3e6c4cfb8a3c17bcee7..062e814114f2bf1701e9286ee75eb5379c61090c 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 ef4967e9fccf9e9759400f281184e5835569488d..bfd7488b8fec049882b8fd6c440f3caa065168b0 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 59432d7b6b44e8989dfa35455cb7622412da957c..d85b132b337f0c050283897263780d662ee3484d 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 e57ae8e7d40eee6cadb2999f8c628f288235a998..634b3355a49eb51d927f28a42ad9c12dece4c3ba 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 b77bcb88fa85086d2ce9f6ea685cec064d7567ca..28935e79c96e128996e53c3280457d346393d952 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 16852296cf1961cac1e060829fea76d985f438f2..94176921f057c5a14f1c7e27364bd56e68126a40 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 7bf686e796e49e56952b043cd453dd795bea2d45..ea4810f92ede1f14fd6aeb5754a3da0c578523cb 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 c2a8175d17a036c1f78bfe387ef0017903c4655c..9a07e2fbad7fb811161edd8add51bdcfd22838ca 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 09092da539cf2574566c4e145ef2a1cd970bb57f..60dd85f74c5181a59703384eea7c50b5a3bdac9a 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 3ef1c2e62a53218ed769533d1fab19e6708e98c8..37fcebe605c3062bd8a18ca63c652e1fd77d6d2c 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 28a4bb0a1f653a1dff6c325ed6be3eeebaa83922..6178ce44f320053373ee9784f881b55d4c133ac4 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 c9a9111917a8a768c761c7e3b85627fc72728832..21c2199a0ab063648a06a0c1dfb721e64a69a3da 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 6138da04169a3e6c3e8ab2fd3f2f866340ed4a2a..2004b3f5072d9eb2ded835ee3af1fb90b9541344 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 27a36bbff816a832c640104a0ad7a56f76b93527..fde9a71c32409df53512bdf7ecd9b4b7adc1c2ae 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 6082e68dcd2a868e8966eb7adcf7503056f416ae..36d425ecf63aa121d3e723cbfb5d5f7c1413f4ba 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 b591eaa351c9ab515bdae39a64c81363d6545aaa..2c2e3d01c28a7beb663b1ec39896ab80c426e435 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 0ad1d137455c181313a14afa7ac180bfa6aac4e0..a665caa0e6a61d01ead627ee7b718e8fe3225723 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 702b74bf1b376de719f3866173d6c0ff087f6b7f..e11f922a63688033b687bb55a148958eaa1b6405 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 7fe18cd8656ee52912c8ea34e51c624b4adca22b..d078790b6f0ca157ae48655a80330908a02bd2fa 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 5172cea6e279cdf87381f1aa55eb0d3d927d983d..647dbb5c58768b81707235e67860502d3fe9de98 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 d658a50437d8e2585e8391d35bae90490a07a3ea..84e095da5f877489760056e253e1c5caf8e07979 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 5742f97b701c5b2c019c58f38c170bec48fa0490..7c275611951e4f5ed1387cfcd50fbb0e80570cfe 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 b291a8360e196c9c8445ae41d988dbccf608ca9a..61b9915b1ad8fd90d42593a3413b19d62b9cce91 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 46cbb504cce06f16045633a87c1bfc3ec1778c77..704b967a00221ce79dcc15c924f6c9775b2fd7e8 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 cb5a2ab8123ace985a333dcc4365ee1e5b71c1bf..6fe9d26614e790682e1e73455b181d19dc59bb2e 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 ab04890d6c745faa286ec52660f5183793803474..478321d41f226b2a0b1be335385a25948d0ff1cd 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 efc9a42e5f59de2194468c0cea230e3bbdcbe7f7..726dd13cced3e1468ee1689cb11ac536eb1bae4f 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 06933f53e769a0b9fa7aeaf59abd5ce791e4b9b6..b6d4090bf8fc2fd5d7bf96d80765db283bec1f1a 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 acc6dcc3be3cffaefc123379081cf946633b37d3..3371c655f29d639017602cc08e238602b60da52b 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 8713f61767bb5080842b014735c970c8aa272b01..dfcbf1e1ca0562d88fa3d98e6ccacbb2404105d5 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 f0958c353a1ac6d06af2a6f12f89438ccade1c20..92f1f6e2e74fbe66e58b54d6da5e3fba3e57f09f 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 f662d8e1b80a56eab507ba3f3b998ad27479e533..6cc5e3b6f509afdbb20dcdfa3d6e7e03ad3414e3 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 6a71909c6fdfe9b6e795e681a389a6748f0addd4..8c19e92499d0fdb52511bd53c2193c67a10aea13 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 78fd1f4d6d6398ccf7ee7eaf0fbba1352cda3ce1..8768d6313b1744dd979058a27c7bc415ac9aa686 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 c73d7c175ce003fe2527bbd0bfe97808f0951c80..66e3160eaf868b086a1e2e92be7b34c2f55f4291 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 b623f717b3136fecddc21d935f8fe35c79132418..4b327cecaac21717e0152523afdb25c5daf2cb8d 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 9693895870b45abe35714fac1efdaa810f5a67c5..ad76bad8ef2fb2b3dd88f53c9cb0fe426799d71f 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 c24465c32ad7acaaa1568c0ff57067bb035629e1..f1ec0a6c44b26fe552f074114e8e63acc20d268b 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 32993e64514f8ea043e82efef2302fbb6e08e3fa..b0704a1bd658215fa53f3dcca348f0b4779b7fa1 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 a2c72aed1cefde67d4d8500ab2b0df6ed3e3092b..206e3d661ecd7d99a8d08a1bbde1aae638a7d35f 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 ce5a75dfa7dd954a2ccc88fb31dfd6727c2cf255..070df518a4f1ba72382f92e1f0224cde5f52f054 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 5a7539c9dc75559a856186bc323daef89cd7835a..b963d2b34686401db75bf31961996f64a96d1947 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 5ebe12d73657b37bf5530b099f6398000a5ac905..dd7e0761361bc4ec3817f826987b546ed6cefe9e 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 4408f7882d6d8929eb000fcd333c9618ad4c3daf..6bd5eaa9414c8006de8314a79b503a6a44a91835 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 68d716eb2e927cd080d5a9bd9a10c7fb7b84b02b..b0033c46f7a5157578c11fae1d780f55f784d282 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 85cc95c9302fa322c75e3539a46a7cf55649171e..c413a6888506720373155f9de5c7a26d11bb1f05 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 df44d8b4154ae652113a176a5b335f2061ee7aea..923708c2964b2eec861497e31fd7792413a71554 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 9805faaf3dd83a808d92cb4b5ca62421d1ab90e8..ed251fd57a7d9c64ffd9c747e37d8ea272b6e2e2 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 9a9ac27b96fecf5d10266bca3e9a89c03b4a2f22..6e1b7387c88e1eaf59962b40a2030b6b2b077d3d 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 6869177ac3107f926f4f4a2fa7c4ba3ed2625ad0..4d20c103a5de5b50546c918ec8e6fda29277e458 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 ed397f95ca615d774ded6ffe180f77a629b03df7..32bb77a41572f618b71d820f435ac8178d407731 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 60c4f138bc616ad37ed686eea95c0290daf80cd6..09a6185531e91389957e6c94a3086db801868a01 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 7e21e3b8258efcca0f6181319b7f8ad024d8c18f..8ab6f37092493295c9d4f6a295657489ca659082 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 2062d97d4c56ff5d11aff4fd046672d868eafe04..5f322b07fc91ed768a63512bec0545e2efcb6831 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 1a2fad5b1fccd8ec8f9966a81401498182f92513..c183d3ee23a36d07fc7534357ab985aaf69575cf 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 1ea3da04ff4dfc37315321e0fb635b41f60b64b8..8ecc17d39e4138b944b495f7fd713e0bd861c938 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 f59ca88ed6931f16b6aaf6f70288b97ccefac68e..6928eb29cbc0ccff58e6fa5fa3f16d8a5aa43d76 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 d5d2e3c3fc672c099ddd7933103a8685dcfb4437..b49122ddd51268b337a5ebb90231f92ad8425553 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 ca72c28271387946819b396679c572e183c88556..a20a0400df7a64c37e88bb4dd23af0dc8d824d8f 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 cf80ce4ae4185bec89febe970c895a9f58a6cac8..63f36180af801b03b29a018c1a75f6e50a7ff2bf 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 6cfe4cf8e0818c7f63e53fb5f55e1e76249e41a1..61a0298145f6dd045f444c78bb439248dc4bbc74 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 bf9f2632592784672c4e7342e1a9c6d23a0e62b8..6ebfc2c95c46a09a7b9fd899ceee7225d8622b9f 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 4cad923bef3f26cba033cab6bed109b830b95a1b..9bbca2456903c683fe6f28d8469a6a1a7282e2b1 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 784ebe9821165a81bd1a6ab14d3667f2f4f64f2a..7b1f71198b0a154b8c8f7ec5ce79062763c91f28 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 bc3aef608c0ecdba4d531d9eddab77bccdfa8c46..d8a0eecd203dcb099f0631a8b7d3071caa3b2794 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 a88cfb6229de7fab18e498e80fc3727965fb43e2..d880af84ea738006d02d8a903433d493fd220814 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 2de7e30ed4c081e8ac2d0a2631fecc6a09c13c6f..bd6e93a968485596b5a7663c979d7b7d1623fe42 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 47f6300ce80da5f2701a58e10b5933a12f15f2b6..41586d0b5784b629107dc9ec538a9aed30adfe67 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 6c85f654172d4d7afa038cf74085d104aaaf1795..937992c61b446cc01102f4caccb102843aa2bca7 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 4e657dd48ec2249979a8d02627e34b22fcd9dbaa..43edf9eb0c703a9370bd89c16cda370a49ab1af8 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 fbb225b63adc25708134ade47af044605eaf12a8..f30ba37b29e0673913b980d5f34ee802872d2bc0 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 dd92c7f9fcc61474586c2e672bdc1c7c51df75db..c8d717e11d7804bb9fb45dcdda7a909ffafc980e 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 df6da6fde4fd9697b1b46a74d503819b26261a3c..78fdb02aab0b65abc143a9a99ebdf44c55f7fc44 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 2476b0d87985b8f0c58e155dbdfa29054d0c6be0..af9b3a6be4954b876ebe5b9cf490453dcb48fbdf 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 1ac1b75b3349080a51ecf813b0454088d6ca2c0d..4760bb17b90f4ded0328e0adb2686a7c30c29aa6 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 806aca73b29d447825e17d9b7254399720ccd9d8..95da03dff5b58fbe534b3851f25be85fd7dbedc4 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 1dde51548018d1e5f50f6b6319915a6a37b2049c..d384d56dba64a20e126457e7277e6d06c4e662a7 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 c2ff7b6bd649f9ee7b0911b15d78ed3c86787f9b..6d0a065c83d155281a171d73f5467d399b933ff0 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 bba8d8dd0e601230ec69adb253755fe3254a822f..0b75207b6bd5b20daaf420807772159edadf1fd1 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 e2fffd3fdedbd365139c786ab9ea305db6962a34..5dd8a78d60ac66ae4b93e7ba6542a757c1d0d0a5 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 c82cb1c18468a073f6406c9284b50e84d4b93ab6..0670bef5db70c59943485441de6b6b93bb8b20b7 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 fc7492876e3e0232b47322dc72feb3d1fb90a6f0..67081c1410bccd68bedf89d83ecce7debc9f52cc 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 4f58f569fb92f7c5ce2360d8a8fd4e879fc97a3e..5794f568ba4c68db01e7facf2095eed32d0d5f9e 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 be6ddf080a7bc175b9b55c5f09909a4a23ea6449..8b879b30343115c23474d78bb130c43903b7ed70 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 34dea0df47a25c17e932e7cd02fabf3a7aa469d7..4838b3e184f036b31a7035b63d30706200388c16 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 90f481f3bb4961c728280cdd86b13c3dec5ebd0d..17e8f89a75d10b2963c57dc6c650767261e33138 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 9cb3722dcd420d918f33371b8c63e0d9c4088c13..95a54b29a3acd564a9318c713cb7fcef185c238f 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 ac7f025d41fe744ad66c67b5ab1d58e469b60907..cd289676b7919e79c21bbe7d20f03ff76a574de6 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 f2ca3cfe57fea13e4c1f1f598d742bc4b5fed11a..a9cf9af12b7cf788172e4a6069f42435f1057fd4 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 0c53f85754830c7a945e8f48a58e5fd15abddcf8..d6f29b66d46b3c5f41c2111c8d5f4ef839355f8c 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 2042ac315dc5e5eb30caa634e78b7e3c8356ddc3..378508790751258bdb3378abe3932a7cc638a17a 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 6fc35b35b620da96a9af74f046e94c4e32b1569c..458216561fc11108e4ee21d3f0705c6b7480bb84 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 6b204563e820be50708762dadb7a56cc8c53fc34..c71c7d8ae606760892fcfc0f91db3e2e49fc54c3 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 9a937895498818fa119e8f61413d66afab32afe6..e3f7c8c3b2b5973745941c3b007c643be339e654 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 cca776554f1aa3d1373c8f2053cd8c4fa04975b4..6a34e89a91540073e0bb7fe2788c45b549228788 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 683231deae013ca0ddc5d0b90623d048c05e540e..31e0211bff54f7d907ee589d40b7a5a63d058654 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 3968f627a411855d862ac435a7b4d38a78e5c342..e0fa9690e2fe780ae04f2a54405a70ecc4675323 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 d5f514f3fdaac63add55bbff362069327b2ce595..c0b03cfe2565e287b689eee6b6939490a9e2e310 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 53f5708edecd0b61e6422f5fea53cef0689c7999..da6117e7c4230b423d99c7c5eab42451efebc58b 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 6faa1186f73c6358dc523ca10f92a2645f7b6405..ffd3aa02a6d6381706080db9ceeff0bdd914306a 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 d0f4400fffd9e2a5a00f49abee641af69a9e43de..2ca3283c0944a30e7c57796b9a449380390d18c9 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 3b9596453a5e6375025091a832b80c627f458672..e996d7ce06863e3e0ceb303770050325feb3b662 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 f781d1e5b6f960e1b60e9555d577f32a6c9bfeee..82ccc884ca3a4b19d10b8399bf7f9ea62b4f52f5 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 860bcc6491314a5fcbab86d8546ff8caafd1b59e..77bae400756e209a24d0d30836c580aba893909b 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 821647e5e395eebd7db28955eece4ce0b377963e..bb07c2717f9be65cfce6e0ad19658b962c4ed42b 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 89fdbc64d9a25bd41c70832ff5d156022f7d49b4..09bc7333c132035b14be3812f0f57ee18810e0ad 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 4f64e6147e13885bb5e938b8771c95715bb0b2f3..529d7f7db67306dfeedec0a84f9eab8d53886ec6 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 c6be2a45f168cfc5b522339148b4bfcf75f62b50..26365d2b70ccc5ef6c1f96ba2f49ae8bc1bc8123 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 2b476b94c95678f1dd8c7149ad08952a14e22995..1a2511578e464696c877f00c72eb0bde9329f681 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 2c37fc10fa2032a5adad17ed5f3ff0f4fd125f72..fe99a8dfec64eb25898207536376a61f3186d6f4 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 1a8bef05ae94e1de9771da67bd9a9ae974c386fa..c55829d1e6a93fd4095019605d4387e185b006aa 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 c9b54c5f893fd22c25643e7c2d2b26ca85b7fdd8..2e82f93b65a210988a2a32049389ae147aaf724f 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 2f1a5a6178ecfa7bb1bf84123ea44791ea77b9ab..4203fa03e1f627850b017075fcb5e6efe31e433e 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 5de95089e47723fbbe72734a4b8487b3b87b94f8..39f9c6059b49a6f918ee90e09dfb158afdcf7951 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 90ffc965f11844f3985c31cf71fac19e6ff94de8..0b5120fbc9c579c649056b95c8424e361332e78d 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 ab7d0817b3ffb3703731f195038040db79ec13df..4548b3dc709f02d3bae1e8a35bfaef7795b88f29 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 0000000000000000000000000000000000000000..86d46008af7bc89a3eda786f19e4664cf3f92110 --- /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 0000000000000000000000000000000000000000..767e0e13ec8ecd6e7b3cc0204871ac0b74254ebb --- /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 983aba2615497ea06addbaec3dc7742e554ae744..dbbd9862753eeef24d01bc277156e83d42089b54 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 10865e029ed82342c1dec1f1919b2e8aba98fd49..5b9ce1e29a328a1826435583fd81585fcb2c88d0 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 55647622915e4ab62aa3179dfdc36cc97a07ccd2..38bbe293a56bf478b0e6fee962cf8cbfcb9d1944 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 b1367be95246f6266cc809d2de219efc4c879a56..bf9f58999dba90b869567ff6470a1a0a3afdfff2 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 9123e37300da25a4e7778e7393ef1a8320b0a7d4..7effb838d8b4f4e7ec252a87f3d7e2f1b43da8c6 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 fb3a2749ff8b217851fa7b0565b61a5f45939c2c..db332d3d7ad3a59ca0aff25d2c1cbd1e85d1d7e6 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 594299a2d02c900be35cc5c8cd4d739fc355c313..b0594877b23848773a47065449e0388315f049a0 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 afbaa4abeeecf1478dc4235c136a46b4ed648ea5..68267dcb73c9480aac45bd50318d7895a344d60b 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 ae78ffeded99d052601860467550ed454173bd0e..511888f768359022c4046bff38980e2c5ae80efa 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 c938cfb1583d690469f3abbcf9053b713b73353a..04968daf0fde69e1da7b47a600716327fe4e3554 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 71e517f6b87dd8b941b230218b72205de634f237..082596216c894aa9be15cfcb33f571b77b435226 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 060504efb7bda373f9a5080b5d0ac8eb1f6f8fbb..2e5d1578ba200d210f34cb1675ecc39f0e6088e1 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 9bf1452eab3296d573d1e1a81d3242d0758c0b55..067cf671a9671249a78cc39a0d21dff53bf64645 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 6364ddaedffab1b9ba4b89b7294584e09e4dee8e..8759392caeaf5d56011a2711b2a0117ab19540bb 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 06da29d17fc029480c1acbc5d91a0dcf778d682a..276180e5137f5b8ee1e433519b3dc24a0f75a80f 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 2b231b4fca0b9e1d70fc27676432eadc4cd3312a..ef6c7c80bfc3a5c5ce3242d0db392a199e925417 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 598c2f01c9009c9d319d45768c0dd5665fba28e2..5995c5e44623606a31306f395ec3d3720897d76f 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 17a7fd8b32290847d8c205061541e271275d8afe..7c33cdec6dd7ede0e14931b2ce852a34a6030725 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 dd98da272b8b6000eb85534f9272d1a408d7f97f..c0bab248d0b8da2eb14da907151655c24b19f80f 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 ad974585339697eba1b4e2d464775d9f4bd63b93..f564a86682f0ea52622a2764366067ec35b2832b 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 e6bbe737e7c948a9b84bfebc03748e3471fc7d0e..a4aa82d0c292685aac75901e7aeac326460ac515 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 58b22f78aff792affe35f0d1d03c559a06c7cf13..e49eeb474e3500105c724c5ec8308b2efde6640d 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 7ab696ede4161a58fe197df9c31f565abdce3e10..fecad3ff6e93cef2696614ded93cca4970cce481 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 5c10d48e6de8e5e53f5b7ae53a68ec8301da74bb..254eb6feb786e0b902b3440d99d5fd71ba632d61 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 5529ab11700c6b47df70043c43b2f53c707e2b28..1dcf01fba70eac3403246dfd12e84cb4d8a31f45 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 d1f1dc133e873ebf237d91daf0d442ae186203d6..494353aea134e0140307097dc7868be2b11db917 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 794e005d07a34bef941fa8aec5dee3ec0f4a10e8..8185d6bc6d238cd1e9f2ff6f47b47781743550b3 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 4e80535816cdb13e26c6feba2fd0d043f8ec879e..3e18b9d8886601fb11d27e326b67bfd17e0e2df4 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 077141acebd4c7256c6c055b4ded704b34130b30..c405fefb9fdc598168833c1e22b488f78440dc03 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 e6246af41274289d5150f0c11d1e3cc178e22ec5..40b3a86a7c7a33d99fb920b6859b641b678d86c3 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 2360d9ba6b25d9b574eae6c749ef73be4dfba0f0..3434865138f06f40374ef8ae66e2c6bde76a37db 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 f8cf6819fca8e1355d13f14e3c3fc2b5cae3f379..517a08135d3bd3b47af8601c2d9ecf9a89044827 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 817f003d4868b765d81b660a7e5be04add826e8d..48362ef9e649a20388019bf0c6fc0b1a8512f808 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 b6099d03286ee121b1bbfd33d0b391b9491fc203..7cc7cd81113cfb1cad8fea7f9aed3d17d93f8ec1 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 4ddc48ad1cf43fbdff882860ef8d5e062c50177b..6f80543cee03d5a91131d5dabc3bb7195aed6a7d 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 bc688a28994d5f995904c149d69ad35ad17b8069..80cad92731cfa62e90d6c1fdf818efc41ddcaf01 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 249dbb79e447c8c7f9817b29737b77c8bfba6592..9c03d86c15d8fadbb83996c57e0253b625f1e13b 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 b74dc2f7946d440236a876bff2d54635aa58dc27..3beb4cc10b3847dfc89b9944a4239e2b933617d4 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 677fb30951dc65d94cb0f235a559d40c151cfd2b..3ee50228190ca95f7415abc665813fc632f3dc77 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 115b1126d9d8a98374867071eef2fca9e1995b6d..9bc05236e1eff7b195dc0e0261efb5c972e7ea64 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 3a464330d1f4d09d3f8054de35108808258d4970..8071de0df98431da9211f50e1c9b021cb6d4e81c 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 e899cfb26e9a99834a69925e896e5ca6a7343c3a..e7cf08418466ac42f7a973537e1e349390206df1 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 ec0b10835904f1caedfd43ae9e0924cf6e5371ee..8237ec4e8abe94d326f3059c5d1bdfa1ab2c473c 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 d6914fd8bf2748e373fbecaa166eb3b59505e37a..996b742b61c40634665d7dfc30160efd5662559e 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 36f50e7f54e203f6b1f639bd017e9d5a43b79972..72c37b9ce77afb7934f4fc459304669dfb8ff029 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 2bef163a1211d86f8610b77699fe07d78f695b81..9a32555d39ad016cae0409f73ed8f73b2f1fd3bf 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 b73afd543dcff6f680177565628380d935861ec2..482c47852b7e6fc705fb3edcac6ac82004aad755 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 468996a079daa59a754fc29be52b172a2ee5e65c..c6321a0b459a7e25b814c98eb4d654d9489ebdab 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 85f15d3055c37cbcb873fd98a946fb1bdfd67971..fb31c3b7f2e6d4d00877337d7f5c5f99fe727844 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 52368a9ce89e7eb84c38b6f468c4a8ae41341ff0..3bfa946a499a50892fcabaed3158db4df1874d8e 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 d5cb86d842b5f6c912a1d8b37c07187b4c91e9f8..cc8cb646d9e4893f749fcda5e5f259ab9c9812a0 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 086096cbab4784744415c3acc0b1b21529f870c4..1d672295a36ac5a3cacaf845c3d025e80bd67a5d 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 0d5bca2def1400daac72048cd71f14e128be36a7..1d13642f84249bf6c156020f24a0d899c66b3b78 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 15b5f1341035fa38128d534e17892a6645ef8d26..99c46c8d0a65c142469481a310dd89516f60e872 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 e738b3988d8fdd6c168075a44139156c602de8d9..270c13b39abfcada8752b25637904d3622b816e3 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 3c1b67c9466dce23a69ff019f2caf8167b50defc..b674fa9f3c02d43154865d54ef09623bf1cee03c 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 64de0ceea63c38b4444998da5453b21babc98915..f0c17c8f4f69f3e7a11c8b979ece313953da0a65 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 3fc39ab0b505570e61cf0ef5ce7d408243e5fd04..af8e77a2f7b9928620f3fb8dfd7166785d104fcb 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 02bfe798d1051f47844ddd029204ed06ab5f1929..9942a4249b6feba54f5769b1368e200b50de3768 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 a3b467c8a2cc19271eeaecf605a7cedd60976a61..c88cff6cc06931a974c8789a44aa8ac008a6945a 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 6ced3c7fe6051c9e8ed1cf87c8c449dc418338b8..062209db0c6123330df16a30c0502fa0526027e9 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 84217870a7e4b36dace1a36be87cb6ed6311eb3b..0f713907d5cfc7eaf40ef312d4892802c616d5aa 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 231bdb6d11a46872a7597d4e2229cdbd4123d112..8548362748e2ea2a501865c60a1e24c1786a9064 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 c361bda2d34512c8b0c557e54b158170e4854819..3079c785f1d8b422f09d58407e3c1d94b0cd7562 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 67bef4512c2a03d008ca044aa166835246fcca7c..c67c38b7545a937c07e5f97a1f270a0db90104e6 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 3124f14954102b6f415d059915ecf27e006c360d..8b5e6bc65e5b69def2dbe60e4ec6594c37e54a86 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 d5c4405217258752cea5a14213214e78fa58fc57..df4d655858ed275a2f687bb974764c00e6ab467b 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 851c66754b481b6ec4e9fd936a259d24f41de0e0..85e9f58675c59df13b29dfe8714e8513e5c69230 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 96f679a972366560607ea4e8feb65ab284d69223..2d56e4f10070382f5e8a5317cda723457d1cd797 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 3f297a99c9e3b5738366d615b428d04ee6cda13c..d4526463488a467caf40498a9b88ac9a08ac8a9a 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 0a483c231b743a04127329e56c9b95a8a30bddb4..ce01db51d93af154693a8bdd3b8e099cba97a3a5 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 83b515cdcd09828459e7f1ef703f5fdb869bd193..b01d0cc1ec7c3392d491fea98e2d3f4558c03b79 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 8fc5fc24a8858bc5c53db7fe3ef1e5e7aaba50fd..b5995eaf446cbdcffb5bcc3f3275e4c101c21c2f 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 18408ac9f01aa5a565503314d1c1eb0df77e45b2..615718962f64f8011fb7321921059afb75ccc4bb 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 257f2b6998bf9e5dbe9345d3c589375ffba09471..56666e1d8201d550cffcefc7efae64a9e5a1c28d 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 e1a5755fdc3a4f65418834635eed0e0765994302..4ba2864e80e6eaa9ce1a0b49f6a1eb84b731e0ac 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 25e86770527515e1ea934669f03772e5888a5df8..8c48386e5e31d117c569d5e30f5fca78085ccb1a 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 81854b77fa9a44ba1b937f0f24debbc6c09015b4..0b970e021fb5f3ae48818de3b94109941bee377c 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 c796ec750c739a51ae5d67402090bfc46d377154..bc1dbb8dba8bd658fb410c3c9eaa4c7031fde054 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 11d2c0a3bdb3b3142c8ce6dfa848d2e4e10435de..41161cb0c6e28281de011d8c0752f319eddd298f 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 b84a03068b435613cc0de22338ec3f29aaa78edd..83c9ad56909579b66d0d1e6ecfdc756500c1452f 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 35512dc6a233d6369452b514d0ca0d4745023e24..3b4d0a4a3a0de3ce7de4f2a7eb6dafa0a28c9d0c 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 1eefc175ab66dd23e908400a807b31e18c222588..906193e5bf854739b66a0089cdd3a896c71a691c 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 974b388f1a7a1c91c395fff8b976607f0af7924f..1dbe219147d1c80bf8c5424c42933a987435d977 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 ce73c32e00c1c8ea7752dd97b97bcbf23bf78ad6..2b68e6ae0da949813881ee6c6206c181c92c2cec 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 697b35eb111cbb4874fe4ff2c46cce5c183fb379..0efb86940c2a24d4ecfb7aac84bc3a6d8cedc54a 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 c4948ded2fa5115da86391976f0c856fa860f51e..256e412b3f48395ad6cccf705b46d0722347b760 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 cedfef441ed27a7ba22edc0a9ce8fb5c97e71541..bac5485f5e43f68f3bad40329570cd730103f38c 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 d2cebce5ddcd74f93e759f9ac90414696c59ea3f..4a5595999d21642a43a4146e4e758ea927716f3f 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 da1d5deaf35b6f9edc7ae9e86ed8dba2e6356cdc..faaeb5b89c1146d9d11cde27e0b6796b07ccddc6 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 db2570800af3d40122ecac09ea490179ce2c0cca..8b257b77ef6a682bc42ff8b282e7252138befff9 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 ae4ce9891306029d7f9e81660a8a742d05c6f6c8..6c1a965c33dd5a980059c2e4adda249425ac49ab 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 856b23415c6def545859a73c8c39ce3bc16023e3..616ef40d3f29e75ee9968858eff614a2a586b6df 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 574ea9233c02877acf3a3d8beb815b718ed95a18..1ef87817d521b7b695611738010577eaf3f12c67 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 d59d8895b4e0b601c6604ee019eeb422b94c3895..1af99a29bc53819cc7d5420bba7aff4ad3f18ea7 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 2f3388eac227d1b6f3db25a9f0aa5462139f3fd8..f3df4371abd0006d4a1eeada2b2127c52229b913 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 be858c5b5d1d7d30547941396ae640e0fb252683..3972cbfa58116093f6304b670a2e5fdfac714290 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 c2dc5d2ffcb04fc76773735985611e86b796fc44..92ccc4cb94587c102b98b6fba8068b22b731e245 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 b78e01863d54affd27c85f9a813fb39ee1f96fa9..e6c3055146c93bca0a1519060fb175da1c89bd3c 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 67182e0b653e3bddeb1c60edc19bf54f5ad248ba..27b854551acc63c7a131214090b8d25399a2572f 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 7d6a81f731e9b90ad652220f82119d7e8a178bb7..c644b405ed44accf29481f4585a0ed3b5256754e 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 c8dba8e5a6ee8c3af858b624b1c584f143ff48bb..1669099c8f513ac8f81901bf812d625d387bcc65 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 d29f1026079cee554127cb61dae80adfbce3c674..8d17e2b578ade64762b44b7cde50aefbde542c2c 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 52a654b6ae6dfb828a3842dc5ba050fbcebe60ad..98515c2e7647fc3e1b9ce0c00e828e83c1b71910 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 ff7d7d488e61d8f910ce9e0c9df17bbe051516ca..9adf0f796795d5b2f17817d948bd0f5ab7202e24 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 2b778b6e5951ac46eb4ae7df1f58ba89c593fbe4..0c6434a3c5c343d9e92ef226e19669b8eaeb1298 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 5c8427caf6087ff60443afe73f4d3f20594cb054..6c4b911e500e09eab1c3b76ca21b6a3b8301434d 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 f1c44ca8395a97918db78e9ee85ce3224f8fab43..f616e52ada961a3a3e34e23ee1abdd640e7df5bb 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 04f1d917614530a70ebf18ad93e33436d8119978..ea12484f910cfcffcf7c6b4c272face13d35236b 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 3638d59cfbb4062af9172b814a9d9395961036a5..79219593ed67772b0097ca2471f3d7af8bf47d7e 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 2fcea0a7324c54639fb1122bb22d3e5b1db473c8..bf52096489c5efe7f8a89963207f88f7d3160ada 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 dda1877e9e0730fd91e2680449f931e7b80ef571..9d7d3e26742361d9e70889e52f6fbe62998fbc2d 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 1945d86614109e2aced511755c10111252f41e69..6c544085ec33fd3f1035bf21701f94b2a1638b74 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 6fd1bae007f13bc8a8f2c3ddd0cc12df6c8717f7..56e4631b7e44b8eedea12f7d1d9899c70d30e02e 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 ceec7cbd0e848fb91a3ee3bb890be402986de3b3..af069ba1e52537ff8abca450cdd8f16f3e61b509 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 7413b33c954126e94455efe467e3b2612a06ddd9..780e76c9286b17be33b4089cf3c244e1c5d50ea4 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 ea4aa63c00d0b9319d38d8e0beaab108ee869316..20d950f3eba720825b57b7f43ff3058edaa5f957 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 0126765f1c78cf873f7cf05209c31f68b83a6e9a..029abb172cf922cf0844ed5921d06bba6d4e4945 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 984c3553c26b340bd7bdd26b451df9f62db56a09..ce6dbdac8db02a461716b436c827a25cfb71c045 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 848e28145edc3cec17e4f29209c932fb93825da9..33e424468c824e38b3894e69a76a83deb55c6cfa 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 ea8e6bfc63a02b6ca800139830e25c76eaa87120..109e3925f0a28db486ca3394ebf491a152b5d7ef 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 39fb46e600c9dcc26cb4ca81043916178f5324bd..0a6b3483892d56a3fb10f6d164da02999f63d019 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 22517ab24335d7bfcefad04ec0342299559cc0bd..e76aece67ae4f4180f8592e3e690c088d5073b8c 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 f696667858bb2838cc1c888d6eba2aa91b0d342f..09243f9b1c76693f528f63a525dfc01f5a97b89f 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 cb081062c066883411a1e4b5b9d0069638c24254..55e4cf85b11bd2bcfa3c030b41353952dc8d0fa7 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 1e13f696dda6fb34b1b52f0063e5ba6e699cf51a..12b78dfca79a3b4df29f79aff85e42ff9b2ab7cd 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 803990227949545df96c8e33f2aee56e20268c98..78a852b6f4ae80a1b5f563723e06892ff8e5f86b 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 d7c4d7966acd83077214727f5e18ba837c482016..fd197a34803427f7bc8efbd148934161f4778eb7 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 9a751ca44bc4bc1de3d39f572bd295978b0288c7..f37f892b08f62c58b4266d165924620a014173cf 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 66a1a58fe45a1256340f77da5a118afdd57fcc4a..eb93446819736e7891d24780ccb5a473c649261b 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 66b37e57bfc2d09586e691e3031f21a5aa5ce70f..cc00e2d44eadd1cf7a9dcb160f30709925212605 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 7067fda56bff1b0483015fc38ef8d843085ca7f5..fa9d2c7e75edfeaf31f3eb536ed9951c2452dbc5 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 e6bc51457c938343ab86ec915d064c82a41140cb..5c9e34bda896729d9391bb1c113dd1a68788d3c6 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 fdc81eccf7b77c71ca745578289505f484e63ff7..3b60a3a760faf0b7b828db5311994a574a3c3082 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 837e48543e5cbd7bed3ffb9a85f7be609b68c247..29f5435d0b91386f2090064c4689ac44aae076fd 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 6a21ec8565ade010876197edec41a034ecb5267a..178b5582b7dacd024c5353b76891d3f1da0aae92 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 c351c9f1ad0f7c5a77dc9f7425f304601409daee..2758ce3ecb8f3c1e077addc49c64c2139bdce96a 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 80eb41bb30c343fb2e6b7be86c14d38939ff64e4..a94387533c8fa192a80f837e94efc1435482b66b 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 14659b774704bf0dff78df6e61d8feda72849053..f0d8b4ca9d532824377fe3071f20b6794f3c8a6c 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 443e577e44ed8a972691fa13c39dc35e4f4881a8..f6aa8cfb774a99a32622bfb85240834ce98046cb 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 5ac0f649badbf913874fa9bdbb53c2ae5b5ce037..75dac91502c41450ea5d9fbd3dfde471dc26c788 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 d624689d955ffe86031fbb1b4434f95a399dff87..1944a9d4f6cda1e2220909207e89a3f94d2a1bd1 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 e45e1cf261bf4deba75bae567d513b2ef077067c..8999e01abc130b7caf79ea773661748437a45f2a 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 4fa3b01ce8d5ab8431e35fbe0c660eb12c517ca2..2b2e224c5ba276b767ceea32b451d0885dd9046e 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 c47779943a891594a0c8c666b0ab2a783369c191..c331124bc6907d1026e93481dc7b09a90bfc2e51 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 e15b132206428287161098721f78de331bbf01dc..399ab88e3ac9b6da1ac6e4fa958cc625eb66122c 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 faaad69c68440bfb194d855b92dcf0e22d8e15f7..8994d2a23a25603bc48cff485abf6bf0c9e6313d 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 9349bc382ea3b836466dd952eda080281357fb90..fb24edfe67edc1325ae93fa1f365c6235f852512 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 9aa54a5ea298148ed95a3004dde6443546cddffe..930a2376d55b058a052376e024bc248632b58de4 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 448c708a318670b99f4e023d4a2b856bf8532097..3ceef8ad4bba81d8e6b4d76dc98794eee20ea690 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 f2a6772925f2563c01e6b6f5813599de2ddb9731..065c06bbde36318d8c528180b80d95973eb4dea3 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 5b3e95dfdbe1b6dd9595af847be6bc571d680d1b..12fdeee87f4fc4f35b28aad90fc55aaf5fe2466a 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 f33986f0fcbe0ceacd8a4a3c7710e40f547ea444..94d180ad716cf4c7a8272a8c6e504aebc1909856 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 db55e88b2871508d19a4d8ec910c802d94357569..78c784c65d4f895ba69d2e62e8f0097558a1ad3e 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 c7c2f6aa21694d6c2d1b07649d686b9ea9ca4c5a..2e8311db9ec29e6e09d234910171b3217d247035 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 d5b320dcfc2797997b7445ecc758eb0586bd6ddc..ff9fa3ae8782700feeab45a651e72ec262e017b9 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 d63aa35050ce5591893592d81d3ed54742e71d69..015995ec14fce90747010c897d52e808fc1f45d4 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 2159c0a001ecdecb7d7ad50202b70dfee6127c4c..712a8851c8abee9afb274a89b6300a88cdcf35c6 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 fc1f2bf6c5ab3d3b48ed8ffe102385a558835fe9..a9618854b3464afa0701718fc123833f54fe68e6 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 6bb56373d336e765987b52bcf3164ff361395795..3c5c3af9ac23238b3d96e0bd49bf7d66ddd9de98 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 1229fd7f07e171a77b63de54c497e6c1e3e951d1..b18579163a337eeebef29111f6054d65897fcad9 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 3ce524d3c55d133b9c0285fabc3a2a8909cd111c..3b6f7c3eeed364ec1f2194923ab8a2d8f17ecd7b 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 ae4b8ec4c378be66edb2e766458c2136e79cc9d9..03b39927d973ec0e4697cd9c6dd2539448e20f83 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 dd5837285459a576a1b414edfda0cd6c629721a4..38f2d4cd33fb8edba7742701759c50a9470c43d0 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 925dae7030dc4198bde2e838f80f6c03e071f7fa..6b335f82b56297dc88eedab225e95627b310b92c 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 d2ba1cca7510f602bc9879bdad215d645074d59e..fad85650e9b44a10b5756710216213bfaf1ba543 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 22fe2090f305d162cbe9f19e607c832367af136f..1bbdfaba468bbfe9cc2f633052931d1db04c979f 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 9669b5f3dad077ff37cee636f10c7ec9907856d9..34838b9891e1826fffccc1157f9434fd7fdfa17d 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 a4dfea94bf707ad79731ae65cd17fac8fe891c71..8d48955126404cbd37d1edcf2604151f92b03ff4 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 7afdb746a9856f0a9467909ae2616349f43e28c0..4af6df5d84ad044ae7c1db54661059b9d90e32a7 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 105d1073ae6624e9a8b850ba53b271e4968af07a..57df4aa01a52b27912fbc5ee9d784b37c522f97a 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 21818eec601c2061179f0eee3d87b4ad93a9810f..71a77cd4347a95f8e2574ba006f8b5af597f668e 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 32a841c420a845fddb066b692dc1072937520da7..669cd941da99c8dc821d2d2e049c5fa96754aba7 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 7a10d4bbc242aade057a650c03d710646477049f..4900de57b641432e2d7115b37284d7c875d94b31 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 e463a0d3c37d3c71fc9d2765bbe353e512a1c57a..1d703e0c1b30f202bb25e666dbbb6f3e4e61bb1a 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 9c8c4a666304d61bceaad6f71753a17878dde996..6d9fcf14efcf5d1069f20ea67b7bf8c252719528 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 fa065a2f36767f75ffd9031c2fe3e0332cc8610b..cde421e029f8fa8532f048b7180a7bcd43da1281 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 e56596365e3cdf822706e5c7d62a90c299634f59..3abe58b72e608edbe5e5f865d2a714f5bc129ef4 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 c6e22669ec9af316b4c2544c9dcdd57f933d0dcc..e399c0f46e1f7e4b3658b73b2bf21b16eef237b8 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 c4e01994e1728649cd325669514b26aa1996d8fb..ab230c70481d07834f7726ca5235abafcf581771 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 151d26722ef3ed3fbe5fe0d6db09a2746c400269..84badeb991e0d2aa89c8f9c05bbe072445e6c2a9 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 59d5c6f4f997573ef535796b33d555e9b199029b..5b300a77d6b44826f41a4586be4f61b0941479c8 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 4b4f9e9ecfcfc5ec940bf0a8128180acdfd58fc6..4a501be56bc09ce4864cb9fc1a13e42e6c294443 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 8cd4acd2d0b0f2523c6403339894275578dd6997..d8f7115e13457f41364062c2cc91e0741929a935 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 3bc3572ceffac9bc67e5363dfd79be40c441ee26..cb5b0061c26cbcbaee78e56b9db22202408593e3 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 0d09d445bc937747de6326c7e36c52cb419455bf..8bfb073837d7ca883925568b3455e0a394d25510 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 2026a08fe32c70d426efc8a7f80a627206b27b86..951109d69376443569ad2f25f5898a80a9054b75 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 50cf0dda66f1b95c1eb1719dbd3f243e9d55eca8..fd9a4cbd8faee892c03ff26dc133fe8686e8979d 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 ecc09b852f129bf8a370fb23a6a3b89b52e041c8..d4b27e242041c50b35e937636101216ecd0b518c 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 d740af70840ccefe57a71962b5346cd4c4b0b50c..ecd94ae66b4bedd761c1f8d395b32259e0ee9630 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 43a90ab04faa48b22f6d7e813021970ef74032ec..4d0bb4c3eb49a37acba6fa40d1e772390641adb1 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 3c6370873b7a1f0f1db16f5cc3d21e50f9dc1fab..21ca21757c39c696436f276074208bde67993916 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 0bfe415807eafc6afc92e88188ac28744c448115..66f76a7395ff6a3dc01139bb1fac93fa54e11191 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 02d206257dfd52f4b091436f4a8634fda27aaf38..0535169b94d510c9f3c0627fa672fbb117df565e 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 2a45838f65baf471ad0362f03ae44ceba22fbae0..42dc320c2f4ee3a8f69aaac5e6c5d18e8d628148 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 95cc0cf965b13e28b4fa4b0cba1aa955d4357fe5..7ce7df158c58c0e02dab1910e67eaf2a58e18ac0 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 4f92d06d8838ec0daa3dcefbf74c66a1b294016f..88e11921211014adbac9e69e5b60dc1b7c3dc9a6 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 b51cb60f88ab4cf887a14a64650df38f2478944d..b3fdf4258bdf3466cc42e78a6e556a0fceef53c7 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 3aff2387241dd2096872d89068e99c40509306e3..f0a6c03061292e52ef74f2e5af69d3e40905250b 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 192399be440832e4579d645b7f340e8aa889fd45..871372f7c7709eb1191fc5bddc73c5ce1300547c 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 2a2b424e25a253f3e274df8ce7366faafab94cee..7906ea6f01eca5925506e32da317a9cc8a110c06 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 4040000cb4385d087e89ef5edec60f7c9d4b1359..f7a37ac8e1500af3ea524e4e552c1a73530a4315 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 06122cef13b1b7c908aa44ec4486a55af650a565..c227aea0a78b6760c86180ce8ca828b9c07cb7bf 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 00a0cbf7da953b4af95c0f84755421310c2f12d2..dbb0c02cdb8ed990116f08769d96ddc3d7561fa2 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 cbe82067813c85ba6ec3fe766562a5ca82e494f0..ad8b6ca84c5dfcb27666f9fbdfcf9d297496298e 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 2c2489830b52402cb5693dd2812763ee7e96cb35..d70569e8d496f694c5e0a4b32870c5a8c4104b46 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 351f051565f6436d7280425cac4e437bf4d69522..90dd8d9cbb09439b6c45442e0d29adeb530cda8a 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 cd2efe96746d3ad43bf73d3a166e35f99c277406..56201c87b7bf15e6aaae11774253ade2de2709ef 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 b459355c7c5e326619a4a81cf1d4435927e43988..759d5eb93010f97b32fa6d5340d31ef08f6e32ab 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 5c1f8b31499a930b72bfc4a92f7b57206cb516a8..68f5c68c138162945715407904d8bfe0174789c9 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 eacf48d6ee8d2548cfed8f2192002c6ace407b94..84db038f35532720fbccbc2d27412dc9e18ff9f2 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 c5cdaa58628fc1ea74f380bb690deb7293b267fb..7d35951bcb9fcc0602fb005742200d0735b50cf3 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 cf4954800e862db0aaa8c56e332cf9c60a4eaba1..f89fb0b0052012d4f3bc9eca2f069b54a57e6b5b 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 ef506999fc4fb750b81c0ad6714e2c53032b86d3..2a5cdcd995f14a709f2f263990c6342555af9960 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 847469d25fd2a2dd080e130c72761f02c7d784d0..97318dc79b3b1601db5cf04b53ce230dd2eef4a1 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 22a8a8a0a3d2881e2e3b4d4ee795d9856c26ed5f..e8e6a4c26f32e7879dec8d94d124fabec37d848e 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 504caba141759227c10b96db17cb3a49587bebd0..389b0dc49856e7eece27c6f45ce8b256e4916f90 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 7c7a608ff2d3990b9df82b8243c2050fd8ec3765..299b6fe4df71f3fb50f56e0183ed9b7b4c3ab3ca 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 458102036be41f7701e26012af898c140b23c866..c57a738457e2ae5551865f09461a5b37a2e5f952 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 759d5ee41632a4d8a1014c5e4e57bfc822a310bb..14fc8d6338109b99ef5afb3c545647b8e5c290d1 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 3e0c01b342e1aec4d750aa66dfafba527c0f4faf..0e94cfb9d7c941e54a0488cbba50ddbf84c961fd 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 19c0606dc463d84bb776abd49df09338ce4c5f14..212b7fa008e1deec09f02bfd1f140db725cb744e 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 54d0f9bd0c30a0a1496ba374033baf5917888754..ab20e37a79b04a0708b13ff378460ff623380265 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 a659da9292fee847ed3dd25c370b662f458a64a7..c8f46fa8132bd8c85c578fd5586a356ebf7c9c98 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 5d2c168e876d9ee28c8c8c683349bdc1c3d6786d..9df0229ab8c3c7756461d68ec4034ba96ba335a1 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 5712b96b97dcbe408757820cbc924bdbac4e062c..e1a77fdec30b07b5120c48702fb29bd9f25e9ab2 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 aecb63c60e41df49c76b4d16b510266b859229f8..83474546581823866fe667bec423b0d8cc6f440d 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 4929bebf40bbb31d93617ae306c347e799534547..55c2eff6fe080f1fe7941a9744b29cc70adc74a9 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 f8067a03d020d329ece9c715c8d2ae527252d1f0..a593e596dfb53a50f2cedebf3b9c5bd1a857d0e8 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 7031687576243fe31de847cd0adda11772534d9c..d65b925cf7b8af585e29e98b42c3863dad3decf7 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 2d329bf974be5c7dc00fbb6006669efe4f6b06fc..e167c07582f85746e7f3b34c8d400673f917a35e 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 d9afe59602767ce76bc58785ea9741c508eb04cc..e21f9b228785cd71e325cac03ec2b4a5a7df7593 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 25059e854257b527eb71263c891b1319b17dfe11..344f1fe635273c590a2076656be24378ef2854cb 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 c712cd7485dd4632429a9e02024348d65d968897..19b5fa65e9a3609c1370c66e3c4853b9c455f4e3 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 ec45bc108b9017f3c3c6e66c778842cd9f16ab47..9dc5ee4b55daeee450a17508cd30966f8cada729 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 49be6e871e7afe5bc030f1931feb8e281caca571..3cc7b9a4899e0652b4cde3c784cb04bc2fb333d7 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 0000000000000000000000000000000000000000..2d30b819d743f484805c303937190f5ad8711f8c --- /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 0000000000000000000000000000000000000000..1027fe6a677f724f2458dd78d2f11ba776ec5858 --- /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 20aaf8b0bcecff513fbecfefdd9aecab3adfa1ab..97afec6687042fb32b2d163ea6a866e088276aa6 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 756da2326a10c748b637c095b7dda336928c63bb..339edbcd09638366883adb879bb356ef4595e282 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 f4db83ea3cf56734a969bbbda27dcd7391a84d3e..32fa51d94a29eb7c134694affa875193d197b2c9 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 5b94fe8a10cbe5e65807d12a006866d5d5bbd702..73ea875397f121eed7880b19d85cb561e9a153bd 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 011b862da02901ef0ea3b589d7548865b61a71d8..e9c61b16026033c32e36e49cb3db0649295b767e 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 c18aca68c8fdd6453940f5aa3ebd4a2fba382819..116f7a366ec470264c50bb8e9f62e592f210eb72 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 f73c14c6e24dbd516f7a29a68363eb4e80a95542..7359422ea9ea7d14b08ce394fd9cd0b4323ebda6 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 944cc5a9c062483a0302ddffbca95da7024f20f2..775fb16dc7bb42d1fd36bbcdb61ce8c3b37e4830 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 a6617312737a4e0bb1d8bacd1d6facd309fa7e99..e4cbc8ddcd30f57f3c109a59dbc5bb602d650d06 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 402889f26749439a2382f0011e17604469558616..5dce74bf786a0ee46f7b7ecf93520bf921aa69f6 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 d45cfe00ecaf7b5a75007a02224d9324699eabc1..3e5fda4fc1459b80b9ce2af641d4887ab254b6a4 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 8f42d0442dde3d2e9a44994a933566e7742a4df9..9d2b100e8b00b6d5f87e5b473bac205e75d47cbf 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 6cdd28d4b3e94d2eca3d0e81d42f57ef508f524f..7b3e73ab173c43e4b176c846308e3a93ee2d39ea 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 0000000000000000000000000000000000000000..6056d9d5d7e46cad2f70af1a80d77ee461d19708 --- /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 7e3256ec605be7de8ffaea28aac1f7f4863ba945..0000000000000000000000000000000000000000 --- 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 20b84d2a0d38f2865931f72958e575f99d4b6017..1f18cc068c2ec6ebe51f9813b5cdeb8b281d1fbf 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 d1ac1d3b11764ca95fb25bb700fd9f593808ed5e..c88b7be872d376bf7f01a3bf1aec0ed0f637915c 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 25e3a8cd7cf68f52d9df4b140a9d6b860a005d0a..bd7aca38418e5aafed74355991a63ae47090f6fe 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 0000000000000000000000000000000000000000..ae523acb2b1ea58cc3fadb4ce69f3fbb8bb34961 --- /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 0000000000000000000000000000000000000000..794bf8ba05c1683455c63a4664c5d9d15071af0f --- /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 0000000000000000000000000000000000000000..7cf3019f55f93623964f90a292d29d4fd5eb67c0 --- /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 0000000000000000000000000000000000000000..69c37a175008c041cb25b6bba5ba0e4a9fed15bf --- /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 0000000000000000000000000000000000000000..e579c6338f9de5cb7f36db55612cabd7909c6fdb --- /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 0000000000000000000000000000000000000000..6c0bbaa90a8c6880fc408f8a0c265331d33dc8a9 --- /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 0000000000000000000000000000000000000000..a8bb7640d2fd5483365d26d6c019e7a303897c0f --- /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 0000000000000000000000000000000000000000..be6b236c56fa3a8a12bc130e6443869d727935ea --- /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 0000000000000000000000000000000000000000..507a71e10c9b6d7973dd82892781601bae7ae123 --- /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 0000000000000000000000000000000000000000..6704a8fda7cd30ed1155cc619fb1361fe0293a5f --- /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 2b3be1e64132056c09adb874907f9ba70b76b363..dff24ee79601d2b11417db25857d6c90acc1c94d 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 1df16ea49769537089685cb31e7c27290109735a..f0e8fd92ca87a73cee2ba6415e4528444bd70190 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 8646eaf865f8083b50845762c656e4df124042be..057229483e97907a191d8c21babc53f0b55004d1 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 0000000000000000000000000000000000000000..83a7afbf272d60dcf4345ea138dbe87565894f9d --- /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 0000000000000000000000000000000000000000..f7ec11b3ecf2a018f1744a44fa0a8761e8954c4c --- /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 0000000000000000000000000000000000000000..5d00fc9f61571499088308492c4972ca1b9b6aa4 --- /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 0000000000000000000000000000000000000000..5a95ae3ad2de567a6bdaabe74aac33cd363d77ee --- /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 0000000000000000000000000000000000000000..59c8f056fbc5862b8e4cdb44509dd728f64b52ad --- /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 bb8695e6781370dce9a5ae4a015f3a2c549d7bac..189674aefb40f66734d01f01538b245e57b160b4 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 388ee178778ac3d6c17d038e3e96885de3c00b4e..f9ca81933e3ad69c1b78ce5b65bda6a978221907 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 f6b3825b56b759bd1b38193490281fc74091f87f..801b6f7c3fe8dc0863378b7ca179e550c548f0ff 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 c24c469b2f204556512115af96ad22b966ffe461..8ff7e4a004fdfc4b64639e3cefbf884c927eb85d 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 289eebe861e49f3afb1472b801e217dda2f80023..90ee9342fa197aa0cdffa5a07d3f5f5b8ae7689c 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 fcead04da5b905f143b2d0f435c100fd71384a7e..c7e5c1bb449386842278ebbb23c7bf4be19225ce 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 6c22873bf1ddc1d8999f22fab26e1d7dc74482df..c999ea97edd43b33150da1729b4f285a3226131b 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 db24c0be43ba7e08521d63b1dbde98ab76460085..e6143665742d71f40f724e35e77432178a346b14 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 6f0b0683ef5aaca65a2b816676cfc20b312e6a08..0aba2eb911abb6592e547ddb41169fa80c72205e 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 e013aa84452c82a8b51ea065d32438ce3eaae4df..a5f5f4a1c46d0cf8680490ce81136c1307185517 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 b7e292cff7b463aee933332f3cba7ead831b46d0..b3e6b4d77123884f76ce825a7a3785e77f4b445c 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 bee2c4f7ea19a1f956df3fb05bc47c0db7d42994..f0c1eeb397b76f9ce726aaa95db977f7750099bf 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 a7e225e34134ae4f7310b4bb55e4863fe48a58cb..3b0955f3ef9038b369258081f86e81f7a2a11366 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 7386d753e94e5b51d399f9a3ed3dcc9bec8ec795..1acf5a387c02e73e9e925696669700e79610e4ff 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 0a867f1267c4a94af4c9337b7a64188a4ffd4ec9..fd68a6dd962f8d920e0712e252301790140133c6 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 e512825da046c3233262a7fcede5c605294af409..2fc1d36b0cb07431142e09eb19a2d35337bcd5b7 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 369d4905a40a0ea1406f0b1a78c9360f413ae908..e09d19848e75317042288e36f3bf77620a493b8f 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 31e852a9e2e19855e0ee2c90587cd5fe9f2aba5d..ebf044abffd492c943a4de4059d563cee1eb3d25 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 0416e49767b06eb4b492734aa99f284e11dc2c3c..d48a6be9382043bd2debb479d22d392244cb6a4b 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 43ec69a950b12b4585a8164e15369ee1cbadf812..09f9b412342db1298bbb86c7fa2ccb1886888b18 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 a2537539ede5b0d81f1703b1b93991f3f136f9be..7cc35aae0aa2cb1005d80a49f1cd400bad3422aa 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 7a7433ac4bbd0c1ec6da1cccdaf4b8f954db3ab2..93ada9caa4e7a44ac936dfaceff7f66fd52f3cbe 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 6086745f064957e965825edd1175d46b85181c21..45f77b2b6bd152915251a607e1448797c9d3efa6 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 8df1842e925abc585ce7a9c33ae3f62f2fb25500..8f8065bfdbd414050cc5ee63e47a99e87138e839 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 95295cf94b1ed364169312a64d3724ea0ebc26b9..1f7943695e533c408a3d332d91c467c24f36eaa4 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 d017a4d3bb34f5e038fb5047f938dd223a31ae00..0cf6247c809ec9de3e965195386f604439a4ee6a 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 0afde6bf4c043dc276d23e2a8a9959965153b79e..db301ba175e5dbc0cf9f4969f745c5a996870493 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 c6f33f807e95170a945edf51dd9a01e7555aa726..0f98e09228d798946b9dd4fbabcaa2dc03600f30 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 e4692eee43dda768cce9d8ec463a4259ffc0dc97..06d2dd6275a8f5bb9da73a3d823db34fc6cc15ab 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 f3e64022ebf2d371b09097b69bf7625cf2556698..0786dc85fd8e493a1d427bcffa5b3c333c2ad59e 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 6aec7b8f2e73a5c7ec4b76fd206fa78476dacf67..96f53778d85d644322891eeddd72bb4760f56656 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 4ab5ad6efd9767efd942e9278f4b84b5624726dd..b006f8a8860c82e3b99649ff2f0b50a1099fedee 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 6878070ceaa97058f9bf44a4b0e51191a196ca6f..57e5ac6097b1dde8c9a1df3ecae21dccc57df260 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 b3601b4b2256a75b7a0213f074517a26c7f5d8ea..db9f8cd2164515eb1d0ccd5597ee4f37d1b02cb9 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 6bea154a08ddda8c49504cc96077a46aff3270e6..2a1f1ffcdf1d50f810f147f9afe3e047814fdf92 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 461aa2aea12b45616e556073c21b148a5e60a2a5..8388bf93b35b7a97cb3912140dcf1f49dae90f3b 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 953e9d264ad0609bd1c52d4142cd4994e15ba9d8..0580589b7e2cae860b877f05f2567af827a0b743 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 2988aab0594eacf4e78d1f13a5c060ffb815e962..50cc5c63ac3dc63cd20e3f4240820dd6341eceb6 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 e284895699f1ffc68b4efb4e822444cf269d8ba3..1d2c2ec754ae98a698338659bfed954eb1596830 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 ad15b12899aa6d89d0699582bc8bd30d4318a556..89f9bfe67c8e0a92424df57c891b8230b1a518da 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 bc8d2e6aa04000edb99ea5b2cdce9f8c38371f53..062f7c44391929406c33f6337ad39dd05f34926b 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 22c6209ae66fac5cdbdd130a3da2fa2966bacfdb..55bb5b5c9752d0657ea55a79d82f9fb65e29c4fc 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 c23669f35e58749d9076b0e01d4cab358250b20c..c35a04011d388fc20b1c04cbd0128c5eb0971ffd 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 f7ad6623f095a4a342db564e25f342447956627d..aca22db6a5fc975af5eda85782e3aa0ab0954e29 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 b38d6ff76bc718868826b0330cdac965d3fc5064..a91af849bd22af11b5fe803a2661ae6669f25faa 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 cca2ebf87948d16958ceedc9f7d42df9d5747670..a1e2ffdcd7f6a3f5c127a3735fb16ef628aa03c4 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 c85a42a262159e49464fbb170acb953392b5a026..d88d08b7ecacfa3b52b5eb40089e70d3d1152e06 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 a3f292ee22c1094f054708cf62ec0e9cab8e16ce..55e3419764a8185b7ba749957b3c23f9b6d5876f 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 b89394d9bd8c163298fb136efde6af1a0280ea1d..5152937aa2cfe9c6642e64d564378d90cc3e4a83 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 57679a677a6c3e65fb0c54141e639d5bb089e627..931344009d1f5c5e8c0e97fc896b53a17fda8942 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 efab0b46afbb2f17f6aa9f351b19842328b09f85..f2711d8a311c951feb10ba7902721dcd119c6874 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 09b66485b466ff5e7340b40e9dc8e14688d57f7a..2d6549f6b1bf23ce26fadcce6bd9ec6966f86d64 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 9db7a3780c5d90cd9ed7c034c9bebcc196b61876..ee9b60f03bb63cf7d9ad6df90a5da4aaf99bd5af 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 dbcf774f8d5e34be896eadff763d839b773d6881..d2b337957eb760c7af54e7c3beb78c43b8ab4f89 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 b67be009436cd49cb20d317d78b79df1181c0ad8..945ffc6bc8d0a6d33875d6dd4c6dcf07ff54e038 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 e0da13deb2b19fb2e31364cb5525e60a974149bf..27ab10ef9077b54426f6ab2d1be1aa85d0f564ce 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 c30e35215f898b1a3144b064b7aea15076ac8bd0..5a9a6aabaf5bb5643621a68699124db57a2f2047 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 5e6894ce6f05ddef8c0cda246a93dda995648c5e..2297bb83bea8155dfce8ecf188900d66285ef860 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 0b7955143138292f9c68f11fa5e8b33ca399b57a..8bdd45c3d060f067afe7605a7e7c095123eba1c9 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 73cb96fc81c938b12a5e0cd9209996117fb407a3..55ae12d89e488982bb9b13e15bafc5778d9ba68f 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 84d48eb9fe79e863349f896d07d43ae97ee0b4b3..e0f4fe2c12f3ce0036250be6f3fb8557486543cb 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 0835a2c93590608829f947608d81f1422562fd53..23de1ae16097e1ff5bd9b0f8e43c0dbc0d3ea7c4 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 1086cf695d23bac72127cafdf9af189b0044bf5e..ded858226e9daf60a664d61e2b7d903150a0525e 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 27f87a4b316d04381822ff41a4cdd257ec129be1..05ec82cd481e4e4e9de4fee0a03c211e1c7c644c 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 9d06c29d11c8e55e02c30afdc9c0df84ffd75093..e8617fe17739100cbfac81f5bc9ebb98dda5cacb 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 d2f7297a5d014020bceda4b51f5fc918b7fb0210..cfc628cae30df796a324435a11025160a765ad12 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 c80ff0b6f91cda6a272b5713340b5a11c91c7cc0..6f5a5d9674cc8c8e7b98cc7f265e6f1b4a815f1f 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 3254abf8003be88a416c74cc374a14887a23134f..874615ed51c4f153d2e5317602465a35211561ea 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 f5af2b619edc91b05fda9ac2d8a0dcacaef309f7..3c01d607e02bd13734676ab08b480d0476252c16 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 f83c03b860ad60f119bc276be70e7e8c35c202fd..547ab0d50b0c522c997378521065566128debed2 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 e2cca5157d02d6bd0c4ee36cc5a3ea87a8458180..16db5792943f6058bf9b4542885a3f08d353383d 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 ee96a99b51be32669d0d0309d3d19822670fe18b..b04775e1ab77c05d12c221d608315746becace1e 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 c060ff33dcf6c311e04f1c198c6dd32945c5b21b..89e89ca3022d3fdd9cee25eb0df80b9a1f473e79 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 6197dff6ca04b20c9617dd42d1e4075c0e11b247..fa51ef4710f99fad71722fd4e7f975fe48a6df38 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 707f7cac60a6cb4af01bd7bd1bec175d46ebf986..cb13b1bef5c23d51afdc2ae5d21da08bb96cdb12 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 ff259ae23580cdec56a6b55a7311f3f47dcb2bf5..a8bd4ed6515f4f889b5532a7e79872723de62d10 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 d238123f810caa7ccfe4c33aba893f7ed91252c6..ed59fb8b8f2d673b5419aa8963f13810f1227155 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 851ff03cbb498159611e7c9123e8e46328ce0768..c65e6e34e2c22f1e80b43069dee345af61875caf 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 60ce664684a00c568e42cff3a505fad1123ed37f..f7617fa5a51bcf9c17b1ed562d895cacf34ac26f 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 c102e7ac6268a18ac4e91ebae18223d3677c251d..e546c84a90c512b849b53accfe03f6a35d575cf5 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 0099d764f03d6e622643d80f2a05de98ed7f87fc..795d8d4c34451c21dca713bfeaf2fbeb4a269c35 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 75cdb3951ca4742cd3c57be49bd32f7a68876098..3cc2fec740e852d2fb200cb8adbba59c2c374973 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 8e81b10f7b31b7fa2e37cff8e6aa4b2893dedcf2..d1784ad7c14b7ad0174565993ba8da976da1b7a5 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 73fcd4f1e44aad88f0b59ac99a13e7aefabecb39..f6b78208fd24c14878269fe89c126e95dc4c4ec6 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 779b3fdb9a13acccddcf664f36a61fcce6465324..2b0bd3f230d66129c1f9bbb47121b1193ba4abbe 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 a8ea95f7aee0644e62886bde1ab3d2a90d3f9037..8fc59e07852a9394bbc84d600b5a50ed2342d53e 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 3dbeb509abf8bd6f7b0e8999f138f934b43c274a..214b88d887ca48ed5488bc41b6df5bb755d17a0c 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 0000000000000000000000000000000000000000..270e10a058bd1d0058161950f0d940361b80920b --- /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 0000000000000000000000000000000000000000..09dc1a4b53118fc1a61be2d5bd0e7dd37b7afd35 --- /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 3245afed086a6a8c40401aedb4c6c2fd6dfd3fd9..1e96ec1d72ea3683ce6988d6d594c1e7c1434068 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 fabd7d15577651c7602dcfbebf9fc989727a247a..90bd428f4b91663b0191e3c3145dcedb43dd6508 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 07ed427b3ab3c84fa2272d502f0278539e389bc1..82c4f6905f1173dbf82a65b46df4ec26bd14d84f 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 27fa421baceee11649f0b8e84b53bab0936c9c47..0b561b98d2808479f5efae96998d70f1fd74d5bf 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 e93498b5075629fab26a56c5d3324f612f5c1936..48d29cf207e26a07c4e0281cc9db52c325236dbb 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 0000000000000000000000000000000000000000..26421529433f92607535045fa4f72c8b8343c398 --- /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 0000000000000000000000000000000000000000..681904264f690702ba60c0009adc13c9e27db975 --- /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 0000000000000000000000000000000000000000..e837b3971a9270c502c0d3c318634a9e8b046cc1 --- /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 0000000000000000000000000000000000000000..f08f860d4f7e6a4f601f0450dc197baba7165595 --- /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 0000000000000000000000000000000000000000..2c8aced175eb9de1a56f7b608184a344d9f02d44 --- /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 0000000000000000000000000000000000000000..22700b1b1907d954aa6ba05d7939aa3de776bbd4 --- /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 4d4e64e36142f08095d053513ff2df31509c849a..66c44bd971b2fbd886ba1a7e8d3e253c925566c8 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 b5de96e018b04af159430ca622258933feb73082..cf82e120dcdaa039fee3a235109959576cd5ebcc 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 3d1ccb8c2c1a1c980af16d759ebb5e3e018f1cc0..71d1aa3a02c1ccec513bc574ae17666e164b077a 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 0000000000000000000000000000000000000000..0c99c7ff85a1279d52cedd17346d05546622e87c --- /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 e03e3ce8f56731e74b015739589307ec14307ef8..c933a2519ef64cdc768c0e42355094c2f3003241 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 4ca7899fec6ec5316a08890f90aeffedb8d82f0d..a7839522934982fff99d940294b982d4772b8a2e 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]; + protected function getColumnType(Table $table, $columnName) { + $tableName = $table->getName(); + if (isset($this->columnTypes[$tableName][$columnName])) { + return $this->columnTypes[$tableName][$columnName]; } - $prefix = $this->config->getSystemValue('dbtableprefix', 'oc_'); - $this->columnTypes[$table][$column] = false; + $type = $table->getColumn($columnName)->getType()->getName(); - 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; - } + 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[$table][$column]; + 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 bbe8d29958e812582d85238918c1c8b01846906f..0000000000000000000000000000000000000000 --- 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 e6c38d06e5d1e9107edf8deb1f9a7200f5e735f9..4db82d6eff40ee088adc7bbc164465d6341780fc 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 0000000000000000000000000000000000000000..54a4d95738e63dea7e074408734cac2b97ac0e7d --- /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 fa6262d24adf0dabe5fb9559536c1eb8fe316421..342614236d7769c066f1f1e0c87d79671eb090b9 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 5a3d6309149863c7de5f4af9d199f69fd9d8f43f..cb0ece9fa454744e88f277ad15ee74f6017fb22e 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 bbb990f1a4f0d5b7b1ff330507ae264ca1ad0f99..76eaf11085d6544c9fa7392112f458fc2be2e9cf 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 1c75b1f3c8be37e9d7a6e69ce2ddd22e2f5c1f23..12431571256c938a8b8dbf945e2c2fc71213ac4e 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 0d5988a24958fa270fb6c4195d2464342b6d131c..59a4e0b2534a966a82cd5e2cd7791b1746f2f0cc 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 35eac3a3d8bc7ad1ed2647315456965bc26b545d..ff939f71a4f2d9e7ec3faf8a06b257ca2ac61597 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 e35c53d40495d40b261e07b2d6b668859d1819c4..a4e0d7219ec74f3a56be2d8468b4a2c718c76b97 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 0000000000000000000000000000000000000000..81743bd203fd74609cebb4c0fa2e1fc1e6824e1f --- /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 d23e3b0d56d43696d188da99f97fc9f7a03cccca..818291d3eff4f0f5450f76f8592b22fe6acba1f2 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 c4d4205103af3cffea3d4b2c7bdbd6f5638f38d2..e744d3acb40040015e0e30f1554afeb5250fdf5a 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 ae6df353f1e3061b0d080bda9f2a8117b01110dd..e694d807ba58d3bf38a93109d0c304f386bc92c4 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 13a164e13f2eab38255b5f77732c18ed28a0aec2..3ea90d322bbd05fd7657989789395aa95c05a476 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 35fc300eafeff62c9209dea89fb113f28e759944..f2acca38e1e52987621c1b79b5749abc0289697b 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 0000000000000000000000000000000000000000..34b2fda2426760c9b9a04e6c36bf042b8ecc4b3d --- /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 0000000000000000000000000000000000000000..102b9cf6b5ba2cd47f768e2b506bdadf1caf6099 --- /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 56ff262e91f0e7091ecfb0560ac1bda9d0b5fcee..0000000000000000000000000000000000000000 --- 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 4e6206db09c178d33f1e8cf42293966bada73615..56ff262e91f0e7091ecfb0560ac1bda9d0b5fcee 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 d8e615f6d6d88a7f89389d4800942908cd06dbdb..176cabf04b1b4f136307b31e029019b6f344dc71 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 5d518c78bcbc0ca768cee14248e7bca178c63fc0..fc9de2170f98d595e351a17198b2e36db0776f1d 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 2aa7bf1bc558df82fe79c3e3a31cc55931380402..c02ef5c7920369a04a64e576397c930804d96351 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 507abd7e774c639be62477672037f84f319b4151..35279f3501edfd5a28608f7d518a69885c5e7594 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 bd1abee203dd4261ada33e30c3742a322ee11935..7040a5cf7482b60e14923799e977f7d8487740ab 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 6d88bd21ff9a581de721cf4ac83b33f9b730eb26..ff7af7846f1408b47d8618c6344ec8ddc64f2d78 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 544969405ca7e32f095e0030effbb9b9970111c6..0ba52b2bafbfaec814de4bdf69a199042049c1de 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 f34fa4dfaaf2b742cf5c972185e02cf93d75fb48..bdfca055c646456953e3f8d26540ef12de73d89a 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 67ad387b9744ec28b72a09c200c2f30a73098068..1c9e65c59e43025c659a5c1e97e1813903d684f2 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 0471af680fdb8413ca75d4caae8602ac740d1f60..5e170a8e010770cd08c27812881e42532641f927 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 982f82d3b6da2eebc1a04904b7b38bb2e5685db5..1556777704b93649149300ffc395d5da0a7a772d 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 8bc080b1b3648e9954b8f6a74055a4257c37ecd9..7618554e209d4cb1b4abdbffe370b30871c1d3be 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 628a3cbe578cbcc83d5e7e9ca501764b325dab2f..5f0a2a61e175e3c9912ad9c7c27c48fc3959be1e 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 995618d17e2f3594f8d125b1b81e83da0a9ab6d1..402d7b470ae77df3aab421ad5d517c84467870d9 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 0000000000000000000000000000000000000000..1c13e2e0b87def332a0db8773b2f24fcfdb7e722 --- /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 0000000000000000000000000000000000000000..d01ba4b2e2290c95226081268ac8691a144b8010 --- /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 7e23a0887e55ae3b8f873300b1debf31f2bdb4c8..f1c3af371ce09f0313d3556a5d8e55fd00cdee9b 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 9a56aa3a1f60464b83584a11f0b9bc89b9b6c839..a40a9fa831bb92b12e0e248be9f72ab5a1357a57 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 21e40359b2f9f35570aa60fa469069cac1fed56c..58258a8dac2f85c7b59b520469cdb77fe276f4d4 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 77f036d1ee50b9adb0666894fa7f182f5c1e34a5..7ff847593fc73ccc32cc9bf41eead70c11678b0b 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 0c348180d697b4edc9539c0810841d2ae258df67..6a347d4ce37d14dfa98a4b45209076820ae22704 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 ec0daa559d783d039efa043ba876adbc4fbe4fba..3e9b393e5e44307b67226f67ac0d6b9652bfa420 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 48c411811d0dcbe22b4469366cd60336e1832ea3..6d6899d58c1ba8e1ba884ac5bad4ab0e605d7903 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 6de568a5bb162a7a86716288cf032e4c961f38d5..9f73b5d37ca96cb528dc8a7d8c8c0d2561d36099 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 b8228adc73bb0093eb29d820969527dced906661..5da0e92c3864f39acd6c5b08448c60c7fbb6777a 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 11121e9d580eb4829cd6141c8d658b2c2080810d..c4a5b6eb6030b65421c507699ed28688b645cc5f 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 bfb1138c5e3b2757cc991ac8cd5aafa14799d1fc..02bdbedc6e08559c741d2e903d85b081b3148517 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 c167dad2f9fa30ac3d5bf9b839b195d88419a741..a572c83d74943f77a55b413304eed9573cab4ca8 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 7d07c72c873a4e6be22c3c6d89c2de38eb0de5e0..e053fad764a5fabd981aa2970a7b57ce84cebe4f 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 cc45cbeaf5dd743cd8e90f85f7ff0134c021aa56..0f7318e937ae9c1e0552fdf086d47ec465c92cb3 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 d97da1098427de13595d2f735b7813a2aaf05121..9a4f9c3719891b650956cbce016aa326b123ca9a 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 337032ab66479d82c6a7d05c22193b41b1654f95..8dfd86731cec3a420cfc1df2f9961bcfd95c4850 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 5bfabba2e014ef28c133c4df295623105178f76b..2df64663d6fc1aaaaf9112e3a30c2aa16c63daa7 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 2c7ffc420fd66894ea7f2416f3c55a839b589872..9f87c1060a245cd403fc4a7949f73d260a8ee452 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 ae1f84e3edd16a9f5b2bcfc10dc791fea1c3fac6..806f011b47338dc78dc0a77a7c58292150a995c0 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 13fcccab92038de10fceb4577a6a724b3a9ae31f..dee5d90f45deec8e0871630856a151f620a25de1 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 7a09bd8bdbda627fbb9be96cdc0108a02730e89c..ac5dd783f574e6ac29a1395048a7dc01cc808bde 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 bd5275d29113945e23e9b5c5bf4eae6fc3af9c74..a94a24ce006ae6e704dd6e8119b3eb67ad38c196 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 008e22b54bc19e2e6fed009f51c59ce4afa36240..0bd0b7a242d32d2d49b63ee6806f25ba8c6a4ffe 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 e40233aa06ffde5a2e598a27f8e46826559d7f7d..6727d60ce23f54e43e6e7822afdfb365cd1385e0 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 4af618c62b9a21419bbdb2ff5f41a623b368698b..db003503e05df9d021ad42a530f487cb88f70759 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 6e65ac418fc0952b6d3f9ea86e88958886995fa4..b842301074aecef47d4bb66f02ba4589bdea4dac 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 6a34a25dc78b8563dd07b136f333d3c5788878fe..38d6f312be79eb5ba86feb87da912c946a68c766 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 8490d43458bb76a02d19b198d891059a5e0f0566..30e95a12a182ea445a9c1b7e3b145dad88722348 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 525dcaf4b8ef992c002a8872490aaedec303df0a..650fd184accabb94d34918388d325262e670beae 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 6ee6bde4a22f9c7be1b703641f317e7678deb417..8ad0399e6b10d78c5e18f71a1f993fba47b121b8 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 bd4fbae9ebd0b7e2149b7479302517f2064d6929..66667c5a3d09f9f55a11c645152fa24eb4608927 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 cff0f78bd8c4cc64deb8788f0141d3af6c31f272..33956b8904d3b7249954fb39ac7ca2ac26c80561 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 5c1c692a4307278e2d395b674092bc374e6aa9d7..df848e72134e73818493280be21210a9f20593b4 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 c9738329caf08fd00c6abaa2e9be5b599d14aef8..28b998e45db5eff08465d8a9843d70eef6f1bbcf 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 b55c5d349fab7707dc2827d5a32687e022bd230c..2d613d49f0983de56f5c40a52e5316401fcc70f7 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 889a51bda264f1d0af57322412509b72fd149d3d..15a02daec37bf3024606c6eb9351a0a891b3e978 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 1abbed103c682154c1a1bd58e673d25899c8ae7b..aa660a6a98144d2037679ef8066aef427dfaf446 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 a3aaada740b21ded18c490ba14c59e9201735e01..715c34d8279779e898b2a22e480309ec260fad62 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 47f7df11555a68c61b2bd1de58c61e0f578bc110..d685b9615eecf81ac9cef038baed0ceab2082dec 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 502ed939f789ab30153973c819519bcf6624b5f2..5638c44a97e94406955a454f210bed72fdb77b69 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 8cbcee2ada20fc00678c3ff998dcb026ee7acd9e..932eedee7eab30b119dbc0cb382a0af0e9bb66ca 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 9e24f4eeea3e90a7f22d0fd1d177c35c91f816f2..ef1176d789b5f89eb212b01ef3ce958d3cf51d76 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 0a71f5f8bf1e9d84141485316416a0cf68122c00..f0d72cd3937263e41a1fee71cc481fc8e3e9fc24 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 6c7b3085502cfc6bfc2fadbd8814d1cec9eddbb8..3039b4979d65dc8f88986079e75fc343c0721e3d 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 8daa0140b19aec512f476b78b9d2ab016b90d828..e2c2abd773adc54796c0b8663565ee8e1ee4a77b 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 59159d1039689d9eea84798608b3fda23a53893a..9957d7f8089fc87921618a78096ef9b375d8c66e 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 cb1d91e6d6b4610422c6d164c2eeaa36a7eb19a9..fb74583dbe89d97fbe08825272a3fbdca704e765 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 8cd429ba9c12801080970ae3bfd4ace78678ab0b..bd3a35cdef160835af93a9ca127321630fd479c4 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 89edf9ddab9a7368b3cdda908b23731c26609978..70f61ce0c8da6a7259fd170e11a9bfd00c180a38 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 d1f96e17731b09775aff0c98762185484450ee26..f1cbdb72f709eeea9e4c34633ffcea9f07628b95 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 66ca7aab6b42e7b63f4a4bed1687c26bfadb4e32..a56411b6bf418baa40f9e36b015aa39796a086a1 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 1a1a4d1b7eac2bbdb9787ba617202d8e9e28d97e..21602cf109f369ff3ce44ab5db87d78e71af0d8e 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 ec86a04be477514aabc052977217464ea8d1a086..9e1a5ec5766c62d65af3fe8b6dbce5b4fbb66129 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 06f17fbd8ff4400bf355620bac12e11e873aebe7..5471aa887ab3a4f277ef24ea20a4bd140dce245a 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 9ccea90667ab480be9e1f0d66006802744d8c2e2..88d88563f635a1fda852a93532b371b55d901769 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 48bb43d4704bd16982b4a191a91746d5d013575f..55e7f71d6c6eab315995d272a7a735b906f84352 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 01a2d5f70127dfd003b4b64dbde6f23e3118266d..f359bbd4052b329dfaf6f4bea53e00c333e6660c 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 fa0ac561c5a0504706559db28871ab347cc1b735..e089c1c710ce075fabd1ac1b396ef0d9618bc795 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 e98cc71c4fa50d4e5f167a9ac586d2083d266b8f..a7e6a2a0738ca4f03fec14543a6021c04e6663f2 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 a7fb31d8f9cb86a06be1a1e31b057f5c47b6d722..4f5c8d84aa483fca6e6e388fdcf2870b86f83663 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 d17439fa17c95bd15abea56b138ebf622dd48526..e5f3ec70d993b5afaea37babb8504a5fa8e1b122 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 039cf8b6c1badb54596ac8cf79afda560b455c97..92348342febba34c219a068a044956f047ab5dfe 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 d0817e42409f19b30b509b83127aa05c1aa629c4..0a7e397b569925e74b4ade5b0d7a2e0d31d3610f 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 b7c9acf31db07c092919a8485bc5fb6816cce334..a7c5a3316149d72a7b6e1d47e473918936c89785 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 72df40ab6bca1ef9ca6546274c388c06383793da..6f48e402653f5891cc7c65dcad6f47c213f4dbc8 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 4ca0cb1c20aa87cf6349663606172017ad5a57cf..3e75292b9819be3b7cb972ee1f83768e8331087c 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 29e0611f950cbff7991858a44b8aa0f3cf90ba9c..b9fc016f63146584d30d5c1bdb9c6173e481add2 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 f5dc6cd86fb7ad0e90e651fee094eec7ed925656..0ff89c129e04b936d0f7e4afb4c1e7ba3271f12a 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 0b1b5a8bff2cc0eea6209fe2bbfc2ccff235aab0..5ad3ad4f179d6531ef9699225e3af15dcf94022b 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 498e75ffb08ecc124ac80de1782d510741b9c1fd..5001fe5193396025c4a03fefb470be53810b5577 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 aee9d512d9ae0c74a715846a25ec89d14ac62a36..0402c802a468dbae557121c34b93ba6add91954f 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 40af580cd2db65cde060556c3b99f556d80cb3f9..de4f91d70d1faf7181a9812d4508d17b3da51318 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 fcde5a9016a59633efcd3a7a99764423e48ca96b..dc33fd82ac4932208bcc3573511fd10fb4352986 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 40c0a83ffcc1b9bbd9f8b1aa0f9faeecdfb71c93..130d64680eb6bf4df8662123bb3a1351517d2ee2 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 bbb6f6941567586171c3b1ed1ddf5cc42073b565..7640a367e74c4a083170ba97a3801f0c86e162f7 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 1f59e677a542fe12ac505cd47b6e00e8554fb0e0..52b0679bb20bf8c6031c36eb4f1e3ab88cc77422 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 01cd4d6a5182cdb1b89a6500977b75b83010663f..3fbdf65cd4fc4a2058feda7a0d4b8921bbdc915f 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 0000000000000000000000000000000000000000..c3885f5e250c01d0ab8e0a21c01d5e15932fef42 --- /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 9dee358327d547f61fa2db18939d10ad303c15ab..ea403ad775820f513b424d9f65495e94488405f2 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 84d87efa3d32f7584d0a7b9b8474ad9f20f329fc..4e998c71f32f44aaafdb94430d990a4efe4d936f 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 47ce28e6e987dc3c345f76b73cf51dc05e108d57..fef8ab7a1e8dbf945602df8351b72320ffcaa50c 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 86d14a2f330fe82511c527d506c622f0bb988259..d0c69c3bf32904346584b6c32096794df37b30f7 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 09e18f74177a2d8504765a32d33a091975e39ea0..956744e5d5e7d37f13ff0bad44c1e2edc6bd9f6e 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 0fc7bb0f0ec04a2a2e9e1d60ad7707e8a91d077e..46f2881b076520584a2fca6f4d8513ec2d4ccc6f 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 b361f453bdb33544e9e96a14d0a45c40704f438b..e349960115dc096b55d63565f6d91c27f7e7f7de 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 e9fcc1fdea5be5fe89b6fa3a8227cebaf3a20627..28ef8b43ffc39c4bdd7b9db40d0d78d3f99d9852 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 c5fefa77fc42f5e9cbd11fe3926b2c44cbaaf81e..dd2029bf0538f5de563c5581a417c5b31ee491ca 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 fadc12d2a24bcab1022a99dddc907f76a4795943..15ec3e1fe5624e572d3b3b475c037459980e6b3c 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 07ccd09f3996f767af0cc2413c59bb5e315515c8..e6f7ad2b9981d26f3391b582054ab075a94723b7 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 0ed0f48acc4599375f3b4c92e9a4e87ed0311e04..8d616a7ef9a636fee9f8924e3bb53c49b08fecf9 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 44bc553a92e0688141f916539fd36e334d4167d5..35bb83b85f423e4aa99b786f0f7b971203613586 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 6fd85295e033f8289ee3ad9c5305b6947e9e2255..a1a7e83ea21c6b8f102bb79b6da0e01e91e89306 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 9f280263d76050bd4870b2095b7c9e841952e019..8ec1d9b8d6ce7155217c45dbae8eae213cd2ed8e 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 cb9328f01b91b5db6fe4ffb3f054c83e047c8889..bf0195b0a1f40ae909f26f4fede181d56ba76e11 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 b0c580290ed4770c4bc5cef6f1960b6b307bb2d0..366fe8aac03e7aeaf4d8f5acdb7343644c720db5 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 e5afc792331b627a6cba4df1e87f30e10724e9bb..2abfd257a4cb23b64b1be9469f16724f5c7737d4 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 22b48a80371df1412ba97907561c95e53e43a5ea..9179cf258e2f96a9abae7a4af16645fa6e7137ff 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 3c1f67da0cb32be327f9a18a6541b097bb50c197..fb3cbee7240c1cca2e10efa7c77c8f79ac4b28a1 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 f1c5b7dca500b9f3fd1fdbda0570da6c25a287b5..078e1eef4d3c83f7107d4b4ba4849855b1af70bb 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 563c077b04a489b058f1c82149d4fbb700fba44d..4f042e403f11d5f04f558819f46c06c9fcfda220 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 92041b5e3244b46831f1213a3febe4d18e2ec611..45f6aee83f6d430ab5fe06884c1a94d5fdd2a824 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 f172260df79e8d6b1516efb8bb39b8ec9ecbfd8b..a32ae4a1827d056096b3e383430fc83c01946575 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 179ce72e8e155863a7980c28969632961901dd86..693d2faecffbebf8e910e7006bd0cb5808153173 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 27ebf1a04f909d1105f181802147fac2bbbd6ed0..26aedb9a8bb6efbdb7ef3c546517ad7c89b98b03 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 e985b7306a42a08e75b97a3fd1a0c527eff1858c..f38445a6d3686dfa752dbcec040623a4943bef9a 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 eac13b452ac0a948dd220501f53a42d4495754b1..3fc827c96807ad6a7e239e3155f482c7ec8656ec 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 705c3a89712aa443e8d84ee0dd9bd96e0117d7f2..8821863ed07f173a9309af8d862073a3ef8142f2 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 0be45d8d3f7d0bc65f4d5b959d85f06416ef1a43..d686d7e63e57d62f3fad828d651e44387a235873 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 7ca7435c028094d6a3fe29f79b94aefb1ae1e103..68b617e4c75b2b7fab5239297da9eccd9ad925cf 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 875d25e9be32784a07993b765df64f08800d4005..2b007b4f044d3915a4b9cb32572cd6597cbb17d5 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 1f3f2433e45cc6bc53211eb60dc9bd120dbc343a..e0a4d8da106ebfc467aec5c7436208b99a4d1f91 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 d597a479f5429d77cbf0b329c85b266f4f9e34a0..be69d174a0d1dbfabb2bb2e51936442320a9b335 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 229c6fc7d66a1715ab83e3883b3ae5a1d44c5472..a81c34c31fab44b121ad166737217337d4e67d14 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 80cedfa1ccd0c508672d3330589c840661ff6d07..9466aaf6c893353d07a0fa36a9c8df2e71055b0b 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 e1b5bf983ce738f058dc6b80ed2f05733c733d08..f5a44ba02eabfbb3926a4006594f3c38186d31d4 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 0ebf23818b477b9027838164d8854a91122d7de6..caf23afba117561432e5c061f7e46c6f759e2672 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 5251b473bdf313f21d928984f32547ff61a590b1..6f37492271ce3aee51b613cce55347a48d40e836 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 5a57532f71ceba60b9c19527bb36b179dc8db371..b842d86f6a7bcaad1b242c35b89322e8afc25f0e 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 f717c798c5a00320184efe7b24f13a6ad5398119..d2aae33bb2173ce0da043ee4146ca5b72fa0e54d 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 70cb2e0ccc423b5037b79f32769f53a3e9cb4e3d..c19427e5f9b77fcfb5c46c9d4ef423f6a9baec10 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 2a44a3a17d52ee9f504a561543cad6f5e9988730..1fd38b5d6b7d8c72e38b3c1ac8e0edfe4af14110 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 389da06f7b786d9b3ffb8c987ba7412662f71abc..240a1f3e0492fb5a8eb07f5328f5cc3dff013646 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 793849914d7dc34910ec84df38689e776ec0694b..e359e86319ce8637c38c17abdc7c7a9ea56303ec 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 4fa2428c968c7e28268abfa46ce1460388127072..d30563341cbe9ba1758af859013a8e462d8dcf3b 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 7312ed61dcc4b0926807ae59cc09a76037f8b155..e89a8d08de765825c31982cd4e99e726879a914e 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 d7cd4b729dbfd40cddf622fcce7f70c185ce3e93..847a714f7dd371407f0d3fd15c633de39e30c732 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 0e22415e6f735a6de31b0534b81946e330886f27..71b453d299adc9d65cb599f4d7b52147f460d1ee 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 69dce21569496b226481d182b82f84b02ea8f7e1..32ab79adab358768146268334248f557a9b7bb81 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 61b47fdd448a8b5b2da638118a360394736c99b9..6d4f5a091c6960a17b70ad664b2572ce86142aa7 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 4f936e8aab5f259d8e149a9d2ef3b1c4e9d55a1a..d18bb88eae6b3e6ef92fe16551ed273e07d2f613 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 4bdaeec3b4935b1346968818861968aebd1fb642..b34769d9b0965ecdac27d513941e7aa984721858 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 c83b6ea3960f83b6fdb5f081a0a31f54bc0bda51..b933048982f9dbbd5a6094ec28e03cc9d1cb8bf0 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 1410db6d730387744cc2db07b453236d6c636cf4..75fcd7f5e44cda7e88572776171155a174a949de 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 c521bcf548b2fde8880ba5245402d223e7bdfcd4..f4778a35fa88ff8b4bbf508f82a077331dee623a 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 ea911b900649430e276849bac22b75d075da2e24..831d8a8b2a05b0dd2d04faf477f638db796d29ef 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 0ae79345e4cdb571f572121e029e9861a18eaf14..a55e6f9e5b53d365681c711f7c185b8645c50cdd 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 b24f72316ba7b18e62195201b0bbde5bd6ce1c85..e438f75d2ce2de083c2c54cce7856c61bcbabf09 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 3184f26848beaa11ce02e215dfb21c74ce9c9fa0..5ffc050360aa1dc05846b19ef7150e3abcce7a92 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 bf07fd0e6e717a7e7807c311fc89a5001ae8dcbe..4347fc99e5468b7dfd6b29763a6bf704381679d4 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 7eb7a138d1ff9db7dbd89ebc1f9a15344d729c55..549896e6c6bd1ccedf00fc870faaca2c25e7980d 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 495b868607c607aedff576274eece86b5d5b7c79..cf4abbce15ee35ba99685b1d218a87e802003a2b 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 c5cad7f2db35a6f14bad842c46795c7a1691df05..1d1391675523073356650dd4939c5c6f8b2d4cdf 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 58b13f52df92f952b53b5faeabe44fdf1ad539e4..485c5c4d40f109343e8a02fc4cd3d6468bdef418 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 0f5c48b12187767912349ecbeafd0a540acb71ed..0000000000000000000000000000000000000000 --- 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 d3f75b4a2058c842f0cb8c185802a17d708e6a81..e9fd6cc7c03734a2df97b3e33054f98a60bc48fb 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 9b445a2bbee94e6c897092ed74da239e8a73f8da..322b254e38e08430242eb5ac32d87cd2bea77242 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 4ad274c893b10a1052f1fb6f0246f9d0e3eb61c7..fb06faf9c23135cf66e57db3b1ace93c32e16cca 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 0b87bcda86e13e2e9df9d72296403bf3987ee3c8..8d091b84b0ec65812075cd0fd1263f2b83353b8a 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 9b44fb1e671aea2127866756333539285a0e4c85..de46d039229c9ecd201e3c7be778abded120ead9 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 891473f51a71195f57156d59b8e07ce4464e1b9b..f4a1204543b94dc60aec46244df2ff91d923b59e 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 cf0b9e7783ef7873836d4663912fe2de59442b4f..29a0e1ed157ca050486e9de680b67374d9be86e5 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 ea0256f64b820d62071e997a2a40e4be72d668ff..5b941d1fcbd8fac1689868a205cd0ad6ef41fa5d 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 78884ca9cdefe3e8673da3644f9a58176dbfea89..924231655418761dfc421369fde6eb5d6be69bfb 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 71aabe15c51665407b4dfe9e947f4cc7b16ca92c..34ffd244eb778e9e715d749e90da02dadc7f7f4f 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 ddb05c759eaa4b43111b93784938e663b98aaadd..787725ab87b427d4813fa6c6bd979e8224f9a206 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 eb4750d8de396a23cef873b3aa92b7fdf29edb61..98ebef8753ae8b74c82e08419a1639ed0c048ed6 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 ee02bc5a1c49e67a70f3ab6251e112f4a1a8bcb5..f495baf1924f11a2859e118a4ec090b3d8aa3100 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 e9bdf5b52044ac46b4bb6130eb7ee5417289e9f7..09195fcc3b70dc9f8c62379b04848b46f3885799 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 58c44b88ba67f57eab94c08cbb8583a199bf6a65..ea7b045c20585f093928c8b7ec9b8ccc0a3c90e6 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 176faf68e2d275ef0b8681366a277d942f06d967..1dd680ea13f12a952bf226935042b7f873731c7d 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 3bc546fa0a23597d62e9b6df47f4d4284defed05..ddba82fec43e59351041ca49aa5b43689971b9bb 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 a8cbdb6ee6cf9c20b464d6a66c7c7899e0d75be5..221d21fb6a49cab6588569f742a94dcf10e31c9d 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 be432c0cf2885f2af2a3535098d692580e5da1a9..60a5de97bbf88bf7922e0a69ef29f200f81813cd 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 67a673cb3097cf7f70d9b53307de3c1c67d8ec4c..1cec2670650f8751c5dd7103faad9d621025ece8 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 3219a812cd58be7d435c8cbe1d1557f5fa69802a..ceb68c9eebfd38e8062247eb4819c483d48816a7 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 fb1f388c599e4311fd2da9390f18ac1e7458b1a0..e92541c0010cd34a608ee3d4ed07f1d8dcacde23 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 fbee95c8879734036cff79ff3f42cd66937c5fd9..29c7cf212b5aff348a0448127c7cd68123bce7f5 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 5cd3c84ce921c4cac56990df6ff44ed9904d7eb5..521a8f75f8e321a0d0e86ebcdd08f21c2151ae77 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 2fbec326a5d72e6bcb357997b5b05d8cd1b863f6..0e0981e07714334a51f2af85e2c65b6ac4cb6290 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 b4ca02d2e840d0e880b81bb34913dac75387e737..d03e4858b61a0440ff49b632da38937be9941f16 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 1bc6b08117fe9bfadbbec83720fd895544a07ecc..3051987917cf8c33e69f7db7e578f605c8d07766 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 18ed9fcdef67c865e7153f3d92aa3524b9e776a6..dbcb94d6d7fc727331cf3b4b7d1756b39fbb3b9a 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 87c0b82682fcb03e4586091f7ec939264ea06db6..d95e70c8b0cebb26b4aa3b20ee7d598a5f4d3d80 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 dc96d856ba60cef946f60b38302c7ebe2fb480e0..93117bf3c7e14c47ff054d69b8397c380ee0238b 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 6f3741f5ae74a0427a21332268bbbb0796fab775..6503e67a8f949ff65bad006ff5af26219e4ebd97 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 728ea78a8a6c37a1ecea73891c590795884c6bbe..e7fbe7336b88459de3ae53d6ebba3e5b4972b941 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 798ea937038f434d31adf5421d82acaa62860aa6..9eee9a505ee79548b9cdc9abc996ee81a9e447b5 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 aedad6a32a75b8ca302c1b81f5c15e5081192524..2b7d0e78c52a8d3c61eed7b84b1e78c74b14d684 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 ab0deba0360984ed1b0c6a709551e00f5eef5d8d..08f9b6bc4afe76510dc0ec62431ff00b99bd29d8 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 e562a2dfd4b7aca5aa14f85dd016e245cf4d0a06..4a6ffdeddfbd5fbaf1ef325d38f87ab97ee594a1 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 3ec1af00e3f4e3462945d7a6adb2ca7f96fbf5ae..b63435ff8382f376399ea3ee92cccc6b06c3d384 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 4dfcbe7f5230bb69310ac253e737c005dbef1742..dc6dad15d3cfc6a791e719eef4a59714e6b4ee86 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 8254174bfc0516e4e57c1dafe92d55a889a1708d..8a9e7e747e0d31fda9e0cd1c6da238e503f2797b 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 9a11e84f8d9c025a8c3eea8b5c02ad2fc7650e68..fb9b27f07655b0f9eafe91b9b2b4a6afc49eb41f 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 f7bb23cd3de2717f5e835fc35f5a1da3bb9ddb69..9e9ec709cf5ff8d8cdd1c7052833f450beac178d 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 6c23a43c3548d8ee24e7d97f49835b311347a0b6..902d22f667963c86bacd64aec60ba6936218ed54 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 c04f426c2cf6e33de82c6586cfd844dd95d6c9b0..8f3c98d4b5ec2b84be4872c2530a316637dfacf0 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 894aee28560ff5a188c2ee9ee2b5441565021c88..f65275bf1daa54ec40e12c4d8747dc4af98748e5 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 463e13da91507065665938adcff420e98f77f219..872c1c120ac6df5648e60615a14887ce70ca1017 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 415701d40247f6054d910302bdc2fb854f2be391..843970d7d53a2e90f7844d50f815f41fd8f996bc 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 53f7b484d04239cc95bde294bc20cec406630d1e..cac4598e6502b5974cd14c0b53b40bc990700363 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 f6d72d9776d7088eee99584210d7d3171c484c11..adfbe71377d706a3eb97e991b35d9afe1da61203 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 6211d8514269d58ba0add808728351f0ad9b12bd..74beb157e186a2381c842d74f3bd27b24c3671e5 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 6775fe99dcd8641677a4750fdf6baecab5a3e768..48b7d037c5898184acec23a02e2eccfd4186f69c 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 0e598a68ee1de82717f3e5400a46b89121b8284e..180dd7c448d1ae565838f1abeee4252ac7d8ef08 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 3571c842b9f157e1b9df78356604a79cff07c7e0..0000000000000000000000000000000000000000 --- 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 fa73f3d6d0da8e8938e1a4db83da7f57f566fd65..e45fe616e4937e99df982d9f2f7645c46853df6d 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 4f7c11d0b64da6e543e672dc140d170f8e881c2f..8c6185cd55605c2b87004197e4516b4098bc77f7 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 65179a941086ec837f9c85b70a8d2ca22ab4dc57..bca16b48c1ae950d23692c49e55db3ae8da3c488 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