diff options
555 files changed, 9809 insertions, 4740 deletions
diff --git a/.gitignore b/.gitignore index 531e372e607..3fb848dbb44 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ !/apps/dav !/apps/files !/apps/files_encryption +!/apps/federation !/apps/encryption !/apps/encryption_dummy !/apps/files_external diff --git a/3rdparty b/3rdparty -Subproject f631b28b350b2e69b8cb47ac51735b8a8266c0f +Subproject d24fd874b6e23c64ad67a3e05f51e1ee5745cf8 diff --git a/apps/dav/lib/caldav/caldavbackend.php b/apps/dav/lib/caldav/caldavbackend.php index 08a2a70c56d..99338650793 100644 --- a/apps/dav/lib/caldav/caldavbackend.php +++ b/apps/dav/lib/caldav/caldavbackend.php @@ -217,7 +217,6 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription * * Read the PropPatch documentation for more info and examples. * - * @param string $path * @param \Sabre\DAV\PropPatch $propPatch * @return void */ @@ -375,7 +374,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription * If the backend supports this, it may allow for some speed-ups. * * @param mixed $calendarId - * @param array $uris + * @param string[] $uris * @return array */ function getMultipleCalendarObjects($calendarId, array $uris) { @@ -422,7 +421,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription * @param mixed $calendarId * @param string $objectUri * @param string $calendarData - * @return string|null + * @return string */ function createCalendarObject($calendarId, $objectUri, $calendarData) { $extraData = $this->getDenormalizedData($calendarData); @@ -464,7 +463,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription * @param mixed $calendarId * @param string $objectUri * @param string $calendarData - * @return string|null + * @return string */ function updateCalendarObject($calendarId, $objectUri, $calendarData) { $extraData = $this->getDenormalizedData($calendarData); diff --git a/apps/dav/lib/carddav/carddavbackend.php b/apps/dav/lib/carddav/carddavbackend.php index 348c166a531..daa31725fa1 100644 --- a/apps/dav/lib/carddav/carddavbackend.php +++ b/apps/dav/lib/carddav/carddavbackend.php @@ -343,7 +343,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { * If the backend supports this, it may allow for some speed-ups. * * @param mixed $addressBookId - * @param array $uris + * @param string[] $uris * @return array */ function getMultipleCards($addressBookId, array $uris) { @@ -390,7 +390,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { * @param mixed $addressBookId * @param string $cardUri * @param string $cardData - * @return string|null + * @return string */ function createCard($addressBookId, $cardUri, $cardData) { $etag = md5($cardData); @@ -435,7 +435,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { * @param mixed $addressBookId * @param string $cardUri * @param string $cardData - * @return string|null + * @return string */ function updateCard($addressBookId, $cardUri, $cardData) { diff --git a/apps/dav/lib/connector/sabre/auth.php b/apps/dav/lib/connector/sabre/auth.php index 0394bfd6772..27f6704ba2c 100644 --- a/apps/dav/lib/connector/sabre/auth.php +++ b/apps/dav/lib/connector/sabre/auth.php @@ -150,7 +150,7 @@ class Auth extends AbstractBasic { /** * @param \Sabre\DAV\Server $server - * @param $realm + * @param string $realm * @return bool */ private function auth(\Sabre\DAV\Server $server, $realm) { @@ -164,6 +164,13 @@ class Auth extends AbstractBasic { return true; } + if ($server->httpRequest->getHeader('X-Requested-With') === 'XMLHttpRequest') { + // do not re-authenticate over ajax, use dummy auth name to prevent browser popup + $server->httpResponse->addHeader('WWW-Authenticate','DummyBasic realm="' . $realm . '"'); + $server->httpResponse->setStatus(401); + throw new \Sabre\DAV\Exception\NotAuthenticated('Cannot authenticate over ajax calls'); + } + return parent::authenticate($server, $realm); } } diff --git a/apps/dav/lib/connector/sabre/fakelockerplugin.php b/apps/dav/lib/connector/sabre/fakelockerplugin.php index 493d3b0ade4..b9d1a30a041 100644 --- a/apps/dav/lib/connector/sabre/fakelockerplugin.php +++ b/apps/dav/lib/connector/sabre/fakelockerplugin.php @@ -59,7 +59,7 @@ class FakeLockerPlugin extends ServerPlugin { * Indicate that we support LOCK and UNLOCK * * @param string $path - * @return array + * @return string[] */ public function getHTTPMethods($path) { return [ @@ -71,7 +71,7 @@ class FakeLockerPlugin extends ServerPlugin { /** * Indicate that we support locking * - * @return array + * @return integer[] */ function getFeatures() { return [2]; diff --git a/apps/dav/lib/connector/sabre/file.php b/apps/dav/lib/connector/sabre/file.php index a0c35fb2baf..ef7b9891dc9 100644 --- a/apps/dav/lib/connector/sabre/file.php +++ b/apps/dav/lib/connector/sabre/file.php @@ -213,6 +213,9 @@ class File extends Node implements IFile { return '"' . $this->info->getEtag() . '"'; } + /** + * @param string $path + */ private function emitPreHooks($exists, $path = null) { if (is_null($path)) { $path = $this->path; @@ -238,6 +241,9 @@ class File extends Node implements IFile { return $run; } + /** + * @param string $path + */ private function emitPostHooks($exists, $path = null) { if (is_null($path)) { $path = $this->path; @@ -260,7 +266,7 @@ class File extends Node implements IFile { /** * Returns the data * - * @return string|resource + * @return resource * @throws Forbidden * @throws ServiceUnavailable */ @@ -314,7 +320,7 @@ class File extends Node implements IFile { * * If null is returned, we'll assume application/octet-stream * - * @return mixed + * @return string */ public function getContentType() { $mimeType = $this->info->getMimetype(); diff --git a/apps/dav/lib/connector/sabre/filesplugin.php b/apps/dav/lib/connector/sabre/filesplugin.php index d68397dcaa3..e85a67a8759 100644 --- a/apps/dav/lib/connector/sabre/filesplugin.php +++ b/apps/dav/lib/connector/sabre/filesplugin.php @@ -116,6 +116,7 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin { $this->server->on('afterBind', array($this, 'sendFileIdHeader')); $this->server->on('afterWriteContent', array($this, 'sendFileIdHeader')); $this->server->on('afterMethod:GET', [$this,'httpGet']); + $this->server->on('afterMethod:GET', array($this, 'handleDownloadToken')); $this->server->on('afterResponse', function($request, ResponseInterface $response) { $body = $response->getBody(); if (is_resource($body)) { @@ -149,6 +150,32 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin { } /** + * This sets a cookie to be able to recognize the start of the download + * the content must not be longer than 32 characters and must only contain + * alphanumeric characters + * + * @param RequestInterface $request + * @param ResponseInterface $response + */ + function handleDownloadToken(RequestInterface $request, ResponseInterface $response) { + $queryParams = $request->getQueryParameters(); + + /** + * this sets a cookie to be able to recognize the start of the download + * the content must not be longer than 32 characters and must only contain + * alphanumeric characters + */ + if (isset($queryParams['downloadStartSecret'])) { + $token = $queryParams['downloadStartSecret']; + if (!isset($token[32]) + && preg_match('!^[a-zA-Z0-9]+$!', $token) === 1) { + // FIXME: use $response->setHeader() instead + setcookie('ocDownloadStarted', $token, time() + 20, '/'); + } + } + } + + /** * Plugin that adds a 'Content-Disposition: attachment' header to all files * delivered by SabreDAV. * @param RequestInterface $request diff --git a/apps/dav/lib/connector/sabre/lockplugin.php b/apps/dav/lib/connector/sabre/lockplugin.php index 8032d2b3fbf..d770b141eb9 100644 --- a/apps/dav/lib/connector/sabre/lockplugin.php +++ b/apps/dav/lib/connector/sabre/lockplugin.php @@ -27,7 +27,6 @@ use OCP\Lock\ILockingProvider; use OCP\Lock\LockedException; use Sabre\DAV\Exception\NotFound; use Sabre\DAV\ServerPlugin; -use Sabre\DAV\Tree; use Sabre\HTTP\RequestInterface; class LockPlugin extends ServerPlugin { diff --git a/apps/dav/lib/connector/sabre/node.php b/apps/dav/lib/connector/sabre/node.php index daf82ba6f0d..c4e0614077f 100644 --- a/apps/dav/lib/connector/sabre/node.php +++ b/apps/dav/lib/connector/sabre/node.php @@ -178,7 +178,7 @@ abstract class Node implements \Sabre\DAV\INode { /** * Returns the size of the node, in bytes * - * @return int|float + * @return integer */ public function getSize() { return $this->info->getSize(); @@ -207,14 +207,14 @@ abstract class Node implements \Sabre\DAV\INode { } /** - * @return string + * @return integer */ public function getInternalFileId() { return $this->info->getId(); } /** - * @return string|null + * @return string */ public function getDavPermissions() { $p = ''; diff --git a/apps/dav/lib/connector/sabre/principal.php b/apps/dav/lib/connector/sabre/principal.php index 35215e1f63c..7fb14c031f9 100644 --- a/apps/dav/lib/connector/sabre/principal.php +++ b/apps/dav/lib/connector/sabre/principal.php @@ -168,7 +168,7 @@ class Principal implements \Sabre\DAVACL\PrincipalBackend\BackendInterface { * The principals should be passed as a list of uri's. * * @param string $principal - * @param array $members + * @param string[] $members * @throws \Sabre\DAV\Exception */ public function setGroupMemberSet($principal, array $members) { diff --git a/apps/dav/tests/unit/connector/sabre/auth.php b/apps/dav/tests/unit/connector/sabre/auth.php index d18747d732a..4c060ff04bb 100644 --- a/apps/dav/tests/unit/connector/sabre/auth.php +++ b/apps/dav/tests/unit/connector/sabre/auth.php @@ -295,16 +295,43 @@ class Auth extends TestCase { $this->auth->authenticate($server, 'TestRealm'); } - public function testAuthenticateValidCredentials() { + /** + * @expectedException \Sabre\DAV\Exception\NotAuthenticated + * @expectedExceptionMessage Cannot authenticate over ajax calls + */ + public function testAuthenticateNoBasicAuthenticateHeadersProvidedWithAjax() { $server = $this->getMockBuilder('\Sabre\DAV\Server') ->disableOriginalConstructor() ->getMock(); $server->httpRequest = $this->getMockBuilder('\Sabre\HTTP\RequestInterface') ->disableOriginalConstructor() ->getMock(); + $server->httpResponse = $this->getMockBuilder('\Sabre\HTTP\ResponseInterface') + ->disableOriginalConstructor() + ->getMock(); $server->httpRequest ->expects($this->once()) ->method('getHeader') + ->with('X-Requested-With') + ->will($this->returnValue('XMLHttpRequest')); + $this->auth->authenticate($server, 'TestRealm'); + } + + public function testAuthenticateValidCredentials() { + $server = $this->getMockBuilder('\Sabre\DAV\Server') + ->disableOriginalConstructor() + ->getMock(); + $server->httpRequest = $this->getMockBuilder('\Sabre\HTTP\RequestInterface') + ->disableOriginalConstructor() + ->getMock(); + $server->httpRequest + ->expects($this->at(0)) + ->method('getHeader') + ->with('X-Requested-With') + ->will($this->returnValue(null)); + $server->httpRequest + ->expects($this->at(1)) + ->method('getHeader') ->with('Authorization') ->will($this->returnValue('basic dXNlcm5hbWU6cGFzc3dvcmQ=')); $server->httpResponse = $this->getMockBuilder('\Sabre\HTTP\ResponseInterface') @@ -340,7 +367,12 @@ class Auth extends TestCase { ->disableOriginalConstructor() ->getMock(); $server->httpRequest - ->expects($this->once()) + ->expects($this->at(0)) + ->method('getHeader') + ->with('X-Requested-With') + ->will($this->returnValue(null)); + $server->httpRequest + ->expects($this->at(1)) ->method('getHeader') ->with('Authorization') ->will($this->returnValue('basic dXNlcm5hbWU6cGFzc3dvcmQ=')); diff --git a/apps/dav/tests/unit/connector/sabre/file.php b/apps/dav/tests/unit/connector/sabre/file.php index 399634f8bee..0a52299cec7 100644 --- a/apps/dav/tests/unit/connector/sabre/file.php +++ b/apps/dav/tests/unit/connector/sabre/file.php @@ -41,6 +41,9 @@ class File extends \Test\TestCase { parent::tearDown(); } + /** + * @param string $string + */ private function getStream($string) { $stream = fopen('php://temp', 'r+'); fwrite($stream, $string); @@ -239,7 +242,7 @@ class File extends \Test\TestCase { * @param string $path path to put the file into * @param string $viewRoot root to use for the view * - * @return result of the PUT operaiton which is usually the etag + * @return null|string of the PUT operaiton which is usually the etag */ private function doPut($path, $viewRoot = null) { $view = \OC\Files\Filesystem::getView(); diff --git a/apps/dav/tests/unit/connector/sabre/filesplugin.php b/apps/dav/tests/unit/connector/sabre/filesplugin.php index 2e3338fefa1..b33c8340f72 100644 --- a/apps/dav/tests/unit/connector/sabre/filesplugin.php +++ b/apps/dav/tests/unit/connector/sabre/filesplugin.php @@ -55,6 +55,9 @@ class FilesPlugin extends \Test\TestCase { $this->plugin->initialize($this->server); } + /** + * @param string $class + */ private function createTestNode($class) { $node = $this->getMockBuilder($class) ->disableOriginalConstructor() diff --git a/apps/dav/tests/unit/connector/sabre/requesttest/auth.php b/apps/dav/tests/unit/connector/sabre/requesttest/auth.php index 41b554d11db..02b64ab070b 100644 --- a/apps/dav/tests/unit/connector/sabre/requesttest/auth.php +++ b/apps/dav/tests/unit/connector/sabre/requesttest/auth.php @@ -41,7 +41,7 @@ class Auth implements BackendInterface { * * @param \Sabre\DAV\Server $server * @param string $realm - * @return bool + * @return boolean|null */ function authenticate(\Sabre\DAV\Server $server, $realm) { $userSession = \OC::$server->getUserSession(); @@ -61,7 +61,7 @@ class Auth implements BackendInterface { * * If nobody is currently logged in, this method should return null. * - * @return string|null + * @return string */ function getCurrentUser() { return $this->user; diff --git a/apps/encryption/l10n/es_AR.js b/apps/encryption/l10n/es_AR.js index bff5b7c593e..3f2fbb5de32 100644 --- a/apps/encryption/l10n/es_AR.js +++ b/apps/encryption/l10n/es_AR.js @@ -1,6 +1,7 @@ OC.L10N.register( "encryption", { + "Missing recovery key password" : "Falta contraseña de recuperación", "Recovery key successfully enabled" : "Se habilitó la recuperación de archivos", "Could not enable recovery key. Please check your recovery key password!" : "No se pudo habilitar la clave de recuperación. Por favor, comprobá tu contraseña.", "Recovery key successfully disabled" : "Clave de recuperación deshabilitada", diff --git a/apps/encryption/l10n/es_AR.json b/apps/encryption/l10n/es_AR.json index 0cdcd9cd121..225ca5139f2 100644 --- a/apps/encryption/l10n/es_AR.json +++ b/apps/encryption/l10n/es_AR.json @@ -1,4 +1,5 @@ { "translations": { + "Missing recovery key password" : "Falta contraseña de recuperación", "Recovery key successfully enabled" : "Se habilitó la recuperación de archivos", "Could not enable recovery key. Please check your recovery key password!" : "No se pudo habilitar la clave de recuperación. Por favor, comprobá tu contraseña.", "Recovery key successfully disabled" : "Clave de recuperación deshabilitada", diff --git a/apps/encryption/l10n/tr.js b/apps/encryption/l10n/tr.js index e1fcb526d06..5abbf87b813 100644 --- a/apps/encryption/l10n/tr.js +++ b/apps/encryption/l10n/tr.js @@ -32,6 +32,8 @@ OC.L10N.register( "The share will expire on %s." : "Bu paylaşım %s tarihinde sona erecek.", "Cheers!" : "Hoşçakalın!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"ownCloud 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.<br><br>" : "Selam,<br><br>Sistem yöneticisi sunucu tarafında şifrelemeyi etkinleştirdi. Dosyalarınız <strong>%s</strong> parolası kullanılarak şifrelendi.<br><br>Lütfen web arayüzünde oturum açın ve kişisel ayarlarınızdan 'ownCloud temel şifreleme modülü'ne giderek 'eski oturum parolası' alanına bu parolayı girdikten sonra şifreleme parolanızı ve mevcut oturum açma parolanızı güncelleyin.<br><br>", + "Encrypt the home storage" : "Yerel depolamayı şifrele", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Bu seçeneği etkinleştirmek ana depolamadaki bütün dosyaları şifreler, aksi takdirde sadece harici depolamadaki dosyalar şifrelenir", "Enable recovery key" : "Kurtarma anahtarını etkinleştir", "Disable recovery key" : "Kurtarma anahtarını devre dışı bırak", "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." : "Kurtarma anahtarı, dosyaların şifrelenmesi için daha fazla \nşifreleme sunar. Bu kullanıcının dosyasının şifresini unuttuğunda kurtarmasına imkan verir.", diff --git a/apps/encryption/l10n/tr.json b/apps/encryption/l10n/tr.json index 743d3e7d15c..31824461d84 100644 --- a/apps/encryption/l10n/tr.json +++ b/apps/encryption/l10n/tr.json @@ -30,6 +30,8 @@ "The share will expire on %s." : "Bu paylaşım %s tarihinde sona erecek.", "Cheers!" : "Hoşçakalın!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"ownCloud 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.<br><br>" : "Selam,<br><br>Sistem yöneticisi sunucu tarafında şifrelemeyi etkinleştirdi. Dosyalarınız <strong>%s</strong> parolası kullanılarak şifrelendi.<br><br>Lütfen web arayüzünde oturum açın ve kişisel ayarlarınızdan 'ownCloud temel şifreleme modülü'ne giderek 'eski oturum parolası' alanına bu parolayı girdikten sonra şifreleme parolanızı ve mevcut oturum açma parolanızı güncelleyin.<br><br>", + "Encrypt the home storage" : "Yerel depolamayı şifrele", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Bu seçeneği etkinleştirmek ana depolamadaki bütün dosyaları şifreler, aksi takdirde sadece harici depolamadaki dosyalar şifrelenir", "Enable recovery key" : "Kurtarma anahtarını etkinleştir", "Disable recovery key" : "Kurtarma anahtarını devre dışı bırak", "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." : "Kurtarma anahtarı, dosyaların şifrelenmesi için daha fazla \nşifreleme sunar. Bu kullanıcının dosyasının şifresini unuttuğunda kurtarmasına imkan verir.", diff --git a/apps/federation/api/ocsauthapi.php b/apps/federation/api/ocsauthapi.php new file mode 100644 index 00000000000..42d7113820d --- /dev/null +++ b/apps/federation/api/ocsauthapi.php @@ -0,0 +1,145 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + + +namespace OCA\Federation\API; + +use OCA\Federation\DbHandler; +use OCA\Federation\TrustedServers; +use OCP\AppFramework\Http; +use OCP\BackgroundJob\IJobList; +use OCP\IRequest; +use OCP\Security\ISecureRandom; +use OCP\Security\StringUtils; + +/** + * Class OCSAuthAPI + * + * OCS API end-points to exchange shared secret between two connected ownClouds + * + * @package OCA\Federation\API + */ +class OCSAuthAPI { + + /** @var IRequest */ + private $request; + + /** @var ISecureRandom */ + private $secureRandom; + + /** @var IJobList */ + private $jobList; + + /** @var TrustedServers */ + private $trustedServers; + + /** @var DbHandler */ + private $dbHandler; + + /** + * OCSAuthAPI constructor. + * + * @param IRequest $request + * @param ISecureRandom $secureRandom + * @param IJobList $jobList + * @param TrustedServers $trustedServers + * @param DbHandler $dbHandler + */ + public function __construct( + IRequest $request, + ISecureRandom $secureRandom, + IJobList $jobList, + TrustedServers $trustedServers, + DbHandler $dbHandler + ) { + $this->request = $request; + $this->secureRandom = $secureRandom; + $this->jobList = $jobList; + $this->trustedServers = $trustedServers; + $this->dbHandler = $dbHandler; + } + + /** + * request received to ask remote server for a shared secret + * + * @return \OC_OCS_Result + */ + public function requestSharedSecret() { + + $url = $this->request->getParam('url'); + $token = $this->request->getParam('token'); + + if ($this->trustedServers->isTrustedServer($url) === false) { + return new \OC_OCS_Result(null, HTTP::STATUS_FORBIDDEN); + } + + // if both server initiated the exchange of the shared secret the greater + // token wins + $localToken = $this->dbHandler->getToken($url); + if (strcmp($localToken, $token) > 0) { + return new \OC_OCS_Result(null, HTTP::STATUS_FORBIDDEN); + } + + $this->jobList->add( + 'OCA\Federation\BackgroundJob\GetSharedSecret', + [ + 'url' => $url, + 'token' => $token, + ] + ); + + return new \OC_OCS_Result(null, Http::STATUS_OK); + + } + + /** + * create shared secret and return it + * + * @return \OC_OCS_Result + */ + public function getSharedSecret() { + + $url = $this->request->getParam('url'); + $token = $this->request->getParam('token'); + + if ( + $this->trustedServers->isTrustedServer($url) === false + || $this->isValidToken($url, $token) === false + ) { + return new \OC_OCS_Result(null, HTTP::STATUS_FORBIDDEN); + } + + $sharedSecret = $this->secureRandom->getMediumStrengthGenerator()->generate(32); + + $this->trustedServers->addSharedSecret($url, $sharedSecret); + // reset token after the exchange of the shared secret was successful + $this->dbHandler->addToken($url, ''); + + return new \OC_OCS_Result(['sharedSecret' => $sharedSecret], Http::STATUS_OK); + + } + + protected function isValidToken($url, $token) { + $storedToken = $this->dbHandler->getToken($url); + return StringUtils::equals($storedToken, $token); + } + +} diff --git a/apps/federation/appinfo/app.php b/apps/federation/appinfo/app.php new file mode 100644 index 00000000000..9ed00f23866 --- /dev/null +++ b/apps/federation/appinfo/app.php @@ -0,0 +1,25 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Federation\AppInfo; + +$app = new Application(); +$app->registerSettings(); diff --git a/apps/federation/appinfo/application.php b/apps/federation/appinfo/application.php new file mode 100644 index 00000000000..350b140b4dd --- /dev/null +++ b/apps/federation/appinfo/application.php @@ -0,0 +1,130 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Federation\AppInfo; + +use OCA\Federation\API\OCSAuthAPI; +use OCA\Federation\Controller\AuthController; +use OCA\Federation\Controller\SettingsController; +use OCA\Federation\DbHandler; +use OCA\Federation\Middleware\AddServerMiddleware; +use OCA\Federation\TrustedServers; +use OCP\API; +use OCP\App; +use OCP\AppFramework\IAppContainer; + +class Application extends \OCP\AppFramework\App { + + /** + * @param array $urlParams + */ + public function __construct($urlParams = array()) { + parent::__construct('federation', $urlParams); + $this->registerService(); + $this->registerMiddleware(); + } + + /** + * register setting scripts + */ + public function registerSettings() { + App::registerAdmin('federation', 'settings/settings-admin'); + } + + 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) { + return new TrustedServers( + $c->query('DbHandler'), + \OC::$server->getHTTPClientService(), + \OC::$server->getLogger(), + \OC::$server->getJobList(), + \OC::$server->getSecureRandom(), + \OC::$server->getConfig() + ); + }); + + $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'); + } + + /** + * register OCS API Calls + */ + public function registerOCSApi() { + + $container = $this->getContainer(); + $server = $container->getServer(); + + $auth = new OCSAuthAPI( + $server->getRequest(), + $server->getSecureRandom(), + $server->getJobList(), + $container->query('TrustedServers'), + $container->query('DbHandler') + + ); + + API::register('get', + '/apps/federation/api/v1/shared-secret', + array($auth, 'getSharedSecret'), + 'federation', + API::GUEST_AUTH + ); + + API::register('post', + '/apps/federation/api/v1/request-shared-secret', + array($auth, 'requestSharedSecret'), + 'federation', + API::GUEST_AUTH + ); + + } + +} diff --git a/apps/federation/appinfo/database.xml b/apps/federation/appinfo/database.xml new file mode 100644 index 00000000000..e0bb241918e --- /dev/null +++ b/apps/federation/appinfo/database.xml @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<database> + <name>*dbname*</name> + <create>true</create> + <overwrite>false</overwrite> + <charset>utf8</charset> + <table> + <name>*dbprefix*trusted_servers</name> + <declaration> + <field> + <name>id</name> + <type>integer</type> + <default>0</default> + <notnull>true</notnull> + <autoincrement>1</autoincrement> + <length>4</length> + </field> + <field> + <name>url</name> + <type>text</type> + <notnull>true</notnull> + <length>512</length> + <comments>Url of trusted server</comments> + </field> + <field> + <name>url_hash</name> + <type>text</type> + <default></default> + <notnull>true</notnull> + <length>32</length> + <comments>md5 hash of the url without the protocol</comments> + </field> + <field> + <name>token</name> + <type>text</type> + <length>128</length> + <comments>toke used to exchange the shared secret</comments> + </field> + <field> + <name>shared_secret</name> + <type>text</type> + <length>256</length> + <comments>shared secret used to authenticate</comments> + </field> + <field> + <name>status</name> + <type>integer</type> + <length>4</length> + <notnull>true</notnull> + <default>2</default> + <comments>current status of the connection</comments> + </field> + <index> + <name>url_hash</name> + <unique>true</unique> + <field> + <name>url_hash</name> + <sorting>ascending</sorting> + </field> + </index> + </declaration> + </table> +</database> diff --git a/apps/federation/appinfo/info.xml b/apps/federation/appinfo/info.xml new file mode 100644 index 00000000000..53b2926ba53 --- /dev/null +++ b/apps/federation/appinfo/info.xml @@ -0,0 +1,14 @@ +<?xml version="1.0"?> +<info> + <id>federation</id> + <name>Federation</name> + <description>ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing.</description> + <licence>AGPL</licence> + <author>Bjoern Schiessle</author> + <version>0.0.1</version> + <namespace>Federation</namespace> + <category>other</category> + <dependencies> + <owncloud min-version="9.0" /> + </dependencies> +</info> diff --git a/apps/federation/appinfo/routes.php b/apps/federation/appinfo/routes.php new file mode 100644 index 00000000000..8c1629a4fc6 --- /dev/null +++ b/apps/federation/appinfo/routes.php @@ -0,0 +1,47 @@ +<?php +/** +* @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 +* + * This code is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +$application = new \OCA\Federation\AppInfo\Application(); + +$application->registerRoutes( + $this, + [ + 'routes' => [ + [ + 'name' => 'Settings#addServer', + 'url' => '/trusted-servers', + 'verb' => 'POST' + ], + [ + 'name' => 'Settings#removeServer', + 'url' => '/trusted-servers/{id}', + 'verb' => 'DELETE' + ], + [ + 'name' => 'Settings#autoAddServers', + 'url' => '/auto-add-servers', + 'verb' => 'POST' + ], + ] + ] +); + +$application->registerOCSApi(); diff --git a/apps/federation/backgroundjob/getsharedsecret.php b/apps/federation/backgroundjob/getsharedsecret.php new file mode 100644 index 00000000000..eb55fa2d6ab --- /dev/null +++ b/apps/federation/backgroundjob/getsharedsecret.php @@ -0,0 +1,185 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + + +namespace OCA\Federation\BackgroundJob; + +use GuzzleHttp\Exception\ClientException; +use OC\BackgroundJob\JobList; +use OC\BackgroundJob\QueuedJob; +use OCA\Federation\DbHandler; +use OCA\Federation\TrustedServers; +use OCP\AppFramework\Http; +use OCP\BackgroundJob\IJobList; +use OCP\Http\Client\IClient; +use OCP\ILogger; +use OCP\IURLGenerator; + +/** + * Class GetSharedSecret + * + * request shared secret from remote ownCloud + * + * @package OCA\Federation\Backgroundjob + */ +class GetSharedSecret extends QueuedJob{ + + /** @var IClient */ + private $httpClient; + + /** @var IJobList */ + private $jobList; + + /** @var IURLGenerator */ + private $urlGenerator; + + /** @var TrustedServers */ + private $trustedServers; + + /** @var DbHandler */ + private $dbHandler; + + /** @var ILogger */ + private $logger; + + private $endPoint = '/ocs/v2.php/apps/federation/api/v1/shared-secret?format=json'; + + /** + * RequestSharedSecret constructor. + * + * @param IClient $httpClient + * @param IURLGenerator $urlGenerator + * @param IJobList $jobList + * @param TrustedServers $trustedServers + * @param ILogger $logger + * @param DbHandler $dbHandler + */ + public function __construct( + IClient $httpClient = null, + IURLGenerator $urlGenerator = null, + IJobList $jobList = null, + TrustedServers $trustedServers = null, + ILogger $logger = null, + dbHandler $dbHandler = null + ) { + $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')); + if ($trustedServers) { + $this->trustedServers = $trustedServers; + } else { + $this->trustedServers = new TrustedServers( + $this->dbHandler, + \OC::$server->getHTTPClientService(), + \OC::$server->getLogger(), + $this->jobList, + \OC::$server->getSecureRandom(), + \OC::$server->getConfig() + ); + } + } + + /** + * run the job, then remove it from the joblist + * + * @param JobList $jobList + * @param ILogger $logger + */ + public function execute($jobList, ILogger $logger = null) { + $jobList->remove($this, $this->argument); + $target = $this->argument['url']; + // only execute if target is still in the list of trusted domains + if ($this->trustedServers->isTrustedServer($target)) { + $this->parentExecute($jobList, $logger); + } + } + + /** + * call execute() method of parent + * + * @param JobList $jobList + * @param ILogger $logger + */ + protected function parentExecute($jobList, $logger) { + parent::execute($jobList, $logger); + } + + protected function run($argument) { + $target = $argument['url']; + $source = $this->urlGenerator->getAbsoluteURL('/'); + $source = rtrim($source, '/'); + $token = $argument['token']; + + try { + $result = $this->httpClient->get( + $target . $this->endPoint, + [ + 'query' => + [ + 'url' => $source, + 'token' => $token + ], + 'timeout' => 3, + 'connect_timeout' => 3, + ] + ); + + $status = $result->getStatusCode(); + + } catch (ClientException $e) { + $status = $e->getCode(); + } + + // if we received a unexpected response we try again later + if ( + $status !== Http::STATUS_OK + && $status !== Http::STATUS_FORBIDDEN + ) { + $this->jobList->add( + 'OCA\Federation\BackgroundJob\GetSharedSecret', + $argument + ); + } else { + // reset token if we received a valid response + $this->dbHandler->addToken($target, ''); + } + + if ($status === Http::STATUS_OK) { + $body = $result->getBody(); + $result = json_decode($body, true); + if (isset($result['ocs']['data']['sharedSecret'])) { + $this->trustedServers->addSharedSecret( + $target, + $result['ocs']['data']['sharedSecret'] + ); + } else { + $this->logger->error( + 'remote server "' . $target . '"" does not return a valid shared secret', + ['app' => 'federation'] + ); + $this->trustedServers->setServerStatus($target, TrustedServers::STATUS_FAILURE); + } + } + + } +} diff --git a/apps/federation/backgroundjob/requestsharedsecret.php b/apps/federation/backgroundjob/requestsharedsecret.php new file mode 100644 index 00000000000..24d8adada11 --- /dev/null +++ b/apps/federation/backgroundjob/requestsharedsecret.php @@ -0,0 +1,164 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + + +namespace OCA\Federation\BackgroundJob; + + +use GuzzleHttp\Exception\ClientException; +use OC\BackgroundJob\JobList; +use OC\BackgroundJob\QueuedJob; +use OCA\Federation\DbHandler; +use OCA\Federation\TrustedServers; +use OCP\AppFramework\Http; +use OCP\BackgroundJob\IJobList; +use OCP\Http\Client\IClient; +use OCP\ILogger; +use OCP\IURLGenerator; + +/** + * Class RequestSharedSecret + * + * Ask remote ownCloud to request a sharedSecret from this server + * + * @package OCA\Federation\Backgroundjob + */ +class RequestSharedSecret extends QueuedJob { + + /** @var IClient */ + private $httpClient; + + /** @var IJobList */ + private $jobList; + + /** @var IURLGenerator */ + private $urlGenerator; + + /** @var DbHandler */ + private $dbHandler; + + /** @var TrustedServers */ + private $trustedServers; + + private $endPoint = '/ocs/v2.php/apps/federation/api/v1/request-shared-secret?format=json'; + + /** + * RequestSharedSecret constructor. + * + * @param IClient $httpClient + * @param IURLGenerator $urlGenerator + * @param IJobList $jobList + * @param TrustedServers $trustedServers + * @param DbHandler $dbHandler + */ + public function __construct( + IClient $httpClient = null, + IURLGenerator $urlGenerator = null, + IJobList $jobList = null, + TrustedServers $trustedServers = null, + dbHandler $dbHandler = null + ) { + $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')); + if ($trustedServers) { + $this->trustedServers = $trustedServers; + } else { + $this->trustedServers = new TrustedServers( + $this->dbHandler, + \OC::$server->getHTTPClientService(), + \OC::$server->getLogger(), + $this->jobList, + \OC::$server->getSecureRandom(), + \OC::$server->getConfig() + ); + } + } + + + /** + * run the job, then remove it from the joblist + * + * @param JobList $jobList + * @param ILogger $logger + */ + public function execute($jobList, ILogger $logger = null) { + $jobList->remove($this, $this->argument); + $target = $this->argument['url']; + // only execute if target is still in the list of trusted domains + if ($this->trustedServers->isTrustedServer($target)) { + $this->parentExecute($jobList, $logger); + } + } + + /** + * @param JobList $jobList + * @param ILogger $logger + */ + protected function parentExecute($jobList, $logger) { + parent::execute($jobList, $logger); + } + + protected function run($argument) { + + $target = $argument['url']; + $source = $this->urlGenerator->getAbsoluteURL('/'); + $source = rtrim($source, '/'); + $token = $argument['token']; + + try { + $result = $this->httpClient->post( + $target . $this->endPoint, + [ + 'body' => [ + 'url' => $source, + 'token' => $token, + ], + 'timeout' => 3, + 'connect_timeout' => 3, + ] + ); + + $status = $result->getStatusCode(); + + } catch (ClientException $e) { + $status = $e->getCode(); + } + + // if we received a unexpected response we try again later + if ( + $status !== Http::STATUS_OK + && $status !== Http::STATUS_FORBIDDEN + ) { + $this->jobList->add( + 'OCA\Federation\BackgroundJob\RequestSharedSecret', + $argument + ); + } + + if ($status === Http::STATUS_FORBIDDEN) { + // clear token if remote server refuses to ask for shared secret + $this->dbHandler->addToken($target, ''); + } + + } +} diff --git a/apps/federation/controller/settingscontroller.php b/apps/federation/controller/settingscontroller.php new file mode 100644 index 00000000000..2e28cd60cfa --- /dev/null +++ b/apps/federation/controller/settingscontroller.php @@ -0,0 +1,123 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace 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\IConfig; +use OCP\IL10N; +use OCP\IRequest; + + +class SettingsController extends Controller { + + /** @var IL10N */ + private $l; + + /** @var TrustedServers */ + private $trustedServers; + + /** + * @param string $AppName + * @param IRequest $request + * @param IL10N $l10n + * @param TrustedServers $trustedServers + */ + public function __construct($AppName, + IRequest $request, + IL10N $l10n, + TrustedServers $trustedServers + ) { + parent::__construct($AppName, $request); + $this->l = $l10n; + $this->trustedServers = $trustedServers; + } + + + /** + * add server to the list of trusted ownClouds + * + * @param string $url + * @return DataResponse + * @throws HintException + */ + public function addServer($url) { + $this->checkServer($url); + $id = $this->trustedServers->addServer($url); + + return new DataResponse( + [ + 'url' => $url, + 'id' => $id, + 'message' => (string) $this->l->t('Server added to the list of trusted ownClouds') + ] + ); + } + + /** + * add server to the list of trusted ownClouds + * + * @param int $id + * @return DataResponse + */ + public function removeServer($id) { + $this->trustedServers->removeServer($id); + return new DataResponse(); + } + + /** + * enable/disable to automatically add servers to the list of trusted servers + * once a federated share was created and accepted successfully + * + * @param bool $autoAddServers + */ + public function autoAddServers($autoAddServers) { + $this->trustedServers->setAutoAddServers($autoAddServers); + } + + /** + * check if the server should be added to the list of trusted servers or not + * + * @param string $url + * @return bool + * @throws HintException + */ + protected function checkServer($url) { + if ($this->trustedServers->isTrustedServer($url) === true) { + $message = 'Server is already in the list of trusted servers.'; + $hint = $this->l->t('Server is already in the list of trusted servers.'); + throw new HintException($message, $hint); + } + + if ($this->trustedServers->isOwnCloudServer($url) === false) { + $message = 'No ownCloud server found'; + $hint = $this->l->t('No ownCloud server found'); + throw new HintException($message, $hint); + } + + return true; + } + +} diff --git a/apps/federation/css/settings-admin.css b/apps/federation/css/settings-admin.css new file mode 100644 index 00000000000..55b1dd64d15 --- /dev/null +++ b/apps/federation/css/settings-admin.css @@ -0,0 +1,26 @@ +#ocFederationSettings p { + padding-top: 10px; +} + +#listOfTrustedServers li { + padding-top: 10px; + padding-left: 20px; +} + +.removeTrustedServer { + display: none; + vertical-align:middle; + padding-left: 10px; +} + +#ocFederationAddServerButton { + cursor: pointer; +} + +#listOfTrustedServers li:hover { + cursor: pointer; +} + +#listOfTrustedServers .status { + margin-right: 10px; +} diff --git a/apps/federation/js/settings-admin.js b/apps/federation/js/settings-admin.js new file mode 100644 index 00000000000..7d531b39d8c --- /dev/null +++ b/apps/federation/js/settings-admin.js @@ -0,0 +1,82 @@ +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +$(document).ready(function () { + + // show input field to add a new trusted server + $("#ocFederationAddServer").on('click', function() { + $('#ocFederationAddServerButton').addClass('hidden'); + $("#serverUrl").removeClass('hidden'); + $("#serverUrl").focus(); + }); + + // add new trusted server + $("#serverUrl").keyup(function (e) { + if (e.keyCode === 13) { // add server on "enter" + var url = $('#serverUrl').val(); + OC.msg.startSaving('#ocFederationAddServer .msg'); + $.post( + OC.generateUrl('/apps/federation/trusted-servers'), + { + url: url + } + ).done(function (data) { + $('#serverUrl').attr('value', ''); + $('ul#listOfTrustedServers').prepend( + $('<li>') + .attr('id', data.id) + .attr('class', 'icon-delete') + .html('<span class="status indeterminate"></span>' + data.url) + ); + OC.msg.finishedSuccess('#ocFederationAddServer .msg', data.message); + }) + .fail(function (jqXHR) { + OC.msg.finishedError('#ocFederationAddServer .msg', JSON.parse(jqXHR.responseText).message); + }); + } else if (e.keyCode === 27) { // hide input filed again in ESC + $('#ocFederationAddServerButton').toggleClass('hidden'); + $("#serverUrl").toggleClass('hidden'); + } + }); + + // remove trusted server from list + $( "#listOfTrustedServers" ).on('click', 'li', function() { + var id = $(this).attr('id'); + var $this = $(this); + $.ajax({ + url: OC.generateUrl('/apps/federation/trusted-servers/' + id), + type: 'DELETE', + success: function(response) { + $this.remove(); + } + }); + + }); + + $("#ocFederationSettings #autoAddServers").change(function() { + $.post( + OC.generateUrl('/apps/federation/auto-add-servers'), + { + autoAddServers: $(this).is(":checked") + } + ); + }); + +}); diff --git a/apps/federation/lib/dbhandler.php b/apps/federation/lib/dbhandler.php new file mode 100644 index 00000000000..61ba5c87cfd --- /dev/null +++ b/apps/federation/lib/dbhandler.php @@ -0,0 +1,269 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + + +namespace OCA\Federation; + + +use OC\Files\Filesystem; +use OC\HintException; +use OCP\IDBConnection; +use OCP\IL10N; + +/** + * Class DbHandler + * + * handles all database calls for the federation app + * + * @group DB + * @package OCA\Federation + */ +class DbHandler { + + /** @var IDBConnection */ + private $connection; + + /** @var IL10N */ + private $l; + + /** @var string */ + private $dbTable = 'trusted_servers'; + + /** + * @param IDBConnection $connection + * @param IL10N $il10n + */ + public function __construct( + IDBConnection $connection, + IL10N $il10n + ) { + $this->connection = $connection; + $this->IL10N = $il10n; + } + + /** + * add server to the list of trusted ownCloud servers + * + * @param string $url + * @return int + * @throws HintException + */ + public function addServer($url) { + $hash = $this->hash($url); + $query = $this->connection->getQueryBuilder(); + $query->insert($this->dbTable) + ->values( + [ + 'url' => $query->createParameter('url'), + 'url_hash' => $query->createParameter('url_hash'), + ] + ) + ->setParameter('url', $url) + ->setParameter('url_hash', $hash); + + $result = $query->execute(); + + if ($result) { + return (int)$this->connection->lastInsertId('*PREFIX*'.$this->dbTable); + } else { + $message = 'Internal failure, Could not add ownCloud as trusted server: ' . $url; + $message_t = $this->l->t('Could not add server'); + throw new HintException($message, $message_t); + } + } + + /** + * remove server from the list of trusted ownCloud servers + * + * @param int $id + */ + public function removeServer($id) { + $query = $this->connection->getQueryBuilder(); + $query->delete($this->dbTable) + ->where($query->expr()->eq('id', $query->createParameter('id'))) + ->setParameter('id', $id); + $query->execute(); + } + + /** + * get all trusted servers + * + * @return array + */ + public function getAllServer() { + $query = $this->connection->getQueryBuilder(); + $query->select(['url', 'id', 'status'])->from($this->dbTable); + $result = $query->execute()->fetchAll(); + return $result; + } + + /** + * check if server already exists in the database table + * + * @param string $url + * @return bool + */ + public function serverExists($url) { + $hash = $this->hash($url); + $query = $this->connection->getQueryBuilder(); + $query->select('url')->from($this->dbTable) + ->where($query->expr()->eq('url_hash', $query->createParameter('url_hash'))) + ->setParameter('url_hash', $hash); + $result = $query->execute()->fetchAll(); + + return !empty($result); + } + + /** + * write token to database. Token is used to exchange the secret + * + * @param string $url + * @param string $token + */ + public function addToken($url, $token) { + $hash = $this->hash($url); + $query = $this->connection->getQueryBuilder(); + $query->update($this->dbTable) + ->set('token', $query->createParameter('token')) + ->where($query->expr()->eq('url_hash', $query->createParameter('url_hash'))) + ->setParameter('url_hash', $hash) + ->setParameter('token', $token); + $query->execute(); + } + + /** + * get token stored in database + * + * @param string $url + * @return string + */ + public function getToken($url) { + $hash = $this->hash($url); + $query = $this->connection->getQueryBuilder(); + $query->select('token')->from($this->dbTable) + ->where($query->expr()->eq('url_hash', $query->createParameter('url_hash'))) + ->setParameter('url_hash', $hash); + + $result = $query->execute()->fetch(); + return $result['token']; + } + + /** + * add shared Secret to database + * + * @param string $url + * @param string $sharedSecret + */ + public function addSharedSecret($url, $sharedSecret) { + $hash = $this->hash($url); + $query = $this->connection->getQueryBuilder(); + $query->update($this->dbTable) + ->set('shared_secret', $query->createParameter('sharedSecret')) + ->where($query->expr()->eq('url_hash', $query->createParameter('url_hash'))) + ->setParameter('url_hash', $hash) + ->setParameter('sharedSecret', $sharedSecret); + $query->execute(); + } + + /** + * get shared secret from database + * + * @param string $url + * @return string + */ + public function getSharedSecret($url) { + $hash = $this->hash($url); + $query = $this->connection->getQueryBuilder(); + $query->select('shared_secret')->from($this->dbTable) + ->where($query->expr()->eq('url_hash', $query->createParameter('url_hash'))) + ->setParameter('url_hash', $hash); + + $result = $query->execute()->fetch(); + return $result['shared_secret']; + } + + /** + * set server status + * + * @param string $url + * @param int $status + */ + public function setServerStatus($url, $status) { + $hash = $this->hash($url); + $query = $this->connection->getQueryBuilder(); + $query->update($this->dbTable) + ->set('status', $query->createParameter('status')) + ->where($query->expr()->eq('url_hash', $query->createParameter('url_hash'))) + ->setParameter('url_hash', $hash) + ->setParameter('status', $status); + $query->execute(); + } + + /** + * get server status + * + * @param string $url + * @return int + */ + public function getServerStatus($url) { + $hash = $this->hash($url); + $query = $this->connection->getQueryBuilder(); + $query->select('status')->from($this->dbTable) + ->where($query->expr()->eq('url_hash', $query->createParameter('url_hash'))) + ->setParameter('url_hash', $hash); + + $result = $query->execute()->fetch(); + return (int)$result['status']; + } + + /** + * create hash from URL + * + * @param string $url + * @return string + */ + protected function hash($url) { + $normalized = $this->normalizeUrl($url); + return md5($normalized); + } + + /** + * normalize URL, used to create the md5 hash + * + * @param string $url + * @return string + */ + protected function normalizeUrl($url) { + $normalized = $url; + + if (strpos($url, 'https://') === 0) { + $normalized = substr($url, strlen('https://')); + } else if (strpos($url, 'http://') === 0) { + $normalized = substr($url, strlen('http://')); + } + + $normalized = Filesystem::normalizePath($normalized); + $normalized = trim($normalized, '/'); + + return $normalized; + } + +} diff --git a/apps/federation/lib/trustedservers.php b/apps/federation/lib/trustedservers.php new file mode 100644 index 00000000000..96a29178076 --- /dev/null +++ b/apps/federation/lib/trustedservers.php @@ -0,0 +1,254 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + + +namespace OCA\Federation; + +use OCP\AppFramework\Http; +use OCP\BackgroundJob\IJobList; +use OCP\Http\Client\IClientService; +use OCP\IConfig; +use OCP\ILogger; +use OCP\Security\ISecureRandom; + +class TrustedServers { + + /** after a user list was exchanged at least once successfully */ + const STATUS_OK = 1; + /** waiting for shared secret or initial user list exchange */ + const STATUS_PENDING = 2; + /** something went wrong, misconfigured server, software bug,... user interaction needed */ + const STATUS_FAILURE = 3; + + /** @var dbHandler */ + private $dbHandler; + + /** @var IClientService */ + private $httpClientService; + + /** @var ILogger */ + private $logger; + + /** @var IJobList */ + private $jobList; + + /** @var ISecureRandom */ + private $secureRandom; + + /** @var IConfig */ + private $config; + + /** + * @param DbHandler $dbHandler + * @param IClientService $httpClientService + * @param ILogger $logger + * @param IJobList $jobList + * @param ISecureRandom $secureRandom + * @param IConfig $config + */ + public function __construct( + DbHandler $dbHandler, + IClientService $httpClientService, + ILogger $logger, + IJobList $jobList, + ISecureRandom $secureRandom, + IConfig $config + ) { + $this->dbHandler = $dbHandler; + $this->httpClientService = $httpClientService; + $this->logger = $logger; + $this->jobList = $jobList; + $this->secureRandom = $secureRandom; + $this->config = $config; + } + + /** + * add server to the list of trusted ownCloud servers + * + * @param $url + * @return int server id + */ + public function addServer($url) { + $url = $this->updateProtocol($url); + $result = $this->dbHandler->addServer($url); + if ($result) { + $token = $this->secureRandom->getMediumStrengthGenerator()->generate(16); + $this->dbHandler->addToken($url, $token); + $this->jobList->add( + 'OCA\Federation\BackgroundJob\RequestSharedSecret', + [ + 'url' => $url, + 'token' => $token + ] + ); + } + + return $result; + } + + /** + * enable/disable to automatically add servers to the list of trusted servers + * once a federated share was created and accepted successfully + * + * @param bool $status + */ + public function setAutoAddServers($status) { + $value = $status ? '1' : '0'; + $this->config->setAppValue('federation', 'autoAddServers', $value); + } + + /** + * return if we automatically add servers to the list of trusted servers + * once a federated share was created and accepted successfully + * + * @return bool + */ + public function getAutoAddServers() { + $value = $this->config->getAppValue('federation', 'autoAddServers', '1'); + return $value === '1'; + } + + /** + * get shared secret for the given server + * + * @param string $url + * @return string + */ + public function getSharedSecret($url) { + return $this->dbHandler->getSharedSecret($url); + } + + /** + * add shared secret for the given server + * + * @param string $url + * @param $sharedSecret + */ + public function addSharedSecret($url, $sharedSecret) { + $this->dbHandler->addSharedSecret($url, $sharedSecret); + } + + /** + * remove server from the list of trusted ownCloud servers + * + * @param int $id + */ + public function removeServer($id) { + $this->dbHandler->removeServer($id); + } + + /** + * get all trusted servers + * + * @return array + */ + public function getServers() { + return $this->dbHandler->getAllServer(); + } + + /** + * check if given server is a trusted ownCloud server + * + * @param string $url + * @return bool + */ + public function isTrustedServer($url) { + return $this->dbHandler->serverExists($url); + } + + /** + * set server status + * + * @param string $url + * @param int $status + */ + public function setServerStatus($url, $status) { + $this->dbHandler->setServerStatus($url, $status); + } + + /** + * @param string $url + * @return int + */ + public function getServerStatus($url) { + return $this->dbHandler->getServerStatus($url); + } + + /** + * check if URL point to a ownCloud server + * + * @param string $url + * @return bool + */ + public function isOwnCloudServer($url) { + $isValidOwnCloud = false; + $client = $this->httpClientService->newClient(); + try { + $result = $client->get( + $url . '/status.php', + [ + 'timeout' => 3, + 'connect_timeout' => 3, + ] + ); + if ($result->getStatusCode() === Http::STATUS_OK) { + $isValidOwnCloud = $this->checkOwnCloudVersion($result->getBody()); + } + } catch (\Exception $e) { + $this->logger->error($e->getMessage(), ['app' => 'federation']); + return false; + } + return $isValidOwnCloud; + } + + /** + * check if ownCloud version is >= 9.0 + * + * @param $statusphp + * @return bool + */ + protected function checkOwnCloudVersion($statusphp) { + $decoded = json_decode($statusphp, true); + if (!empty($decoded) && isset($decoded['version'])) { + return version_compare($decoded['version'], '9.0.0', '>='); + } + return false; + } + + /** + * check if the URL contain a protocol, if not add https + * + * @param string $url + * @return string + */ + protected function updateProtocol($url) { + if ( + strpos($url, 'https://') === 0 + || strpos($url, 'http://') === 0 + ) { + + return $url; + + } + + return 'https://' . $url; + } +} diff --git a/apps/federation/middleware/addservermiddleware.php b/apps/federation/middleware/addservermiddleware.php new file mode 100644 index 00000000000..56552021dc2 --- /dev/null +++ b/apps/federation/middleware/addservermiddleware.php @@ -0,0 +1,71 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Federation\Middleware ; + +use OC\HintException; +use OCP\AppFramework\Http; +use OCP\AppFramework\Http\JSONResponse; +use OCP\AppFramework\Middleware; +use OCP\IL10N; +use OCP\ILogger; + +class AddServerMiddleware extends Middleware { + + /** @var string */ + protected $appName; + + /** @var IL10N */ + protected $l; + + /** @var ILogger */ + protected $logger; + + public function __construct($appName, IL10N $l, ILogger $logger) { + $this->appName = $appName; + $this->l = $l; + $this->logger = $logger; + } + + /** + * Log error message and return a response which can be displayed to the user + * + * @param \OCP\AppFramework\Controller $controller + * @param string $methodName + * @param \Exception $exception + * @return JSONResponse + */ + public function afterException($controller, $methodName, \Exception $exception) { + $this->logger->error($exception->getMessage(), ['app' => $this->appName]); + if ($exception instanceof HintException) { + $message = $exception->getHint(); + } else { + $message = $this->l->t('Unknown error'); + } + + return new JSONResponse( + ['message' => $message], + Http::STATUS_BAD_REQUEST + ); + + } + +} diff --git a/apps/federation/settings/settings-admin.php b/apps/federation/settings/settings-admin.php new file mode 100644 index 00000000000..76ae0c3b6e0 --- /dev/null +++ b/apps/federation/settings/settings-admin.php @@ -0,0 +1,43 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +\OC_Util::checkAdminUser(); + +$template = new OCP\Template('federation', 'settings-admin'); + +$dbHandler = new \OCA\Federation\DbHandler( + \OC::$server->getDatabaseConnection(), + \OC::$server->getL10N('federation') +); + +$trustedServers = new \OCA\Federation\TrustedServers( + $dbHandler, + \OC::$server->getHTTPClientService(), + \OC::$server->getLogger(), + \OC::$server->getJobList(), + \OC::$server->getSecureRandom(), + \OC::$server->getConfig() +); + +$template->assign('trustedServers', $trustedServers->getServers()); +$template->assign('autoAddServers', $trustedServers->getAutoAddServers()); + +return $template->fetchPage(); diff --git a/apps/federation/templates/settings-admin.php b/apps/federation/templates/settings-admin.php new file mode 100644 index 00000000000..854bb744179 --- /dev/null +++ b/apps/federation/templates/settings-admin.php @@ -0,0 +1,40 @@ +<?php +/** @var array $_ */ +use OCA\Federation\TrustedServers; + +/** @var OC_L10N $l */ +script('federation', 'settings-admin'); +style('federation', 'settings-admin') +?> +<div id="ocFederationSettings" class="section"> + <h2><?php p($l->t('Federation')); ?></h2> + <em><?php p($l->t('ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing.')); ?></em> + + <p> + <input id="autoAddServers" type="checkbox" class="checkbox" <?php if($_['autoAddServers']) p('checked'); ?> /> + <label for="autoAddServers">Add server automatically once a federated share was created successfully</label> + </p> + + <h3>Trusted ownCloud Servers</h3> + <p id="ocFederationAddServer"> + <button id="ocFederationAddServerButton" class="">+ Add ownCloud server</button> + <input id="serverUrl" class="hidden" type="text" value="" placeholder="ownCloud Server" name="server_url"/> + <span class="msg"></span> + </p> + <ul id="listOfTrustedServers"> + <?php foreach($_['trustedServers'] as $trustedServer) { ?> + <li id="<?php p($trustedServer['id']); ?>" class="icon-delete"> + <?php if((int)$trustedServer['status'] === TrustedServers::STATUS_OK) { ?> + <span class="status success"></span> + <?php } elseif((int)$trustedServer['status'] === TrustedServers::STATUS_PENDING) { ?> + <span class="status indeterminate"></span> + <?php } else {?> + <span class="status error"></span> + <?php } ?> + <?php p($trustedServer['url']); ?> + </li> + <?php } ?> + </ul> + +</div> + diff --git a/apps/federation/tests/api/ocsauthapitest.php b/apps/federation/tests/api/ocsauthapitest.php new file mode 100644 index 00000000000..a334686c24e --- /dev/null +++ b/apps/federation/tests/api/ocsauthapitest.php @@ -0,0 +1,184 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + + +namespace OCA\Federation\Tests\API; + + +use OC\BackgroundJob\JobList; +use OCA\Federation\API\OCSAuthAPI; +use OCA\Federation\DbHandler; +use OCA\Federation\TrustedServers; +use OCP\AppFramework\Http; +use OCP\IRequest; +use OCP\Security\ISecureRandom; +use Test\TestCase; + +class OCSAuthAPITest extends TestCase { + + /** @var \PHPUnit_Framework_MockObject_MockObject | IRequest */ + private $request; + + /** @var \PHPUnit_Framework_MockObject_MockObject | ISecureRandom */ + private $secureRandom; + + /** @var \PHPUnit_Framework_MockObject_MockObject | JobList */ + private $jobList; + + /** @var \PHPUnit_Framework_MockObject_MockObject | TrustedServers */ + private $trustedServers; + + /** @var \PHPUnit_Framework_MockObject_MockObject | DbHandler */ + private $dbHandler; + + /** @var OCSAuthApi */ + private $ocsAuthApi; + + public function setUp() { + parent::setUp(); + + $this->request = $this->getMock('OCP\IRequest'); + $this->secureRandom = $this->getMock('OCP\Security\ISecureRandom'); + $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->ocsAuthApi = new OCSAuthAPI( + $this->request, + $this->secureRandom, + $this->jobList, + $this->trustedServers, + $this->dbHandler + ); + + } + + /** + * @dataProvider dataTestRequestSharedSecret + * + * @param string $token + * @param string $localToken + * @param bool $isTrustedServer + * @param int $expected + */ + public function testRequestSharedSecret($token, $localToken, $isTrustedServer, $expected) { + + $url = 'url'; + + $this->request->expects($this->at(0))->method('getParam')->with('url')->willReturn($url); + $this->request->expects($this->at(1))->method('getParam')->with('token')->willReturn($token); + $this->trustedServers + ->expects($this->once()) + ->method('isTrustedServer')->with($url)->willReturn($isTrustedServer); + $this->dbHandler->expects($this->any()) + ->method('getToken')->with($url)->willReturn($localToken); + + if ($expected === Http::STATUS_OK) { + $this->jobList->expects($this->once())->method('add') + ->with('OCA\Federation\BackgroundJob\GetSharedSecret', ['url' => $url, 'token' => $token]); + } else { + $this->jobList->expects($this->never())->method('add'); + } + + $result = $this->ocsAuthApi->requestSharedSecret(); + $this->assertSame($expected, $result->getStatusCode()); + } + + public function dataTestRequestSharedSecret() { + return [ + ['token2', 'token1', true, Http::STATUS_OK], + ['token1', 'token2', false, Http::STATUS_FORBIDDEN], + ['token1', 'token2', true, Http::STATUS_FORBIDDEN], + ]; + } + + /** + * @dataProvider dataTestGetSharedSecret + * + * @param bool $isTrustedServer + * @param bool $isValidToken + * @param int $expected + */ + public function testGetSharedSecret($isTrustedServer, $isValidToken, $expected) { + + $url = 'url'; + $token = 'token'; + + $this->request->expects($this->at(0))->method('getParam')->with('url')->willReturn($url); + $this->request->expects($this->at(1))->method('getParam')->with('token')->willReturn($token); + + /** @var OCSAuthAPI | \PHPUnit_Framework_MockObject_MockObject $ocsAuthApi */ + $ocsAuthApi = $this->getMockBuilder('OCA\Federation\API\OCSAuthAPI') + ->setConstructorArgs( + [ + $this->request, + $this->secureRandom, + $this->jobList, + $this->trustedServers, + $this->dbHandler + ] + )->setMethods(['isValidToken'])->getMock(); + + $this->trustedServers + ->expects($this->any()) + ->method('isTrustedServer')->with($url)->willReturn($isTrustedServer); + $ocsAuthApi->expects($this->any()) + ->method('isValidToken')->with($url, $token)->willReturn($isValidToken); + + if($expected === Http::STATUS_OK) { + $this->secureRandom->expects($this->once())->method('getMediumStrengthGenerator') + ->willReturn($this->secureRandom); + $this->secureRandom->expects($this->once())->method('generate')->with(32) + ->willReturn('secret'); + $this->trustedServers->expects($this->once()) + ->method('addSharedSecret')->willReturn($url, 'secret'); + $this->dbHandler->expects($this->once()) + ->method('addToken')->with($url, ''); + } else { + $this->secureRandom->expects($this->never())->method('getMediumStrengthGenerator'); + $this->secureRandom->expects($this->never())->method('generate'); + $this->trustedServers->expects($this->never())->method('addSharedSecret'); + $this->dbHandler->expects($this->never())->method('addToken'); + } + + $result = $ocsAuthApi->getSharedSecret(); + + $this->assertSame($expected, $result->getStatusCode()); + + if ($expected === Http::STATUS_OK) { + $data = $result->getData(); + $this->assertSame('secret', $data['sharedSecret']); + } + } + + public function dataTestGetSharedSecret() { + return [ + [true, true, Http::STATUS_OK], + [false, true, Http::STATUS_FORBIDDEN], + [true, false, Http::STATUS_FORBIDDEN], + [false, false, Http::STATUS_FORBIDDEN], + ]; + } + +} diff --git a/apps/federation/tests/backgroundjob/getsharedsecrettest.php b/apps/federation/tests/backgroundjob/getsharedsecrettest.php new file mode 100644 index 00000000000..953af5ff3e1 --- /dev/null +++ b/apps/federation/tests/backgroundjob/getsharedsecrettest.php @@ -0,0 +1,190 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + + +namespace OCA\Federation\Tests\BackgroundJob; + + +use OCA\Federation\BackgroundJob\GetSharedSecret; +use OCA\Files_Sharing\Tests\TestCase; +use OCA\Federation\DbHandler; +use OCA\Federation\TrustedServers; +use OCP\AppFramework\Http; +use OCP\BackgroundJob\IJobList; +use OCP\Http\Client\IClient; +use OCP\Http\Client\IResponse; +use OCP\ILogger; +use OCP\IURLGenerator; + +class GetSharedSecretTest extends TestCase { + + /** @var \PHPUnit_Framework_MockObject_MockObject | IClient */ + private $httpClient; + + /** @var \PHPUnit_Framework_MockObject_MockObject | IJobList */ + private $jobList; + + /** @var \PHPUnit_Framework_MockObject_MockObject | IURLGenerator */ + private $urlGenerator; + + /** @var \PHPUnit_Framework_MockObject_MockObject | TrustedServers */ + private $trustedServers; + + /** @var \PHPUnit_Framework_MockObject_MockObject | DbHandler */ + private $dbHandler; + + /** @var \PHPUnit_Framework_MockObject_MockObject | ILogger */ + private $logger; + + /** @var \PHPUnit_Framework_MockObject_MockObject | IResponse */ + private $response; + + /** @var GetSharedSecret */ + private $getSharedSecret; + + public function setUp() { + parent::setUp(); + + $this->httpClient = $this->getMock('OCP\Http\Client\IClient'); + $this->jobList = $this->getMock('OCP\BackgroundJob\IJobList'); + $this->urlGenerator = $this->getMock('OCP\IURLGenerator'); + $this->trustedServers = $this->getMockBuilder('OCA\Federation\TrustedServers') + ->disableOriginalConstructor()->getMock(); + $this->dbHandler = $this->getMockBuilder('OCA\Federation\DbHandler') + ->disableOriginalConstructor()->getMock(); + $this->logger = $this->getMock('OCP\ILogger'); + $this->response = $this->getMock('OCP\Http\Client\IResponse'); + + $this->getSharedSecret = new GetSharedSecret( + $this->httpClient, + $this->urlGenerator, + $this->jobList, + $this->trustedServers, + $this->logger, + $this->dbHandler + ); + } + + /** + * @dataProvider dataTestExecute + * + * @param bool $isTrustedServer + */ + public function testExecute($isTrustedServer) { + /** @var GetSharedSecret |\PHPUnit_Framework_MockObject_MockObject $getSharedSecret */ + $getSharedSecret = $this->getMockBuilder('OCA\Federation\BackgroundJob\GetSharedSecret') + ->setConstructorArgs( + [ + $this->httpClient, + $this->urlGenerator, + $this->jobList, + $this->trustedServers, + $this->logger, + $this->dbHandler + ] + )->setMethods(['parentExecute'])->getMock(); + $this->invokePrivate($getSharedSecret, 'argument', [['url' => 'url']]); + + $this->jobList->expects($this->once())->method('remove'); + $this->trustedServers->expects($this->once())->method('isTrustedServer') + ->with('url')->willReturn($isTrustedServer); + if ($isTrustedServer) { + $getSharedSecret->expects($this->once())->method('parentExecute'); + } else { + $getSharedSecret->expects($this->never())->method('parentExecute'); + } + + $getSharedSecret->execute($this->jobList); + + } + + public function dataTestExecute() { + return [ + [true], + [false] + ]; + } + + /** + * @dataProvider dataTestRun + * + * @param int $statusCode + */ + public function testRun($statusCode) { + + $target = 'targetURL'; + $source = 'sourceURL'; + $token = 'token'; + + $argument = ['url' => $target, 'token' => $token]; + + $this->urlGenerator->expects($this->once())->method('getAbsoluteURL')->with('/') + ->willReturn($source); + $this->httpClient->expects($this->once())->method('get') + ->with( + $target . '/ocs/v2.php/apps/federation/api/v1/shared-secret?format=json', + [ + 'query' => + [ + 'url' => $source, + 'token' => $token + ], + 'timeout' => 3, + 'connect_timeout' => 3, + ] + )->willReturn($this->response); + + $this->response->expects($this->once())->method('getStatusCode') + ->willReturn($statusCode); + + if ( + $statusCode !== Http::STATUS_OK + && $statusCode !== Http::STATUS_FORBIDDEN + ) { + $this->jobList->expects($this->once())->method('add') + ->with('OCA\Federation\BackgroundJob\GetSharedSecret', $argument); + $this->dbHandler->expects($this->never())->method('addToken'); + } else { + $this->dbHandler->expects($this->once())->method('addToken')->with($target, ''); + $this->jobList->expects($this->never())->method('add'); + } + + if ($statusCode === Http::STATUS_OK) { + $this->response->expects($this->once())->method('getBody') + ->willReturn('{"ocs":{"data":{"sharedSecret":"secret"}}}'); + $this->trustedServers->expects($this->once())->method('addSharedSecret') + ->with($target, 'secret'); + } else { + $this->trustedServers->expects($this->never())->method('addSharedSecret'); + } + + $this->invokePrivate($this->getSharedSecret, 'run', [$argument]); + } + + public function dataTestRun() { + return [ + [Http::STATUS_OK], + [Http::STATUS_FORBIDDEN], + [Http::STATUS_CONFLICT], + ]; + } + +} diff --git a/apps/federation/tests/backgroundjob/requestsharedsecrettest.php b/apps/federation/tests/backgroundjob/requestsharedsecrettest.php new file mode 100644 index 00000000000..df81113c686 --- /dev/null +++ b/apps/federation/tests/backgroundjob/requestsharedsecrettest.php @@ -0,0 +1,169 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + + +namespace OCA\Federation\Tests\BackgroundJob; + + +use OCA\Federation\BackgroundJob\RequestSharedSecret; +use OCP\AppFramework\Http; +use Test\TestCase; + +class RequestSharedSecretTest extends TestCase { + + /** @var \PHPUnit_Framework_MockObject_MockObject | IClient */ + private $httpClient; + + /** @var \PHPUnit_Framework_MockObject_MockObject | IJobList */ + private $jobList; + + /** @var \PHPUnit_Framework_MockObject_MockObject | IURLGenerator */ + private $urlGenerator; + + /** @var \PHPUnit_Framework_MockObject_MockObject | DbHandler */ + private $dbHandler; + + /** @var \PHPUnit_Framework_MockObject_MockObject | TrustedServers */ + private $trustedServers; + + /** @var \PHPUnit_Framework_MockObject_MockObject | IResponse */ + private $response; + + /** @var RequestSharedSecret */ + private $requestSharedSecret; + + public function setUp() { + parent::setUp(); + + $this->httpClient = $this->getMock('OCP\Http\Client\IClient'); + $this->jobList = $this->getMock('OCP\BackgroundJob\IJobList'); + $this->urlGenerator = $this->getMock('OCP\IURLGenerator'); + $this->trustedServers = $this->getMockBuilder('OCA\Federation\TrustedServers') + ->disableOriginalConstructor()->getMock(); + $this->dbHandler = $this->getMockBuilder('OCA\Federation\DbHandler') + ->disableOriginalConstructor()->getMock(); + $this->response = $this->getMock('OCP\Http\Client\IResponse'); + + $this->requestSharedSecret = new RequestSharedSecret( + $this->httpClient, + $this->urlGenerator, + $this->jobList, + $this->trustedServers, + $this->dbHandler + ); + } + + /** + * @dataProvider dataTestExecute + * + * @param bool $isTrustedServer + */ + public function testExecute($isTrustedServer) { + /** @var RequestSharedSecret |\PHPUnit_Framework_MockObject_MockObject $requestSharedSecret */ + $requestSharedSecret = $this->getMockBuilder('OCA\Federation\BackgroundJob\RequestSharedSecret') + ->setConstructorArgs( + [ + $this->httpClient, + $this->urlGenerator, + $this->jobList, + $this->trustedServers, + $this->dbHandler + ] + )->setMethods(['parentExecute'])->getMock(); + $this->invokePrivate($requestSharedSecret, 'argument', [['url' => 'url']]); + + $this->jobList->expects($this->once())->method('remove'); + $this->trustedServers->expects($this->once())->method('isTrustedServer') + ->with('url')->willReturn($isTrustedServer); + if ($isTrustedServer) { + $requestSharedSecret->expects($this->once())->method('parentExecute'); + } else { + $requestSharedSecret->expects($this->never())->method('parentExecute'); + } + + $requestSharedSecret->execute($this->jobList); + + } + + public function dataTestExecute() { + return [ + [true], + [false] + ]; + } + + /** + * @dataProvider dataTestRun + * + * @param int $statusCode + */ + public function testRun($statusCode) { + + $target = 'targetURL'; + $source = 'sourceURL'; + $token = 'token'; + + $argument = ['url' => $target, 'token' => $token]; + + $this->urlGenerator->expects($this->once())->method('getAbsoluteURL')->with('/') + ->willReturn($source); + $this->httpClient->expects($this->once())->method('post') + ->with( + $target . '/ocs/v2.php/apps/federation/api/v1/request-shared-secret?format=json', + [ + 'body' => + [ + 'url' => $source, + 'token' => $token + ], + 'timeout' => 3, + 'connect_timeout' => 3, + ] + )->willReturn($this->response); + + $this->response->expects($this->once())->method('getStatusCode') + ->willReturn($statusCode); + + if ( + $statusCode !== Http::STATUS_OK + && $statusCode !== Http::STATUS_FORBIDDEN + ) { + $this->jobList->expects($this->once())->method('add') + ->with('OCA\Federation\BackgroundJob\RequestSharedSecret', $argument); + $this->dbHandler->expects($this->never())->method('addToken'); + } + + if ($statusCode === Http::STATUS_FORBIDDEN) { + $this->jobList->expects($this->never())->method('add'); + $this->dbHandler->expects($this->once())->method('addToken')->with($target, ''); + } + + $this->invokePrivate($this->requestSharedSecret, 'run', [$argument]); + } + + public function dataTestRun() { + return [ + [Http::STATUS_OK], + [Http::STATUS_FORBIDDEN], + [Http::STATUS_CONFLICT], + ]; + } +} diff --git a/apps/federation/tests/controller/settingscontrollertest.php b/apps/federation/tests/controller/settingscontrollertest.php new file mode 100644 index 00000000000..efbc6911c52 --- /dev/null +++ b/apps/federation/tests/controller/settingscontrollertest.php @@ -0,0 +1,166 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + + +namespace OCA\Federation\Tests\Controller; + + +use OCA\Federation\Controller\SettingsController; +use OCP\AppFramework\Http\DataResponse; +use Test\TestCase; + +class SettingsControllerTest extends TestCase { + + /** @var SettingsController */ + private $controller; + + /** @var \PHPUnit_Framework_MockObject_MockObject | \OCP\IRequest */ + private $request; + + /** @var \PHPUnit_Framework_MockObject_MockObject | \OCP\IL10N */ + private $l10n; + + /** @var \PHPUnit_Framework_MockObject_MockObject | \OCA\Federation\TrustedServers */ + private $trustedServers; + + public function setUp() { + parent::setUp(); + + $this->request = $this->getMock('OCP\IRequest'); + $this->l10n = $this->getMock('OCP\IL10N'); + $this->trustedServers = $this->getMockBuilder('OCA\Federation\TrustedServers') + ->disableOriginalConstructor()->getMock(); + + $this->controller = new SettingsController( + 'SettingsControllerTest', + $this->request, + $this->l10n, + $this->trustedServers + ); + } + + public function testAddServer() { + $this->trustedServers + ->expects($this->once()) + ->method('isTrustedServer') + ->with('url') + ->willReturn(false); + $this->trustedServers + ->expects($this->once()) + ->method('isOwnCloudServer') + ->with('url') + ->willReturn(true); + + $result = $this->controller->addServer('url'); + $this->assertTrue($result instanceof DataResponse); + + $data = $result->getData(); + $this->assertSame(200, $result->getStatus()); + $this->assertSame('url', $data['url']); + $this->assertArrayHasKey('id', $data); + } + + /** + * @dataProvider checkServerFails + * @expectedException \OC\HintException + * + * @param bool $isTrustedServer + * @param bool $isOwnCloud + */ + public function testAddServerFail($isTrustedServer, $isOwnCloud) { + $this->trustedServers + ->expects($this->any()) + ->method('isTrustedServer') + ->with('url') + ->willReturn($isTrustedServer); + $this->trustedServers + ->expects($this->any()) + ->method('isOwnCloudServer') + ->with('url') + ->willReturn($isOwnCloud); + + $this->controller->addServer('url'); + } + + public function testRemoveServer() { + $this->trustedServers->expects($this->once())->method('removeServer') + ->with('url'); + $result = $this->controller->removeServer('url'); + $this->assertTrue($result instanceof DataResponse); + $this->assertSame(200, $result->getStatus()); + } + + public function testCheckServer() { + $this->trustedServers + ->expects($this->once()) + ->method('isTrustedServer') + ->with('url') + ->willReturn(false); + $this->trustedServers + ->expects($this->once()) + ->method('isOwnCloudServer') + ->with('url') + ->willReturn(true); + + $this->assertTrue( + $this->invokePrivate($this->controller, 'checkServer', ['url']) + ); + + } + + /** + * @dataProvider checkServerFails + * @expectedException \OC\HintException + * + * @param bool $isTrustedServer + * @param bool $isOwnCloud + */ + public function testCheckServerFail($isTrustedServer, $isOwnCloud) { + $this->trustedServers + ->expects($this->any()) + ->method('isTrustedServer') + ->with('url') + ->willReturn($isTrustedServer); + $this->trustedServers + ->expects($this->any()) + ->method('isOwnCloudServer') + ->with('url') + ->willReturn($isOwnCloud); + + $this->assertTrue( + $this->invokePrivate($this->controller, 'checkServer', ['url']) + ); + + } + + /** + * data to simulate checkServer fails + * + * @return array + */ + public function checkServerFails() { + return [ + [true, true], + [false, false] + ]; + } + +} diff --git a/apps/federation/tests/lib/dbhandlertest.php b/apps/federation/tests/lib/dbhandlertest.php new file mode 100644 index 00000000000..e47df092f8c --- /dev/null +++ b/apps/federation/tests/lib/dbhandlertest.php @@ -0,0 +1,243 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + + +namespace OCA\Federation\Tests\lib; + + +use OCA\Federation\DbHandler; +use OCA\Federation\TrustedServers; +use OCP\IDBConnection; +use Test\TestCase; + +/** + * @group DB + */ +class DbHandlerTest extends TestCase { + + /** @var DbHandler */ + private $dbHandler; + + /** @var \PHPUnit_Framework_MockObject_MockObject */ + private $il10n; + + /** @var IDBConnection */ + private $connection; + + /** @var string */ + private $dbTable = 'trusted_servers'; + + public function setUp() { + parent::setUp(); + + $this->connection = \OC::$server->getDatabaseConnection(); + $this->il10n = $this->getMock('OCP\IL10N'); + + $this->dbHandler = new DbHandler( + $this->connection, + $this->il10n + ); + + $query = $this->connection->getQueryBuilder()->select('*')->from($this->dbTable); + $result = $query->execute()->fetchAll(); + $this->assertEmpty($result, 'we need to start with a empty trusted_servers table'); + } + + public function tearDown() { + parent::tearDown(); + $query = $this->connection->getQueryBuilder()->delete($this->dbTable); + $query->execute(); + } + + public function testAddServer() { + $id = $this->dbHandler->addServer('server1'); + + $query = $this->connection->getQueryBuilder()->select('*')->from($this->dbTable); + $result = $query->execute()->fetchAll(); + $this->assertSame(1, count($result)); + $this->assertSame('server1', $result[0]['url']); + $this->assertSame($id, (int)$result[0]['id']); + $this->assertSame(TrustedServers::STATUS_PENDING, (int)$result[0]['status']); + } + + public function testRemove() { + $id1 = $this->dbHandler->addServer('server1'); + $id2 = $this->dbHandler->addServer('server2'); + + $query = $this->connection->getQueryBuilder()->select('*')->from($this->dbTable); + $result = $query->execute()->fetchAll(); + $this->assertSame(2, count($result)); + $this->assertSame('server1', $result[0]['url']); + $this->assertSame('server2', $result[1]['url']); + $this->assertSame($id1, (int)$result[0]['id']); + $this->assertSame($id2, (int)$result[1]['id']); + + $this->dbHandler->removeServer($id2); + $query = $this->connection->getQueryBuilder()->select('*')->from($this->dbTable); + $result = $query->execute()->fetchAll(); + $this->assertSame(1, count($result)); + $this->assertSame('server1', $result[0]['url']); + $this->assertSame($id1, (int)$result[0]['id']); + } + + public function testGetAll() { + $id1 = $this->dbHandler->addServer('server1'); + $id2 = $this->dbHandler->addServer('server2'); + + $result = $this->dbHandler->getAllServer(); + $this->assertSame(2, count($result)); + $this->assertSame('server1', $result[0]['url']); + $this->assertSame('server2', $result[1]['url']); + $this->assertSame($id1, (int)$result[0]['id']); + $this->assertSame($id2, (int)$result[1]['id']); + } + + /** + * @dataProvider dataTestServerExists + * + * @param string $serverInTable + * @param string $checkForServer + * @param bool $expected + */ + public function testServerExists($serverInTable, $checkForServer, $expected) { + $this->dbHandler->addServer($serverInTable); + $this->assertSame($expected, + $this->dbHandler->serverExists($checkForServer) + ); + } + + public function dataTestServerExists() { + return [ + ['server1', 'server1', true], + ['server1', 'http://server1', true], + ['server1', 'server2', false] + ]; + } + + public function testAddToken() { + $this->dbHandler->addServer('server1'); + $query = $this->connection->getQueryBuilder()->select('*')->from($this->dbTable); + $result = $query->execute()->fetchAll(); + $this->assertSame(1, count($result)); + $this->assertSame(null, $result[0]['token']); + $this->dbHandler->addToken('http://server1', 'token'); + $query = $this->connection->getQueryBuilder()->select('*')->from($this->dbTable); + $result = $query->execute()->fetchAll(); + $this->assertSame(1, count($result)); + $this->assertSame('token', $result[0]['token']); + } + + public function testGetToken() { + $this->dbHandler->addServer('server1'); + $this->dbHandler->addToken('http://server1', 'token'); + $this->assertSame('token', + $this->dbHandler->getToken('https://server1') + ); + } + + public function testAddSharedSecret() { + $this->dbHandler->addServer('server1'); + $query = $this->connection->getQueryBuilder()->select('*')->from($this->dbTable); + $result = $query->execute()->fetchAll(); + $this->assertSame(1, count($result)); + $this->assertSame(null, $result[0]['shared_secret']); + $this->dbHandler->addSharedSecret('http://server1', 'secret'); + $query = $this->connection->getQueryBuilder()->select('*')->from($this->dbTable); + $result = $query->execute()->fetchAll(); + $this->assertSame(1, count($result)); + $this->assertSame('secret', $result[0]['shared_secret']); + } + + public function testGetSharedSecret() { + $this->dbHandler->addServer('server1'); + $this->dbHandler->addSharedSecret('http://server1', 'secret'); + $this->assertSame('secret', + $this->dbHandler->getSharedSecret('https://server1') + ); + } + + public function testSetServerStatus() { + $this->dbHandler->addServer('server1'); + $query = $this->connection->getQueryBuilder()->select('*')->from($this->dbTable); + $result = $query->execute()->fetchAll(); + $this->assertSame(1, count($result)); + $this->assertSame(TrustedServers::STATUS_PENDING, (int)$result[0]['status']); + $this->dbHandler->setServerStatus('http://server1', TrustedServers::STATUS_OK); + $query = $this->connection->getQueryBuilder()->select('*')->from($this->dbTable); + $result = $query->execute()->fetchAll(); + $this->assertSame(1, count($result)); + $this->assertSame(TrustedServers::STATUS_OK, (int)$result[0]['status']); + } + + public function testGetServerStatus() { + $this->dbHandler->addServer('server1'); + $this->dbHandler->setServerStatus('http://server1', TrustedServers::STATUS_OK); + $this->assertSame(TrustedServers::STATUS_OK, + $this->dbHandler->getServerStatus('https://server1') + ); + } + + /** + * hash should always be computed with the normalized URL + * + * @dataProvider dataTestHash + * + * @param string $url + * @param string $expected + */ + public function testHash($url, $expected) { + $this->assertSame($expected, + $this->invokePrivate($this->dbHandler, 'hash', [$url]) + ); + } + + public function dataTestHash() { + return [ + ['server1', md5('server1')], + ['http://server1', md5('server1')], + ['https://server1', md5('server1')], + ['http://server1/', md5('server1')], + ]; + } + + /** + * @dataProvider dataTestNormalizeUrl + * + * @param string $url + * @param string $expected + */ + public function testNormalizeUrl($url, $expected) { + $this->assertSame($expected, + $this->invokePrivate($this->dbHandler, 'normalizeUrl', [$url]) + ); + } + + public function dataTestNormalizeUrl() { + return [ + ['owncloud.org', 'owncloud.org'], + ['http://owncloud.org', 'owncloud.org'], + ['https://owncloud.org', 'owncloud.org'], + ['https://owncloud.org//mycloud', 'owncloud.org/mycloud'], + ['https://owncloud.org/mycloud/', 'owncloud.org/mycloud'], + ]; + } + +} diff --git a/apps/federation/tests/lib/trustedserverstest.php b/apps/federation/tests/lib/trustedserverstest.php new file mode 100644 index 00000000000..d067cd1c185 --- /dev/null +++ b/apps/federation/tests/lib/trustedserverstest.php @@ -0,0 +1,344 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + + +namespace OCA\Federation\Tests\lib; + + +use OCA\Federation\DbHandler; +use OCA\Federation\TrustedServers; +use OCP\BackgroundJob\IJobList; +use OCP\Http\Client\IClient; +use OCP\Http\Client\IClientService; +use OCP\Http\Client\IResponse; +use OCP\IConfig; +use OCP\ILogger; +use OCP\Security\ISecureRandom; +use Test\TestCase; + +class TrustedServersTest extends TestCase { + + /** @var TrustedServers */ + private $trustedServers; + + /** @var \PHPUnit_Framework_MockObject_MockObject | DbHandler */ + private $dbHandler; + + /** @var \PHPUnit_Framework_MockObject_MockObject | IClientService */ + private $httpClientService; + + /** @var \PHPUnit_Framework_MockObject_MockObject | IClient */ + private $httpClient; + + /** @var \PHPUnit_Framework_MockObject_MockObject | IResponse */ + private $response; + + /** @var \PHPUnit_Framework_MockObject_MockObject | ILogger */ + private $logger; + + /** @var \PHPUnit_Framework_MockObject_MockObject | IJobList */ + private $jobList; + + /** @var \PHPUnit_Framework_MockObject_MockObject | ISecureRandom */ + private $secureRandom; + + /** @var \PHPUnit_Framework_MockObject_MockObject | IConfig */ + private $config; + + public function setUp() { + parent::setUp(); + + $this->dbHandler = $this->getMockBuilder('\OCA\Federation\DbHandler') + ->disableOriginalConstructor()->getMock(); + $this->httpClientService = $this->getMock('OCP\Http\Client\IClientService'); + $this->httpClient = $this->getMock('OCP\Http\Client\IClient'); + $this->response = $this->getMock('OCP\Http\Client\IResponse'); + $this->logger = $this->getMock('OCP\ILogger'); + $this->jobList = $this->getMock('OCP\BackgroundJob\IJobList'); + $this->secureRandom = $this->getMock('OCP\Security\ISecureRandom'); + $this->config = $this->getMock('OCP\IConfig'); + + $this->trustedServers = new TrustedServers( + $this->dbHandler, + $this->httpClientService, + $this->logger, + $this->jobList, + $this->secureRandom, + $this->config + ); + + } + + /** + * @dataProvider dataTrueFalse + * + * @param bool $success + */ + public function testAddServer($success) { + /** @var \PHPUnit_Framework_MockObject_MockObject | TrustedServers $trustedServer */ + $trustedServers = $this->getMockBuilder('OCA\Federation\TrustedServers') + ->setConstructorArgs( + [ + $this->dbHandler, + $this->httpClientService, + $this->logger, + $this->jobList, + $this->secureRandom, + $this->config + ] + ) + ->setMethods(['normalizeUrl', 'updateProtocol']) + ->getMock(); + $trustedServers->expects($this->once())->method('updateProtocol') + ->with('url')->willReturn('https://url'); + $this->dbHandler->expects($this->once())->method('addServer')->with('https://url') + ->willReturn($success); + + if ($success) { + $this->secureRandom->expects($this->once())->method('getMediumStrengthGenerator') + ->willReturn($this->secureRandom); + $this->secureRandom->expects($this->once())->method('generate') + ->willReturn('token'); + $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']); + } else { + $this->jobList->expects($this->never())->method('add'); + } + + $this->assertSame($success, + $trustedServers->addServer('url') + ); + } + + public function dataTrueFalse() { + return [ + [true], + [false] + ]; + } + + /** + * @dataProvider dataTrueFalse + * + * @param bool $status + */ + public function testSetAutoAddServers($status) { + if ($status) { + $this->config->expects($this->once())->method('setAppValue') + ->with('federation', 'autoAddServers', '1'); + } else { + $this->config->expects($this->once())->method('setAppValue') + ->with('federation', 'autoAddServers', '0'); + } + + $this->trustedServers->setAutoAddServers($status); + } + + /** + * @dataProvider dataTestGetAutoAddServers + * + * @param string $status + * @param bool $expected + */ + public function testGetAutoAddServers($status, $expected) { + $this->config->expects($this->once())->method('getAppValue') + ->with('federation', 'autoAddServers', '1')->willReturn($status); + + $this->assertSame($expected, + $this->trustedServers->getAutoAddServers($status) + ); + } + + public function dataTestGetAutoAddServers() { + return [ + ['1', true], + ['0', false] + ]; + } + + public function testAddSharedSecret() { + $this->dbHandler->expects($this->once())->method('addSharedSecret') + ->with('url', 'secret'); + $this->trustedServers->addSharedSecret('url', 'secret'); + } + + public function testGetSharedSecret() { + $this->dbHandler->expects($this->once())->method('getSharedSecret') + ->with('url')->willReturn(true); + $this->assertTrue( + $this->trustedServers->getSharedSecret('url') + ); + } + + public function testRemoveServer() { + $id = 42; + $this->dbHandler->expects($this->once())->method('removeServer')->with($id); + $this->trustedServers->removeServer($id); + } + + public function testGetServers() { + $this->dbHandler->expects($this->once())->method('getAllServer')->willReturn(true); + + $this->assertTrue( + $this->trustedServers->getServers() + ); + } + + + public function testIsTrustedServer() { + $this->dbHandler->expects($this->once())->method('serverExists')->with('url') + ->willReturn(true); + + $this->assertTrue( + $this->trustedServers->isTrustedServer('url') + ); + } + + public function testSetServerStatus() { + $this->dbHandler->expects($this->once())->method('setServerStatus') + ->with('url', 'status'); + $this->trustedServers->setServerStatus('url', 'status'); + } + + public function testGetServerStatus() { + $this->dbHandler->expects($this->once())->method('getServerStatus') + ->with('url')->willReturn(true); + $this->assertTrue( + $this->trustedServers->getServerStatus('url') + ); + } + + /** + * @dataProvider dataTestIsOwnCloudServer + * + * @param int $statusCode + * @param bool $isValidOwnCloudVersion + * @param bool $expected + */ + public function testIsOwnCloudServer($statusCode, $isValidOwnCloudVersion, $expected) { + + $server = 'server1'; + + /** @var \PHPUnit_Framework_MockObject_MockObject | TrustedServers $trustedServer */ + $trustedServers = $this->getMockBuilder('OCA\Federation\TrustedServers') + ->setConstructorArgs( + [ + $this->dbHandler, + $this->httpClientService, + $this->logger, + $this->jobList, + $this->secureRandom, + $this->config + ] + ) + ->setMethods(['checkOwnCloudVersion']) + ->getMock(); + + $this->httpClientService->expects($this->once())->method('newClient') + ->willReturn($this->httpClient); + + $this->httpClient->expects($this->once())->method('get')->with($server . '/status.php') + ->willReturn($this->response); + + $this->response->expects($this->once())->method('getStatusCode') + ->willReturn($statusCode); + + if ($statusCode === 200) { + $trustedServers->expects($this->once())->method('checkOwnCloudVersion') + ->willReturn($isValidOwnCloudVersion); + } else { + $trustedServers->expects($this->never())->method('checkOwnCloudVersion'); + } + + $this->assertSame($expected, + $trustedServers->isOwnCloudServer($server) + ); + + } + + public function dataTestIsOwnCloudServer() { + return [ + [200, true, true], + [200, false, false], + [404, true, false], + ]; + } + + public function testIsOwnCloudServerFail() { + $server = 'server1'; + + $this->httpClientService->expects($this->once())->method('newClient') + ->willReturn($this->httpClient); + + $this->logger->expects($this->once())->method('error') + ->with('simulated exception', ['app' => 'federation']); + + $this->httpClient->expects($this->once())->method('get')->with($server . '/status.php') + ->willReturnCallback(function () { + throw new \Exception('simulated exception'); + }); + + $this->assertFalse($this->trustedServers->isOwnCloudServer($server)); + + } + + /** + * @dataProvider dataTestCheckOwnCloudVersion + * + * @param $statusphp + * @param $expected + */ + public function testCheckOwnCloudVersion($statusphp, $expected) { + $this->assertSame($expected, + $this->invokePrivate($this->trustedServers, 'checkOwnCloudVersion', [$statusphp]) + ); + } + + public function dataTestCheckOwnCloudVersion() { + return [ + ['{"version":"8.4.0"}', false], + ['{"version":"9.0.0"}', true], + ['{"version":"9.1.0"}', true] + ]; + } + + /** + * @dataProvider dataTestUpdateProtocol + * @param string $url + * @param string $expected + */ + public function testUpdateProtocol($url, $expected) { + $this->assertSame($expected, + $this->invokePrivate($this->trustedServers, 'updateProtocol', [$url]) + ); + } + + public function dataTestUpdateProtocol() { + return [ + ['http://owncloud.org', 'http://owncloud.org'], + ['https://owncloud.org', 'https://owncloud.org'], + ['owncloud.org', 'https://owncloud.org'], + ['httpserver', 'https://httpserver'], + ]; + } +} diff --git a/apps/federation/tests/middleware/addservermiddlewaretest.php b/apps/federation/tests/middleware/addservermiddlewaretest.php new file mode 100644 index 00000000000..1be5a342285 --- /dev/null +++ b/apps/federation/tests/middleware/addservermiddlewaretest.php @@ -0,0 +1,100 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + + +namespace OCA\Federation\Tests\Middleware; + + +use OC\HintException; +use OCA\Federation\Middleware\AddServerMiddleware; +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http; +use Test\TestCase; + +class AddServerMiddlewareTest extends TestCase { + + /** @var \PHPUnit_Framework_MockObject_MockObject | ILogger */ + private $logger; + + /** @var \PHPUnit_Framework_MockObject_MockObject | \OCP\IL10N */ + private $l10n; + + /** @var AddServerMiddleware */ + private $middleware; + + /** @var \PHPUnit_Framework_MockObject_MockObject | Controller */ + private $controller; + + public function setUp() { + parent::setUp(); + + $this->logger = $this->getMock('OCP\ILogger'); + $this->l10n = $this->getMock('OCP\IL10N'); + $this->controller = $this->getMockBuilder('OCP\AppFramework\Controller') + ->disableOriginalConstructor()->getMock(); + + $this->middleware = new AddServerMiddleware( + 'AddServerMiddlewareTest', + $this->l10n, + $this->logger + ); + } + + /** + * @dataProvider dataTestAfterException + * + * @param \Exception $exception + * @param string $message + * @param string $hint + */ + public function testAfterException($exception, $message, $hint) { + + $this->logger->expects($this->once())->method('error') + ->with($message, ['app' => 'AddServerMiddlewareTest']); + + $this->l10n->expects($this->any())->method('t') + ->willReturnCallback( + function($message) { + return $message; + } + ); + + $result = $this->middleware->afterException($this->controller, 'method', $exception); + + $this->assertSame(Http::STATUS_BAD_REQUEST, + $result->getStatus() + ); + + $data = $result->getData(); + + $this->assertSame($hint, + $data['message'] + ); + } + + public function dataTestAfterException() { + return [ + [new HintException('message', 'hint'), 'message', 'hint'], + [new \Exception('message'), 'message', 'Unknown error'], + ]; + } + +} diff --git a/apps/files/ajax/delete.php b/apps/files/ajax/delete.php deleted file mode 100644 index 2d02869df14..00000000000 --- a/apps/files/ajax/delete.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php -/** - * @author Arthur Schiwon <blizzz@owncloud.com> - * @author Frank Karlitschek <frank@owncloud.org> - * @author Jakob Sack <mail@jakobsack.de> - * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> - * @author Lukas Reschke <lukas@owncloud.com> - * @author Robin Appelman <icewind@owncloud.com> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Vincent Petry <pvince81@owncloud.com> - * - * @copyright Copyright (c) 2015, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * - */ -OCP\JSON::checkLoggedIn(); -OCP\JSON::callCheck(); -\OC::$server->getSession()->close(); - - -// Get data -$dir = isset($_POST['dir']) ? (string)$_POST['dir'] : ''; -$allFiles = isset($_POST["allfiles"]) ? (string)$_POST["allfiles"] : false; - -// delete all files in dir ? -if ($allFiles === 'true') { - $files = array(); - $fileList = \OC\Files\Filesystem::getDirectoryContent($dir); - foreach ($fileList as $fileInfo) { - $files[] = $fileInfo['name']; - } -} else { - $files = isset($_POST["file"]) ? (string)$_POST["file"] : (string)$_POST["files"]; - $files = json_decode($files); -} -$filesWithError = ''; - -$success = true; - -//Now delete -foreach ($files as $file) { - try { - if (\OC\Files\Filesystem::file_exists($dir . '/' . $file) && - !(\OC\Files\Filesystem::isDeletable($dir . '/' . $file) && - \OC\Files\Filesystem::unlink($dir . '/' . $file)) - ) { - $filesWithError .= $file . "\n"; - $success = false; - } - } catch (\Exception $e) { - $filesWithError .= $file . "\n"; - $success = false; - } -} - -// get array with updated storage stats (e.g. max file size) after upload -try { - $storageStats = \OCA\Files\Helper::buildFileStorageStatistics($dir); -} catch(\OCP\Files\NotFoundException $e) { - OCP\JSON::error(['data' => ['message' => 'File not found']]); - return; -} - -if ($success) { - OCP\JSON::success(array("data" => array_merge(array("dir" => $dir, "files" => $files), $storageStats))); -} else { - OCP\JSON::error(array("data" => array_merge(array("message" => "Could not delete:\n" . $filesWithError), $storageStats))); -} diff --git a/apps/files/ajax/move.php b/apps/files/ajax/move.php deleted file mode 100644 index 0961636a116..00000000000 --- a/apps/files/ajax/move.php +++ /dev/null @@ -1,59 +0,0 @@ -<?php -/** - * @author Björn Schießle <schiessle@owncloud.com> - * @author Frank Karlitschek <frank@owncloud.org> - * @author Georg Ehrke <georg@owncloud.com> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> - * @author Lukas Reschke <lukas@owncloud.com> - * @author Robin Appelman <icewind@owncloud.com> - * @author Vincent Petry <pvince81@owncloud.com> - * - * @copyright Copyright (c) 2015, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * - */ -OCP\JSON::checkLoggedIn(); -OCP\JSON::callCheck(); -\OC::$server->getSession()->close(); - -// Get data -$dir = isset($_POST['dir']) ? (string)$_POST['dir'] : ''; -$file = isset($_POST['file']) ? (string)$_POST['file'] : ''; -$target = isset($_POST['target']) ? rawurldecode((string)$_POST['target']) : ''; - -$l = \OC::$server->getL10N('files'); - -if(\OC\Files\Filesystem::file_exists($target . '/' . $file)) { - OCP\JSON::error(array("data" => array( "message" => $l->t("Could not move %s - File with this name already exists", array($file)) ))); - exit; -} - -if ($target != '' || strtolower($file) != 'shared') { - $targetFile = \OC\Files\Filesystem::normalizePath($target . '/' . $file); - $sourceFile = \OC\Files\Filesystem::normalizePath($dir . '/' . $file); - try { - if(\OC\Files\Filesystem::rename($sourceFile, $targetFile)) { - OCP\JSON::success(array("data" => array( "dir" => $dir, "files" => $file ))); - } else { - OCP\JSON::error(array("data" => array( "message" => $l->t("Could not move %s", array($file)) ))); - } - } catch (\OCP\Files\NotPermittedException $e) { - OCP\JSON::error(array("data" => array( "message" => $l->t("Permission denied") ))); - } catch (\Exception $e) { - OCP\JSON::error(array("data" => array( "message" => $e->getMessage()))); - } -}else{ - OCP\JSON::error(array("data" => array( "message" => $l->t("Could not move %s", array($file)) ))); -} diff --git a/apps/files/ajax/newfile.php b/apps/files/ajax/newfile.php deleted file mode 100644 index be09b288d4b..00000000000 --- a/apps/files/ajax/newfile.php +++ /dev/null @@ -1,103 +0,0 @@ -<?php -/** - * @author Andreas Fischer <bantu@owncloud.com> - * @author Georg Ehrke <georg@owncloud.com> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> - * @author Lukas Reschke <lukas@owncloud.com> - * @author Robin Appelman <icewind@owncloud.com> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Vincent Petry <pvince81@owncloud.com> - * - * @copyright Copyright (c) 2015, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * - */ -// Init owncloud -global $eventSource; - -\OCP\JSON::checkLoggedIn(); -\OCP\JSON::callCheck(); - -\OC::$server->getSession()->close(); - -// Get the params -$dir = isset( $_REQUEST['dir'] ) ? '/'.trim((string)$_REQUEST['dir'], '/\\') : ''; -$fileName = isset( $_REQUEST['filename'] ) ? trim((string)$_REQUEST['filename'], '/\\') : ''; - -$l10n = \OC::$server->getL10N('files'); - -$result = array( - 'success' => false, - 'data' => NULL -); - -try { - \OC\Files\Filesystem::getView()->verifyPath($dir, $fileName); -} catch (\OCP\Files\InvalidPathException $ex) { - $result['data'] = [ - 'message' => $ex->getMessage()]; - OCP\JSON::error($result); - return; -} - -if (!\OC\Files\Filesystem::file_exists($dir . '/')) { - $result['data'] = array('message' => (string)$l10n->t( - 'The target folder has been moved or deleted.'), - 'code' => 'targetnotfound' - ); - OCP\JSON::error($result); - exit(); -} - -$target = $dir.'/'.$fileName; - -if (\OC\Files\Filesystem::file_exists($target)) { - $result['data'] = array('message' => (string)$l10n->t( - 'The name %s is already used in the folder %s. Please choose a different name.', - array($fileName, $dir)) - ); - OCP\JSON::error($result); - exit(); -} - -$success = false; -$templateManager = OC_Helper::getFileTemplateManager(); -$mimeType = OC_Helper::getMimetypeDetector()->detectPath($target); -$content = $templateManager->getTemplate($mimeType); - -try { - if($content) { - $success = \OC\Files\Filesystem::file_put_contents($target, $content); - } else { - $success = \OC\Files\Filesystem::touch($target); - } -} catch (\Exception $e) { - $result = [ - 'success' => false, - 'data' => [ - 'message' => $e->getMessage() - ] - ]; - OCP\JSON::error($result); - exit(); -} - -if($success) { - $meta = \OC\Files\Filesystem::getFileInfo($target); - OCP\JSON::success(array('data' => \OCA\Files\Helper::formatFileInfo($meta))); - return; -} - -OCP\JSON::error(array('data' => array( 'message' => $l10n->t('Error when creating the file') ))); diff --git a/apps/files/ajax/newfolder.php b/apps/files/ajax/newfolder.php deleted file mode 100644 index a2897dd437a..00000000000 --- a/apps/files/ajax/newfolder.php +++ /dev/null @@ -1,99 +0,0 @@ -<?php -/** - * @author Arthur Schiwon <blizzz@owncloud.com> - * @author Björn Schießle <schiessle@owncloud.com> - * @author Frank Karlitschek <frank@owncloud.org> - * @author Georg Ehrke <georg@owncloud.com> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> - * @author Lukas Reschke <lukas@owncloud.com> - * @author Robin Appelman <icewind@owncloud.com> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Vincent Petry <pvince81@owncloud.com> - * - * @copyright Copyright (c) 2015, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * - */ -// Init owncloud - - -OCP\JSON::checkLoggedIn(); -OCP\JSON::callCheck(); -\OC::$server->getSession()->close(); - -// Get the params -$dir = isset($_POST['dir']) ? (string)$_POST['dir'] : ''; -$folderName = isset($_POST['foldername']) ?(string) $_POST['foldername'] : ''; - -$l10n = \OC::$server->getL10N('files'); - -$result = array( - 'success' => false, - 'data' => NULL - ); - -try { - \OC\Files\Filesystem::getView()->verifyPath($dir, $folderName); -} catch (\OCP\Files\InvalidPathException $ex) { - $result['data'] = [ - 'message' => $ex->getMessage()]; - OCP\JSON::error($result); - return; -} - -if (!\OC\Files\Filesystem::file_exists($dir . '/')) { - $result['data'] = array('message' => (string)$l10n->t( - 'The target folder has been moved or deleted.'), - 'code' => 'targetnotfound' - ); - OCP\JSON::error($result); - exit(); -} - -$target = $dir . '/' . $folderName; - -if (\OC\Files\Filesystem::file_exists($target)) { - $result['data'] = array('message' => $l10n->t( - 'The name %s is already used in the folder %s. Please choose a different name.', - array($folderName, $dir)) - ); - OCP\JSON::error($result); - exit(); -} - -try { - if(\OC\Files\Filesystem::mkdir($target)) { - if ( $dir !== '/') { - $path = $dir.'/'.$folderName; - } else { - $path = '/'.$folderName; - } - $meta = \OC\Files\Filesystem::getFileInfo($path); - $meta['type'] = 'dir'; // missing ?! - OCP\JSON::success(array('data' => \OCA\Files\Helper::formatFileInfo($meta))); - exit(); - } -} catch (\Exception $e) { - $result = [ - 'success' => false, - 'data' => [ - 'message' => $e->getMessage() - ] - ]; - OCP\JSON::error($result); - exit(); -} - -OCP\JSON::error(array('data' => array( 'message' => $l10n->t('Error when creating the folder') ))); diff --git a/apps/files/ajax/rename.php b/apps/files/ajax/rename.php deleted file mode 100644 index a24a57b1046..00000000000 --- a/apps/files/ajax/rename.php +++ /dev/null @@ -1,58 +0,0 @@ -<?php -/** - * @author Christopher Schäpers <kondou@ts.unde.re> - * @author Frank Karlitschek <frank@owncloud.org> - * @author Jakob Sack <mail@jakobsack.de> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> - * @author Lukas Reschke <lukas@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <icewind@owncloud.com> - * @author Vincent Petry <pvince81@owncloud.com> - * - * @copyright Copyright (c) 2015, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * - */ - -OCP\JSON::checkLoggedIn(); -OCP\JSON::callCheck(); -\OC::$server->getSession()->close(); - -$l10n = \OC::$server->getL10N('files'); - -$files = new \OCA\Files\App( - \OC\Files\Filesystem::getView(), - \OC::$server->getL10N('files') -); -try { - $result = $files->rename( - isset($_GET['dir']) ? (string)$_GET['dir'] : '', - isset($_GET['file']) ? (string)$_GET['file'] : '', - isset($_GET['newname']) ? (string)$_GET['newname'] : '' - ); -} catch (\Exception $e) { - $result = [ - 'success' => false, - 'data' => [ - 'message' => $e->getMessage() - ] - ]; -} - -if($result['success'] === true){ - OCP\JSON::success(['data' => $result['data']]); -} else { - OCP\JSON::error(['data' => $result['data']]); -} diff --git a/apps/files/ajax/upload.php b/apps/files/ajax/upload.php index a784642728f..18e9cfe6117 100644 --- a/apps/files/ajax/upload.php +++ b/apps/files/ajax/upload.php @@ -41,7 +41,6 @@ OCP\JSON::setContentTypeHeader('text/plain'); // If not, check the login. // If no token is sent along, rely on login only -$allowedPermissions = \OCP\Constants::PERMISSION_ALL; $errorCode = null; $l = \OC::$server->getL10N('files'); @@ -60,8 +59,6 @@ if (empty($_POST['dirToken'])) { \OC_User::setIncognitoMode(true); - // return only read permissions for public upload - $allowedPermissions = \OCP\Constants::PERMISSION_READ; $publicDirectory = !empty($_POST['subdir']) ? (string)$_POST['subdir'] : '/'; $linkItem = OCP\Share::getShareByToken((string)$_POST['dirToken']); @@ -207,7 +204,7 @@ if (\OC\Files\Filesystem::isValidPath($dir) === true) { $data['originalname'] = $files['name'][$i]; $data['uploadMaxFilesize'] = $maxUploadFileSize; $data['maxHumanFilesize'] = $maxHumanFileSize; - $data['permissions'] = $meta['permissions'] & $allowedPermissions; + $data['permissions'] = $meta['permissions']; $data['directory'] = $returnedDir; $result[] = $data; } @@ -234,7 +231,7 @@ if (\OC\Files\Filesystem::isValidPath($dir) === true) { $data['originalname'] = $files['name'][$i]; $data['uploadMaxFilesize'] = $maxUploadFileSize; $data['maxHumanFilesize'] = $maxHumanFileSize; - $data['permissions'] = $meta['permissions'] & $allowedPermissions; + $data['permissions'] = $meta['permissions']; $data['directory'] = $returnedDir; $result[] = $data; } diff --git a/apps/files/appinfo/info.xml b/apps/files/appinfo/info.xml index ba8bb62494e..4ab226f3968 100644 --- a/apps/files/appinfo/info.xml +++ b/apps/files/appinfo/info.xml @@ -8,7 +8,7 @@ <shipped>true</shipped> <standalone/> <default_enable/> - <version>1.3.0</version> + <version>1.4.0</version> <types> <filesystem/> </types> diff --git a/apps/files/controller/viewcontroller.php b/apps/files/controller/viewcontroller.php index c274680e525..1d1a9111d19 100644 --- a/apps/files/controller/viewcontroller.php +++ b/apps/files/controller/viewcontroller.php @@ -119,6 +119,8 @@ class ViewController extends Controller { * @throws \OCP\Files\NotFoundException */ public function index($dir = '', $view = '') { + $nav = new \OCP\Template('files', 'appnavigation', ''); + // Load the files we need \OCP\Util::addStyle('files', 'files'); \OCP\Util::addStyle('files', 'upload'); @@ -169,8 +171,6 @@ class ViewController extends Controller { // FIXME: Make non static $storageInfo = $this->getStorageInfo(); - $nav = new \OCP\Template('files', 'appnavigation', ''); - \OCA\Files\App::getNavigationManager()->add( [ 'id' => 'favorites', diff --git a/apps/files/js/app.js b/apps/files/js/app.js index f31770466fe..ff505d417f1 100644 --- a/apps/files/js/app.js +++ b/apps/files/js/app.js @@ -71,7 +71,8 @@ folderDropOptions: folderDropOptions, fileActions: fileActions, allowLegacyActions: true, - scrollTo: urlParams.scrollto + scrollTo: urlParams.scrollto, + filesClient: OC.Files.getClient() } ); this.files.initialize(); diff --git a/apps/files/js/favoritesplugin.js b/apps/files/js/favoritesplugin.js index 417a32ef804..454a505c7bd 100644 --- a/apps/files/js/favoritesplugin.js +++ b/apps/files/js/favoritesplugin.js @@ -92,7 +92,7 @@ // folder in the files app instead of opening it directly fileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function (filename, context) { OCA.Files.App.setActiveView('files', {silent: true}); - OCA.Files.App.fileList.changeDirectory(context.$file.attr('data-path') + '/' + filename, true, true); + OCA.Files.App.fileList.changeDirectory(OC.joinPaths(context.$file.attr('data-path'), filename), true, true); }); fileActions.setDefault('dir', 'Open'); return fileActions; diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js index 6a767d48a28..871a2149c88 100644 --- a/apps/files/js/fileactions.js +++ b/apps/files/js/fileactions.js @@ -575,7 +575,8 @@ }, actionHandler: function (filename, context) { var dir = context.dir || context.fileList.getCurrentDirectory(); - var url = context.fileList.getDownloadUrl(filename, dir); + var isDir = context.$file.attr('data-type') === 'dir'; + var url = context.fileList.getDownloadUrl(filename, dir, isDir); var downloadFileaction = $(context.$file).find('.fileactions .action-download'); @@ -611,10 +612,7 @@ this.register('dir', 'Open', OC.PERMISSION_READ, '', function (filename, context) { var dir = context.$file.attr('data-path') || context.fileList.getCurrentDirectory(); - if (dir !== '/') { - dir = dir + '/'; - } - context.fileList.changeDirectory(dir + filename); + context.fileList.changeDirectory(OC.joinPaths(dir, filename)); }); this.registerAction({ diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index d1f68d98eab..672c39a8bb1 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -22,11 +22,12 @@ * * @param $el container element with existing markup for the #controls * and a table - * @param [options] map of options, see other parameters - * @param [options.scrollContainer] scrollable container, defaults to $(window) - * @param [options.dragOptions] drag options, disabled by default - * @param [options.folderDropOptions] folder drop options, disabled by default - * @param [options.detailsViewEnabled=true] whether to enable details view + * @param {Object} [options] map of options, see other parameters + * @param {Object} [options.scrollContainer] scrollable container, defaults to $(window) + * @param {Object} [options.dragOptions] drag options, disabled by default + * @param {Object} [options.folderDropOptions] folder drop options, disabled by default + * @param {boolean} [options.detailsViewEnabled=true] whether to enable details view + * @param {OC.Files.Client} [options.filesClient] files client to use */ var FileList = function($el, options) { this.initialize($el, options); @@ -74,6 +75,13 @@ _detailsView: null, /** + * Files client instance + * + * @type OC.Files.Client + */ + filesClient: null, + + /** * Whether the file list was initialized already. * @type boolean */ @@ -92,11 +100,18 @@ * Array of files in the current folder. * The entries are of file data. * - * @type Array.<Object> + * @type Array.<OC.Files.FileInfo> */ files: [], /** + * Current directory entry + * + * @type OC.Files.FileInfo + */ + dirInfo: null, + + /** * File actions handler, defaults to OCA.Files.FileActions * @type OCA.Files.FileActions */ @@ -149,7 +164,7 @@ * When false, clicking on a table header will call reload(). * When true, clicking on a table header will simply resort the list. */ - _clientSideSort: false, + _clientSideSort: true, /** * Current directory @@ -170,6 +185,7 @@ * @param options.dragOptions drag options, disabled by default * @param options.folderDropOptions folder drop options, disabled by default * @param options.scrollTo name of file to scroll to after the first load + * @param {OC.Files.Client} [options.filesClient] files API client * @private */ initialize: function($el, options) { @@ -185,6 +201,12 @@ if (options.folderDropOptions) { this._folderDropOptions = options.folderDropOptions; } + if (options.filesClient) { + this.filesClient = options.filesClient; + } else { + // default client if not specified + this.filesClient = OC.Files.getClient(); + } this.$el = $el; if (options.id) { @@ -209,6 +231,8 @@ this.files = []; this._selectedFiles = {}; this._selectionSummary = new OCA.Files.FileSummary(); + // dummy root dir info + this.dirInfo = new OC.Files.FileInfo({}); this.fileSummary = this._createSummary(); @@ -359,7 +383,7 @@ var highlightState = $tr.hasClass('highlighted'); $tr = self.updateRow( $tr, - _.extend({isPreviewAvailable: true}, model.toJSON()), + model.toJSON(), {updateSummary: true, silent: false, animate: true} ); $tr.toggleClass('highlighted', highlightState); @@ -618,7 +642,7 @@ }; OCA.Files.FileActions.updateFileActionSpinner(downloadFileaction, true); - OCA.Files.Files.handleDownload(this.getDownloadUrl(files, dir), disableLoadingState); + OCA.Files.Files.handleDownload(this.getDownloadUrl(files, dir, true), disableLoadingState); return false; }, @@ -894,16 +918,39 @@ self.$el.closest('#app-content').trigger(jQuery.Event('apprendered')); }); }, + + /** + * Returns the icon URL matching the given file info + * + * @param {OC.Files.FileInfo} fileInfo file info + * + * @return {string} icon URL + */ + _getIconUrl: function(fileInfo) { + var mimeType = fileInfo.mimetype || 'application/octet-stream'; + if (mimeType === 'httpd/unix-directory') { + // use default folder icon + if (fileInfo.mountType === 'shared' || fileInfo.mountType === 'shared-root') { + return OC.MimeType.getIconUrl('dir-shared'); + } else if (fileInfo.mountType === 'external-root') { + return OC.MimeType.getIconUrl('dir-external'); + } + return OC.MimeType.getIconUrl('dir'); + } + return OC.MimeType.getIconUrl(mimeType); + }, + /** * Creates a new table row element using the given file data. - * @param {OCA.Files.FileInfo} fileData file info attributes + * @param {OC.Files.FileInfo} fileData file info attributes * @param options map of attributes * @return new tr element (not appended to the table) */ _createRow: function(fileData, options) { var td, simpleSize, basename, extension, sizeColor, - icon = OC.MimeType.getIconUrl(fileData.mimetype), + icon = fileData.icon || this._getIconUrl(fileData), name = fileData.name, + // TODO: get rid of type, only use mime type type = fileData.type || 'file', mtime = parseInt(fileData.mtime, 10), mime = fileData.mimetype, @@ -943,6 +990,14 @@ } if (fileData.mountType) { + // FIXME: HACK: detect shared-root + if (fileData.mountType === 'shared' && this.dirInfo.mountType !== 'shared') { + // if parent folder isn't share, assume the displayed folder is a share root + fileData.mountType = 'shared-root'; + } else if (fileData.mountType === 'external' && this.dirInfo.mountType !== 'external') { + // if parent folder isn't external, assume the displayed folder is the external storage root + fileData.mountType = 'external-root'; + } tr.attr('data-mounttype', fileData.mountType); } @@ -953,24 +1008,16 @@ path = this.getCurrentDirectory(); } - if (type === 'dir') { - // use default folder icon - icon = icon || OC.imagePath('core', 'filetypes/folder'); - } - else { - icon = icon || OC.imagePath('core', 'filetypes/file'); - } - // filename td td = $('<td class="filename"></td>'); // linkUrl - if (type === 'dir') { + if (mime === 'httpd/unix-directory') { linkUrl = this.linkTo(path + '/' + name); } else { - linkUrl = this.getDownloadUrl(name, path); + linkUrl = this.getDownloadUrl(name, path, type === 'dir'); } if (this._allowSelection) { td.append( @@ -996,7 +1043,7 @@ basename = ''; extension = name; // split extension from filename for non dirs - } else if (type !== 'dir' && name.indexOf('.') !== -1) { + } else if (mime !== 'httpd/unix-directory' && name.indexOf('.') !== -1) { basename = name.substr(0, name.lastIndexOf('.')); extension = name.substr(name.lastIndexOf('.')); } else { @@ -1018,7 +1065,7 @@ nameSpan.tooltip({placement: 'right'}); } // dirs can show the number of uploaded files - if (type === 'dir') { + if (mime !== 'httpd/unix-directory') { linkElem.append($('<span></span>').attr({ 'class': 'uploadtext', 'currentUploads': 0 @@ -1074,7 +1121,7 @@ * Adds an entry to the files array and also into the DOM * in a sorted manner. * - * @param {OCA.Files.FileInfo} fileData map of file attributes + * @param {OC.Files.FileInfo} fileData map of file attributes * @param {Object} [options] map of attributes * @param {boolean} [options.updateSummary] true to update the summary * after adding (default), false otherwise. Defaults to true. @@ -1147,7 +1194,7 @@ * Creates a new row element based on the given attributes * and returns it. * - * @param {OCA.Files.FileInfo} fileData map of file attributes + * @param {OC.Files.FileInfo} fileData map of file attributes * @param {Object} [options] map of attributes * @param {int} [options.index] index at which to insert the element * @param {boolean} [options.updateSummary] true to update the summary @@ -1182,7 +1229,7 @@ filenameTd.draggable(this._dragOptions); } // allow dropping on folders - if (this._folderDropOptions && fileData.type === 'dir') { + if (this._folderDropOptions && mime === 'httpd/unix-directory') { filenameTd.droppable(this._folderDropOptions); } @@ -1193,7 +1240,7 @@ // display actions this.fileActions.display(filenameTd, !options.silent, this); - if (fileData.isPreviewAvailable && mime !== 'httpd/unix-directory') { + if (mime !== 'httpd/unix-directory') { var iconDiv = filenameTd.find('.thumbnail'); // lazy load / newly inserted td ? // the typeof check ensures that the default value of animate is true @@ -1330,6 +1377,13 @@ }, /** + * Returns list of webdav properties to request + */ + _getWebdavProperties: function() { + return this.filesClient.getPropfindProperties(); + }, + + /** * Reloads the file list using ajax call * * @return ajax call object @@ -1343,17 +1397,12 @@ this._currentFileModel = null; this.$el.find('.select-all').prop('checked', false); this.showMask(); - if (this._reloadCall) { - this._reloadCall.abort(); - } - this._reloadCall = $.ajax({ - url: this.getAjaxUrl('list'), - data: { - dir : this.getCurrentDirectory(), - sort: this._sort, - sortdirection: this._sortDirection + this._reloadCall = this.filesClient.getFolderContents( + this.getCurrentDirectory(), { + includeParent: true, + properties: this._getWebdavProperties() } - }); + ); if (this._detailsView) { // close sidebar this._updateDetailsView(null); @@ -1361,24 +1410,19 @@ var callBack = this.reloadCallback.bind(this); return this._reloadCall.then(callBack, callBack); }, - reloadCallback: function(result) { + reloadCallback: function(status, result) { delete this._reloadCall; this.hideMask(); - if (!result || result.status === 'error') { - // if the error is not related to folder we're trying to load, reload the page to handle logout etc - if (result.data.error === 'authentication_error' || - result.data.error === 'token_expired' || - result.data.error === 'application_not_enabled' - ) { - OC.redirect(OC.generateUrl('apps/files')); - } - OC.Notification.showTemporary(result.data.message); + if (status === 401) { + // TODO: append current URL to be able to get back after logging in again + OC.redirect(OC.generateUrl('apps/files')); + OC.Notification.show(result); return false; } // Firewall Blocked request? - if (result.status === 403) { + if (status === 403) { // Go home this.changeDirectory('/'); OC.Notification.showTemporary(t('files', 'This operation is forbidden')); @@ -1386,32 +1430,49 @@ } // Did share service die or something else fail? - if (result.status === 500) { + if (status === 500) { // Go home this.changeDirectory('/'); - OC.Notification.showTemporary(t('files', 'This directory is unavailable, please check the logs or contact the administrator')); + OC.Notification.showTemporary( + t('files', 'This directory is unavailable, please check the logs or contact the administrator') + ); + return false; + } + + if (status === 503) { + // Go home + if (this.getCurrentDirectory() !== '/') { + this.changeDirectory('/'); + // TODO: read error message from exception + OC.Notification.showTemporary( + t('files', 'Storage not available') + ); + } return false; } - if (result.status === 404) { + if (status === 404) { // go back home this.changeDirectory('/'); return false; } // aborted ? - if (result.status === 0){ + if (status === 0){ return true; } - // TODO: should rather return upload file size through - // the files list ajax call + // TODO: parse remaining quota from PROPFIND response this.updateStorageStatistics(true); - if (result.data.permissions) { - this.setDirectoryPermissions(result.data.permissions); + // first entry is the root + this.dirInfo = result.shift(); + + if (this.dirInfo.permissions) { + this.setDirectoryPermissions(this.dirInfo.permissions); } - this.setFiles(result.data.files); + result.sort(this._sortComparator); + this.setFiles(result); return true; }, @@ -1419,12 +1480,15 @@ OCA.Files.Files.updateStorageStatistics(this.getCurrentDirectory(), force); }, + /** + * @deprecated do not use nor override + */ getAjaxUrl: function(action, params) { return OCA.Files.Files.getAjaxUrl(action, params); }, - getDownloadUrl: function(files, dir) { - return OCA.Files.Files.getDownloadUrl(files, dir || this.getCurrentDirectory()); + getDownloadUrl: function(files, dir, isDir) { + return OCA.Files.Files.getDownloadUrl(files, dir || this.getCurrentDirectory(), isDir); }, /** @@ -1489,8 +1553,6 @@ if (etag){ // use etag as cache buster urlSpec.c = etag; - } else { - console.warn('OCA.Files.FileList.lazyLoadPreview(): missing etag argument'); } previewURL = self.generatePreviewUrl(urlSpec); @@ -1514,6 +1576,9 @@ img.src = previewURL; }, + /** + * @deprecated + */ setDirectoryPermissions: function(permissions) { var isCreatable = (permissions & OC.PERMISSION_CREATE) !== 0; this.$el.find('#permissions').val(permissions); @@ -1610,7 +1675,7 @@ * fileData should be inserted, considering the current * sorting * - * @param {OCA.Files.FileInfo} fileData file info + * @param {OC.Files.FileInfo} fileData file info */ _findInsertionIndex: function(fileData) { var index = 0; @@ -1628,6 +1693,9 @@ move: function(fileNames, targetPath) { var self = this; var dir = this.getCurrentDirectory(); + if (dir.charAt(dir.length - 1) !== '/') { + dir += '/'; + } var target = OC.basename(targetPath); if (!_.isArray(fileNames)) { fileNames = [fileNames]; @@ -1635,46 +1703,42 @@ _.each(fileNames, function(fileName) { var $tr = self.findFileEl(fileName); self.showFileBusyState($tr, true); - // TODO: improve performance by sending all file names in a single call - $.post( - OC.filePath('files', 'ajax', 'move.php'), - { - dir: dir, - file: fileName, - target: targetPath - }, - function(result) { - if (result) { - if (result.status === 'success') { - // if still viewing the same directory - if (self.getCurrentDirectory() === dir) { - // recalculate folder size - var oldFile = self.findFileEl(target); - var newFile = self.findFileEl(fileName); - var oldSize = oldFile.data('size'); - var newSize = oldSize + newFile.data('size'); - oldFile.data('size', newSize); - oldFile.find('td.filesize').text(OC.Util.humanFileSize(newSize)); - - // TODO: also update entry in FileList.files - - self.remove(fileName); - } - } else { - OC.Notification.hide(); - if (result.status === 'error' && result.data.message) { - OC.Notification.showTemporary(result.data.message); - } - else { - OC.Notification.showTemporary(t('files', 'Error moving file.')); - } - } + if (targetPath.charAt(targetPath.length - 1) !== '/') { + // make sure we move the files into the target dir, + // not overwrite it + targetPath = targetPath + '/'; + } + self.filesClient.move(dir + fileName, targetPath + fileName) + .done(function() { + // if still viewing the same directory + if (OC.joinPaths(self.getCurrentDirectory(), '/') === dir) { + // recalculate folder size + var oldFile = self.findFileEl(target); + var newFile = self.findFileEl(fileName); + var oldSize = oldFile.data('size'); + var newSize = oldSize + newFile.data('size'); + oldFile.data('size', newSize); + oldFile.find('td.filesize').text(OC.Util.humanFileSize(newSize)); + + // TODO: also update entry in FileList.files + self.remove(fileName); + } + }) + .fail(function(status) { + if (status === 412) { + // TODO: some day here we should invoke the conflict dialog + OC.Notification.showTemporary( + t('files', 'Could not move "{file}", target exists', {file: fileName}) + ); } else { - OC.dialogs.alert(t('files', 'Error moving file'), t('files', 'Error')); + OC.Notification.showTemporary( + t('files', 'Could not move "{file}"', {file: fileName}) + ); } + }) + .always(function() { self.showFileBusyState($tr, false); - } - ); + }); }); }, @@ -1700,16 +1764,16 @@ * Triggers file rename input field for the given file name. * If the user enters a new name, the file will be renamed. * - * @param oldname file name of the file to rename + * @param oldName file name of the file to rename */ - rename: function(oldname) { + rename: function(oldName) { var self = this; var tr, td, input, form; - tr = this.findFileEl(oldname); + tr = this.findFileEl(oldName); var oldFileInfo = this.files[tr.index()]; tr.data('renaming',true); td = tr.children('td.filename'); - input = $('<input type="text" class="filename"/>').val(oldname); + input = $('<input type="text" class="filename"/>').val(oldName); form = $('<form></form>'); form.append(input); td.children('a.name').hide(); @@ -1724,11 +1788,11 @@ input.selectRange(0, len); var checkInput = function () { var filename = input.val(); - if (filename !== oldname) { + if (filename !== oldName) { // Files.isFileNameValid(filename) throws an exception itself OCA.Files.Files.isFileNameValid(filename); if (self.inList(filename)) { - throw t('files', '{new_name} already exists', {new_name: filename}); + throw t('files', '{newName} already exists', {newName: filename}); } } return true; @@ -1741,6 +1805,12 @@ td.children('a.name').show(); } + function updateInList(fileInfo) { + self.updateRow(tr, fileInfo); + self._updateDetailsView(fileInfo.name, false); + } + + // TODO: too many nested blocks, move parts into functions form.submit(function(event) { event.stopPropagation(); event.preventDefault(); @@ -1753,7 +1823,7 @@ input.tooltip('hide'); form.remove(); - if (newName !== oldname) { + if (newName !== oldName) { checkInput(); // mark as loading (temp element) self.showFileBusyState(tr, true); @@ -1765,34 +1835,45 @@ td.find('a.name span.nametext').text(basename); td.children('a.name').show(); - $.ajax({ - url: OC.filePath('files','ajax','rename.php'), - data: { - dir : tr.attr('data-path') || self.getCurrentDirectory(), - newname: newName, - file: oldname - }, - success: function(result) { - var fileInfo; - if (!result || result.status === 'error') { - OC.dialogs.alert(result.data.message, t('files', 'Could not rename file')); - fileInfo = oldFileInfo; - if (result.data.code === 'sourcenotfound') { - self.remove(result.data.newname, {updateSummary: true}); - return; - } - } - else { - fileInfo = result.data; + var path = tr.attr('data-path') || self.getCurrentDirectory(); + self.filesClient.move(OC.joinPaths(path, oldName), OC.joinPaths(path, newName)) + .done(function() { + oldFileInfo.name = newName; + updateInList(oldFileInfo); + }) + .fail(function(status) { + // TODO: 409 means current folder does not exist, redirect ? + if (status === 404) { + // source not found, so remove it from the list + OC.Notification.showTemporary( + t( + 'files', + 'Could not rename "{fileName}", it does not exist any more', + {fileName: oldName} + ) + ); + self.remove(newName, {updateSummary: true}); + return; + } else if (status === 412) { + // target exists + OC.Notification.showTemporary( + t( + 'files', + 'The name "{targetName}" is already used in the folder "{dir}". Please choose a different name.', + { + targetName: newName, + dir: self.getCurrentDirectory() + } + ) + ); + } else { + // restore the item to its previous state + OC.Notification.showTemporary( + t('files', 'Could not rename "{fileName}"', {fileName: oldName}) + ); } - // reinsert row - self.files.splice(tr.index(), 1); - tr.remove(); - tr = self.add(fileInfo, {updateSummary: false, silent: true}); - self.$fileList.trigger($.Event('fileActionsReady', {fileList: self, $files: $(tr)})); - self._updateDetailsView(fileInfo.name, false); - } - }); + updateInList(oldFileInfo); + }); } else { // add back the old file info when cancelled self.files.splice(tr.index(), 1); @@ -1849,32 +1930,48 @@ var promise = deferred.promise(); OCA.Files.Files.isFileNameValid(name); - name = this.getUniqueName(name); if (this.lastAction) { this.lastAction(); } - $.post( - OC.generateUrl('/apps/files/ajax/newfile.php'), - { - dir: this.getCurrentDirectory(), - filename: name - }, - function(result) { - if (result.status === 'success') { - self.add(result.data, {animate: true, scrollTo: true}); - deferred.resolve(result.status, result.data); + name = this.getUniqueName(name); + var targetPath = this.getCurrentDirectory() + '/' + name; + + self.filesClient.putFileContents( + targetPath, + '', + { + contentType: 'text/plain', + overwrite: true + } + ) + .done(function() { + // TODO: error handling / conflicts + self.filesClient.getFileInfo( + targetPath, { + properties: self._getWebdavProperties() + } + ) + .then(function(status, data) { + self.add(data, {animate: true, scrollTo: true}); + deferred.resolve(status, data); + }) + .fail(function(status) { + OC.Notification.showTemporary(t('files', 'Could not create file "{file}"', {file: name})); + deferred.reject(status); + }); + }) + .fail(function(status) { + if (status === 412) { + OC.Notification.showTemporary( + t('files', 'Could not create file "{file}" because it already exists', {file: name}) + ); } else { - if (result.data && result.data.message) { - OC.Notification.showTemporary(result.data.message); - } else { - OC.Notification.showTemporary(t('core', 'Could not create file')); - } - deferred.reject(result.status, result.data); + OC.Notification.showTemporary(t('files', 'Could not create file "{file}"', {file: name})); } - } - ); + deferred.reject(status); + }); return promise; }, @@ -1895,32 +1992,58 @@ var promise = deferred.promise(); OCA.Files.Files.isFileNameValid(name); - name = this.getUniqueName(name); if (this.lastAction) { this.lastAction(); } - $.post( - OC.generateUrl('/apps/files/ajax/newfolder.php'), - { - dir: this.getCurrentDirectory(), - foldername: name - }, - function(result) { - if (result.status === 'success') { - self.add(result.data, {animate: true, scrollTo: true}); - deferred.resolve(result.status, result.data); + name = this.getUniqueName(name); + var targetPath = this.getCurrentDirectory() + '/' + name; + + this.filesClient.createDirectory(targetPath) + .done(function(createStatus) { + self.filesClient.getFileInfo( + targetPath, { + properties: self._getWebdavProperties() + } + ) + .done(function(status, data) { + self.add(data, {animate: true, scrollTo: true}); + deferred.resolve(status, data); + }) + .fail(function() { + OC.Notification.showTemporary(t('files', 'Could not create folder "{dir}"', {dir: name})); + deferred.reject(createStatus); + }); + }) + .fail(function(createStatus) { + // method not allowed, folder might exist already + if (createStatus === 405) { + self.filesClient.getFileInfo( + targetPath, { + properties: self._getWebdavProperties() + } + ) + .done(function(status, data) { + // add it to the list, for completeness + self.add(data, {animate: true, scrollTo: true}); + OC.Notification.showTemporary( + t('files', 'Could not create folder "{dir}" because it already exists', {dir: name}) + ); + // still consider a failure + deferred.reject(createStatus, data); + }) + .fail(function() { + OC.Notification.showTemporary( + t('files', 'Could not create folder "{dir}"', {dir: name}) + ); + deferred.reject(status); + }); } else { - if (result.data && result.data.message) { - OC.Notification.showTemporary(result.data.message); - } else { - OC.Notification.showTemporary(t('core', 'Could not create folder')); - } - deferred.reject(result.status); + OC.Notification.showTemporary(t('files', 'Could not create folder "{dir}"', {dir: name})); + deferred.reject(createStatus); } - } - ); + }); return promise; }, @@ -1981,76 +2104,59 @@ */ do_delete:function(files, dir) { var self = this; - var params; if (files && files.substr) { files=[files]; } + if (!files) { + // delete all files in directory + files = _.pluck(this.files, 'name'); + } if (files) { this.showFileBusyState(files, true); - for (var i=0; i<files.length; i++) { - } } // Finish any existing actions if (this.lastAction) { this.lastAction(); } - params = { - dir: dir || this.getCurrentDirectory() - }; - if (files) { - params.files = JSON.stringify(files); + dir = dir || this.getCurrentDirectory(); + + function removeFromList(file) { + var fileEl = self.remove(file, {updateSummary: false}); + // FIXME: not sure why we need this after the + // element isn't even in the DOM any more + fileEl.find('.selectCheckBox').prop('checked', false); + fileEl.removeClass('selected'); + self.fileSummary.remove({type: fileEl.attr('data-type'), size: fileEl.attr('data-size')}); + // TODO: this info should be returned by the ajax call! + self.updateEmptyContent(); + self.fileSummary.update(); + self.updateSelectionSummary(); + // FIXME: don't repeat this, do it once all files are done + self.updateStorageStatistics(); } - else { - // no files passed, delete all in current dir - params.allfiles = true; - // show spinner for all files - this.showFileBusyState(this.$fileList.find('tr'), true); - } - - $.post(OC.filePath('files', 'ajax', 'delete.php'), - params, - function(result) { - if (result.status === 'success') { - if (params.allfiles) { - self.setFiles([]); - } - else { - $.each(files,function(index,file) { - var fileEl = self.remove(file, {updateSummary: false}); - // FIXME: not sure why we need this after the - // element isn't even in the DOM any more - fileEl.find('.selectCheckBox').prop('checked', false); - fileEl.removeClass('selected'); - self.fileSummary.remove({type: fileEl.attr('data-type'), size: fileEl.attr('data-size')}); - }); - } - // TODO: this info should be returned by the ajax call! - self.updateEmptyContent(); - self.fileSummary.update(); - self.updateSelectionSummary(); - self.updateStorageStatistics(); - // in case there was a "storage full" permanent notification - OC.Notification.hide(); + + _.each(files, function(file) { + self.filesClient.remove(dir + '/' + file) + .done(function() { + removeFromList(file); + }) + .fail(function(status) { + if (status === 404) { + // the file already did not exist, remove it from the list + removeFromList(file); } else { - if (result.status === 'error' && result.data.message) { - OC.Notification.showTemporary(result.data.message); - } - else { - OC.Notification.showTemporary(t('files', 'Error deleting file.')); - } - if (params.allfiles) { - // reload the page as we don't know what files were deleted - // and which ones remain - self.reload(); - } - else { - $.each(files,function(index,file) { - self.showFileBusyState(file, false); - }); - } + // only reset the spinner for that one file + OC.Notification.showTemporary( + t('files', 'Error deleting file "{fileName}".', {fileName: file}), + {timeout: 10} + ); + var deleteAction = self.findFileEl(file).find('.action.delete'); + deleteAction.removeClass('icon-loading-small').addClass('icon-delete'); + self.showFileBusyState(files, false); } }); + }); }, /** * Creates the file summary section @@ -2659,8 +2765,8 @@ * Compares two file infos by name, making directories appear * first. * - * @param {OCA.Files.FileInfo} fileInfo1 file info - * @param {OCA.Files.FileInfo} fileInfo2 file info + * @param {OC.Files.FileInfo} fileInfo1 file info + * @param {OC.Files.FileInfo} fileInfo2 file info * @return {int} -1 if the first file must appear before the second one, * 0 if they are identify, 1 otherwise. */ @@ -2676,8 +2782,8 @@ /** * Compares two file infos by size. * - * @param {OCA.Files.FileInfo} fileInfo1 file info - * @param {OCA.Files.FileInfo} fileInfo2 file info + * @param {OC.Files.FileInfo} fileInfo1 file info + * @param {OC.Files.FileInfo} fileInfo2 file info * @return {int} -1 if the first file must appear before the second one, * 0 if they are identify, 1 otherwise. */ @@ -2687,8 +2793,8 @@ /** * Compares two file infos by timestamp. * - * @param {OCA.Files.FileInfo} fileInfo1 file info - * @param {OCA.Files.FileInfo} fileInfo2 file info + * @param {OC.Files.FileInfo} fileInfo1 file info + * @param {OC.Files.FileInfo} fileInfo2 file info * @return {int} -1 if the first file must appear before the second one, * 0 if they are identify, 1 otherwise. */ @@ -2700,23 +2806,14 @@ /** * File info attributes. * - * @todo make this a real class in the future - * @typedef {Object} OCA.Files.FileInfo + * @typedef {Object} OC.Files.FileInfo + * + * @lends OC.Files.FileInfo + * + * @deprecated use OC.Files.FileInfo instead * - * @property {int} id file id - * @property {String} name file name - * @property {String} [path] file path, defaults to the list's current path - * @property {String} mimetype mime type - * @property {String} type "file" for files or "dir" for directories - * @property {int} permissions file permissions - * @property {int} mtime modification time in milliseconds - * @property {boolean} [isShareMountPoint] whether the file is a share mount - * point - * @property {boolean} [isPreviewAvailable] whether a preview is available - * for the given file type - * @property {String} [icon] path to the mime type icon - * @property {String} etag etag of the file */ + OCA.Files.FileInfo = OC.Files.FileInfo; OCA.Files.FileList = FileList; })(); diff --git a/apps/files/js/files.js b/apps/files/js/files.js index ae38511ec05..e33b8354437 100644 --- a/apps/files/js/files.js +++ b/apps/files/js/files.js @@ -136,13 +136,27 @@ /** * Returns the download URL of the given file(s) - * @param filename string or array of file names to download - * @param dir optional directory in which the file name is, defaults to the current directory + * @param {string} filename string or array of file names to download + * @param {string} [dir] optional directory in which the file name is, defaults to the current directory + * @param {bool} [isDir=false] whether the given filename is a directory and might need a special URL */ - getDownloadUrl: function(filename, dir) { - if ($.isArray(filename)) { + getDownloadUrl: function(filename, dir, isDir) { + if (!_.isArray(filename) && !isDir) { + var pathSections = dir.split('/'); + pathSections.push(filename); + var encodedPath = ''; + _.each(pathSections, function(section) { + if (section !== '') { + encodedPath += '/' + encodeURIComponent(section); + } + }); + return OC.linkToRemoteBase('webdav') + encodedPath; + } + + if (_.isArray(filename)) { filename = JSON.stringify(filename); } + var params = { dir: dir, files: filename @@ -193,7 +207,7 @@ */ lazyLoadPreview : function(path, mime, ready, width, height, etag) { console.warn('DEPRECATED: please use lazyLoadPreview() from an OCA.Files.FileList instance'); - return OCA.Files.App.fileList.lazyLoadPreview({ + return FileList.lazyLoadPreview({ path: path, mime: mime, callback: ready, @@ -356,8 +370,10 @@ scanFiles.scanning=false; // TODO: move to FileList var createDragShadow = function(event) { + // FIXME: inject file list instance somehow + /* global FileList, Files */ + //select dragged file - var FileList = OCA.Files.App.fileList; var isDragSelected = $(event.target).parents('tr').find('td input:first').prop('checked'); if (!isDragSelected) { //select dragged file @@ -394,7 +410,7 @@ var createDragShadow = function(event) { .css('background-image', 'url(' + OC.imagePath('core', 'filetypes/folder.png') + ')'); } else { var path = dir + '/' + elem.name; - OCA.Files.App.files.lazyLoadPreview(path, elem.mime, function(previewpath) { + Files.lazyLoadPreview(path, elem.mimetype, function(previewpath) { newtr.find('td.filename') .css('background-image', 'url(' + previewpath + ')'); }, null, null, elem.etag); @@ -441,7 +457,7 @@ var folderDropOptions = { hoverClass: "canDrop", drop: function( event, ui ) { // don't allow moving a file into a selected folder - var FileList = OCA.Files.App.fileList; + /* global FileList */ if ($(event.target).parents('tr').find('td input:first').prop('checked') === true) { return false; } diff --git a/apps/files/js/tagsplugin.js b/apps/files/js/tagsplugin.js index 23945d52603..81b22e34cc2 100644 --- a/apps/files/js/tagsplugin.js +++ b/apps/files/js/tagsplugin.js @@ -161,6 +161,38 @@ fileInfo.tags = tags; return fileInfo; }; + + var NS_OC = 'http://owncloud.org/ns'; + + var oldGetWebdavProperties = fileList._getWebdavProperties; + fileList._getWebdavProperties = function() { + var props = oldGetWebdavProperties.apply(this, arguments); + props.push('{' + NS_OC + '}tags'); + props.push('{' + NS_OC + '}favorite'); + return props; + }; + + fileList.filesClient.addFileInfoParser(function(response) { + var data = {}; + var props = response.propStat[0].properties; + var tags = props['{' + NS_OC + '}tags']; + var favorite = props['{' + NS_OC + '}favorite']; + if (tags && tags.length) { + tags = _.chain(tags).filter(function(xmlvalue) { + return (xmlvalue.namespaceURI === NS_OC && xmlvalue.nodeName.split(':')[1] === 'tag'); + }).map(function(xmlvalue) { + return xmlvalue.textContent || xmlvalue.text; + }).value(); + } + if (tags) { + data.tags = tags; + } + if (favorite && parseInt(favorite, 10) !== 0) { + data.tags = data.tags || []; + data.tags.push(OC.TAG_FAVORITE); + } + return data; + }); }, attach: function(fileList) { diff --git a/apps/files/l10n/af_ZA.js b/apps/files/l10n/af_ZA.js index 2061e5ec49c..ddc06b6c11f 100644 --- a/apps/files/l10n/af_ZA.js +++ b/apps/files/l10n/af_ZA.js @@ -1,7 +1,6 @@ OC.L10N.register( "files", { - "Error" : "Fout", "Folder" : "Omslag", "Settings" : "Instellings" }, diff --git a/apps/files/l10n/af_ZA.json b/apps/files/l10n/af_ZA.json index 95096fd551b..bad49a673e0 100644 --- a/apps/files/l10n/af_ZA.json +++ b/apps/files/l10n/af_ZA.json @@ -1,5 +1,4 @@ { "translations": { - "Error" : "Fout", "Folder" : "Omslag", "Settings" : "Instellings" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files/l10n/ar.js b/apps/files/l10n/ar.js index b4414525c68..953267393b2 100644 --- a/apps/files/l10n/ar.js +++ b/apps/files/l10n/ar.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "وحدة التخزين غير متوفرة ", "Storage invalid" : "وحدة تخزين غير صالحه ", "Unknown error" : "خطأ غير معروف. ", - "Could not move %s - File with this name already exists" : "فشل في نقل الملف %s - يوجد ملف بنفس هذا الاسم", - "Could not move %s" : "فشل في نقل %s", - "Permission denied" : "تم رفض الاذن ", - "The target folder has been moved or deleted." : "المجلد المطلوب قد تم نقله او حذفه ", - "The name %s is already used in the folder %s. Please choose a different name." : "هذا الاسم %s مستخدم مسبقا في المجلد %s . فضلا اختر اسم مختلف .", - "Error when creating the file" : "خطأ اثناء انشاء الملف ", - "Error when creating the folder" : "خطأ اثناء انشاء المجلد ", "Unable to set upload directory." : "غير قادر على تحميل المجلد", "Invalid Token" : "علامة غير صالحة", "No file was uploaded. Unknown error" : "لم يتم رفع أي ملف , خطأ غير معروف", @@ -22,6 +15,7 @@ OC.L10N.register( "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" : "*فشلت علمية الرفع. تعذر إيجاد الملف الذي تم رفعه.\n*فشلت علمية التحميل. تعذر إيجاد الملف الذي تم تحميله.", "Upload failed. Could not get file info." : "فشلت عملية الرفع. تعذر الحصول على معلومات الملف.", "Invalid directory." : "مسار غير صحيح.", @@ -45,14 +39,6 @@ OC.L10N.register( "Pending" : "قيد الانتظار", "Unable to determine date" : "تعذر تحديد التاريخ", "This operation is forbidden" : "هذة العملية ممنوعة ", - "Error moving file." : "خطأ اثناء نقل الملف ", - "Error moving file" : "حدث خطأ أثناء نقل الملف", - "Error" : "خطأ", - "{new_name} already exists" : "{new_name} موجود مسبقا", - "Could not rename file" : "لا يستطيع اعادة تسمية الملف", - "Could not create file" : "لا يستطيع انشاء ملف ", - "Could not create folder" : "لا يستطيع انشاء مجلد ", - "Error deleting file." : "خطأ اثناء حذف الملف ", "No entries in this folder match '{filter}'" : "لا يوجد مدخلات في هذا المجلد تتوافق مع '{filter}'", "Name" : "اسم", "Size" : "حجم", @@ -70,8 +56,6 @@ OC.L10N.register( "Storage of {owner} is almost full ({usedSpacePercent}%)" : "المساحة التخزينية لـ {owner} ممتلئة تقريبا ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "مساحتك التخزينية امتلأت تقريبا ", "Favorite" : "المفضلة", - "Text file" : "ملف نصي", - "New text file.txt" : "ملف نصي جديد fille.txt", "Folder" : "مجلد", "New folder" : "مجلد جديد", "{newname} already exists" : "{newname} موجود مسبقاً", @@ -90,8 +74,6 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s حذف %1$s", "You restored %1$s" : "لقد قمت باستعادة %1$s", "%2$s restored %1$s" : "%2$s مستعاد %1$s", - "%s could not be renamed as it has been deleted" : "%s لا يمكن اعادة تسميته فقد تم حذفه ", - "%s could not be renamed" : "%s لا يمكن إعادة تسميته. ", "Upload (max. %s)" : "الرفع ( حد اقصى. %s ) ", "File handling" : "التعامل مع الملف", "Maximum upload size" : "الحد الأقصى لحجم الملفات التي يمكن رفعها", @@ -110,6 +92,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "يرجى الانتظار , جاري فحص الملفات .", "Currently scanning" : "حالياً يقوم بالفحص", "No favorites" : "لا يوجد مفضلات ", - "Files and folders you mark as favorite will show up here" : "الملفات والمجلدات التي حددتها كامفضلة سوف تظهر هنا " + "Files and folders you mark as favorite will show up here" : "الملفات والمجلدات التي حددتها كامفضلة سوف تظهر هنا ", + "Text file" : "ملف نصي", + "New text file.txt" : "ملف نصي جديد fille.txt" }, "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/files/l10n/ar.json b/apps/files/l10n/ar.json index 0783c769ee1..245fe9a0b9e 100644 --- a/apps/files/l10n/ar.json +++ b/apps/files/l10n/ar.json @@ -2,13 +2,6 @@ "Storage not available" : "وحدة التخزين غير متوفرة ", "Storage invalid" : "وحدة تخزين غير صالحه ", "Unknown error" : "خطأ غير معروف. ", - "Could not move %s - File with this name already exists" : "فشل في نقل الملف %s - يوجد ملف بنفس هذا الاسم", - "Could not move %s" : "فشل في نقل %s", - "Permission denied" : "تم رفض الاذن ", - "The target folder has been moved or deleted." : "المجلد المطلوب قد تم نقله او حذفه ", - "The name %s is already used in the folder %s. Please choose a different name." : "هذا الاسم %s مستخدم مسبقا في المجلد %s . فضلا اختر اسم مختلف .", - "Error when creating the file" : "خطأ اثناء انشاء الملف ", - "Error when creating the folder" : "خطأ اثناء انشاء المجلد ", "Unable to set upload directory." : "غير قادر على تحميل المجلد", "Invalid Token" : "علامة غير صالحة", "No file was uploaded. Unknown error" : "لم يتم رفع أي ملف , خطأ غير معروف", @@ -20,6 +13,7 @@ "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" : "*فشلت علمية الرفع. تعذر إيجاد الملف الذي تم رفعه.\n*فشلت علمية التحميل. تعذر إيجاد الملف الذي تم تحميله.", "Upload failed. Could not get file info." : "فشلت عملية الرفع. تعذر الحصول على معلومات الملف.", "Invalid directory." : "مسار غير صحيح.", @@ -43,14 +37,6 @@ "Pending" : "قيد الانتظار", "Unable to determine date" : "تعذر تحديد التاريخ", "This operation is forbidden" : "هذة العملية ممنوعة ", - "Error moving file." : "خطأ اثناء نقل الملف ", - "Error moving file" : "حدث خطأ أثناء نقل الملف", - "Error" : "خطأ", - "{new_name} already exists" : "{new_name} موجود مسبقا", - "Could not rename file" : "لا يستطيع اعادة تسمية الملف", - "Could not create file" : "لا يستطيع انشاء ملف ", - "Could not create folder" : "لا يستطيع انشاء مجلد ", - "Error deleting file." : "خطأ اثناء حذف الملف ", "No entries in this folder match '{filter}'" : "لا يوجد مدخلات في هذا المجلد تتوافق مع '{filter}'", "Name" : "اسم", "Size" : "حجم", @@ -68,8 +54,6 @@ "Storage of {owner} is almost full ({usedSpacePercent}%)" : "المساحة التخزينية لـ {owner} ممتلئة تقريبا ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "مساحتك التخزينية امتلأت تقريبا ", "Favorite" : "المفضلة", - "Text file" : "ملف نصي", - "New text file.txt" : "ملف نصي جديد fille.txt", "Folder" : "مجلد", "New folder" : "مجلد جديد", "{newname} already exists" : "{newname} موجود مسبقاً", @@ -88,8 +72,6 @@ "%2$s deleted %1$s" : "%2$s حذف %1$s", "You restored %1$s" : "لقد قمت باستعادة %1$s", "%2$s restored %1$s" : "%2$s مستعاد %1$s", - "%s could not be renamed as it has been deleted" : "%s لا يمكن اعادة تسميته فقد تم حذفه ", - "%s could not be renamed" : "%s لا يمكن إعادة تسميته. ", "Upload (max. %s)" : "الرفع ( حد اقصى. %s ) ", "File handling" : "التعامل مع الملف", "Maximum upload size" : "الحد الأقصى لحجم الملفات التي يمكن رفعها", @@ -108,6 +90,8 @@ "Files are being scanned, please wait." : "يرجى الانتظار , جاري فحص الملفات .", "Currently scanning" : "حالياً يقوم بالفحص", "No favorites" : "لا يوجد مفضلات ", - "Files and folders you mark as favorite will show up here" : "الملفات والمجلدات التي حددتها كامفضلة سوف تظهر هنا " + "Files and folders you mark as favorite will show up here" : "الملفات والمجلدات التي حددتها كامفضلة سوف تظهر هنا ", + "Text file" : "ملف نصي", + "New text file.txt" : "ملف نصي جديد fille.txt" },"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;" }
\ No newline at end of file diff --git a/apps/files/l10n/ast.js b/apps/files/l10n/ast.js index 5dfcae172ea..8fc63c1ac35 100644 --- a/apps/files/l10n/ast.js +++ b/apps/files/l10n/ast.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Almacenamientu non disponible", "Storage invalid" : "Almacenamientu inválidu", "Unknown error" : "Fallu desconocíu", - "Could not move %s - File with this name already exists" : "Nun pudo movese %s - Yá existe un ficheru con esi nome.", - "Could not move %s" : "Nun pudo movese %s", - "Permission denied" : "Permisu denegáu", - "The target folder has been moved or deleted." : "La carpeta oxetivu movióse o desanicióse.", - "The name %s is already used in the folder %s. Please choose a different name." : "El nome %s yá ta n'usu na carpeta %s. Por favor, escueyi un nome diferente.", - "Error when creating the file" : "Fallu cuando se creaba'l ficheru", - "Error when creating the folder" : "Fallu cuando se creaba la carpeta", "Unable to set upload directory." : "Nun pue afitase la carpeta de xubida.", "Invalid Token" : "Token inválidu", "No file was uploaded. Unknown error" : "Nun se xubió dengún ficheru. Fallu desconocíu", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Falta una carpeta temporal", "Failed to write to disk" : "Fallu al escribir al discu", "Not enough storage available" : "Nun hai abondu espaciu disponible", + "The target folder has been moved or deleted." : "La carpeta oxetivu movióse o desanicióse.", "Upload failed. Could not find uploaded file" : "Xubida fallida. Nun pudo atopase'l ficheru xubíu.", "Upload failed. Could not get file info." : "Falló la xubida. Nun se pudo obtener la información del ficheru.", "Invalid directory." : "Direutoriu non válidu.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Imposible determinar la fecha", "This operation is forbidden" : "La operación ta prohibida", "This directory is unavailable, please check the logs or contact the administrator" : "Esti direutoriu nun ta disponible, por favor verifica'l rexistru o contacta l'alministrador", - "Error moving file." : "Fallu moviendo'l ficheru.", - "Error moving file" : "Fallu moviendo'l ficheru", - "Error" : "Fallu", - "{new_name} already exists" : "{new_name} yá existe", - "Could not rename file" : "Nun pudo renomase'l ficheru", - "Could not create file" : "Nun pudo crease'l ficheru", - "Could not create folder" : "Nun pudo crease la carpeta", - "Error deleting file." : "Fallu desaniciando'l ficheru.", "No entries in this folder match '{filter}'" : "Nun concasa nenguna entrada nesta carpeta '{filter}'", "Name" : "Nome", "Size" : "Tamañu", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n bytes","%n bytes"], "Favorited" : "Favoritos", "Favorite" : "Favoritu", - "Text file" : "Ficheru de testu", - "New text file.txt" : "Nuevu testu ficheru.txt", "Folder" : "Carpeta", "New folder" : "Nueva carpeta", "{newname} already exists" : "{newname} yá existe", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "Modificáu por %2$s", "Deleted by %2$s" : "Desaniciáu por %2$s", "Restored by %2$s" : "Recuperáu por %2$s", - "%s could not be renamed as it has been deleted" : "%s nun pue renomase dempués de desaniciase", - "%s could not be renamed" : "Nun se puede renomar %s ", "Upload (max. %s)" : "Xuba (máx. %s)", "File handling" : "Alministración de ficheros", "Maximum upload size" : "Tamañu máximu de xubida", @@ -119,6 +101,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Tan escaniándose los ficheros, espera por favor.", "Currently scanning" : "Anguaño escaneando", "No favorites" : "Nengún favoritu", - "Files and folders you mark as favorite will show up here" : "Los ficheros y carpetes que marque como favoritos apaecerán equí" + "Files and folders you mark as favorite will show up here" : "Los ficheros y carpetes que marque como favoritos apaecerán equí", + "Text file" : "Ficheru de testu", + "New text file.txt" : "Nuevu testu ficheru.txt" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/ast.json b/apps/files/l10n/ast.json index a0934808529..33c119771f7 100644 --- a/apps/files/l10n/ast.json +++ b/apps/files/l10n/ast.json @@ -2,13 +2,6 @@ "Storage not available" : "Almacenamientu non disponible", "Storage invalid" : "Almacenamientu inválidu", "Unknown error" : "Fallu desconocíu", - "Could not move %s - File with this name already exists" : "Nun pudo movese %s - Yá existe un ficheru con esi nome.", - "Could not move %s" : "Nun pudo movese %s", - "Permission denied" : "Permisu denegáu", - "The target folder has been moved or deleted." : "La carpeta oxetivu movióse o desanicióse.", - "The name %s is already used in the folder %s. Please choose a different name." : "El nome %s yá ta n'usu na carpeta %s. Por favor, escueyi un nome diferente.", - "Error when creating the file" : "Fallu cuando se creaba'l ficheru", - "Error when creating the folder" : "Fallu cuando se creaba la carpeta", "Unable to set upload directory." : "Nun pue afitase la carpeta de xubida.", "Invalid Token" : "Token inválidu", "No file was uploaded. Unknown error" : "Nun se xubió dengún ficheru. Fallu desconocíu", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Falta una carpeta temporal", "Failed to write to disk" : "Fallu al escribir al discu", "Not enough storage available" : "Nun hai abondu espaciu disponible", + "The target folder has been moved or deleted." : "La carpeta oxetivu movióse o desanicióse.", "Upload failed. Could not find uploaded file" : "Xubida fallida. Nun pudo atopase'l ficheru xubíu.", "Upload failed. Could not get file info." : "Falló la xubida. Nun se pudo obtener la información del ficheru.", "Invalid directory." : "Direutoriu non válidu.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Imposible determinar la fecha", "This operation is forbidden" : "La operación ta prohibida", "This directory is unavailable, please check the logs or contact the administrator" : "Esti direutoriu nun ta disponible, por favor verifica'l rexistru o contacta l'alministrador", - "Error moving file." : "Fallu moviendo'l ficheru.", - "Error moving file" : "Fallu moviendo'l ficheru", - "Error" : "Fallu", - "{new_name} already exists" : "{new_name} yá existe", - "Could not rename file" : "Nun pudo renomase'l ficheru", - "Could not create file" : "Nun pudo crease'l ficheru", - "Could not create folder" : "Nun pudo crease la carpeta", - "Error deleting file." : "Fallu desaniciando'l ficheru.", "No entries in this folder match '{filter}'" : "Nun concasa nenguna entrada nesta carpeta '{filter}'", "Name" : "Nome", "Size" : "Tamañu", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n bytes","%n bytes"], "Favorited" : "Favoritos", "Favorite" : "Favoritu", - "Text file" : "Ficheru de testu", - "New text file.txt" : "Nuevu testu ficheru.txt", "Folder" : "Carpeta", "New folder" : "Nueva carpeta", "{newname} already exists" : "{newname} yá existe", @@ -97,8 +81,6 @@ "Changed by %2$s" : "Modificáu por %2$s", "Deleted by %2$s" : "Desaniciáu por %2$s", "Restored by %2$s" : "Recuperáu por %2$s", - "%s could not be renamed as it has been deleted" : "%s nun pue renomase dempués de desaniciase", - "%s could not be renamed" : "Nun se puede renomar %s ", "Upload (max. %s)" : "Xuba (máx. %s)", "File handling" : "Alministración de ficheros", "Maximum upload size" : "Tamañu máximu de xubida", @@ -117,6 +99,8 @@ "Files are being scanned, please wait." : "Tan escaniándose los ficheros, espera por favor.", "Currently scanning" : "Anguaño escaneando", "No favorites" : "Nengún favoritu", - "Files and folders you mark as favorite will show up here" : "Los ficheros y carpetes que marque como favoritos apaecerán equí" + "Files and folders you mark as favorite will show up here" : "Los ficheros y carpetes que marque como favoritos apaecerán equí", + "Text file" : "Ficheru de testu", + "New text file.txt" : "Nuevu testu ficheru.txt" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/az.js b/apps/files/l10n/az.js index 10cbd661ebf..cf7d81063ce 100644 --- a/apps/files/l10n/az.js +++ b/apps/files/l10n/az.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "İnformasiya daşıyıcısı mövcud deyil", "Storage invalid" : "İnformasiya daşıyıcısı yalnışdır", "Unknown error" : "Bəlli olmayan səhv baş verdi", - "Could not move %s - File with this name already exists" : "Köçürmə mümkün deyil %s - Bu adla fayl artıq mövcuddur", - "Could not move %s" : "Yerdəyişmə mükün olmadı %s", - "Permission denied" : "Yetki qadağandır", - "The target folder has been moved or deleted." : "Mənsəbdə olan qovluqun ünvanı dəyişib yada silinib.", - "The name %s is already used in the folder %s. Please choose a different name." : "Bu ad %s artıq %s qovluğunda istifadə edilir. Xahiş olunur fərqli ad istifadə edəsiniz.", - "Error when creating the file" : "Fayl yaratdıqda səhv baş vermişdir", - "Error when creating the folder" : "Qovluğu yaratdıqda səhv baş vermişdir", "Unable to set upload directory." : "Əlavələr qovluğunu təyin etmək mümkün olmadı.", "Invalid Token" : "Yalnış token", "No file was uploaded. Unknown error" : "Heç bir fayl uüklənilmədi. Naməlum səhv", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Müvəqqəti qovluq çatışmır", "Failed to write to disk" : "Sərt diskə yazmaq mümkün olmadı", "Not enough storage available" : "Tələb edilən qədər yer yoxdur.", + "The target folder has been moved or deleted." : "Mənsəbdə olan qovluqun ünvanı dəyişib yada silinib.", "Upload failed. Could not find uploaded file" : "Yüklənmədə səhv oldu. Yüklənmiş faylı tapmaq olmur.", "Upload failed. Could not get file info." : "Yüklənmədə səhv oldu. Faylın informasiyasını almaq mümkün olmadı.", "Invalid directory." : "Yalnış qovluq.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Tarixi təyin etmək mümkün olmadı", "This operation is forbidden" : "Bu əməliyyat qadağandır", "This directory is unavailable, please check the logs or contact the administrator" : "Bu qovluq tapılmir. Xahiş olunur jurnalları yoxlayın ya da inzibatçı ilə əlaqə saxlayın", - "Error moving file." : "Faylın köçürülməsində səhv baş verdi.", - "Error moving file" : "Faylın köçürülməsində səhv baş verdi", - "Error" : "Səhv", - "{new_name} already exists" : "{new_name} artıq mövcuddur", - "Could not rename file" : "Faylın adını dəyişmək mümkün olmadı", - "Could not create file" : "Faylı yaratmaq olmur", - "Could not create folder" : "Qovluğu yaratmaq olmur", - "Error deleting file." : "Faylın silinməsində səhv baş verdi.", "No entries in this folder match '{filter}'" : "Bu qovluqda '{filter}' uyğunluğunda heç bir verilən tapılmadı", "Name" : "Ad", "Size" : "Həcm", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n baytlar","%n bytes"], "Favorited" : "İstəkləndi", "Favorite" : "İstəkli", - "Text file" : "Tekst faylı", - "New text file.txt" : "Yeni mətn file.txt", "Folder" : "Qovluq", "New folder" : "Yeni qovluq", "{newname} already exists" : "{newname} artıq mövcuddur", @@ -96,8 +80,6 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s silindi %1$s", "You restored %1$s" : "Siz qayıtdınız %1$s", "%2$s restored %1$s" : "%2$s bərpa edildi %1$s", - "%s could not be renamed as it has been deleted" : "%s adını dəyişə bilmərik ona görə ki, o silinib artıq", - "%s could not be renamed" : "%s adını dəyişə bilməz", "Upload (max. %s)" : "Yüklə (max. %s)", "File handling" : "Fayl emalı", "Maximum upload size" : "Maksimal yükləmə həcmi", @@ -116,6 +98,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Faylların skanı başlanıb, xahiş olunur gözləyəsiniz.", "Currently scanning" : "Hal-hazırda skan edilir", "No favorites" : "Seçilmiş yoxdur", - "Files and folders you mark as favorite will show up here" : "İstəkli qeyd etdiyiniz fayllar və qovluqlar burda göstəriləcək" + "Files and folders you mark as favorite will show up here" : "İstəkli qeyd etdiyiniz fayllar və qovluqlar burda göstəriləcək", + "Text file" : "Tekst faylı", + "New text file.txt" : "Yeni mətn file.txt" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/az.json b/apps/files/l10n/az.json index 0587f91d97b..f2c45fda2f7 100644 --- a/apps/files/l10n/az.json +++ b/apps/files/l10n/az.json @@ -2,13 +2,6 @@ "Storage not available" : "İnformasiya daşıyıcısı mövcud deyil", "Storage invalid" : "İnformasiya daşıyıcısı yalnışdır", "Unknown error" : "Bəlli olmayan səhv baş verdi", - "Could not move %s - File with this name already exists" : "Köçürmə mümkün deyil %s - Bu adla fayl artıq mövcuddur", - "Could not move %s" : "Yerdəyişmə mükün olmadı %s", - "Permission denied" : "Yetki qadağandır", - "The target folder has been moved or deleted." : "Mənsəbdə olan qovluqun ünvanı dəyişib yada silinib.", - "The name %s is already used in the folder %s. Please choose a different name." : "Bu ad %s artıq %s qovluğunda istifadə edilir. Xahiş olunur fərqli ad istifadə edəsiniz.", - "Error when creating the file" : "Fayl yaratdıqda səhv baş vermişdir", - "Error when creating the folder" : "Qovluğu yaratdıqda səhv baş vermişdir", "Unable to set upload directory." : "Əlavələr qovluğunu təyin etmək mümkün olmadı.", "Invalid Token" : "Yalnış token", "No file was uploaded. Unknown error" : "Heç bir fayl uüklənilmədi. Naməlum səhv", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Müvəqqəti qovluq çatışmır", "Failed to write to disk" : "Sərt diskə yazmaq mümkün olmadı", "Not enough storage available" : "Tələb edilən qədər yer yoxdur.", + "The target folder has been moved or deleted." : "Mənsəbdə olan qovluqun ünvanı dəyişib yada silinib.", "Upload failed. Could not find uploaded file" : "Yüklənmədə səhv oldu. Yüklənmiş faylı tapmaq olmur.", "Upload failed. Could not get file info." : "Yüklənmədə səhv oldu. Faylın informasiyasını almaq mümkün olmadı.", "Invalid directory." : "Yalnış qovluq.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Tarixi təyin etmək mümkün olmadı", "This operation is forbidden" : "Bu əməliyyat qadağandır", "This directory is unavailable, please check the logs or contact the administrator" : "Bu qovluq tapılmir. Xahiş olunur jurnalları yoxlayın ya da inzibatçı ilə əlaqə saxlayın", - "Error moving file." : "Faylın köçürülməsində səhv baş verdi.", - "Error moving file" : "Faylın köçürülməsində səhv baş verdi", - "Error" : "Səhv", - "{new_name} already exists" : "{new_name} artıq mövcuddur", - "Could not rename file" : "Faylın adını dəyişmək mümkün olmadı", - "Could not create file" : "Faylı yaratmaq olmur", - "Could not create folder" : "Qovluğu yaratmaq olmur", - "Error deleting file." : "Faylın silinməsində səhv baş verdi.", "No entries in this folder match '{filter}'" : "Bu qovluqda '{filter}' uyğunluğunda heç bir verilən tapılmadı", "Name" : "Ad", "Size" : "Həcm", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n baytlar","%n bytes"], "Favorited" : "İstəkləndi", "Favorite" : "İstəkli", - "Text file" : "Tekst faylı", - "New text file.txt" : "Yeni mətn file.txt", "Folder" : "Qovluq", "New folder" : "Yeni qovluq", "{newname} already exists" : "{newname} artıq mövcuddur", @@ -94,8 +78,6 @@ "%2$s deleted %1$s" : "%2$s silindi %1$s", "You restored %1$s" : "Siz qayıtdınız %1$s", "%2$s restored %1$s" : "%2$s bərpa edildi %1$s", - "%s could not be renamed as it has been deleted" : "%s adını dəyişə bilmərik ona görə ki, o silinib artıq", - "%s could not be renamed" : "%s adını dəyişə bilməz", "Upload (max. %s)" : "Yüklə (max. %s)", "File handling" : "Fayl emalı", "Maximum upload size" : "Maksimal yükləmə həcmi", @@ -114,6 +96,8 @@ "Files are being scanned, please wait." : "Faylların skanı başlanıb, xahiş olunur gözləyəsiniz.", "Currently scanning" : "Hal-hazırda skan edilir", "No favorites" : "Seçilmiş yoxdur", - "Files and folders you mark as favorite will show up here" : "İstəkli qeyd etdiyiniz fayllar və qovluqlar burda göstəriləcək" + "Files and folders you mark as favorite will show up here" : "İstəkli qeyd etdiyiniz fayllar və qovluqlar burda göstəriləcək", + "Text file" : "Tekst faylı", + "New text file.txt" : "Yeni mətn file.txt" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/be.js b/apps/files/l10n/be.js index 77e9a4d6071..55e94ac2477 100644 --- a/apps/files/l10n/be.js +++ b/apps/files/l10n/be.js @@ -1,7 +1,6 @@ OC.L10N.register( "files", { - "Error" : "Памылка", "Settings" : "Налады" }, "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/be.json b/apps/files/l10n/be.json index 27c2988b703..3f70a0783fe 100644 --- a/apps/files/l10n/be.json +++ b/apps/files/l10n/be.json @@ -1,5 +1,4 @@ { "translations": { - "Error" : "Памылка", "Settings" : "Налады" },"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/bg_BG.js b/apps/files/l10n/bg_BG.js index 7f83daa45f6..b30f670e310 100644 --- a/apps/files/l10n/bg_BG.js +++ b/apps/files/l10n/bg_BG.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Липсва дисковото устройство.", "Storage invalid" : "Невалидно дисково устройство.", "Unknown error" : "Непозната грешка.", - "Could not move %s - File with this name already exists" : "Неуспешно преместване на %s - Файл със същото име вече съществува.", - "Could not move %s" : "Неуспешно преместване на %s.", - "Permission denied" : "Достъпът отказан", - "The target folder has been moved or deleted." : "Крайната папка е изтрита или преместена.", - "The name %s is already used in the folder %s. Please choose a different name." : "Името %s е вече в папка %s. Моля, избери друго име.", - "Error when creating the file" : "Грешка при създаването на файлът.", - "Error when creating the folder" : "Грешка при създаването на папката.", "Unable to set upload directory." : "Неуспешно задаване на директория за качване.", "Invalid Token" : "Невалиеден токен.", "No file was uploaded. Unknown error" : "Неуспешно качвачване на файл. Непозната грешка.", @@ -22,6 +15,7 @@ OC.L10N.register( "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." : "Невалидна директория.", @@ -44,14 +38,6 @@ OC.L10N.register( "Select" : "Избери", "Pending" : "Чакащо", "Unable to determine date" : "Неуспешно установяване на дата", - "Error moving file." : "Грешка при местенето на файла.", - "Error moving file" : "Грешка при преместването на файла.", - "Error" : "Грешка", - "{new_name} already exists" : "{new_name} вече съществува.", - "Could not rename file" : "Неуспешно преименуване на файла.", - "Could not create file" : "Несупешно създаване на файла.", - "Could not create folder" : "Неуспешно създаване на папка.", - "Error deleting file." : "Грешка при изтриването на файла.", "No entries in this folder match '{filter}'" : "Нищо в тази папка не отговаря на '{filter}'", "Name" : "Име", "Size" : "Размер", @@ -69,7 +55,6 @@ OC.L10N.register( "_matches '{filter}'_::_match '{filter}'_" : ["пасва на '{filter}'","пасват на '{filter}'\n "], "Favorited" : "Отбелязано в любими", "Favorite" : "Любими", - "Text file" : "Текстов файл", "Folder" : "Папка", "New folder" : "Нова папка", "Upload" : "Качване", @@ -87,8 +72,6 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s изтри %1$s.", "You restored %1$s" : "Вие възстановихте %1$s", "%2$s restored %1$s" : "%2$s възстанови %1$s", - "%s could not be renamed as it has been deleted" : "%s не може да бъде преименуван, защото е вече изтрит", - "%s could not be renamed" : "%s не може да бъде преименуван.", "Upload (max. %s)" : "Качи (макс. %s)", "File handling" : "Операция с файла", "Maximum upload size" : "Максимален размер", @@ -107,6 +90,7 @@ OC.L10N.register( "Files are being scanned, please wait." : "Файловете се сканирват, изчакайте.", "Currently scanning" : "В момента се търси", "No favorites" : "Няма любими", - "Files and folders you mark as favorite will show up here" : "Файловете и папките които отбелязваш като любими ще се показват тук" + "Files and folders you mark as favorite will show up here" : "Файловете и папките които отбелязваш като любими ще се показват тук", + "Text file" : "Текстов файл" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/bg_BG.json b/apps/files/l10n/bg_BG.json index 639b39c258d..e676d27fcba 100644 --- a/apps/files/l10n/bg_BG.json +++ b/apps/files/l10n/bg_BG.json @@ -2,13 +2,6 @@ "Storage not available" : "Липсва дисковото устройство.", "Storage invalid" : "Невалидно дисково устройство.", "Unknown error" : "Непозната грешка.", - "Could not move %s - File with this name already exists" : "Неуспешно преместване на %s - Файл със същото име вече съществува.", - "Could not move %s" : "Неуспешно преместване на %s.", - "Permission denied" : "Достъпът отказан", - "The target folder has been moved or deleted." : "Крайната папка е изтрита или преместена.", - "The name %s is already used in the folder %s. Please choose a different name." : "Името %s е вече в папка %s. Моля, избери друго име.", - "Error when creating the file" : "Грешка при създаването на файлът.", - "Error when creating the folder" : "Грешка при създаването на папката.", "Unable to set upload directory." : "Неуспешно задаване на директория за качване.", "Invalid Token" : "Невалиеден токен.", "No file was uploaded. Unknown error" : "Неуспешно качвачване на файл. Непозната грешка.", @@ -20,6 +13,7 @@ "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." : "Невалидна директория.", @@ -42,14 +36,6 @@ "Select" : "Избери", "Pending" : "Чакащо", "Unable to determine date" : "Неуспешно установяване на дата", - "Error moving file." : "Грешка при местенето на файла.", - "Error moving file" : "Грешка при преместването на файла.", - "Error" : "Грешка", - "{new_name} already exists" : "{new_name} вече съществува.", - "Could not rename file" : "Неуспешно преименуване на файла.", - "Could not create file" : "Несупешно създаване на файла.", - "Could not create folder" : "Неуспешно създаване на папка.", - "Error deleting file." : "Грешка при изтриването на файла.", "No entries in this folder match '{filter}'" : "Нищо в тази папка не отговаря на '{filter}'", "Name" : "Име", "Size" : "Размер", @@ -67,7 +53,6 @@ "_matches '{filter}'_::_match '{filter}'_" : ["пасва на '{filter}'","пасват на '{filter}'\n "], "Favorited" : "Отбелязано в любими", "Favorite" : "Любими", - "Text file" : "Текстов файл", "Folder" : "Папка", "New folder" : "Нова папка", "Upload" : "Качване", @@ -85,8 +70,6 @@ "%2$s deleted %1$s" : "%2$s изтри %1$s.", "You restored %1$s" : "Вие възстановихте %1$s", "%2$s restored %1$s" : "%2$s възстанови %1$s", - "%s could not be renamed as it has been deleted" : "%s не може да бъде преименуван, защото е вече изтрит", - "%s could not be renamed" : "%s не може да бъде преименуван.", "Upload (max. %s)" : "Качи (макс. %s)", "File handling" : "Операция с файла", "Maximum upload size" : "Максимален размер", @@ -105,6 +88,7 @@ "Files are being scanned, please wait." : "Файловете се сканирват, изчакайте.", "Currently scanning" : "В момента се търси", "No favorites" : "Няма любими", - "Files and folders you mark as favorite will show up here" : "Файловете и папките които отбелязваш като любими ще се показват тук" + "Files and folders you mark as favorite will show up here" : "Файловете и папките които отбелязваш като любими ще се показват тук", + "Text file" : "Текстов файл" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/bn_BD.js b/apps/files/l10n/bn_BD.js index 412f4aa0399..b968a225da7 100644 --- a/apps/files/l10n/bn_BD.js +++ b/apps/files/l10n/bn_BD.js @@ -4,11 +4,6 @@ OC.L10N.register( "Storage not available" : "সংরক্ষণের স্থান নেই", "Storage invalid" : "সংরক্ষণাগার বৈধ নয়", "Unknown error" : "অজানা জটিলতা", - "Could not move %s - File with this name already exists" : "%s কে স্থানান্তর করা সম্ভব হলো না - এই নামের ফাইল বিদ্যমান", - "Could not move %s" : "%s কে স্থানান্তর করা সম্ভব হলো না", - "Permission denied" : "অনুমতি দেয়া হয়নি", - "Error when creating the file" : "ফাইলটি তৈরী করতে যেয়ে সমস্যা হলো", - "Error when creating the folder" : "ফোল্ডার তৈরী করতে যেয়ে সমস্যা হলো", "Unable to set upload directory." : "েআপলোড ডিরেক্টরি নির্ধারণ করা গেলনা।", "No file was uploaded. Unknown error" : "কোন ফাইল আপলোড করা হয় নি। সমস্যার কারণটি অজ্ঞাত।", "There is no error, the file uploaded with success" : "কোন সমস্যা হয় নি, ফাইল আপলোড সুসম্পন্ন হয়েছে।", @@ -33,11 +28,6 @@ OC.L10N.register( "Delete" : "মুছে", "Details" : "বিস্তারিত", "Pending" : "মুলতুবি", - "Error moving file." : "ফাইল সরাতে সমস্যা হলো।", - "Error moving file" : "ফাইল সরাতে সমস্যা হলো", - "Error" : "সমস্যা", - "{new_name} already exists" : "{new_name} টি বিদ্যমান", - "Could not rename file" : "ফাইলের পূণঃনামকরণ করা গেলনা", "Name" : "রাম", "Size" : "আকার", "Modified" : "পরিবর্তিত", @@ -47,7 +37,6 @@ OC.L10N.register( "File name cannot be empty." : "ফাইলের নামটি ফাঁকা রাখা যাবে না।", "Your storage is almost full ({usedSpacePercent}%)" : "আপনার সংরক্ষণাধার প্রায় পরিপূর্ণ ({usedSpacePercent}%) ", "Favorite" : "প্রিয়জন", - "Text file" : "টেক্সট ফাইল", "Folder" : "ফোল্ডার", "New folder" : "নব ফােলডার", "Upload" : "আপলোড", @@ -70,6 +59,7 @@ OC.L10N.register( "Cancel upload" : "আপলোড বাতিল কর", "Upload too large" : "আপলোডের আকারটি অনেক বড়", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "আপনি এই সার্ভারে আপলোড করার জন্য অনুমোদিত ফাইলের সর্বোচ্চ আকারের চেয়ে বৃহদাকার ফাইল আপলোড করার চেষ্টা করছেন ", - "Files are being scanned, please wait." : "ফাইলগুলো স্ক্যান করা হচ্ছে, দয়া করে অপেক্ষা করুন।" + "Files are being scanned, please wait." : "ফাইলগুলো স্ক্যান করা হচ্ছে, দয়া করে অপেক্ষা করুন।", + "Text file" : "টেক্সট ফাইল" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/bn_BD.json b/apps/files/l10n/bn_BD.json index b8078f43071..bed559330ad 100644 --- a/apps/files/l10n/bn_BD.json +++ b/apps/files/l10n/bn_BD.json @@ -2,11 +2,6 @@ "Storage not available" : "সংরক্ষণের স্থান নেই", "Storage invalid" : "সংরক্ষণাগার বৈধ নয়", "Unknown error" : "অজানা জটিলতা", - "Could not move %s - File with this name already exists" : "%s কে স্থানান্তর করা সম্ভব হলো না - এই নামের ফাইল বিদ্যমান", - "Could not move %s" : "%s কে স্থানান্তর করা সম্ভব হলো না", - "Permission denied" : "অনুমতি দেয়া হয়নি", - "Error when creating the file" : "ফাইলটি তৈরী করতে যেয়ে সমস্যা হলো", - "Error when creating the folder" : "ফোল্ডার তৈরী করতে যেয়ে সমস্যা হলো", "Unable to set upload directory." : "েআপলোড ডিরেক্টরি নির্ধারণ করা গেলনা।", "No file was uploaded. Unknown error" : "কোন ফাইল আপলোড করা হয় নি। সমস্যার কারণটি অজ্ঞাত।", "There is no error, the file uploaded with success" : "কোন সমস্যা হয় নি, ফাইল আপলোড সুসম্পন্ন হয়েছে।", @@ -31,11 +26,6 @@ "Delete" : "মুছে", "Details" : "বিস্তারিত", "Pending" : "মুলতুবি", - "Error moving file." : "ফাইল সরাতে সমস্যা হলো।", - "Error moving file" : "ফাইল সরাতে সমস্যা হলো", - "Error" : "সমস্যা", - "{new_name} already exists" : "{new_name} টি বিদ্যমান", - "Could not rename file" : "ফাইলের পূণঃনামকরণ করা গেলনা", "Name" : "রাম", "Size" : "আকার", "Modified" : "পরিবর্তিত", @@ -45,7 +35,6 @@ "File name cannot be empty." : "ফাইলের নামটি ফাঁকা রাখা যাবে না।", "Your storage is almost full ({usedSpacePercent}%)" : "আপনার সংরক্ষণাধার প্রায় পরিপূর্ণ ({usedSpacePercent}%) ", "Favorite" : "প্রিয়জন", - "Text file" : "টেক্সট ফাইল", "Folder" : "ফোল্ডার", "New folder" : "নব ফােলডার", "Upload" : "আপলোড", @@ -68,6 +57,7 @@ "Cancel upload" : "আপলোড বাতিল কর", "Upload too large" : "আপলোডের আকারটি অনেক বড়", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "আপনি এই সার্ভারে আপলোড করার জন্য অনুমোদিত ফাইলের সর্বোচ্চ আকারের চেয়ে বৃহদাকার ফাইল আপলোড করার চেষ্টা করছেন ", - "Files are being scanned, please wait." : "ফাইলগুলো স্ক্যান করা হচ্ছে, দয়া করে অপেক্ষা করুন।" + "Files are being scanned, please wait." : "ফাইলগুলো স্ক্যান করা হচ্ছে, দয়া করে অপেক্ষা করুন।", + "Text file" : "টেক্সট ফাইল" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/bn_IN.js b/apps/files/l10n/bn_IN.js index d7f61133133..e69597d35ca 100644 --- a/apps/files/l10n/bn_IN.js +++ b/apps/files/l10n/bn_IN.js @@ -1,8 +1,6 @@ OC.L10N.register( "files", { - "Could not move %s - File with this name already exists" : "%s সরানো যায়নি-এই নামে আগে থেকেই ফাইল আছে", - "Could not move %s" : "%s সরানো যায়নি", "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 নির্দেশ অতিক্রম করে:", @@ -19,7 +17,6 @@ OC.L10N.register( "Rename" : "পুনঃনামকরণ", "Delete" : "মুছে ফেলা", "Pending" : "মুলতুবি", - "Error" : "ভুল", "Name" : "নাম", "Size" : "আকার", "Folder" : "ফোল্ডার", diff --git a/apps/files/l10n/bn_IN.json b/apps/files/l10n/bn_IN.json index f2d5d9fbf74..20c8c2e795e 100644 --- a/apps/files/l10n/bn_IN.json +++ b/apps/files/l10n/bn_IN.json @@ -1,6 +1,4 @@ { "translations": { - "Could not move %s - File with this name already exists" : "%s সরানো যায়নি-এই নামে আগে থেকেই ফাইল আছে", - "Could not move %s" : "%s সরানো যায়নি", "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 নির্দেশ অতিক্রম করে:", @@ -17,7 +15,6 @@ "Rename" : "পুনঃনামকরণ", "Delete" : "মুছে ফেলা", "Pending" : "মুলতুবি", - "Error" : "ভুল", "Name" : "নাম", "Size" : "আকার", "Folder" : "ফোল্ডার", diff --git a/apps/files/l10n/bs.js b/apps/files/l10n/bs.js index b084f2eb3be..9da51ece871 100644 --- a/apps/files/l10n/bs.js +++ b/apps/files/l10n/bs.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Pohrana je nedostupna", "Storage invalid" : "Pohrana je neispravna", "Unknown error" : "Nepoznata greška", - "Could not move %s - File with this name already exists" : "Nemoguće premjestiti %s - Datoteka takvog naziva već postoji", - "Could not move %s" : "Nemoguće premjestiti %s", - "Permission denied" : "Nemate ovlaštenje", - "The target folder has been moved or deleted." : "Ciljni direktorij je premješten ili izbrisan.", - "The name %s is already used in the folder %s. Please choose a different name." : "Naziv %s je već iskorišten u direktoriju %s. Molim odaberite drugi naziv.", - "Error when creating the file" : "Greška pri kreiranju datoteke", - "Error when creating the folder" : "Greška pri kreiranju direktorija", "Unable to set upload directory." : "Odredba direktorija učitavanja nije moguća.", "Invalid Token" : "Neispravan Znak", "No file was uploaded. Unknown error" : "Nijedna datoteka nije učitana. Nepoznata greška.", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Nedostaje privremeni direktorij.", "Failed to write to disk" : "Zapisivanje na disk nije uspjelo.", "Not enough storage available" : "Prostor za pohranu je nedovoljan", + "The target folder has been moved or deleted." : "Ciljni direktorij je premješten ili izbrisan.", "Upload failed. Could not find uploaded file" : "Neuspješno učitavanje. Nije pronađena učitana dataoteka", "Upload failed. Could not get file info." : "Neuspješno učitavanje. Nedostupne informacije o datoteci.", "Invalid directory." : "Neispravan direktorij.", @@ -43,14 +37,6 @@ OC.L10N.register( "Select" : "Izaberi", "Pending" : "Na čekanju", "Unable to determine date" : "Nemoguće odrediti datum", - "Error moving file." : "Greška pri premještanju datoteke", - "Error moving file" : "Greška pri premještanju datoteke", - "Error" : "Greška", - "{new_name} already exists" : "{new_name} već postoji", - "Could not rename file" : "Nemoguće preimenovati datoteku", - "Could not create file" : "Datoteku nije moguće kreirati", - "Could not create folder" : "Direktorij nije moguće kreirati", - "Error deleting file." : "Greška pri brisanju datoteke", "Name" : "Ime", "Size" : "Veličina", "Modified" : "Izmijenjeno", @@ -66,12 +52,9 @@ OC.L10N.register( "Your storage is almost full ({usedSpacePercent}%)" : "Vaš prostor za pohranu je skoro pun ({usedSpacePercent}%)", "Favorited" : "Favorizovano", "Favorite" : "Favorit", - "Text file" : "Tekstualna datoteka", "Folder" : "Direktorij", "New folder" : "Novi direktorij", "Upload" : "Učitaj", - "%s could not be renamed as it has been deleted" : "%s nije moguće preimenovati jer je izbrisan", - "%s could not be renamed" : "%s nije moguće preimenovati", "Upload (max. %s)" : "Učitaj (max. %s)", "File handling" : "Obrada datoteke", "Maximum upload size" : "Maksimalna veličina učitavanja", @@ -88,6 +71,7 @@ OC.L10N.register( "Files are being scanned, please wait." : "Datoteke se provjeravaju, molim pričekajte.", "Currently scanning" : "Provjera u toku", "No favorites" : "Nema favorita", - "Files and folders you mark as favorite will show up here" : "Datoteke i direktorij koje ste označili kao favorite će biti prikazane ovdje" + "Files and folders you mark as favorite will show up here" : "Datoteke i direktorij koje ste označili kao favorite će biti prikazane ovdje", + "Text file" : "Tekstualna datoteka" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files/l10n/bs.json b/apps/files/l10n/bs.json index e02689ff9fe..095fe47048d 100644 --- a/apps/files/l10n/bs.json +++ b/apps/files/l10n/bs.json @@ -2,13 +2,6 @@ "Storage not available" : "Pohrana je nedostupna", "Storage invalid" : "Pohrana je neispravna", "Unknown error" : "Nepoznata greška", - "Could not move %s - File with this name already exists" : "Nemoguće premjestiti %s - Datoteka takvog naziva već postoji", - "Could not move %s" : "Nemoguće premjestiti %s", - "Permission denied" : "Nemate ovlaštenje", - "The target folder has been moved or deleted." : "Ciljni direktorij je premješten ili izbrisan.", - "The name %s is already used in the folder %s. Please choose a different name." : "Naziv %s je već iskorišten u direktoriju %s. Molim odaberite drugi naziv.", - "Error when creating the file" : "Greška pri kreiranju datoteke", - "Error when creating the folder" : "Greška pri kreiranju direktorija", "Unable to set upload directory." : "Odredba direktorija učitavanja nije moguća.", "Invalid Token" : "Neispravan Znak", "No file was uploaded. Unknown error" : "Nijedna datoteka nije učitana. Nepoznata greška.", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Nedostaje privremeni direktorij.", "Failed to write to disk" : "Zapisivanje na disk nije uspjelo.", "Not enough storage available" : "Prostor za pohranu je nedovoljan", + "The target folder has been moved or deleted." : "Ciljni direktorij je premješten ili izbrisan.", "Upload failed. Could not find uploaded file" : "Neuspješno učitavanje. Nije pronađena učitana dataoteka", "Upload failed. Could not get file info." : "Neuspješno učitavanje. Nedostupne informacije o datoteci.", "Invalid directory." : "Neispravan direktorij.", @@ -41,14 +35,6 @@ "Select" : "Izaberi", "Pending" : "Na čekanju", "Unable to determine date" : "Nemoguće odrediti datum", - "Error moving file." : "Greška pri premještanju datoteke", - "Error moving file" : "Greška pri premještanju datoteke", - "Error" : "Greška", - "{new_name} already exists" : "{new_name} već postoji", - "Could not rename file" : "Nemoguće preimenovati datoteku", - "Could not create file" : "Datoteku nije moguće kreirati", - "Could not create folder" : "Direktorij nije moguće kreirati", - "Error deleting file." : "Greška pri brisanju datoteke", "Name" : "Ime", "Size" : "Veličina", "Modified" : "Izmijenjeno", @@ -64,12 +50,9 @@ "Your storage is almost full ({usedSpacePercent}%)" : "Vaš prostor za pohranu je skoro pun ({usedSpacePercent}%)", "Favorited" : "Favorizovano", "Favorite" : "Favorit", - "Text file" : "Tekstualna datoteka", "Folder" : "Direktorij", "New folder" : "Novi direktorij", "Upload" : "Učitaj", - "%s could not be renamed as it has been deleted" : "%s nije moguće preimenovati jer je izbrisan", - "%s could not be renamed" : "%s nije moguće preimenovati", "Upload (max. %s)" : "Učitaj (max. %s)", "File handling" : "Obrada datoteke", "Maximum upload size" : "Maksimalna veličina učitavanja", @@ -86,6 +69,7 @@ "Files are being scanned, please wait." : "Datoteke se provjeravaju, molim pričekajte.", "Currently scanning" : "Provjera u toku", "No favorites" : "Nema favorita", - "Files and folders you mark as favorite will show up here" : "Datoteke i direktorij koje ste označili kao favorite će biti prikazane ovdje" + "Files and folders you mark as favorite will show up here" : "Datoteke i direktorij koje ste označili kao favorite će biti prikazane ovdje", + "Text file" : "Tekstualna datoteka" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/files/l10n/ca.js b/apps/files/l10n/ca.js index 601781a1182..88ad7224161 100644 --- a/apps/files/l10n/ca.js +++ b/apps/files/l10n/ca.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Emmagatzemament no disponible", "Storage invalid" : "Emmagatzemament no vàlid", "Unknown error" : "Error desconegut", - "Could not move %s - File with this name already exists" : "No s'ha pogut moure %s - Ja hi ha un fitxer amb aquest nom", - "Could not move %s" : " No s'ha pogut moure %s", - "Permission denied" : "Permís denegat", - "The target folder has been moved or deleted." : "La carpeta de destí s'ha mogut o eliminat.", - "The name %s is already used in the folder %s. Please choose a different name." : "El nom %s ja s'usa en la carpeta %s. Indiqueu un nom diferent.", - "Error when creating the file" : "S'ha produït un error en crear el fitxer", - "Error when creating the folder" : "S'ha produït un error en crear la carpeta", "Unable to set upload directory." : "No es pot establir la carpeta de pujada.", "Invalid Token" : "Testimoni no vàlid", "No file was uploaded. Unknown error" : "No s'ha carregat cap fitxer. Error desconegut", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Falta un fitxer temporal", "Failed to write to disk" : "Ha fallat en escriure al disc", "Not enough storage available" : "No hi ha prou espai disponible", + "The target folder has been moved or deleted." : "La carpeta de destí s'ha mogut o eliminat.", "Upload failed. Could not find uploaded file" : "La pujada ha fallat. El fitxer pujat no s'ha trobat.", "Upload failed. Could not get file info." : "La pujada ha fallat. No s'ha pogut obtenir informació del fitxer.", "Invalid directory." : "Directori no vàlid.", @@ -44,14 +38,6 @@ OC.L10N.register( "Select" : "Selecciona", "Pending" : "Pendent", "Unable to determine date" : "No s'ha pogut determinar la data", - "Error moving file." : "Error en moure el fitxer.", - "Error moving file" : "Error en moure el fitxer", - "Error" : "Error", - "{new_name} already exists" : "{new_name} ja existeix", - "Could not rename file" : "No es pot canviar el nom de fitxer", - "Could not create file" : "No s'ha pogut crear el fitxer", - "Could not create folder" : "No s'ha pogut crear la carpeta", - "Error deleting file." : "Error en esborrar el fitxer.", "No entries in this folder match '{filter}'" : "No hi ha resultats que coincideixin amb '{filter}'", "Name" : "Nom", "Size" : "Mida", @@ -71,7 +57,6 @@ OC.L10N.register( "_matches '{filter}'_::_match '{filter}'_" : ["coincidències '{filter}'","coincidència '{filter}'"], "Favorited" : "Agregat a favorits", "Favorite" : "Preferits", - "Text file" : "Fitxer de text", "Folder" : "Carpeta", "New folder" : "Carpeta nova", "Upload" : "Puja", @@ -90,8 +75,6 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s ha esborrat %1$s", "You restored %1$s" : "Has restaurat %1$s", "%2$s restored %1$s" : "%2$s ha restaurat %1$s", - "%s could not be renamed as it has been deleted" : "No s'ha pogut renombrar %s ja que ha estat borrat", - "%s could not be renamed" : "%s no es pot canviar el nom", "Upload (max. %s)" : "Pujada (màx. %s)", "File handling" : "Gestió de fitxers", "Maximum upload size" : "Mida màxima de pujada", @@ -110,6 +93,7 @@ OC.L10N.register( "Files are being scanned, please wait." : "S'estan escanejant els fitxers, espereu", "Currently scanning" : "Actualment escanejant", "No favorites" : "No hi ha favorits", - "Files and folders you mark as favorite will show up here" : "Aquí apareixeran els arxius i carpetes que vostè marqui com favorits" + "Files and folders you mark as favorite will show up here" : "Aquí apareixeran els arxius i carpetes que vostè marqui com favorits", + "Text file" : "Fitxer de text" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/ca.json b/apps/files/l10n/ca.json index 748a55d3c8e..4eee482e835 100644 --- a/apps/files/l10n/ca.json +++ b/apps/files/l10n/ca.json @@ -2,13 +2,6 @@ "Storage not available" : "Emmagatzemament no disponible", "Storage invalid" : "Emmagatzemament no vàlid", "Unknown error" : "Error desconegut", - "Could not move %s - File with this name already exists" : "No s'ha pogut moure %s - Ja hi ha un fitxer amb aquest nom", - "Could not move %s" : " No s'ha pogut moure %s", - "Permission denied" : "Permís denegat", - "The target folder has been moved or deleted." : "La carpeta de destí s'ha mogut o eliminat.", - "The name %s is already used in the folder %s. Please choose a different name." : "El nom %s ja s'usa en la carpeta %s. Indiqueu un nom diferent.", - "Error when creating the file" : "S'ha produït un error en crear el fitxer", - "Error when creating the folder" : "S'ha produït un error en crear la carpeta", "Unable to set upload directory." : "No es pot establir la carpeta de pujada.", "Invalid Token" : "Testimoni no vàlid", "No file was uploaded. Unknown error" : "No s'ha carregat cap fitxer. Error desconegut", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Falta un fitxer temporal", "Failed to write to disk" : "Ha fallat en escriure al disc", "Not enough storage available" : "No hi ha prou espai disponible", + "The target folder has been moved or deleted." : "La carpeta de destí s'ha mogut o eliminat.", "Upload failed. Could not find uploaded file" : "La pujada ha fallat. El fitxer pujat no s'ha trobat.", "Upload failed. Could not get file info." : "La pujada ha fallat. No s'ha pogut obtenir informació del fitxer.", "Invalid directory." : "Directori no vàlid.", @@ -42,14 +36,6 @@ "Select" : "Selecciona", "Pending" : "Pendent", "Unable to determine date" : "No s'ha pogut determinar la data", - "Error moving file." : "Error en moure el fitxer.", - "Error moving file" : "Error en moure el fitxer", - "Error" : "Error", - "{new_name} already exists" : "{new_name} ja existeix", - "Could not rename file" : "No es pot canviar el nom de fitxer", - "Could not create file" : "No s'ha pogut crear el fitxer", - "Could not create folder" : "No s'ha pogut crear la carpeta", - "Error deleting file." : "Error en esborrar el fitxer.", "No entries in this folder match '{filter}'" : "No hi ha resultats que coincideixin amb '{filter}'", "Name" : "Nom", "Size" : "Mida", @@ -69,7 +55,6 @@ "_matches '{filter}'_::_match '{filter}'_" : ["coincidències '{filter}'","coincidència '{filter}'"], "Favorited" : "Agregat a favorits", "Favorite" : "Preferits", - "Text file" : "Fitxer de text", "Folder" : "Carpeta", "New folder" : "Carpeta nova", "Upload" : "Puja", @@ -88,8 +73,6 @@ "%2$s deleted %1$s" : "%2$s ha esborrat %1$s", "You restored %1$s" : "Has restaurat %1$s", "%2$s restored %1$s" : "%2$s ha restaurat %1$s", - "%s could not be renamed as it has been deleted" : "No s'ha pogut renombrar %s ja que ha estat borrat", - "%s could not be renamed" : "%s no es pot canviar el nom", "Upload (max. %s)" : "Pujada (màx. %s)", "File handling" : "Gestió de fitxers", "Maximum upload size" : "Mida màxima de pujada", @@ -108,6 +91,7 @@ "Files are being scanned, please wait." : "S'estan escanejant els fitxers, espereu", "Currently scanning" : "Actualment escanejant", "No favorites" : "No hi ha favorits", - "Files and folders you mark as favorite will show up here" : "Aquí apareixeran els arxius i carpetes que vostè marqui com favorits" + "Files and folders you mark as favorite will show up here" : "Aquí apareixeran els arxius i carpetes que vostè marqui com favorits", + "Text file" : "Fitxer de text" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/cs_CZ.js b/apps/files/l10n/cs_CZ.js index 3c6bdc05a1b..9e1135347ec 100644 --- a/apps/files/l10n/cs_CZ.js +++ b/apps/files/l10n/cs_CZ.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Úložiště není dostupné", "Storage invalid" : "Neplatné úložiště", "Unknown error" : "Neznámá chyba", - "Could not move %s - File with this name already exists" : "Nelze přesunout %s - již existuje soubor se stejným názvem", - "Could not move %s" : "Nelze přesunout %s", - "Permission denied" : "Přístup odepřen", - "The target folder has been moved or deleted." : "Cílová složka byla přesunuta nebo smazána.", - "The name %s is already used in the folder %s. Please choose a different name." : "Název %s ve složce %s již existuje. Vyberte prosím jiné jméno.", - "Error when creating the file" : "Chyba při vytváření souboru", - "Error when creating the folder" : "Chyba při vytváření složky", "Unable to set upload directory." : "Nelze nastavit adresář pro nahrané soubory.", "Invalid Token" : "Neplatný token", "No file was uploaded. Unknown error" : "Žádný soubor nebyl odeslán. Neznámá chyba", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Chybí adresář pro dočasné soubory", "Failed to write to disk" : "Zápis na disk selhal", "Not enough storage available" : "Nedostatek dostupného úložného prostoru", + "The target folder has been moved or deleted." : "Cílová složka byla přesunuta nebo smazána.", "Upload failed. Could not find uploaded file" : "Nahrávání selhalo. Nepodařilo se nalézt nahraný soubor.", "Upload failed. Could not get file info." : "Nahrávání selhalo. Nepodařilo se získat informace o souboru.", "Invalid directory." : "Neplatný adresář", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Nelze určit datum", "This operation is forbidden" : "Tato operace je zakázána", "This directory is unavailable, please check the logs or contact the administrator" : "Tento adresář není dostupný, zkontrolujte prosím logy nebo kontaktujte svého správce systému", - "Error moving file." : "Chyba při přesunu souboru.", - "Error moving file" : "Chyba při přesunu souboru", - "Error" : "Chyba", - "{new_name} already exists" : "{new_name} již existuje", - "Could not rename file" : "Nepodařilo se přejmenovat soubor", - "Could not create file" : "Nepodařilo se vytvořit soubor", - "Could not create folder" : "Nepodařilo se vytvořit složku", - "Error deleting file." : "Chyba při mazání souboru.", "No entries in this folder match '{filter}'" : "V tomto adresáři nic nesouhlasí s '{filter}'", "Name" : "Název", "Size" : "Velikost", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtů"], "Favorited" : "Přidáno k oblíbeným", "Favorite" : "Oblíbené", - "Text file" : "Textový soubor", - "New text file.txt" : "Nový textový soubor.txt", "Folder" : "Složka", "New folder" : "Nová složka", "{newname} already exists" : "{newname} již existuje", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "Změněno uživatelem %2$s", "Deleted by %2$s" : "Smazáno uživatelem %2$s", "Restored by %2$s" : "Obnoveno uživatelem %2$s", - "%s could not be renamed as it has been deleted" : "%s nelze přejmenovat, protože byl smazán", - "%s could not be renamed" : "%s nemůže být přejmenován", "Upload (max. %s)" : "Nahrát (max. %s)", "File handling" : "Zacházení se soubory", "Maximum upload size" : "Maximální velikost pro odesílání", @@ -121,6 +103,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Soubory se prohledávají, prosím čekejte.", "Currently scanning" : "Prohledává se", "No favorites" : "Žádné oblíbené", - "Files and folders you mark as favorite will show up here" : "Soubory a adresáře označené jako oblíbené budou zobrazeny zde" + "Files and folders you mark as favorite will show up here" : "Soubory a adresáře označené jako oblíbené budou zobrazeny zde", + "Text file" : "Textový soubor", + "New text file.txt" : "Nový textový soubor.txt" }, "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); diff --git a/apps/files/l10n/cs_CZ.json b/apps/files/l10n/cs_CZ.json index bf9170f2ee3..04bf4cf7e9e 100644 --- a/apps/files/l10n/cs_CZ.json +++ b/apps/files/l10n/cs_CZ.json @@ -2,13 +2,6 @@ "Storage not available" : "Úložiště není dostupné", "Storage invalid" : "Neplatné úložiště", "Unknown error" : "Neznámá chyba", - "Could not move %s - File with this name already exists" : "Nelze přesunout %s - již existuje soubor se stejným názvem", - "Could not move %s" : "Nelze přesunout %s", - "Permission denied" : "Přístup odepřen", - "The target folder has been moved or deleted." : "Cílová složka byla přesunuta nebo smazána.", - "The name %s is already used in the folder %s. Please choose a different name." : "Název %s ve složce %s již existuje. Vyberte prosím jiné jméno.", - "Error when creating the file" : "Chyba při vytváření souboru", - "Error when creating the folder" : "Chyba při vytváření složky", "Unable to set upload directory." : "Nelze nastavit adresář pro nahrané soubory.", "Invalid Token" : "Neplatný token", "No file was uploaded. Unknown error" : "Žádný soubor nebyl odeslán. Neznámá chyba", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Chybí adresář pro dočasné soubory", "Failed to write to disk" : "Zápis na disk selhal", "Not enough storage available" : "Nedostatek dostupného úložného prostoru", + "The target folder has been moved or deleted." : "Cílová složka byla přesunuta nebo smazána.", "Upload failed. Could not find uploaded file" : "Nahrávání selhalo. Nepodařilo se nalézt nahraný soubor.", "Upload failed. Could not get file info." : "Nahrávání selhalo. Nepodařilo se získat informace o souboru.", "Invalid directory." : "Neplatný adresář", @@ -44,14 +38,6 @@ "Unable to determine date" : "Nelze určit datum", "This operation is forbidden" : "Tato operace je zakázána", "This directory is unavailable, please check the logs or contact the administrator" : "Tento adresář není dostupný, zkontrolujte prosím logy nebo kontaktujte svého správce systému", - "Error moving file." : "Chyba při přesunu souboru.", - "Error moving file" : "Chyba při přesunu souboru", - "Error" : "Chyba", - "{new_name} already exists" : "{new_name} již existuje", - "Could not rename file" : "Nepodařilo se přejmenovat soubor", - "Could not create file" : "Nepodařilo se vytvořit soubor", - "Could not create folder" : "Nepodařilo se vytvořit složku", - "Error deleting file." : "Chyba při mazání souboru.", "No entries in this folder match '{filter}'" : "V tomto adresáři nic nesouhlasí s '{filter}'", "Name" : "Název", "Size" : "Velikost", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtů"], "Favorited" : "Přidáno k oblíbeným", "Favorite" : "Oblíbené", - "Text file" : "Textový soubor", - "New text file.txt" : "Nový textový soubor.txt", "Folder" : "Složka", "New folder" : "Nová složka", "{newname} already exists" : "{newname} již existuje", @@ -97,8 +81,6 @@ "Changed by %2$s" : "Změněno uživatelem %2$s", "Deleted by %2$s" : "Smazáno uživatelem %2$s", "Restored by %2$s" : "Obnoveno uživatelem %2$s", - "%s could not be renamed as it has been deleted" : "%s nelze přejmenovat, protože byl smazán", - "%s could not be renamed" : "%s nemůže být přejmenován", "Upload (max. %s)" : "Nahrát (max. %s)", "File handling" : "Zacházení se soubory", "Maximum upload size" : "Maximální velikost pro odesílání", @@ -119,6 +101,8 @@ "Files are being scanned, please wait." : "Soubory se prohledávají, prosím čekejte.", "Currently scanning" : "Prohledává se", "No favorites" : "Žádné oblíbené", - "Files and folders you mark as favorite will show up here" : "Soubory a adresáře označené jako oblíbené budou zobrazeny zde" + "Files and folders you mark as favorite will show up here" : "Soubory a adresáře označené jako oblíbené budou zobrazeny zde", + "Text file" : "Textový soubor", + "New text file.txt" : "Nový textový soubor.txt" },"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/cy_GB.js b/apps/files/l10n/cy_GB.js index 570fc14fa3a..983df98f350 100644 --- a/apps/files/l10n/cy_GB.js +++ b/apps/files/l10n/cy_GB.js @@ -1,8 +1,6 @@ OC.L10N.register( "files", { - "Could not move %s - File with this name already exists" : "Methwyd symud %s - Mae ffeil gyda'r enw hwn eisoes yn bodoli", - "Could not move %s" : "Methwyd symud %s", "No file was uploaded. Unknown error" : "Ni lwythwyd ffeil i fyny. Gwall anhysbys.", "There is no error, the file uploaded with success" : "Does dim gwall, llwythodd y ffeil i fyny'n llwyddiannus", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "Mae'r ffeil lwythwyd i fyny'n fwy na chyfarwyddeb upload_max_filesize yn php.ini:", @@ -24,8 +22,6 @@ OC.L10N.register( "Delete" : "Dileu", "Details" : "Manylion", "Pending" : "I ddod", - "Error" : "Gwall", - "{new_name} already exists" : "{new_name} yn bodoli'n barod", "Name" : "Enw", "Size" : "Maint", "Modified" : "Addaswyd", @@ -33,7 +29,6 @@ OC.L10N.register( "File name cannot be empty." : "Does dim hawl cael enw ffeil gwag.", "Your storage is full, files can not be updated or synced anymore!" : "Mae eich storfa'n llawn, ni ellir diweddaru a chydweddu ffeiliau mwyach!", "Your storage is almost full ({usedSpacePercent}%)" : "Mae eich storfa bron a bod yn llawn ({usedSpacePercent}%)", - "Text file" : "Ffeil destun", "Folder" : "Plygell", "Upload" : "Llwytho i fyny", "File handling" : "Trafod ffeiliau", @@ -44,6 +39,7 @@ OC.L10N.register( "Cancel upload" : "Diddymu llwytho i fyny", "Upload too large" : "Maint llwytho i fyny'n rhy fawr", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Mae'r ffeiliau rydych yn ceisio llwytho i fyny'n fwy na maint mwyaf llwytho ffeiliau i fyny ar y gweinydd hwn.", - "Files are being scanned, please wait." : "Arhoswch, mae ffeiliau'n cael eu sganio." + "Files are being scanned, please wait." : "Arhoswch, mae ffeiliau'n cael eu sganio.", + "Text file" : "Ffeil destun" }, "nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;"); diff --git a/apps/files/l10n/cy_GB.json b/apps/files/l10n/cy_GB.json index e0b42d77a7a..b8b87b31dea 100644 --- a/apps/files/l10n/cy_GB.json +++ b/apps/files/l10n/cy_GB.json @@ -1,6 +1,4 @@ { "translations": { - "Could not move %s - File with this name already exists" : "Methwyd symud %s - Mae ffeil gyda'r enw hwn eisoes yn bodoli", - "Could not move %s" : "Methwyd symud %s", "No file was uploaded. Unknown error" : "Ni lwythwyd ffeil i fyny. Gwall anhysbys.", "There is no error, the file uploaded with success" : "Does dim gwall, llwythodd y ffeil i fyny'n llwyddiannus", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "Mae'r ffeil lwythwyd i fyny'n fwy na chyfarwyddeb upload_max_filesize yn php.ini:", @@ -22,8 +20,6 @@ "Delete" : "Dileu", "Details" : "Manylion", "Pending" : "I ddod", - "Error" : "Gwall", - "{new_name} already exists" : "{new_name} yn bodoli'n barod", "Name" : "Enw", "Size" : "Maint", "Modified" : "Addaswyd", @@ -31,7 +27,6 @@ "File name cannot be empty." : "Does dim hawl cael enw ffeil gwag.", "Your storage is full, files can not be updated or synced anymore!" : "Mae eich storfa'n llawn, ni ellir diweddaru a chydweddu ffeiliau mwyach!", "Your storage is almost full ({usedSpacePercent}%)" : "Mae eich storfa bron a bod yn llawn ({usedSpacePercent}%)", - "Text file" : "Ffeil destun", "Folder" : "Plygell", "Upload" : "Llwytho i fyny", "File handling" : "Trafod ffeiliau", @@ -42,6 +37,7 @@ "Cancel upload" : "Diddymu llwytho i fyny", "Upload too large" : "Maint llwytho i fyny'n rhy fawr", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Mae'r ffeiliau rydych yn ceisio llwytho i fyny'n fwy na maint mwyaf llwytho ffeiliau i fyny ar y gweinydd hwn.", - "Files are being scanned, please wait." : "Arhoswch, mae ffeiliau'n cael eu sganio." + "Files are being scanned, please wait." : "Arhoswch, mae ffeiliau'n cael eu sganio.", + "Text file" : "Ffeil destun" },"pluralForm" :"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/files/l10n/da.js b/apps/files/l10n/da.js index 307a58e74f0..2c27835f917 100644 --- a/apps/files/l10n/da.js +++ b/apps/files/l10n/da.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Lagerplads er ikke tilgængeligt", "Storage invalid" : "Lagerplads er ugyldig", "Unknown error" : "Ukendt fejl", - "Could not move %s - File with this name already exists" : "Kunne ikke flytte %s - der findes allerede en fil med dette navn", - "Could not move %s" : "Kunne ikke flytte %s", - "Permission denied" : "Adgang nægtet", - "The target folder has been moved or deleted." : "Mappen er blevet slettet eller fjernet.", - "The name %s is already used in the folder %s. Please choose a different name." : "Navnet %s er allerede i brug i mappen %s. Vælg venligst et andet navn.", - "Error when creating the file" : "Fejl ved oprettelse af fil", - "Error when creating the folder" : "Fejl ved oprettelse af mappen", "Unable to set upload directory." : "Ude af stand til at vælge upload mappe.", "Invalid Token" : "Ugyldig Token ", "No file was uploaded. Unknown error" : "Ingen fil blev uploadet. Ukendt fejl.", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Manglende midlertidig mappe.", "Failed to write to disk" : "Fejl ved skrivning til disk.", "Not enough storage available" : "Der er ikke nok plads til rådlighed", + "The target folder has been moved or deleted." : "Mappen er blevet slettet eller fjernet.", "Upload failed. Could not find uploaded file" : "Upload fejlede. Kunne ikke finde den uploadede fil.", "Upload failed. Could not get file info." : "Upload fejlede. Kunne ikke hente filinformation.", "Invalid directory." : "Ugyldig mappe.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Kan ikke fastslå datoen", "This operation is forbidden" : "Denne operation er forbudt", "This directory is unavailable, please check the logs or contact the administrator" : "Denne mappe er utilgængelig, tjek venligst loggene eller kontakt administratoren", - "Error moving file." : "Fejl ved flytning af fil", - "Error moving file" : "Fejl ved flytning af fil", - "Error" : "Fejl", - "{new_name} already exists" : "{new_name} eksisterer allerede", - "Could not rename file" : "Kunne ikke omdøbe filen", - "Could not create file" : "Kunne ikke oprette fil", - "Could not create folder" : "Kunne ikke oprette mappe", - "Error deleting file." : "Fejl ved sletnign af fil.", "No entries in this folder match '{filter}'" : "Der er ingen poster i denne mappe, der matcher '{filter}'", "Name" : "Navn", "Size" : "Størrelse", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Gjort til foretrukken", "Favorite" : "Foretrukken", - "Text file" : "Tekstfil", - "New text file.txt" : "Ny tekst file.txt", "Folder" : "Mappe", "New folder" : "Ny Mappe", "{newname} already exists" : "{newname} eksistere allerede", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "Ændret af %2$s", "Deleted by %2$s" : "Slettet af %2$s", "Restored by %2$s" : "Gendannet af %2$s", - "%s could not be renamed as it has been deleted" : "%s kunne ikke omdøbes, da den er blevet slettet", - "%s could not be renamed" : "%s kunne ikke omdøbes", "Upload (max. %s)" : "Upload (max. %s)", "File handling" : "Filhåndtering", "Maximum upload size" : "Maksimal upload-størrelse", @@ -119,6 +101,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Filerne bliver indlæst, vent venligst.", "Currently scanning" : "Skanning er i gang", "No favorites" : "Ingen foretrukne", - "Files and folders you mark as favorite will show up here" : "Filer og mapper som du har markeret som foretrukne, vil blive vist her" + "Files and folders you mark as favorite will show up here" : "Filer og mapper som du har markeret som foretrukne, vil blive vist her", + "Text file" : "Tekstfil", + "New text file.txt" : "Ny tekst file.txt" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/da.json b/apps/files/l10n/da.json index ae5d9655536..33663829721 100644 --- a/apps/files/l10n/da.json +++ b/apps/files/l10n/da.json @@ -2,13 +2,6 @@ "Storage not available" : "Lagerplads er ikke tilgængeligt", "Storage invalid" : "Lagerplads er ugyldig", "Unknown error" : "Ukendt fejl", - "Could not move %s - File with this name already exists" : "Kunne ikke flytte %s - der findes allerede en fil med dette navn", - "Could not move %s" : "Kunne ikke flytte %s", - "Permission denied" : "Adgang nægtet", - "The target folder has been moved or deleted." : "Mappen er blevet slettet eller fjernet.", - "The name %s is already used in the folder %s. Please choose a different name." : "Navnet %s er allerede i brug i mappen %s. Vælg venligst et andet navn.", - "Error when creating the file" : "Fejl ved oprettelse af fil", - "Error when creating the folder" : "Fejl ved oprettelse af mappen", "Unable to set upload directory." : "Ude af stand til at vælge upload mappe.", "Invalid Token" : "Ugyldig Token ", "No file was uploaded. Unknown error" : "Ingen fil blev uploadet. Ukendt fejl.", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Manglende midlertidig mappe.", "Failed to write to disk" : "Fejl ved skrivning til disk.", "Not enough storage available" : "Der er ikke nok plads til rådlighed", + "The target folder has been moved or deleted." : "Mappen er blevet slettet eller fjernet.", "Upload failed. Could not find uploaded file" : "Upload fejlede. Kunne ikke finde den uploadede fil.", "Upload failed. Could not get file info." : "Upload fejlede. Kunne ikke hente filinformation.", "Invalid directory." : "Ugyldig mappe.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Kan ikke fastslå datoen", "This operation is forbidden" : "Denne operation er forbudt", "This directory is unavailable, please check the logs or contact the administrator" : "Denne mappe er utilgængelig, tjek venligst loggene eller kontakt administratoren", - "Error moving file." : "Fejl ved flytning af fil", - "Error moving file" : "Fejl ved flytning af fil", - "Error" : "Fejl", - "{new_name} already exists" : "{new_name} eksisterer allerede", - "Could not rename file" : "Kunne ikke omdøbe filen", - "Could not create file" : "Kunne ikke oprette fil", - "Could not create folder" : "Kunne ikke oprette mappe", - "Error deleting file." : "Fejl ved sletnign af fil.", "No entries in this folder match '{filter}'" : "Der er ingen poster i denne mappe, der matcher '{filter}'", "Name" : "Navn", "Size" : "Størrelse", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Gjort til foretrukken", "Favorite" : "Foretrukken", - "Text file" : "Tekstfil", - "New text file.txt" : "Ny tekst file.txt", "Folder" : "Mappe", "New folder" : "Ny Mappe", "{newname} already exists" : "{newname} eksistere allerede", @@ -97,8 +81,6 @@ "Changed by %2$s" : "Ændret af %2$s", "Deleted by %2$s" : "Slettet af %2$s", "Restored by %2$s" : "Gendannet af %2$s", - "%s could not be renamed as it has been deleted" : "%s kunne ikke omdøbes, da den er blevet slettet", - "%s could not be renamed" : "%s kunne ikke omdøbes", "Upload (max. %s)" : "Upload (max. %s)", "File handling" : "Filhåndtering", "Maximum upload size" : "Maksimal upload-størrelse", @@ -117,6 +99,8 @@ "Files are being scanned, please wait." : "Filerne bliver indlæst, vent venligst.", "Currently scanning" : "Skanning er i gang", "No favorites" : "Ingen foretrukne", - "Files and folders you mark as favorite will show up here" : "Filer og mapper som du har markeret som foretrukne, vil blive vist her" + "Files and folders you mark as favorite will show up here" : "Filer og mapper som du har markeret som foretrukne, vil blive vist her", + "Text file" : "Tekstfil", + "New text file.txt" : "Ny tekst file.txt" },"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 5a35a5f21ee..cec0cfda0ca 100644 --- a/apps/files/l10n/de.js +++ b/apps/files/l10n/de.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Speicher nicht verfügbar", "Storage invalid" : "Speicher ungültig", "Unknown error" : "Unbekannter Fehler", - "Could not move %s - File with this name already exists" : "Konnte %s nicht verschieben. Eine Datei mit diesem Namen existiert bereits", - "Could not move %s" : "Konnte %s nicht verschieben", - "Permission denied" : "Zugriff verweigert", - "The target folder has been moved or deleted." : "Der Zielordner wurde verschoben oder gelöscht.", - "The name %s is already used in the folder %s. Please choose a different name." : "Der Name %s wird bereits im Ordner %s benutzt. Bitte wähle einen anderen Namen.", - "Error when creating the file" : "Fehler beim Erstellen der Datei", - "Error when creating the folder" : "Fehler beim Erstellen des Ordners", "Unable to set upload directory." : "Das Upload-Verzeichnis konnte nicht gesetzt werden.", "Invalid Token" : "Ungültiger Token", "No file was uploaded. Unknown error" : "Keine Datei hochgeladen. Unbekannter Fehler", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Kein temporärer Ordner vorhanden", "Failed to write to disk" : "Fehler beim Schreiben auf die Festplatte", "Not enough storage available" : "Nicht genug Speicher vorhanden.", + "The target folder has been moved or deleted." : "Der Zielordner wurde verschoben oder gelöscht.", "Upload failed. Could not find uploaded file" : "Hochladen fehlgeschlagen. Hochgeladene Datei konnte nicht gefunden werden.", "Upload failed. Could not get file info." : "Hochladen fehlgeschlagen. Dateiinformationen konnten nicht abgerufen werden.", "Invalid directory." : "Ungültiges Verzeichnis.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Datum konnte nicht ermittelt werden", "This operation is forbidden" : "Diese Operation ist nicht erlaubt", "This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfe die Logdateien oder kontaktiere den Administrator", - "Error moving file." : "Fehler beim Verschieben der Datei.", - "Error moving file" : "Fehler beim Verschieben der Datei", - "Error" : "Fehler", - "{new_name} already exists" : "{new_name} existiert bereits", - "Could not rename file" : "Die Datei konnte nicht umbenannt werden", - "Could not create file" : "Die Datei konnte nicht erstellt werden", - "Could not create folder" : "Der Ordner konnte nicht erstellt werden", - "Error deleting file." : "Fehler beim Löschen der Datei.", "No entries in this folder match '{filter}'" : "Keine Einträge in diesem Ordner stimmen mit '{filter}' überein", "Name" : "Name", "Size" : "Größe", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n Byte","%n Bytes"], "Favorited" : "Favorisiert", "Favorite" : "Favorit", - "Text file" : "Textdatei", - "New text file.txt" : "Neue Textdatei.txt", "Folder" : "Ordner", "New folder" : "Neuer Ordner", "{newname} already exists" : "{newname} existiert bereits", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "Geändert von %2$s", "Deleted by %2$s" : "Gelöscht von %2$s", "Restored by %2$s" : "Wiederhergestellt von %2$s", - "%s could not be renamed as it has been deleted" : "%s konnte nicht umbenannt werden, da es gelöscht wurde", - "%s could not be renamed" : "%s konnte nicht umbenannt werden", "Upload (max. %s)" : "Hochladen (max. %s)", "File handling" : "Dateibehandlung", "Maximum upload size" : "Maximale Upload-Größe", @@ -119,6 +101,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Dateien werden gescannt, bitte warten.", "Currently scanning" : "Durchsuchen läuft", "No favorites" : "Keine Favoriten", - "Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die Du als Favoriten markierst, werden hier erscheinen" + "Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die Du als Favoriten markierst, werden hier erscheinen", + "Text file" : "Textdatei", + "New text file.txt" : "Neue Textdatei.txt" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json index 860a97916be..4e7a6e1bf09 100644 --- a/apps/files/l10n/de.json +++ b/apps/files/l10n/de.json @@ -2,13 +2,6 @@ "Storage not available" : "Speicher nicht verfügbar", "Storage invalid" : "Speicher ungültig", "Unknown error" : "Unbekannter Fehler", - "Could not move %s - File with this name already exists" : "Konnte %s nicht verschieben. Eine Datei mit diesem Namen existiert bereits", - "Could not move %s" : "Konnte %s nicht verschieben", - "Permission denied" : "Zugriff verweigert", - "The target folder has been moved or deleted." : "Der Zielordner wurde verschoben oder gelöscht.", - "The name %s is already used in the folder %s. Please choose a different name." : "Der Name %s wird bereits im Ordner %s benutzt. Bitte wähle einen anderen Namen.", - "Error when creating the file" : "Fehler beim Erstellen der Datei", - "Error when creating the folder" : "Fehler beim Erstellen des Ordners", "Unable to set upload directory." : "Das Upload-Verzeichnis konnte nicht gesetzt werden.", "Invalid Token" : "Ungültiger Token", "No file was uploaded. Unknown error" : "Keine Datei hochgeladen. Unbekannter Fehler", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Kein temporärer Ordner vorhanden", "Failed to write to disk" : "Fehler beim Schreiben auf die Festplatte", "Not enough storage available" : "Nicht genug Speicher vorhanden.", + "The target folder has been moved or deleted." : "Der Zielordner wurde verschoben oder gelöscht.", "Upload failed. Could not find uploaded file" : "Hochladen fehlgeschlagen. Hochgeladene Datei konnte nicht gefunden werden.", "Upload failed. Could not get file info." : "Hochladen fehlgeschlagen. Dateiinformationen konnten nicht abgerufen werden.", "Invalid directory." : "Ungültiges Verzeichnis.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Datum konnte nicht ermittelt werden", "This operation is forbidden" : "Diese Operation ist nicht erlaubt", "This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfe die Logdateien oder kontaktiere den Administrator", - "Error moving file." : "Fehler beim Verschieben der Datei.", - "Error moving file" : "Fehler beim Verschieben der Datei", - "Error" : "Fehler", - "{new_name} already exists" : "{new_name} existiert bereits", - "Could not rename file" : "Die Datei konnte nicht umbenannt werden", - "Could not create file" : "Die Datei konnte nicht erstellt werden", - "Could not create folder" : "Der Ordner konnte nicht erstellt werden", - "Error deleting file." : "Fehler beim Löschen der Datei.", "No entries in this folder match '{filter}'" : "Keine Einträge in diesem Ordner stimmen mit '{filter}' überein", "Name" : "Name", "Size" : "Größe", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n Byte","%n Bytes"], "Favorited" : "Favorisiert", "Favorite" : "Favorit", - "Text file" : "Textdatei", - "New text file.txt" : "Neue Textdatei.txt", "Folder" : "Ordner", "New folder" : "Neuer Ordner", "{newname} already exists" : "{newname} existiert bereits", @@ -97,8 +81,6 @@ "Changed by %2$s" : "Geändert von %2$s", "Deleted by %2$s" : "Gelöscht von %2$s", "Restored by %2$s" : "Wiederhergestellt von %2$s", - "%s could not be renamed as it has been deleted" : "%s konnte nicht umbenannt werden, da es gelöscht wurde", - "%s could not be renamed" : "%s konnte nicht umbenannt werden", "Upload (max. %s)" : "Hochladen (max. %s)", "File handling" : "Dateibehandlung", "Maximum upload size" : "Maximale Upload-Größe", @@ -117,6 +99,8 @@ "Files are being scanned, please wait." : "Dateien werden gescannt, bitte warten.", "Currently scanning" : "Durchsuchen läuft", "No favorites" : "Keine Favoriten", - "Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die Du als Favoriten markierst, werden hier erscheinen" + "Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die Du als Favoriten markierst, werden hier erscheinen", + "Text file" : "Textdatei", + "New text file.txt" : "Neue Textdatei.txt" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/de_AT.js b/apps/files/l10n/de_AT.js index 7bebb1e6eaf..d7a77f9ee40 100644 --- a/apps/files/l10n/de_AT.js +++ b/apps/files/l10n/de_AT.js @@ -6,7 +6,6 @@ OC.L10N.register( "Download" : "Herunterladen", "Delete" : "Löschen", "Details" : "Details", - "Error" : "Fehler", "New folder" : "Neuer Ordner", "Upload" : "Hochladen", "A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>", diff --git a/apps/files/l10n/de_AT.json b/apps/files/l10n/de_AT.json index fffb3863e85..7381a96665a 100644 --- a/apps/files/l10n/de_AT.json +++ b/apps/files/l10n/de_AT.json @@ -4,7 +4,6 @@ "Download" : "Herunterladen", "Delete" : "Löschen", "Details" : "Details", - "Error" : "Fehler", "New folder" : "Neuer Ordner", "Upload" : "Hochladen", "A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>", diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js index ddb84ffedfb..6b5d0d00e7f 100644 --- a/apps/files/l10n/de_DE.js +++ b/apps/files/l10n/de_DE.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Speicher nicht verfügbar", "Storage invalid" : "Speicher ungültig", "Unknown error" : "Unbekannter Fehler", - "Could not move %s - File with this name already exists" : "%s konnte nicht verschoben werden. Eine Datei mit diesem Namen existiert bereits.", - "Could not move %s" : "Konnte %s nicht verschieben", - "Permission denied" : "Zugriff verweigert", - "The target folder has been moved or deleted." : "Der Zielordner wurde verschoben oder gelöscht.", - "The name %s is already used in the folder %s. Please choose a different name." : "Der Name %s wird bereits im Ordner %s benutzt. Bitte wählen Sie einen anderen Namen.", - "Error when creating the file" : "Fehler beim Erstellen der Datei", - "Error when creating the folder" : "Fehler beim Erstellen des Ordners", "Unable to set upload directory." : "Das Upload-Verzeichnis konnte nicht gesetzt werden.", "Invalid Token" : "Ungültiger Token", "No file was uploaded. Unknown error" : "Keine Datei hochgeladen. Unbekannter Fehler", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Kein temporärer Ordner vorhanden", "Failed to write to disk" : "Fehler beim Schreiben auf die Festplatte", "Not enough storage available" : "Nicht genug Speicher vorhanden.", + "The target folder has been moved or deleted." : "Der Zielordner wurde verschoben oder gelöscht.", "Upload failed. Could not find uploaded file" : "Hochladen fehlgeschlagen. Die hochgeladene Datei konnte nicht gefunden werden.", "Upload failed. Could not get file info." : "Hochladen fehlgeschlagen. Die Dateiinformationen konnten nicht abgerufen werden.", "Invalid directory." : "Ungültiges Verzeichnis.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Datum konnte nicht ermittelt werden", "This operation is forbidden" : "Diese Operation ist nicht erlaubt", "This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfen Sie die Logdateien oder kontaktieren Sie den Administrator", - "Error moving file." : "Fehler beim Verschieben der Datei.", - "Error moving file" : "Fehler beim Verschieben der Datei", - "Error" : "Fehler", - "{new_name} already exists" : "{new_name} existiert bereits", - "Could not rename file" : "Die Datei konnte nicht umbenannt werden", - "Could not create file" : "Die Datei konnte nicht erstellt werden", - "Could not create folder" : "Der Ordner konnte nicht erstellt werden", - "Error deleting file." : "Fehler beim Löschen der Datei.", "No entries in this folder match '{filter}'" : "Keine Einträge in diesem Ordner stimmen mit '{filter}' überein", "Name" : "Name", "Size" : "Größe", @@ -73,7 +59,6 @@ OC.L10N.register( "_matches '{filter}'_::_match '{filter}'_" : ["stimmt mit '{filter}' überein","stimmen mit '{filter}' überein"], "Favorited" : "Favorisiert", "Favorite" : "Favorit", - "Text file" : "Textdatei", "Folder" : "Ordner", "New folder" : "Neuer Ordner", "Upload" : "Hochladen", @@ -92,8 +77,6 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s hat %1$s gelöscht", "You restored %1$s" : "Sie haben %1$s wiederhergestellt", "%2$s restored %1$s" : "%2$s wiederhergestellt %1$s", - "%s could not be renamed as it has been deleted" : "%s konnte nicht umbenannt werden, da es gelöscht wurde", - "%s could not be renamed" : "%s konnte nicht umbenannt werden", "Upload (max. %s)" : "Hochladen (max. %s)", "File handling" : "Dateibehandlung", "Maximum upload size" : "Maximale Upload-Größe", @@ -112,6 +95,7 @@ OC.L10N.register( "Files are being scanned, please wait." : "Dateien werden gescannt, bitte warten.", "Currently scanning" : "Durchsuchen läuft", "No favorites" : "Keine Favoriten", - "Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die Sie als Favoriten kennzeichnen, werden hier erscheinen" + "Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die Sie als Favoriten kennzeichnen, werden hier erscheinen", + "Text file" : "Textdatei" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json index 5f7cd053e8e..d6076467ce9 100644 --- a/apps/files/l10n/de_DE.json +++ b/apps/files/l10n/de_DE.json @@ -2,13 +2,6 @@ "Storage not available" : "Speicher nicht verfügbar", "Storage invalid" : "Speicher ungültig", "Unknown error" : "Unbekannter Fehler", - "Could not move %s - File with this name already exists" : "%s konnte nicht verschoben werden. Eine Datei mit diesem Namen existiert bereits.", - "Could not move %s" : "Konnte %s nicht verschieben", - "Permission denied" : "Zugriff verweigert", - "The target folder has been moved or deleted." : "Der Zielordner wurde verschoben oder gelöscht.", - "The name %s is already used in the folder %s. Please choose a different name." : "Der Name %s wird bereits im Ordner %s benutzt. Bitte wählen Sie einen anderen Namen.", - "Error when creating the file" : "Fehler beim Erstellen der Datei", - "Error when creating the folder" : "Fehler beim Erstellen des Ordners", "Unable to set upload directory." : "Das Upload-Verzeichnis konnte nicht gesetzt werden.", "Invalid Token" : "Ungültiger Token", "No file was uploaded. Unknown error" : "Keine Datei hochgeladen. Unbekannter Fehler", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Kein temporärer Ordner vorhanden", "Failed to write to disk" : "Fehler beim Schreiben auf die Festplatte", "Not enough storage available" : "Nicht genug Speicher vorhanden.", + "The target folder has been moved or deleted." : "Der Zielordner wurde verschoben oder gelöscht.", "Upload failed. Could not find uploaded file" : "Hochladen fehlgeschlagen. Die hochgeladene Datei konnte nicht gefunden werden.", "Upload failed. Could not get file info." : "Hochladen fehlgeschlagen. Die Dateiinformationen konnten nicht abgerufen werden.", "Invalid directory." : "Ungültiges Verzeichnis.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Datum konnte nicht ermittelt werden", "This operation is forbidden" : "Diese Operation ist nicht erlaubt", "This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfen Sie die Logdateien oder kontaktieren Sie den Administrator", - "Error moving file." : "Fehler beim Verschieben der Datei.", - "Error moving file" : "Fehler beim Verschieben der Datei", - "Error" : "Fehler", - "{new_name} already exists" : "{new_name} existiert bereits", - "Could not rename file" : "Die Datei konnte nicht umbenannt werden", - "Could not create file" : "Die Datei konnte nicht erstellt werden", - "Could not create folder" : "Der Ordner konnte nicht erstellt werden", - "Error deleting file." : "Fehler beim Löschen der Datei.", "No entries in this folder match '{filter}'" : "Keine Einträge in diesem Ordner stimmen mit '{filter}' überein", "Name" : "Name", "Size" : "Größe", @@ -71,7 +57,6 @@ "_matches '{filter}'_::_match '{filter}'_" : ["stimmt mit '{filter}' überein","stimmen mit '{filter}' überein"], "Favorited" : "Favorisiert", "Favorite" : "Favorit", - "Text file" : "Textdatei", "Folder" : "Ordner", "New folder" : "Neuer Ordner", "Upload" : "Hochladen", @@ -90,8 +75,6 @@ "%2$s deleted %1$s" : "%2$s hat %1$s gelöscht", "You restored %1$s" : "Sie haben %1$s wiederhergestellt", "%2$s restored %1$s" : "%2$s wiederhergestellt %1$s", - "%s could not be renamed as it has been deleted" : "%s konnte nicht umbenannt werden, da es gelöscht wurde", - "%s could not be renamed" : "%s konnte nicht umbenannt werden", "Upload (max. %s)" : "Hochladen (max. %s)", "File handling" : "Dateibehandlung", "Maximum upload size" : "Maximale Upload-Größe", @@ -110,6 +93,7 @@ "Files are being scanned, please wait." : "Dateien werden gescannt, bitte warten.", "Currently scanning" : "Durchsuchen läuft", "No favorites" : "Keine Favoriten", - "Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die Sie als Favoriten kennzeichnen, werden hier erscheinen" + "Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die Sie als Favoriten kennzeichnen, werden hier erscheinen", + "Text file" : "Textdatei" },"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 6c8e2cbff33..abc3e5331d8 100644 --- a/apps/files/l10n/el.js +++ b/apps/files/l10n/el.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Μη διαθέσιμος αποθηκευτικός χώρος", "Storage invalid" : "Μη έγκυρος αποθηκευτικός χώρος", "Unknown error" : "Άγνωστο σφάλμα", - "Could not move %s - File with this name already exists" : "Αδυναμία μετακίνησης του %s - υπάρχει ήδη αρχείο με αυτό το όνομα", - "Could not move %s" : "Αδυναμία μετακίνησης του %s", - "Permission denied" : "Η πρόσβαση απορρίφθηκε", - "The target folder has been moved or deleted." : "Ο φάκελος προορισμού έχει μετακινηθεί ή διαγραφεί.", - "The name %s is already used in the folder %s. Please choose a different name." : "Το όνομα %s χρησιμοποιείτε ήδη στον φάκελο %s. Παρακαλώ επιλέξτε ένα άλλο όνομα.", - "Error when creating the file" : "Σφάλμα κατά τη δημιουργία του αρχείου", - "Error when creating the folder" : "Σφάλμα κατά τη δημιουργία του φακέλου", "Unable to set upload directory." : "Αδυναμία ορισμού καταλόγου αποστολής.", "Invalid Token" : "Μη έγκυρο Token", "No file was uploaded. Unknown error" : "Δεν ανέβηκε κάποιο αρχείο. Άγνωστο σφάλμα", @@ -22,6 +15,7 @@ OC.L10N.register( "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." : "Μη έγκυρος φάκελος.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Αδυναμία προσδιορισμού ημερομηνίας ", "This operation is forbidden" : "Αυτή η ενέργεια δεν επιτρέπεται", "This directory is unavailable, please check the logs or contact the administrator" : "Ο κατάλογος δεν είναι διαθέσιμος, παρακαλώ ελέγξτε τα αρχεία καταγραφής ή επικοινωνήστε με το διαχειριστή", - "Error moving file." : "Σφάλμα κατά τη μετακίνηση του αρχείου.", - "Error moving file" : "Σφάλμα κατά τη μετακίνηση του αρχείου", - "Error" : "Σφάλμα", - "{new_name} already exists" : "το {new_name} υπάρχει ήδη", - "Could not rename file" : "Αδυναμία μετονομασίας αρχείου", - "Could not create file" : "Αδυναμία δημιουργίας αρχείου", - "Could not create folder" : "Αδυναμία δημιουργίας φακέλου", - "Error deleting file." : "Σφάλμα κατά τη διαγραφή του αρχείου.", "No entries in this folder match '{filter}'" : "Δεν ταιριάζουν καταχωρήσεις σε αυτόν το φάκελο '{filter}'", "Name" : "Όνομα", "Size" : "Μέγεθος", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Προτιμώμενα", "Favorite" : "Αγαπημένο", - "Text file" : "Αρχείο κειμένου", - "New text file.txt" : "Νέο αρχείο κειμένου.txt", "Folder" : "Φάκελος", "New folder" : "Νέος φάκελος", "{newname} already exists" : "το {newname} υπάρχει ήδη", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "Άλλαξε από το χρήστη %2$s", "Deleted by %2$s" : "Διαγράφηκε από το χρήστη %2$s", "Restored by %2$s" : "Επαναφορά από το χρήστη %2$s", - "%s could not be renamed as it has been deleted" : "Το %s δεν μπορούσε να μετονομαστεί εφόσον είχε διαγραφεί", - "%s could not be renamed" : "Αδυναμία μετονομασίας του %s", "Upload (max. %s)" : "Διαμοιρασμός (max. %s)", "File handling" : "Διαχείριση αρχείων", "Maximum upload size" : "Μέγιστο μέγεθος αποστολής", @@ -121,6 +103,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Τα αρχεία σαρώνονται, παρακαλώ περιμένετε.", "Currently scanning" : "Σάρωση σε εξέλιξη", "No favorites" : "Δεν υπάρχουν αγαπημένα", - "Files and folders you mark as favorite will show up here" : "Τα αρχεία και οι φάκελοι που σημειώνονται ως αγαπημένα θα εμφανιστούν εδώ " + "Files and folders you mark as favorite will show up here" : "Τα αρχεία και οι φάκελοι που σημειώνονται ως αγαπημένα θα εμφανιστούν εδώ ", + "Text file" : "Αρχείο κειμένου", + "New text file.txt" : "Νέο αρχείο κειμένου.txt" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/el.json b/apps/files/l10n/el.json index ee9e4ebde54..f77aa9e373d 100644 --- a/apps/files/l10n/el.json +++ b/apps/files/l10n/el.json @@ -2,13 +2,6 @@ "Storage not available" : "Μη διαθέσιμος αποθηκευτικός χώρος", "Storage invalid" : "Μη έγκυρος αποθηκευτικός χώρος", "Unknown error" : "Άγνωστο σφάλμα", - "Could not move %s - File with this name already exists" : "Αδυναμία μετακίνησης του %s - υπάρχει ήδη αρχείο με αυτό το όνομα", - "Could not move %s" : "Αδυναμία μετακίνησης του %s", - "Permission denied" : "Η πρόσβαση απορρίφθηκε", - "The target folder has been moved or deleted." : "Ο φάκελος προορισμού έχει μετακινηθεί ή διαγραφεί.", - "The name %s is already used in the folder %s. Please choose a different name." : "Το όνομα %s χρησιμοποιείτε ήδη στον φάκελο %s. Παρακαλώ επιλέξτε ένα άλλο όνομα.", - "Error when creating the file" : "Σφάλμα κατά τη δημιουργία του αρχείου", - "Error when creating the folder" : "Σφάλμα κατά τη δημιουργία του φακέλου", "Unable to set upload directory." : "Αδυναμία ορισμού καταλόγου αποστολής.", "Invalid Token" : "Μη έγκυρο Token", "No file was uploaded. Unknown error" : "Δεν ανέβηκε κάποιο αρχείο. Άγνωστο σφάλμα", @@ -20,6 +13,7 @@ "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." : "Μη έγκυρος φάκελος.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Αδυναμία προσδιορισμού ημερομηνίας ", "This operation is forbidden" : "Αυτή η ενέργεια δεν επιτρέπεται", "This directory is unavailable, please check the logs or contact the administrator" : "Ο κατάλογος δεν είναι διαθέσιμος, παρακαλώ ελέγξτε τα αρχεία καταγραφής ή επικοινωνήστε με το διαχειριστή", - "Error moving file." : "Σφάλμα κατά τη μετακίνηση του αρχείου.", - "Error moving file" : "Σφάλμα κατά τη μετακίνηση του αρχείου", - "Error" : "Σφάλμα", - "{new_name} already exists" : "το {new_name} υπάρχει ήδη", - "Could not rename file" : "Αδυναμία μετονομασίας αρχείου", - "Could not create file" : "Αδυναμία δημιουργίας αρχείου", - "Could not create folder" : "Αδυναμία δημιουργίας φακέλου", - "Error deleting file." : "Σφάλμα κατά τη διαγραφή του αρχείου.", "No entries in this folder match '{filter}'" : "Δεν ταιριάζουν καταχωρήσεις σε αυτόν το φάκελο '{filter}'", "Name" : "Όνομα", "Size" : "Μέγεθος", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Προτιμώμενα", "Favorite" : "Αγαπημένο", - "Text file" : "Αρχείο κειμένου", - "New text file.txt" : "Νέο αρχείο κειμένου.txt", "Folder" : "Φάκελος", "New folder" : "Νέος φάκελος", "{newname} already exists" : "το {newname} υπάρχει ήδη", @@ -97,8 +81,6 @@ "Changed by %2$s" : "Άλλαξε από το χρήστη %2$s", "Deleted by %2$s" : "Διαγράφηκε από το χρήστη %2$s", "Restored by %2$s" : "Επαναφορά από το χρήστη %2$s", - "%s could not be renamed as it has been deleted" : "Το %s δεν μπορούσε να μετονομαστεί εφόσον είχε διαγραφεί", - "%s could not be renamed" : "Αδυναμία μετονομασίας του %s", "Upload (max. %s)" : "Διαμοιρασμός (max. %s)", "File handling" : "Διαχείριση αρχείων", "Maximum upload size" : "Μέγιστο μέγεθος αποστολής", @@ -119,6 +101,8 @@ "Files are being scanned, please wait." : "Τα αρχεία σαρώνονται, παρακαλώ περιμένετε.", "Currently scanning" : "Σάρωση σε εξέλιξη", "No favorites" : "Δεν υπάρχουν αγαπημένα", - "Files and folders you mark as favorite will show up here" : "Τα αρχεία και οι φάκελοι που σημειώνονται ως αγαπημένα θα εμφανιστούν εδώ " + "Files and folders you mark as favorite will show up here" : "Τα αρχεία και οι φάκελοι που σημειώνονται ως αγαπημένα θα εμφανιστούν εδώ ", + "Text file" : "Αρχείο κειμένου", + "New text file.txt" : "Νέο αρχείο κειμένου.txt" },"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 cf37ac56dc0..a190c45e846 100644 --- a/apps/files/l10n/en_GB.js +++ b/apps/files/l10n/en_GB.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Storage not available", "Storage invalid" : "Storage invalid", "Unknown error" : "Unknown error", - "Could not move %s - File with this name already exists" : "Could not move %s - File with this name already exists", - "Could not move %s" : "Could not move %s", - "Permission denied" : "Permission denied", - "The target folder has been moved or deleted." : "The target folder has been moved or deleted.", - "The name %s is already used in the folder %s. Please choose a different name." : "The name %s is already used in the folder %s. Please choose a different name.", - "Error when creating the file" : "Error when creating the file", - "Error when creating the folder" : "Error when creating the folder", "Unable to set upload directory." : "Unable to set upload directory.", "Invalid Token" : "Invalid Token", "No file was uploaded. Unknown error" : "No file was uploaded. Unknown error", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Missing a temporary folder", "Failed to write to disk" : "Failed to write to disk", "Not enough storage available" : "Not enough storage available", + "The target folder has been moved or deleted." : "The target folder has been moved or deleted.", "Upload failed. Could not find uploaded file" : "Upload failed. Could not find uploaded file", "Upload failed. Could not get file info." : "Upload failed. Could not get file info.", "Invalid directory." : "Invalid directory.", @@ -44,14 +38,6 @@ OC.L10N.register( "Select" : "Select", "Pending" : "Pending", "Unable to determine date" : "Unable to determine date", - "Error moving file." : "Error moving file.", - "Error moving file" : "Error moving file", - "Error" : "Error", - "{new_name} already exists" : "{new_name} already exists", - "Could not rename file" : "Could not rename file", - "Could not create file" : "Could not create file", - "Could not create folder" : "Could not create folder", - "Error deleting file." : "Error deleting file.", "No entries in this folder match '{filter}'" : "No entries in this folder match '{filter}'", "Name" : "Name", "Size" : "Size", @@ -69,7 +55,6 @@ OC.L10N.register( "_matches '{filter}'_::_match '{filter}'_" : ["matches '{filter}'","match '{filter}'"], "Favorited" : "Favourited", "Favorite" : "Favourite", - "Text file" : "Text file", "Folder" : "Folder", "New folder" : "New folder", "Upload" : "Upload", @@ -88,8 +73,6 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s deleted %1$s", "You restored %1$s" : "You restored %1$s", "%2$s restored %1$s" : "%2$s restored %1$s", - "%s could not be renamed as it has been deleted" : "%s could not be renamed as it has been deleted", - "%s could not be renamed" : "%s could not be renamed", "Upload (max. %s)" : "Upload (max. %s)", "File handling" : "File handling", "Maximum upload size" : "Maximum upload size", @@ -108,6 +91,7 @@ OC.L10N.register( "Files are being scanned, please wait." : "Files are being scanned, please wait.", "Currently scanning" : "Currently scanning", "No favorites" : "No favourites", - "Files and folders you mark as favorite will show up here" : "Files and folders you mark as favourite will show up here" + "Files and folders you mark as favorite will show up here" : "Files and folders you mark as favourite will show up here", + "Text file" : "Text file" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/en_GB.json b/apps/files/l10n/en_GB.json index 764198384a6..ca8a60ec73b 100644 --- a/apps/files/l10n/en_GB.json +++ b/apps/files/l10n/en_GB.json @@ -2,13 +2,6 @@ "Storage not available" : "Storage not available", "Storage invalid" : "Storage invalid", "Unknown error" : "Unknown error", - "Could not move %s - File with this name already exists" : "Could not move %s - File with this name already exists", - "Could not move %s" : "Could not move %s", - "Permission denied" : "Permission denied", - "The target folder has been moved or deleted." : "The target folder has been moved or deleted.", - "The name %s is already used in the folder %s. Please choose a different name." : "The name %s is already used in the folder %s. Please choose a different name.", - "Error when creating the file" : "Error when creating the file", - "Error when creating the folder" : "Error when creating the folder", "Unable to set upload directory." : "Unable to set upload directory.", "Invalid Token" : "Invalid Token", "No file was uploaded. Unknown error" : "No file was uploaded. Unknown error", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Missing a temporary folder", "Failed to write to disk" : "Failed to write to disk", "Not enough storage available" : "Not enough storage available", + "The target folder has been moved or deleted." : "The target folder has been moved or deleted.", "Upload failed. Could not find uploaded file" : "Upload failed. Could not find uploaded file", "Upload failed. Could not get file info." : "Upload failed. Could not get file info.", "Invalid directory." : "Invalid directory.", @@ -42,14 +36,6 @@ "Select" : "Select", "Pending" : "Pending", "Unable to determine date" : "Unable to determine date", - "Error moving file." : "Error moving file.", - "Error moving file" : "Error moving file", - "Error" : "Error", - "{new_name} already exists" : "{new_name} already exists", - "Could not rename file" : "Could not rename file", - "Could not create file" : "Could not create file", - "Could not create folder" : "Could not create folder", - "Error deleting file." : "Error deleting file.", "No entries in this folder match '{filter}'" : "No entries in this folder match '{filter}'", "Name" : "Name", "Size" : "Size", @@ -67,7 +53,6 @@ "_matches '{filter}'_::_match '{filter}'_" : ["matches '{filter}'","match '{filter}'"], "Favorited" : "Favourited", "Favorite" : "Favourite", - "Text file" : "Text file", "Folder" : "Folder", "New folder" : "New folder", "Upload" : "Upload", @@ -86,8 +71,6 @@ "%2$s deleted %1$s" : "%2$s deleted %1$s", "You restored %1$s" : "You restored %1$s", "%2$s restored %1$s" : "%2$s restored %1$s", - "%s could not be renamed as it has been deleted" : "%s could not be renamed as it has been deleted", - "%s could not be renamed" : "%s could not be renamed", "Upload (max. %s)" : "Upload (max. %s)", "File handling" : "File handling", "Maximum upload size" : "Maximum upload size", @@ -106,6 +89,7 @@ "Files are being scanned, please wait." : "Files are being scanned, please wait.", "Currently scanning" : "Currently scanning", "No favorites" : "No favourites", - "Files and folders you mark as favorite will show up here" : "Files and folders you mark as favourite will show up here" + "Files and folders you mark as favorite will show up here" : "Files and folders you mark as favourite will show up here", + "Text file" : "Text file" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/eo.js b/apps/files/l10n/eo.js index eb8ffd7728b..dbdd0422911 100644 --- a/apps/files/l10n/eo.js +++ b/apps/files/l10n/eo.js @@ -2,11 +2,6 @@ OC.L10N.register( "files", { "Unknown error" : "Nekonata eraro", - "Could not move %s - File with this name already exists" : "Ne eblis movi %s: dosiero kun ĉi tiu nomo jam ekzistas", - "Could not move %s" : "Ne eblis movi %s", - "The name %s is already used in the folder %s. Please choose a different name." : "La nomo %s jam uziĝas en la dosierujo %s. Bonvolu elekti malsaman nomon.", - "Error when creating the file" : "Eraris la kreo de la dosiero", - "Error when creating the folder" : "Eraris la kreo de la dosierujo", "Unable to set upload directory." : "Ne povis agordiĝi la alŝuta dosierujo.", "No file was uploaded. Unknown error" : "Neniu dosiero alŝutiĝis. Nekonata eraro.", "There is no error, the file uploaded with success" : "Ne estas eraro, la dosiero alŝutiĝis sukcese.", @@ -36,12 +31,6 @@ OC.L10N.register( "Details" : "Detaloj", "Select" : "Elekti", "Pending" : "Traktotaj", - "Error moving file" : "Eraris movo de dosiero", - "Error" : "Eraro", - "{new_name} already exists" : "{new_name} jam ekzistas", - "Could not rename file" : "Ne povis alinomiĝi dosiero", - "Could not create file" : "Ne povis kreiĝi dosiero", - "Could not create folder" : "Ne povis kreiĝi dosierujo", "Name" : "Nomo", "Size" : "Grando", "Modified" : "Modifita", @@ -55,7 +44,6 @@ OC.L10N.register( "Your storage is full, files can not be updated or synced anymore!" : "Via memoro plenas, ne plu eblas ĝisdatigi aŭ sinkronigi dosierojn!", "Your storage is almost full ({usedSpacePercent}%)" : "Via memoro preskaŭ plenas ({usedSpacePercent}%)", "Favorite" : "Favorato", - "Text file" : "Tekstodosiero", "Folder" : "Dosierujo", "New folder" : "Nova dosierujo", "Upload" : "Alŝuti", @@ -66,8 +54,6 @@ OC.L10N.register( "%2$s changed %1$s" : "%2$s ŝanĝis %1$s", "You deleted %1$s" : "Vi forigis %1$s", "%2$s deleted %1$s" : "%2$s forigis %1$s", - "%s could not be renamed as it has been deleted" : "%s ne povis alinomiĝi ĉar ĝi forigitis", - "%s could not be renamed" : "%s ne povis alinomiĝi", "Upload (max. %s)" : "Alŝuti (maks. %s)", "File handling" : "Dosieradministro", "Maximum upload size" : "Maksimuma alŝutogrando", @@ -81,6 +67,7 @@ OC.L10N.register( "Select all" : "Elekti ĉion", "Upload too large" : "Alŝuto tro larĝa", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "La dosieroj, kiujn vi provas alŝuti, transpasas la maksimuman grandon por dosieralŝutoj en ĉi tiu servilo.", - "Files are being scanned, please wait." : "Dosieroj estas skanataj, bonvolu atendi." + "Files are being scanned, please wait." : "Dosieroj estas skanataj, bonvolu atendi.", + "Text file" : "Tekstodosiero" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/eo.json b/apps/files/l10n/eo.json index 5f899df1e0c..b858ccece4d 100644 --- a/apps/files/l10n/eo.json +++ b/apps/files/l10n/eo.json @@ -1,10 +1,5 @@ { "translations": { "Unknown error" : "Nekonata eraro", - "Could not move %s - File with this name already exists" : "Ne eblis movi %s: dosiero kun ĉi tiu nomo jam ekzistas", - "Could not move %s" : "Ne eblis movi %s", - "The name %s is already used in the folder %s. Please choose a different name." : "La nomo %s jam uziĝas en la dosierujo %s. Bonvolu elekti malsaman nomon.", - "Error when creating the file" : "Eraris la kreo de la dosiero", - "Error when creating the folder" : "Eraris la kreo de la dosierujo", "Unable to set upload directory." : "Ne povis agordiĝi la alŝuta dosierujo.", "No file was uploaded. Unknown error" : "Neniu dosiero alŝutiĝis. Nekonata eraro.", "There is no error, the file uploaded with success" : "Ne estas eraro, la dosiero alŝutiĝis sukcese.", @@ -34,12 +29,6 @@ "Details" : "Detaloj", "Select" : "Elekti", "Pending" : "Traktotaj", - "Error moving file" : "Eraris movo de dosiero", - "Error" : "Eraro", - "{new_name} already exists" : "{new_name} jam ekzistas", - "Could not rename file" : "Ne povis alinomiĝi dosiero", - "Could not create file" : "Ne povis kreiĝi dosiero", - "Could not create folder" : "Ne povis kreiĝi dosierujo", "Name" : "Nomo", "Size" : "Grando", "Modified" : "Modifita", @@ -53,7 +42,6 @@ "Your storage is full, files can not be updated or synced anymore!" : "Via memoro plenas, ne plu eblas ĝisdatigi aŭ sinkronigi dosierojn!", "Your storage is almost full ({usedSpacePercent}%)" : "Via memoro preskaŭ plenas ({usedSpacePercent}%)", "Favorite" : "Favorato", - "Text file" : "Tekstodosiero", "Folder" : "Dosierujo", "New folder" : "Nova dosierujo", "Upload" : "Alŝuti", @@ -64,8 +52,6 @@ "%2$s changed %1$s" : "%2$s ŝanĝis %1$s", "You deleted %1$s" : "Vi forigis %1$s", "%2$s deleted %1$s" : "%2$s forigis %1$s", - "%s could not be renamed as it has been deleted" : "%s ne povis alinomiĝi ĉar ĝi forigitis", - "%s could not be renamed" : "%s ne povis alinomiĝi", "Upload (max. %s)" : "Alŝuti (maks. %s)", "File handling" : "Dosieradministro", "Maximum upload size" : "Maksimuma alŝutogrando", @@ -79,6 +65,7 @@ "Select all" : "Elekti ĉion", "Upload too large" : "Alŝuto tro larĝa", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "La dosieroj, kiujn vi provas alŝuti, transpasas la maksimuman grandon por dosieralŝutoj en ĉi tiu servilo.", - "Files are being scanned, please wait." : "Dosieroj estas skanataj, bonvolu atendi." + "Files are being scanned, please wait." : "Dosieroj estas skanataj, bonvolu atendi.", + "Text file" : "Tekstodosiero" },"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 5226fb4774e..dd8759c3f0c 100644 --- a/apps/files/l10n/es.js +++ b/apps/files/l10n/es.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Almacenamiento no disponible", "Storage invalid" : "Almacenamiento inválido", "Unknown error" : "Error desconocido", - "Could not move %s - File with this name already exists" : "No se pudo mover %s - Ya existe un archivo con ese nombre.", - "Could not move %s" : "No se pudo mover %s", - "Permission denied" : "Permiso denegado", - "The target folder has been moved or deleted." : "La carpeta de destino fue movida o eliminada.", - "The name %s is already used in the folder %s. Please choose a different name." : "El nombre %s ya está en uso por la carpeta %s. Por favor elija uno diferente.", - "Error when creating the file" : "Error al crear el archivo", - "Error when creating the folder" : "Error al crear la carpeta.", "Unable to set upload directory." : "Incapaz de crear directorio de subida.", "Invalid Token" : "Token Inválido", "No file was uploaded. Unknown error" : "No se subió ningún archivo. Error desconocido", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Falta la carpeta temporal", "Failed to write to disk" : "Falló al escribir al disco", "Not enough storage available" : "No hay suficiente espacio disponible", + "The target folder has been moved or deleted." : "La carpeta de destino fue movida o eliminada.", "Upload failed. Could not find uploaded file" : "Actualización fallida. No se pudo encontrar el archivo subido", "Upload failed. Could not get file info." : "Actualización fallida. No se pudo obtener información del archivo.", "Invalid directory." : "Directorio inválido.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "No se pudo determinar la fecha", "This operation is forbidden" : "Esta operación está prohibida", "This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verifique los registros o contáctese con el administrador", - "Error moving file." : "Error al mover el archivo.", - "Error moving file" : "Error moviendo archivo", - "Error" : "Error", - "{new_name} already exists" : "{new_name} ya existe", - "Could not rename file" : "No se pudo renombrar el archivo", - "Could not create file" : "No se pudo crear el archivo", - "Could not create folder" : "No se pudo crear la carpeta", - "Error deleting file." : "Error al borrar el archivo", "No entries in this folder match '{filter}'" : "No hay resultados que coincidan con '{filter}'", "Name" : "Nombre", "Size" : "Tamaño", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Agregado a Favoritos", "Favorite" : "Favorito", - "Text file" : "Archivo de texto", - "New text file.txt" : "Nuevo archivo de texto.txt", "Folder" : "Carpeta", "New folder" : "Nueva carpeta", "{newname} already exists" : "{new_name} ya existe", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "Cambiado por %2$s", "Deleted by %2$s" : "Eliminado por %2$s", "Restored by %2$s" : "Restaurado por %2$s", - "%s could not be renamed as it has been deleted" : "%s no se pudo renombrar pues ha sido eliminado", - "%s could not be renamed" : "%s no pudo ser renombrado", "Upload (max. %s)" : "Subida (máx. %s)", "File handling" : "Administración de archivos", "Maximum upload size" : "Tamaño máximo de subida", @@ -119,6 +101,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Los archivos se están escaneando, por favor espere.", "Currently scanning" : "Escaneando en este momento", "No favorites" : "No hay favoritos", - "Files and folders you mark as favorite will show up here" : "Aquí aparecerán los archivos y carpetas que usted marque como favoritos" + "Files and folders you mark as favorite will show up here" : "Aquí aparecerán los archivos y carpetas que usted marque como favoritos", + "Text file" : "Archivo de texto", + "New text file.txt" : "Nuevo archivo de texto.txt" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json index cb255204571..de4005ae515 100644 --- a/apps/files/l10n/es.json +++ b/apps/files/l10n/es.json @@ -2,13 +2,6 @@ "Storage not available" : "Almacenamiento no disponible", "Storage invalid" : "Almacenamiento inválido", "Unknown error" : "Error desconocido", - "Could not move %s - File with this name already exists" : "No se pudo mover %s - Ya existe un archivo con ese nombre.", - "Could not move %s" : "No se pudo mover %s", - "Permission denied" : "Permiso denegado", - "The target folder has been moved or deleted." : "La carpeta de destino fue movida o eliminada.", - "The name %s is already used in the folder %s. Please choose a different name." : "El nombre %s ya está en uso por la carpeta %s. Por favor elija uno diferente.", - "Error when creating the file" : "Error al crear el archivo", - "Error when creating the folder" : "Error al crear la carpeta.", "Unable to set upload directory." : "Incapaz de crear directorio de subida.", "Invalid Token" : "Token Inválido", "No file was uploaded. Unknown error" : "No se subió ningún archivo. Error desconocido", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Falta la carpeta temporal", "Failed to write to disk" : "Falló al escribir al disco", "Not enough storage available" : "No hay suficiente espacio disponible", + "The target folder has been moved or deleted." : "La carpeta de destino fue movida o eliminada.", "Upload failed. Could not find uploaded file" : "Actualización fallida. No se pudo encontrar el archivo subido", "Upload failed. Could not get file info." : "Actualización fallida. No se pudo obtener información del archivo.", "Invalid directory." : "Directorio inválido.", @@ -44,14 +38,6 @@ "Unable to determine date" : "No se pudo determinar la fecha", "This operation is forbidden" : "Esta operación está prohibida", "This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verifique los registros o contáctese con el administrador", - "Error moving file." : "Error al mover el archivo.", - "Error moving file" : "Error moviendo archivo", - "Error" : "Error", - "{new_name} already exists" : "{new_name} ya existe", - "Could not rename file" : "No se pudo renombrar el archivo", - "Could not create file" : "No se pudo crear el archivo", - "Could not create folder" : "No se pudo crear la carpeta", - "Error deleting file." : "Error al borrar el archivo", "No entries in this folder match '{filter}'" : "No hay resultados que coincidan con '{filter}'", "Name" : "Nombre", "Size" : "Tamaño", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Agregado a Favoritos", "Favorite" : "Favorito", - "Text file" : "Archivo de texto", - "New text file.txt" : "Nuevo archivo de texto.txt", "Folder" : "Carpeta", "New folder" : "Nueva carpeta", "{newname} already exists" : "{new_name} ya existe", @@ -97,8 +81,6 @@ "Changed by %2$s" : "Cambiado por %2$s", "Deleted by %2$s" : "Eliminado por %2$s", "Restored by %2$s" : "Restaurado por %2$s", - "%s could not be renamed as it has been deleted" : "%s no se pudo renombrar pues ha sido eliminado", - "%s could not be renamed" : "%s no pudo ser renombrado", "Upload (max. %s)" : "Subida (máx. %s)", "File handling" : "Administración de archivos", "Maximum upload size" : "Tamaño máximo de subida", @@ -117,6 +99,8 @@ "Files are being scanned, please wait." : "Los archivos se están escaneando, por favor espere.", "Currently scanning" : "Escaneando en este momento", "No favorites" : "No hay favoritos", - "Files and folders you mark as favorite will show up here" : "Aquí aparecerán los archivos y carpetas que usted marque como favoritos" + "Files and folders you mark as favorite will show up here" : "Aquí aparecerán los archivos y carpetas que usted marque como favoritos", + "Text file" : "Archivo de texto", + "New text file.txt" : "Nuevo archivo de texto.txt" },"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 4f74717175d..6c6b0d49853 100644 --- a/apps/files/l10n/es_AR.js +++ b/apps/files/l10n/es_AR.js @@ -1,12 +1,9 @@ OC.L10N.register( "files", { + "Storage not available" : "Almacenamiento no disponible", + "Storage invalid" : "Almacenamiento invalido", "Unknown error" : "Error desconocido", - "Could not move %s - File with this name already exists" : "No se pudo mover %s - Un archivo con este nombre ya existe", - "Could not move %s" : "No se pudo mover %s ", - "The name %s is already used in the folder %s. Please choose a different name." : "El nombre %s está en uso en el directorio %s. Por favor elija un otro nombre.", - "Error when creating the file" : "Error al crear el archivo", - "Error when creating the folder" : "Error al crear el directorio", "Unable to set upload directory." : "No fue posible crear el directorio de subida.", "Invalid Token" : "Token Inválido", "No file was uploaded. Unknown error" : "El archivo no fue subido. Error desconocido", @@ -18,15 +15,19 @@ OC.L10N.register( "Missing a temporary folder" : "Falta un directorio temporal", "Failed to write to disk" : "Error al escribir en el disco", "Not enough storage available" : "No hay suficiente almacenamiento", + "The target folder has been moved or deleted." : "La carpeta destino fue movida o borrada.", "Upload failed. Could not find uploaded file" : "Falló la carga. No se pudo encontrar el archivo subido.", "Upload failed. Could not get file info." : "Falló la carga. No se pudo obtener la información del archivo.", "Invalid directory." : "Directorio inválido.", "Files" : "Archivos", + "All files" : "Todos los archivos", "Favorites" : "Favoritos", "Home" : "Particular", "Close" : "Cerrar", "Upload cancelled." : "La subida fue cancelada", "Unable to upload {filename} as it is a directory or has 0 bytes" : "Imposible cargar {filename} puesto que es un directoro o tiene 0 bytes.", + "Total file size {size1} exceeds upload limit {size2}" : "El tamaño total del archivo {size1} excede el límite {size2}", + "Not enough free space, you are uploading {size1} but only {size2} is left" : "No hay suficiente espacio libre. Quiere subir {size1} pero solo quedan {size2}", "Could not get result from server." : "No se pudo obtener resultados del servidor.", "File upload is in progress. Leaving the page now will cancel the upload." : "La subida del archivo está en proceso. Si salís de la página ahora, la subida se cancelará.", "Actions" : "Acciones", @@ -36,13 +37,7 @@ OC.L10N.register( "Details" : "Detalles", "Select" : "Seleccionar", "Pending" : "Pendientes", - "Error moving file" : "Error moviendo el archivo", - "Error" : "Error", - "{new_name} already exists" : "{new_name} ya existe", - "Could not rename file" : "No se pudo renombrar el archivo", - "Could not create file" : "No se pudo crear el archivo", - "Could not create folder" : "No se pudo crear el directorio", - "Error deleting file." : "Error al borrar el archivo.", + "Unable to determine date" : "No fue posible determinar la fecha", "Name" : "Nombre", "Size" : "Tamaño", "Modified" : "Modificado", @@ -56,7 +51,6 @@ OC.L10N.register( "Your storage is full, files can not be updated or synced anymore!" : "El almacenamiento está lleno, los archivos no se pueden seguir actualizando ni sincronizando", "Your storage is almost full ({usedSpacePercent}%)" : "El almacenamiento está casi lleno ({usedSpacePercent}%)", "Favorite" : "Favorito", - "Text file" : "Archivo de texto", "Folder" : "Carpeta", "New folder" : "Nueva Carpeta", "Upload" : "Subir", @@ -69,7 +63,6 @@ OC.L10N.register( "%2$s changed %1$s" : "%2$s modificó %1$s", "You deleted %1$s" : "Eliminaste %1$s", "%2$s deleted %1$s" : "%2$s eliminó %1$s", - "%s could not be renamed" : "No se pudo renombrar %s", "File handling" : "Tratamiento de archivos", "Maximum upload size" : "Tamaño máximo de subida", "max. possible: " : "máx. posible:", @@ -80,6 +73,7 @@ OC.L10N.register( "Cancel upload" : "Cancelar subida", "Upload too large" : "El tamaño del archivo que querés subir es demasiado grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Los archivos que intentás subir sobrepasan el tamaño máximo ", - "Files are being scanned, please wait." : "Se están escaneando los archivos, por favor esperá." + "Files are being scanned, please wait." : "Se están escaneando los archivos, por favor esperá.", + "Text file" : "Archivo de texto" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/es_AR.json b/apps/files/l10n/es_AR.json index 363fedc787e..ad492b4048a 100644 --- a/apps/files/l10n/es_AR.json +++ b/apps/files/l10n/es_AR.json @@ -1,10 +1,7 @@ { "translations": { + "Storage not available" : "Almacenamiento no disponible", + "Storage invalid" : "Almacenamiento invalido", "Unknown error" : "Error desconocido", - "Could not move %s - File with this name already exists" : "No se pudo mover %s - Un archivo con este nombre ya existe", - "Could not move %s" : "No se pudo mover %s ", - "The name %s is already used in the folder %s. Please choose a different name." : "El nombre %s está en uso en el directorio %s. Por favor elija un otro nombre.", - "Error when creating the file" : "Error al crear el archivo", - "Error when creating the folder" : "Error al crear el directorio", "Unable to set upload directory." : "No fue posible crear el directorio de subida.", "Invalid Token" : "Token Inválido", "No file was uploaded. Unknown error" : "El archivo no fue subido. Error desconocido", @@ -16,15 +13,19 @@ "Missing a temporary folder" : "Falta un directorio temporal", "Failed to write to disk" : "Error al escribir en el disco", "Not enough storage available" : "No hay suficiente almacenamiento", + "The target folder has been moved or deleted." : "La carpeta destino fue movida o borrada.", "Upload failed. Could not find uploaded file" : "Falló la carga. No se pudo encontrar el archivo subido.", "Upload failed. Could not get file info." : "Falló la carga. No se pudo obtener la información del archivo.", "Invalid directory." : "Directorio inválido.", "Files" : "Archivos", + "All files" : "Todos los archivos", "Favorites" : "Favoritos", "Home" : "Particular", "Close" : "Cerrar", "Upload cancelled." : "La subida fue cancelada", "Unable to upload {filename} as it is a directory or has 0 bytes" : "Imposible cargar {filename} puesto que es un directoro o tiene 0 bytes.", + "Total file size {size1} exceeds upload limit {size2}" : "El tamaño total del archivo {size1} excede el límite {size2}", + "Not enough free space, you are uploading {size1} but only {size2} is left" : "No hay suficiente espacio libre. Quiere subir {size1} pero solo quedan {size2}", "Could not get result from server." : "No se pudo obtener resultados del servidor.", "File upload is in progress. Leaving the page now will cancel the upload." : "La subida del archivo está en proceso. Si salís de la página ahora, la subida se cancelará.", "Actions" : "Acciones", @@ -34,13 +35,7 @@ "Details" : "Detalles", "Select" : "Seleccionar", "Pending" : "Pendientes", - "Error moving file" : "Error moviendo el archivo", - "Error" : "Error", - "{new_name} already exists" : "{new_name} ya existe", - "Could not rename file" : "No se pudo renombrar el archivo", - "Could not create file" : "No se pudo crear el archivo", - "Could not create folder" : "No se pudo crear el directorio", - "Error deleting file." : "Error al borrar el archivo.", + "Unable to determine date" : "No fue posible determinar la fecha", "Name" : "Nombre", "Size" : "Tamaño", "Modified" : "Modificado", @@ -54,7 +49,6 @@ "Your storage is full, files can not be updated or synced anymore!" : "El almacenamiento está lleno, los archivos no se pueden seguir actualizando ni sincronizando", "Your storage is almost full ({usedSpacePercent}%)" : "El almacenamiento está casi lleno ({usedSpacePercent}%)", "Favorite" : "Favorito", - "Text file" : "Archivo de texto", "Folder" : "Carpeta", "New folder" : "Nueva Carpeta", "Upload" : "Subir", @@ -67,7 +61,6 @@ "%2$s changed %1$s" : "%2$s modificó %1$s", "You deleted %1$s" : "Eliminaste %1$s", "%2$s deleted %1$s" : "%2$s eliminó %1$s", - "%s could not be renamed" : "No se pudo renombrar %s", "File handling" : "Tratamiento de archivos", "Maximum upload size" : "Tamaño máximo de subida", "max. possible: " : "máx. posible:", @@ -78,6 +71,7 @@ "Cancel upload" : "Cancelar subida", "Upload too large" : "El tamaño del archivo que querés subir es demasiado grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Los archivos que intentás subir sobrepasan el tamaño máximo ", - "Files are being scanned, please wait." : "Se están escaneando los archivos, por favor esperá." + "Files are being scanned, please wait." : "Se están escaneando los archivos, por favor esperá.", + "Text file" : "Archivo de texto" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/es_CL.js b/apps/files/l10n/es_CL.js index f7443bc4944..7b67ca39ac5 100644 --- a/apps/files/l10n/es_CL.js +++ b/apps/files/l10n/es_CL.js @@ -6,7 +6,6 @@ OC.L10N.register( "Download" : "Descargar", "Rename" : "Renombrar", "Details" : "detalles", - "Error" : "Error", "New folder" : "Nuevo directorio", "Upload" : "Subir", "A new file or folder has been <strong>created</strong>" : "Un nuevo archivo o carpeta ha sido <strong>creado</strong>", diff --git a/apps/files/l10n/es_CL.json b/apps/files/l10n/es_CL.json index 29c0ef45fcf..7c42b2a4097 100644 --- a/apps/files/l10n/es_CL.json +++ b/apps/files/l10n/es_CL.json @@ -4,7 +4,6 @@ "Download" : "Descargar", "Rename" : "Renombrar", "Details" : "detalles", - "Error" : "Error", "New folder" : "Nuevo directorio", "Upload" : "Subir", "A new file or folder has been <strong>created</strong>" : "Un nuevo archivo o carpeta ha sido <strong>creado</strong>", diff --git a/apps/files/l10n/es_MX.js b/apps/files/l10n/es_MX.js index dadcf54d15c..0e4dbddeda9 100644 --- a/apps/files/l10n/es_MX.js +++ b/apps/files/l10n/es_MX.js @@ -2,11 +2,6 @@ OC.L10N.register( "files", { "Unknown error" : "Error desconocido", - "Could not move %s - File with this name already exists" : "No se pudo mover %s - Ya existe un archivo con ese nombre.", - "Could not move %s" : "No se pudo mover %s", - "The name %s is already used in the folder %s. Please choose a different name." : "El nombre %s ya está en uso por la carpeta %s. Por favor elija uno diferente.", - "Error when creating the file" : "Error al crear el archivo", - "Error when creating the folder" : "Error al crear la carpeta.", "Unable to set upload directory." : "Incapaz de crear directorio de subida.", "Invalid Token" : "Token Inválido", "No file was uploaded. Unknown error" : "No se subió ningún archivo. Error desconocido", @@ -35,13 +30,6 @@ OC.L10N.register( "Delete" : "Eliminar", "Details" : "Detalles", "Pending" : "Pendiente", - "Error moving file" : "Error moviendo archivo", - "Error" : "Error", - "{new_name} already exists" : "{new_name} ya existe", - "Could not rename file" : "No se pudo renombrar el archivo", - "Could not create file" : "No se pudo crear el archivo", - "Could not create folder" : "No se pudo crear la carpeta", - "Error deleting file." : "Error borrando el archivo.", "Name" : "Nombre", "Size" : "Tamaño", "Modified" : "Modificado", @@ -55,14 +43,12 @@ OC.L10N.register( "Your storage is full, files can not be updated or synced anymore!" : "Su almacenamiento está lleno, ¡los archivos no se actualizarán ni sincronizarán más!", "Your storage is almost full ({usedSpacePercent}%)" : "Su almacenamiento está casi lleno ({usedSpacePercent}%)", "Favorite" : "Favorito", - "Text file" : "Archivo de texto", "Folder" : "Carpeta", "New folder" : "Nueva carpeta", "Upload" : "Subir archivo", "You created %1$s" : "Has creado %1$s", "You changed %1$s" : "Has cambiado %1$s", "You deleted %1$s" : "Has eliminado %1$s", - "%s could not be renamed" : "%s no pudo ser renombrado", "File handling" : "Administración de archivos", "Maximum upload size" : "Tamaño máximo de subida", "max. possible: " : "máx. posible:", @@ -73,6 +59,7 @@ OC.L10N.register( "Cancel upload" : "Cancelar subida", "Upload too large" : "Subida demasido grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Los archivos que estás intentando subir sobrepasan el tamaño máximo permitido en este servidor.", - "Files are being scanned, please wait." : "Los archivos están siendo escaneados, por favor espere." + "Files are being scanned, please wait." : "Los archivos están siendo escaneados, por favor espere.", + "Text file" : "Archivo de texto" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/es_MX.json b/apps/files/l10n/es_MX.json index 61156506368..cb903ddd9dc 100644 --- a/apps/files/l10n/es_MX.json +++ b/apps/files/l10n/es_MX.json @@ -1,10 +1,5 @@ { "translations": { "Unknown error" : "Error desconocido", - "Could not move %s - File with this name already exists" : "No se pudo mover %s - Ya existe un archivo con ese nombre.", - "Could not move %s" : "No se pudo mover %s", - "The name %s is already used in the folder %s. Please choose a different name." : "El nombre %s ya está en uso por la carpeta %s. Por favor elija uno diferente.", - "Error when creating the file" : "Error al crear el archivo", - "Error when creating the folder" : "Error al crear la carpeta.", "Unable to set upload directory." : "Incapaz de crear directorio de subida.", "Invalid Token" : "Token Inválido", "No file was uploaded. Unknown error" : "No se subió ningún archivo. Error desconocido", @@ -33,13 +28,6 @@ "Delete" : "Eliminar", "Details" : "Detalles", "Pending" : "Pendiente", - "Error moving file" : "Error moviendo archivo", - "Error" : "Error", - "{new_name} already exists" : "{new_name} ya existe", - "Could not rename file" : "No se pudo renombrar el archivo", - "Could not create file" : "No se pudo crear el archivo", - "Could not create folder" : "No se pudo crear la carpeta", - "Error deleting file." : "Error borrando el archivo.", "Name" : "Nombre", "Size" : "Tamaño", "Modified" : "Modificado", @@ -53,14 +41,12 @@ "Your storage is full, files can not be updated or synced anymore!" : "Su almacenamiento está lleno, ¡los archivos no se actualizarán ni sincronizarán más!", "Your storage is almost full ({usedSpacePercent}%)" : "Su almacenamiento está casi lleno ({usedSpacePercent}%)", "Favorite" : "Favorito", - "Text file" : "Archivo de texto", "Folder" : "Carpeta", "New folder" : "Nueva carpeta", "Upload" : "Subir archivo", "You created %1$s" : "Has creado %1$s", "You changed %1$s" : "Has cambiado %1$s", "You deleted %1$s" : "Has eliminado %1$s", - "%s could not be renamed" : "%s no pudo ser renombrado", "File handling" : "Administración de archivos", "Maximum upload size" : "Tamaño máximo de subida", "max. possible: " : "máx. posible:", @@ -71,6 +57,7 @@ "Cancel upload" : "Cancelar subida", "Upload too large" : "Subida demasido grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Los archivos que estás intentando subir sobrepasan el tamaño máximo permitido en este servidor.", - "Files are being scanned, please wait." : "Los archivos están siendo escaneados, por favor espere." + "Files are being scanned, please wait." : "Los archivos están siendo escaneados, por favor espere.", + "Text file" : "Archivo de texto" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/et_EE.js b/apps/files/l10n/et_EE.js index e57e6e39c81..f136bd300b1 100644 --- a/apps/files/l10n/et_EE.js +++ b/apps/files/l10n/et_EE.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Andmehoidla pole saadaval", "Storage invalid" : "Vigane andmehoidla", "Unknown error" : "Tundmatu viga", - "Could not move %s - File with this name already exists" : "Ei saa liigutada faili %s - samanimeline fail on juba olemas", - "Could not move %s" : "%s liigutamine ebaõnnestus", - "Permission denied" : "Ligipääs keelatud", - "The target folder has been moved or deleted." : "Sihtkataloog on ümber tõstetud või kustutatud.", - "The name %s is already used in the folder %s. Please choose a different name." : "Nimi %s on juba kasutusel kataloogis %s. Palun vali mõni teine nimi.", - "Error when creating the file" : "Viga faili loomisel", - "Error when creating the folder" : "Viga kataloogi loomisel", "Unable to set upload directory." : "Üleslaadimiste kausta määramine ebaõnnestus.", "Invalid Token" : "Vigane kontrollkood", "No file was uploaded. Unknown error" : "Ühtegi faili ei laetud üles. Tundmatu viga", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Ajutiste failide kaust puudub", "Failed to write to disk" : "Kettale kirjutamine ebaõnnestus", "Not enough storage available" : "Saadaval pole piisavalt ruumi", + "The target folder has been moved or deleted." : "Sihtkataloog on ümber tõstetud või kustutatud.", "Upload failed. Could not find uploaded file" : "Üleslaadimine ebaõnnestus. Üleslaetud faili ei leitud", "Upload failed. Could not get file info." : "Üleslaadimine ebaõnnestus. Faili info hankimine ebaõnnestus.", "Invalid directory." : "Vigane kaust.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Kuupäeva tuvastamine ei õnnestunud", "This operation is forbidden" : "See toiming on keelatud", "This directory is unavailable, please check the logs or contact the administrator" : "See kaust pole saadaval. Palun kontrolli logifaile või võta ühendust administraatoriga", - "Error moving file." : "Viga faili liigutamisel.", - "Error moving file" : "Viga faili eemaldamisel", - "Error" : "Viga", - "{new_name} already exists" : "{new_name} on juba olemas", - "Could not rename file" : "Ei suuda faili ümber nimetada", - "Could not create file" : "Ei suuda luua faili", - "Could not create folder" : "Ei suuda luua kataloogi", - "Error deleting file." : "Viga faili kustutamisel.", "No entries in this folder match '{filter}'" : "Ükski sissekanne ei kattu filtriga '{filter}'", "Name" : "Nimi", "Size" : "Suurus", @@ -74,7 +60,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n bait","%n baiti"], "Favorited" : "Lemmikud", "Favorite" : "Lemmik", - "Text file" : "Tekstifail", "Folder" : "Kaust", "New folder" : "Uus kaust", "Upload" : "Lae üles", @@ -92,8 +77,6 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s kustutas %1$s", "You restored %1$s" : "Sa taastasid %1$s", "%2$s restored %1$s" : "%2$s taastas %1$s", - "%s could not be renamed as it has been deleted" : "%s ei saa ümber nimetada, kuna see on kustutatud", - "%s could not be renamed" : "%s ümbernimetamine ebaõnnestus", "Upload (max. %s)" : "Üleslaadimine (max. %s)", "File handling" : "Failide käsitlemine", "Maximum upload size" : "Maksimaalne üleslaadimise suurus", @@ -112,6 +95,7 @@ OC.L10N.register( "Files are being scanned, please wait." : "Faile skannitakse, palun oota.", "Currently scanning" : "Praegu skännimisel", "No favorites" : "Lemmikuid pole", - "Files and folders you mark as favorite will show up here" : "Siin kuvatakse faile ja kaustasid, mille oled märkinud lemmikuteks" + "Files and folders you mark as favorite will show up here" : "Siin kuvatakse faile ja kaustasid, mille oled märkinud lemmikuteks", + "Text file" : "Tekstifail" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/et_EE.json b/apps/files/l10n/et_EE.json index 02dc68f96d9..6e1961770c9 100644 --- a/apps/files/l10n/et_EE.json +++ b/apps/files/l10n/et_EE.json @@ -2,13 +2,6 @@ "Storage not available" : "Andmehoidla pole saadaval", "Storage invalid" : "Vigane andmehoidla", "Unknown error" : "Tundmatu viga", - "Could not move %s - File with this name already exists" : "Ei saa liigutada faili %s - samanimeline fail on juba olemas", - "Could not move %s" : "%s liigutamine ebaõnnestus", - "Permission denied" : "Ligipääs keelatud", - "The target folder has been moved or deleted." : "Sihtkataloog on ümber tõstetud või kustutatud.", - "The name %s is already used in the folder %s. Please choose a different name." : "Nimi %s on juba kasutusel kataloogis %s. Palun vali mõni teine nimi.", - "Error when creating the file" : "Viga faili loomisel", - "Error when creating the folder" : "Viga kataloogi loomisel", "Unable to set upload directory." : "Üleslaadimiste kausta määramine ebaõnnestus.", "Invalid Token" : "Vigane kontrollkood", "No file was uploaded. Unknown error" : "Ühtegi faili ei laetud üles. Tundmatu viga", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Ajutiste failide kaust puudub", "Failed to write to disk" : "Kettale kirjutamine ebaõnnestus", "Not enough storage available" : "Saadaval pole piisavalt ruumi", + "The target folder has been moved or deleted." : "Sihtkataloog on ümber tõstetud või kustutatud.", "Upload failed. Could not find uploaded file" : "Üleslaadimine ebaõnnestus. Üleslaetud faili ei leitud", "Upload failed. Could not get file info." : "Üleslaadimine ebaõnnestus. Faili info hankimine ebaõnnestus.", "Invalid directory." : "Vigane kaust.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Kuupäeva tuvastamine ei õnnestunud", "This operation is forbidden" : "See toiming on keelatud", "This directory is unavailable, please check the logs or contact the administrator" : "See kaust pole saadaval. Palun kontrolli logifaile või võta ühendust administraatoriga", - "Error moving file." : "Viga faili liigutamisel.", - "Error moving file" : "Viga faili eemaldamisel", - "Error" : "Viga", - "{new_name} already exists" : "{new_name} on juba olemas", - "Could not rename file" : "Ei suuda faili ümber nimetada", - "Could not create file" : "Ei suuda luua faili", - "Could not create folder" : "Ei suuda luua kataloogi", - "Error deleting file." : "Viga faili kustutamisel.", "No entries in this folder match '{filter}'" : "Ükski sissekanne ei kattu filtriga '{filter}'", "Name" : "Nimi", "Size" : "Suurus", @@ -72,7 +58,6 @@ "_%n byte_::_%n bytes_" : ["%n bait","%n baiti"], "Favorited" : "Lemmikud", "Favorite" : "Lemmik", - "Text file" : "Tekstifail", "Folder" : "Kaust", "New folder" : "Uus kaust", "Upload" : "Lae üles", @@ -90,8 +75,6 @@ "%2$s deleted %1$s" : "%2$s kustutas %1$s", "You restored %1$s" : "Sa taastasid %1$s", "%2$s restored %1$s" : "%2$s taastas %1$s", - "%s could not be renamed as it has been deleted" : "%s ei saa ümber nimetada, kuna see on kustutatud", - "%s could not be renamed" : "%s ümbernimetamine ebaõnnestus", "Upload (max. %s)" : "Üleslaadimine (max. %s)", "File handling" : "Failide käsitlemine", "Maximum upload size" : "Maksimaalne üleslaadimise suurus", @@ -110,6 +93,7 @@ "Files are being scanned, please wait." : "Faile skannitakse, palun oota.", "Currently scanning" : "Praegu skännimisel", "No favorites" : "Lemmikuid pole", - "Files and folders you mark as favorite will show up here" : "Siin kuvatakse faile ja kaustasid, mille oled märkinud lemmikuteks" + "Files and folders you mark as favorite will show up here" : "Siin kuvatakse faile ja kaustasid, mille oled märkinud lemmikuteks", + "Text file" : "Tekstifail" },"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 0758119cad4..9add1516c46 100644 --- a/apps/files/l10n/eu.js +++ b/apps/files/l10n/eu.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Biltegia ez dago eskuragarri", "Storage invalid" : "Biltegi bliogabea", "Unknown error" : "Errore ezezaguna", - "Could not move %s - File with this name already exists" : "Ezin da %s mugitu - Izen hau duen fitxategia dagoeneko existitzen da", - "Could not move %s" : "Ezin dira fitxategiak mugitu %s", - "Permission denied" : "Baimena Ukatua", - "The target folder has been moved or deleted." : "Jatorrizko karpeta mugitu edo ezabatu da.", - "The name %s is already used in the folder %s. Please choose a different name." : "%s izena dagoeneko erabilita dago %s karpetan. Mesdez hautatu izen ezberdina.", - "Error when creating the file" : "Errorea fitxategia sortzerakoan", - "Error when creating the folder" : "Errorea karpeta sortzerakoan", "Unable to set upload directory." : "Ezin da igoera direktorioa ezarri.", "Invalid Token" : "Lekuko baliogabea", "No file was uploaded. Unknown error" : "Ez da fitxategirik igo. Errore ezezaguna", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Aldi bateko karpeta falta da", "Failed to write to disk" : "Errore bat izan da diskoan idazterakoan", "Not enough storage available" : "Ez dago behar aina leku erabilgarri,", + "The target folder has been moved or deleted." : "Jatorrizko karpeta mugitu edo ezabatu da.", "Upload failed. Could not find uploaded file" : "Igoerak huts egin du. Ezin izan da igotako fitxategia aurkitu", "Upload failed. Could not get file info." : "Igoerak huts egin du. Ezin izan da fitxategiaren informazioa eskuratu.", "Invalid directory." : "Baliogabeko karpeta.", @@ -44,14 +38,6 @@ OC.L10N.register( "Select" : "hautatu", "Pending" : "Zain", "Unable to determine date" : "Ezin izan da data zehaztu", - "Error moving file." : "Errorea fitxategia mugitzean.", - "Error moving file" : "Errorea fitxategia mugitzean", - "Error" : "Errorea", - "{new_name} already exists" : "{new_name} dagoeneko existitzen da", - "Could not rename file" : "Ezin izan da fitxategia berrizendatu", - "Could not create file" : "Ezin izan da fitxategia sortu", - "Could not create folder" : "Ezin izan da karpeta sortu", - "Error deleting file." : "Errorea fitxategia ezabatzerakoan.", "No entries in this folder match '{filter}'" : "Karpeta honetan ez dago sarrerarik '{filter}' iragazkiarekin bat egiten dutenak", "Name" : "Izena", "Size" : "Tamaina", @@ -68,7 +54,6 @@ OC.L10N.register( "Your storage is almost full ({usedSpacePercent}%)" : "Zure biltegiratzea nahiko beterik dago (%{usedSpacePercent})", "Favorited" : "Gogokoa", "Favorite" : "Gogokoa", - "Text file" : "Testu fitxategia", "Folder" : "Karpeta", "New folder" : "Karpeta berria", "Upload" : "Igo", @@ -85,8 +70,6 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$sk ezabatuta %1$s", "You restored %1$s" : "Zuk %1$s berrezarri duzu", "%2$s restored %1$s" : "%2$sk %1$s berrezarri du", - "%s could not be renamed as it has been deleted" : "%s ezin izan da berrizendatu ezabatua zegoen eta", - "%s could not be renamed" : "%s ezin da berrizendatu", "Upload (max. %s)" : "Igo (max. %s)", "File handling" : "Fitxategien kudeaketa", "Maximum upload size" : "Igo daitekeen gehienezko tamaina", @@ -104,6 +87,7 @@ OC.L10N.register( "Files are being scanned, please wait." : "Fitxategiak eskaneatzen ari da, itxoin mezedez.", "Currently scanning" : "Eskaneatzen une honetan", "No favorites" : "Gogokorik ez", - "Files and folders you mark as favorite will show up here" : "Gogokotzat markatutako fitxategi eta karpeta hemen agertuko dira" + "Files and folders you mark as favorite will show up here" : "Gogokotzat markatutako fitxategi eta karpeta hemen agertuko dira", + "Text file" : "Testu fitxategia" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/eu.json b/apps/files/l10n/eu.json index 9e225f2290a..96943f33a9a 100644 --- a/apps/files/l10n/eu.json +++ b/apps/files/l10n/eu.json @@ -2,13 +2,6 @@ "Storage not available" : "Biltegia ez dago eskuragarri", "Storage invalid" : "Biltegi bliogabea", "Unknown error" : "Errore ezezaguna", - "Could not move %s - File with this name already exists" : "Ezin da %s mugitu - Izen hau duen fitxategia dagoeneko existitzen da", - "Could not move %s" : "Ezin dira fitxategiak mugitu %s", - "Permission denied" : "Baimena Ukatua", - "The target folder has been moved or deleted." : "Jatorrizko karpeta mugitu edo ezabatu da.", - "The name %s is already used in the folder %s. Please choose a different name." : "%s izena dagoeneko erabilita dago %s karpetan. Mesdez hautatu izen ezberdina.", - "Error when creating the file" : "Errorea fitxategia sortzerakoan", - "Error when creating the folder" : "Errorea karpeta sortzerakoan", "Unable to set upload directory." : "Ezin da igoera direktorioa ezarri.", "Invalid Token" : "Lekuko baliogabea", "No file was uploaded. Unknown error" : "Ez da fitxategirik igo. Errore ezezaguna", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Aldi bateko karpeta falta da", "Failed to write to disk" : "Errore bat izan da diskoan idazterakoan", "Not enough storage available" : "Ez dago behar aina leku erabilgarri,", + "The target folder has been moved or deleted." : "Jatorrizko karpeta mugitu edo ezabatu da.", "Upload failed. Could not find uploaded file" : "Igoerak huts egin du. Ezin izan da igotako fitxategia aurkitu", "Upload failed. Could not get file info." : "Igoerak huts egin du. Ezin izan da fitxategiaren informazioa eskuratu.", "Invalid directory." : "Baliogabeko karpeta.", @@ -42,14 +36,6 @@ "Select" : "hautatu", "Pending" : "Zain", "Unable to determine date" : "Ezin izan da data zehaztu", - "Error moving file." : "Errorea fitxategia mugitzean.", - "Error moving file" : "Errorea fitxategia mugitzean", - "Error" : "Errorea", - "{new_name} already exists" : "{new_name} dagoeneko existitzen da", - "Could not rename file" : "Ezin izan da fitxategia berrizendatu", - "Could not create file" : "Ezin izan da fitxategia sortu", - "Could not create folder" : "Ezin izan da karpeta sortu", - "Error deleting file." : "Errorea fitxategia ezabatzerakoan.", "No entries in this folder match '{filter}'" : "Karpeta honetan ez dago sarrerarik '{filter}' iragazkiarekin bat egiten dutenak", "Name" : "Izena", "Size" : "Tamaina", @@ -66,7 +52,6 @@ "Your storage is almost full ({usedSpacePercent}%)" : "Zure biltegiratzea nahiko beterik dago (%{usedSpacePercent})", "Favorited" : "Gogokoa", "Favorite" : "Gogokoa", - "Text file" : "Testu fitxategia", "Folder" : "Karpeta", "New folder" : "Karpeta berria", "Upload" : "Igo", @@ -83,8 +68,6 @@ "%2$s deleted %1$s" : "%2$sk ezabatuta %1$s", "You restored %1$s" : "Zuk %1$s berrezarri duzu", "%2$s restored %1$s" : "%2$sk %1$s berrezarri du", - "%s could not be renamed as it has been deleted" : "%s ezin izan da berrizendatu ezabatua zegoen eta", - "%s could not be renamed" : "%s ezin da berrizendatu", "Upload (max. %s)" : "Igo (max. %s)", "File handling" : "Fitxategien kudeaketa", "Maximum upload size" : "Igo daitekeen gehienezko tamaina", @@ -102,6 +85,7 @@ "Files are being scanned, please wait." : "Fitxategiak eskaneatzen ari da, itxoin mezedez.", "Currently scanning" : "Eskaneatzen une honetan", "No favorites" : "Gogokorik ez", - "Files and folders you mark as favorite will show up here" : "Gogokotzat markatutako fitxategi eta karpeta hemen agertuko dira" + "Files and folders you mark as favorite will show up here" : "Gogokotzat markatutako fitxategi eta karpeta hemen agertuko dira", + "Text file" : "Testu fitxategia" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/fa.js b/apps/files/l10n/fa.js index 306992d15af..46cbbc376ab 100644 --- a/apps/files/l10n/fa.js +++ b/apps/files/l10n/fa.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "فضای ذخیره سازی موجود نیست", "Storage invalid" : "فضای ذخیرهسازی نامعتبر", "Unknown error" : "خطای نامشخص", - "Could not move %s - File with this name already exists" : "%s نمی توان جابجا کرد - در حال حاضر پرونده با این نام وجود دارد. ", - "Could not move %s" : "%s نمی تواند حرکت کند ", - "Permission denied" : "رد دسترسی", - "The target folder has been moved or deleted." : "پوشه مقصد انتقال یافته یا حذف شده است.", - "The name %s is already used in the folder %s. Please choose a different name." : "نام %s هماکنون در پوشه %s مورد استفاده قرار گرفته شده است. لطفا نام دیگری انتخاب کنید.", - "Error when creating the file" : "خطا در حین ایجاد فایل", - "Error when creating the folder" : "خطا در حین ایجاد پوشه", "Unable to set upload directory." : "قادر به تنظیم پوشه آپلود نمی باشد.", "Invalid Token" : "رمز نامعتبر", "No file was uploaded. Unknown error" : "هیچ فایلی آپلود نشد.خطای ناشناس", @@ -22,6 +15,7 @@ OC.L10N.register( "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." : "فهرست راهنما نامعتبر می باشد.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "امکان تعیین تاریخ وجود ندارد", "This operation is forbidden" : "این عملیات غیرمجاز است", "This directory is unavailable, please check the logs or contact the administrator" : "پوشه در دسترس نیست، لطفا لاگها را بررسی کنید یا به مدیر سیستم اطلاع دهید", - "Error moving file." : "خطا در انتقال فایل.", - "Error moving file" : "خطا در انتقال فایل", - "Error" : "خطا", - "{new_name} already exists" : "{نام _جدید} در حال حاضر وجود دارد.", - "Could not rename file" : "امکان تغییر نام وجود ندارد", - "Could not create file" : "امکان ایجاد فایل وجود ندارد", - "Could not create folder" : "امکان ایجاد پوشه وجود ندارد", - "Error deleting file." : "خطا در حذف فایل.", "No entries in this folder match '{filter}'" : "هیچ ورودیای با '{filter}' تطبیق ندارد", "Name" : "نام", "Size" : "اندازه", @@ -75,7 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n بایت"], "Favorited" : "برگزیده شده", "Favorite" : "برگزیده", - "Text file" : "فایل متنی", "Folder" : "پوشه", "New folder" : "پوشه جدید", "{newname} already exists" : "{newname} هماکنون وجود دارد", @@ -97,8 +82,6 @@ OC.L10N.register( "Changed by %2$s" : "تغییریافته توسط %2$s", "Deleted by %2$s" : "حذف شده توسط %2$s", "Restored by %2$s" : "بازگردانی شده توسط %2$s", - "%s could not be renamed as it has been deleted" : "امکان تغییر نام %s با توجه به حذف شدن آن وجود ندارد", - "%s could not be renamed" : "%s نمیتواند تغییر نام دهد.", "Upload (max. %s)" : "آپلود (بیشترین سایز %s)", "File handling" : "اداره پرونده ها", "Maximum upload size" : "حداکثر اندازه بارگزاری", @@ -117,6 +100,7 @@ OC.L10N.register( "Files are being scanned, please wait." : "پرونده ها در حال بازرسی هستند لطفا صبر کنید", "Currently scanning" : "در حال اسکن", "No favorites" : "هیچ برگزیده", - "Files and folders you mark as favorite will show up here" : "فایلها و پوشههای انتخاب شده به عنوان برگزیده توسط شما، در اینجا نمایش داده میشود" + "Files and folders you mark as favorite will show up here" : "فایلها و پوشههای انتخاب شده به عنوان برگزیده توسط شما، در اینجا نمایش داده میشود", + "Text file" : "فایل متنی" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/fa.json b/apps/files/l10n/fa.json index ddf67b42593..b9e32d69e37 100644 --- a/apps/files/l10n/fa.json +++ b/apps/files/l10n/fa.json @@ -2,13 +2,6 @@ "Storage not available" : "فضای ذخیره سازی موجود نیست", "Storage invalid" : "فضای ذخیرهسازی نامعتبر", "Unknown error" : "خطای نامشخص", - "Could not move %s - File with this name already exists" : "%s نمی توان جابجا کرد - در حال حاضر پرونده با این نام وجود دارد. ", - "Could not move %s" : "%s نمی تواند حرکت کند ", - "Permission denied" : "رد دسترسی", - "The target folder has been moved or deleted." : "پوشه مقصد انتقال یافته یا حذف شده است.", - "The name %s is already used in the folder %s. Please choose a different name." : "نام %s هماکنون در پوشه %s مورد استفاده قرار گرفته شده است. لطفا نام دیگری انتخاب کنید.", - "Error when creating the file" : "خطا در حین ایجاد فایل", - "Error when creating the folder" : "خطا در حین ایجاد پوشه", "Unable to set upload directory." : "قادر به تنظیم پوشه آپلود نمی باشد.", "Invalid Token" : "رمز نامعتبر", "No file was uploaded. Unknown error" : "هیچ فایلی آپلود نشد.خطای ناشناس", @@ -20,6 +13,7 @@ "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." : "فهرست راهنما نامعتبر می باشد.", @@ -44,14 +38,6 @@ "Unable to determine date" : "امکان تعیین تاریخ وجود ندارد", "This operation is forbidden" : "این عملیات غیرمجاز است", "This directory is unavailable, please check the logs or contact the administrator" : "پوشه در دسترس نیست، لطفا لاگها را بررسی کنید یا به مدیر سیستم اطلاع دهید", - "Error moving file." : "خطا در انتقال فایل.", - "Error moving file" : "خطا در انتقال فایل", - "Error" : "خطا", - "{new_name} already exists" : "{نام _جدید} در حال حاضر وجود دارد.", - "Could not rename file" : "امکان تغییر نام وجود ندارد", - "Could not create file" : "امکان ایجاد فایل وجود ندارد", - "Could not create folder" : "امکان ایجاد پوشه وجود ندارد", - "Error deleting file." : "خطا در حذف فایل.", "No entries in this folder match '{filter}'" : "هیچ ورودیای با '{filter}' تطبیق ندارد", "Name" : "نام", "Size" : "اندازه", @@ -73,7 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n بایت"], "Favorited" : "برگزیده شده", "Favorite" : "برگزیده", - "Text file" : "فایل متنی", "Folder" : "پوشه", "New folder" : "پوشه جدید", "{newname} already exists" : "{newname} هماکنون وجود دارد", @@ -95,8 +80,6 @@ "Changed by %2$s" : "تغییریافته توسط %2$s", "Deleted by %2$s" : "حذف شده توسط %2$s", "Restored by %2$s" : "بازگردانی شده توسط %2$s", - "%s could not be renamed as it has been deleted" : "امکان تغییر نام %s با توجه به حذف شدن آن وجود ندارد", - "%s could not be renamed" : "%s نمیتواند تغییر نام دهد.", "Upload (max. %s)" : "آپلود (بیشترین سایز %s)", "File handling" : "اداره پرونده ها", "Maximum upload size" : "حداکثر اندازه بارگزاری", @@ -115,6 +98,7 @@ "Files are being scanned, please wait." : "پرونده ها در حال بازرسی هستند لطفا صبر کنید", "Currently scanning" : "در حال اسکن", "No favorites" : "هیچ برگزیده", - "Files and folders you mark as favorite will show up here" : "فایلها و پوشههای انتخاب شده به عنوان برگزیده توسط شما، در اینجا نمایش داده میشود" + "Files and folders you mark as favorite will show up here" : "فایلها و پوشههای انتخاب شده به عنوان برگزیده توسط شما، در اینجا نمایش داده میشود", + "Text file" : "فایل متنی" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/l10n/fi_FI.js b/apps/files/l10n/fi_FI.js index 79f3321577f..948ea7c8a71 100644 --- a/apps/files/l10n/fi_FI.js +++ b/apps/files/l10n/fi_FI.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Tallennustila ei ole käytettävissä", "Storage invalid" : "Virheellinen tallennustila", "Unknown error" : "Tuntematon virhe", - "Could not move %s - File with this name already exists" : "Kohteen %s siirto ei onnistunut - Tiedosto samalla nimellä on jo olemassa", - "Could not move %s" : "Kohteen %s siirto ei onnistunut", - "Permission denied" : "Ei käyttöoikeutta", - "The target folder has been moved or deleted." : "Kohdekansio on siirretty tai poistettu.", - "The name %s is already used in the folder %s. Please choose a different name." : "Nimi %s on jo käytössä kansiossa %s. Valitse toinen nimi.", - "Error when creating the file" : "Virhe tiedostoa luotaessa", - "Error when creating the folder" : "Virhe kansiota luotaessa", "Unable to set upload directory." : "Lähetyskansion asettaminen epäonnistui.", "Invalid Token" : "Virheellinen token", "No file was uploaded. Unknown error" : "Tiedostoa ei lähetetty. Tuntematon virhe", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Tilapäiskansio puuttuu", "Failed to write to disk" : "Levylle kirjoitus epäonnistui", "Not enough storage available" : "Tallennustilaa ei ole riittävästi käytettävissä", + "The target folder has been moved or deleted." : "Kohdekansio on siirretty tai poistettu.", "Upload failed. Could not find uploaded file" : "Lähetys epäonnistui. Lähettävää tiedostoa ei löydetty.", "Upload failed. Could not get file info." : "Lähetys epäonnistui. Lähettävää tiedostoa ei löydetty.", "Invalid directory." : "Virheellinen kansio.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Päivämäärän määrittäminen epäonnistui", "This operation is forbidden" : "Tämä toiminto on kielletty", "This directory is unavailable, please check the logs or contact the administrator" : "Hakemisto ei ole käytettävissä. Tarkista lokit tai ole yhteydessä ylläpitoon.", - "Error moving file." : "Virhe tiedostoa siirrettäessä.", - "Error moving file" : "Virhe tiedostoa siirrettäessä", - "Error" : "Virhe", - "{new_name} already exists" : "{new_name} on jo olemassa", - "Could not rename file" : "Tiedoston nimeäminen uudelleen epäonnistui", - "Could not create file" : "Tiedoston luominen epäonnistui", - "Could not create folder" : "Kansion luominen epäonnistui", - "Error deleting file." : "Virhe tiedostoa poistaessa.", "No entries in this folder match '{filter}'" : "Mikään tässä kansiossa ei vastaa suodatusta '{filter}'", "Name" : "Nimi", "Size" : "Koko", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n tavu","%n tavua"], "Favorited" : "Lisätty suosikkeihin", "Favorite" : "Suosikki", - "Text file" : "Tekstitiedosto", - "New text file.txt" : "Uusi tekstitiedosto.txt", "Folder" : "Kansio", "New folder" : "Uusi kansio", "{newname} already exists" : "{newname} on jo olemassa", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "Muuttanut %2$s", "Deleted by %2$s" : "Poistanut %2$s", "Restored by %2$s" : "Palauttanut %2$s", - "%s could not be renamed as it has been deleted" : "Kohdetta %s ei voitu nimetä uudelleen, koska se on poistettu", - "%s could not be renamed" : "kohteen %s nimeäminen uudelleen epäonnistui", "Upload (max. %s)" : "Lähetys (enintään %s)", "File handling" : "Tiedostonhallinta", "Maximum upload size" : "Lähetettävän tiedoston suurin sallittu koko", @@ -120,6 +102,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Tiedostoja tarkistetaan, odota hetki.", "Currently scanning" : "Tutkitaan parhaillaan", "No favorites" : "Ei suosikkeja", - "Files and folders you mark as favorite will show up here" : "Suosikeiksi merkitsemäsi tiedostot ja kansiot näkyvät täällä" + "Files and folders you mark as favorite will show up here" : "Suosikeiksi merkitsemäsi tiedostot ja kansiot näkyvät täällä", + "Text file" : "Tekstitiedosto", + "New text file.txt" : "Uusi tekstitiedosto.txt" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/fi_FI.json b/apps/files/l10n/fi_FI.json index e46327c83fa..940a95840b7 100644 --- a/apps/files/l10n/fi_FI.json +++ b/apps/files/l10n/fi_FI.json @@ -2,13 +2,6 @@ "Storage not available" : "Tallennustila ei ole käytettävissä", "Storage invalid" : "Virheellinen tallennustila", "Unknown error" : "Tuntematon virhe", - "Could not move %s - File with this name already exists" : "Kohteen %s siirto ei onnistunut - Tiedosto samalla nimellä on jo olemassa", - "Could not move %s" : "Kohteen %s siirto ei onnistunut", - "Permission denied" : "Ei käyttöoikeutta", - "The target folder has been moved or deleted." : "Kohdekansio on siirretty tai poistettu.", - "The name %s is already used in the folder %s. Please choose a different name." : "Nimi %s on jo käytössä kansiossa %s. Valitse toinen nimi.", - "Error when creating the file" : "Virhe tiedostoa luotaessa", - "Error when creating the folder" : "Virhe kansiota luotaessa", "Unable to set upload directory." : "Lähetyskansion asettaminen epäonnistui.", "Invalid Token" : "Virheellinen token", "No file was uploaded. Unknown error" : "Tiedostoa ei lähetetty. Tuntematon virhe", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Tilapäiskansio puuttuu", "Failed to write to disk" : "Levylle kirjoitus epäonnistui", "Not enough storage available" : "Tallennustilaa ei ole riittävästi käytettävissä", + "The target folder has been moved or deleted." : "Kohdekansio on siirretty tai poistettu.", "Upload failed. Could not find uploaded file" : "Lähetys epäonnistui. Lähettävää tiedostoa ei löydetty.", "Upload failed. Could not get file info." : "Lähetys epäonnistui. Lähettävää tiedostoa ei löydetty.", "Invalid directory." : "Virheellinen kansio.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Päivämäärän määrittäminen epäonnistui", "This operation is forbidden" : "Tämä toiminto on kielletty", "This directory is unavailable, please check the logs or contact the administrator" : "Hakemisto ei ole käytettävissä. Tarkista lokit tai ole yhteydessä ylläpitoon.", - "Error moving file." : "Virhe tiedostoa siirrettäessä.", - "Error moving file" : "Virhe tiedostoa siirrettäessä", - "Error" : "Virhe", - "{new_name} already exists" : "{new_name} on jo olemassa", - "Could not rename file" : "Tiedoston nimeäminen uudelleen epäonnistui", - "Could not create file" : "Tiedoston luominen epäonnistui", - "Could not create folder" : "Kansion luominen epäonnistui", - "Error deleting file." : "Virhe tiedostoa poistaessa.", "No entries in this folder match '{filter}'" : "Mikään tässä kansiossa ei vastaa suodatusta '{filter}'", "Name" : "Nimi", "Size" : "Koko", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n tavu","%n tavua"], "Favorited" : "Lisätty suosikkeihin", "Favorite" : "Suosikki", - "Text file" : "Tekstitiedosto", - "New text file.txt" : "Uusi tekstitiedosto.txt", "Folder" : "Kansio", "New folder" : "Uusi kansio", "{newname} already exists" : "{newname} on jo olemassa", @@ -97,8 +81,6 @@ "Changed by %2$s" : "Muuttanut %2$s", "Deleted by %2$s" : "Poistanut %2$s", "Restored by %2$s" : "Palauttanut %2$s", - "%s could not be renamed as it has been deleted" : "Kohdetta %s ei voitu nimetä uudelleen, koska se on poistettu", - "%s could not be renamed" : "kohteen %s nimeäminen uudelleen epäonnistui", "Upload (max. %s)" : "Lähetys (enintään %s)", "File handling" : "Tiedostonhallinta", "Maximum upload size" : "Lähetettävän tiedoston suurin sallittu koko", @@ -118,6 +100,8 @@ "Files are being scanned, please wait." : "Tiedostoja tarkistetaan, odota hetki.", "Currently scanning" : "Tutkitaan parhaillaan", "No favorites" : "Ei suosikkeja", - "Files and folders you mark as favorite will show up here" : "Suosikeiksi merkitsemäsi tiedostot ja kansiot näkyvät täällä" + "Files and folders you mark as favorite will show up here" : "Suosikeiksi merkitsemäsi tiedostot ja kansiot näkyvät täällä", + "Text file" : "Tekstitiedosto", + "New text file.txt" : "Uusi tekstitiedosto.txt" },"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 e068b3c45ba..a8a6e04a3a5 100644 --- a/apps/files/l10n/fr.js +++ b/apps/files/l10n/fr.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Support de stockage non disponible", "Storage invalid" : "Support de stockage non valable", "Unknown error" : "Erreur Inconnue ", - "Could not move %s - File with this name already exists" : "Impossible de déplacer %s - Un fichier portant ce nom existe déjà", - "Could not move %s" : "Impossible de déplacer %s", - "Permission denied" : "Permission refusée", - "The target folder has been moved or deleted." : "Le dossier cible a été déplacé ou supprimé.", - "The name %s is already used in the folder %s. Please choose a different name." : "Le nom %s est déjà utilisé dans le dossier %s. Merci de choisir un nom différent.", - "Error when creating the file" : "Erreur pendant la création du fichier", - "Error when creating the folder" : "Erreur pendant la création du dossier", "Unable to set upload directory." : "Impossible de définir le dossier de destination.", "Invalid Token" : "Jeton non valide", "No file was uploaded. Unknown error" : "Aucun fichier n'a été envoyé. Erreur inconnue", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Absence de dossier temporaire", "Failed to write to disk" : "Erreur d'écriture sur le disque", "Not enough storage available" : "Trop peu d'espace de stockage disponible", + "The target folder has been moved or deleted." : "Le dossier cible a été déplacé ou supprimé.", "Upload failed. Could not find uploaded file" : "L'envoi a échoué. Impossible de trouver le fichier envoyé.", "Upload failed. Could not get file info." : "L'envoi a échoué. Impossible d'obtenir les informations du fichier.", "Invalid directory." : "Dossier non valide.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Impossible de déterminer la date", "This operation is forbidden" : "Cette opération est interdite", "This directory is unavailable, please check the logs or contact the administrator" : "Ce répertoire n'est pas disponible. Consultez les logs ou contactez votre administrateur", - "Error moving file." : "Erreur lors du déplacement du fichier.", - "Error moving file" : "Erreur lors du déplacement du fichier", - "Error" : "Erreur", - "{new_name} already exists" : "{new_name} existe déjà", - "Could not rename file" : "Impossible de renommer le fichier", - "Could not create file" : "Impossible de créer le fichier", - "Could not create folder" : "Impossible de créer le dossier", - "Error deleting file." : "Erreur pendant la suppression du fichier.", "No entries in this folder match '{filter}'" : "Aucune entrée de ce dossier ne correspond à '{filter}'", "Name" : "Nom", "Size" : "Taille", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n octet","%n octets"], "Favorited" : "Marqué comme favori", "Favorite" : "Favoris", - "Text file" : "Fichier texte", - "New text file.txt" : "Nouveau fichier texte.txt", "Folder" : "Dossier", "New folder" : "Nouveau dossier", "{newname} already exists" : "{newname} existe déjà", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "Modifié par %2$s", "Deleted by %2$s" : "Supprimé par %2$s", "Restored by %2$s" : "Restauré par %2$s", - "%s could not be renamed as it has been deleted" : "%s ne peut être renommé car il a été supprimé ", - "%s could not be renamed" : "%s ne peut être renommé", "Upload (max. %s)" : "Envoi (max. %s)", "File handling" : "Gestion de fichiers", "Maximum upload size" : "Taille max. d'envoi", @@ -121,6 +103,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Les fichiers sont en cours d'analyse, veuillez patienter.", "Currently scanning" : "Analyse en cours", "No favorites" : "Aucun favori", - "Files and folders you mark as favorite will show up here" : "Les fichiers et dossiers ajoutés à vos favoris apparaîtront ici" + "Files and folders you mark as favorite will show up here" : "Les fichiers et dossiers ajoutés à vos favoris apparaîtront ici", + "Text file" : "Fichier texte", + "New text file.txt" : "Nouveau fichier texte.txt" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json index a297b3525d1..86c1fe44c09 100644 --- a/apps/files/l10n/fr.json +++ b/apps/files/l10n/fr.json @@ -2,13 +2,6 @@ "Storage not available" : "Support de stockage non disponible", "Storage invalid" : "Support de stockage non valable", "Unknown error" : "Erreur Inconnue ", - "Could not move %s - File with this name already exists" : "Impossible de déplacer %s - Un fichier portant ce nom existe déjà", - "Could not move %s" : "Impossible de déplacer %s", - "Permission denied" : "Permission refusée", - "The target folder has been moved or deleted." : "Le dossier cible a été déplacé ou supprimé.", - "The name %s is already used in the folder %s. Please choose a different name." : "Le nom %s est déjà utilisé dans le dossier %s. Merci de choisir un nom différent.", - "Error when creating the file" : "Erreur pendant la création du fichier", - "Error when creating the folder" : "Erreur pendant la création du dossier", "Unable to set upload directory." : "Impossible de définir le dossier de destination.", "Invalid Token" : "Jeton non valide", "No file was uploaded. Unknown error" : "Aucun fichier n'a été envoyé. Erreur inconnue", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Absence de dossier temporaire", "Failed to write to disk" : "Erreur d'écriture sur le disque", "Not enough storage available" : "Trop peu d'espace de stockage disponible", + "The target folder has been moved or deleted." : "Le dossier cible a été déplacé ou supprimé.", "Upload failed. Could not find uploaded file" : "L'envoi a échoué. Impossible de trouver le fichier envoyé.", "Upload failed. Could not get file info." : "L'envoi a échoué. Impossible d'obtenir les informations du fichier.", "Invalid directory." : "Dossier non valide.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Impossible de déterminer la date", "This operation is forbidden" : "Cette opération est interdite", "This directory is unavailable, please check the logs or contact the administrator" : "Ce répertoire n'est pas disponible. Consultez les logs ou contactez votre administrateur", - "Error moving file." : "Erreur lors du déplacement du fichier.", - "Error moving file" : "Erreur lors du déplacement du fichier", - "Error" : "Erreur", - "{new_name} already exists" : "{new_name} existe déjà", - "Could not rename file" : "Impossible de renommer le fichier", - "Could not create file" : "Impossible de créer le fichier", - "Could not create folder" : "Impossible de créer le dossier", - "Error deleting file." : "Erreur pendant la suppression du fichier.", "No entries in this folder match '{filter}'" : "Aucune entrée de ce dossier ne correspond à '{filter}'", "Name" : "Nom", "Size" : "Taille", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n octet","%n octets"], "Favorited" : "Marqué comme favori", "Favorite" : "Favoris", - "Text file" : "Fichier texte", - "New text file.txt" : "Nouveau fichier texte.txt", "Folder" : "Dossier", "New folder" : "Nouveau dossier", "{newname} already exists" : "{newname} existe déjà", @@ -97,8 +81,6 @@ "Changed by %2$s" : "Modifié par %2$s", "Deleted by %2$s" : "Supprimé par %2$s", "Restored by %2$s" : "Restauré par %2$s", - "%s could not be renamed as it has been deleted" : "%s ne peut être renommé car il a été supprimé ", - "%s could not be renamed" : "%s ne peut être renommé", "Upload (max. %s)" : "Envoi (max. %s)", "File handling" : "Gestion de fichiers", "Maximum upload size" : "Taille max. d'envoi", @@ -119,6 +101,8 @@ "Files are being scanned, please wait." : "Les fichiers sont en cours d'analyse, veuillez patienter.", "Currently scanning" : "Analyse en cours", "No favorites" : "Aucun favori", - "Files and folders you mark as favorite will show up here" : "Les fichiers et dossiers ajoutés à vos favoris apparaîtront ici" + "Files and folders you mark as favorite will show up here" : "Les fichiers et dossiers ajoutés à vos favoris apparaîtront ici", + "Text file" : "Fichier texte", + "New text file.txt" : "Nouveau fichier texte.txt" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/gl.js b/apps/files/l10n/gl.js index 2713148bbb9..3b71b1669e7 100644 --- a/apps/files/l10n/gl.js +++ b/apps/files/l10n/gl.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Almacenamento non dispoñíbel", "Storage invalid" : "Almacenamento incorrecto", "Unknown error" : "Produciuse un erro descoñecido", - "Could not move %s - File with this name already exists" : "Non foi posíbel mover %s; Xa existe un ficheiro con ese nome.", - "Could not move %s" : "Non foi posíbel mover %s", - "Permission denied" : "Permiso denegado", - "The target folder has been moved or deleted." : "O cartafol de destino foi movido ou eliminado.", - "The name %s is already used in the folder %s. Please choose a different name." : "Xa existe o nome %s no cartafol %s. Escolla outro nome.", - "Error when creating the file" : "Produciuse un erro ao crear o ficheiro", - "Error when creating the folder" : "Produciuse un erro ao crear o cartafol", "Unable to set upload directory." : "Non é posíbel configurar o directorio de envíos.", "Invalid Token" : "Marca incorrecta", "No file was uploaded. Unknown error" : "Non se enviou ningún ficheiro. Produciuse un erro descoñecido.", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Falta o cartafol temporal", "Failed to write to disk" : "Produciuse un erro ao escribir no disco", "Not enough storage available" : "Non hai espazo de almacenamento abondo", + "The target folder has been moved or deleted." : "O cartafol de destino foi movido ou eliminado.", "Upload failed. Could not find uploaded file" : "O envío fracasou. Non foi posíbel atopar o ficheiro enviado", "Upload failed. Could not get file info." : "O envío fracasou. Non foi posíbel obter información do ficheiro.", "Invalid directory." : "O directorio é incorrecto.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Non é posíbel determinar a data", "This operation is forbidden" : "Esta operación está prohibida", "This directory is unavailable, please check the logs or contact the administrator" : "Este directorio non está dispoñíbel, comprobe os rexistros ou póñase en contacto co administrador", - "Error moving file." : "Produciuse un erro ao mover o ficheiro.", - "Error moving file" : "Produciuse un erro ao mover o ficheiro", - "Error" : "Erro", - "{new_name} already exists" : "Xa existe un {new_name}", - "Could not rename file" : "Non foi posíbel renomear o ficheiro", - "Could not create file" : "Non foi posíbel crear o ficheiro", - "Could not create folder" : "Non foi posíbel crear o cartafol", - "Error deleting file." : "Produciuse un erro ao eliminar o ficheiro.", "No entries in this folder match '{filter}'" : "Non hai entradas neste cartafol coincidentes con «{filter}»", "Name" : "Nome", "Size" : "Tamaño", @@ -75,7 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Marcado como favorito", "Favorite" : "Favorito", - "Text file" : "Ficheiro de texto", "Folder" : "Cartafol", "New folder" : "Novo cartafol", "Upload" : "Enviar", @@ -94,8 +79,6 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s eliminado %1$s", "You restored %1$s" : "Vostede restaurou %1$s", "%2$s restored %1$s" : "%2$s restaurou %1$s", - "%s could not be renamed as it has been deleted" : "Non é posíbel renomear %s xa que foi eliminado", - "%s could not be renamed" : "%s non pode cambiar de nome", "Upload (max. %s)" : "Envío (máx. %s)", "File handling" : "Manexo de ficheiro", "Maximum upload size" : "Tamaño máximo do envío", @@ -114,6 +97,7 @@ OC.L10N.register( "Files are being scanned, please wait." : "Estanse analizando os ficheiros. Agarde.", "Currently scanning" : "Análise actual", "No favorites" : "Non hai favoritos", - "Files and folders you mark as favorite will show up here" : "Os ficheiros e cartafoles que marque como favoritos amosaranse aquí" + "Files and folders you mark as favorite will show up here" : "Os ficheiros e cartafoles que marque como favoritos amosaranse aquí", + "Text file" : "Ficheiro de texto" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/gl.json b/apps/files/l10n/gl.json index f04420d11a7..73e6e523e44 100644 --- a/apps/files/l10n/gl.json +++ b/apps/files/l10n/gl.json @@ -2,13 +2,6 @@ "Storage not available" : "Almacenamento non dispoñíbel", "Storage invalid" : "Almacenamento incorrecto", "Unknown error" : "Produciuse un erro descoñecido", - "Could not move %s - File with this name already exists" : "Non foi posíbel mover %s; Xa existe un ficheiro con ese nome.", - "Could not move %s" : "Non foi posíbel mover %s", - "Permission denied" : "Permiso denegado", - "The target folder has been moved or deleted." : "O cartafol de destino foi movido ou eliminado.", - "The name %s is already used in the folder %s. Please choose a different name." : "Xa existe o nome %s no cartafol %s. Escolla outro nome.", - "Error when creating the file" : "Produciuse un erro ao crear o ficheiro", - "Error when creating the folder" : "Produciuse un erro ao crear o cartafol", "Unable to set upload directory." : "Non é posíbel configurar o directorio de envíos.", "Invalid Token" : "Marca incorrecta", "No file was uploaded. Unknown error" : "Non se enviou ningún ficheiro. Produciuse un erro descoñecido.", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Falta o cartafol temporal", "Failed to write to disk" : "Produciuse un erro ao escribir no disco", "Not enough storage available" : "Non hai espazo de almacenamento abondo", + "The target folder has been moved or deleted." : "O cartafol de destino foi movido ou eliminado.", "Upload failed. Could not find uploaded file" : "O envío fracasou. Non foi posíbel atopar o ficheiro enviado", "Upload failed. Could not get file info." : "O envío fracasou. Non foi posíbel obter información do ficheiro.", "Invalid directory." : "O directorio é incorrecto.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Non é posíbel determinar a data", "This operation is forbidden" : "Esta operación está prohibida", "This directory is unavailable, please check the logs or contact the administrator" : "Este directorio non está dispoñíbel, comprobe os rexistros ou póñase en contacto co administrador", - "Error moving file." : "Produciuse un erro ao mover o ficheiro.", - "Error moving file" : "Produciuse un erro ao mover o ficheiro", - "Error" : "Erro", - "{new_name} already exists" : "Xa existe un {new_name}", - "Could not rename file" : "Non foi posíbel renomear o ficheiro", - "Could not create file" : "Non foi posíbel crear o ficheiro", - "Could not create folder" : "Non foi posíbel crear o cartafol", - "Error deleting file." : "Produciuse un erro ao eliminar o ficheiro.", "No entries in this folder match '{filter}'" : "Non hai entradas neste cartafol coincidentes con «{filter}»", "Name" : "Nome", "Size" : "Tamaño", @@ -73,7 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Marcado como favorito", "Favorite" : "Favorito", - "Text file" : "Ficheiro de texto", "Folder" : "Cartafol", "New folder" : "Novo cartafol", "Upload" : "Enviar", @@ -92,8 +77,6 @@ "%2$s deleted %1$s" : "%2$s eliminado %1$s", "You restored %1$s" : "Vostede restaurou %1$s", "%2$s restored %1$s" : "%2$s restaurou %1$s", - "%s could not be renamed as it has been deleted" : "Non é posíbel renomear %s xa que foi eliminado", - "%s could not be renamed" : "%s non pode cambiar de nome", "Upload (max. %s)" : "Envío (máx. %s)", "File handling" : "Manexo de ficheiro", "Maximum upload size" : "Tamaño máximo do envío", @@ -112,6 +95,7 @@ "Files are being scanned, please wait." : "Estanse analizando os ficheiros. Agarde.", "Currently scanning" : "Análise actual", "No favorites" : "Non hai favoritos", - "Files and folders you mark as favorite will show up here" : "Os ficheiros e cartafoles que marque como favoritos amosaranse aquí" + "Files and folders you mark as favorite will show up here" : "Os ficheiros e cartafoles que marque como favoritos amosaranse aquí", + "Text file" : "Ficheiro de texto" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/he.js b/apps/files/l10n/he.js index 36fba4bd7f0..389fe8e4d2c 100644 --- a/apps/files/l10n/he.js +++ b/apps/files/l10n/he.js @@ -2,8 +2,6 @@ OC.L10N.register( "files", { "Unknown error" : "שגיאה בלתי ידועה", - "Could not move %s - File with this name already exists" : "לא ניתן להעביר את %s - קובץ בשם הזה כבר קיים", - "Could not move %s" : "לא ניתן להעביר את %s", "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: " : "הקבצים שנשלחו חורגים מהגודל שצוין בהגדרה upload_max_filesize שבקובץ php.ini:", @@ -29,8 +27,6 @@ OC.L10N.register( "Details" : "פרטים", "Select" : "בחר", "Pending" : "ממתין", - "Error" : "שגיאה", - "{new_name} already exists" : "{new_name} כבר קיים", "Name" : "שם", "Size" : "גודל", "Modified" : "זמן שינוי", @@ -38,7 +34,6 @@ OC.L10N.register( "File name cannot be empty." : "שם קובץ אינו יכול להיות ריק", "Your storage is almost full ({usedSpacePercent}%)" : "שטח האחסון שלך כמעט מלא ({usedSpacePercent}%)", "Favorite" : "מועדף", - "Text file" : "קובץ טקסט", "Folder" : "תיקייה", "New folder" : "תיקייה חדשה", "Upload" : "העלאה", @@ -62,6 +57,7 @@ OC.L10N.register( "Cancel upload" : "ביטול ההעלאה", "Upload too large" : "העלאה גדולה מידי", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "הקבצים שניסית להעלות חרגו מהגודל המקסימלי להעלאת קבצים על שרת זה.", - "Files are being scanned, please wait." : "הקבצים נסרקים, נא להמתין." + "Files are being scanned, please wait." : "הקבצים נסרקים, נא להמתין.", + "Text file" : "קובץ טקסט" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/he.json b/apps/files/l10n/he.json index 61fe8ca29b7..c4866aea3c0 100644 --- a/apps/files/l10n/he.json +++ b/apps/files/l10n/he.json @@ -1,7 +1,5 @@ { "translations": { "Unknown error" : "שגיאה בלתי ידועה", - "Could not move %s - File with this name already exists" : "לא ניתן להעביר את %s - קובץ בשם הזה כבר קיים", - "Could not move %s" : "לא ניתן להעביר את %s", "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: " : "הקבצים שנשלחו חורגים מהגודל שצוין בהגדרה upload_max_filesize שבקובץ php.ini:", @@ -27,8 +25,6 @@ "Details" : "פרטים", "Select" : "בחר", "Pending" : "ממתין", - "Error" : "שגיאה", - "{new_name} already exists" : "{new_name} כבר קיים", "Name" : "שם", "Size" : "גודל", "Modified" : "זמן שינוי", @@ -36,7 +32,6 @@ "File name cannot be empty." : "שם קובץ אינו יכול להיות ריק", "Your storage is almost full ({usedSpacePercent}%)" : "שטח האחסון שלך כמעט מלא ({usedSpacePercent}%)", "Favorite" : "מועדף", - "Text file" : "קובץ טקסט", "Folder" : "תיקייה", "New folder" : "תיקייה חדשה", "Upload" : "העלאה", @@ -60,6 +55,7 @@ "Cancel upload" : "ביטול ההעלאה", "Upload too large" : "העלאה גדולה מידי", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "הקבצים שניסית להעלות חרגו מהגודל המקסימלי להעלאת קבצים על שרת זה.", - "Files are being scanned, please wait." : "הקבצים נסרקים, נא להמתין." + "Files are being scanned, please wait." : "הקבצים נסרקים, נא להמתין.", + "Text file" : "קובץ טקסט" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/hi.js b/apps/files/l10n/hi.js index 3b6da840e0d..2de5b85e169 100644 --- a/apps/files/l10n/hi.js +++ b/apps/files/l10n/hi.js @@ -4,7 +4,6 @@ OC.L10N.register( "Files" : "फाइलें ", "Close" : "बंद करें ", "Details" : "विवरण ", - "Error" : "त्रुटि", "New folder" : "नया फ़ोल्डर", "Upload" : "अपलोड ", "Save" : "सहेजें", diff --git a/apps/files/l10n/hi.json b/apps/files/l10n/hi.json index a5a2ba34b01..3bccaa2d9f0 100644 --- a/apps/files/l10n/hi.json +++ b/apps/files/l10n/hi.json @@ -2,7 +2,6 @@ "Files" : "फाइलें ", "Close" : "बंद करें ", "Details" : "विवरण ", - "Error" : "त्रुटि", "New folder" : "नया फ़ोल्डर", "Upload" : "अपलोड ", "Save" : "सहेजें", diff --git a/apps/files/l10n/hr.js b/apps/files/l10n/hr.js index a15e52dcd49..6f27879f125 100644 --- a/apps/files/l10n/hr.js +++ b/apps/files/l10n/hr.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Pohrana nedostupna", "Storage invalid" : "Pohrana neispravna", "Unknown error" : "Nepoznata pogreška", - "Could not move %s - File with this name already exists" : "Nemoguće premjestiti %s - Datoteka takvog naziva već postoji", - "Could not move %s" : "Nemoguće premjestiti %s", - "Permission denied" : "Nemate dozvolu", - "The target folder has been moved or deleted." : "Ciljna mapa je premještena ili izbrisana.", - "The name %s is already used in the folder %s. Please choose a different name." : "Naziv %s je već iskorišten u mapi %s. Molimo odaberite drukčiji naziv.", - "Error when creating the file" : "Pogreška pri kreiranju datoteke", - "Error when creating the folder" : "Pogreška pri kreiranju mape", "Unable to set upload directory." : "Postavka učitavanja direktorija nije moguća", "Invalid Token" : "Neispravan token", "No file was uploaded. Unknown error" : "Nijedna datoteka nije učitana. Pogreška nepoznata.", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Nedostaje privremena mapa", "Failed to write to disk" : "Zapisivanje na disk nije uspjelo", "Not enough storage available" : "Prostor za pohranu nedostatan", + "The target folder has been moved or deleted." : "Ciljna mapa je premještena ili izbrisana.", "Upload failed. Could not find uploaded file" : "Učitavanje neuspješno. Nije emoguće pronaći učitanu dataoteku", "Upload failed. Could not get file info." : "Učitavanje neuspješno. Nije moguće dohvatiti informacije o datoteci", "Invalid directory." : "Neispravan direktorij", @@ -44,14 +38,6 @@ OC.L10N.register( "Select" : "Selektiraj", "Pending" : "Na čekanju", "Unable to determine date" : "Nemogucnost odredjivanja datuma", - "Error moving file." : "Pogrešno premještanje datoteke", - "Error moving file" : "Pogrešno premještanje datoteke", - "Error" : "Pogreška", - "{new_name} already exists" : "{new_name} već postoji", - "Could not rename file" : "Datoteku nije moguće preimenovati", - "Could not create file" : "Datoteku nije moguće kreirati", - "Could not create folder" : "Mapu nije moguće kreirati", - "Error deleting file." : "Pogrešno brisanje datoteke", "No entries in this folder match '{filter}'" : "Nema zapisa u ovom folderu match '{filter}'", "Name" : "Naziv", "Size" : "Veličina", @@ -68,7 +54,6 @@ OC.L10N.register( "Your storage is almost full ({usedSpacePercent}%)" : "Vaš prostor za pohranu je skoro pun ({usedSpacePercent}%)", "Favorited" : "Favoritovan", "Favorite" : "Favorit", - "Text file" : "Tekstualna datoteka", "Folder" : "Mapa", "New folder" : "Nova mapa", "Upload" : "Učitavanje", @@ -85,8 +70,6 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s je izbrisao %1$s", "You restored %1$s" : "Vraćeno %1$s", "%2$s restored %1$s" : "%2$s vraćeno %1$s", - "%s could not be renamed as it has been deleted" : "%s nije moguće preimenovati jer je izbrisan", - "%s could not be renamed" : "%s nije moguće preimenovati", "Upload (max. %s)" : "Prijenos (max. %s)", "File handling" : "Obrada datoteke", "Maximum upload size" : "Maksimalna veličina učitanog sadržaja", @@ -104,6 +87,7 @@ OC.L10N.register( "Files are being scanned, please wait." : "Datoteke se provjeravaju, molimo pričekajte.", "Currently scanning" : "Provjera u tijeku", "No favorites" : "Nema favorita", - "Files and folders you mark as favorite will show up here" : "Fajlovi i folderi koje oznacite kao favorite ce se prikazati ovdje" + "Files and folders you mark as favorite will show up here" : "Fajlovi i folderi koje oznacite kao favorite ce se prikazati ovdje", + "Text file" : "Tekstualna datoteka" }, "nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"); diff --git a/apps/files/l10n/hr.json b/apps/files/l10n/hr.json index e0463579f4a..9377b55ef6f 100644 --- a/apps/files/l10n/hr.json +++ b/apps/files/l10n/hr.json @@ -2,13 +2,6 @@ "Storage not available" : "Pohrana nedostupna", "Storage invalid" : "Pohrana neispravna", "Unknown error" : "Nepoznata pogreška", - "Could not move %s - File with this name already exists" : "Nemoguće premjestiti %s - Datoteka takvog naziva već postoji", - "Could not move %s" : "Nemoguće premjestiti %s", - "Permission denied" : "Nemate dozvolu", - "The target folder has been moved or deleted." : "Ciljna mapa je premještena ili izbrisana.", - "The name %s is already used in the folder %s. Please choose a different name." : "Naziv %s je već iskorišten u mapi %s. Molimo odaberite drukčiji naziv.", - "Error when creating the file" : "Pogreška pri kreiranju datoteke", - "Error when creating the folder" : "Pogreška pri kreiranju mape", "Unable to set upload directory." : "Postavka učitavanja direktorija nije moguća", "Invalid Token" : "Neispravan token", "No file was uploaded. Unknown error" : "Nijedna datoteka nije učitana. Pogreška nepoznata.", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Nedostaje privremena mapa", "Failed to write to disk" : "Zapisivanje na disk nije uspjelo", "Not enough storage available" : "Prostor za pohranu nedostatan", + "The target folder has been moved or deleted." : "Ciljna mapa je premještena ili izbrisana.", "Upload failed. Could not find uploaded file" : "Učitavanje neuspješno. Nije emoguće pronaći učitanu dataoteku", "Upload failed. Could not get file info." : "Učitavanje neuspješno. Nije moguće dohvatiti informacije o datoteci", "Invalid directory." : "Neispravan direktorij", @@ -42,14 +36,6 @@ "Select" : "Selektiraj", "Pending" : "Na čekanju", "Unable to determine date" : "Nemogucnost odredjivanja datuma", - "Error moving file." : "Pogrešno premještanje datoteke", - "Error moving file" : "Pogrešno premještanje datoteke", - "Error" : "Pogreška", - "{new_name} already exists" : "{new_name} već postoji", - "Could not rename file" : "Datoteku nije moguće preimenovati", - "Could not create file" : "Datoteku nije moguće kreirati", - "Could not create folder" : "Mapu nije moguće kreirati", - "Error deleting file." : "Pogrešno brisanje datoteke", "No entries in this folder match '{filter}'" : "Nema zapisa u ovom folderu match '{filter}'", "Name" : "Naziv", "Size" : "Veličina", @@ -66,7 +52,6 @@ "Your storage is almost full ({usedSpacePercent}%)" : "Vaš prostor za pohranu je skoro pun ({usedSpacePercent}%)", "Favorited" : "Favoritovan", "Favorite" : "Favorit", - "Text file" : "Tekstualna datoteka", "Folder" : "Mapa", "New folder" : "Nova mapa", "Upload" : "Učitavanje", @@ -83,8 +68,6 @@ "%2$s deleted %1$s" : "%2$s je izbrisao %1$s", "You restored %1$s" : "Vraćeno %1$s", "%2$s restored %1$s" : "%2$s vraćeno %1$s", - "%s could not be renamed as it has been deleted" : "%s nije moguće preimenovati jer je izbrisan", - "%s could not be renamed" : "%s nije moguće preimenovati", "Upload (max. %s)" : "Prijenos (max. %s)", "File handling" : "Obrada datoteke", "Maximum upload size" : "Maksimalna veličina učitanog sadržaja", @@ -102,6 +85,7 @@ "Files are being scanned, please wait." : "Datoteke se provjeravaju, molimo pričekajte.", "Currently scanning" : "Provjera u tijeku", "No favorites" : "Nema favorita", - "Files and folders you mark as favorite will show up here" : "Fajlovi i folderi koje oznacite kao favorite ce se prikazati ovdje" + "Files and folders you mark as favorite will show up here" : "Fajlovi i folderi koje oznacite kao favorite ce se prikazati ovdje", + "Text file" : "Tekstualna datoteka" },"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/hu_HU.js b/apps/files/l10n/hu_HU.js index 3c12e4bd486..b6ed823de68 100644 --- a/apps/files/l10n/hu_HU.js +++ b/apps/files/l10n/hu_HU.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "A tároló elérhetetlen.", "Storage invalid" : "A tároló érvénytelen", "Unknown error" : "Ismeretlen hiba", - "Could not move %s - File with this name already exists" : "%s áthelyezése nem sikerült - már létezik másik fájl ezzel a névvel", - "Could not move %s" : "Nem sikerült %s áthelyezése", - "Permission denied" : "Engedély megtagadva ", - "The target folder has been moved or deleted." : "A célmappa törlődött, vagy áthelyezésre került.", - "The name %s is already used in the folder %s. Please choose a different name." : "A %s név már létezik a %s mappában. Kérem válasszon másik nevet!", - "Error when creating the file" : "Hiba történt az állomány létrehozásakor", - "Error when creating the folder" : "Hiba történt a mappa létrehozásakor", "Unable to set upload directory." : "Nem található a mappa, ahova feltölteni szeretne.", "Invalid Token" : "Hibás token", "No file was uploaded. Unknown error" : "Nem történt feltöltés. Ismeretlen hiba", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Hiányzik egy ideiglenes mappa", "Failed to write to disk" : "Nem sikerült a lemezre történő írás", "Not enough storage available" : "Nincs elég szabad hely.", + "The target folder has been moved or deleted." : "A célmappa törlődött, vagy áthelyezésre került.", "Upload failed. Could not find uploaded file" : "A feltöltés nem sikerült. Nem található a feltöltendő állomány.", "Upload failed. Could not get file info." : "A feltöltés nem sikerült. Az állományt leíró információk nem érhetők el.", "Invalid directory." : "Érvénytelen mappa.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Nem lehet meghatározni a dátumot", "This operation is forbidden" : "Tiltott művelet", "This directory is unavailable, please check the logs or contact the administrator" : "Ez a könyvtár nem elérhető, kérem nézze meg a naplófájlokat vagy keresse az adminisztrátort", - "Error moving file." : "Hiba történt a fájl áthelyezése közben.", - "Error moving file" : "Az állomány áthelyezése nem sikerült.", - "Error" : "Hiba", - "{new_name} already exists" : "{new_name} már létezik", - "Could not rename file" : "Az állomány nem nevezhető át", - "Could not create file" : "Az állomány nem hozható létre", - "Could not create folder" : "A mappa nem hozható létre", - "Error deleting file." : "Hiba a file törlése közben.", "No entries in this folder match '{filter}'" : "Nincsenek egyező bejegyzések ebben a könyvtárban '{filter}'", "Name" : "Név", "Size" : "Méret", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n bájt","%n bájt"], "Favorited" : "Kedvenc", "Favorite" : "Kedvenc", - "Text file" : "Szövegfájl", - "New text file.txt" : "Új szöveges fájl.txt", "Folder" : "Mappa", "New folder" : "Új mappa", "{newname} already exists" : "{newname} már létezik", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "Megváltoztatta: %2$s", "Deleted by %2$s" : "Törölte: %2$s", "Restored by %2$s" : "Visszaállította: %2$s", - "%s could not be renamed as it has been deleted" : "%s nem lehet átnevezni, mivel törölve lett", - "%s could not be renamed" : "%s átnevezése nem sikerült", "Upload (max. %s)" : "Feltöltés (max.: %s)", "File handling" : "Fájlkezelés", "Maximum upload size" : "Maximális feltölthető fájlméret", @@ -121,6 +103,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "A fájllista ellenőrzése zajlik, kis türelmet!", "Currently scanning" : "Mappaellenőrzés: ", "No favorites" : "Nincsenek kedvencek", - "Files and folders you mark as favorite will show up here" : "A kedvencnek jelölt fájlokat és mappákat itt találod meg" + "Files and folders you mark as favorite will show up here" : "A kedvencnek jelölt fájlokat és mappákat itt találod meg", + "Text file" : "Szövegfájl", + "New text file.txt" : "Új szöveges fájl.txt" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/hu_HU.json b/apps/files/l10n/hu_HU.json index b1bde8b7d51..8b8fbbd9b57 100644 --- a/apps/files/l10n/hu_HU.json +++ b/apps/files/l10n/hu_HU.json @@ -2,13 +2,6 @@ "Storage not available" : "A tároló elérhetetlen.", "Storage invalid" : "A tároló érvénytelen", "Unknown error" : "Ismeretlen hiba", - "Could not move %s - File with this name already exists" : "%s áthelyezése nem sikerült - már létezik másik fájl ezzel a névvel", - "Could not move %s" : "Nem sikerült %s áthelyezése", - "Permission denied" : "Engedély megtagadva ", - "The target folder has been moved or deleted." : "A célmappa törlődött, vagy áthelyezésre került.", - "The name %s is already used in the folder %s. Please choose a different name." : "A %s név már létezik a %s mappában. Kérem válasszon másik nevet!", - "Error when creating the file" : "Hiba történt az állomány létrehozásakor", - "Error when creating the folder" : "Hiba történt a mappa létrehozásakor", "Unable to set upload directory." : "Nem található a mappa, ahova feltölteni szeretne.", "Invalid Token" : "Hibás token", "No file was uploaded. Unknown error" : "Nem történt feltöltés. Ismeretlen hiba", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Hiányzik egy ideiglenes mappa", "Failed to write to disk" : "Nem sikerült a lemezre történő írás", "Not enough storage available" : "Nincs elég szabad hely.", + "The target folder has been moved or deleted." : "A célmappa törlődött, vagy áthelyezésre került.", "Upload failed. Could not find uploaded file" : "A feltöltés nem sikerült. Nem található a feltöltendő állomány.", "Upload failed. Could not get file info." : "A feltöltés nem sikerült. Az állományt leíró információk nem érhetők el.", "Invalid directory." : "Érvénytelen mappa.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Nem lehet meghatározni a dátumot", "This operation is forbidden" : "Tiltott művelet", "This directory is unavailable, please check the logs or contact the administrator" : "Ez a könyvtár nem elérhető, kérem nézze meg a naplófájlokat vagy keresse az adminisztrátort", - "Error moving file." : "Hiba történt a fájl áthelyezése közben.", - "Error moving file" : "Az állomány áthelyezése nem sikerült.", - "Error" : "Hiba", - "{new_name} already exists" : "{new_name} már létezik", - "Could not rename file" : "Az állomány nem nevezhető át", - "Could not create file" : "Az állomány nem hozható létre", - "Could not create folder" : "A mappa nem hozható létre", - "Error deleting file." : "Hiba a file törlése közben.", "No entries in this folder match '{filter}'" : "Nincsenek egyező bejegyzések ebben a könyvtárban '{filter}'", "Name" : "Név", "Size" : "Méret", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n bájt","%n bájt"], "Favorited" : "Kedvenc", "Favorite" : "Kedvenc", - "Text file" : "Szövegfájl", - "New text file.txt" : "Új szöveges fájl.txt", "Folder" : "Mappa", "New folder" : "Új mappa", "{newname} already exists" : "{newname} már létezik", @@ -97,8 +81,6 @@ "Changed by %2$s" : "Megváltoztatta: %2$s", "Deleted by %2$s" : "Törölte: %2$s", "Restored by %2$s" : "Visszaállította: %2$s", - "%s could not be renamed as it has been deleted" : "%s nem lehet átnevezni, mivel törölve lett", - "%s could not be renamed" : "%s átnevezése nem sikerült", "Upload (max. %s)" : "Feltöltés (max.: %s)", "File handling" : "Fájlkezelés", "Maximum upload size" : "Maximális feltölthető fájlméret", @@ -119,6 +101,8 @@ "Files are being scanned, please wait." : "A fájllista ellenőrzése zajlik, kis türelmet!", "Currently scanning" : "Mappaellenőrzés: ", "No favorites" : "Nincsenek kedvencek", - "Files and folders you mark as favorite will show up here" : "A kedvencnek jelölt fájlokat és mappákat itt találod meg" + "Files and folders you mark as favorite will show up here" : "A kedvencnek jelölt fájlokat és mappákat itt találod meg", + "Text file" : "Szövegfájl", + "New text file.txt" : "Új szöveges fájl.txt" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/hy.js b/apps/files/l10n/hy.js index ae06fed4cd6..ecf99c1077f 100644 --- a/apps/files/l10n/hy.js +++ b/apps/files/l10n/hy.js @@ -8,10 +8,6 @@ OC.L10N.register( "Rename" : "Վերանվանել", "Delete" : "Ջնջել", "Select" : "Նշել", - "Error" : "Սխալ", - "Could not rename file" : "Չկարողացա վերանվանել ֆայլը", - "Could not create file" : "Չկարողացա ստեղծել ֆայլը", - "Could not create folder" : "Չկարողացա ստեղծել պանակը", "Name" : "Անուն", "Size" : "Չափս", "Modified" : "Փոփոխված", diff --git a/apps/files/l10n/hy.json b/apps/files/l10n/hy.json index 4874c47b3a4..8b23697b4a2 100644 --- a/apps/files/l10n/hy.json +++ b/apps/files/l10n/hy.json @@ -6,10 +6,6 @@ "Rename" : "Վերանվանել", "Delete" : "Ջնջել", "Select" : "Նշել", - "Error" : "Սխալ", - "Could not rename file" : "Չկարողացա վերանվանել ֆայլը", - "Could not create file" : "Չկարողացա ստեղծել ֆայլը", - "Could not create folder" : "Չկարողացա ստեղծել պանակը", "Name" : "Անուն", "Size" : "Չափս", "Modified" : "Փոփոխված", diff --git a/apps/files/l10n/ia.js b/apps/files/l10n/ia.js index f1db4466ea1..a1548e6b732 100644 --- a/apps/files/l10n/ia.js +++ b/apps/files/l10n/ia.js @@ -10,13 +10,11 @@ OC.L10N.register( "Close" : "Clauder", "Download" : "Discargar", "Delete" : "Deler", - "Error" : "Error", "Name" : "Nomine", "Size" : "Dimension", "Modified" : "Modificate", "New" : "Nove", "File name cannot be empty." : "Le nomine de file non pote esser vacue.", - "Text file" : "File de texto", "Folder" : "Dossier", "New folder" : "Nove dossier", "Upload" : "Incargar", @@ -37,6 +35,7 @@ OC.L10N.register( "Maximum upload size" : "Dimension maxime de incargamento", "Save" : "Salveguardar", "Settings" : "Configurationes", - "Upload too large" : "Incargamento troppo longe" + "Upload too large" : "Incargamento troppo longe", + "Text file" : "File de texto" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/ia.json b/apps/files/l10n/ia.json index e7990404b98..bbc3f4bc02a 100644 --- a/apps/files/l10n/ia.json +++ b/apps/files/l10n/ia.json @@ -8,13 +8,11 @@ "Close" : "Clauder", "Download" : "Discargar", "Delete" : "Deler", - "Error" : "Error", "Name" : "Nomine", "Size" : "Dimension", "Modified" : "Modificate", "New" : "Nove", "File name cannot be empty." : "Le nomine de file non pote esser vacue.", - "Text file" : "File de texto", "Folder" : "Dossier", "New folder" : "Nove dossier", "Upload" : "Incargar", @@ -35,6 +33,7 @@ "Maximum upload size" : "Dimension maxime de incargamento", "Save" : "Salveguardar", "Settings" : "Configurationes", - "Upload too large" : "Incargamento troppo longe" + "Upload too large" : "Incargamento troppo longe", + "Text file" : "File de texto" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/id.js b/apps/files/l10n/id.js index f1ad4fd1f69..93ec698cfa4 100644 --- a/apps/files/l10n/id.js +++ b/apps/files/l10n/id.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Penyimpanan tidak tersedia", "Storage invalid" : "Penyimpanan tidak sah", "Unknown error" : "Kesalahan tidak diketahui", - "Could not move %s - File with this name already exists" : "Tidak dapat memindahkan %s - Berkas dengan nama ini sudah ada", - "Could not move %s" : "Tidak dapat memindahkan %s", - "Permission denied" : "Perizinan ditolak", - "The target folder has been moved or deleted." : "Folder tujuan telah dipindahkan atau dihapus.", - "The name %s is already used in the folder %s. Please choose a different name." : "Nama %s sudah digunakan dalam folder %s. Silakan pilih nama yang berbeda.", - "Error when creating the file" : "Kesalahan saat membuat berkas", - "Error when creating the folder" : "Kesalahan saat membuat folder", "Unable to set upload directory." : "Tidak dapat mengatur folder unggah", "Invalid Token" : "Token tidak sah", "No file was uploaded. Unknown error" : "Tidak ada berkas yang diunggah. Kesalahan tidak dikenal.", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Folder sementara tidak ada", "Failed to write to disk" : "Gagal menulis ke disk", "Not enough storage available" : "Ruang penyimpanan tidak mencukupi", + "The target folder has been moved or deleted." : "Folder tujuan telah dipindahkan atau dihapus.", "Upload failed. Could not find uploaded file" : "Unggah gagal. Tidak menemukan berkas yang akan diunggah", "Upload failed. Could not get file info." : "Unggah gagal. Tidak mendapatkan informasi berkas.", "Invalid directory." : "Direktori tidak valid.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Tidak dapat menentukan tanggal", "This operation is forbidden" : "Operasi ini dilarang", "This directory is unavailable, please check the logs or contact the administrator" : "Direktori ini tidak tersedia, silakan periksa log atau hubungi kontak", - "Error moving file." : "Kesalahan saat memindahkan berkas.", - "Error moving file" : "Kesalahan saat memindahkan berkas", - "Error" : "Kesalahan ", - "{new_name} already exists" : "{new_name} sudah ada", - "Could not rename file" : "Tidak dapat mengubah nama berkas", - "Could not create file" : "Tidak dapat membuat berkas", - "Could not create folder" : "Tidak dapat membuat folder", - "Error deleting file." : "Kesalahan saat menghapus berkas.", "No entries in this folder match '{filter}'" : "Tidak ada entri di folder ini yang cocok dengan '{filter}'", "Name" : "Nama", "Size" : "Ukuran", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n byte"], "Favorited" : "Difavoritkan", "Favorite" : "Favorit", - "Text file" : "Berkas teks", - "New text file.txt" : "Teks baru file.txt", "Folder" : "Folder", "New folder" : "Map baru", "{newname} already exists" : "{newname} sudah ada", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "Diubah oleh %2$s", "Deleted by %2$s" : "Dihapus oleh %2$s", "Restored by %2$s" : "Dipulihkan oleh %2$s", - "%s could not be renamed as it has been deleted" : "%s tidak dapat diubah namanya kerena telah dihapus", - "%s could not be renamed" : "%s tidak dapat diubah nama", "Upload (max. %s)" : "Unggah (maks. %s)", "File handling" : "Penanganan berkas", "Maximum upload size" : "Ukuran pengunggahan maksimum", @@ -119,6 +101,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Berkas sedang dipindai, silakan tunggu.", "Currently scanning" : "Pemindaian terbaru", "No favorites" : "Tidak ada favorit", - "Files and folders you mark as favorite will show up here" : "Berkas dan folder yang Anda tandai sebagai favorit akan ditampilkan disini." + "Files and folders you mark as favorite will show up here" : "Berkas dan folder yang Anda tandai sebagai favorit akan ditampilkan disini.", + "Text file" : "Berkas teks", + "New text file.txt" : "Teks baru file.txt" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/id.json b/apps/files/l10n/id.json index 0d357165370..dca3e7bd163 100644 --- a/apps/files/l10n/id.json +++ b/apps/files/l10n/id.json @@ -2,13 +2,6 @@ "Storage not available" : "Penyimpanan tidak tersedia", "Storage invalid" : "Penyimpanan tidak sah", "Unknown error" : "Kesalahan tidak diketahui", - "Could not move %s - File with this name already exists" : "Tidak dapat memindahkan %s - Berkas dengan nama ini sudah ada", - "Could not move %s" : "Tidak dapat memindahkan %s", - "Permission denied" : "Perizinan ditolak", - "The target folder has been moved or deleted." : "Folder tujuan telah dipindahkan atau dihapus.", - "The name %s is already used in the folder %s. Please choose a different name." : "Nama %s sudah digunakan dalam folder %s. Silakan pilih nama yang berbeda.", - "Error when creating the file" : "Kesalahan saat membuat berkas", - "Error when creating the folder" : "Kesalahan saat membuat folder", "Unable to set upload directory." : "Tidak dapat mengatur folder unggah", "Invalid Token" : "Token tidak sah", "No file was uploaded. Unknown error" : "Tidak ada berkas yang diunggah. Kesalahan tidak dikenal.", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Folder sementara tidak ada", "Failed to write to disk" : "Gagal menulis ke disk", "Not enough storage available" : "Ruang penyimpanan tidak mencukupi", + "The target folder has been moved or deleted." : "Folder tujuan telah dipindahkan atau dihapus.", "Upload failed. Could not find uploaded file" : "Unggah gagal. Tidak menemukan berkas yang akan diunggah", "Upload failed. Could not get file info." : "Unggah gagal. Tidak mendapatkan informasi berkas.", "Invalid directory." : "Direktori tidak valid.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Tidak dapat menentukan tanggal", "This operation is forbidden" : "Operasi ini dilarang", "This directory is unavailable, please check the logs or contact the administrator" : "Direktori ini tidak tersedia, silakan periksa log atau hubungi kontak", - "Error moving file." : "Kesalahan saat memindahkan berkas.", - "Error moving file" : "Kesalahan saat memindahkan berkas", - "Error" : "Kesalahan ", - "{new_name} already exists" : "{new_name} sudah ada", - "Could not rename file" : "Tidak dapat mengubah nama berkas", - "Could not create file" : "Tidak dapat membuat berkas", - "Could not create folder" : "Tidak dapat membuat folder", - "Error deleting file." : "Kesalahan saat menghapus berkas.", "No entries in this folder match '{filter}'" : "Tidak ada entri di folder ini yang cocok dengan '{filter}'", "Name" : "Nama", "Size" : "Ukuran", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n byte"], "Favorited" : "Difavoritkan", "Favorite" : "Favorit", - "Text file" : "Berkas teks", - "New text file.txt" : "Teks baru file.txt", "Folder" : "Folder", "New folder" : "Map baru", "{newname} already exists" : "{newname} sudah ada", @@ -97,8 +81,6 @@ "Changed by %2$s" : "Diubah oleh %2$s", "Deleted by %2$s" : "Dihapus oleh %2$s", "Restored by %2$s" : "Dipulihkan oleh %2$s", - "%s could not be renamed as it has been deleted" : "%s tidak dapat diubah namanya kerena telah dihapus", - "%s could not be renamed" : "%s tidak dapat diubah nama", "Upload (max. %s)" : "Unggah (maks. %s)", "File handling" : "Penanganan berkas", "Maximum upload size" : "Ukuran pengunggahan maksimum", @@ -117,6 +99,8 @@ "Files are being scanned, please wait." : "Berkas sedang dipindai, silakan tunggu.", "Currently scanning" : "Pemindaian terbaru", "No favorites" : "Tidak ada favorit", - "Files and folders you mark as favorite will show up here" : "Berkas dan folder yang Anda tandai sebagai favorit akan ditampilkan disini." + "Files and folders you mark as favorite will show up here" : "Berkas dan folder yang Anda tandai sebagai favorit akan ditampilkan disini.", + "Text file" : "Berkas teks", + "New text file.txt" : "Teks baru file.txt" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/l10n/is.js b/apps/files/l10n/is.js index f56579fa9c0..967e205145f 100644 --- a/apps/files/l10n/is.js +++ b/apps/files/l10n/is.js @@ -1,8 +1,6 @@ OC.L10N.register( "files", { - "Could not move %s - File with this name already exists" : "Gat ekki fært %s - Skrá með þessu nafni er þegar til", - "Could not move %s" : "Gat ekki fært %s", "No file was uploaded. Unknown error" : "Engin skrá var send inn. Óþekkt villa.", "There is no error, the file uploaded with success" : "Engin villa, innsending heppnaðist", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "Innsend skrá er stærri en upload_max stillingin í php.ini:", @@ -21,14 +19,11 @@ OC.L10N.register( "Delete" : "Eyða", "Select" : "Velja", "Pending" : "Bíður", - "Error" : "Villa", - "{new_name} already exists" : "{new_name} er þegar til", "Name" : "Nafn", "Size" : "Stærð", "Modified" : "Breytt", "New" : "Nýtt", "File name cannot be empty." : "Nafn skráar má ekki vera tómt", - "Text file" : "Texta skrá", "Folder" : "Mappa", "Upload" : "Senda inn", "File handling" : "Meðhöndlun skrár", @@ -42,6 +37,7 @@ OC.L10N.register( "Select all" : "Velja allt", "Upload too large" : "Innsend skrá er of stór", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Skrárnar sem þú ert að senda inn eru stærri en hámarks innsendingarstærð á þessum netþjóni.", - "Files are being scanned, please wait." : "Verið er að skima skrár, vinsamlegast hinkraðu." + "Files are being scanned, please wait." : "Verið er að skima skrár, vinsamlegast hinkraðu.", + "Text file" : "Texta skrá" }, "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); diff --git a/apps/files/l10n/is.json b/apps/files/l10n/is.json index 8a6da48f408..caff3b037d5 100644 --- a/apps/files/l10n/is.json +++ b/apps/files/l10n/is.json @@ -1,6 +1,4 @@ { "translations": { - "Could not move %s - File with this name already exists" : "Gat ekki fært %s - Skrá með þessu nafni er þegar til", - "Could not move %s" : "Gat ekki fært %s", "No file was uploaded. Unknown error" : "Engin skrá var send inn. Óþekkt villa.", "There is no error, the file uploaded with success" : "Engin villa, innsending heppnaðist", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "Innsend skrá er stærri en upload_max stillingin í php.ini:", @@ -19,14 +17,11 @@ "Delete" : "Eyða", "Select" : "Velja", "Pending" : "Bíður", - "Error" : "Villa", - "{new_name} already exists" : "{new_name} er þegar til", "Name" : "Nafn", "Size" : "Stærð", "Modified" : "Breytt", "New" : "Nýtt", "File name cannot be empty." : "Nafn skráar má ekki vera tómt", - "Text file" : "Texta skrá", "Folder" : "Mappa", "Upload" : "Senda inn", "File handling" : "Meðhöndlun skrár", @@ -40,6 +35,7 @@ "Select all" : "Velja allt", "Upload too large" : "Innsend skrá er of stór", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Skrárnar sem þú ert að senda inn eru stærri en hámarks innsendingarstærð á þessum netþjóni.", - "Files are being scanned, please wait." : "Verið er að skima skrár, vinsamlegast hinkraðu." + "Files are being scanned, please wait." : "Verið er að skima skrár, vinsamlegast hinkraðu.", + "Text file" : "Texta skrá" },"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 4c6033e6caf..abf2e3b723f 100644 --- a/apps/files/l10n/it.js +++ b/apps/files/l10n/it.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Archiviazione non disponibile", "Storage invalid" : "Archiviazione non valida", "Unknown error" : "Errore sconosciuto", - "Could not move %s - File with this name already exists" : "Impossibile spostare %s - un file con questo nome esiste già", - "Could not move %s" : "Impossibile spostare %s", - "Permission denied" : "Permesso negato", - "The target folder has been moved or deleted." : "La cartella di destinazione è stata spostata o eliminata.", - "The name %s is already used in the folder %s. Please choose a different name." : "Il nome %s è attualmente in uso nella cartella %s. Scegli un nome diverso.", - "Error when creating the file" : "Errore durante la creazione del file", - "Error when creating the folder" : "Errore durante la creazione della cartella", "Unable to set upload directory." : "Impossibile impostare una cartella di caricamento.", "Invalid Token" : "Token non valido", "No file was uploaded. Unknown error" : "Nessun file è stato caricato. Errore sconosciuto", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Manca una cartella temporanea", "Failed to write to disk" : "Scrittura su disco non riuscita", "Not enough storage available" : "Spazio di archiviazione insufficiente", + "The target folder has been moved or deleted." : "La cartella di destinazione è stata spostata o eliminata.", "Upload failed. Could not find uploaded file" : "Caricamento non riuscito. Impossibile trovare il file caricato.", "Upload failed. Could not get file info." : "Caricamento non riuscito. Impossibile ottenere informazioni sul file.", "Invalid directory." : "Cartella non valida.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Impossibile determinare la data", "This operation is forbidden" : "Questa operazione è vietata", "This directory is unavailable, please check the logs or contact the administrator" : "Questa cartella non è disponibile, controlla i log o contatta l'amministratore", - "Error moving file." : "Errore durante lo spostamento del file.", - "Error moving file" : "Errore durante lo spostamento del file", - "Error" : "Errore", - "{new_name} already exists" : "{new_name} esiste già", - "Could not rename file" : "Impossibile rinominare il file", - "Could not create file" : "Impossibile creare il file", - "Could not create folder" : "Impossibile creare la cartella", - "Error deleting file." : "Errore durante l'eliminazione del file.", "No entries in this folder match '{filter}'" : "Nessuna voce in questa cartella corrisponde a '{filter}'", "Name" : "Nome", "Size" : "Dimensione", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n byte","%n byte"], "Favorited" : "Preferiti", "Favorite" : "Preferito", - "Text file" : "File di testo", - "New text file.txt" : "Nuovo file di testo.txt", "Folder" : "Cartella", "New folder" : "Nuova cartella", "{newname} already exists" : "{newname} esiste già", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "Modificata da %2$s", "Deleted by %2$s" : "Eliminata da %2$s", "Restored by %2$s" : "Ripristinata da %2$s", - "%s could not be renamed as it has been deleted" : "%s non può essere rinominato poiché è stato eliminato", - "%s could not be renamed" : "%s non può essere rinominato", "Upload (max. %s)" : "Carica (massimo %s)", "File handling" : "Gestione file", "Maximum upload size" : "Dimensione massima caricamento", @@ -121,6 +103,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Scansione dei file in corso, attendi", "Currently scanning" : "Scansione in corso", "No favorites" : "Nessun preferito", - "Files and folders you mark as favorite will show up here" : "I file e le cartelle che marchi come preferiti saranno mostrati qui" + "Files and folders you mark as favorite will show up here" : "I file e le cartelle che marchi come preferiti saranno mostrati qui", + "Text file" : "File di testo", + "New text file.txt" : "Nuovo file di testo.txt" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json index 239b8dc399c..89a6f9a7364 100644 --- a/apps/files/l10n/it.json +++ b/apps/files/l10n/it.json @@ -2,13 +2,6 @@ "Storage not available" : "Archiviazione non disponibile", "Storage invalid" : "Archiviazione non valida", "Unknown error" : "Errore sconosciuto", - "Could not move %s - File with this name already exists" : "Impossibile spostare %s - un file con questo nome esiste già", - "Could not move %s" : "Impossibile spostare %s", - "Permission denied" : "Permesso negato", - "The target folder has been moved or deleted." : "La cartella di destinazione è stata spostata o eliminata.", - "The name %s is already used in the folder %s. Please choose a different name." : "Il nome %s è attualmente in uso nella cartella %s. Scegli un nome diverso.", - "Error when creating the file" : "Errore durante la creazione del file", - "Error when creating the folder" : "Errore durante la creazione della cartella", "Unable to set upload directory." : "Impossibile impostare una cartella di caricamento.", "Invalid Token" : "Token non valido", "No file was uploaded. Unknown error" : "Nessun file è stato caricato. Errore sconosciuto", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Manca una cartella temporanea", "Failed to write to disk" : "Scrittura su disco non riuscita", "Not enough storage available" : "Spazio di archiviazione insufficiente", + "The target folder has been moved or deleted." : "La cartella di destinazione è stata spostata o eliminata.", "Upload failed. Could not find uploaded file" : "Caricamento non riuscito. Impossibile trovare il file caricato.", "Upload failed. Could not get file info." : "Caricamento non riuscito. Impossibile ottenere informazioni sul file.", "Invalid directory." : "Cartella non valida.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Impossibile determinare la data", "This operation is forbidden" : "Questa operazione è vietata", "This directory is unavailable, please check the logs or contact the administrator" : "Questa cartella non è disponibile, controlla i log o contatta l'amministratore", - "Error moving file." : "Errore durante lo spostamento del file.", - "Error moving file" : "Errore durante lo spostamento del file", - "Error" : "Errore", - "{new_name} already exists" : "{new_name} esiste già", - "Could not rename file" : "Impossibile rinominare il file", - "Could not create file" : "Impossibile creare il file", - "Could not create folder" : "Impossibile creare la cartella", - "Error deleting file." : "Errore durante l'eliminazione del file.", "No entries in this folder match '{filter}'" : "Nessuna voce in questa cartella corrisponde a '{filter}'", "Name" : "Nome", "Size" : "Dimensione", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n byte","%n byte"], "Favorited" : "Preferiti", "Favorite" : "Preferito", - "Text file" : "File di testo", - "New text file.txt" : "Nuovo file di testo.txt", "Folder" : "Cartella", "New folder" : "Nuova cartella", "{newname} already exists" : "{newname} esiste già", @@ -97,8 +81,6 @@ "Changed by %2$s" : "Modificata da %2$s", "Deleted by %2$s" : "Eliminata da %2$s", "Restored by %2$s" : "Ripristinata da %2$s", - "%s could not be renamed as it has been deleted" : "%s non può essere rinominato poiché è stato eliminato", - "%s could not be renamed" : "%s non può essere rinominato", "Upload (max. %s)" : "Carica (massimo %s)", "File handling" : "Gestione file", "Maximum upload size" : "Dimensione massima caricamento", @@ -119,6 +101,8 @@ "Files are being scanned, please wait." : "Scansione dei file in corso, attendi", "Currently scanning" : "Scansione in corso", "No favorites" : "Nessun preferito", - "Files and folders you mark as favorite will show up here" : "I file e le cartelle che marchi come preferiti saranno mostrati qui" + "Files and folders you mark as favorite will show up here" : "I file e le cartelle che marchi come preferiti saranno mostrati qui", + "Text file" : "File di testo", + "New text file.txt" : "Nuovo file di testo.txt" },"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 be441c15ca1..4dce4582d41 100644 --- a/apps/files/l10n/ja.js +++ b/apps/files/l10n/ja.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "ストレージが利用できません", "Storage invalid" : "ストレージが無効です", "Unknown error" : "不明なエラー", - "Could not move %s - File with this name already exists" : "%s を移動できませんでした ― この名前のファイルはすでに存在します", - "Could not move %s" : "%s を移動できませんでした", - "Permission denied" : "アクセス拒否", - "The target folder has been moved or deleted." : "対象のフォルダーは移動されたか、削除されました。", - "The name %s is already used in the folder %s. Please choose a different name." : "%s はフォルダー %s ですでに使われています。別の名前を選択してください。", - "Error when creating the file" : "ファイルの生成エラー", - "Error when creating the folder" : "フォルダーの生成エラー", "Unable to set upload directory." : "アップロードディレクトリを設定できません。", "Invalid Token" : "無効なトークン", "No file was uploaded. Unknown error" : "ファイルは何もアップロードされていません。不明なエラー", @@ -22,6 +15,7 @@ OC.L10N.register( "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." : "無効なディレクトリです。", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "更新日不明", "This operation is forbidden" : "この操作は禁止されています", "This directory is unavailable, please check the logs or contact the administrator" : "このディレクトリは利用できません。ログを確認するか管理者に問い合わせてください。", - "Error moving file." : "ファイル移動でエラー", - "Error moving file" : "ファイルの移動エラー", - "Error" : "エラー", - "{new_name} already exists" : "{new_name} はすでに存在します", - "Could not rename file" : "ファイルの名前変更ができませんでした", - "Could not create file" : "ファイルを作成できませんでした", - "Could not create folder" : "フォルダーを作成できませんでした", - "Error deleting file." : "ファイルの削除エラー。", "No entries in this folder match '{filter}'" : "このフォルダー内で '{filter}' にマッチするものはありません", "Name" : "名前", "Size" : "サイズ", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n バイト"], "Favorited" : "お気に入り済", "Favorite" : "お気に入り", - "Text file" : "テキストファイル", - "New text file.txt" : "新規のテキストファイル作成", "Folder" : "フォルダー", "New folder" : "新しいフォルダー", "{newname} already exists" : "{newname} はすでに存在します", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "%2$s により更新", "Deleted by %2$s" : "%2$s により削除", "Restored by %2$s" : "%2$s により復元", - "%s could not be renamed as it has been deleted" : "%s は削除されたため、ファイル名を変更できません", - "%s could not be renamed" : "%sの名前を変更できませんでした", "Upload (max. %s)" : "アップロード ( 最大 %s )", "File handling" : "ファイル操作", "Maximum upload size" : "最大アップロードサイズ", @@ -121,6 +103,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "ファイルをスキャンしています、しばらくお待ちください。", "Currently scanning" : "現在スキャン中", "No favorites" : "お気に入りなし", - "Files and folders you mark as favorite will show up here" : "お気に入りに登録されたファイルやフォルダーは、ここに表示されます。" + "Files and folders you mark as favorite will show up here" : "お気に入りに登録されたファイルやフォルダーは、ここに表示されます。", + "Text file" : "テキストファイル", + "New text file.txt" : "新規のテキストファイル作成" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json index 58b4870369c..dd7b8d30fb2 100644 --- a/apps/files/l10n/ja.json +++ b/apps/files/l10n/ja.json @@ -2,13 +2,6 @@ "Storage not available" : "ストレージが利用できません", "Storage invalid" : "ストレージが無効です", "Unknown error" : "不明なエラー", - "Could not move %s - File with this name already exists" : "%s を移動できませんでした ― この名前のファイルはすでに存在します", - "Could not move %s" : "%s を移動できませんでした", - "Permission denied" : "アクセス拒否", - "The target folder has been moved or deleted." : "対象のフォルダーは移動されたか、削除されました。", - "The name %s is already used in the folder %s. Please choose a different name." : "%s はフォルダー %s ですでに使われています。別の名前を選択してください。", - "Error when creating the file" : "ファイルの生成エラー", - "Error when creating the folder" : "フォルダーの生成エラー", "Unable to set upload directory." : "アップロードディレクトリを設定できません。", "Invalid Token" : "無効なトークン", "No file was uploaded. Unknown error" : "ファイルは何もアップロードされていません。不明なエラー", @@ -20,6 +13,7 @@ "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." : "無効なディレクトリです。", @@ -44,14 +38,6 @@ "Unable to determine date" : "更新日不明", "This operation is forbidden" : "この操作は禁止されています", "This directory is unavailable, please check the logs or contact the administrator" : "このディレクトリは利用できません。ログを確認するか管理者に問い合わせてください。", - "Error moving file." : "ファイル移動でエラー", - "Error moving file" : "ファイルの移動エラー", - "Error" : "エラー", - "{new_name} already exists" : "{new_name} はすでに存在します", - "Could not rename file" : "ファイルの名前変更ができませんでした", - "Could not create file" : "ファイルを作成できませんでした", - "Could not create folder" : "フォルダーを作成できませんでした", - "Error deleting file." : "ファイルの削除エラー。", "No entries in this folder match '{filter}'" : "このフォルダー内で '{filter}' にマッチするものはありません", "Name" : "名前", "Size" : "サイズ", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n バイト"], "Favorited" : "お気に入り済", "Favorite" : "お気に入り", - "Text file" : "テキストファイル", - "New text file.txt" : "新規のテキストファイル作成", "Folder" : "フォルダー", "New folder" : "新しいフォルダー", "{newname} already exists" : "{newname} はすでに存在します", @@ -97,8 +81,6 @@ "Changed by %2$s" : "%2$s により更新", "Deleted by %2$s" : "%2$s により削除", "Restored by %2$s" : "%2$s により復元", - "%s could not be renamed as it has been deleted" : "%s は削除されたため、ファイル名を変更できません", - "%s could not be renamed" : "%sの名前を変更できませんでした", "Upload (max. %s)" : "アップロード ( 最大 %s )", "File handling" : "ファイル操作", "Maximum upload size" : "最大アップロードサイズ", @@ -119,6 +101,8 @@ "Files are being scanned, please wait." : "ファイルをスキャンしています、しばらくお待ちください。", "Currently scanning" : "現在スキャン中", "No favorites" : "お気に入りなし", - "Files and folders you mark as favorite will show up here" : "お気に入りに登録されたファイルやフォルダーは、ここに表示されます。" + "Files and folders you mark as favorite will show up here" : "お気に入りに登録されたファイルやフォルダーは、ここに表示されます。", + "Text file" : "テキストファイル", + "New text file.txt" : "新規のテキストファイル作成" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/l10n/ka_GE.js b/apps/files/l10n/ka_GE.js index fe22f22ceb3..f5a57f44266 100644 --- a/apps/files/l10n/ka_GE.js +++ b/apps/files/l10n/ka_GE.js @@ -2,8 +2,6 @@ OC.L10N.register( "files", { "Unknown error" : "უცნობი შეცდომა", - "Could not move %s - File with this name already exists" : "%s –ის გადატანა ვერ მოხერხდა – ფაილი ამ სახელით უკვე არსებობს", - "Could not move %s" : "%s –ის გადატანა ვერ მოხერხდა", "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: " : "ატვირთული ფაილი აჭარბებს upload_max_filesize დირექტივას php.ini ფაილში", @@ -26,8 +24,6 @@ OC.L10N.register( "Delete" : "წაშლა", "Details" : "დეტალური ინფორმაცია", "Pending" : "მოცდის რეჟიმში", - "Error" : "შეცდომა", - "{new_name} already exists" : "{new_name} უკვე არსებობს", "Name" : "სახელი", "Size" : "ზომა", "Modified" : "შეცვლილია", @@ -36,7 +32,6 @@ OC.L10N.register( "Your storage is full, files can not be updated or synced anymore!" : "თქვენი საცავი გადაივსო. ფაილების განახლება და სინქრონიზირება ვერ მოხერხდება!", "Your storage is almost full ({usedSpacePercent}%)" : "თქვენი საცავი თითქმის გადაივსო ({usedSpacePercent}%)", "Favorite" : "ფავორიტი", - "Text file" : "ტექსტური ფაილი", "Folder" : "საქაღალდე", "New folder" : "ახალი ფოლდერი", "Upload" : "ატვირთვა", @@ -49,6 +44,7 @@ OC.L10N.register( "Cancel upload" : "ატვირთვის გაუქმება", "Upload too large" : "ასატვირთი ფაილი ძალიან დიდია", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "ფაილის ზომა რომლის ატვირთვასაც თქვენ აპირებთ, აჭარბებს სერვერზე დაშვებულ მაქსიმუმს.", - "Files are being scanned, please wait." : "მიმდინარეობს ფაილების სკანირება, გთხოვთ დაელოდოთ." + "Files are being scanned, please wait." : "მიმდინარეობს ფაილების სკანირება, გთხოვთ დაელოდოთ.", + "Text file" : "ტექსტური ფაილი" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/ka_GE.json b/apps/files/l10n/ka_GE.json index 8f23f671b7e..cb8f6dce6fd 100644 --- a/apps/files/l10n/ka_GE.json +++ b/apps/files/l10n/ka_GE.json @@ -1,7 +1,5 @@ { "translations": { "Unknown error" : "უცნობი შეცდომა", - "Could not move %s - File with this name already exists" : "%s –ის გადატანა ვერ მოხერხდა – ფაილი ამ სახელით უკვე არსებობს", - "Could not move %s" : "%s –ის გადატანა ვერ მოხერხდა", "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: " : "ატვირთული ფაილი აჭარბებს upload_max_filesize დირექტივას php.ini ფაილში", @@ -24,8 +22,6 @@ "Delete" : "წაშლა", "Details" : "დეტალური ინფორმაცია", "Pending" : "მოცდის რეჟიმში", - "Error" : "შეცდომა", - "{new_name} already exists" : "{new_name} უკვე არსებობს", "Name" : "სახელი", "Size" : "ზომა", "Modified" : "შეცვლილია", @@ -34,7 +30,6 @@ "Your storage is full, files can not be updated or synced anymore!" : "თქვენი საცავი გადაივსო. ფაილების განახლება და სინქრონიზირება ვერ მოხერხდება!", "Your storage is almost full ({usedSpacePercent}%)" : "თქვენი საცავი თითქმის გადაივსო ({usedSpacePercent}%)", "Favorite" : "ფავორიტი", - "Text file" : "ტექსტური ფაილი", "Folder" : "საქაღალდე", "New folder" : "ახალი ფოლდერი", "Upload" : "ატვირთვა", @@ -47,6 +42,7 @@ "Cancel upload" : "ატვირთვის გაუქმება", "Upload too large" : "ასატვირთი ფაილი ძალიან დიდია", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "ფაილის ზომა რომლის ატვირთვასაც თქვენ აპირებთ, აჭარბებს სერვერზე დაშვებულ მაქსიმუმს.", - "Files are being scanned, please wait." : "მიმდინარეობს ფაილების სკანირება, გთხოვთ დაელოდოთ." + "Files are being scanned, please wait." : "მიმდინარეობს ფაილების სკანირება, გთხოვთ დაელოდოთ.", + "Text file" : "ტექსტური ფაილი" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/l10n/km.js b/apps/files/l10n/km.js index b63a3a90ef0..f03aa9c4693 100644 --- a/apps/files/l10n/km.js +++ b/apps/files/l10n/km.js @@ -2,8 +2,6 @@ OC.L10N.register( "files", { "Unknown error" : "មិនស្គាល់កំហុស", - "Could not move %s - File with this name already exists" : "មិនអាចផ្លាស់ទី %s - មានឈ្មោះឯកសារដូចនេះហើយ", - "Could not move %s" : "មិនអាចផ្លាស់ទី %s", "No file was uploaded. Unknown error" : "មិនមានឯកសារដែលបានផ្ទុកឡើង។ មិនស្គាល់កំហុស", "There is no error, the file uploaded with success" : "មិនមានកំហុសអ្វីទេ ហើយឯកសារត្រូវបានផ្ទុកឡើងដោយជោគជ័យ", "Files" : "ឯកសារ", @@ -14,14 +12,11 @@ OC.L10N.register( "Delete" : "លុប", "Details" : "ព័ត៌មានលម្អិត", "Pending" : "កំពុងរង់ចាំ", - "Error" : "កំហុស", - "{new_name} already exists" : "មានឈ្មោះ {new_name} រួចហើយ", "Name" : "ឈ្មោះ", "Size" : "ទំហំ", "Modified" : "បានកែប្រែ", "New" : "ថ្មី", "File name cannot be empty." : "ឈ្មោះឯកសារមិនអាចនៅទទេបានឡើយ។", - "Text file" : "ឯកសារអក្សរ", "Folder" : "ថត", "New folder" : "ថតថ្មី", "Upload" : "ផ្ទុកឡើង", @@ -36,6 +31,7 @@ OC.L10N.register( "Settings" : "ការកំណត់", "WebDAV" : "WebDAV", "Cancel upload" : "បោះបង់ការផ្ទុកឡើង", - "Upload too large" : "ផ្ទុកឡើងធំពេក" + "Upload too large" : "ផ្ទុកឡើងធំពេក", + "Text file" : "ឯកសារអក្សរ" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/km.json b/apps/files/l10n/km.json index 8dda2ab2cb1..f050b00b795 100644 --- a/apps/files/l10n/km.json +++ b/apps/files/l10n/km.json @@ -1,7 +1,5 @@ { "translations": { "Unknown error" : "មិនស្គាល់កំហុស", - "Could not move %s - File with this name already exists" : "មិនអាចផ្លាស់ទី %s - មានឈ្មោះឯកសារដូចនេះហើយ", - "Could not move %s" : "មិនអាចផ្លាស់ទី %s", "No file was uploaded. Unknown error" : "មិនមានឯកសារដែលបានផ្ទុកឡើង។ មិនស្គាល់កំហុស", "There is no error, the file uploaded with success" : "មិនមានកំហុសអ្វីទេ ហើយឯកសារត្រូវបានផ្ទុកឡើងដោយជោគជ័យ", "Files" : "ឯកសារ", @@ -12,14 +10,11 @@ "Delete" : "លុប", "Details" : "ព័ត៌មានលម្អិត", "Pending" : "កំពុងរង់ចាំ", - "Error" : "កំហុស", - "{new_name} already exists" : "មានឈ្មោះ {new_name} រួចហើយ", "Name" : "ឈ្មោះ", "Size" : "ទំហំ", "Modified" : "បានកែប្រែ", "New" : "ថ្មី", "File name cannot be empty." : "ឈ្មោះឯកសារមិនអាចនៅទទេបានឡើយ។", - "Text file" : "ឯកសារអក្សរ", "Folder" : "ថត", "New folder" : "ថតថ្មី", "Upload" : "ផ្ទុកឡើង", @@ -34,6 +29,7 @@ "Settings" : "ការកំណត់", "WebDAV" : "WebDAV", "Cancel upload" : "បោះបង់ការផ្ទុកឡើង", - "Upload too large" : "ផ្ទុកឡើងធំពេក" + "Upload too large" : "ផ្ទុកឡើងធំពេក", + "Text file" : "ឯកសារអក្សរ" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/l10n/kn.js b/apps/files/l10n/kn.js index b1c793b1ef3..840837bdad3 100644 --- a/apps/files/l10n/kn.js +++ b/apps/files/l10n/kn.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "ಲಭ್ಯವಿಲ್ಲ ಸಂಗ್ರಹ", "Storage invalid" : "ಸಂಗ್ರಹ ಅಮಾನ್ಯವಾಗಿದೆ", "Unknown error" : "ಗೊತ್ತಿಲ್ಲದ ದೋಷ", - "Could not move %s - File with this name already exists" : "%s ಹೆಸರು ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ - ಸ್ಥಳ ಬದಲಾವಣೆ ಸಾಧ್ಯವಿಲ್ಲ", - "Could not move %s" : "%s ಸ್ಥಳ ಬದಲಾವಣೆ ಸಾಧ್ಯವಿಲ್ಲ", - "Permission denied" : "ಅನುಮತಿ ನಿರಾಕರಿಸಲಾಗಿದೆ", - "The target folder has been moved or deleted." : "ಕೋಶದ ಉದ್ದೇಶಿತ ಸ್ಥಳ ಬದಲಾವಣೆ ಮಾಡಲಾಗಿದೆ ಅಥವಾ ಅಳಿಸಲಾಗಿದೆ.", - "The name %s is already used in the folder %s. Please choose a different name." : "%s ಹೆಸರಿನ ಕೋಶವನ್ನು %s ಈಗಾಗಲೇ ಬಳಸಲಾಗುತ್ತದೆ. ಬೇರೆ ಹೆಸರನ್ನು ಆಯ್ಕೆಮಾಡಿ.", - "Error when creating the file" : "ಕಡತವನ್ನು ರಚಿಸುವಾಗ ದೋಷವಾಗಿದೆ", - "Error when creating the folder" : "ಕೊಶವನ್ನು ರಚಿಸುವಾಗ ದೋಷವಾಗಿದೆ", "Unable to set upload directory." : "ಪೇರಿಸವ ಕೋಶವನ್ನು ಹೊಂದಿಸಲಾಗಲಿಲ್ಲ.", "Invalid Token" : "ಅಮಾನ್ಯ ಸಾಂಕೇತಿಕ", "No file was uploaded. Unknown error" : "ಕಡತ ವರ್ಗಾವಣೆ ಅಜ್ಞಾತ ದೋಷದಿಂದ ವಿಪುಲವಾಗಿದೆ", @@ -20,6 +13,7 @@ OC.L10N.register( "Missing a temporary folder" : "ತಾತ್ಕಾಲಿಕ ಕಡತಕೋಶ ದೊರೆಕುತ್ತಿಲ್ಲ", "Failed to write to disk" : "ಸ್ಮರಣೆ ಸಾಧನಕ್ಕೇಬರೆಯಲು ವಿಫಲವಾಗಿದೆ", "Not enough storage available" : "ಲಭ್ಯವಿರುವ ಸಂಗ್ರಹ ಸಾಕಾಗುವುದಿಲ್ಲ", + "The target folder has been moved or deleted." : "ಕೋಶದ ಉದ್ದೇಶಿತ ಸ್ಥಳ ಬದಲಾವಣೆ ಮಾಡಲಾಗಿದೆ ಅಥವಾ ಅಳಿಸಲಾಗಿದೆ.", "Invalid directory." : "ಅಮಾನ್ಯ ಕಡತಕೋಶ.", "Files" : "ಕಡತಗಳು", "All files" : "ಎಲ್ಲಾ ಕಡತಗಳು", @@ -34,14 +28,6 @@ OC.L10N.register( "Select" : "ಆಯ್ಕೆ ಮಾಡಿ", "Pending" : "ಬಾಕಿ ಇದೆ", "Unable to determine date" : "ಮುಕ್ತಾಯ ದಿನಾಂಕ ನಿರ್ಧರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ", - "Error moving file." : "ಕಡತದ ಸ್ಥಾನವನ್ನು ಬದಲಾಯಿಸುವಾಗ ದೋಷವಾಗಿದೆ.", - "Error moving file" : "ಕಡತದ ಸ್ಥಾನವನ್ನು ಬದಲಾಯಿಸುವಾಗ ದೋಷವಾಗಿದೆ", - "Error" : "ತಪ್ಪಾಗಿದೆ", - "{new_name} already exists" : "ಈಗಾಗಲೇ {new_name} ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ", - "Could not rename file" : "ಕಡತ ಮರುಹೆಸರಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ", - "Could not create file" : "ಕಡತ ರಚಿಸಲಾಗಲಿಲ್ಲ", - "Could not create folder" : "ಕೋಶವನ್ನು ರಚಿಸಲಾಗಿಲ್ಲ", - "Error deleting file." : "ಕಡತವನ್ನು ಅಳಿಸುವಲ್ಲಿ ಲೋಪವಾದೆ", "Name" : "ಹೆಸರು", "Size" : " ಪ್ರಮಾಣ", "Modified" : "ಬದಲಾಯಿಸಿದ", @@ -53,7 +39,6 @@ OC.L10N.register( "File name cannot be empty." : "ಕಡತ ಹೆಸರು ಖಾಲಿ ಇರುವಂತಿಲ್ಲ.", "Favorited" : "ಅಚ್ಚುಮೆಚ್ಚಿನವು", "Favorite" : "ಅಚ್ಚುಮೆಚ್ಚಿನ", - "Text file" : "ಸರಳಾಕ್ಷರದ ಕಡತ", "Folder" : "ಕಡತಕೋಶ", "New folder" : "ಹೊಸ ಕಡತಕೋಶ", "Upload" : "ವರ್ಗಾಯಿಸಿ", @@ -71,6 +56,7 @@ OC.L10N.register( "Files are being scanned, please wait." : "ಕಡತಗಳನ್ನು ಪರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ, ದಯವಿಟ್ಟು ನಿರೀಕ್ಷಿಸಿ.", "Currently scanning" : "ಪ್ರಸ್ತುತ ಪರೀಕ್ಷೆ", "No favorites" : "ಯಾವ ಅಚ್ಚುಮೆಚ್ಚಿನವುಗಳು ಇಲ್ಲ", - "Files and folders you mark as favorite will show up here" : "ನೀವು ಗುರುತು ಮಾಡಿರುವ ನೆಚ್ಚಿನ ಕಡತ ಮತ್ತು ಕಡತಕೋಶಗಳನ್ನು ಇಲ್ಲಿ ತೋರಿಸಲಾಗುತ್ತಿದೆ" + "Files and folders you mark as favorite will show up here" : "ನೀವು ಗುರುತು ಮಾಡಿರುವ ನೆಚ್ಚಿನ ಕಡತ ಮತ್ತು ಕಡತಕೋಶಗಳನ್ನು ಇಲ್ಲಿ ತೋರಿಸಲಾಗುತ್ತಿದೆ", + "Text file" : "ಸರಳಾಕ್ಷರದ ಕಡತ" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/kn.json b/apps/files/l10n/kn.json index 6667f3ae01f..d6345be732c 100644 --- a/apps/files/l10n/kn.json +++ b/apps/files/l10n/kn.json @@ -2,13 +2,6 @@ "Storage not available" : "ಲಭ್ಯವಿಲ್ಲ ಸಂಗ್ರಹ", "Storage invalid" : "ಸಂಗ್ರಹ ಅಮಾನ್ಯವಾಗಿದೆ", "Unknown error" : "ಗೊತ್ತಿಲ್ಲದ ದೋಷ", - "Could not move %s - File with this name already exists" : "%s ಹೆಸರು ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ - ಸ್ಥಳ ಬದಲಾವಣೆ ಸಾಧ್ಯವಿಲ್ಲ", - "Could not move %s" : "%s ಸ್ಥಳ ಬದಲಾವಣೆ ಸಾಧ್ಯವಿಲ್ಲ", - "Permission denied" : "ಅನುಮತಿ ನಿರಾಕರಿಸಲಾಗಿದೆ", - "The target folder has been moved or deleted." : "ಕೋಶದ ಉದ್ದೇಶಿತ ಸ್ಥಳ ಬದಲಾವಣೆ ಮಾಡಲಾಗಿದೆ ಅಥವಾ ಅಳಿಸಲಾಗಿದೆ.", - "The name %s is already used in the folder %s. Please choose a different name." : "%s ಹೆಸರಿನ ಕೋಶವನ್ನು %s ಈಗಾಗಲೇ ಬಳಸಲಾಗುತ್ತದೆ. ಬೇರೆ ಹೆಸರನ್ನು ಆಯ್ಕೆಮಾಡಿ.", - "Error when creating the file" : "ಕಡತವನ್ನು ರಚಿಸುವಾಗ ದೋಷವಾಗಿದೆ", - "Error when creating the folder" : "ಕೊಶವನ್ನು ರಚಿಸುವಾಗ ದೋಷವಾಗಿದೆ", "Unable to set upload directory." : "ಪೇರಿಸವ ಕೋಶವನ್ನು ಹೊಂದಿಸಲಾಗಲಿಲ್ಲ.", "Invalid Token" : "ಅಮಾನ್ಯ ಸಾಂಕೇತಿಕ", "No file was uploaded. Unknown error" : "ಕಡತ ವರ್ಗಾವಣೆ ಅಜ್ಞಾತ ದೋಷದಿಂದ ವಿಪುಲವಾಗಿದೆ", @@ -18,6 +11,7 @@ "Missing a temporary folder" : "ತಾತ್ಕಾಲಿಕ ಕಡತಕೋಶ ದೊರೆಕುತ್ತಿಲ್ಲ", "Failed to write to disk" : "ಸ್ಮರಣೆ ಸಾಧನಕ್ಕೇಬರೆಯಲು ವಿಫಲವಾಗಿದೆ", "Not enough storage available" : "ಲಭ್ಯವಿರುವ ಸಂಗ್ರಹ ಸಾಕಾಗುವುದಿಲ್ಲ", + "The target folder has been moved or deleted." : "ಕೋಶದ ಉದ್ದೇಶಿತ ಸ್ಥಳ ಬದಲಾವಣೆ ಮಾಡಲಾಗಿದೆ ಅಥವಾ ಅಳಿಸಲಾಗಿದೆ.", "Invalid directory." : "ಅಮಾನ್ಯ ಕಡತಕೋಶ.", "Files" : "ಕಡತಗಳು", "All files" : "ಎಲ್ಲಾ ಕಡತಗಳು", @@ -32,14 +26,6 @@ "Select" : "ಆಯ್ಕೆ ಮಾಡಿ", "Pending" : "ಬಾಕಿ ಇದೆ", "Unable to determine date" : "ಮುಕ್ತಾಯ ದಿನಾಂಕ ನಿರ್ಧರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ", - "Error moving file." : "ಕಡತದ ಸ್ಥಾನವನ್ನು ಬದಲಾಯಿಸುವಾಗ ದೋಷವಾಗಿದೆ.", - "Error moving file" : "ಕಡತದ ಸ್ಥಾನವನ್ನು ಬದಲಾಯಿಸುವಾಗ ದೋಷವಾಗಿದೆ", - "Error" : "ತಪ್ಪಾಗಿದೆ", - "{new_name} already exists" : "ಈಗಾಗಲೇ {new_name} ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ", - "Could not rename file" : "ಕಡತ ಮರುಹೆಸರಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ", - "Could not create file" : "ಕಡತ ರಚಿಸಲಾಗಲಿಲ್ಲ", - "Could not create folder" : "ಕೋಶವನ್ನು ರಚಿಸಲಾಗಿಲ್ಲ", - "Error deleting file." : "ಕಡತವನ್ನು ಅಳಿಸುವಲ್ಲಿ ಲೋಪವಾದೆ", "Name" : "ಹೆಸರು", "Size" : " ಪ್ರಮಾಣ", "Modified" : "ಬದಲಾಯಿಸಿದ", @@ -51,7 +37,6 @@ "File name cannot be empty." : "ಕಡತ ಹೆಸರು ಖಾಲಿ ಇರುವಂತಿಲ್ಲ.", "Favorited" : "ಅಚ್ಚುಮೆಚ್ಚಿನವು", "Favorite" : "ಅಚ್ಚುಮೆಚ್ಚಿನ", - "Text file" : "ಸರಳಾಕ್ಷರದ ಕಡತ", "Folder" : "ಕಡತಕೋಶ", "New folder" : "ಹೊಸ ಕಡತಕೋಶ", "Upload" : "ವರ್ಗಾಯಿಸಿ", @@ -69,6 +54,7 @@ "Files are being scanned, please wait." : "ಕಡತಗಳನ್ನು ಪರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ, ದಯವಿಟ್ಟು ನಿರೀಕ್ಷಿಸಿ.", "Currently scanning" : "ಪ್ರಸ್ತುತ ಪರೀಕ್ಷೆ", "No favorites" : "ಯಾವ ಅಚ್ಚುಮೆಚ್ಚಿನವುಗಳು ಇಲ್ಲ", - "Files and folders you mark as favorite will show up here" : "ನೀವು ಗುರುತು ಮಾಡಿರುವ ನೆಚ್ಚಿನ ಕಡತ ಮತ್ತು ಕಡತಕೋಶಗಳನ್ನು ಇಲ್ಲಿ ತೋರಿಸಲಾಗುತ್ತಿದೆ" + "Files and folders you mark as favorite will show up here" : "ನೀವು ಗುರುತು ಮಾಡಿರುವ ನೆಚ್ಚಿನ ಕಡತ ಮತ್ತು ಕಡತಕೋಶಗಳನ್ನು ಇಲ್ಲಿ ತೋರಿಸಲಾಗುತ್ತಿದೆ", + "Text file" : "ಸರಳಾಕ್ಷರದ ಕಡತ" },"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 70ee488454a..13e917e3cfa 100644 --- a/apps/files/l10n/ko.js +++ b/apps/files/l10n/ko.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "저장소를 사용할 수 없음", "Storage invalid" : "저장소가 잘못됨", "Unknown error" : "알 수 없는 오류", - "Could not move %s - File with this name already exists" : "항목 %s을(를) 이동시킬 수 없음 - 같은 이름의 파일이 이미 존재함", - "Could not move %s" : "항목 %s을(를) 이동시킬 수 없음", - "Permission denied" : "권한 거부됨", - "The target folder has been moved or deleted." : "대상 폴더가 이동되거나 삭제되었습니다.", - "The name %s is already used in the folder %s. Please choose a different name." : "이름 %s이(가) 폴더 %s에서 이미 사용 중입니다. 다른 이름을 사용하십시오.", - "Error when creating the file" : "파일 생성 중 오류 발생", - "Error when creating the folder" : "폴더 생성 중 오류 발생", "Unable to set upload directory." : "업로드 디렉터리를 설정할 수 없습니다.", "Invalid Token" : "잘못된 토큰", "No file was uploaded. Unknown error" : "파일이 업로드 되지 않았습니다. 알 수 없는 오류입니다", @@ -22,6 +15,7 @@ OC.L10N.register( "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." : "올바르지 않은 디렉터리입니다.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "날짜를 결정할 수 없음", "This operation is forbidden" : "이 작업이 금지됨", "This directory is unavailable, please check the logs or contact the administrator" : "디렉터리를 사용할 수 없습니다. 로그를 확인하거나 관리자에게 연락하십시오", - "Error moving file." : "파일 이동 오류.", - "Error moving file" : "파일 이동 오류", - "Error" : "오류", - "{new_name} already exists" : "{new_name}이(가) 이미 존재함", - "Could not rename file" : "이름을 변경할 수 없음", - "Could not create file" : "파일을 만들 수 없음", - "Could not create folder" : "폴더를 만들 수 없음", - "Error deleting file." : "파일 삭제 오류.", "No entries in this folder match '{filter}'" : "이 폴더에 '{filter}'와(과) 일치하는 항목 없음", "Name" : "이름", "Size" : "크기", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n바이트"], "Favorited" : "책갈피에 추가됨", "Favorite" : "즐겨찾기", - "Text file" : "텍스트 파일", - "New text file.txt" : "새 텍스트 파일.txt", "Folder" : "폴더", "New folder" : "새 폴더", "{newname} already exists" : "{newname} 항목이 이미 존재함", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "%2$s 님이 변경함", "Deleted by %2$s" : "%2$s 님이 삭제함", "Restored by %2$s" : "%2$s 님이 복원함", - "%s could not be renamed as it has been deleted" : "%s이(가) 삭제되었기 때문에 이름을 변경할 수 없습니다", - "%s could not be renamed" : "%s의 이름을 변경할 수 없습니다", "Upload (max. %s)" : "업로드(최대 %s)", "File handling" : "파일 처리", "Maximum upload size" : "최대 업로드 크기", @@ -119,6 +101,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "파일을 검색하고 있습니다. 기다려 주십시오.", "Currently scanning" : "현재 검사 중", "No favorites" : "책갈피 없음", - "Files and folders you mark as favorite will show up here" : "책갈피에 추가한 파일과 폴더가 여기에 나타납니다" + "Files and folders you mark as favorite will show up here" : "책갈피에 추가한 파일과 폴더가 여기에 나타납니다", + "Text file" : "텍스트 파일", + "New text file.txt" : "새 텍스트 파일.txt" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json index 65e61d8ec49..1e77ab1b9bc 100644 --- a/apps/files/l10n/ko.json +++ b/apps/files/l10n/ko.json @@ -2,13 +2,6 @@ "Storage not available" : "저장소를 사용할 수 없음", "Storage invalid" : "저장소가 잘못됨", "Unknown error" : "알 수 없는 오류", - "Could not move %s - File with this name already exists" : "항목 %s을(를) 이동시킬 수 없음 - 같은 이름의 파일이 이미 존재함", - "Could not move %s" : "항목 %s을(를) 이동시킬 수 없음", - "Permission denied" : "권한 거부됨", - "The target folder has been moved or deleted." : "대상 폴더가 이동되거나 삭제되었습니다.", - "The name %s is already used in the folder %s. Please choose a different name." : "이름 %s이(가) 폴더 %s에서 이미 사용 중입니다. 다른 이름을 사용하십시오.", - "Error when creating the file" : "파일 생성 중 오류 발생", - "Error when creating the folder" : "폴더 생성 중 오류 발생", "Unable to set upload directory." : "업로드 디렉터리를 설정할 수 없습니다.", "Invalid Token" : "잘못된 토큰", "No file was uploaded. Unknown error" : "파일이 업로드 되지 않았습니다. 알 수 없는 오류입니다", @@ -20,6 +13,7 @@ "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." : "올바르지 않은 디렉터리입니다.", @@ -44,14 +38,6 @@ "Unable to determine date" : "날짜를 결정할 수 없음", "This operation is forbidden" : "이 작업이 금지됨", "This directory is unavailable, please check the logs or contact the administrator" : "디렉터리를 사용할 수 없습니다. 로그를 확인하거나 관리자에게 연락하십시오", - "Error moving file." : "파일 이동 오류.", - "Error moving file" : "파일 이동 오류", - "Error" : "오류", - "{new_name} already exists" : "{new_name}이(가) 이미 존재함", - "Could not rename file" : "이름을 변경할 수 없음", - "Could not create file" : "파일을 만들 수 없음", - "Could not create folder" : "폴더를 만들 수 없음", - "Error deleting file." : "파일 삭제 오류.", "No entries in this folder match '{filter}'" : "이 폴더에 '{filter}'와(과) 일치하는 항목 없음", "Name" : "이름", "Size" : "크기", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n바이트"], "Favorited" : "책갈피에 추가됨", "Favorite" : "즐겨찾기", - "Text file" : "텍스트 파일", - "New text file.txt" : "새 텍스트 파일.txt", "Folder" : "폴더", "New folder" : "새 폴더", "{newname} already exists" : "{newname} 항목이 이미 존재함", @@ -97,8 +81,6 @@ "Changed by %2$s" : "%2$s 님이 변경함", "Deleted by %2$s" : "%2$s 님이 삭제함", "Restored by %2$s" : "%2$s 님이 복원함", - "%s could not be renamed as it has been deleted" : "%s이(가) 삭제되었기 때문에 이름을 변경할 수 없습니다", - "%s could not be renamed" : "%s의 이름을 변경할 수 없습니다", "Upload (max. %s)" : "업로드(최대 %s)", "File handling" : "파일 처리", "Maximum upload size" : "최대 업로드 크기", @@ -117,6 +99,8 @@ "Files are being scanned, please wait." : "파일을 검색하고 있습니다. 기다려 주십시오.", "Currently scanning" : "현재 검사 중", "No favorites" : "책갈피 없음", - "Files and folders you mark as favorite will show up here" : "책갈피에 추가한 파일과 폴더가 여기에 나타납니다" + "Files and folders you mark as favorite will show up here" : "책갈피에 추가한 파일과 폴더가 여기에 나타납니다", + "Text file" : "텍스트 파일", + "New text file.txt" : "새 텍스트 파일.txt" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/l10n/ku_IQ.js b/apps/files/l10n/ku_IQ.js index 7a995636ec9..1ceca50b705 100644 --- a/apps/files/l10n/ku_IQ.js +++ b/apps/files/l10n/ku_IQ.js @@ -6,7 +6,6 @@ OC.L10N.register( "Close" : "دابخه", "Download" : "داگرتن", "Select" : "دیاریکردنی", - "Error" : "ههڵه", "Name" : "ناو", "Folder" : "بوخچه", "Upload" : "بارکردن", diff --git a/apps/files/l10n/ku_IQ.json b/apps/files/l10n/ku_IQ.json index f39269efd39..e934b5eb29b 100644 --- a/apps/files/l10n/ku_IQ.json +++ b/apps/files/l10n/ku_IQ.json @@ -4,7 +4,6 @@ "Close" : "دابخه", "Download" : "داگرتن", "Select" : "دیاریکردنی", - "Error" : "ههڵه", "Name" : "ناو", "Folder" : "بوخچه", "Upload" : "بارکردن", diff --git a/apps/files/l10n/lb.js b/apps/files/l10n/lb.js index 97cb28477f1..39e12b763cd 100644 --- a/apps/files/l10n/lb.js +++ b/apps/files/l10n/lb.js @@ -19,12 +19,10 @@ OC.L10N.register( "Delete" : "Läschen", "Details" : "Detailer", "Select" : "Auswielen", - "Error" : "Fehler", "Name" : "Numm", "Size" : "Gréisst", "Modified" : "Geännert", "New" : "Nei", - "Text file" : "Text Fichier", "Folder" : "Dossier", "New folder" : "Neien Dossier", "Upload" : "Eroplueden", @@ -38,6 +36,7 @@ OC.L10N.register( "Select all" : "All auswielen", "Upload too large" : "Upload ze grouss", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Déi Dateien déi Dir probéiert erop ze lueden sinn méi grouss wei déi Maximal Gréisst déi op dësem Server erlaabt ass.", - "Files are being scanned, please wait." : "Fichieren gi gescannt, war weg." + "Files are being scanned, please wait." : "Fichieren gi gescannt, war weg.", + "Text file" : "Text Fichier" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/lb.json b/apps/files/l10n/lb.json index c3dae7b0b88..95148452566 100644 --- a/apps/files/l10n/lb.json +++ b/apps/files/l10n/lb.json @@ -17,12 +17,10 @@ "Delete" : "Läschen", "Details" : "Detailer", "Select" : "Auswielen", - "Error" : "Fehler", "Name" : "Numm", "Size" : "Gréisst", "Modified" : "Geännert", "New" : "Nei", - "Text file" : "Text Fichier", "Folder" : "Dossier", "New folder" : "Neien Dossier", "Upload" : "Eroplueden", @@ -36,6 +34,7 @@ "Select all" : "All auswielen", "Upload too large" : "Upload ze grouss", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Déi Dateien déi Dir probéiert erop ze lueden sinn méi grouss wei déi Maximal Gréisst déi op dësem Server erlaabt ass.", - "Files are being scanned, please wait." : "Fichieren gi gescannt, war weg." + "Files are being scanned, please wait." : "Fichieren gi gescannt, war weg.", + "Text file" : "Text Fichier" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/lo.js b/apps/files/l10n/lo.js index 2f3b6e43d61..2d01379b83d 100644 --- a/apps/files/l10n/lo.js +++ b/apps/files/l10n/lo.js @@ -4,9 +4,6 @@ OC.L10N.register( "Storage not available" : "ບໍ່ມີພື້ນທີ່ເກັບຂໍ້ມູນ", "Storage invalid" : "ພື້ນທີ່ເກັບຂໍ້ມູນບໍ່ຖືກຕ້ອງ", "Unknown error" : "ຂໍ້ຜິດພາດທີ່ບໍ່ຮູ້ສາເຫດ", - "Could not move %s - File with this name already exists" : "ບໍ່ສາມາດຍ້າຍໄຟລ໌ %s ນີ້ໄດ້ - ຊື່ໄຟລ໌ນີ້ຖືກນຳໃຊ້ແລ້ວ", - "Could not move %s" : "ບໍ່ສາມາດຍ້າຍ %s ໄດ້", - "Permission denied" : "ບໍ່ທີສິດໃນການເຂົ້າເຖິງ", "The target folder has been moved or deleted." : "ໂຟນເດີທີ່ທ່ານເລືອກໄດ້ຖືກຍ້າຍ ຫຼື ລຶບອອກແລ້ວ" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/lo.json b/apps/files/l10n/lo.json index c7bfdc31dbb..12eea86a936 100644 --- a/apps/files/l10n/lo.json +++ b/apps/files/l10n/lo.json @@ -2,9 +2,6 @@ "Storage not available" : "ບໍ່ມີພື້ນທີ່ເກັບຂໍ້ມູນ", "Storage invalid" : "ພື້ນທີ່ເກັບຂໍ້ມູນບໍ່ຖືກຕ້ອງ", "Unknown error" : "ຂໍ້ຜິດພາດທີ່ບໍ່ຮູ້ສາເຫດ", - "Could not move %s - File with this name already exists" : "ບໍ່ສາມາດຍ້າຍໄຟລ໌ %s ນີ້ໄດ້ - ຊື່ໄຟລ໌ນີ້ຖືກນຳໃຊ້ແລ້ວ", - "Could not move %s" : "ບໍ່ສາມາດຍ້າຍ %s ໄດ້", - "Permission denied" : "ບໍ່ທີສິດໃນການເຂົ້າເຖິງ", "The target folder has been moved or deleted." : "ໂຟນເດີທີ່ທ່ານເລືອກໄດ້ຖືກຍ້າຍ ຫຼື ລຶບອອກແລ້ວ" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/l10n/lt_LT.js b/apps/files/l10n/lt_LT.js index ac7084cfc2d..b4001e0c8ea 100644 --- a/apps/files/l10n/lt_LT.js +++ b/apps/files/l10n/lt_LT.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Saugykla nepasiekiama", "Storage invalid" : "Saugykla neteisinga", "Unknown error" : "Neatpažinta klaida", - "Could not move %s - File with this name already exists" : "Nepavyko perkelti %s - failas su tokiu pavadinimu jau egzistuoja", - "Could not move %s" : "Nepavyko perkelti %s", - "Permission denied" : "Neturite teisių", - "The target folder has been moved or deleted." : "Tikslo aplankas buvo perkeltas ar ištrintas.", - "The name %s is already used in the folder %s. Please choose a different name." : "Pavadinimas %s jau naudojamas aplanke %s. Prašome pasirinkti kitokį pavadinimą.", - "Error when creating the file" : "Klaida kuriant failą", - "Error when creating the folder" : "Klaida kuriant aplanką", "Unable to set upload directory." : "Nepavyksta nustatyti įkėlimų katalogo.", "Invalid Token" : "Netinkamas ženklas", "No file was uploaded. Unknown error" : "Failai nebuvo įkelti dėl nežinomos priežasties", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Nėra laikinojo katalogo", "Failed to write to disk" : "Nepavyko įrašyti į diską", "Not enough storage available" : "Nepakanka vietos serveryje", + "The target folder has been moved or deleted." : "Tikslo aplankas buvo perkeltas ar ištrintas.", "Upload failed. Could not find uploaded file" : "Įkėlimas nepavyko. Nepavyko rasti įkelto failo", "Upload failed. Could not get file info." : "Įkėlimas nepavyko. Nepavyko gauti failo informacijos.", "Invalid directory." : "Neteisingas aplankas", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Nepavyksta nustatyti datos", "This operation is forbidden" : "Ši operacija yra uždrausta", "This directory is unavailable, please check the logs or contact the administrator" : "Katalogas nepasiekiamas, prašome peržiūrėti žurnalo įrašus arba susisiekti su administratoriumi", - "Error moving file." : "Klaida perkeliant failą.", - "Error moving file" : "Klaida perkeliant failą", - "Error" : "Klaida", - "{new_name} already exists" : "{new_name} jau egzistuoja", - "Could not rename file" : "Neįmanoma pervadinti failo", - "Could not create file" : "Neįmanoma sukurti failo", - "Could not create folder" : "Neįmanoma sukurti aplanko", - "Error deleting file." : "Klaida trinant failą.", "No entries in this folder match '{filter}'" : "Nėra įrašų šiame aplanko atitikmeniui „{filter}“", "Name" : "Pavadinimas", "Size" : "Dydis", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų"], "Favorited" : "Pažymėta mėgstamu", "Favorite" : "Mėgiamas", - "Text file" : "Teksto failas", - "New text file.txt" : "Naujas tekstas file.txt", "Folder" : "Katalogas", "New folder" : "Naujas aplankas", "{newname} already exists" : "{newname} jau egzistuoja", @@ -99,13 +83,13 @@ OC.L10N.register( "Changed by %2$s" : "Pakeitė %2$s", "Deleted by %2$s" : "Ištrynė %2$s", "Restored by %2$s" : "Atkūrė %2$s", - "%s could not be renamed as it has been deleted" : "%s negalėjo būti pervadintas, nes buvo ištrintas", - "%s could not be renamed" : "%s negali būti pervadintas", "Upload (max. %s)" : "Įkelti (maks. %s)", "File handling" : "Failų tvarkymas", "Maximum upload size" : "Maksimalus įkeliamo failo dydis", "max. possible: " : "maks. galima:", "Save" : "Išsaugoti", + "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", "Settings" : "Nustatymai", "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Naudokite šį adresą, kad <a href=\"%s\" target=\"_blank\">pasiektumėte savo failus per WebDAV</a>", @@ -119,6 +103,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Skenuojami failai, prašome palaukti.", "Currently scanning" : "Šiuo metu skenuojama", "No favorites" : "Nėra mėgstamiausių", - "Files and folders you mark as favorite will show up here" : "Failai ir aplankai, kuriuos pažymite mėgstamais, atsiras čia" + "Files and folders you mark as favorite will show up here" : "Failai ir aplankai, kuriuos pažymite mėgstamais, atsiras čia", + "Text file" : "Teksto failas", + "New text file.txt" : "Naujas tekstas file.txt" }, "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 aef54469542..ba8610da86b 100644 --- a/apps/files/l10n/lt_LT.json +++ b/apps/files/l10n/lt_LT.json @@ -2,13 +2,6 @@ "Storage not available" : "Saugykla nepasiekiama", "Storage invalid" : "Saugykla neteisinga", "Unknown error" : "Neatpažinta klaida", - "Could not move %s - File with this name already exists" : "Nepavyko perkelti %s - failas su tokiu pavadinimu jau egzistuoja", - "Could not move %s" : "Nepavyko perkelti %s", - "Permission denied" : "Neturite teisių", - "The target folder has been moved or deleted." : "Tikslo aplankas buvo perkeltas ar ištrintas.", - "The name %s is already used in the folder %s. Please choose a different name." : "Pavadinimas %s jau naudojamas aplanke %s. Prašome pasirinkti kitokį pavadinimą.", - "Error when creating the file" : "Klaida kuriant failą", - "Error when creating the folder" : "Klaida kuriant aplanką", "Unable to set upload directory." : "Nepavyksta nustatyti įkėlimų katalogo.", "Invalid Token" : "Netinkamas ženklas", "No file was uploaded. Unknown error" : "Failai nebuvo įkelti dėl nežinomos priežasties", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Nėra laikinojo katalogo", "Failed to write to disk" : "Nepavyko įrašyti į diską", "Not enough storage available" : "Nepakanka vietos serveryje", + "The target folder has been moved or deleted." : "Tikslo aplankas buvo perkeltas ar ištrintas.", "Upload failed. Could not find uploaded file" : "Įkėlimas nepavyko. Nepavyko rasti įkelto failo", "Upload failed. Could not get file info." : "Įkėlimas nepavyko. Nepavyko gauti failo informacijos.", "Invalid directory." : "Neteisingas aplankas", @@ -44,14 +38,6 @@ "Unable to determine date" : "Nepavyksta nustatyti datos", "This operation is forbidden" : "Ši operacija yra uždrausta", "This directory is unavailable, please check the logs or contact the administrator" : "Katalogas nepasiekiamas, prašome peržiūrėti žurnalo įrašus arba susisiekti su administratoriumi", - "Error moving file." : "Klaida perkeliant failą.", - "Error moving file" : "Klaida perkeliant failą", - "Error" : "Klaida", - "{new_name} already exists" : "{new_name} jau egzistuoja", - "Could not rename file" : "Neįmanoma pervadinti failo", - "Could not create file" : "Neįmanoma sukurti failo", - "Could not create folder" : "Neįmanoma sukurti aplanko", - "Error deleting file." : "Klaida trinant failą.", "No entries in this folder match '{filter}'" : "Nėra įrašų šiame aplanko atitikmeniui „{filter}“", "Name" : "Pavadinimas", "Size" : "Dydis", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų"], "Favorited" : "Pažymėta mėgstamu", "Favorite" : "Mėgiamas", - "Text file" : "Teksto failas", - "New text file.txt" : "Naujas tekstas file.txt", "Folder" : "Katalogas", "New folder" : "Naujas aplankas", "{newname} already exists" : "{newname} jau egzistuoja", @@ -97,13 +81,13 @@ "Changed by %2$s" : "Pakeitė %2$s", "Deleted by %2$s" : "Ištrynė %2$s", "Restored by %2$s" : "Atkūrė %2$s", - "%s could not be renamed as it has been deleted" : "%s negalėjo būti pervadintas, nes buvo ištrintas", - "%s could not be renamed" : "%s negali būti pervadintas", "Upload (max. %s)" : "Įkelti (maks. %s)", "File handling" : "Failų tvarkymas", "Maximum upload size" : "Maksimalus įkeliamo failo dydis", "max. possible: " : "maks. galima:", "Save" : "Išsaugoti", + "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", "Settings" : "Nustatymai", "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Naudokite šį adresą, kad <a href=\"%s\" target=\"_blank\">pasiektumėte savo failus per WebDAV</a>", @@ -117,6 +101,8 @@ "Files are being scanned, please wait." : "Skenuojami failai, prašome palaukti.", "Currently scanning" : "Šiuo metu skenuojama", "No favorites" : "Nėra mėgstamiausių", - "Files and folders you mark as favorite will show up here" : "Failai ir aplankai, kuriuos pažymite mėgstamais, atsiras čia" + "Files and folders you mark as favorite will show up here" : "Failai ir aplankai, kuriuos pažymite mėgstamais, atsiras čia", + "Text file" : "Teksto failas", + "New text file.txt" : "Naujas tekstas file.txt" },"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 ad18fe93244..d615c8e5d28 100644 --- a/apps/files/l10n/lv.js +++ b/apps/files/l10n/lv.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Glabātuve nav pieejama", "Storage invalid" : "Nepareiza krātuve", "Unknown error" : "Nezināma kļūda", - "Could not move %s - File with this name already exists" : "Nevarēja pārvietot %s — jau eksistē datne ar tādu nosaukumu", - "Could not move %s" : "Nevarēja pārvietot %s", - "Permission denied" : "Pieeja liegta", - "The target folder has been moved or deleted." : "Mērķa mape ir pārvietota vai dzēsta", - "The name %s is already used in the folder %s. Please choose a different name." : "Nosaukums '%s' jau tiek izmantots mapē '%s'. Lūdzu izvēlieties citu nosaukumu.", - "Error when creating the file" : "Kļūda veidojot datni", - "Error when creating the folder" : "Kļūda, veidojot mapi", "Unable to set upload directory." : "Nevar uzstādīt augšupielādes mapi.", "Invalid Token" : "Nepareiza pilnvara", "No file was uploaded. Unknown error" : "Netika augšupielādēta neviena datne. Nezināma kļūda", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Trūkst pagaidu mapes", "Failed to write to disk" : "Neizdevās saglabāt diskā", "Not enough storage available" : "Nav pietiekami daudz vietas", + "The target folder has been moved or deleted." : "Mērķa mape ir pārvietota vai dzēsta", "Upload failed. Could not find uploaded file" : "Augšupielāde nesekmīga. Neizdevās atrast augšupielādēto failu.", "Upload failed. Could not get file info." : "Augšupielāde nesekmīga. Neizdevās iegūt informāciju par failu.", "Invalid directory." : "Nederīga direktorija.", @@ -44,14 +38,6 @@ OC.L10N.register( "Select" : "Norādīt", "Pending" : "Gaida savu kārtu", "Unable to determine date" : "Neizdevās noteikt datumu", - "Error moving file." : "Kļūda, pārvietojot datni.", - "Error moving file" : "Kļūda, pārvietojot datni", - "Error" : "Kļūda", - "{new_name} already exists" : "{new_name} jau eksistē", - "Could not rename file" : "Neizdevās pārsaukt datni", - "Could not create file" : "Neizdevās izveidot datni", - "Could not create folder" : "Neizdevās izveidot mapi", - "Error deleting file." : "Kļūda, dzēšot datni.", "No entries in this folder match '{filter}'" : "Šajā mapē nekas nav atrasts, meklējot pēc '{filter}'", "Name" : "Nosaukums", "Size" : "Izmērs", @@ -69,7 +55,6 @@ OC.L10N.register( "_matches '{filter}'_::_match '{filter}'_" : ["atrasts pēc '{filter}'","atrasts pēc '{filter}'","atrasti pēc '{filter}'"], "Favorited" : "Favorīti", "Favorite" : "Iecienītais", - "Text file" : "Teksta datne", "Folder" : "Mape", "New folder" : "Jauna mape", "Upload" : "Augšupielādēt", @@ -87,8 +72,6 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s izdzēsa %1$s", "You restored %1$s" : "Tu atjaunoji %1$s", "%2$s restored %1$s" : "%2$s atjaunoja %1$s", - "%s could not be renamed as it has been deleted" : "Nevarēja pārsaukt %s, jo tas ir dzēsts", - "%s could not be renamed" : "%s nevar tikt pārsaukts", "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", @@ -106,6 +89,7 @@ OC.L10N.register( "Files are being scanned, please wait." : "Datnes šobrīd tiek caurskatītas, lūdzu, uzgaidiet.", "Currently scanning" : "Pašlaik skenē", "No favorites" : "Nav favorītu", - "Files and folders you mark as favorite will show up here" : "Faili un mapes, ko atzīmēsit kā favorītus, tiks rādīti šeit" + "Files and folders you mark as favorite will show up here" : "Faili un mapes, ko atzīmēsit kā favorītus, tiks rādīti šeit", + "Text file" : "Teksta datne" }, "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 16ac9adf08d..0888d81ad64 100644 --- a/apps/files/l10n/lv.json +++ b/apps/files/l10n/lv.json @@ -2,13 +2,6 @@ "Storage not available" : "Glabātuve nav pieejama", "Storage invalid" : "Nepareiza krātuve", "Unknown error" : "Nezināma kļūda", - "Could not move %s - File with this name already exists" : "Nevarēja pārvietot %s — jau eksistē datne ar tādu nosaukumu", - "Could not move %s" : "Nevarēja pārvietot %s", - "Permission denied" : "Pieeja liegta", - "The target folder has been moved or deleted." : "Mērķa mape ir pārvietota vai dzēsta", - "The name %s is already used in the folder %s. Please choose a different name." : "Nosaukums '%s' jau tiek izmantots mapē '%s'. Lūdzu izvēlieties citu nosaukumu.", - "Error when creating the file" : "Kļūda veidojot datni", - "Error when creating the folder" : "Kļūda, veidojot mapi", "Unable to set upload directory." : "Nevar uzstādīt augšupielādes mapi.", "Invalid Token" : "Nepareiza pilnvara", "No file was uploaded. Unknown error" : "Netika augšupielādēta neviena datne. Nezināma kļūda", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Trūkst pagaidu mapes", "Failed to write to disk" : "Neizdevās saglabāt diskā", "Not enough storage available" : "Nav pietiekami daudz vietas", + "The target folder has been moved or deleted." : "Mērķa mape ir pārvietota vai dzēsta", "Upload failed. Could not find uploaded file" : "Augšupielāde nesekmīga. Neizdevās atrast augšupielādēto failu.", "Upload failed. Could not get file info." : "Augšupielāde nesekmīga. Neizdevās iegūt informāciju par failu.", "Invalid directory." : "Nederīga direktorija.", @@ -42,14 +36,6 @@ "Select" : "Norādīt", "Pending" : "Gaida savu kārtu", "Unable to determine date" : "Neizdevās noteikt datumu", - "Error moving file." : "Kļūda, pārvietojot datni.", - "Error moving file" : "Kļūda, pārvietojot datni", - "Error" : "Kļūda", - "{new_name} already exists" : "{new_name} jau eksistē", - "Could not rename file" : "Neizdevās pārsaukt datni", - "Could not create file" : "Neizdevās izveidot datni", - "Could not create folder" : "Neizdevās izveidot mapi", - "Error deleting file." : "Kļūda, dzēšot datni.", "No entries in this folder match '{filter}'" : "Šajā mapē nekas nav atrasts, meklējot pēc '{filter}'", "Name" : "Nosaukums", "Size" : "Izmērs", @@ -67,7 +53,6 @@ "_matches '{filter}'_::_match '{filter}'_" : ["atrasts pēc '{filter}'","atrasts pēc '{filter}'","atrasti pēc '{filter}'"], "Favorited" : "Favorīti", "Favorite" : "Iecienītais", - "Text file" : "Teksta datne", "Folder" : "Mape", "New folder" : "Jauna mape", "Upload" : "Augšupielādēt", @@ -85,8 +70,6 @@ "%2$s deleted %1$s" : "%2$s izdzēsa %1$s", "You restored %1$s" : "Tu atjaunoji %1$s", "%2$s restored %1$s" : "%2$s atjaunoja %1$s", - "%s could not be renamed as it has been deleted" : "Nevarēja pārsaukt %s, jo tas ir dzēsts", - "%s could not be renamed" : "%s nevar tikt pārsaukts", "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", @@ -104,6 +87,7 @@ "Files are being scanned, please wait." : "Datnes šobrīd tiek caurskatītas, lūdzu, uzgaidiet.", "Currently scanning" : "Pašlaik skenē", "No favorites" : "Nav favorītu", - "Files and folders you mark as favorite will show up here" : "Faili un mapes, ko atzīmēsit kā favorītus, tiks rādīti šeit" + "Files and folders you mark as favorite will show up here" : "Faili un mapes, ko atzīmēsit kā favorītus, tiks rādīti šeit", + "Text file" : "Teksta datne" },"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/mk.js b/apps/files/l10n/mk.js index a87cdcdc371..92616a372a3 100644 --- a/apps/files/l10n/mk.js +++ b/apps/files/l10n/mk.js @@ -2,10 +2,6 @@ OC.L10N.register( "files", { "Unknown error" : "Непозната грешка", - "Could not move %s - File with this name already exists" : "Не можам да го преместам %s - Датотека со такво име веќе постои", - "Could not move %s" : "Не можам да ги префрлам %s", - "Error when creating the file" : "Грешка при креирање на датотека", - "Error when creating the folder" : "Грешка при креирање на папка", "Unable to set upload directory." : "Не може да се постави папката за префрлање на податоци.", "Invalid Token" : "Грешен токен", "No file was uploaded. Unknown error" : "Ниту еден фајл не се вчита. Непозната грешка", @@ -33,12 +29,6 @@ OC.L10N.register( "Details" : "Детали:", "Select" : "Избери", "Pending" : "Чека", - "Error moving file" : "Грешка при префрлање на датотека", - "Error" : "Грешка", - "{new_name} already exists" : "{new_name} веќе постои", - "Could not rename file" : "Не можам да ја преименувам датотеката", - "Could not create file" : "Не множам да креирам датотека", - "Could not create folder" : "Не можам да креирам папка", "Name" : "Име", "Size" : "Големина", "Modified" : "Променето", @@ -47,7 +37,6 @@ OC.L10N.register( "File name cannot be empty." : "Името на датотеката не може да биде празно.", "Your storage is full, files can not be updated or synced anymore!" : "Вашиот сториџ е полн, датотеките веќе не можат да се освежуваат или синхронизираат!", "Your storage is almost full ({usedSpacePercent}%)" : "Вашиот сториџ е скоро полн ({usedSpacePercent}%)", - "Text file" : "Текстуална датотека", "Folder" : "Папка", "New folder" : "Нова папка", "Upload" : "Подигни", @@ -57,7 +46,6 @@ OC.L10N.register( "%2$s changed %1$s" : "%2$s променето %1$s", "You deleted %1$s" : "Вие избришавте %1$s", "%2$s deleted %1$s" : "%2$s избришани %1$s", - "%s could not be renamed" : "%s не може да биде преименуван", "Upload (max. %s)" : "Префрлање (макс. %s)", "File handling" : "Ракување со датотеки", "Maximum upload size" : "Максимална големина за подигање", @@ -68,6 +56,7 @@ OC.L10N.register( "Cancel upload" : "Откажи прикачување", "Upload too large" : "Фајлот кој се вчитува е преголем", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Датотеките кои се обидувате да ги подигнете ја надминуваат максималната големина за подигнување датотеки на овој сервер.", - "Files are being scanned, please wait." : "Се скенираат датотеки, ве молам почекајте." + "Files are being scanned, please wait." : "Се скенираат датотеки, ве молам почекајте.", + "Text file" : "Текстуална датотека" }, "nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"); diff --git a/apps/files/l10n/mk.json b/apps/files/l10n/mk.json index 49e2fce36d7..147707256c6 100644 --- a/apps/files/l10n/mk.json +++ b/apps/files/l10n/mk.json @@ -1,9 +1,5 @@ { "translations": { "Unknown error" : "Непозната грешка", - "Could not move %s - File with this name already exists" : "Не можам да го преместам %s - Датотека со такво име веќе постои", - "Could not move %s" : "Не можам да ги префрлам %s", - "Error when creating the file" : "Грешка при креирање на датотека", - "Error when creating the folder" : "Грешка при креирање на папка", "Unable to set upload directory." : "Не може да се постави папката за префрлање на податоци.", "Invalid Token" : "Грешен токен", "No file was uploaded. Unknown error" : "Ниту еден фајл не се вчита. Непозната грешка", @@ -31,12 +27,6 @@ "Details" : "Детали:", "Select" : "Избери", "Pending" : "Чека", - "Error moving file" : "Грешка при префрлање на датотека", - "Error" : "Грешка", - "{new_name} already exists" : "{new_name} веќе постои", - "Could not rename file" : "Не можам да ја преименувам датотеката", - "Could not create file" : "Не множам да креирам датотека", - "Could not create folder" : "Не можам да креирам папка", "Name" : "Име", "Size" : "Големина", "Modified" : "Променето", @@ -45,7 +35,6 @@ "File name cannot be empty." : "Името на датотеката не може да биде празно.", "Your storage is full, files can not be updated or synced anymore!" : "Вашиот сториџ е полн, датотеките веќе не можат да се освежуваат или синхронизираат!", "Your storage is almost full ({usedSpacePercent}%)" : "Вашиот сториџ е скоро полн ({usedSpacePercent}%)", - "Text file" : "Текстуална датотека", "Folder" : "Папка", "New folder" : "Нова папка", "Upload" : "Подигни", @@ -55,7 +44,6 @@ "%2$s changed %1$s" : "%2$s променето %1$s", "You deleted %1$s" : "Вие избришавте %1$s", "%2$s deleted %1$s" : "%2$s избришани %1$s", - "%s could not be renamed" : "%s не може да биде преименуван", "Upload (max. %s)" : "Префрлање (макс. %s)", "File handling" : "Ракување со датотеки", "Maximum upload size" : "Максимална големина за подигање", @@ -66,6 +54,7 @@ "Cancel upload" : "Откажи прикачување", "Upload too large" : "Фајлот кој се вчитува е преголем", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Датотеките кои се обидувате да ги подигнете ја надминуваат максималната големина за подигнување датотеки на овој сервер.", - "Files are being scanned, please wait." : "Се скенираат датотеки, ве молам почекајте." + "Files are being scanned, please wait." : "Се скенираат датотеки, ве молам почекајте.", + "Text file" : "Текстуална датотека" },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" }
\ No newline at end of file diff --git a/apps/files/l10n/ms_MY.js b/apps/files/l10n/ms_MY.js index b57c1e61ca9..b60faff6bd9 100644 --- a/apps/files/l10n/ms_MY.js +++ b/apps/files/l10n/ms_MY.js @@ -16,12 +16,10 @@ OC.L10N.register( "Rename" : "Namakan", "Delete" : "Padam", "Pending" : "Dalam proses", - "Error" : "Ralat", "Name" : "Nama", "Size" : "Saiz", "Modified" : "Dimodifikasi", "New" : "Baru", - "Text file" : "Fail teks", "Folder" : "Folder", "Upload" : "Muat naik", "You created %1$s" : "Anda telah membina %1$s", @@ -35,6 +33,7 @@ OC.L10N.register( "Cancel upload" : "Batal muat naik", "Upload too large" : "Muatnaik terlalu besar", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Fail yang cuba dimuat naik melebihi saiz maksimum fail upload server", - "Files are being scanned, please wait." : "Fail sedang diimbas, harap bersabar." + "Files are being scanned, please wait." : "Fail sedang diimbas, harap bersabar.", + "Text file" : "Fail teks" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/ms_MY.json b/apps/files/l10n/ms_MY.json index e9db1fcad9d..fa78e9446b7 100644 --- a/apps/files/l10n/ms_MY.json +++ b/apps/files/l10n/ms_MY.json @@ -14,12 +14,10 @@ "Rename" : "Namakan", "Delete" : "Padam", "Pending" : "Dalam proses", - "Error" : "Ralat", "Name" : "Nama", "Size" : "Saiz", "Modified" : "Dimodifikasi", "New" : "Baru", - "Text file" : "Fail teks", "Folder" : "Folder", "Upload" : "Muat naik", "You created %1$s" : "Anda telah membina %1$s", @@ -33,6 +31,7 @@ "Cancel upload" : "Batal muat naik", "Upload too large" : "Muatnaik terlalu besar", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Fail yang cuba dimuat naik melebihi saiz maksimum fail upload server", - "Files are being scanned, please wait." : "Fail sedang diimbas, harap bersabar." + "Files are being scanned, please wait." : "Fail sedang diimbas, harap bersabar.", + "Text file" : "Fail teks" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/l10n/nb_NO.js b/apps/files/l10n/nb_NO.js index a1f8def347e..9d01ad626b7 100644 --- a/apps/files/l10n/nb_NO.js +++ b/apps/files/l10n/nb_NO.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Lagringsplass ikke tilgjengelig", "Storage invalid" : "Lagringsplass ugyldig", "Unknown error" : "Ukjent feil", - "Could not move %s - File with this name already exists" : "Kan ikke flytte %s - En fil med samme navn finnes allerede", - "Could not move %s" : "Kunne ikke flytte %s", - "Permission denied" : "Tilgang nektet", - "The target folder has been moved or deleted." : "Målmappen er blitt flyttet eller slettet.", - "The name %s is already used in the folder %s. Please choose a different name." : "Navnet %s brukes allerede i mappen %s. Velg et annet navn.", - "Error when creating the file" : "Feil ved oppretting av filen", - "Error when creating the folder" : "Feil ved oppretting av mappen", "Unable to set upload directory." : "Kunne ikke sette opplastingskatalog.", "Invalid Token" : "Ugyldig nøkkel", "No file was uploaded. Unknown error" : "Ingen filer ble lastet opp. Ukjent feil.", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Mangler midlertidig mappe", "Failed to write to disk" : "Klarte ikke å skrive til disk", "Not enough storage available" : "Ikke nok lagringsplass", + "The target folder has been moved or deleted." : "Målmappen er blitt flyttet eller slettet.", "Upload failed. Could not find uploaded file" : "Opplasting feilet. Fant ikke opplastet fil.", "Upload failed. Could not get file info." : "Opplasting feilet. Klarte ikke å finne informasjon om fil.", "Invalid directory." : "Ugyldig katalog.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Kan ikke fastslå datoen", "This operation is forbidden" : "Operasjonen er forbudt", "This directory is unavailable, please check the logs or contact the administrator" : "Denne mappen er utilgjengelig. Sjekk loggene eller kontakt administrator", - "Error moving file." : "Feil ved flytting av fil.", - "Error moving file" : "Feil ved flytting av fil", - "Error" : "Feil", - "{new_name} already exists" : "{new_name} finnes allerede", - "Could not rename file" : "Klarte ikke å gi nytt navn til fil", - "Could not create file" : "Klarte ikke å opprette fil", - "Could not create folder" : "Klarte ikke å opprette mappe", - "Error deleting file." : "Feil ved sletting av fil.", "No entries in this folder match '{filter}'" : "Ingen oppføringer i denne mappen stemmer med '{filter}'", "Name" : "Navn", "Size" : "Størrelse", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Er favoritt", "Favorite" : "Gjør til favoritt", - "Text file" : "Tekstfil", - "New text file.txt" : "Ny tekstfil.txt", "Folder" : "Mappe", "New folder" : "Ny mappe", "{newname} already exists" : "{newname} finnes allerede", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "Endret av %2$s", "Deleted by %2$s" : "Slettet av %2$s", "Restored by %2$s" : "Gjenopprettet av %2$s", - "%s could not be renamed as it has been deleted" : "%s kunne ikke gis nytt navn da den er blitt slettet", - "%s could not be renamed" : "Kunne ikke gi nytt navn til %s", "Upload (max. %s)" : "Opplasting (maks. %s)", "File handling" : "Filhåndtering", "Maximum upload size" : "Største opplastingsstørrelse", @@ -119,6 +101,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Skanner filer, vennligst vent.", "Currently scanning" : "Skanner nå", "No favorites" : "Ingen favoritter", - "Files and folders you mark as favorite will show up here" : "Filer og mapper som du gjør til favoritter vises her" + "Files and folders you mark as favorite will show up here" : "Filer og mapper som du gjør til favoritter vises her", + "Text file" : "Tekstfil", + "New text file.txt" : "Ny tekstfil.txt" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/nb_NO.json b/apps/files/l10n/nb_NO.json index 6d7ee493008..32eb320296c 100644 --- a/apps/files/l10n/nb_NO.json +++ b/apps/files/l10n/nb_NO.json @@ -2,13 +2,6 @@ "Storage not available" : "Lagringsplass ikke tilgjengelig", "Storage invalid" : "Lagringsplass ugyldig", "Unknown error" : "Ukjent feil", - "Could not move %s - File with this name already exists" : "Kan ikke flytte %s - En fil med samme navn finnes allerede", - "Could not move %s" : "Kunne ikke flytte %s", - "Permission denied" : "Tilgang nektet", - "The target folder has been moved or deleted." : "Målmappen er blitt flyttet eller slettet.", - "The name %s is already used in the folder %s. Please choose a different name." : "Navnet %s brukes allerede i mappen %s. Velg et annet navn.", - "Error when creating the file" : "Feil ved oppretting av filen", - "Error when creating the folder" : "Feil ved oppretting av mappen", "Unable to set upload directory." : "Kunne ikke sette opplastingskatalog.", "Invalid Token" : "Ugyldig nøkkel", "No file was uploaded. Unknown error" : "Ingen filer ble lastet opp. Ukjent feil.", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Mangler midlertidig mappe", "Failed to write to disk" : "Klarte ikke å skrive til disk", "Not enough storage available" : "Ikke nok lagringsplass", + "The target folder has been moved or deleted." : "Målmappen er blitt flyttet eller slettet.", "Upload failed. Could not find uploaded file" : "Opplasting feilet. Fant ikke opplastet fil.", "Upload failed. Could not get file info." : "Opplasting feilet. Klarte ikke å finne informasjon om fil.", "Invalid directory." : "Ugyldig katalog.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Kan ikke fastslå datoen", "This operation is forbidden" : "Operasjonen er forbudt", "This directory is unavailable, please check the logs or contact the administrator" : "Denne mappen er utilgjengelig. Sjekk loggene eller kontakt administrator", - "Error moving file." : "Feil ved flytting av fil.", - "Error moving file" : "Feil ved flytting av fil", - "Error" : "Feil", - "{new_name} already exists" : "{new_name} finnes allerede", - "Could not rename file" : "Klarte ikke å gi nytt navn til fil", - "Could not create file" : "Klarte ikke å opprette fil", - "Could not create folder" : "Klarte ikke å opprette mappe", - "Error deleting file." : "Feil ved sletting av fil.", "No entries in this folder match '{filter}'" : "Ingen oppføringer i denne mappen stemmer med '{filter}'", "Name" : "Navn", "Size" : "Størrelse", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Er favoritt", "Favorite" : "Gjør til favoritt", - "Text file" : "Tekstfil", - "New text file.txt" : "Ny tekstfil.txt", "Folder" : "Mappe", "New folder" : "Ny mappe", "{newname} already exists" : "{newname} finnes allerede", @@ -97,8 +81,6 @@ "Changed by %2$s" : "Endret av %2$s", "Deleted by %2$s" : "Slettet av %2$s", "Restored by %2$s" : "Gjenopprettet av %2$s", - "%s could not be renamed as it has been deleted" : "%s kunne ikke gis nytt navn da den er blitt slettet", - "%s could not be renamed" : "Kunne ikke gi nytt navn til %s", "Upload (max. %s)" : "Opplasting (maks. %s)", "File handling" : "Filhåndtering", "Maximum upload size" : "Største opplastingsstørrelse", @@ -117,6 +99,8 @@ "Files are being scanned, please wait." : "Skanner filer, vennligst vent.", "Currently scanning" : "Skanner nå", "No favorites" : "Ingen favoritter", - "Files and folders you mark as favorite will show up here" : "Filer og mapper som du gjør til favoritter vises her" + "Files and folders you mark as favorite will show up here" : "Filer og mapper som du gjør til favoritter vises her", + "Text file" : "Tekstfil", + "New text file.txt" : "Ny tekstfil.txt" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/nds.js b/apps/files/l10n/nds.js index 9b28220ae43..bb3dc429711 100644 --- a/apps/files/l10n/nds.js +++ b/apps/files/l10n/nds.js @@ -3,7 +3,10 @@ OC.L10N.register( { "Files" : "Dateien", "Delete" : "Löschen", + "Details" : "Details", "Name" : "Name", + "New folder" : "Neuer Ordner", + "Upload" : "Hochladen", "Settings" : "Einstellungen", "WebDAV" : "WebDAV" }, diff --git a/apps/files/l10n/nds.json b/apps/files/l10n/nds.json index 4ab8de68b35..c8e93f2fa2b 100644 --- a/apps/files/l10n/nds.json +++ b/apps/files/l10n/nds.json @@ -1,7 +1,10 @@ { "translations": { "Files" : "Dateien", "Delete" : "Löschen", + "Details" : "Details", "Name" : "Name", + "New folder" : "Neuer Ordner", + "Upload" : "Hochladen", "Settings" : "Einstellungen", "WebDAV" : "WebDAV" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files/l10n/nl.js b/apps/files/l10n/nl.js index 88eb77c02a5..95054067597 100644 --- a/apps/files/l10n/nl.js +++ b/apps/files/l10n/nl.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Opslag niet beschikbaar", "Storage invalid" : "Opslag ongeldig", "Unknown error" : "Onbekende fout", - "Could not move %s - File with this name already exists" : "Kon %s niet verplaatsen - Er bestaat al een bestand met deze naam", - "Could not move %s" : "Kon %s niet verplaatsen", - "Permission denied" : "Toegang geweigerd", - "The target folder has been moved or deleted." : "De doelmap is verplaatst of verwijderd.", - "The name %s is already used in the folder %s. Please choose a different name." : "De naam %s bestaat al in map %s. Kies een andere naam.", - "Error when creating the file" : "Fout bij creëren bestand", - "Error when creating the folder" : "Fout bij aanmaken map", "Unable to set upload directory." : "Kan uploadmap niet instellen.", "Invalid Token" : "Ongeldig Token", "No file was uploaded. Unknown error" : "Er was geen bestand geladen. Onbekende fout", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Er ontbreekt een tijdelijke map", "Failed to write to disk" : "Schrijven naar schijf mislukt", "Not enough storage available" : "Niet genoeg opslagruimte beschikbaar", + "The target folder has been moved or deleted." : "De doelmap is verplaatst of verwijderd.", "Upload failed. Could not find uploaded file" : "Upload mislukt. Kon geüploade bestand niet vinden", "Upload failed. Could not get file info." : "Upload mislukt. Kon geen bestandsinfo krijgen.", "Invalid directory." : "Ongeldige directory.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Kon datum niet vaststellen", "This operation is forbidden" : "Deze taak is verboden", "This directory is unavailable, please check the logs or contact the administrator" : "Deze map is niet beschikbaar. Verifieer de logs of neem contact op met de beheerder", - "Error moving file." : "Fout bij verplaatsen bestand.", - "Error moving file" : "Fout bij verplaatsen bestand", - "Error" : "Fout", - "{new_name} already exists" : "{new_name} bestaat al", - "Could not rename file" : "Kon de naam van het bestand niet wijzigen", - "Could not create file" : "Kon bestand niet creëren", - "Could not create folder" : "Kon niet creëren map", - "Error deleting file." : "Fout bij verwijderen bestand.", "No entries in this folder match '{filter}'" : "Niets in deze map komt overeen met '{filter}'", "Name" : "Naam", "Size" : "Grootte", @@ -74,8 +60,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Favoriet", "Favorite" : "Favoriet", - "Text file" : "Tekstbestand", - "New text file.txt" : "Nieuw tekstbestand.txt", "Folder" : "Map", "New folder" : "Nieuwe map", "{newname} already exists" : "{newname} bestaat al", @@ -98,8 +82,6 @@ OC.L10N.register( "Changed by %2$s" : "Gewijzigd door %2$s", "Deleted by %2$s" : "Verwijderd door %2$s", "Restored by %2$s" : "Hersteld door %2$s", - "%s could not be renamed as it has been deleted" : "%s kon niet worden hernoemd, omdat het verwijderd is", - "%s could not be renamed" : "%s kon niet worden hernoemd", "Upload (max. %s)" : "Upload (max. %s)", "File handling" : "Bestand", "Maximum upload size" : "Maximale bestandsgrootte voor uploads", @@ -120,6 +102,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Bestanden worden gescand, even wachten.", "Currently scanning" : "Nu aan het scannen", "No favorites" : "Geen favorieten", - "Files and folders you mark as favorite will show up here" : "Bestanden en mappen die u favoriet vindt worden hier getoont" + "Files and folders you mark as favorite will show up here" : "Bestanden en mappen die u favoriet vindt worden hier getoont", + "Text file" : "Tekstbestand", + "New text file.txt" : "Nieuw tekstbestand.txt" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/nl.json b/apps/files/l10n/nl.json index 0eca44aaa0d..81f906d40b3 100644 --- a/apps/files/l10n/nl.json +++ b/apps/files/l10n/nl.json @@ -2,13 +2,6 @@ "Storage not available" : "Opslag niet beschikbaar", "Storage invalid" : "Opslag ongeldig", "Unknown error" : "Onbekende fout", - "Could not move %s - File with this name already exists" : "Kon %s niet verplaatsen - Er bestaat al een bestand met deze naam", - "Could not move %s" : "Kon %s niet verplaatsen", - "Permission denied" : "Toegang geweigerd", - "The target folder has been moved or deleted." : "De doelmap is verplaatst of verwijderd.", - "The name %s is already used in the folder %s. Please choose a different name." : "De naam %s bestaat al in map %s. Kies een andere naam.", - "Error when creating the file" : "Fout bij creëren bestand", - "Error when creating the folder" : "Fout bij aanmaken map", "Unable to set upload directory." : "Kan uploadmap niet instellen.", "Invalid Token" : "Ongeldig Token", "No file was uploaded. Unknown error" : "Er was geen bestand geladen. Onbekende fout", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Er ontbreekt een tijdelijke map", "Failed to write to disk" : "Schrijven naar schijf mislukt", "Not enough storage available" : "Niet genoeg opslagruimte beschikbaar", + "The target folder has been moved or deleted." : "De doelmap is verplaatst of verwijderd.", "Upload failed. Could not find uploaded file" : "Upload mislukt. Kon geüploade bestand niet vinden", "Upload failed. Could not get file info." : "Upload mislukt. Kon geen bestandsinfo krijgen.", "Invalid directory." : "Ongeldige directory.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Kon datum niet vaststellen", "This operation is forbidden" : "Deze taak is verboden", "This directory is unavailable, please check the logs or contact the administrator" : "Deze map is niet beschikbaar. Verifieer de logs of neem contact op met de beheerder", - "Error moving file." : "Fout bij verplaatsen bestand.", - "Error moving file" : "Fout bij verplaatsen bestand", - "Error" : "Fout", - "{new_name} already exists" : "{new_name} bestaat al", - "Could not rename file" : "Kon de naam van het bestand niet wijzigen", - "Could not create file" : "Kon bestand niet creëren", - "Could not create folder" : "Kon niet creëren map", - "Error deleting file." : "Fout bij verwijderen bestand.", "No entries in this folder match '{filter}'" : "Niets in deze map komt overeen met '{filter}'", "Name" : "Naam", "Size" : "Grootte", @@ -72,8 +58,6 @@ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Favoriet", "Favorite" : "Favoriet", - "Text file" : "Tekstbestand", - "New text file.txt" : "Nieuw tekstbestand.txt", "Folder" : "Map", "New folder" : "Nieuwe map", "{newname} already exists" : "{newname} bestaat al", @@ -96,8 +80,6 @@ "Changed by %2$s" : "Gewijzigd door %2$s", "Deleted by %2$s" : "Verwijderd door %2$s", "Restored by %2$s" : "Hersteld door %2$s", - "%s could not be renamed as it has been deleted" : "%s kon niet worden hernoemd, omdat het verwijderd is", - "%s could not be renamed" : "%s kon niet worden hernoemd", "Upload (max. %s)" : "Upload (max. %s)", "File handling" : "Bestand", "Maximum upload size" : "Maximale bestandsgrootte voor uploads", @@ -118,6 +100,8 @@ "Files are being scanned, please wait." : "Bestanden worden gescand, even wachten.", "Currently scanning" : "Nu aan het scannen", "No favorites" : "Geen favorieten", - "Files and folders you mark as favorite will show up here" : "Bestanden en mappen die u favoriet vindt worden hier getoont" + "Files and folders you mark as favorite will show up here" : "Bestanden en mappen die u favoriet vindt worden hier getoont", + "Text file" : "Tekstbestand", + "New text file.txt" : "Nieuw tekstbestand.txt" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/nn_NO.js b/apps/files/l10n/nn_NO.js index 6d9e9f4acdd..efe3707c213 100644 --- a/apps/files/l10n/nn_NO.js +++ b/apps/files/l10n/nn_NO.js @@ -2,8 +2,6 @@ OC.L10N.register( "files", { "Unknown error" : "Ukjend feil", - "Could not move %s - File with this name already exists" : "Klarte ikkje flytta %s – det finst allereie ei fil med dette namnet", - "Could not move %s" : "Klarte ikkje flytta %s", "Unable to set upload directory." : "Klarte ikkje å endra opplastingsmappa.", "Invalid Token" : "Ugyldig token", "No file was uploaded. Unknown error" : "Ingen filer lasta opp. Ukjend feil", @@ -32,9 +30,6 @@ OC.L10N.register( "Delete" : "Slett", "Details" : "Detaljar", "Pending" : "Under vegs", - "Error moving file" : "Feil ved flytting av fil", - "Error" : "Feil", - "{new_name} already exists" : "{new_name} finst allereie", "Name" : "Namn", "Size" : "Storleik", "Modified" : "Endra", @@ -47,7 +42,6 @@ OC.L10N.register( "Your storage is full, files can not be updated or synced anymore!" : "Lagringa di er full, kan ikkje lenger oppdatera eller synkronisera!", "Your storage is almost full ({usedSpacePercent}%)" : "Lagringa di er nesten full ({usedSpacePercent} %)", "Favorite" : "Favoritt", - "Text file" : "Tekst fil", "Folder" : "Mappe", "New folder" : "Ny mappe", "Upload" : "Last opp", @@ -61,7 +55,6 @@ OC.L10N.register( "%2$s changed %1$s" : "%2$s endra %1$s", "You deleted %1$s" : "Du sletta %1$s", "%2$s deleted %1$s" : "%2$s sletta %1$s", - "%s could not be renamed" : "Klarte ikkje å omdøypa på %s", "File handling" : "Filhandtering", "Maximum upload size" : "Maksimal opplastingsstorleik", "max. possible: " : "maks. moglege:", @@ -71,6 +64,7 @@ OC.L10N.register( "Cancel upload" : "Avbryt opplasting", "Upload too large" : "For stor opplasting", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Filene du prøver å lasta opp er større enn maksgrensa til denne tenaren.", - "Files are being scanned, please wait." : "Skannar filer, ver venleg og vent." + "Files are being scanned, please wait." : "Skannar filer, ver venleg og vent.", + "Text file" : "Tekst fil" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/nn_NO.json b/apps/files/l10n/nn_NO.json index 277c50de6da..929f8c0d7fe 100644 --- a/apps/files/l10n/nn_NO.json +++ b/apps/files/l10n/nn_NO.json @@ -1,7 +1,5 @@ { "translations": { "Unknown error" : "Ukjend feil", - "Could not move %s - File with this name already exists" : "Klarte ikkje flytta %s – det finst allereie ei fil med dette namnet", - "Could not move %s" : "Klarte ikkje flytta %s", "Unable to set upload directory." : "Klarte ikkje å endra opplastingsmappa.", "Invalid Token" : "Ugyldig token", "No file was uploaded. Unknown error" : "Ingen filer lasta opp. Ukjend feil", @@ -30,9 +28,6 @@ "Delete" : "Slett", "Details" : "Detaljar", "Pending" : "Under vegs", - "Error moving file" : "Feil ved flytting av fil", - "Error" : "Feil", - "{new_name} already exists" : "{new_name} finst allereie", "Name" : "Namn", "Size" : "Storleik", "Modified" : "Endra", @@ -45,7 +40,6 @@ "Your storage is full, files can not be updated or synced anymore!" : "Lagringa di er full, kan ikkje lenger oppdatera eller synkronisera!", "Your storage is almost full ({usedSpacePercent}%)" : "Lagringa di er nesten full ({usedSpacePercent} %)", "Favorite" : "Favoritt", - "Text file" : "Tekst fil", "Folder" : "Mappe", "New folder" : "Ny mappe", "Upload" : "Last opp", @@ -59,7 +53,6 @@ "%2$s changed %1$s" : "%2$s endra %1$s", "You deleted %1$s" : "Du sletta %1$s", "%2$s deleted %1$s" : "%2$s sletta %1$s", - "%s could not be renamed" : "Klarte ikkje å omdøypa på %s", "File handling" : "Filhandtering", "Maximum upload size" : "Maksimal opplastingsstorleik", "max. possible: " : "maks. moglege:", @@ -69,6 +62,7 @@ "Cancel upload" : "Avbryt opplasting", "Upload too large" : "For stor opplasting", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Filene du prøver å lasta opp er større enn maksgrensa til denne tenaren.", - "Files are being scanned, please wait." : "Skannar filer, ver venleg og vent." + "Files are being scanned, please wait." : "Skannar filer, ver venleg og vent.", + "Text file" : "Tekst fil" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/oc.js b/apps/files/l10n/oc.js index d702fcace3d..4890a818e12 100644 --- a/apps/files/l10n/oc.js +++ b/apps/files/l10n/oc.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Supòrt d'emmagazinatge pas disponible", "Storage invalid" : "Supòrt d'emmagazinatge pas valable", "Unknown error" : "Error Desconeguda ", - "Could not move %s - File with this name already exists" : "Impossible de desplaçar %s - Un fichièr que pòrta aqueste nom existís ja", - "Could not move %s" : "Impossible de desplaçar %s", - "Permission denied" : "Permission refusada", - "The target folder has been moved or deleted." : "Lo dorsièr cibla es estat desplaçat o suprimit.", - "The name %s is already used in the folder %s. Please choose a different name." : "Lo nom %s es ja utilizat dins lo dorsièr %s. Mercé de causir un nom diferent.", - "Error when creating the file" : "Error pendent la creacion del fichièr", - "Error when creating the folder" : "Error pendent la creacion del dorsièr", "Unable to set upload directory." : "Impossible de definir lo dorsièr de destinacion.", "Invalid Token" : "Geton invalid", "No file was uploaded. Unknown error" : "Cap de fichièr es pas estat mandat. Error desconeguda", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Abséncia de dorsièr temporari", "Failed to write to disk" : "Error d'escritura sul disc", "Not enough storage available" : "Pas pro d'espaci d'emmagazinatge de disponible", + "The target folder has been moved or deleted." : "Lo dorsièr cibla es estat desplaçat o suprimit.", "Upload failed. Could not find uploaded file" : "Lo mandadís a fracassat. Impossible de trobar lo fichièr mandat.", "Upload failed. Could not get file info." : "Lo mandadís a fracassat. Impossible d'obténer las informacions del fichièr.", "Invalid directory." : "Dorsièr invalid.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Impossible de determinar la data", "This operation is forbidden" : "L'operacion es interdicha", "This directory is unavailable, please check the logs or contact the administrator" : "Aqueste repertòri es pas disponible. Consultatz los logs o contactatz vòstre administrator", - "Error moving file." : "Error al moment del desplaçament del fichièr.", - "Error moving file" : "Error al moment del desplaçament del fichièr", - "Error" : "Error", - "{new_name} already exists" : "{new_name} existís ja", - "Could not rename file" : "Impossible de renomenar lo fichièr", - "Could not create file" : "Impossible de crear lo fichièr", - "Could not create folder" : "Impossible de crear lo dorsièr", - "Error deleting file." : "Error pendent la supression del fichièr.", "No entries in this folder match '{filter}'" : "Cap d'entrada d'aqueste dorsièr correspond pas a '{filter}'", "Name" : "Nom", "Size" : "Talha", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n octet","%n octets"], "Favorited" : "Marcat coma favorit", "Favorite" : "Favorit", - "Text file" : "Fichièr tèxte", - "New text file.txt" : "Novèl fichièr tèxte .txt", "Folder" : "Dorsièr", "New folder" : "Novèl dorsièr", "{newname} already exists" : "{new_name} existís ja", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "Modificat per %2$s", "Deleted by %2$s" : "Suprimit per %2$s", "Restored by %2$s" : "Restablit per %2$s", - "%s could not be renamed as it has been deleted" : "%s pòt pas èsser renomenat perque es estat suprimit ", - "%s could not be renamed" : "%s pòt pas èsser renomenat", "Upload (max. %s)" : "Mandadís (max. %s)", "File handling" : "Gestion de fichièrs", "Maximum upload size" : "Talha max. de mandadís", @@ -119,6 +101,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Los fichièrs son en cors d'analisi, pacientatz.", "Currently scanning" : "Analisi en cors", "No favorites" : "Pas cap de favorit", - "Files and folders you mark as favorite will show up here" : "Los fichièrs e dorsièrs aponduts a vòstres favorits apareisseràn aicí" + "Files and folders you mark as favorite will show up here" : "Los fichièrs e dorsièrs aponduts a vòstres favorits apareisseràn aicí", + "Text file" : "Fichièr tèxte", + "New text file.txt" : "Novèl fichièr tèxte .txt" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files/l10n/oc.json b/apps/files/l10n/oc.json index ec91aa3ccba..14477c71a33 100644 --- a/apps/files/l10n/oc.json +++ b/apps/files/l10n/oc.json @@ -2,13 +2,6 @@ "Storage not available" : "Supòrt d'emmagazinatge pas disponible", "Storage invalid" : "Supòrt d'emmagazinatge pas valable", "Unknown error" : "Error Desconeguda ", - "Could not move %s - File with this name already exists" : "Impossible de desplaçar %s - Un fichièr que pòrta aqueste nom existís ja", - "Could not move %s" : "Impossible de desplaçar %s", - "Permission denied" : "Permission refusada", - "The target folder has been moved or deleted." : "Lo dorsièr cibla es estat desplaçat o suprimit.", - "The name %s is already used in the folder %s. Please choose a different name." : "Lo nom %s es ja utilizat dins lo dorsièr %s. Mercé de causir un nom diferent.", - "Error when creating the file" : "Error pendent la creacion del fichièr", - "Error when creating the folder" : "Error pendent la creacion del dorsièr", "Unable to set upload directory." : "Impossible de definir lo dorsièr de destinacion.", "Invalid Token" : "Geton invalid", "No file was uploaded. Unknown error" : "Cap de fichièr es pas estat mandat. Error desconeguda", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Abséncia de dorsièr temporari", "Failed to write to disk" : "Error d'escritura sul disc", "Not enough storage available" : "Pas pro d'espaci d'emmagazinatge de disponible", + "The target folder has been moved or deleted." : "Lo dorsièr cibla es estat desplaçat o suprimit.", "Upload failed. Could not find uploaded file" : "Lo mandadís a fracassat. Impossible de trobar lo fichièr mandat.", "Upload failed. Could not get file info." : "Lo mandadís a fracassat. Impossible d'obténer las informacions del fichièr.", "Invalid directory." : "Dorsièr invalid.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Impossible de determinar la data", "This operation is forbidden" : "L'operacion es interdicha", "This directory is unavailable, please check the logs or contact the administrator" : "Aqueste repertòri es pas disponible. Consultatz los logs o contactatz vòstre administrator", - "Error moving file." : "Error al moment del desplaçament del fichièr.", - "Error moving file" : "Error al moment del desplaçament del fichièr", - "Error" : "Error", - "{new_name} already exists" : "{new_name} existís ja", - "Could not rename file" : "Impossible de renomenar lo fichièr", - "Could not create file" : "Impossible de crear lo fichièr", - "Could not create folder" : "Impossible de crear lo dorsièr", - "Error deleting file." : "Error pendent la supression del fichièr.", "No entries in this folder match '{filter}'" : "Cap d'entrada d'aqueste dorsièr correspond pas a '{filter}'", "Name" : "Nom", "Size" : "Talha", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n octet","%n octets"], "Favorited" : "Marcat coma favorit", "Favorite" : "Favorit", - "Text file" : "Fichièr tèxte", - "New text file.txt" : "Novèl fichièr tèxte .txt", "Folder" : "Dorsièr", "New folder" : "Novèl dorsièr", "{newname} already exists" : "{new_name} existís ja", @@ -97,8 +81,6 @@ "Changed by %2$s" : "Modificat per %2$s", "Deleted by %2$s" : "Suprimit per %2$s", "Restored by %2$s" : "Restablit per %2$s", - "%s could not be renamed as it has been deleted" : "%s pòt pas èsser renomenat perque es estat suprimit ", - "%s could not be renamed" : "%s pòt pas èsser renomenat", "Upload (max. %s)" : "Mandadís (max. %s)", "File handling" : "Gestion de fichièrs", "Maximum upload size" : "Talha max. de mandadís", @@ -117,6 +99,8 @@ "Files are being scanned, please wait." : "Los fichièrs son en cors d'analisi, pacientatz.", "Currently scanning" : "Analisi en cors", "No favorites" : "Pas cap de favorit", - "Files and folders you mark as favorite will show up here" : "Los fichièrs e dorsièrs aponduts a vòstres favorits apareisseràn aicí" + "Files and folders you mark as favorite will show up here" : "Los fichièrs e dorsièrs aponduts a vòstres favorits apareisseràn aicí", + "Text file" : "Fichièr tèxte", + "New text file.txt" : "Novèl fichièr tèxte .txt" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/pa.js b/apps/files/l10n/pa.js index dfb7c392837..847adbc5ac1 100644 --- a/apps/files/l10n/pa.js +++ b/apps/files/l10n/pa.js @@ -7,7 +7,6 @@ OC.L10N.register( "Rename" : "ਨਾਂ ਬਦਲੋ", "Delete" : "ਹਟਾਓ", "Details" : "ਵੇਰਵ", - "Error" : "ਗਲਤੀ", "Upload" : "ਅੱਪਲੋਡ", "Settings" : "ਸੈਟਿੰਗ", "Cancel upload" : "ਅੱਪਲੋਡ ਰੱਦ ਕਰੋ" diff --git a/apps/files/l10n/pa.json b/apps/files/l10n/pa.json index c1f4dae97fa..6d7025feec1 100644 --- a/apps/files/l10n/pa.json +++ b/apps/files/l10n/pa.json @@ -5,7 +5,6 @@ "Rename" : "ਨਾਂ ਬਦਲੋ", "Delete" : "ਹਟਾਓ", "Details" : "ਵੇਰਵ", - "Error" : "ਗਲਤੀ", "Upload" : "ਅੱਪਲੋਡ", "Settings" : "ਸੈਟਿੰਗ", "Cancel upload" : "ਅੱਪਲੋਡ ਰੱਦ ਕਰੋ" diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js index e7a208bc639..6478fbe5eb4 100644 --- a/apps/files/l10n/pl.js +++ b/apps/files/l10n/pl.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Pamięć nie dostępna", "Storage invalid" : "Pamięć nieprawidłowa", "Unknown error" : "Nieznany błąd", - "Could not move %s - File with this name already exists" : "Nie można było przenieść %s - Plik o takiej nazwie już istnieje", - "Could not move %s" : "Nie można było przenieść %s", - "Permission denied" : "Dostęp zabroniony", - "The target folder has been moved or deleted." : "Folder docelowy został przeniesiony lub usunięty", - "The name %s is already used in the folder %s. Please choose a different name." : "Nazwa %s jest już używana w folderze %s. Proszę wybrać inną nazwę.", - "Error when creating the file" : "Błąd przy tworzeniu pliku", - "Error when creating the folder" : "Błąd przy tworzeniu folderu", "Unable to set upload directory." : "Nie można ustawić katalog wczytywania.", "Invalid Token" : "Nieprawidłowy Token", "No file was uploaded. Unknown error" : "Żaden plik nie został załadowany. Nieznany błąd", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Brak folderu tymczasowego", "Failed to write to disk" : "Błąd zapisu na dysk", "Not enough storage available" : "Za mało dostępnego miejsca", + "The target folder has been moved or deleted." : "Folder docelowy został przeniesiony lub usunięty", "Upload failed. Could not find uploaded file" : "Nieudane przesłanie. Nie można znaleźć przesyłanego pliku", "Upload failed. Could not get file info." : "Nieudane przesłanie. Nie można pobrać informacji o pliku.", "Invalid directory." : "Zła ścieżka.", @@ -44,14 +38,6 @@ OC.L10N.register( "Select" : "Wybierz", "Pending" : "Oczekujące", "Unable to determine date" : "Nie można ustalić daty", - "Error moving file." : "Błąd podczas przenoszenia pliku.", - "Error moving file" : "Błąd prz przenoszeniu pliku", - "Error" : "Błąd", - "{new_name} already exists" : "{new_name} już istnieje", - "Could not rename file" : "Nie można zmienić nazwy pliku", - "Could not create file" : "Nie można utworzyć pliku", - "Could not create folder" : "Nie można utworzyć folderu", - "Error deleting file." : "Błąd podczas usuwania pliku", "No entries in this folder match '{filter}'" : "Brak wyników pasujących do '{filter}'", "Name" : "Nazwa", "Size" : "Rozmiar", @@ -70,7 +56,6 @@ OC.L10N.register( "Your storage is almost full ({usedSpacePercent}%)" : "Twój magazyn jest prawie pełny ({usedSpacePercent}%)", "Favorited" : "Ulubione", "Favorite" : "Ulubione", - "Text file" : "Plik tekstowy", "Folder" : "Folder", "New folder" : "Nowy folder", "Upload" : "Wyślij", @@ -87,8 +72,6 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s usunął %1$s", "You restored %1$s" : "Przywróciłeś %1$s", "%2$s restored %1$s" : "%2$s przywrócił %1$s", - "%s could not be renamed as it has been deleted" : "%s nie może mieć zmienionej nazwy, ponieważ został usunięty", - "%s could not be renamed" : "%s nie można zmienić nazwy", "Upload (max. %s)" : "Wysyłka (max. %s)", "File handling" : "Zarządzanie plikami", "Maximum upload size" : "Maksymalny rozmiar wysyłanego pliku", @@ -103,6 +86,7 @@ OC.L10N.register( "Upload too large" : "Ładowany plik jest za duży", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Pliki, które próbujesz przesłać, przekraczają maksymalną dopuszczalną wielkość.", "Files are being scanned, please wait." : "Skanowanie plików, proszę czekać.", - "Currently scanning" : "Aktualnie skanowane" + "Currently scanning" : "Aktualnie skanowane", + "Text file" : "Plik tekstowy" }, "nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json index 4af3ab766e4..98a0592cc75 100644 --- a/apps/files/l10n/pl.json +++ b/apps/files/l10n/pl.json @@ -2,13 +2,6 @@ "Storage not available" : "Pamięć nie dostępna", "Storage invalid" : "Pamięć nieprawidłowa", "Unknown error" : "Nieznany błąd", - "Could not move %s - File with this name already exists" : "Nie można było przenieść %s - Plik o takiej nazwie już istnieje", - "Could not move %s" : "Nie można było przenieść %s", - "Permission denied" : "Dostęp zabroniony", - "The target folder has been moved or deleted." : "Folder docelowy został przeniesiony lub usunięty", - "The name %s is already used in the folder %s. Please choose a different name." : "Nazwa %s jest już używana w folderze %s. Proszę wybrać inną nazwę.", - "Error when creating the file" : "Błąd przy tworzeniu pliku", - "Error when creating the folder" : "Błąd przy tworzeniu folderu", "Unable to set upload directory." : "Nie można ustawić katalog wczytywania.", "Invalid Token" : "Nieprawidłowy Token", "No file was uploaded. Unknown error" : "Żaden plik nie został załadowany. Nieznany błąd", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Brak folderu tymczasowego", "Failed to write to disk" : "Błąd zapisu na dysk", "Not enough storage available" : "Za mało dostępnego miejsca", + "The target folder has been moved or deleted." : "Folder docelowy został przeniesiony lub usunięty", "Upload failed. Could not find uploaded file" : "Nieudane przesłanie. Nie można znaleźć przesyłanego pliku", "Upload failed. Could not get file info." : "Nieudane przesłanie. Nie można pobrać informacji o pliku.", "Invalid directory." : "Zła ścieżka.", @@ -42,14 +36,6 @@ "Select" : "Wybierz", "Pending" : "Oczekujące", "Unable to determine date" : "Nie można ustalić daty", - "Error moving file." : "Błąd podczas przenoszenia pliku.", - "Error moving file" : "Błąd prz przenoszeniu pliku", - "Error" : "Błąd", - "{new_name} already exists" : "{new_name} już istnieje", - "Could not rename file" : "Nie można zmienić nazwy pliku", - "Could not create file" : "Nie można utworzyć pliku", - "Could not create folder" : "Nie można utworzyć folderu", - "Error deleting file." : "Błąd podczas usuwania pliku", "No entries in this folder match '{filter}'" : "Brak wyników pasujących do '{filter}'", "Name" : "Nazwa", "Size" : "Rozmiar", @@ -68,7 +54,6 @@ "Your storage is almost full ({usedSpacePercent}%)" : "Twój magazyn jest prawie pełny ({usedSpacePercent}%)", "Favorited" : "Ulubione", "Favorite" : "Ulubione", - "Text file" : "Plik tekstowy", "Folder" : "Folder", "New folder" : "Nowy folder", "Upload" : "Wyślij", @@ -85,8 +70,6 @@ "%2$s deleted %1$s" : "%2$s usunął %1$s", "You restored %1$s" : "Przywróciłeś %1$s", "%2$s restored %1$s" : "%2$s przywrócił %1$s", - "%s could not be renamed as it has been deleted" : "%s nie może mieć zmienionej nazwy, ponieważ został usunięty", - "%s could not be renamed" : "%s nie można zmienić nazwy", "Upload (max. %s)" : "Wysyłka (max. %s)", "File handling" : "Zarządzanie plikami", "Maximum upload size" : "Maksymalny rozmiar wysyłanego pliku", @@ -101,6 +84,7 @@ "Upload too large" : "Ładowany plik jest za duży", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Pliki, które próbujesz przesłać, przekraczają maksymalną dopuszczalną wielkość.", "Files are being scanned, please wait." : "Skanowanie plików, proszę czekać.", - "Currently scanning" : "Aktualnie skanowane" + "Currently scanning" : "Aktualnie skanowane", + "Text file" : "Plik tekstowy" },"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js index b7a2196db63..6619da366e9 100644 --- a/apps/files/l10n/pt_BR.js +++ b/apps/files/l10n/pt_BR.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Armazanamento não disponível", "Storage invalid" : "Armazenamento invávilido", "Unknown error" : "Erro desconhecido", - "Could not move %s - File with this name already exists" : "Impossível mover %s - Já existe um arquivo com esse nome", - "Could not move %s" : "Impossível mover %s", - "Permission denied" : "Permissão Negada", - "The target folder has been moved or deleted." : "A pasta de destino foi movida ou excluída.", - "The name %s is already used in the folder %s. Please choose a different name." : "O nome %s já é usado na pasta %s. Por favor, escolha um nome diferente.", - "Error when creating the file" : "Erro ao criar o arquivo", - "Error when creating the folder" : "Erro ao criar a pasta", "Unable to set upload directory." : "Impossível configurar o diretório de envio", "Invalid Token" : "Token inválido", "No file was uploaded. Unknown error" : "Nenhum arquivo foi enviado. Erro desconhecido", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Pasta temporária não encontrada", "Failed to write to disk" : "Falha ao escrever no disco", "Not enough storage available" : "Espaço de armazenamento insuficiente", + "The target folder has been moved or deleted." : "A pasta de destino foi movida ou excluída.", "Upload failed. Could not find uploaded file" : "Falha no envio. Não foi possível encontrar o arquivo enviado", "Upload failed. Could not get file info." : "Falha no envio. Não foi possível obter informações do arquivo.", "Invalid directory." : "Diretório inválido.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Impossível determinar a data", "This operation is forbidden" : "Esta operação é proibida", "This directory is unavailable, please check the logs or contact the administrator" : "Este diretório não está disponível, por favor, verifique os logs ou entre em contato com o administrador", - "Error moving file." : "Erro movendo o arquivo.", - "Error moving file" : "Erro movendo o arquivo", - "Error" : "Erro", - "{new_name} already exists" : "{new_name} já existe", - "Could not rename file" : "Não foi possível renomear o arquivo", - "Could not create file" : "Não foi possível criar o arquivo", - "Could not create folder" : "Não foi possível criar a pasta", - "Error deleting file." : "Erro eliminando o arquivo.", "No entries in this folder match '{filter}'" : "Nenhuma entrada nesta pasta coincide com '{filter}'", "Name" : "Nome", "Size" : "Tamanho", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Favorito", "Favorite" : "Favorito", - "Text file" : "Arquivo texto", - "New text file.txt" : "Novo texto file.txt", "Folder" : "Pasta", "New folder" : "Nova pasta", "{newname} already exists" : "{newname} já existe", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "Modificado por %2$s", "Deleted by %2$s" : "Deletado por %2$s", "Restored by %2$s" : "Restaurado por %2$s", - "%s could not be renamed as it has been deleted" : "%s não pode ser renomeado pois foi apagado", - "%s could not be renamed" : "%s não pode ser renomeado", "Upload (max. %s)" : "Envio (max. %s)", "File handling" : "Tratamento de Arquivo", "Maximum upload size" : "Tamanho máximo para envio", @@ -121,6 +103,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Arquivos sendo escaneados, por favor aguarde.", "Currently scanning" : "Atualmente escaneando", "No favorites" : "Sem favoritos", - "Files and folders you mark as favorite will show up here" : "Arquivos e pastas que você marcou como favorito são mostrados aqui" + "Files and folders you mark as favorite will show up here" : "Arquivos e pastas que você marcou como favorito são mostrados aqui", + "Text file" : "Arquivo texto", + "New text file.txt" : "Novo texto file.txt" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json index 335b50a2d7d..e656d9e0079 100644 --- a/apps/files/l10n/pt_BR.json +++ b/apps/files/l10n/pt_BR.json @@ -2,13 +2,6 @@ "Storage not available" : "Armazanamento não disponível", "Storage invalid" : "Armazenamento invávilido", "Unknown error" : "Erro desconhecido", - "Could not move %s - File with this name already exists" : "Impossível mover %s - Já existe um arquivo com esse nome", - "Could not move %s" : "Impossível mover %s", - "Permission denied" : "Permissão Negada", - "The target folder has been moved or deleted." : "A pasta de destino foi movida ou excluída.", - "The name %s is already used in the folder %s. Please choose a different name." : "O nome %s já é usado na pasta %s. Por favor, escolha um nome diferente.", - "Error when creating the file" : "Erro ao criar o arquivo", - "Error when creating the folder" : "Erro ao criar a pasta", "Unable to set upload directory." : "Impossível configurar o diretório de envio", "Invalid Token" : "Token inválido", "No file was uploaded. Unknown error" : "Nenhum arquivo foi enviado. Erro desconhecido", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Pasta temporária não encontrada", "Failed to write to disk" : "Falha ao escrever no disco", "Not enough storage available" : "Espaço de armazenamento insuficiente", + "The target folder has been moved or deleted." : "A pasta de destino foi movida ou excluída.", "Upload failed. Could not find uploaded file" : "Falha no envio. Não foi possível encontrar o arquivo enviado", "Upload failed. Could not get file info." : "Falha no envio. Não foi possível obter informações do arquivo.", "Invalid directory." : "Diretório inválido.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Impossível determinar a data", "This operation is forbidden" : "Esta operação é proibida", "This directory is unavailable, please check the logs or contact the administrator" : "Este diretório não está disponível, por favor, verifique os logs ou entre em contato com o administrador", - "Error moving file." : "Erro movendo o arquivo.", - "Error moving file" : "Erro movendo o arquivo", - "Error" : "Erro", - "{new_name} already exists" : "{new_name} já existe", - "Could not rename file" : "Não foi possível renomear o arquivo", - "Could not create file" : "Não foi possível criar o arquivo", - "Could not create folder" : "Não foi possível criar a pasta", - "Error deleting file." : "Erro eliminando o arquivo.", "No entries in this folder match '{filter}'" : "Nenhuma entrada nesta pasta coincide com '{filter}'", "Name" : "Nome", "Size" : "Tamanho", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Favorito", "Favorite" : "Favorito", - "Text file" : "Arquivo texto", - "New text file.txt" : "Novo texto file.txt", "Folder" : "Pasta", "New folder" : "Nova pasta", "{newname} already exists" : "{newname} já existe", @@ -97,8 +81,6 @@ "Changed by %2$s" : "Modificado por %2$s", "Deleted by %2$s" : "Deletado por %2$s", "Restored by %2$s" : "Restaurado por %2$s", - "%s could not be renamed as it has been deleted" : "%s não pode ser renomeado pois foi apagado", - "%s could not be renamed" : "%s não pode ser renomeado", "Upload (max. %s)" : "Envio (max. %s)", "File handling" : "Tratamento de Arquivo", "Maximum upload size" : "Tamanho máximo para envio", @@ -119,6 +101,8 @@ "Files are being scanned, please wait." : "Arquivos sendo escaneados, por favor aguarde.", "Currently scanning" : "Atualmente escaneando", "No favorites" : "Sem favoritos", - "Files and folders you mark as favorite will show up here" : "Arquivos e pastas que você marcou como favorito são mostrados aqui" + "Files and folders you mark as favorite will show up here" : "Arquivos e pastas que você marcou como favorito são mostrados aqui", + "Text file" : "Arquivo texto", + "New text file.txt" : "Novo texto file.txt" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/pt_PT.js b/apps/files/l10n/pt_PT.js index 537abb936b1..ecb66e0eb1a 100644 --- a/apps/files/l10n/pt_PT.js +++ b/apps/files/l10n/pt_PT.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Armazenamento indisposinvel", "Storage invalid" : "Armazenamento inválido", "Unknown error" : "Erro Desconhecido", - "Could not move %s - File with this name already exists" : "Não foi possível mover %s - Já existe um ficheiro com este nome", - "Could not move %s" : "Não foi possível mover %s", - "Permission denied" : "Permissão negada", - "The target folder has been moved or deleted." : "A pasta de destino foi movida ou eliminada.", - "The name %s is already used in the folder %s. Please choose a different name." : "O nome %s já está em uso na pasta %s. Por favor escolha um nome diferente.", - "Error when creating the file" : "Erro ao criar o ficheiro", - "Error when creating the folder" : "Erro ao criar a pasta", "Unable to set upload directory." : "Não foi possível criar o diretório de upload", "Invalid Token" : "Token inválido", "No file was uploaded. Unknown error" : "Não foi enviado nenhum ficheiro. Erro desconhecido", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "A pasta temporária está em falta", "Failed to write to disk" : "Não foi possível gravar no disco", "Not enough storage available" : "Não há espaço suficiente em disco", + "The target folder has been moved or deleted." : "A pasta de destino foi movida ou eliminada.", "Upload failed. Could not find uploaded file" : "Falhou o envio. Não conseguiu encontrar o ficheiro enviado", "Upload failed. Could not get file info." : "O carregamento falhou. Não foi possível obter a informação do ficheiro.", "Invalid directory." : "Diretoria inválida.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Impossível determinar a data", "This operation is forbidden" : "Esta operação é proibida", "This directory is unavailable, please check the logs or contact the administrator" : "Esta diretoria está indisponível, por favor, verifique os registos ou contacte o administrador", - "Error moving file." : "Erro a mover o ficheiro.", - "Error moving file" : "Erro ao mover o ficheiro", - "Error" : "Erro", - "{new_name} already exists" : "O nome {new_name} já existe", - "Could not rename file" : "Não pôde renomear o ficheiro", - "Could not create file" : "Não pôde criar ficheiro", - "Could not create folder" : "Não pôde criar pasta", - "Error deleting file." : "Erro ao apagar o ficheiro.", "No entries in this folder match '{filter}'" : "Nenhumas entradas nesta pasta correspondem a '{filter}'", "Name" : "Nome", "Size" : "Tamanho", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Assinalado como Favorito", "Favorite" : "Favorito", - "Text file" : "Ficheiro de Texto", - "New text file.txt" : "Novo texto ficheiro.txt", "Folder" : "Pasta", "New folder" : "Nova Pasta", "{newname} already exists" : "{newname} já existe", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "Alterado por %2$s", "Deleted by %2$s" : "Eliminado por %2$s", "Restored by %2$s" : "Restaurado por %2$s", - "%s could not be renamed as it has been deleted" : "Não foi possível renomear %s devido a ter sido eliminado", - "%s could not be renamed" : "%s não pode ser renomeada", "Upload (max. %s)" : "Enviar (max. %s)", "File handling" : "Manuseamento do ficheiro", "Maximum upload size" : "Tamanho máximo de envio", @@ -119,6 +101,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Os ficheiros estão a ser analisados, por favor aguarde.", "Currently scanning" : "A analisar", "No favorites" : "Sem favoritos", - "Files and folders you mark as favorite will show up here" : "Os ficheiros e pastas que marcou como favoritos serão mostrados aqui" + "Files and folders you mark as favorite will show up here" : "Os ficheiros e pastas que marcou como favoritos serão mostrados aqui", + "Text file" : "Ficheiro de Texto", + "New text file.txt" : "Novo texto ficheiro.txt" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/pt_PT.json b/apps/files/l10n/pt_PT.json index 20e8dd808cc..bdbdb7225bb 100644 --- a/apps/files/l10n/pt_PT.json +++ b/apps/files/l10n/pt_PT.json @@ -2,13 +2,6 @@ "Storage not available" : "Armazenamento indisposinvel", "Storage invalid" : "Armazenamento inválido", "Unknown error" : "Erro Desconhecido", - "Could not move %s - File with this name already exists" : "Não foi possível mover %s - Já existe um ficheiro com este nome", - "Could not move %s" : "Não foi possível mover %s", - "Permission denied" : "Permissão negada", - "The target folder has been moved or deleted." : "A pasta de destino foi movida ou eliminada.", - "The name %s is already used in the folder %s. Please choose a different name." : "O nome %s já está em uso na pasta %s. Por favor escolha um nome diferente.", - "Error when creating the file" : "Erro ao criar o ficheiro", - "Error when creating the folder" : "Erro ao criar a pasta", "Unable to set upload directory." : "Não foi possível criar o diretório de upload", "Invalid Token" : "Token inválido", "No file was uploaded. Unknown error" : "Não foi enviado nenhum ficheiro. Erro desconhecido", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "A pasta temporária está em falta", "Failed to write to disk" : "Não foi possível gravar no disco", "Not enough storage available" : "Não há espaço suficiente em disco", + "The target folder has been moved or deleted." : "A pasta de destino foi movida ou eliminada.", "Upload failed. Could not find uploaded file" : "Falhou o envio. Não conseguiu encontrar o ficheiro enviado", "Upload failed. Could not get file info." : "O carregamento falhou. Não foi possível obter a informação do ficheiro.", "Invalid directory." : "Diretoria inválida.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Impossível determinar a data", "This operation is forbidden" : "Esta operação é proibida", "This directory is unavailable, please check the logs or contact the administrator" : "Esta diretoria está indisponível, por favor, verifique os registos ou contacte o administrador", - "Error moving file." : "Erro a mover o ficheiro.", - "Error moving file" : "Erro ao mover o ficheiro", - "Error" : "Erro", - "{new_name} already exists" : "O nome {new_name} já existe", - "Could not rename file" : "Não pôde renomear o ficheiro", - "Could not create file" : "Não pôde criar ficheiro", - "Could not create folder" : "Não pôde criar pasta", - "Error deleting file." : "Erro ao apagar o ficheiro.", "No entries in this folder match '{filter}'" : "Nenhumas entradas nesta pasta correspondem a '{filter}'", "Name" : "Nome", "Size" : "Tamanho", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Assinalado como Favorito", "Favorite" : "Favorito", - "Text file" : "Ficheiro de Texto", - "New text file.txt" : "Novo texto ficheiro.txt", "Folder" : "Pasta", "New folder" : "Nova Pasta", "{newname} already exists" : "{newname} já existe", @@ -97,8 +81,6 @@ "Changed by %2$s" : "Alterado por %2$s", "Deleted by %2$s" : "Eliminado por %2$s", "Restored by %2$s" : "Restaurado por %2$s", - "%s could not be renamed as it has been deleted" : "Não foi possível renomear %s devido a ter sido eliminado", - "%s could not be renamed" : "%s não pode ser renomeada", "Upload (max. %s)" : "Enviar (max. %s)", "File handling" : "Manuseamento do ficheiro", "Maximum upload size" : "Tamanho máximo de envio", @@ -117,6 +99,8 @@ "Files are being scanned, please wait." : "Os ficheiros estão a ser analisados, por favor aguarde.", "Currently scanning" : "A analisar", "No favorites" : "Sem favoritos", - "Files and folders you mark as favorite will show up here" : "Os ficheiros e pastas que marcou como favoritos serão mostrados aqui" + "Files and folders you mark as favorite will show up here" : "Os ficheiros e pastas que marcou como favoritos serão mostrados aqui", + "Text file" : "Ficheiro de Texto", + "New text file.txt" : "Novo texto ficheiro.txt" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/ro.js b/apps/files/l10n/ro.js index c3dca30abed..54e7c505c9a 100644 --- a/apps/files/l10n/ro.js +++ b/apps/files/l10n/ro.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Spațiu de stocare indisponibil", "Storage invalid" : "Spațiu de stocare invalid", "Unknown error" : "Eroare necunoscută", - "Could not move %s - File with this name already exists" : "%s nu se poate muta - Fișierul cu acest nume există deja ", - "Could not move %s" : "Nu se poate muta %s", - "Permission denied" : "Accesul interzis", - "The target folder has been moved or deleted." : "Dosarul țintă a fost mutat sau șters.", - "The name %s is already used in the folder %s. Please choose a different name." : "Numele %s este deja este folosit în dosarul %s. Te rog alege alt nume.", - "Error when creating the file" : "Eroare la crearea fișierului", - "Error when creating the folder" : "Eroare la crearea dosarului", "Unable to set upload directory." : "Imposibil de a seta directorul pentru încărcare.", "Invalid Token" : "Jeton Invalid", "No file was uploaded. Unknown error" : "Niciun fișier nu a fost încărcat. Eroare necunoscută", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Lipsește un dosar temporar", "Failed to write to disk" : "Eroare la scrierea pe disc", "Not enough storage available" : "Nu este disponibil suficient spațiu", + "The target folder has been moved or deleted." : "Dosarul țintă a fost mutat sau șters.", "Upload failed. Could not find uploaded file" : "Încărcare eșuată. Nu se poate găsi fișierul încărcat", "Upload failed. Could not get file info." : "Încărcare eșuată. Nu se pot obține informații despre fișier.", "Invalid directory." : "Dosar nevalid.", @@ -43,14 +37,6 @@ OC.L10N.register( "Details" : "Detalii", "Select" : "Alege", "Pending" : "În așteptare", - "Error moving file." : "Eroare la mutarea fișierului.", - "Error moving file" : "Eroare la mutarea fișierului", - "Error" : "Eroare", - "{new_name} already exists" : "{new_name} există deja", - "Could not rename file" : "Nu s-a putut redenumi fișierul", - "Could not create file" : "Nu s-a putut crea fisierul", - "Could not create folder" : "Nu s-a putut crea folderul", - "Error deleting file." : "Eroare la ștergerea fișierului.", "Name" : "Nume", "Size" : "Mărime", "Modified" : "Modificat", @@ -65,7 +51,6 @@ OC.L10N.register( "Your storage is full, files can not be updated or synced anymore!" : "Spațiul de stocare este plin, fișierele nu mai pot fi actualizate sau sincronizate!", "Your storage is almost full ({usedSpacePercent}%)" : "Spațiul de stocare este aproape plin ({usedSpacePercent}%)", "Favorite" : "Favorit", - "Text file" : "Fișier text", "Folder" : "Dosar", "New folder" : "Un nou dosar", "Upload" : "Încărcă", @@ -82,8 +67,6 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s a șters %1$s", "You restored %1$s" : "Ai restaurat %1$s", "%2$s restored %1$s" : "%2$s a restaurat %1$s", - "%s could not be renamed as it has been deleted" : "%s nu a putut fi redenumit deoarece a fost sters", - "%s could not be renamed" : "%s nu a putut fi redenumit", "Upload (max. %s)" : "Încarcă (max. %s)", "File handling" : "Manipulare fișiere", "Maximum upload size" : "Dimensiune maximă admisă la încărcare", @@ -97,6 +80,7 @@ OC.L10N.register( "Upload too large" : "Fișierul încărcat este prea mare", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Fișierele pe care încerci să le încarci depășesc limita de încărcare maximă admisă pe acest server.", "Files are being scanned, please wait." : "Fișierele sunt scanate, te rog așteaptă.", - "Currently scanning" : "Acum scanează" + "Currently scanning" : "Acum scanează", + "Text file" : "Fișier text" }, "nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"); diff --git a/apps/files/l10n/ro.json b/apps/files/l10n/ro.json index 0d2f4497ff4..3fe8ba180bb 100644 --- a/apps/files/l10n/ro.json +++ b/apps/files/l10n/ro.json @@ -2,13 +2,6 @@ "Storage not available" : "Spațiu de stocare indisponibil", "Storage invalid" : "Spațiu de stocare invalid", "Unknown error" : "Eroare necunoscută", - "Could not move %s - File with this name already exists" : "%s nu se poate muta - Fișierul cu acest nume există deja ", - "Could not move %s" : "Nu se poate muta %s", - "Permission denied" : "Accesul interzis", - "The target folder has been moved or deleted." : "Dosarul țintă a fost mutat sau șters.", - "The name %s is already used in the folder %s. Please choose a different name." : "Numele %s este deja este folosit în dosarul %s. Te rog alege alt nume.", - "Error when creating the file" : "Eroare la crearea fișierului", - "Error when creating the folder" : "Eroare la crearea dosarului", "Unable to set upload directory." : "Imposibil de a seta directorul pentru încărcare.", "Invalid Token" : "Jeton Invalid", "No file was uploaded. Unknown error" : "Niciun fișier nu a fost încărcat. Eroare necunoscută", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Lipsește un dosar temporar", "Failed to write to disk" : "Eroare la scrierea pe disc", "Not enough storage available" : "Nu este disponibil suficient spațiu", + "The target folder has been moved or deleted." : "Dosarul țintă a fost mutat sau șters.", "Upload failed. Could not find uploaded file" : "Încărcare eșuată. Nu se poate găsi fișierul încărcat", "Upload failed. Could not get file info." : "Încărcare eșuată. Nu se pot obține informații despre fișier.", "Invalid directory." : "Dosar nevalid.", @@ -41,14 +35,6 @@ "Details" : "Detalii", "Select" : "Alege", "Pending" : "În așteptare", - "Error moving file." : "Eroare la mutarea fișierului.", - "Error moving file" : "Eroare la mutarea fișierului", - "Error" : "Eroare", - "{new_name} already exists" : "{new_name} există deja", - "Could not rename file" : "Nu s-a putut redenumi fișierul", - "Could not create file" : "Nu s-a putut crea fisierul", - "Could not create folder" : "Nu s-a putut crea folderul", - "Error deleting file." : "Eroare la ștergerea fișierului.", "Name" : "Nume", "Size" : "Mărime", "Modified" : "Modificat", @@ -63,7 +49,6 @@ "Your storage is full, files can not be updated or synced anymore!" : "Spațiul de stocare este plin, fișierele nu mai pot fi actualizate sau sincronizate!", "Your storage is almost full ({usedSpacePercent}%)" : "Spațiul de stocare este aproape plin ({usedSpacePercent}%)", "Favorite" : "Favorit", - "Text file" : "Fișier text", "Folder" : "Dosar", "New folder" : "Un nou dosar", "Upload" : "Încărcă", @@ -80,8 +65,6 @@ "%2$s deleted %1$s" : "%2$s a șters %1$s", "You restored %1$s" : "Ai restaurat %1$s", "%2$s restored %1$s" : "%2$s a restaurat %1$s", - "%s could not be renamed as it has been deleted" : "%s nu a putut fi redenumit deoarece a fost sters", - "%s could not be renamed" : "%s nu a putut fi redenumit", "Upload (max. %s)" : "Încarcă (max. %s)", "File handling" : "Manipulare fișiere", "Maximum upload size" : "Dimensiune maximă admisă la încărcare", @@ -95,6 +78,7 @@ "Upload too large" : "Fișierul încărcat este prea mare", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Fișierele pe care încerci să le încarci depășesc limita de încărcare maximă admisă pe acest server.", "Files are being scanned, please wait." : "Fișierele sunt scanate, te rog așteaptă.", - "Currently scanning" : "Acum scanează" + "Currently scanning" : "Acum scanează", + "Text file" : "Fișier text" },"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));" }
\ No newline at end of file diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js index 254e701a17c..222184d87af 100644 --- a/apps/files/l10n/ru.js +++ b/apps/files/l10n/ru.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Хранилище недоступно", "Storage invalid" : "Хранилище неисправно", "Unknown error" : "Неизвестная ошибка", - "Could not move %s - File with this name already exists" : "Невозможно переместить %s - файл с таким именем уже существует", - "Could not move %s" : "Невозможно переместить %s", - "Permission denied" : "В доступе отказано", - "The target folder has been moved or deleted." : "Целевой каталог был перемещен или удален.", - "The name %s is already used in the folder %s. Please choose a different name." : "Имя %s уже используется для каталога %s. Укажите другое имя.", - "Error when creating the file" : "Ошибка при создании файла", - "Error when creating the folder" : "Ошибка создания каталога", "Unable to set upload directory." : "Невозможно установить каталог загрузки.", "Invalid Token" : "Недопустимый маркер", "No file was uploaded. Unknown error" : "Файл не был загружен. Неизвестная ошибка", @@ -22,6 +15,7 @@ OC.L10N.register( "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." : "Неверный каталог.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Невозможно определить дату", "This operation is forbidden" : "Операция запрещена", "This directory is unavailable, please check the logs or contact the administrator" : "Директория недоступна, пожалуйста проверьте журнал сообщений или свяжитесь с администратором", - "Error moving file." : "Ошибка при перемещении файла.", - "Error moving file" : "Ошибка при перемещении файла", - "Error" : "Ошибка", - "{new_name} already exists" : "{new_name} уже существует", - "Could not rename file" : "Не удалось переименовать файл", - "Could not create file" : "Не удалось создать файл", - "Could not create folder" : "Не удалось создать каталог", - "Error deleting file." : "Ошибка при удалении файла.", "No entries in this folder match '{filter}'" : "В данном каталоге нет элементов соответствующих '{filter}'", "Name" : "Имя", "Size" : "Размер", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n байт","%n байта","%n байтов","%n байта(ов)"], "Favorited" : "Избранное", "Favorite" : "Избранное", - "Text file" : "Текстовый файл", - "New text file.txt" : "Новый текстовый документ.txt", "Folder" : "Каталог", "New folder" : "Новый каталог", "{newname} already exists" : "{newname} уже существует", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "Изменено %2$s", "Deleted by %2$s" : "Удалено %2$s", "Restored by %2$s" : "Восстановлено %2$s", - "%s could not be renamed as it has been deleted" : "Невозможно переименовать %s, поскольку объект удалён.", - "%s could not be renamed" : "%s не может быть переименован", "Upload (max. %s)" : "Загрузка (максимум %s)", "File handling" : "Управление файлами", "Maximum upload size" : "Максимальный размер загружаемого файла", @@ -119,6 +101,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Идет сканирование файлов. Пожалуйста подождите.", "Currently scanning" : "В настоящее время сканируется", "No favorites" : "Нет избранного", - "Files and folders you mark as favorite will show up here" : "Здесь появятся файлы и каталоги, отмеченные как избранные" + "Files and folders you mark as favorite will show up here" : "Здесь появятся файлы и каталоги, отмеченные как избранные", + "Text file" : "Текстовый файл", + "New text file.txt" : "Новый текстовый документ.txt" }, "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 7666ebb75d4..f3b318dc100 100644 --- a/apps/files/l10n/ru.json +++ b/apps/files/l10n/ru.json @@ -2,13 +2,6 @@ "Storage not available" : "Хранилище недоступно", "Storage invalid" : "Хранилище неисправно", "Unknown error" : "Неизвестная ошибка", - "Could not move %s - File with this name already exists" : "Невозможно переместить %s - файл с таким именем уже существует", - "Could not move %s" : "Невозможно переместить %s", - "Permission denied" : "В доступе отказано", - "The target folder has been moved or deleted." : "Целевой каталог был перемещен или удален.", - "The name %s is already used in the folder %s. Please choose a different name." : "Имя %s уже используется для каталога %s. Укажите другое имя.", - "Error when creating the file" : "Ошибка при создании файла", - "Error when creating the folder" : "Ошибка создания каталога", "Unable to set upload directory." : "Невозможно установить каталог загрузки.", "Invalid Token" : "Недопустимый маркер", "No file was uploaded. Unknown error" : "Файл не был загружен. Неизвестная ошибка", @@ -20,6 +13,7 @@ "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." : "Неверный каталог.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Невозможно определить дату", "This operation is forbidden" : "Операция запрещена", "This directory is unavailable, please check the logs or contact the administrator" : "Директория недоступна, пожалуйста проверьте журнал сообщений или свяжитесь с администратором", - "Error moving file." : "Ошибка при перемещении файла.", - "Error moving file" : "Ошибка при перемещении файла", - "Error" : "Ошибка", - "{new_name} already exists" : "{new_name} уже существует", - "Could not rename file" : "Не удалось переименовать файл", - "Could not create file" : "Не удалось создать файл", - "Could not create folder" : "Не удалось создать каталог", - "Error deleting file." : "Ошибка при удалении файла.", "No entries in this folder match '{filter}'" : "В данном каталоге нет элементов соответствующих '{filter}'", "Name" : "Имя", "Size" : "Размер", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n байт","%n байта","%n байтов","%n байта(ов)"], "Favorited" : "Избранное", "Favorite" : "Избранное", - "Text file" : "Текстовый файл", - "New text file.txt" : "Новый текстовый документ.txt", "Folder" : "Каталог", "New folder" : "Новый каталог", "{newname} already exists" : "{newname} уже существует", @@ -97,8 +81,6 @@ "Changed by %2$s" : "Изменено %2$s", "Deleted by %2$s" : "Удалено %2$s", "Restored by %2$s" : "Восстановлено %2$s", - "%s could not be renamed as it has been deleted" : "Невозможно переименовать %s, поскольку объект удалён.", - "%s could not be renamed" : "%s не может быть переименован", "Upload (max. %s)" : "Загрузка (максимум %s)", "File handling" : "Управление файлами", "Maximum upload size" : "Максимальный размер загружаемого файла", @@ -117,6 +99,8 @@ "Files are being scanned, please wait." : "Идет сканирование файлов. Пожалуйста подождите.", "Currently scanning" : "В настоящее время сканируется", "No favorites" : "Нет избранного", - "Files and folders you mark as favorite will show up here" : "Здесь появятся файлы и каталоги, отмеченные как избранные" + "Files and folders you mark as favorite will show up here" : "Здесь появятся файлы и каталоги, отмеченные как избранные", + "Text file" : "Текстовый файл", + "New text file.txt" : "Новый текстовый документ.txt" },"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/si_LK.js b/apps/files/l10n/si_LK.js index 9b2696d4530..44e96c49fc6 100644 --- a/apps/files/l10n/si_LK.js +++ b/apps/files/l10n/si_LK.js @@ -17,12 +17,10 @@ OC.L10N.register( "Rename" : "නැවත නම් කරන්න", "Delete" : "මකා දමන්න", "Select" : "තෝරන්න", - "Error" : "දෝෂයක්", "Name" : "නම", "Size" : "ප්රමාණය", "Modified" : "වෙනස් කළ", "New" : "නව", - "Text file" : "පෙළ ගොනුව", "Folder" : "ෆෝල්ඩරය", "Upload" : "උඩුගත කරන්න", "A new file or folder has been <strong>created</strong>" : "නව ගොනුවක් හෝ බහාලුමක් <strong> නිර්මාණය කර ඇත</ strong> ", @@ -37,6 +35,7 @@ OC.L10N.register( "Cancel upload" : "උඩුගත කිරීම අත් හරින්න", "Upload too large" : "උඩුගත කිරීම විශාල වැඩිය", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "ඔබ උඩුගත කිරීමට තැත් කරන ගොනු මෙම සේවාදායකයා උඩුගත කිරීමට ඉඩදී ඇති උපරිම ගොනු විශාලත්වයට වඩා වැඩිය", - "Files are being scanned, please wait." : "ගොනු පරික්ෂා කෙරේ. මඳක් රැඳී සිටින්න" + "Files are being scanned, please wait." : "ගොනු පරික්ෂා කෙරේ. මඳක් රැඳී සිටින්න", + "Text file" : "පෙළ ගොනුව" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/si_LK.json b/apps/files/l10n/si_LK.json index b46144f4881..92bcea71587 100644 --- a/apps/files/l10n/si_LK.json +++ b/apps/files/l10n/si_LK.json @@ -15,12 +15,10 @@ "Rename" : "නැවත නම් කරන්න", "Delete" : "මකා දමන්න", "Select" : "තෝරන්න", - "Error" : "දෝෂයක්", "Name" : "නම", "Size" : "ප්රමාණය", "Modified" : "වෙනස් කළ", "New" : "නව", - "Text file" : "පෙළ ගොනුව", "Folder" : "ෆෝල්ඩරය", "Upload" : "උඩුගත කරන්න", "A new file or folder has been <strong>created</strong>" : "නව ගොනුවක් හෝ බහාලුමක් <strong> නිර්මාණය කර ඇත</ strong> ", @@ -35,6 +33,7 @@ "Cancel upload" : "උඩුගත කිරීම අත් හරින්න", "Upload too large" : "උඩුගත කිරීම විශාල වැඩිය", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "ඔබ උඩුගත කිරීමට තැත් කරන ගොනු මෙම සේවාදායකයා උඩුගත කිරීමට ඉඩදී ඇති උපරිම ගොනු විශාලත්වයට වඩා වැඩිය", - "Files are being scanned, please wait." : "ගොනු පරික්ෂා කෙරේ. මඳක් රැඳී සිටින්න" + "Files are being scanned, please wait." : "ගොනු පරික්ෂා කෙරේ. මඳක් රැඳී සිටින්න", + "Text file" : "පෙළ ගොනුව" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/sk_SK.js b/apps/files/l10n/sk_SK.js index 1736a1f94c1..ca7e107d1ca 100644 --- a/apps/files/l10n/sk_SK.js +++ b/apps/files/l10n/sk_SK.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Úložisko nie je dostupné", "Storage invalid" : "Úložisko nie je platné", "Unknown error" : "Neznáma chyba", - "Could not move %s - File with this name already exists" : "Nie je možné presunúť %s - súbor s týmto menom už existuje", - "Could not move %s" : "Nie je možné presunúť %s", - "Permission denied" : "Prístup bol odmietnutý", - "The target folder has been moved or deleted." : "Cieľový priečinok bol premiestnený alebo odstránený.", - "The name %s is already used in the folder %s. Please choose a different name." : "Názov %s už používa priečinok s%. Prosím zvoľte iný názov.", - "Error when creating the file" : "Chyba pri vytváraní súboru", - "Error when creating the folder" : "Chyba pri vytváraní priečinka", "Unable to set upload directory." : "Nemožno nastaviť priečinok pre nahrané súbory.", "Invalid Token" : "Neplatný token", "No file was uploaded. Unknown error" : "Žiaden súbor nebol nahraný. Neznáma chyba", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Chýba dočasný priečinok", "Failed to write to disk" : "Zápis na disk sa nepodaril", "Not enough storage available" : "Nedostatok dostupného úložného priestoru", + "The target folder has been moved or deleted." : "Cieľový priečinok bol premiestnený alebo odstránený.", "Upload failed. Could not find uploaded file" : "Nahrávanie zlyhalo. Nepodarilo sa nájsť nahrávaný súbor", "Upload failed. Could not get file info." : "Nahrávanie zlyhalo. Nepodarilo sa získať informácie o súbore.", "Invalid directory." : "Neplatný priečinok.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Nemožno určiť dátum", "This operation is forbidden" : "Táto operácia je zakázaná", "This directory is unavailable, please check the logs or contact the administrator" : "Priečinok je nedostupný, skontrolujte prosím logy, alebo kontaktujte správcu", - "Error moving file." : "Chyba pri presune súboru.", - "Error moving file" : "Chyba pri presúvaní súboru", - "Error" : "Chyba", - "{new_name} already exists" : "{new_name} už existuje", - "Could not rename file" : "Nemožno premenovať súbor", - "Could not create file" : "Nemožno vytvoriť súbor", - "Could not create folder" : "Nemožno vytvoriť priečinok", - "Error deleting file." : "Chyba pri mazaní súboru.", "No entries in this folder match '{filter}'" : "V tomto priečinku nič nezodpovedá '{filter}'", "Name" : "Názov", "Size" : "Veľkosť", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtov"], "Favorited" : "Pridané k obľúbeným", "Favorite" : "Obľúbené", - "Text file" : "Textový súbor", - "New text file.txt" : "Nový text file.txt", "Folder" : "Priečinok", "New folder" : "Nový priečinok", "{newname} already exists" : "{newname} už existuje", @@ -96,8 +80,6 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s zmazal %1$s", "You restored %1$s" : "Bol obnovený %1$s", "%2$s restored %1$s" : "%2$s obnovil %1$s", - "%s could not be renamed as it has been deleted" : "%s nebolo možné premenovať, pretože bol zmazaný", - "%s could not be renamed" : "%s nemohol byť premenovaný", "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", @@ -116,6 +98,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Čakajte, súbory sú prehľadávané.", "Currently scanning" : "Prehľadáva sa", "No favorites" : "Žiadne obľúbené", - "Files and folders you mark as favorite will show up here" : "Súbory a priečinky označené ako obľúbené budú zobrazené tu" + "Files and folders you mark as favorite will show up here" : "Súbory a priečinky označené ako obľúbené budú zobrazené tu", + "Text file" : "Textový súbor", + "New text file.txt" : "Nový text file.txt" }, "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); diff --git a/apps/files/l10n/sk_SK.json b/apps/files/l10n/sk_SK.json index 8936375cade..4d03e18556a 100644 --- a/apps/files/l10n/sk_SK.json +++ b/apps/files/l10n/sk_SK.json @@ -2,13 +2,6 @@ "Storage not available" : "Úložisko nie je dostupné", "Storage invalid" : "Úložisko nie je platné", "Unknown error" : "Neznáma chyba", - "Could not move %s - File with this name already exists" : "Nie je možné presunúť %s - súbor s týmto menom už existuje", - "Could not move %s" : "Nie je možné presunúť %s", - "Permission denied" : "Prístup bol odmietnutý", - "The target folder has been moved or deleted." : "Cieľový priečinok bol premiestnený alebo odstránený.", - "The name %s is already used in the folder %s. Please choose a different name." : "Názov %s už používa priečinok s%. Prosím zvoľte iný názov.", - "Error when creating the file" : "Chyba pri vytváraní súboru", - "Error when creating the folder" : "Chyba pri vytváraní priečinka", "Unable to set upload directory." : "Nemožno nastaviť priečinok pre nahrané súbory.", "Invalid Token" : "Neplatný token", "No file was uploaded. Unknown error" : "Žiaden súbor nebol nahraný. Neznáma chyba", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Chýba dočasný priečinok", "Failed to write to disk" : "Zápis na disk sa nepodaril", "Not enough storage available" : "Nedostatok dostupného úložného priestoru", + "The target folder has been moved or deleted." : "Cieľový priečinok bol premiestnený alebo odstránený.", "Upload failed. Could not find uploaded file" : "Nahrávanie zlyhalo. Nepodarilo sa nájsť nahrávaný súbor", "Upload failed. Could not get file info." : "Nahrávanie zlyhalo. Nepodarilo sa získať informácie o súbore.", "Invalid directory." : "Neplatný priečinok.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Nemožno určiť dátum", "This operation is forbidden" : "Táto operácia je zakázaná", "This directory is unavailable, please check the logs or contact the administrator" : "Priečinok je nedostupný, skontrolujte prosím logy, alebo kontaktujte správcu", - "Error moving file." : "Chyba pri presune súboru.", - "Error moving file" : "Chyba pri presúvaní súboru", - "Error" : "Chyba", - "{new_name} already exists" : "{new_name} už existuje", - "Could not rename file" : "Nemožno premenovať súbor", - "Could not create file" : "Nemožno vytvoriť súbor", - "Could not create folder" : "Nemožno vytvoriť priečinok", - "Error deleting file." : "Chyba pri mazaní súboru.", "No entries in this folder match '{filter}'" : "V tomto priečinku nič nezodpovedá '{filter}'", "Name" : "Názov", "Size" : "Veľkosť", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtov"], "Favorited" : "Pridané k obľúbeným", "Favorite" : "Obľúbené", - "Text file" : "Textový súbor", - "New text file.txt" : "Nový text file.txt", "Folder" : "Priečinok", "New folder" : "Nový priečinok", "{newname} already exists" : "{newname} už existuje", @@ -94,8 +78,6 @@ "%2$s deleted %1$s" : "%2$s zmazal %1$s", "You restored %1$s" : "Bol obnovený %1$s", "%2$s restored %1$s" : "%2$s obnovil %1$s", - "%s could not be renamed as it has been deleted" : "%s nebolo možné premenovať, pretože bol zmazaný", - "%s could not be renamed" : "%s nemohol byť premenovaný", "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", @@ -114,6 +96,8 @@ "Files are being scanned, please wait." : "Čakajte, súbory sú prehľadávané.", "Currently scanning" : "Prehľadáva sa", "No favorites" : "Žiadne obľúbené", - "Files and folders you mark as favorite will show up here" : "Súbory a priečinky označené ako obľúbené budú zobrazené tu" + "Files and folders you mark as favorite will show up here" : "Súbory a priečinky označené ako obľúbené budú zobrazené tu", + "Text file" : "Textový súbor", + "New text file.txt" : "Nový text file.txt" },"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/sl.js b/apps/files/l10n/sl.js index d89d31f6aea..240bce73af1 100644 --- a/apps/files/l10n/sl.js +++ b/apps/files/l10n/sl.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Na voljo ni dovolj prostora", "Storage invalid" : "Določen prostor ni veljaven", "Unknown error" : "Neznana napaka", - "Could not move %s - File with this name already exists" : "Datoteke %s ni mogoče premakniti - datoteka s tem imenom že obstaja.", - "Could not move %s" : "Datoteke %s ni mogoče premakniti", - "Permission denied" : "Za to opravilo ni ustreznih dovoljenj.", - "The target folder has been moved or deleted." : "Ciljna mapa je premaknjena ali izbrisana.", - "The name %s is already used in the folder %s. Please choose a different name." : "Ime %s je že v mapi %s že v uporabi. Izbrati je treba drugo ime.", - "Error when creating the file" : "Napaka med ustvarjanjem datoteke", - "Error when creating the folder" : "Napaka med ustvarjanjem mape", "Unable to set upload directory." : "Mapo, v katero boste prenašali dokumente, ni mogoče določiti", "Invalid Token" : "Neveljaven žeton", "No file was uploaded. Unknown error" : "Ni poslane datoteke. Neznana napaka.", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Manjka začasna mapa", "Failed to write to disk" : "Pisanje na disk je spodletelo", "Not enough storage available" : "Na voljo ni dovolj prostora", + "The target folder has been moved or deleted." : "Ciljna mapa je premaknjena ali izbrisana.", "Upload failed. Could not find uploaded file" : "Pošiljanje je spodletelo. Ni mogoče najti poslane datoteke.", "Upload failed. Could not get file info." : "Pošiljanje je spodletelo. Ni mogoče pridobiti podrobnosti datoteke.", "Invalid directory." : "Neveljavna mapa.", @@ -44,14 +38,6 @@ OC.L10N.register( "Select" : "Izberi", "Pending" : "V čakanju ...", "Unable to determine date" : "Ni mogoče določiti datuma", - "Error moving file." : "Napaka premikanja datoteke.", - "Error moving file" : "Napaka premikanja datoteke", - "Error" : "Napaka", - "{new_name} already exists" : "{new_name} že obstaja", - "Could not rename file" : "Ni mogoče preimenovati datoteke", - "Could not create file" : "Ni mogoče ustvariti datoteke", - "Could not create folder" : "Ni mogoče ustvariti mape", - "Error deleting file." : "Napaka brisanja datoteke.", "No entries in this folder match '{filter}'" : "Ni zadetkov, ki bi bili skladni z nizom '{filter}'", "Name" : "Ime", "Size" : "Velikost", @@ -71,7 +57,6 @@ OC.L10N.register( "_matches '{filter}'_::_match '{filter}'_" : ["se sklada s filtrom '{filter}'","se skladata s filtrom '{filter}'","se skladajo s filtrom '{filter}'","se skladajo s filtrom '{filter}'"], "Favorited" : "Označeno kot priljubljeno", "Favorite" : "Priljubljene", - "Text file" : "Besedilna datoteka", "Folder" : "Mapa", "New folder" : "Nova mapa", "Upload" : "Pošlji", @@ -90,8 +75,6 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s je izbrisal %1$s", "You restored %1$s" : "Obnovljen je predmet %1$s", "%2$s restored %1$s" : "Uporabnik %2$s je obnovil predmet %1$s.", - "%s could not be renamed as it has been deleted" : "Datoteke %s ni mogoče preimenovati, ker je bila že prej izbrisana.", - "%s could not be renamed" : "%s ni mogoče preimenovati", "Upload (max. %s)" : "Pošiljanje (omejitev %s)", "File handling" : "Upravljanje z datotekami", "Maximum upload size" : "Največja velikost za pošiljanja", @@ -110,6 +93,7 @@ OC.L10N.register( "Files are being scanned, please wait." : "Poteka preučevanje datotek, počakajte ...", "Currently scanning" : "Poteka preverjanje", "No favorites" : "Ni priljubljenih", - "Files and folders you mark as favorite will show up here" : "Datoteke ali mape, ki so označene kot priljubljene, bodo izpisane tukaj." + "Files and folders you mark as favorite will show up here" : "Datoteke ali mape, ki so označene kot priljubljene, bodo izpisane tukaj.", + "Text file" : "Besedilna datoteka" }, "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"); diff --git a/apps/files/l10n/sl.json b/apps/files/l10n/sl.json index 6dbbd99371a..64ad90f56bd 100644 --- a/apps/files/l10n/sl.json +++ b/apps/files/l10n/sl.json @@ -2,13 +2,6 @@ "Storage not available" : "Na voljo ni dovolj prostora", "Storage invalid" : "Določen prostor ni veljaven", "Unknown error" : "Neznana napaka", - "Could not move %s - File with this name already exists" : "Datoteke %s ni mogoče premakniti - datoteka s tem imenom že obstaja.", - "Could not move %s" : "Datoteke %s ni mogoče premakniti", - "Permission denied" : "Za to opravilo ni ustreznih dovoljenj.", - "The target folder has been moved or deleted." : "Ciljna mapa je premaknjena ali izbrisana.", - "The name %s is already used in the folder %s. Please choose a different name." : "Ime %s je že v mapi %s že v uporabi. Izbrati je treba drugo ime.", - "Error when creating the file" : "Napaka med ustvarjanjem datoteke", - "Error when creating the folder" : "Napaka med ustvarjanjem mape", "Unable to set upload directory." : "Mapo, v katero boste prenašali dokumente, ni mogoče določiti", "Invalid Token" : "Neveljaven žeton", "No file was uploaded. Unknown error" : "Ni poslane datoteke. Neznana napaka.", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Manjka začasna mapa", "Failed to write to disk" : "Pisanje na disk je spodletelo", "Not enough storage available" : "Na voljo ni dovolj prostora", + "The target folder has been moved or deleted." : "Ciljna mapa je premaknjena ali izbrisana.", "Upload failed. Could not find uploaded file" : "Pošiljanje je spodletelo. Ni mogoče najti poslane datoteke.", "Upload failed. Could not get file info." : "Pošiljanje je spodletelo. Ni mogoče pridobiti podrobnosti datoteke.", "Invalid directory." : "Neveljavna mapa.", @@ -42,14 +36,6 @@ "Select" : "Izberi", "Pending" : "V čakanju ...", "Unable to determine date" : "Ni mogoče določiti datuma", - "Error moving file." : "Napaka premikanja datoteke.", - "Error moving file" : "Napaka premikanja datoteke", - "Error" : "Napaka", - "{new_name} already exists" : "{new_name} že obstaja", - "Could not rename file" : "Ni mogoče preimenovati datoteke", - "Could not create file" : "Ni mogoče ustvariti datoteke", - "Could not create folder" : "Ni mogoče ustvariti mape", - "Error deleting file." : "Napaka brisanja datoteke.", "No entries in this folder match '{filter}'" : "Ni zadetkov, ki bi bili skladni z nizom '{filter}'", "Name" : "Ime", "Size" : "Velikost", @@ -69,7 +55,6 @@ "_matches '{filter}'_::_match '{filter}'_" : ["se sklada s filtrom '{filter}'","se skladata s filtrom '{filter}'","se skladajo s filtrom '{filter}'","se skladajo s filtrom '{filter}'"], "Favorited" : "Označeno kot priljubljeno", "Favorite" : "Priljubljene", - "Text file" : "Besedilna datoteka", "Folder" : "Mapa", "New folder" : "Nova mapa", "Upload" : "Pošlji", @@ -88,8 +73,6 @@ "%2$s deleted %1$s" : "%2$s je izbrisal %1$s", "You restored %1$s" : "Obnovljen je predmet %1$s", "%2$s restored %1$s" : "Uporabnik %2$s je obnovil predmet %1$s.", - "%s could not be renamed as it has been deleted" : "Datoteke %s ni mogoče preimenovati, ker je bila že prej izbrisana.", - "%s could not be renamed" : "%s ni mogoče preimenovati", "Upload (max. %s)" : "Pošiljanje (omejitev %s)", "File handling" : "Upravljanje z datotekami", "Maximum upload size" : "Največja velikost za pošiljanja", @@ -108,6 +91,7 @@ "Files are being scanned, please wait." : "Poteka preučevanje datotek, počakajte ...", "Currently scanning" : "Poteka preverjanje", "No favorites" : "Ni priljubljenih", - "Files and folders you mark as favorite will show up here" : "Datoteke ali mape, ki so označene kot priljubljene, bodo izpisane tukaj." + "Files and folders you mark as favorite will show up here" : "Datoteke ali mape, ki so označene kot priljubljene, bodo izpisane tukaj.", + "Text file" : "Besedilna datoteka" },"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);" }
\ No newline at end of file diff --git a/apps/files/l10n/sq.js b/apps/files/l10n/sq.js index 5f0b3a8c936..f2db47ddf98 100644 --- a/apps/files/l10n/sq.js +++ b/apps/files/l10n/sq.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Pa depozitë gati", "Storage invalid" : "Depozitë e pavlefshme", "Unknown error" : "Gabim i panjohur", - "Could not move %s - File with this name already exists" : "S’u zhvendos dot %s - Ka tashmë kartelë me këtë", - "Could not move %s" : "S’u zhvendos dot %s", - "Permission denied" : "Leje e mohuar", - "The target folder has been moved or deleted." : "Dosja vendmbërritje është zhvendosur ose fshirë.", - "The name %s is already used in the folder %s. Please choose a different name." : "Emri %s tashmë është i përdorur në dosjen %s. Ju lutemi, zgjidhni një emër tjetër.", - "Error when creating the file" : "Gabim gjatë krijimit të kartelës", - "Error when creating the folder" : "Gabim gjatë krijimit të dosjes", "Unable to set upload directory." : "S’arrihet të caktohet drejtori ngarkimesh", "Invalid Token" : "Token i pavlefshëm", "No file was uploaded. Unknown error" : "S’u ngarkua ndonjë kartelë. Gabim i panjohur", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Mungon një dosje e përkohshme", "Failed to write to disk" : "Dështoi shkrimi në disk", "Not enough storage available" : "S’ka depozitë të mjaftueshme", + "The target folder has been moved or deleted." : "Dosja vendmbërritje është zhvendosur ose fshirë.", "Upload failed. Could not find uploaded file" : "Ngarkimi dështoi. S’u gjet dot kartela e ngarkuar", "Upload failed. Could not get file info." : "Ngarkoi dështoi. S’u morën dot të dhëna kartele.", "Invalid directory." : "Drejtori e pavlefshme.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "S’arrihet të përcaktohet data", "This operation is forbidden" : "Ky veprim është i ndaluar", "This directory is unavailable, please check the logs or contact the administrator" : "Kjo drejtori nuk kapet, ju lutemi, kontrolloni regjistrat ose lidhuni me përgjegjësin", - "Error moving file." : "Gabim në lëvizjen e kartelës.", - "Error moving file" : "Gabim në lëvizjen e kartelës", - "Error" : "Gabim", - "{new_name} already exists" : "{new_name} ekziston tashmtë", - "Could not rename file" : "Kartela s’u riemërtua dot", - "Could not create file" : "Kartela s’u krijua dot", - "Could not create folder" : "Dosja s’u krijua dot", - "Error deleting file." : "Gabim gjatë fshirjes së kartelës.", "No entries in this folder match '{filter}'" : "Në këtë dosje s’ka zëra me përputhje me '{filter}'", "Name" : "Emër", "Size" : "Madhësi", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n bajt","%n bajte"], "Favorited" : "U kalua e parapëlqyer", "Favorite" : "E parapëlqyer", - "Text file" : "Kartelë tekst", - "New text file.txt" : "Kartelë e re file.txt", "Folder" : "Dosje", "New folder" : "Dosje e re", "{newname} already exists" : "Ka tashmë një {newname}", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "Ndryshuar nga %2$s", "Deleted by %2$s" : "Fshirë nga %2$s", "Restored by %2$s" : "Rikthyer nga %2$s", - "%s could not be renamed as it has been deleted" : "%s s’riemërtohet dot, sepse është fshirë", - "%s could not be renamed" : "%s s’riemërtohet dot", "Upload (max. %s)" : "Ngarkim (max. %s)", "File handling" : "Trajtim kartele", "Maximum upload size" : "Madhësi maksimale ngarkimi", @@ -121,6 +103,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Kartelat po kontrollohen, ju lutemi, pritni.", "Currently scanning" : "Po kontrollohet", "No favorites" : "Pa të parapëlqyera", - "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" + "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", + "Text file" : "Kartelë tekst", + "New text file.txt" : "Kartelë e re file.txt" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/sq.json b/apps/files/l10n/sq.json index fceac2c5376..473a4b18d2d 100644 --- a/apps/files/l10n/sq.json +++ b/apps/files/l10n/sq.json @@ -2,13 +2,6 @@ "Storage not available" : "Pa depozitë gati", "Storage invalid" : "Depozitë e pavlefshme", "Unknown error" : "Gabim i panjohur", - "Could not move %s - File with this name already exists" : "S’u zhvendos dot %s - Ka tashmë kartelë me këtë", - "Could not move %s" : "S’u zhvendos dot %s", - "Permission denied" : "Leje e mohuar", - "The target folder has been moved or deleted." : "Dosja vendmbërritje është zhvendosur ose fshirë.", - "The name %s is already used in the folder %s. Please choose a different name." : "Emri %s tashmë është i përdorur në dosjen %s. Ju lutemi, zgjidhni një emër tjetër.", - "Error when creating the file" : "Gabim gjatë krijimit të kartelës", - "Error when creating the folder" : "Gabim gjatë krijimit të dosjes", "Unable to set upload directory." : "S’arrihet të caktohet drejtori ngarkimesh", "Invalid Token" : "Token i pavlefshëm", "No file was uploaded. Unknown error" : "S’u ngarkua ndonjë kartelë. Gabim i panjohur", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Mungon një dosje e përkohshme", "Failed to write to disk" : "Dështoi shkrimi në disk", "Not enough storage available" : "S’ka depozitë të mjaftueshme", + "The target folder has been moved or deleted." : "Dosja vendmbërritje është zhvendosur ose fshirë.", "Upload failed. Could not find uploaded file" : "Ngarkimi dështoi. S’u gjet dot kartela e ngarkuar", "Upload failed. Could not get file info." : "Ngarkoi dështoi. S’u morën dot të dhëna kartele.", "Invalid directory." : "Drejtori e pavlefshme.", @@ -44,14 +38,6 @@ "Unable to determine date" : "S’arrihet të përcaktohet data", "This operation is forbidden" : "Ky veprim është i ndaluar", "This directory is unavailable, please check the logs or contact the administrator" : "Kjo drejtori nuk kapet, ju lutemi, kontrolloni regjistrat ose lidhuni me përgjegjësin", - "Error moving file." : "Gabim në lëvizjen e kartelës.", - "Error moving file" : "Gabim në lëvizjen e kartelës", - "Error" : "Gabim", - "{new_name} already exists" : "{new_name} ekziston tashmtë", - "Could not rename file" : "Kartela s’u riemërtua dot", - "Could not create file" : "Kartela s’u krijua dot", - "Could not create folder" : "Dosja s’u krijua dot", - "Error deleting file." : "Gabim gjatë fshirjes së kartelës.", "No entries in this folder match '{filter}'" : "Në këtë dosje s’ka zëra me përputhje me '{filter}'", "Name" : "Emër", "Size" : "Madhësi", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n bajt","%n bajte"], "Favorited" : "U kalua e parapëlqyer", "Favorite" : "E parapëlqyer", - "Text file" : "Kartelë tekst", - "New text file.txt" : "Kartelë e re file.txt", "Folder" : "Dosje", "New folder" : "Dosje e re", "{newname} already exists" : "Ka tashmë një {newname}", @@ -97,8 +81,6 @@ "Changed by %2$s" : "Ndryshuar nga %2$s", "Deleted by %2$s" : "Fshirë nga %2$s", "Restored by %2$s" : "Rikthyer nga %2$s", - "%s could not be renamed as it has been deleted" : "%s s’riemërtohet dot, sepse është fshirë", - "%s could not be renamed" : "%s s’riemërtohet dot", "Upload (max. %s)" : "Ngarkim (max. %s)", "File handling" : "Trajtim kartele", "Maximum upload size" : "Madhësi maksimale ngarkimi", @@ -119,6 +101,8 @@ "Files are being scanned, please wait." : "Kartelat po kontrollohen, ju lutemi, pritni.", "Currently scanning" : "Po kontrollohet", "No favorites" : "Pa të parapëlqyera", - "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" + "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", + "Text file" : "Kartelë tekst", + "New text file.txt" : "Kartelë e re file.txt" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/sr.js b/apps/files/l10n/sr.js index 289b7dd432c..80f81b1e028 100644 --- a/apps/files/l10n/sr.js +++ b/apps/files/l10n/sr.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Складиште није доступно", "Storage invalid" : "Неисправно складиште", "Unknown error" : "Непозната грешка", - "Could not move %s - File with this name already exists" : "Не могу да преместим %s – фајл са овим називом већ постоји", - "Could not move %s" : "Не могу да преместим %s", - "Permission denied" : "Приступ одбијен", - "The target folder has been moved or deleted." : "Одредишна фасцикла је премештена или обрисана.", - "The name %s is already used in the folder %s. Please choose a different name." : "Назив %s се већ користи у фасцикли %s. Одредите други назив.", - "Error when creating the file" : "Грешка при стварању фајла", - "Error when creating the folder" : "Грешка при стварању фајла", "Unable to set upload directory." : "Не могу да поставим директоријум за отпремање.", "Invalid Token" : "Неисправан токен", "No file was uploaded. Unknown error" : "Ниједан фајл није отпремљен. Непозната грешка", @@ -22,6 +15,7 @@ OC.L10N.register( "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." : "Неисправна фасцикла.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Не могу да одредим датум", "This operation is forbidden" : "Ова радња је забрањена", "This directory is unavailable, please check the logs or contact the administrator" : "Овај директоријум није доступан, проверите записе или контактирајте администратора", - "Error moving file." : "Грешка при премештању фајла.", - "Error moving file" : "Грешка при премештању фајла", - "Error" : "Грешка", - "{new_name} already exists" : "{new_name} већ постоји", - "Could not rename file" : "Не могу да преименујем фајл", - "Could not create file" : "Не могу да створим фајл", - "Could not create folder" : "Не могу да створим фасциклу", - "Error deleting file." : "Грешка при брисању фајла.", "No entries in this folder match '{filter}'" : "У овој фасцикли ништа се не поклапа са '{filter}'", "Name" : "Назив", "Size" : "Величина", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n бајт","%n бајта","%n бајта"], "Favorited" : "Омиљено", "Favorite" : "Омиљени", - "Text file" : "текстуални фајл", - "New text file.txt" : "Нов текстуални фајл.txt", "Folder" : "фасцикла", "New folder" : "Нова фасцикла", "{newname} already exists" : "{newname} већ постоји", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "Изменио %2$s", "Deleted by %2$s" : "Обрисао %2$s", "Restored by %2$s" : "Повратио %2$s", - "%s could not be renamed as it has been deleted" : "%s се не може преименовати јер је обрисан", - "%s could not be renamed" : "%s се не може преименовати", "Upload (max. %s)" : "Отпремање (макс. %s)", "File handling" : "Руковање фајловима", "Maximum upload size" : "Највећа величина отпремања", @@ -119,6 +101,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Скенирам фајлове, сачекајте.", "Currently scanning" : "Тренутно скенирам", "No favorites" : "Нема омиљених", - "Files and folders you mark as favorite will show up here" : "Фајлови и фасцикле које обележите као омиљене појавиће се овде" + "Files and folders you mark as favorite will show up here" : "Фајлови и фасцикле које обележите као омиљене појавиће се овде", + "Text file" : "текстуални фајл", + "New text file.txt" : "Нов текстуални фајл.txt" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files/l10n/sr.json b/apps/files/l10n/sr.json index 60457925962..f878b9c14d4 100644 --- a/apps/files/l10n/sr.json +++ b/apps/files/l10n/sr.json @@ -2,13 +2,6 @@ "Storage not available" : "Складиште није доступно", "Storage invalid" : "Неисправно складиште", "Unknown error" : "Непозната грешка", - "Could not move %s - File with this name already exists" : "Не могу да преместим %s – фајл са овим називом већ постоји", - "Could not move %s" : "Не могу да преместим %s", - "Permission denied" : "Приступ одбијен", - "The target folder has been moved or deleted." : "Одредишна фасцикла је премештена или обрисана.", - "The name %s is already used in the folder %s. Please choose a different name." : "Назив %s се већ користи у фасцикли %s. Одредите други назив.", - "Error when creating the file" : "Грешка при стварању фајла", - "Error when creating the folder" : "Грешка при стварању фајла", "Unable to set upload directory." : "Не могу да поставим директоријум за отпремање.", "Invalid Token" : "Неисправан токен", "No file was uploaded. Unknown error" : "Ниједан фајл није отпремљен. Непозната грешка", @@ -20,6 +13,7 @@ "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." : "Неисправна фасцикла.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Не могу да одредим датум", "This operation is forbidden" : "Ова радња је забрањена", "This directory is unavailable, please check the logs or contact the administrator" : "Овај директоријум није доступан, проверите записе или контактирајте администратора", - "Error moving file." : "Грешка при премештању фајла.", - "Error moving file" : "Грешка при премештању фајла", - "Error" : "Грешка", - "{new_name} already exists" : "{new_name} већ постоји", - "Could not rename file" : "Не могу да преименујем фајл", - "Could not create file" : "Не могу да створим фајл", - "Could not create folder" : "Не могу да створим фасциклу", - "Error deleting file." : "Грешка при брисању фајла.", "No entries in this folder match '{filter}'" : "У овој фасцикли ништа се не поклапа са '{filter}'", "Name" : "Назив", "Size" : "Величина", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n бајт","%n бајта","%n бајта"], "Favorited" : "Омиљено", "Favorite" : "Омиљени", - "Text file" : "текстуални фајл", - "New text file.txt" : "Нов текстуални фајл.txt", "Folder" : "фасцикла", "New folder" : "Нова фасцикла", "{newname} already exists" : "{newname} већ постоји", @@ -97,8 +81,6 @@ "Changed by %2$s" : "Изменио %2$s", "Deleted by %2$s" : "Обрисао %2$s", "Restored by %2$s" : "Повратио %2$s", - "%s could not be renamed as it has been deleted" : "%s се не може преименовати јер је обрисан", - "%s could not be renamed" : "%s се не може преименовати", "Upload (max. %s)" : "Отпремање (макс. %s)", "File handling" : "Руковање фајловима", "Maximum upload size" : "Највећа величина отпремања", @@ -117,6 +99,8 @@ "Files are being scanned, please wait." : "Скенирам фајлове, сачекајте.", "Currently scanning" : "Тренутно скенирам", "No favorites" : "Нема омиљених", - "Files and folders you mark as favorite will show up here" : "Фајлови и фасцикле које обележите као омиљене појавиће се овде" + "Files and folders you mark as favorite will show up here" : "Фајлови и фасцикле које обележите као омиљене појавиће се овде", + "Text file" : "текстуални фајл", + "New text file.txt" : "Нов текстуални фајл.txt" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/files/l10n/sr@latin.js b/apps/files/l10n/sr@latin.js index 2907018adfb..d7017005a17 100644 --- a/apps/files/l10n/sr@latin.js +++ b/apps/files/l10n/sr@latin.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Skladište nije dostupno", "Storage invalid" : "Neispravno skladište", "Unknown error" : "Nepoznata greška", - "Could not move %s - File with this name already exists" : "Ne mogu da premestim %s – fajl sa ovim nazivom već postoji", - "Could not move %s" : "Ne mogu da premestim %s", - "Permission denied" : "Pristup odbijen", - "The target folder has been moved or deleted." : "Odredišna fascikla je premeštena ili obrisana.", - "The name %s is already used in the folder %s. Please choose a different name." : "Naziv %s se već koristi u fascikli %s. Odredite drugi naziv.", - "Error when creating the file" : "Greška pri stvaranju fajla", - "Error when creating the folder" : "Greška pri stvaranju fajla", "Unable to set upload directory." : "Ne mogu da postavim direktorijum za otpremanje.", "Invalid Token" : "Neispravan token", "No file was uploaded. Unknown error" : "Nijedan fajl nije otpremljen. Nepoznata greška", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Nedostaje privremena fascikla", "Failed to write to disk" : "Ne mogu da pišem na disk", "Not enough storage available" : "Nema dovoljno prostora", + "The target folder has been moved or deleted." : "Odredišna fascikla je premeštena ili obrisana.", "Upload failed. Could not find uploaded file" : "Neuspešno otpremanje. Ne mogu da nađem otpremljeni fajl", "Upload failed. Could not get file info." : "Neuspešno otpremanje. Ne mogu da dobijem podatke o fajlu.", "Invalid directory." : "Neispravna fascikla.", @@ -43,14 +37,6 @@ OC.L10N.register( "Select" : "Izaberi", "Pending" : "Na čekanju", "Unable to determine date" : "Ne mogu da odredim datum", - "Error moving file." : "Greška pri premeštanju fajla.", - "Error moving file" : "Greška pri premeštanju fajla", - "Error" : "Greška", - "{new_name} already exists" : "{new_name} već postoji", - "Could not rename file" : "Ne mogu da preimenujem fajl", - "Could not create file" : "Ne mogu da stvorim fajl", - "Could not create folder" : "Ne mogu da stvorim fasciklu", - "Error deleting file." : "Greška pri brisanju fajla.", "No entries in this folder match '{filter}'" : "U ovoj fascikli ništa se ne poklapa sa '{filter}'", "Name" : "Naziv", "Size" : "Veličina", @@ -68,7 +54,6 @@ OC.L10N.register( "_matches '{filter}'_::_match '{filter}'_" : ["se poklapa sa '{filter}'","se poklapaju sa '{filter}'","se poklapa sa '{filter}'"], "Favorited" : "Omiljeno", "Favorite" : "Omiljeni", - "Text file" : "tekstualni fajl", "Folder" : "fascikla", "New folder" : "Nova fascikla", "Upload" : "Otpremi", @@ -87,8 +72,6 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s obrisa %1$s", "You restored %1$s" : "Vratili ste %1$s", "%2$s restored %1$s" : "%2$s povrati %1$s", - "%s could not be renamed as it has been deleted" : "%s se ne može preimenovati jer je obrisan", - "%s could not be renamed" : "%s se ne može preimenovati", "Upload (max. %s)" : "Otpremanje (maks. %s)", "File handling" : "Rukovanje fajlovima", "Maximum upload size" : "Najveća veličina otpremanja", @@ -107,6 +90,7 @@ OC.L10N.register( "Files are being scanned, please wait." : "Skeniram fajlove, sačekajte.", "Currently scanning" : "Trenutno skeniram", "No favorites" : "Nema omiljenih", - "Files and folders you mark as favorite will show up here" : "Fajlovi i fascikle koje obeležite kao omiljene pojaviće se ovde" + "Files and folders you mark as favorite will show up here" : "Fajlovi i fascikle koje obeležite kao omiljene pojaviće se ovde", + "Text file" : "tekstualni fajl" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files/l10n/sr@latin.json b/apps/files/l10n/sr@latin.json index 7026569e117..98356e441d6 100644 --- a/apps/files/l10n/sr@latin.json +++ b/apps/files/l10n/sr@latin.json @@ -2,13 +2,6 @@ "Storage not available" : "Skladište nije dostupno", "Storage invalid" : "Neispravno skladište", "Unknown error" : "Nepoznata greška", - "Could not move %s - File with this name already exists" : "Ne mogu da premestim %s – fajl sa ovim nazivom već postoji", - "Could not move %s" : "Ne mogu da premestim %s", - "Permission denied" : "Pristup odbijen", - "The target folder has been moved or deleted." : "Odredišna fascikla je premeštena ili obrisana.", - "The name %s is already used in the folder %s. Please choose a different name." : "Naziv %s se već koristi u fascikli %s. Odredite drugi naziv.", - "Error when creating the file" : "Greška pri stvaranju fajla", - "Error when creating the folder" : "Greška pri stvaranju fajla", "Unable to set upload directory." : "Ne mogu da postavim direktorijum za otpremanje.", "Invalid Token" : "Neispravan token", "No file was uploaded. Unknown error" : "Nijedan fajl nije otpremljen. Nepoznata greška", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Nedostaje privremena fascikla", "Failed to write to disk" : "Ne mogu da pišem na disk", "Not enough storage available" : "Nema dovoljno prostora", + "The target folder has been moved or deleted." : "Odredišna fascikla je premeštena ili obrisana.", "Upload failed. Could not find uploaded file" : "Neuspešno otpremanje. Ne mogu da nađem otpremljeni fajl", "Upload failed. Could not get file info." : "Neuspešno otpremanje. Ne mogu da dobijem podatke o fajlu.", "Invalid directory." : "Neispravna fascikla.", @@ -41,14 +35,6 @@ "Select" : "Izaberi", "Pending" : "Na čekanju", "Unable to determine date" : "Ne mogu da odredim datum", - "Error moving file." : "Greška pri premeštanju fajla.", - "Error moving file" : "Greška pri premeštanju fajla", - "Error" : "Greška", - "{new_name} already exists" : "{new_name} već postoji", - "Could not rename file" : "Ne mogu da preimenujem fajl", - "Could not create file" : "Ne mogu da stvorim fajl", - "Could not create folder" : "Ne mogu da stvorim fasciklu", - "Error deleting file." : "Greška pri brisanju fajla.", "No entries in this folder match '{filter}'" : "U ovoj fascikli ništa se ne poklapa sa '{filter}'", "Name" : "Naziv", "Size" : "Veličina", @@ -66,7 +52,6 @@ "_matches '{filter}'_::_match '{filter}'_" : ["se poklapa sa '{filter}'","se poklapaju sa '{filter}'","se poklapa sa '{filter}'"], "Favorited" : "Omiljeno", "Favorite" : "Omiljeni", - "Text file" : "tekstualni fajl", "Folder" : "fascikla", "New folder" : "Nova fascikla", "Upload" : "Otpremi", @@ -85,8 +70,6 @@ "%2$s deleted %1$s" : "%2$s obrisa %1$s", "You restored %1$s" : "Vratili ste %1$s", "%2$s restored %1$s" : "%2$s povrati %1$s", - "%s could not be renamed as it has been deleted" : "%s se ne može preimenovati jer je obrisan", - "%s could not be renamed" : "%s se ne može preimenovati", "Upload (max. %s)" : "Otpremanje (maks. %s)", "File handling" : "Rukovanje fajlovima", "Maximum upload size" : "Najveća veličina otpremanja", @@ -105,6 +88,7 @@ "Files are being scanned, please wait." : "Skeniram fajlove, sačekajte.", "Currently scanning" : "Trenutno skeniram", "No favorites" : "Nema omiljenih", - "Files and folders you mark as favorite will show up here" : "Fajlovi i fascikle koje obeležite kao omiljene pojaviće se ovde" + "Files and folders you mark as favorite will show up here" : "Fajlovi i fascikle koje obeležite kao omiljene pojaviće se ovde", + "Text file" : "tekstualni fajl" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js index 58f6d76c29e..f5e81760b0f 100644 --- a/apps/files/l10n/sv.js +++ b/apps/files/l10n/sv.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Lagring inte tillgänglig", "Storage invalid" : "Lagring ogiltig", "Unknown error" : "Okänt fel", - "Could not move %s - File with this name already exists" : "Kunde inte flytta %s - Det finns redan en fil med detta namn", - "Could not move %s" : "Kan inte flytta %s", - "Permission denied" : "Behörighet nekad.", - "The target folder has been moved or deleted." : "Målmappen har flyttats eller tagits bort.", - "The name %s is already used in the folder %s. Please choose a different name." : "Namnet %s används redan i katalogen %s. Välj ett annat namn.", - "Error when creating the file" : "Fel under skapande utav filen", - "Error when creating the folder" : "Fel under skapande utav en katalog", "Unable to set upload directory." : "Kan inte sätta mapp för uppladdning.", "Invalid Token" : "Ogiltig token", "No file was uploaded. Unknown error" : "Ingen fil uppladdad. Okänt fel", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "En temporär mapp saknas", "Failed to write to disk" : "Misslyckades spara till disk", "Not enough storage available" : "Inte tillräckligt med lagringsutrymme tillgängligt", + "The target folder has been moved or deleted." : "Målmappen har flyttats eller tagits bort.", "Upload failed. Could not find uploaded file" : "Uppladdning misslyckades. Kunde inte hitta den uppladdade filen", "Upload failed. Could not get file info." : "Uppladdning misslyckades. Gick inte att hämta filinformation.", "Invalid directory." : "Felaktig mapp.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Misslyckades avgöra datum", "This operation is forbidden" : "Denna operation är förbjuden", "This directory is unavailable, please check the logs or contact the administrator" : "Denna katalog är inte tillgänglig, kontrollera loggarna eller kontakta administratören", - "Error moving file." : "Fel vid flytt av fil.", - "Error moving file" : "Fel uppstod vid flyttning av fil", - "Error" : "Fel", - "{new_name} already exists" : "{new_name} finns redan", - "Could not rename file" : "Kan ej byta filnamn", - "Could not create file" : "Kunde ej skapa fil", - "Could not create folder" : "Kunde ej skapa katalog", - "Error deleting file." : "Kunde inte ta bort filen.", "No entries in this folder match '{filter}'" : "Inga poster i denna mapp match \"{filter}\"", "Name" : "Namn", "Size" : "Storlek", @@ -73,8 +59,6 @@ OC.L10N.register( "Path" : "sökväg", "Favorited" : "Favoritiserad", "Favorite" : "Favorit", - "Text file" : "Textfil", - "New text file.txt" : "nytextfil.txt", "Folder" : "Mapp", "New folder" : "Ny mapp", "{newname} already exists" : "{newname} existerar redan", @@ -96,8 +80,6 @@ OC.L10N.register( "Changed by %2$s" : "Ändrad av %2$s", "Deleted by %2$s" : "Bortagen av %2$s", "Restored by %2$s" : "Återställd av %2$s", - "%s could not be renamed as it has been deleted" : "%s kan inte döpas om eftersom den har raderats", - "%s could not be renamed" : "%s kunde inte namnändras", "Upload (max. %s)" : "Ladda upp (max. %s)", "File handling" : "Filhantering", "Maximum upload size" : "Maximal storlek att ladda upp", @@ -116,6 +98,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Filer skannas, var god vänta", "Currently scanning" : "sökning pågår", "No favorites" : "Inga favoriter", - "Files and folders you mark as favorite will show up here" : "Filer och mappar du markerat som favoriter kommer visas här" + "Files and folders you mark as favorite will show up here" : "Filer och mappar du markerat som favoriter kommer visas här", + "Text file" : "Textfil", + "New text file.txt" : "nytextfil.txt" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json index 35faa25d1a0..c624c34029c 100644 --- a/apps/files/l10n/sv.json +++ b/apps/files/l10n/sv.json @@ -2,13 +2,6 @@ "Storage not available" : "Lagring inte tillgänglig", "Storage invalid" : "Lagring ogiltig", "Unknown error" : "Okänt fel", - "Could not move %s - File with this name already exists" : "Kunde inte flytta %s - Det finns redan en fil med detta namn", - "Could not move %s" : "Kan inte flytta %s", - "Permission denied" : "Behörighet nekad.", - "The target folder has been moved or deleted." : "Målmappen har flyttats eller tagits bort.", - "The name %s is already used in the folder %s. Please choose a different name." : "Namnet %s används redan i katalogen %s. Välj ett annat namn.", - "Error when creating the file" : "Fel under skapande utav filen", - "Error when creating the folder" : "Fel under skapande utav en katalog", "Unable to set upload directory." : "Kan inte sätta mapp för uppladdning.", "Invalid Token" : "Ogiltig token", "No file was uploaded. Unknown error" : "Ingen fil uppladdad. Okänt fel", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "En temporär mapp saknas", "Failed to write to disk" : "Misslyckades spara till disk", "Not enough storage available" : "Inte tillräckligt med lagringsutrymme tillgängligt", + "The target folder has been moved or deleted." : "Målmappen har flyttats eller tagits bort.", "Upload failed. Could not find uploaded file" : "Uppladdning misslyckades. Kunde inte hitta den uppladdade filen", "Upload failed. Could not get file info." : "Uppladdning misslyckades. Gick inte att hämta filinformation.", "Invalid directory." : "Felaktig mapp.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Misslyckades avgöra datum", "This operation is forbidden" : "Denna operation är förbjuden", "This directory is unavailable, please check the logs or contact the administrator" : "Denna katalog är inte tillgänglig, kontrollera loggarna eller kontakta administratören", - "Error moving file." : "Fel vid flytt av fil.", - "Error moving file" : "Fel uppstod vid flyttning av fil", - "Error" : "Fel", - "{new_name} already exists" : "{new_name} finns redan", - "Could not rename file" : "Kan ej byta filnamn", - "Could not create file" : "Kunde ej skapa fil", - "Could not create folder" : "Kunde ej skapa katalog", - "Error deleting file." : "Kunde inte ta bort filen.", "No entries in this folder match '{filter}'" : "Inga poster i denna mapp match \"{filter}\"", "Name" : "Namn", "Size" : "Storlek", @@ -71,8 +57,6 @@ "Path" : "sökväg", "Favorited" : "Favoritiserad", "Favorite" : "Favorit", - "Text file" : "Textfil", - "New text file.txt" : "nytextfil.txt", "Folder" : "Mapp", "New folder" : "Ny mapp", "{newname} already exists" : "{newname} existerar redan", @@ -94,8 +78,6 @@ "Changed by %2$s" : "Ändrad av %2$s", "Deleted by %2$s" : "Bortagen av %2$s", "Restored by %2$s" : "Återställd av %2$s", - "%s could not be renamed as it has been deleted" : "%s kan inte döpas om eftersom den har raderats", - "%s could not be renamed" : "%s kunde inte namnändras", "Upload (max. %s)" : "Ladda upp (max. %s)", "File handling" : "Filhantering", "Maximum upload size" : "Maximal storlek att ladda upp", @@ -114,6 +96,8 @@ "Files are being scanned, please wait." : "Filer skannas, var god vänta", "Currently scanning" : "sökning pågår", "No favorites" : "Inga favoriter", - "Files and folders you mark as favorite will show up here" : "Filer och mappar du markerat som favoriter kommer visas här" + "Files and folders you mark as favorite will show up here" : "Filer och mappar du markerat som favoriter kommer visas här", + "Text file" : "Textfil", + "New text file.txt" : "nytextfil.txt" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/ta_LK.js b/apps/files/l10n/ta_LK.js index 3b287a94725..39a3eda73fe 100644 --- a/apps/files/l10n/ta_LK.js +++ b/apps/files/l10n/ta_LK.js @@ -21,14 +21,11 @@ OC.L10N.register( "Details" : "விவரங்கள்", "Select" : "தெரிக", "Pending" : "நிலுவையிலுள்ள", - "Error" : "வழு", - "{new_name} already exists" : "{new_name} ஏற்கனவே உள்ளது", "Name" : "பெயர்", "Size" : "அளவு", "Modified" : "மாற்றப்பட்டது", "New" : "புதிய", "Favorite" : "விருப்பமான", - "Text file" : "கோப்பு உரை", "Folder" : "கோப்புறை", "Upload" : "பதிவேற்றுக", "File handling" : "கோப்பு கையாளுதல்", @@ -39,6 +36,7 @@ OC.L10N.register( "Cancel upload" : "பதிவேற்றலை இரத்து செய்க", "Upload too large" : "பதிவேற்றல் மிகப்பெரியது", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "நீங்கள் பதிவேற்ற முயற்சிக்கும் கோப்புகளானது இந்த சேவையகத்தில் கோப்பு பதிவேற்றக்கூடிய ஆகக்கூடிய அளவிலும் கூடியது.", - "Files are being scanned, please wait." : "கோப்புகள் வருடப்படுகின்றன, தயவுசெய்து காத்திருங்கள்." + "Files are being scanned, please wait." : "கோப்புகள் வருடப்படுகின்றன, தயவுசெய்து காத்திருங்கள்.", + "Text file" : "கோப்பு உரை" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/ta_LK.json b/apps/files/l10n/ta_LK.json index 8da783d48d3..009ef6c7a8e 100644 --- a/apps/files/l10n/ta_LK.json +++ b/apps/files/l10n/ta_LK.json @@ -19,14 +19,11 @@ "Details" : "விவரங்கள்", "Select" : "தெரிக", "Pending" : "நிலுவையிலுள்ள", - "Error" : "வழு", - "{new_name} already exists" : "{new_name} ஏற்கனவே உள்ளது", "Name" : "பெயர்", "Size" : "அளவு", "Modified" : "மாற்றப்பட்டது", "New" : "புதிய", "Favorite" : "விருப்பமான", - "Text file" : "கோப்பு உரை", "Folder" : "கோப்புறை", "Upload" : "பதிவேற்றுக", "File handling" : "கோப்பு கையாளுதல்", @@ -37,6 +34,7 @@ "Cancel upload" : "பதிவேற்றலை இரத்து செய்க", "Upload too large" : "பதிவேற்றல் மிகப்பெரியது", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "நீங்கள் பதிவேற்ற முயற்சிக்கும் கோப்புகளானது இந்த சேவையகத்தில் கோப்பு பதிவேற்றக்கூடிய ஆகக்கூடிய அளவிலும் கூடியது.", - "Files are being scanned, please wait." : "கோப்புகள் வருடப்படுகின்றன, தயவுசெய்து காத்திருங்கள்." + "Files are being scanned, please wait." : "கோப்புகள் வருடப்படுகின்றன, தயவுசெய்து காத்திருங்கள்.", + "Text file" : "கோப்பு உரை" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/te.js b/apps/files/l10n/te.js index 9badfac3532..a41177c95f0 100644 --- a/apps/files/l10n/te.js +++ b/apps/files/l10n/te.js @@ -3,7 +3,6 @@ OC.L10N.register( { "Close" : "మూసివేయి", "Delete" : "తొలగించు", - "Error" : "పొరపాటు", "Name" : "పేరు", "Size" : "పరిమాణం", "Folder" : "సంచయం", diff --git a/apps/files/l10n/te.json b/apps/files/l10n/te.json index 21d09484cd8..6fa2afe050b 100644 --- a/apps/files/l10n/te.json +++ b/apps/files/l10n/te.json @@ -1,7 +1,6 @@ { "translations": { "Close" : "మూసివేయి", "Delete" : "తొలగించు", - "Error" : "పొరపాటు", "Name" : "పేరు", "Size" : "పరిమాణం", "Folder" : "సంచయం", diff --git a/apps/files/l10n/th_TH.js b/apps/files/l10n/th_TH.js index 79747b68ee9..5812df14755 100644 --- a/apps/files/l10n/th_TH.js +++ b/apps/files/l10n/th_TH.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "ไม่สามารถใช้พื้นที่จัดเก็บข้อมูลได้", "Storage invalid" : "การจัดเก็บข้อมูลไม่ถูกต้อง", "Unknown error" : "ข้อผิดพลาดที่ไม่ทราบสาเหตุ", - "Could not move %s - File with this name already exists" : "ไม่สามารถย้าย %s ได้ - ไฟล์ที่ใช้ชื่อนี้มีอยู่แล้ว", - "Could not move %s" : "ไม่สามารถย้าย %s ได้", - "Permission denied" : "ไม่อนุญาต", - "The target folder has been moved or deleted." : "โฟลเดอร์ปลายทางถูกย้ายหรือลบ", - "The name %s is already used in the folder %s. Please choose a different name." : "ชื่อ %s ถูกใช้ไปแล้วในโฟลเดอร์ %s โปรดเลือกชื่ออื่นที่แตกต่างกัน", - "Error when creating the file" : "เกิดข้อผิดพลาดเมื่อมีการสร้างไฟล์", - "Error when creating the folder" : "เกิดข้อผิดพลาดเมื่อมีการสร้างโฟลเดอร์", "Unable to set upload directory." : "ไม่สามารถตั้งค่าอัพโหลดไดเรกทอรี", "Invalid Token" : "โทเค็นไม่ถูกต้อง", "No file was uploaded. Unknown error" : "ยังไม่มีไฟล์ใดที่ถูกอัพโหลด เกิดข้อผิดพลาดที่ไม่ทราบสาเหตุ", @@ -22,6 +15,7 @@ OC.L10N.register( "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." : "ไดเร็กทอรี่ไม่ถูกต้อง", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "ไม่สามารถกำหนดวัน", "This operation is forbidden" : "การดำเนินการนี้ถูกห้าม", "This directory is unavailable, please check the logs or contact the administrator" : "ไม่สามารถใช้งานไดเรกทอรีนี้โปรดตรวจสอบบันทึกหรือติดต่อผู้ดูแลระบบ", - "Error moving file." : "ข้อผิดพลาดในการเคลื่อนย้ายไฟล์", - "Error moving file" : "ข้อผิดพลาดในการเคลื่อนย้ายไฟล์", - "Error" : "ข้อผิดพลาด", - "{new_name} already exists" : "{new_name} มีอยู่แล้วในระบบ", - "Could not rename file" : "ไม่สามารถเปลี่ยนชื่อไฟล์", - "Could not create file" : "ไม่สามารถสร้างไฟล์", - "Could not create folder" : "ไม่สามารถสร้างโฟลเดอร์", - "Error deleting file." : "เกิดข้อผิดพลาดในการลบไฟล์", "No entries in this folder match '{filter}'" : "ไม่มีรายการในโฟลเดอร์นี้ที่ตรงกับ '{filter}'", "Name" : "ชื่อ", "Size" : "ขนาด", @@ -97,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "เปลี่ยนแปลงโดย %2$s", "Deleted by %2$s" : "ลบโดย %2$s", "Restored by %2$s" : "กู้คืนโดย %2$s", - "%s could not be renamed as it has been deleted" : "%s ไม่สามารถเปลี่ยนชื่อเนื่องจากถูกลบไปแล้ว", - "%s could not be renamed" : "%s ไม่สามารถเปลี่ยนชื่อ", "Upload (max. %s)" : "อัพโหลด (สูงสุด %s)", "File handling" : "การจัดการไฟล์", "Maximum upload size" : "ขนาดไฟล์สูงสุดที่อัพโหลดได้", diff --git a/apps/files/l10n/th_TH.json b/apps/files/l10n/th_TH.json index 327e2d9eb82..93f6c5c8d2d 100644 --- a/apps/files/l10n/th_TH.json +++ b/apps/files/l10n/th_TH.json @@ -2,13 +2,6 @@ "Storage not available" : "ไม่สามารถใช้พื้นที่จัดเก็บข้อมูลได้", "Storage invalid" : "การจัดเก็บข้อมูลไม่ถูกต้อง", "Unknown error" : "ข้อผิดพลาดที่ไม่ทราบสาเหตุ", - "Could not move %s - File with this name already exists" : "ไม่สามารถย้าย %s ได้ - ไฟล์ที่ใช้ชื่อนี้มีอยู่แล้ว", - "Could not move %s" : "ไม่สามารถย้าย %s ได้", - "Permission denied" : "ไม่อนุญาต", - "The target folder has been moved or deleted." : "โฟลเดอร์ปลายทางถูกย้ายหรือลบ", - "The name %s is already used in the folder %s. Please choose a different name." : "ชื่อ %s ถูกใช้ไปแล้วในโฟลเดอร์ %s โปรดเลือกชื่ออื่นที่แตกต่างกัน", - "Error when creating the file" : "เกิดข้อผิดพลาดเมื่อมีการสร้างไฟล์", - "Error when creating the folder" : "เกิดข้อผิดพลาดเมื่อมีการสร้างโฟลเดอร์", "Unable to set upload directory." : "ไม่สามารถตั้งค่าอัพโหลดไดเรกทอรี", "Invalid Token" : "โทเค็นไม่ถูกต้อง", "No file was uploaded. Unknown error" : "ยังไม่มีไฟล์ใดที่ถูกอัพโหลด เกิดข้อผิดพลาดที่ไม่ทราบสาเหตุ", @@ -20,6 +13,7 @@ "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." : "ไดเร็กทอรี่ไม่ถูกต้อง", @@ -44,14 +38,6 @@ "Unable to determine date" : "ไม่สามารถกำหนดวัน", "This operation is forbidden" : "การดำเนินการนี้ถูกห้าม", "This directory is unavailable, please check the logs or contact the administrator" : "ไม่สามารถใช้งานไดเรกทอรีนี้โปรดตรวจสอบบันทึกหรือติดต่อผู้ดูแลระบบ", - "Error moving file." : "ข้อผิดพลาดในการเคลื่อนย้ายไฟล์", - "Error moving file" : "ข้อผิดพลาดในการเคลื่อนย้ายไฟล์", - "Error" : "ข้อผิดพลาด", - "{new_name} already exists" : "{new_name} มีอยู่แล้วในระบบ", - "Could not rename file" : "ไม่สามารถเปลี่ยนชื่อไฟล์", - "Could not create file" : "ไม่สามารถสร้างไฟล์", - "Could not create folder" : "ไม่สามารถสร้างโฟลเดอร์", - "Error deleting file." : "เกิดข้อผิดพลาดในการลบไฟล์", "No entries in this folder match '{filter}'" : "ไม่มีรายการในโฟลเดอร์นี้ที่ตรงกับ '{filter}'", "Name" : "ชื่อ", "Size" : "ขนาด", @@ -95,8 +81,6 @@ "Changed by %2$s" : "เปลี่ยนแปลงโดย %2$s", "Deleted by %2$s" : "ลบโดย %2$s", "Restored by %2$s" : "กู้คืนโดย %2$s", - "%s could not be renamed as it has been deleted" : "%s ไม่สามารถเปลี่ยนชื่อเนื่องจากถูกลบไปแล้ว", - "%s could not be renamed" : "%s ไม่สามารถเปลี่ยนชื่อ", "Upload (max. %s)" : "อัพโหลด (สูงสุด %s)", "File handling" : "การจัดการไฟล์", "Maximum upload size" : "ขนาดไฟล์สูงสุดที่อัพโหลดได้", diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js index b2c4fd56df9..d0c68861518 100644 --- a/apps/files/l10n/tr.js +++ b/apps/files/l10n/tr.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Depolama mevcut değil", "Storage invalid" : "Depolama geçersiz", "Unknown error" : "Bilinmeyen hata", - "Could not move %s - File with this name already exists" : "%s taşınamadı. Bu isimde dosya zaten mevcut", - "Could not move %s" : "%s taşınamadı", - "Permission denied" : "Erişim reddedildi", - "The target folder has been moved or deleted." : "Hedef klasör taşındı veya silindi.", - "The name %s is already used in the folder %s. Please choose a different name." : "%s ismi zaten %s klasöründe kullanılıyor. Lütfen farklı bir isim seçin.", - "Error when creating the file" : "Dosya oluşturulurken hata", - "Error when creating the folder" : "Klasör oluşturulurken hata", "Unable to set upload directory." : "Yükleme dizini ayarlanamadı.", "Invalid Token" : "Geçersiz Belirteç", "No file was uploaded. Unknown error" : "Dosya yüklenmedi. Bilinmeyen hata", @@ -22,6 +15,7 @@ OC.L10N.register( "Missing a temporary folder" : "Geçici bir dizin eksik", "Failed to write to disk" : "Diske yazılamadı", "Not enough storage available" : "Yeterli disk alanı yok", + "The target folder has been moved or deleted." : "Hedef klasör taşındı veya silindi.", "Upload failed. Could not find uploaded file" : "Yükleme başarısız. Yüklenen dosya bulunamadı", "Upload failed. Could not get file info." : "Yükleme başarısız. Dosya bilgisi alınamadı.", "Invalid directory." : "Geçersiz dizin.", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "Tarih tespit edilemedi", "This operation is forbidden" : "Bu işlem yasak", "This directory is unavailable, please check the logs or contact the administrator" : "Bu dizine yazılamıyor, lütfen günlüğü kontrol edin veya yönetici ile iletişime geçin", - "Error moving file." : "Dosya taşıma hatası.", - "Error moving file" : "Dosya taşıma hatası", - "Error" : "Hata", - "{new_name} already exists" : "{new_name} zaten mevcut", - "Could not rename file" : "Dosya adlandırılamadı", - "Could not create file" : "Dosya oluşturulamadı", - "Could not create folder" : "Klasör oluşturulamadı", - "Error deleting file." : "Dosya silinirken hata.", "No entries in this folder match '{filter}'" : "Bu klasörde hiçbir girdi '{filter}' ile eşleşmiyor", "Name" : "İsim", "Size" : "Boyut", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n bayt","%n bayt"], "Favorited" : "Sık kullanılanlara eklendi", "Favorite" : "Sık kullanılan", - "Text file" : "Metin dosyası", - "New text file.txt" : "Yeni metin dosyası.txt", "Folder" : "Klasör", "New folder" : "Yeni klasör", "{newname} already exists" : "{newname} zaten mevcut", @@ -99,13 +83,13 @@ OC.L10N.register( "Changed by %2$s" : "%2$s tarafından değiştirildi", "Deleted by %2$s" : "%2$s tarafından silindi", "Restored by %2$s" : "%2$s tarafından geri yüklendi", - "%s could not be renamed as it has been deleted" : "%s, silindiği için adlandırılamadı", - "%s could not be renamed" : "%s yeniden adlandırılamadı", "Upload (max. %s)" : "Yükle (azami: %s)", "File handling" : "Dosya işlemleri", "Maximum upload size" : "Azami yükleme boyutu", "max. possible: " : "mümkün olan en fazla: ", "Save" : "Kaydet", + "With PHP-FPM it might take 5 minutes for changes to be applied." : "PHP-FPM ile değişikliklerin uygulanması 5 dakika sürebilir.", + "Missing permissions to edit from here." : "Buradan düzenleme için eksik yetki.", "Settings" : "Ayarlar", "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "<a href=\"%s\" target=\"_blank\">Dosyalarınıza WebDAV aracılığıyla erişmek için</a> bu adresi kullanın", @@ -119,6 +103,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "Dosyalar taranıyor, lütfen bekleyin.", "Currently scanning" : "Şu anda taranan", "No favorites" : "Sık kullanılan öge yok.", - "Files and folders you mark as favorite will show up here" : "Sık kullanılan olarak işaretlediğiniz dosya ve klasörler burada gösterilecek" + "Files and folders you mark as favorite will show up here" : "Sık kullanılan olarak işaretlediğiniz dosya ve klasörler burada gösterilecek", + "Text file" : "Metin dosyası", + "New text file.txt" : "Yeni metin dosyası.txt" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json index fcb87d74fa1..7bc756530dc 100644 --- a/apps/files/l10n/tr.json +++ b/apps/files/l10n/tr.json @@ -2,13 +2,6 @@ "Storage not available" : "Depolama mevcut değil", "Storage invalid" : "Depolama geçersiz", "Unknown error" : "Bilinmeyen hata", - "Could not move %s - File with this name already exists" : "%s taşınamadı. Bu isimde dosya zaten mevcut", - "Could not move %s" : "%s taşınamadı", - "Permission denied" : "Erişim reddedildi", - "The target folder has been moved or deleted." : "Hedef klasör taşındı veya silindi.", - "The name %s is already used in the folder %s. Please choose a different name." : "%s ismi zaten %s klasöründe kullanılıyor. Lütfen farklı bir isim seçin.", - "Error when creating the file" : "Dosya oluşturulurken hata", - "Error when creating the folder" : "Klasör oluşturulurken hata", "Unable to set upload directory." : "Yükleme dizini ayarlanamadı.", "Invalid Token" : "Geçersiz Belirteç", "No file was uploaded. Unknown error" : "Dosya yüklenmedi. Bilinmeyen hata", @@ -20,6 +13,7 @@ "Missing a temporary folder" : "Geçici bir dizin eksik", "Failed to write to disk" : "Diske yazılamadı", "Not enough storage available" : "Yeterli disk alanı yok", + "The target folder has been moved or deleted." : "Hedef klasör taşındı veya silindi.", "Upload failed. Could not find uploaded file" : "Yükleme başarısız. Yüklenen dosya bulunamadı", "Upload failed. Could not get file info." : "Yükleme başarısız. Dosya bilgisi alınamadı.", "Invalid directory." : "Geçersiz dizin.", @@ -44,14 +38,6 @@ "Unable to determine date" : "Tarih tespit edilemedi", "This operation is forbidden" : "Bu işlem yasak", "This directory is unavailable, please check the logs or contact the administrator" : "Bu dizine yazılamıyor, lütfen günlüğü kontrol edin veya yönetici ile iletişime geçin", - "Error moving file." : "Dosya taşıma hatası.", - "Error moving file" : "Dosya taşıma hatası", - "Error" : "Hata", - "{new_name} already exists" : "{new_name} zaten mevcut", - "Could not rename file" : "Dosya adlandırılamadı", - "Could not create file" : "Dosya oluşturulamadı", - "Could not create folder" : "Klasör oluşturulamadı", - "Error deleting file." : "Dosya silinirken hata.", "No entries in this folder match '{filter}'" : "Bu klasörde hiçbir girdi '{filter}' ile eşleşmiyor", "Name" : "İsim", "Size" : "Boyut", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n bayt","%n bayt"], "Favorited" : "Sık kullanılanlara eklendi", "Favorite" : "Sık kullanılan", - "Text file" : "Metin dosyası", - "New text file.txt" : "Yeni metin dosyası.txt", "Folder" : "Klasör", "New folder" : "Yeni klasör", "{newname} already exists" : "{newname} zaten mevcut", @@ -97,13 +81,13 @@ "Changed by %2$s" : "%2$s tarafından değiştirildi", "Deleted by %2$s" : "%2$s tarafından silindi", "Restored by %2$s" : "%2$s tarafından geri yüklendi", - "%s could not be renamed as it has been deleted" : "%s, silindiği için adlandırılamadı", - "%s could not be renamed" : "%s yeniden adlandırılamadı", "Upload (max. %s)" : "Yükle (azami: %s)", "File handling" : "Dosya işlemleri", "Maximum upload size" : "Azami yükleme boyutu", "max. possible: " : "mümkün olan en fazla: ", "Save" : "Kaydet", + "With PHP-FPM it might take 5 minutes for changes to be applied." : "PHP-FPM ile değişikliklerin uygulanması 5 dakika sürebilir.", + "Missing permissions to edit from here." : "Buradan düzenleme için eksik yetki.", "Settings" : "Ayarlar", "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "<a href=\"%s\" target=\"_blank\">Dosyalarınıza WebDAV aracılığıyla erişmek için</a> bu adresi kullanın", @@ -117,6 +101,8 @@ "Files are being scanned, please wait." : "Dosyalar taranıyor, lütfen bekleyin.", "Currently scanning" : "Şu anda taranan", "No favorites" : "Sık kullanılan öge yok.", - "Files and folders you mark as favorite will show up here" : "Sık kullanılan olarak işaretlediğiniz dosya ve klasörler burada gösterilecek" + "Files and folders you mark as favorite will show up here" : "Sık kullanılan olarak işaretlediğiniz dosya ve klasörler burada gösterilecek", + "Text file" : "Metin dosyası", + "New text file.txt" : "Yeni metin dosyası.txt" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/ug.js b/apps/files/l10n/ug.js index 5e179c6e0d1..55985f6a655 100644 --- a/apps/files/l10n/ug.js +++ b/apps/files/l10n/ug.js @@ -2,7 +2,6 @@ OC.L10N.register( "files", { "Unknown error" : "يوچۇن خاتالىق", - "Could not move %s" : "%s يۆتكىيەلمەيدۇ", "No file was uploaded. Unknown error" : "ھېچقانداق ھۆججەت يۈكلەنمىدى. يوچۇن خاتالىق", "No file was uploaded" : "ھېچقانداق ھۆججەت يۈكلەنمىدى", "Missing a temporary folder" : "ۋاقىتلىق قىسقۇچ كەم.", @@ -19,14 +18,11 @@ OC.L10N.register( "Rename" : "ئات ئۆزگەرت", "Delete" : "ئۆچۈر", "Pending" : "كۈتۈۋاتىدۇ", - "Error" : "خاتالىق", - "{new_name} already exists" : "{new_name} مەۋجۇت", "Name" : "ئاتى", "Size" : "چوڭلۇقى", "Modified" : "ئۆزگەرتكەن", "New" : "يېڭى", "Favorite" : "يىغقۇچ", - "Text file" : "تېكىست ھۆججەت", "Folder" : "قىسقۇچ", "New folder" : "يېڭى قىسقۇچ", "Upload" : "يۈكلە", @@ -34,6 +30,7 @@ OC.L10N.register( "Settings" : "تەڭشەكلەر", "WebDAV" : "WebDAV", "Cancel upload" : "يۈكلەشتىن ۋاز كەچ", - "Upload too large" : "يۈكلەندىغىنى بەك چوڭ" + "Upload too large" : "يۈكلەندىغىنى بەك چوڭ", + "Text file" : "تېكىست ھۆججەت" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/ug.json b/apps/files/l10n/ug.json index 4a4b06b559e..716bf62afb9 100644 --- a/apps/files/l10n/ug.json +++ b/apps/files/l10n/ug.json @@ -1,6 +1,5 @@ { "translations": { "Unknown error" : "يوچۇن خاتالىق", - "Could not move %s" : "%s يۆتكىيەلمەيدۇ", "No file was uploaded. Unknown error" : "ھېچقانداق ھۆججەت يۈكلەنمىدى. يوچۇن خاتالىق", "No file was uploaded" : "ھېچقانداق ھۆججەت يۈكلەنمىدى", "Missing a temporary folder" : "ۋاقىتلىق قىسقۇچ كەم.", @@ -17,14 +16,11 @@ "Rename" : "ئات ئۆزگەرت", "Delete" : "ئۆچۈر", "Pending" : "كۈتۈۋاتىدۇ", - "Error" : "خاتالىق", - "{new_name} already exists" : "{new_name} مەۋجۇت", "Name" : "ئاتى", "Size" : "چوڭلۇقى", "Modified" : "ئۆزگەرتكەن", "New" : "يېڭى", "Favorite" : "يىغقۇچ", - "Text file" : "تېكىست ھۆججەت", "Folder" : "قىسقۇچ", "New folder" : "يېڭى قىسقۇچ", "Upload" : "يۈكلە", @@ -32,6 +28,7 @@ "Settings" : "تەڭشەكلەر", "WebDAV" : "WebDAV", "Cancel upload" : "يۈكلەشتىن ۋاز كەچ", - "Upload too large" : "يۈكلەندىغىنى بەك چوڭ" + "Upload too large" : "يۈكلەندىغىنى بەك چوڭ", + "Text file" : "تېكىست ھۆججەت" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js index fc071f58279..8d43949d8ff 100644 --- a/apps/files/l10n/uk.js +++ b/apps/files/l10n/uk.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "Сховище не доступне", "Storage invalid" : "Неправильне сховище", "Unknown error" : "Невідома помилка", - "Could not move %s - File with this name already exists" : "Не вдалося перемістити %s - файл з таким ім'ям вже існує", - "Could not move %s" : "Не вдалося перемістити %s", - "Permission denied" : "Доступ заборонено", - "The target folder has been moved or deleted." : "Теку призначення було переміщено або видалено.", - "The name %s is already used in the folder %s. Please choose a different name." : "Файл з ім'ям %s вже є у теці %s. Оберіть інше ім'я.", - "Error when creating the file" : "Помилка створення файлу", - "Error when creating the folder" : "Помилка створення теки", "Unable to set upload directory." : "Не вдалося встановити каталог вивантаження.", "Invalid Token" : "Неприпустимий маркер", "No file was uploaded. Unknown error" : "Файл не був вивантажений. Невідома помилка", @@ -22,6 +15,7 @@ OC.L10N.register( "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." : "Невірний каталог.", @@ -45,14 +39,6 @@ OC.L10N.register( "Pending" : "Очікування", "Unable to determine date" : "Неможливо визначити дату", "This operation is forbidden" : "Ця операція заборонена", - "Error moving file." : "Помилка переміщення файлу.", - "Error moving file" : "Помилка переміщення файлу", - "Error" : "Помилка", - "{new_name} already exists" : "{new_name} вже існує", - "Could not rename file" : "Неможливо перейменувати файл", - "Could not create file" : "Не вдалося створити файл", - "Could not create folder" : "Не вдалося створити теку", - "Error deleting file." : "Помилка видалення файлу.", "No entries in this folder match '{filter}'" : "Нічого не знайдено в цій теці '{filter}'", "Name" : "Ім'я", "Size" : "Розмір", @@ -70,7 +56,6 @@ OC.L10N.register( "_matches '{filter}'_::_match '{filter}'_" : ["знайдено '{filter}'","знайдено '{filter}'","знайдено '{filter}'"], "Favorited" : "Улюблений", "Favorite" : "Улюблений", - "Text file" : "Текстовий файл", "Folder" : "Тека", "New folder" : "Нова тека", "Upload" : "Вивантажити", @@ -89,8 +74,6 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s видалено %1$s", "You restored %1$s" : "Вами відновлено %1$s", "%2$s restored %1$s" : "%2$s відновлено %1$s", - "%s could not be renamed as it has been deleted" : "%s не можна перейменувати, оскільки його видалено", - "%s could not be renamed" : "%s не можна перейменувати", "Upload (max. %s)" : "Вивантаження (макс. %s)", "File handling" : "Робота з файлами", "Maximum upload size" : "Максимальний розмір вивантажень", @@ -109,6 +92,7 @@ OC.L10N.register( "Files are being scanned, please wait." : "Файли перевіряються, зачекайте, будь-ласка.", "Currently scanning" : "Триває перевірка", "No favorites" : "Немає улюблених", - "Files and folders you mark as favorite will show up here" : "Файли і теки, які ви позначили як улюблені, з’являться тут" + "Files and folders you mark as favorite will show up here" : "Файли і теки, які ви позначили як улюблені, з’являться тут", + "Text file" : "Текстовий файл" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json index 651b65df99c..d7381e0cfa7 100644 --- a/apps/files/l10n/uk.json +++ b/apps/files/l10n/uk.json @@ -2,13 +2,6 @@ "Storage not available" : "Сховище не доступне", "Storage invalid" : "Неправильне сховище", "Unknown error" : "Невідома помилка", - "Could not move %s - File with this name already exists" : "Не вдалося перемістити %s - файл з таким ім'ям вже існує", - "Could not move %s" : "Не вдалося перемістити %s", - "Permission denied" : "Доступ заборонено", - "The target folder has been moved or deleted." : "Теку призначення було переміщено або видалено.", - "The name %s is already used in the folder %s. Please choose a different name." : "Файл з ім'ям %s вже є у теці %s. Оберіть інше ім'я.", - "Error when creating the file" : "Помилка створення файлу", - "Error when creating the folder" : "Помилка створення теки", "Unable to set upload directory." : "Не вдалося встановити каталог вивантаження.", "Invalid Token" : "Неприпустимий маркер", "No file was uploaded. Unknown error" : "Файл не був вивантажений. Невідома помилка", @@ -20,6 +13,7 @@ "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." : "Невірний каталог.", @@ -43,14 +37,6 @@ "Pending" : "Очікування", "Unable to determine date" : "Неможливо визначити дату", "This operation is forbidden" : "Ця операція заборонена", - "Error moving file." : "Помилка переміщення файлу.", - "Error moving file" : "Помилка переміщення файлу", - "Error" : "Помилка", - "{new_name} already exists" : "{new_name} вже існує", - "Could not rename file" : "Неможливо перейменувати файл", - "Could not create file" : "Не вдалося створити файл", - "Could not create folder" : "Не вдалося створити теку", - "Error deleting file." : "Помилка видалення файлу.", "No entries in this folder match '{filter}'" : "Нічого не знайдено в цій теці '{filter}'", "Name" : "Ім'я", "Size" : "Розмір", @@ -68,7 +54,6 @@ "_matches '{filter}'_::_match '{filter}'_" : ["знайдено '{filter}'","знайдено '{filter}'","знайдено '{filter}'"], "Favorited" : "Улюблений", "Favorite" : "Улюблений", - "Text file" : "Текстовий файл", "Folder" : "Тека", "New folder" : "Нова тека", "Upload" : "Вивантажити", @@ -87,8 +72,6 @@ "%2$s deleted %1$s" : "%2$s видалено %1$s", "You restored %1$s" : "Вами відновлено %1$s", "%2$s restored %1$s" : "%2$s відновлено %1$s", - "%s could not be renamed as it has been deleted" : "%s не можна перейменувати, оскільки його видалено", - "%s could not be renamed" : "%s не можна перейменувати", "Upload (max. %s)" : "Вивантаження (макс. %s)", "File handling" : "Робота з файлами", "Maximum upload size" : "Максимальний розмір вивантажень", @@ -107,6 +90,7 @@ "Files are being scanned, please wait." : "Файли перевіряються, зачекайте, будь-ласка.", "Currently scanning" : "Триває перевірка", "No favorites" : "Немає улюблених", - "Files and folders you mark as favorite will show up here" : "Файли і теки, які ви позначили як улюблені, з’являться тут" + "Files and folders you mark as favorite will show up here" : "Файли і теки, які ви позначили як улюблені, з’являться тут", + "Text file" : "Текстовий файл" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/files/l10n/ur_PK.js b/apps/files/l10n/ur_PK.js index 2265e52d771..bac2c3b614b 100644 --- a/apps/files/l10n/ur_PK.js +++ b/apps/files/l10n/ur_PK.js @@ -5,7 +5,6 @@ OC.L10N.register( "Close" : "بند ", "Download" : "ڈاؤن لوڈ،", "Delete" : "حذف کریں", - "Error" : "ایرر", "Name" : "اسم", "Save" : "حفظ", "Settings" : "ترتیبات" diff --git a/apps/files/l10n/ur_PK.json b/apps/files/l10n/ur_PK.json index e8eb736811c..be36293b913 100644 --- a/apps/files/l10n/ur_PK.json +++ b/apps/files/l10n/ur_PK.json @@ -3,7 +3,6 @@ "Close" : "بند ", "Download" : "ڈاؤن لوڈ،", "Delete" : "حذف کریں", - "Error" : "ایرر", "Name" : "اسم", "Save" : "حفظ", "Settings" : "ترتیبات" diff --git a/apps/files/l10n/vi.js b/apps/files/l10n/vi.js index e51ae0b46f3..4af893ab66a 100644 --- a/apps/files/l10n/vi.js +++ b/apps/files/l10n/vi.js @@ -4,11 +4,6 @@ OC.L10N.register( "Storage not available" : "Lưu trữ không có sẵn", "Storage invalid" : "Lưu trữ không hợp lệ", "Unknown error" : "Lỗi chưa biết", - "Could not move %s - File with this name already exists" : "Không thể di chuyển %s - Đã có tên tập tin này trên hệ thống", - "Could not move %s" : "Không thể di chuyển %s", - "The name %s is already used in the folder %s. Please choose a different name." : "Tên %s đã được sử dụng trong thư mục %s. Hãy chọn tên khác.", - "Error when creating the file" : "Lỗi khi tạo file", - "Error when creating the folder" : "Lỗi khi tạo thư mục", "Unable to set upload directory." : "Không thể thiết lập thư mục tải lên.", "Invalid Token" : "Xác thực không hợp lệ", "No file was uploaded. Unknown error" : "Không có tập tin nào được tải lên. Lỗi không xác định", @@ -38,13 +33,6 @@ OC.L10N.register( "Details" : "Chi tiết", "Select" : "Chọn", "Pending" : "Đang chờ", - "Error moving file" : "Lỗi di chuyển tập tin", - "Error" : "Lỗi", - "{new_name} already exists" : "{new_name} đã tồn tại", - "Could not rename file" : "Không thể đổi tên file", - "Could not create file" : "Không thể tạo file", - "Could not create folder" : "Không thể tạo thư mục", - "Error deleting file." : "Lỗi xóa file,", "Name" : "Tên", "Size" : "Kích cỡ", "Modified" : "Thay đổi", @@ -58,11 +46,9 @@ OC.L10N.register( "Your storage is full, files can not be updated or synced anymore!" : "Your storage is full, files can not be updated or synced anymore!", "Your storage is almost full ({usedSpacePercent}%)" : "Your storage is almost full ({usedSpacePercent}%)", "Favorite" : "Ưu thích", - "Text file" : "Tập tin văn bản", "Folder" : "Thư mục", "New folder" : "Tạo thư mục", "Upload" : "Tải lên", - "%s could not be renamed" : "%s không thể đổi tên", "File handling" : "Xử lý tập tin", "Maximum upload size" : "Kích thước tối đa ", "max. possible: " : "tối đa cho phép:", @@ -74,6 +60,7 @@ OC.L10N.register( "Select all" : "Chọn tất cả", "Upload too large" : "Tập tin tải lên quá lớn", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Các tập tin bạn đang tải lên vượt quá kích thước tối đa cho phép trên máy chủ .", - "Files are being scanned, please wait." : "Tập tin đang được quét ,vui lòng chờ." + "Files are being scanned, please wait." : "Tập tin đang được quét ,vui lòng chờ.", + "Text file" : "Tập tin văn bản" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/vi.json b/apps/files/l10n/vi.json index bd6250322de..ebffb827525 100644 --- a/apps/files/l10n/vi.json +++ b/apps/files/l10n/vi.json @@ -2,11 +2,6 @@ "Storage not available" : "Lưu trữ không có sẵn", "Storage invalid" : "Lưu trữ không hợp lệ", "Unknown error" : "Lỗi chưa biết", - "Could not move %s - File with this name already exists" : "Không thể di chuyển %s - Đã có tên tập tin này trên hệ thống", - "Could not move %s" : "Không thể di chuyển %s", - "The name %s is already used in the folder %s. Please choose a different name." : "Tên %s đã được sử dụng trong thư mục %s. Hãy chọn tên khác.", - "Error when creating the file" : "Lỗi khi tạo file", - "Error when creating the folder" : "Lỗi khi tạo thư mục", "Unable to set upload directory." : "Không thể thiết lập thư mục tải lên.", "Invalid Token" : "Xác thực không hợp lệ", "No file was uploaded. Unknown error" : "Không có tập tin nào được tải lên. Lỗi không xác định", @@ -36,13 +31,6 @@ "Details" : "Chi tiết", "Select" : "Chọn", "Pending" : "Đang chờ", - "Error moving file" : "Lỗi di chuyển tập tin", - "Error" : "Lỗi", - "{new_name} already exists" : "{new_name} đã tồn tại", - "Could not rename file" : "Không thể đổi tên file", - "Could not create file" : "Không thể tạo file", - "Could not create folder" : "Không thể tạo thư mục", - "Error deleting file." : "Lỗi xóa file,", "Name" : "Tên", "Size" : "Kích cỡ", "Modified" : "Thay đổi", @@ -56,11 +44,9 @@ "Your storage is full, files can not be updated or synced anymore!" : "Your storage is full, files can not be updated or synced anymore!", "Your storage is almost full ({usedSpacePercent}%)" : "Your storage is almost full ({usedSpacePercent}%)", "Favorite" : "Ưu thích", - "Text file" : "Tập tin văn bản", "Folder" : "Thư mục", "New folder" : "Tạo thư mục", "Upload" : "Tải lên", - "%s could not be renamed" : "%s không thể đổi tên", "File handling" : "Xử lý tập tin", "Maximum upload size" : "Kích thước tối đa ", "max. possible: " : "tối đa cho phép:", @@ -72,6 +58,7 @@ "Select all" : "Chọn tất cả", "Upload too large" : "Tập tin tải lên quá lớn", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Các tập tin bạn đang tải lên vượt quá kích thước tối đa cho phép trên máy chủ .", - "Files are being scanned, please wait." : "Tập tin đang được quét ,vui lòng chờ." + "Files are being scanned, please wait." : "Tập tin đang được quét ,vui lòng chờ.", + "Text file" : "Tập tin văn bản" },"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 e3f113d82fa..6e823fc3566 100644 --- a/apps/files/l10n/zh_CN.js +++ b/apps/files/l10n/zh_CN.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "存储空间不可用", "Storage invalid" : "存储空间无效", "Unknown error" : "未知错误", - "Could not move %s - File with this name already exists" : "无法移动 %s - 同名文件已存在", - "Could not move %s" : "无法移动 %s", - "Permission denied" : "拒绝访问", - "The target folder has been moved or deleted." : "目标文件夹已经被移动或删除。", - "The name %s is already used in the folder %s. Please choose a different name." : "文件名 %s 是已经在 %s 中存在的名称。请使用其他名称。", - "Error when creating the file" : "创建文件时出错", - "Error when creating the folder" : "创建文件夹出错", "Unable to set upload directory." : "无法设置上传文件夹。", "Invalid Token" : "无效密匙", "No file was uploaded. Unknown error" : "没有文件被上传。未知错误", @@ -22,6 +15,7 @@ OC.L10N.register( "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." : "无效文件夹。", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "无法确定日期", "This operation is forbidden" : "操作被禁止", "This directory is unavailable, please check the logs or contact the administrator" : "此目录不可用,请检查日志或联系管理员", - "Error moving file." : "移动文件出错。", - "Error moving file" : "移动文件错误", - "Error" : "错误", - "{new_name} already exists" : "{new_name} 已存在", - "Could not rename file" : "不能重命名文件", - "Could not create file" : "不能创建文件", - "Could not create folder" : "不能创建文件夹", - "Error deleting file." : "删除文件出错。", "No entries in this folder match '{filter}'" : "此文件夹中无项目匹配“{filter}”", "Name" : "名称", "Size" : "大小", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n 字节"], "Favorited" : "已收藏", "Favorite" : "收藏", - "Text file" : "文本文件", - "New text file.txt" : "创建文本文件 .txt", "Folder" : "文件夹", "New folder" : "增加文件夹", "{newname} already exists" : "{newname} 已经存在", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "被 %2$s 更改", "Deleted by %2$s" : "被 %2$s 删除", "Restored by %2$s" : "被 %2$s 恢复", - "%s could not be renamed as it has been deleted" : "%s 已经被删除,无法重命名 ", - "%s could not be renamed" : "%s 不能被重命名", "Upload (max. %s)" : "上传 (最大 %s)", "File handling" : "文件处理", "Maximum upload size" : "最大上传大小", @@ -119,6 +101,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "文件正在被扫描,请稍候。", "Currently scanning" : "正在扫描", "No favorites" : "无收藏", - "Files and folders you mark as favorite will show up here" : "收藏的文件和文件夹会在这里显示" + "Files and folders you mark as favorite will show up here" : "收藏的文件和文件夹会在这里显示", + "Text file" : "文本文件", + "New text file.txt" : "创建文本文件 .txt" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json index 177be39683c..0cd2163ce36 100644 --- a/apps/files/l10n/zh_CN.json +++ b/apps/files/l10n/zh_CN.json @@ -2,13 +2,6 @@ "Storage not available" : "存储空间不可用", "Storage invalid" : "存储空间无效", "Unknown error" : "未知错误", - "Could not move %s - File with this name already exists" : "无法移动 %s - 同名文件已存在", - "Could not move %s" : "无法移动 %s", - "Permission denied" : "拒绝访问", - "The target folder has been moved or deleted." : "目标文件夹已经被移动或删除。", - "The name %s is already used in the folder %s. Please choose a different name." : "文件名 %s 是已经在 %s 中存在的名称。请使用其他名称。", - "Error when creating the file" : "创建文件时出错", - "Error when creating the folder" : "创建文件夹出错", "Unable to set upload directory." : "无法设置上传文件夹。", "Invalid Token" : "无效密匙", "No file was uploaded. Unknown error" : "没有文件被上传。未知错误", @@ -20,6 +13,7 @@ "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." : "无效文件夹。", @@ -44,14 +38,6 @@ "Unable to determine date" : "无法确定日期", "This operation is forbidden" : "操作被禁止", "This directory is unavailable, please check the logs or contact the administrator" : "此目录不可用,请检查日志或联系管理员", - "Error moving file." : "移动文件出错。", - "Error moving file" : "移动文件错误", - "Error" : "错误", - "{new_name} already exists" : "{new_name} 已存在", - "Could not rename file" : "不能重命名文件", - "Could not create file" : "不能创建文件", - "Could not create folder" : "不能创建文件夹", - "Error deleting file." : "删除文件出错。", "No entries in this folder match '{filter}'" : "此文件夹中无项目匹配“{filter}”", "Name" : "名称", "Size" : "大小", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n 字节"], "Favorited" : "已收藏", "Favorite" : "收藏", - "Text file" : "文本文件", - "New text file.txt" : "创建文本文件 .txt", "Folder" : "文件夹", "New folder" : "增加文件夹", "{newname} already exists" : "{newname} 已经存在", @@ -97,8 +81,6 @@ "Changed by %2$s" : "被 %2$s 更改", "Deleted by %2$s" : "被 %2$s 删除", "Restored by %2$s" : "被 %2$s 恢复", - "%s could not be renamed as it has been deleted" : "%s 已经被删除,无法重命名 ", - "%s could not be renamed" : "%s 不能被重命名", "Upload (max. %s)" : "上传 (最大 %s)", "File handling" : "文件处理", "Maximum upload size" : "最大上传大小", @@ -117,6 +99,8 @@ "Files are being scanned, please wait." : "文件正在被扫描,请稍候。", "Currently scanning" : "正在扫描", "No favorites" : "无收藏", - "Files and folders you mark as favorite will show up here" : "收藏的文件和文件夹会在这里显示" + "Files and folders you mark as favorite will show up here" : "收藏的文件和文件夹会在这里显示", + "Text file" : "文本文件", + "New text file.txt" : "创建文本文件 .txt" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/l10n/zh_HK.js b/apps/files/l10n/zh_HK.js index 3a984b345ce..30b7e75a732 100644 --- a/apps/files/l10n/zh_HK.js +++ b/apps/files/l10n/zh_HK.js @@ -9,7 +9,6 @@ OC.L10N.register( "Download" : "下載", "Rename" : "重新命名", "Delete" : "刪除", - "Error" : "錯誤", "Name" : "名稱", "Size" : "大小", "{dirs} and {files}" : "{dirs} 和 {files}", diff --git a/apps/files/l10n/zh_HK.json b/apps/files/l10n/zh_HK.json index 8b6572bc376..213997044af 100644 --- a/apps/files/l10n/zh_HK.json +++ b/apps/files/l10n/zh_HK.json @@ -7,7 +7,6 @@ "Download" : "下載", "Rename" : "重新命名", "Delete" : "刪除", - "Error" : "錯誤", "Name" : "名稱", "Size" : "大小", "{dirs} and {files}" : "{dirs} 和 {files}", diff --git a/apps/files/l10n/zh_TW.js b/apps/files/l10n/zh_TW.js index c38488d3087..09829db3bcc 100644 --- a/apps/files/l10n/zh_TW.js +++ b/apps/files/l10n/zh_TW.js @@ -4,13 +4,6 @@ OC.L10N.register( "Storage not available" : "無法存取儲存空間", "Storage invalid" : "無效的儲存空間", "Unknown error" : "未知的錯誤", - "Could not move %s - File with this name already exists" : "無法移動 %s ,同名的檔案已經存在", - "Could not move %s" : "無法移動 %s", - "Permission denied" : "存取被拒", - "The target folder has been moved or deleted." : "目標資料夾已經被搬移或刪除", - "The name %s is already used in the folder %s. Please choose a different name." : "%s 已經被使用於資料夾 %s ,請換一個名字", - "Error when creating the file" : "建立檔案失敗", - "Error when creating the folder" : "建立資料夾失敗", "Unable to set upload directory." : "無法設定上傳目錄", "Invalid Token" : "無效的 token", "No file was uploaded. Unknown error" : "沒有檔案被上傳,原因未知", @@ -22,6 +15,7 @@ OC.L10N.register( "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." : "無效的資料夾", @@ -46,14 +40,6 @@ OC.L10N.register( "Unable to determine date" : "無法確定日期", "This operation is forbidden" : "此動作被禁止", "This directory is unavailable, please check the logs or contact the administrator" : "這個目錄無法存取,請檢查伺服器記錄檔或聯絡管理員", - "Error moving file." : "移動檔案發生錯誤", - "Error moving file" : "移動檔案失敗", - "Error" : "錯誤", - "{new_name} already exists" : "{new_name} 已經存在", - "Could not rename file" : "無法重新命名", - "Could not create file" : "無法建立檔案", - "Could not create folder" : "無法建立資料夾", - "Error deleting file." : "刪除檔案發生錯誤", "No entries in this folder match '{filter}'" : "在此資料夾中沒有項目與 '{filter}' 相符", "Name" : "名稱", "Size" : "大小", @@ -75,8 +61,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n 位元組"], "Favorited" : "已加入最愛", "Favorite" : "我的最愛", - "Text file" : "文字檔", - "New text file.txt" : "新文字檔.txt", "Folder" : "資料夾", "New folder" : "新資料夾", "{newname} already exists" : "{newname} 已經存在", @@ -99,8 +83,6 @@ OC.L10N.register( "Changed by %2$s" : "由 %2$s 改動", "Deleted by %2$s" : "由 %2$s 刪除", "Restored by %2$s" : "由 %2$s 還原", - "%s could not be renamed as it has been deleted" : "%s 已經被刪除了所以無法重新命名", - "%s could not be renamed" : "無法重新命名 %s", "Upload (max. %s)" : "上傳(至多 %s)", "File handling" : "檔案處理", "Maximum upload size" : "上傳限制", @@ -119,6 +101,8 @@ OC.L10N.register( "Files are being scanned, please wait." : "正在掃描檔案,請稍等", "Currently scanning" : "正在掃描", "No favorites" : "沒有最愛", - "Files and folders you mark as favorite will show up here" : "您標記為最愛的檔案與資料夾將會顯示在這裡" + "Files and folders you mark as favorite will show up here" : "您標記為最愛的檔案與資料夾將會顯示在這裡", + "Text file" : "文字檔", + "New text file.txt" : "新文字檔.txt" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/zh_TW.json b/apps/files/l10n/zh_TW.json index 8a408b5ffad..6f2c396ad18 100644 --- a/apps/files/l10n/zh_TW.json +++ b/apps/files/l10n/zh_TW.json @@ -2,13 +2,6 @@ "Storage not available" : "無法存取儲存空間", "Storage invalid" : "無效的儲存空間", "Unknown error" : "未知的錯誤", - "Could not move %s - File with this name already exists" : "無法移動 %s ,同名的檔案已經存在", - "Could not move %s" : "無法移動 %s", - "Permission denied" : "存取被拒", - "The target folder has been moved or deleted." : "目標資料夾已經被搬移或刪除", - "The name %s is already used in the folder %s. Please choose a different name." : "%s 已經被使用於資料夾 %s ,請換一個名字", - "Error when creating the file" : "建立檔案失敗", - "Error when creating the folder" : "建立資料夾失敗", "Unable to set upload directory." : "無法設定上傳目錄", "Invalid Token" : "無效的 token", "No file was uploaded. Unknown error" : "沒有檔案被上傳,原因未知", @@ -20,6 +13,7 @@ "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." : "無效的資料夾", @@ -44,14 +38,6 @@ "Unable to determine date" : "無法確定日期", "This operation is forbidden" : "此動作被禁止", "This directory is unavailable, please check the logs or contact the administrator" : "這個目錄無法存取,請檢查伺服器記錄檔或聯絡管理員", - "Error moving file." : "移動檔案發生錯誤", - "Error moving file" : "移動檔案失敗", - "Error" : "錯誤", - "{new_name} already exists" : "{new_name} 已經存在", - "Could not rename file" : "無法重新命名", - "Could not create file" : "無法建立檔案", - "Could not create folder" : "無法建立資料夾", - "Error deleting file." : "刪除檔案發生錯誤", "No entries in this folder match '{filter}'" : "在此資料夾中沒有項目與 '{filter}' 相符", "Name" : "名稱", "Size" : "大小", @@ -73,8 +59,6 @@ "_%n byte_::_%n bytes_" : ["%n 位元組"], "Favorited" : "已加入最愛", "Favorite" : "我的最愛", - "Text file" : "文字檔", - "New text file.txt" : "新文字檔.txt", "Folder" : "資料夾", "New folder" : "新資料夾", "{newname} already exists" : "{newname} 已經存在", @@ -97,8 +81,6 @@ "Changed by %2$s" : "由 %2$s 改動", "Deleted by %2$s" : "由 %2$s 刪除", "Restored by %2$s" : "由 %2$s 還原", - "%s could not be renamed as it has been deleted" : "%s 已經被刪除了所以無法重新命名", - "%s could not be renamed" : "無法重新命名 %s", "Upload (max. %s)" : "上傳(至多 %s)", "File handling" : "檔案處理", "Maximum upload size" : "上傳限制", @@ -117,6 +99,8 @@ "Files are being scanned, please wait." : "正在掃描檔案,請稍等", "Currently scanning" : "正在掃描", "No favorites" : "沒有最愛", - "Files and folders you mark as favorite will show up here" : "您標記為最愛的檔案與資料夾將會顯示在這裡" + "Files and folders you mark as favorite will show up here" : "您標記為最愛的檔案與資料夾將會顯示在這裡", + "Text file" : "文字檔", + "New text file.txt" : "新文字檔.txt" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/lib/app.php b/apps/files/lib/app.php index 5bd8c127586..18813e224de 100644 --- a/apps/files/lib/app.php +++ b/apps/files/lib/app.php @@ -29,107 +29,21 @@ namespace OCA\Files; class App { /** - * @var \OC_L10N - */ - private $l10n; - - /** * @var \OCP\INavigationManager */ private static $navigationManager; /** - * @var \OC\Files\View - */ - private $view; - - public function __construct($view, $l10n) { - $this->view = $view; - $this->l10n = $l10n; - } - - /** * Returns the app's navigation manager * * @return \OCP\INavigationManager */ public static function getNavigationManager() { + // TODO: move this into a service in the Application class if (self::$navigationManager === null) { self::$navigationManager = new \OC\NavigationManager(); } return self::$navigationManager; } - /** - * rename a file - * - * @param string $dir - * @param string $oldname - * @param string $newname - * @return array - */ - public function rename($dir, $oldname, $newname) { - $result = array( - 'success' => false, - 'data' => NULL - ); - - try { - // check if the new name is conform to file name restrictions - $this->view->verifyPath($dir, $newname); - } catch (\OCP\Files\InvalidPathException $ex) { - $result['data'] = array( - 'message' => $this->l10n->t($ex->getMessage()), - 'code' => 'invalidname', - ); - return $result; - } - - $normalizedOldPath = \OC\Files\Filesystem::normalizePath($dir . '/' . $oldname); - $normalizedNewPath = \OC\Files\Filesystem::normalizePath($dir . '/' . $newname); - - // rename to non-existing folder is denied - if (!$this->view->file_exists($normalizedOldPath)) { - $result['data'] = array( - 'message' => $this->l10n->t('%s could not be renamed as it has been deleted', array($oldname)), - 'code' => 'sourcenotfound', - 'oldname' => $oldname, - 'newname' => $newname, - ); - }else if (!$this->view->file_exists($dir)) { - $result['data'] = array('message' => (string)$this->l10n->t( - 'The target folder has been moved or deleted.', - array($dir)), - 'code' => 'targetnotfound' - ); - // rename to existing file is denied - } else if ($this->view->file_exists($normalizedNewPath)) { - - $result['data'] = array( - 'message' => $this->l10n->t( - "The name %s is already used in the folder %s. Please choose a different name.", - array($newname, $dir)) - ); - } else if ( - // rename to "." is denied - $newname !== '.' and - // THEN try to rename - $this->view->rename($normalizedOldPath, $normalizedNewPath) - ) { - // successful rename - $meta = $this->view->getFileInfo($normalizedNewPath); - $meta = \OCA\Files\Helper::populateTags(array($meta)); - $fileInfo = \OCA\Files\Helper::formatFileInfo(current($meta)); - $fileInfo['path'] = dirname($normalizedNewPath); - $result['success'] = true; - $result['data'] = $fileInfo; - } else { - // rename failed - $result['data'] = array( - 'message' => $this->l10n->t('%s could not be renamed', array($oldname)) - ); - } - return $result; - } - } diff --git a/apps/files/lib/helper.php b/apps/files/lib/helper.php index fb14cea731f..9a4e8d59786 100644 --- a/apps/files/lib/helper.php +++ b/apps/files/lib/helper.php @@ -139,9 +139,6 @@ class Helper { $entry['parentId'] = $i['parent']; $entry['mtime'] = $i['mtime'] * 1000; // only pick out the needed attributes - if (\OC::$server->getPreviewManager()->isAvailable($i)) { - $entry['isPreviewAvailable'] = true; - } $entry['name'] = $i->getName(); $entry['permissions'] = $i['permissions']; $entry['mimetype'] = $i['mimetype']; diff --git a/apps/files/templates/list.php b/apps/files/templates/list.php index 7ebf80ee8b2..04550f945b6 100644 --- a/apps/files/templates/list.php +++ b/apps/files/templates/list.php @@ -1,16 +1,5 @@ <div id="controls"> <div class="actions creatable hidden"> - <?php /* - Only show upload button for public page - */ ?> - <?php if(isset($_['dirToken'])):?> - <div id="upload" class="button upload" - title="<?php isset($_['uploadMaxHumanFilesize']) ? p($l->t('Upload (max. %s)', array($_['uploadMaxHumanFilesize']))) : '' ?>"> - <label for="file_upload_start" class="svg icon-upload"> - <span class="hidden-visually"><?php p($l->t('Upload'))?></span> - </label> - </div> - <?php endif; ?> <div id="uploadprogresswrapper"> <div id="uploadprogressbar"></div> <button class="stop icon-close" style="display:none"> diff --git a/apps/files/tests/ajax_rename.php b/apps/files/tests/ajax_rename.php deleted file mode 100644 index 859c7042b89..00000000000 --- a/apps/files/tests/ajax_rename.php +++ /dev/null @@ -1,232 +0,0 @@ -<?php -/** - * @author Björn Schießle <schiessle@owncloud.com> - * @author Christopher Schäpers <kondou@ts.unde.re> - * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <icewind@owncloud.com> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Vincent Petry <pvince81@owncloud.com> - * - * @copyright Copyright (c) 2015, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * - */ - -class Test_OC_Files_App_Rename extends \Test\TestCase { - private static $user; - - /** - * @var PHPUnit_Framework_MockObject_MockObject - */ - private $viewMock; - - /** - * @var \OCA\Files\App - */ - private $files; - - protected function setUp() { - parent::setUp(); - - // mock OC_L10n - if (!self::$user) { - self::$user = uniqid(); - } - \OC_User::createUser(self::$user, 'password'); - $this->loginAsUser(self::$user); - - $l10nMock = $this->getMock('\OC_L10N', array('t'), array(), '', false); - $l10nMock->expects($this->any()) - ->method('t') - ->will($this->returnArgument(0)); - $viewMock = $this->getMock('\OC\Files\View', array('rename', 'normalizePath', 'getFileInfo', 'file_exists'), array(), '', false); - $viewMock->expects($this->any()) - ->method('normalizePath') - ->will($this->returnArgument(0)); - $viewMock->expects($this->any()) - ->method('rename') - ->will($this->returnValue(true)); - $this->viewMock = $viewMock; - $this->files = new \OCA\Files\App($viewMock, $l10nMock); - } - - protected function tearDown() { - $result = \OC_User::deleteUser(self::$user); - $this->assertTrue($result); - - $this->logout(); - parent::tearDown(); - } - - /** - * test rename of file/folder - */ - function testRenameFolder() { - $dir = '/'; - $oldname = 'oldname'; - $newname = 'newname'; - - $this->viewMock->expects($this->any()) - ->method('file_exists') - ->with($this->anything()) - ->will($this->returnValueMap(array( - array('/', true), - array('/oldname', true) - ))); - - - $this->viewMock->expects($this->any()) - ->method('getFileInfo') - ->will($this->returnValue(new \OC\Files\FileInfo( - '/new_name', - new \OC\Files\Storage\Local(array('datadir' => '/')), - '/', - array( - 'fileid' => 123, - 'type' => 'dir', - 'mimetype' => 'httpd/unix-directory', - 'mtime' => 0, - 'permissions' => 31, - 'size' => 18, - 'etag' => 'abcdef', - 'directory' => '/', - 'name' => 'new_name', - ), null))); - - $result = $this->files->rename($dir, $oldname, $newname); - - $this->assertTrue($result['success']); - $this->assertEquals(123, $result['data']['id']); - $this->assertEquals('new_name', $result['data']['name']); - $this->assertEquals(18, $result['data']['size']); - $this->assertEquals('httpd/unix-directory', $result['data']['mimetype']); - $this->assertEquals('abcdef', $result['data']['etag']); - $this->assertFalse(isset($result['data']['tags'])); - $this->assertEquals('/', $result['data']['path']); - } - - /** - * test rename of file with tag - */ - function testRenameFileWithTag() { - $taggerMock = $this->getMock('\OCP\ITags'); - $taggerMock->expects($this->any()) - ->method('getTagsForObjects') - ->with(array(123)) - ->will($this->returnValue(array(123 => array('tag1', 'tag2')))); - $tagManagerMock = $this->getMock('\OCP\ITagManager'); - $tagManagerMock->expects($this->any()) - ->method('load') - ->with('files') - ->will($this->returnValue($taggerMock)); - $oldTagManager = \OC::$server->query('TagManager'); - \OC::$server->registerService('TagManager', function ($c) use ($tagManagerMock) { - return $tagManagerMock; - }); - - $dir = '/'; - $oldname = 'oldname.txt'; - $newname = 'newname.txt'; - - $this->viewMock->expects($this->any()) - ->method('file_exists') - ->with($this->anything()) - ->will($this->returnValueMap(array( - array('/', true), - array('/oldname.txt', true) - ))); - - - $this->viewMock->expects($this->any()) - ->method('getFileInfo') - ->will($this->returnValue(new \OC\Files\FileInfo( - '/new_name.txt', - new \OC\Files\Storage\Local(array('datadir' => '/')), - '/', - array( - 'fileid' => 123, - 'type' => 'file', - 'mimetype' => 'text/plain', - 'mtime' => 0, - 'permissions' => 31, - 'size' => 18, - 'etag' => 'abcdef', - 'directory' => '/', - 'name' => 'new_name.txt', - ), null))); - - $result = $this->files->rename($dir, $oldname, $newname); - - $this->assertTrue($result['success']); - $this->assertEquals(123, $result['data']['id']); - $this->assertEquals('new_name.txt', $result['data']['name']); - $this->assertEquals(18, $result['data']['size']); - $this->assertEquals('text/plain', $result['data']['mimetype']); - $this->assertEquals('abcdef', $result['data']['etag']); - $this->assertEquals(array('tag1', 'tag2'), $result['data']['tags']); - $this->assertEquals('/', $result['data']['path']); - - \OC::$server->registerService('TagManager', function ($c) use ($oldTagManager) { - return $oldTagManager; - }); - } - - /** - * Test rename inside a folder that doesn't exist any more - */ - function testRenameInNonExistingFolder() { - $dir = '/unexist'; - $oldname = 'oldname'; - $newname = 'newname'; - - $this->viewMock->expects($this->at(0)) - ->method('file_exists') - ->with('/unexist/oldname') - ->will($this->returnValue(false)); - - $this->viewMock->expects($this->any()) - ->method('getFileInfo') - ->will($this->returnValue(array( - 'fileid' => 123, - 'type' => 'dir', - 'mimetype' => 'httpd/unix-directory', - 'size' => 18, - 'etag' => 'abcdef', - 'directory' => '/unexist', - 'name' => 'new_name', - ))); - - $result = $this->files->rename($dir, $oldname, $newname); - - $this->assertFalse($result['success']); - $this->assertEquals('sourcenotfound', $result['data']['code']); - } - - /** - * Test move to invalid name - */ - function testRenameToInvalidName() { - $dir = '/'; - $oldname = 'oldname'; - $newname = 'abc\\'; - - $result = $this->files->rename($dir, $oldname, $newname); - - $this->assertFalse($result['success']); - $this->assertEquals('File name contains at least one invalid character', $result['data']['message']); - $this->assertEquals('invalidname', $result['data']['code']); - } -} diff --git a/apps/files/tests/js/favoritesfilelistspec.js b/apps/files/tests/js/favoritesfilelistspec.js index 608ddaca18b..1c833d334e2 100644 --- a/apps/files/tests/js/favoritesfilelistspec.js +++ b/apps/files/tests/js/favoritesfilelistspec.js @@ -100,8 +100,7 @@ describe('OCA.Files.FavoritesFileList tests', function() { expect($tr.attr('data-mtime')).toEqual('11111000'); expect($tr.find('a.name').attr('href')).toEqual( OC.webroot + - '/index.php/apps/files/ajax/download.php' + - '?dir=%2Fsomedir&files=test.txt' + '/remote.php/webdav/somedir/test.txt' ); expect($tr.find('.nametext').text().trim()).toEqual('test.txt'); }); diff --git a/apps/files/tests/js/fileUploadSpec.js b/apps/files/tests/js/fileUploadSpec.js index a49a5d4e2e0..8a0d6b01952 100644 --- a/apps/files/tests/js/fileUploadSpec.js +++ b/apps/files/tests/js/fileUploadSpec.js @@ -19,6 +19,8 @@ * */ +/* global FileList */ + describe('OC.Upload tests', function() { var $dummyUploader; var testFile; diff --git a/apps/files/tests/js/fileactionsSpec.js b/apps/files/tests/js/fileactionsSpec.js index d29164c5136..a905a4d969d 100644 --- a/apps/files/tests/js/fileactionsSpec.js +++ b/apps/files/tests/js/fileactionsSpec.js @@ -584,7 +584,7 @@ describe('OCA.Files.FileActions tests', function() { expect(busyStub.calledWith('testName.txt', true)).toEqual(true); expect(handleDownloadStub.calledOnce).toEqual(true); expect(handleDownloadStub.getCall(0).args[0]).toEqual( - OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=testName.txt' + OC.webroot + '/remote.php/webdav/subdir/testName.txt' ); busyStub.reset(); handleDownloadStub.yield(); diff --git a/apps/files/tests/js/fileactionsmenuSpec.js b/apps/files/tests/js/fileactionsmenuSpec.js index dee542458b6..747a746a602 100644 --- a/apps/files/tests/js/fileactionsmenuSpec.js +++ b/apps/files/tests/js/fileactionsmenuSpec.js @@ -237,8 +237,8 @@ describe('OCA.Files.FileActionsMenu tests', function() { expect(redirectStub.calledOnce).toEqual(true); expect(redirectStub.getCall(0).args[0]).toContain( OC.webroot + - '/index.php/apps/files/ajax/download.php' + - '?dir=%2Fsubdir&files=testName.txt'); + '/remote.php/webdav/subdir/testName.txt' + ); redirectStub.restore(); }); it('takes the file\'s path into account when clicking download', function() { @@ -269,8 +269,7 @@ describe('OCA.Files.FileActionsMenu tests', function() { expect(redirectStub.calledOnce).toEqual(true); expect(redirectStub.getCall(0).args[0]).toContain( - OC.webroot + '/index.php/apps/files/ajax/download.php' + - '?dir=%2Fanotherpath%2Fthere&files=testName.txt' + OC.webroot + '/remote.php/webdav/anotherpath/there/testName.txt' ); redirectStub.restore(); }); diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js index 05e6fcc6122..9f7ad50bc60 100644 --- a/apps/files/tests/js/filelistSpec.js +++ b/apps/files/tests/js/filelistSpec.js @@ -20,8 +20,11 @@ */ describe('OCA.Files.FileList tests', function() { - var testFiles, alertStub, notificationStub, fileList, pageSizeStub; + var FileInfo = OC.Files.FileInfo; + var testFiles, testRoot, notificationStub, fileList, pageSizeStub; var bcResizeStub; + var filesClient; + var redirectStub; /** * Generate test file data @@ -38,21 +41,29 @@ describe('OCA.Files.FileList tests', function() { name += '0'; } name += i + '.txt'; - files.push({ + files.push(new FileInfo({ id: i, type: 'file', name: name, mimetype: 'text/plain', size: i * 2, etag: 'abc' - }); + })); } return files; } beforeEach(function() { - alertStub = sinon.stub(OC.dialogs, 'alert'); - notificationStub = sinon.stub(OC.Notification, 'show'); + filesClient = new OC.Files.Client({ + host: 'localhost', + port: 80, + // FIXME: uncomment after fixing the test OC.webroot + //root: OC.webroot + '/remote.php/webdav', + root: '/remote.php/webdav', + useHTTPS: false + }); + redirectStub = sinon.stub(OC, 'redirect'); + notificationStub = sinon.stub(OC.Notification, 'showTemporary'); // prevent resize algo to mess up breadcrumb order while // testing bcResizeStub = sinon.stub(OCA.Files.BreadCrumb.prototype, '_resize'); @@ -93,7 +104,17 @@ describe('OCA.Files.FileList tests', function() { '</div>' ); - testFiles = [{ + testRoot = new FileInfo({ + // root entry + id: 99, + type: 'dir', + name: '/subdir', + mimetype: 'httpd/unix-directory', + size: 1200000, + etag: 'a0b0c0d0', + permissions: OC.PERMISSION_ALL + }); + testFiles = [new FileInfo({ id: 1, type: 'file', name: 'One.txt', @@ -102,7 +123,7 @@ describe('OCA.Files.FileList tests', function() { size: 12, etag: 'abc', permissions: OC.PERMISSION_ALL - }, { + }), new FileInfo({ id: 2, type: 'file', name: 'Two.jpg', @@ -111,7 +132,7 @@ describe('OCA.Files.FileList tests', function() { size: 12049, etag: 'def', permissions: OC.PERMISSION_ALL - }, { + }), new FileInfo({ id: 3, type: 'file', name: 'Three.pdf', @@ -120,7 +141,7 @@ describe('OCA.Files.FileList tests', function() { size: 58009, etag: '123', permissions: OC.PERMISSION_ALL - }, { + }), new FileInfo({ id: 4, type: 'dir', name: 'somedir', @@ -129,9 +150,11 @@ describe('OCA.Files.FileList tests', function() { size: 250, etag: '456', permissions: OC.PERMISSION_ALL - }]; + })]; pageSizeStub = sinon.stub(OCA.Files.FileList.prototype, 'pageSize').returns(20); - fileList = new OCA.Files.FileList($('#app-content-files')); + fileList = new OCA.Files.FileList($('#app-content-files'), { + filesClient: filesClient + }); }); afterEach(function() { testFiles = undefined; @@ -141,9 +164,9 @@ describe('OCA.Files.FileList tests', function() { fileList = undefined; notificationStub.restore(); - alertStub.restore(); bcResizeStub.restore(); pageSizeStub.restore(); + redirectStub.restore(); }); describe('Getters', function() { it('Returns the current directory', function() { @@ -166,15 +189,14 @@ describe('OCA.Files.FileList tests', function() { clock.restore(); }); it('generates file element with correct attributes when calling add() with file data', function() { - var fileData = { + var fileData = new FileInfo({ id: 18, - type: 'file', name: 'testName.txt', mimetype: 'text/plain', - size: '1234', + size: 1234, etag: 'a01234c', - mtime: '123456' - }; + mtime: 123456 + }); var $tr = fileList.add(fileData); expect($tr).toBeDefined(); @@ -188,7 +210,7 @@ describe('OCA.Files.FileList tests', function() { expect($tr.attr('data-mime')).toEqual('text/plain'); expect($tr.attr('data-mtime')).toEqual('123456'); expect($tr.find('a.name').attr('href')) - .toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=testName.txt'); + .toEqual(OC.webroot + '/remote.php/webdav/subdir/testName.txt'); expect($tr.find('.nametext').text().trim()).toEqual('testName.txt'); expect($tr.find('.filesize').text()).toEqual('1 kB'); @@ -196,15 +218,14 @@ describe('OCA.Files.FileList tests', function() { expect(fileList.findFileEl('testName.txt')[0]).toEqual($tr[0]); }); it('generates dir element with correct attributes when calling add() with dir data', function() { - var fileData = { + var fileData = new FileInfo({ id: 19, - type: 'dir', name: 'testFolder', mimetype: 'httpd/unix-directory', - size: '1234', + size: 1234, etag: 'a01234c', - mtime: '123456' - }; + mtime: 123456 + }); var $tr = fileList.add(fileData); expect($tr).toBeDefined(); @@ -297,7 +318,6 @@ describe('OCA.Files.FileList tests', function() { expect($tr.index()).toEqual(4); }); it('inserts files in a sorted manner when insert option is enabled', function() { - var $tr; for (var i = 0; i < testFiles.length; i++) { fileList.add(testFiles[i]); } @@ -423,28 +443,31 @@ describe('OCA.Files.FileList tests', function() { }); }); describe('Deleting files', function() { + var deferredDelete; + var deleteStub; + + beforeEach(function() { + deferredDelete = $.Deferred(); + deleteStub = sinon.stub(filesClient, 'remove').returns(deferredDelete.promise()); + }); + afterEach(function() { + deleteStub.restore(); + }); + function doDelete() { - var request, query; // note: normally called from FileActions fileList.do_delete(['One.txt', 'Two.jpg']); - expect(fakeServer.requests.length).toEqual(1); - request = fakeServer.requests[0]; - expect(request.url).toEqual(OC.webroot + '/index.php/apps/files/ajax/delete.php'); - - query = fakeServer.requests[0].requestBody; - expect(OC.parseQueryString(query)).toEqual({'dir': '/subdir', files: '["One.txt","Two.jpg"]'}); + expect(deleteStub.calledTwice).toEqual(true); + expect(deleteStub.getCall(0).args[0]).toEqual('/subdir/One.txt'); + expect(deleteStub.getCall(1).args[0]).toEqual('/subdir/Two.jpg'); } it('calls delete.php, removes the deleted entries and updates summary', function() { var $summary; fileList.setFiles(testFiles); doDelete(); - fakeServer.requests[0].respond( - 200, - { 'Content-Type': 'application/json' }, - JSON.stringify({status: 'success'}) - ); + deferredDelete.resolve(200); expect(fileList.findFileEl('One.txt').length).toEqual(0); expect(fileList.findFileEl('Two.jpg').length).toEqual(0); @@ -482,11 +505,7 @@ describe('OCA.Files.FileList tests', function() { fileList.setFiles([testFiles[0], testFiles[1]]); doDelete(); - fakeServer.requests[0].respond( - 200, - { 'Content-Type': 'application/json' }, - JSON.stringify({status: 'success'}) - ); + deferredDelete.resolve(200); expect(fileList.$fileList.find('tr').length).toEqual(0); @@ -501,21 +520,41 @@ describe('OCA.Files.FileList tests', function() { fileList.setFiles(testFiles); doDelete(); - fakeServer.requests[0].respond( - 200, - { 'Content-Type': 'application/json' }, - JSON.stringify({status: 'error', data: {message: 'WOOT'}}) - ); + deferredDelete.reject(403); // files are still in the list expect(fileList.findFileEl('One.txt').length).toEqual(1); expect(fileList.findFileEl('Two.jpg').length).toEqual(1); expect(fileList.$fileList.find('tr').length).toEqual(4); - expect(notificationStub.calledOnce).toEqual(true); + expect(notificationStub.calledTwice).toEqual(true); + }); + it('remove file from list if delete call returned 404 not found', function() { + fileList.setFiles(testFiles); + doDelete(); + + deferredDelete.reject(404); + + // files are still in the list + expect(fileList.findFileEl('One.txt').length).toEqual(0); + expect(fileList.findFileEl('Two.jpg').length).toEqual(0); + expect(fileList.$fileList.find('tr').length).toEqual(2); + + expect(notificationStub.notCalled).toEqual(true); }); }); describe('Renaming files', function() { + var deferredRename; + var renameStub; + + beforeEach(function() { + deferredRename = $.Deferred(); + renameStub = sinon.stub(filesClient, 'move').returns(deferredRename.promise()); + }); + afterEach(function() { + renameStub.restore(); + }); + function doCancelRename() { var $input; for (var i = 0; i < testFiles.length; i++) { @@ -530,10 +569,10 @@ describe('OCA.Files.FileList tests', function() { // trigger submit because triggering blur doesn't work in all browsers $input.closest('form').trigger('submit'); - expect(fakeServer.requests.length).toEqual(0); + expect(renameStub.notCalled).toEqual(true); } function doRename() { - var $input, request; + var $input; for (var i = 0; i < testFiles.length; i++) { var file = testFiles[i]; @@ -548,83 +587,61 @@ describe('OCA.Files.FileList tests', function() { // trigger submit because triggering blur doesn't work in all browsers $input.closest('form').trigger('submit'); - expect(fakeServer.requests.length).toEqual(1); - request = fakeServer.requests[0]; - expect(request.url.substr(0, request.url.indexOf('?'))).toEqual(OC.webroot + '/index.php/apps/files/ajax/rename.php'); - expect(OC.parseQueryString(request.url)).toEqual({'dir': '/some/subdir', newname: 'Tu_after_three.txt', file: 'One.txt'}); + expect(renameStub.calledOnce).toEqual(true); + expect(renameStub.getCall(0).args[0]).toEqual('/some/subdir/One.txt'); + expect(renameStub.getCall(0).args[1]).toEqual('/some/subdir/Tu_after_three.txt'); } it('Inserts renamed file entry at correct position if rename ajax call suceeded', function() { doRename(); - fakeServer.requests[0].respond(200, {'Content-Type': 'application/json'}, JSON.stringify({ - status: 'success', - data: { - name: 'Tu_after_three.txt', - type: 'file' - } - })); + deferredRename.resolve(201); // element stays renamed expect(fileList.findFileEl('One.txt').length).toEqual(0); expect(fileList.findFileEl('Tu_after_three.txt').length).toEqual(1); - expect(fileList.findFileEl('Tu_after_three.txt').index()).toEqual(2); // after Two.txt + expect(fileList.findFileEl('Tu_after_three.txt').index()).toEqual(2); // after Two.jpg - expect(alertStub.notCalled).toEqual(true); + expect(notificationStub.notCalled).toEqual(true); }); it('Reverts file entry if rename ajax call failed', function() { doRename(); - fakeServer.requests[0].respond(200, {'Content-Type': 'application/json'}, JSON.stringify({ - status: 'error', - data: { - message: 'Something went wrong' - } - })); + deferredRename.reject(403); // element was reverted expect(fileList.findFileEl('One.txt').length).toEqual(1); expect(fileList.findFileEl('One.txt').index()).toEqual(1); // after somedir expect(fileList.findFileEl('Tu_after_three.txt').length).toEqual(0); - expect(alertStub.calledOnce).toEqual(true); + expect(notificationStub.calledOnce).toEqual(true); }); it('Correctly updates file link after rename', function() { var $tr; doRename(); - fakeServer.requests[0].respond(200, {'Content-Type': 'application/json'}, JSON.stringify({ - status: 'success', - data: { - name: 'Tu_after_three.txt' - } - })); + deferredRename.resolve(201); $tr = fileList.findFileEl('Tu_after_three.txt'); - expect($tr.find('a.name').attr('href')).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=Tu_after_three.txt'); + expect($tr.find('a.name').attr('href')) + .toEqual(OC.webroot + '/remote.php/webdav/some/subdir/Tu_after_three.txt'); }); it('Triggers "fileActionsReady" event after rename', function() { var handler = sinon.stub(); fileList.$fileList.on('fileActionsReady', handler); doRename(); expect(handler.notCalled).toEqual(true); - fakeServer.requests[0].respond(200, {'Content-Type': 'application/json'}, JSON.stringify({ - status: 'success', - data: { - name: 'Tu_after_three.txt' - } - })); + + deferredRename.resolve(201); + expect(handler.calledOnce).toEqual(true); expect(fileList.$fileList.find('.test').length).toEqual(0); }); it('Leaves the summary alone when reinserting renamed element', function() { var $summary = $('#filestable .summary'); doRename(); - fakeServer.requests[0].respond(200, {'Content-Type': 'application/json'}, JSON.stringify({ - status: 'success', - data: { - name: 'Tu_after_three.txt' - } - })); + + deferredRename.resolve(201); + expect($summary.find('.info').text()).toEqual('1 folder and 3 files'); }); it('Leaves the summary alone when cancel renaming', function() { @@ -668,7 +685,7 @@ describe('OCA.Files.FileList tests', function() { // trigger submit does not send server request $input.closest('form').trigger('submit'); - expect(fakeServer.requests.length).toEqual(0); + expect(renameStub.notCalled).toEqual(true); // simulate escape key $input.trigger(new $.Event('keyup', {keyCode: 27})); @@ -694,12 +711,7 @@ describe('OCA.Files.FileList tests', function() { expect(OC.TestUtil.getImageUrl(fileList.findFileEl('Tu_after_three.txt').find('.thumbnail'))) .toEqual(OC.imagePath('core', 'loading.gif')); - fakeServer.requests[0].respond(200, {'Content-Type': 'application/json'}, JSON.stringify({ - status: 'error', - data: { - message: 'Something went wrong' - } - })); + deferredRename.reject(409); expect(fileList.findFileEl('One.txt').length).toEqual(1); expect(OC.TestUtil.getImageUrl(fileList.findFileEl('One.txt').find('.thumbnail'))) @@ -707,25 +719,27 @@ describe('OCA.Files.FileList tests', function() { }); }); describe('Moving files', function() { + var deferredMove; + var moveStub; + beforeEach(function() { + deferredMove = $.Deferred(); + moveStub = sinon.stub(filesClient, 'move').returns(deferredMove.promise()); + fileList.setFiles(testFiles); }); + afterEach(function() { + moveStub.restore(); + }); + it('Moves single file to target folder', function() { - var request; fileList.move('One.txt', '/somedir'); - expect(fakeServer.requests.length).toEqual(1); - request = fakeServer.requests[0]; - expect(request.url).toEqual(OC.webroot + '/index.php/apps/files/ajax/move.php'); - expect(OC.parseQueryString(request.requestBody)).toEqual({dir: '/subdir', file: 'One.txt', target: '/somedir'}); + expect(moveStub.calledOnce).toEqual(true); + expect(moveStub.getCall(0).args[0]).toEqual('/subdir/One.txt'); + expect(moveStub.getCall(0).args[1]).toEqual('/somedir/One.txt'); - fakeServer.requests[0].respond(200, {'Content-Type': 'application/json'}, JSON.stringify({ - status: 'success', - data: { - name: 'One.txt', - type: 'file' - } - })); + deferredMove.resolve(201); expect(fileList.findFileEl('One.txt').length).toEqual(0); @@ -736,39 +750,28 @@ describe('OCA.Files.FileList tests', function() { expect(notificationStub.notCalled).toEqual(true); }); it('Moves list of files to target folder', function() { - var request; + var deferredMove1 = $.Deferred(); + var deferredMove2 = $.Deferred(); + moveStub.onCall(0).returns(deferredMove1.promise()); + moveStub.onCall(1).returns(deferredMove2.promise()); + fileList.move(['One.txt', 'Two.jpg'], '/somedir'); - expect(fakeServer.requests.length).toEqual(2); - request = fakeServer.requests[0]; - expect(request.url).toEqual(OC.webroot + '/index.php/apps/files/ajax/move.php'); - expect(OC.parseQueryString(request.requestBody)).toEqual({dir: '/subdir', file: 'One.txt', target: '/somedir'}); + expect(moveStub.calledTwice).toEqual(true); + expect(moveStub.getCall(0).args[0]).toEqual('/subdir/One.txt'); + expect(moveStub.getCall(0).args[1]).toEqual('/somedir/One.txt'); + expect(moveStub.getCall(1).args[0]).toEqual('/subdir/Two.jpg'); + expect(moveStub.getCall(1).args[1]).toEqual('/somedir/Two.jpg'); - request = fakeServer.requests[1]; - expect(request.url).toEqual(OC.webroot + '/index.php/apps/files/ajax/move.php'); - expect(OC.parseQueryString(request.requestBody)).toEqual({dir: '/subdir', file: 'Two.jpg', target: '/somedir'}); - - fakeServer.requests[0].respond(200, {'Content-Type': 'application/json'}, JSON.stringify({ - status: 'success', - data: { - name: 'One.txt', - type: 'file' - } - })); + deferredMove1.resolve(201); expect(fileList.findFileEl('One.txt').length).toEqual(0); - // folder size has increased + // folder size has increased during move expect(fileList.findFileEl('somedir').data('size')).toEqual(262); expect(fileList.findFileEl('somedir').find('.filesize').text()).toEqual('262 B'); - fakeServer.requests[1].respond(200, {'Content-Type': 'application/json'}, JSON.stringify({ - status: 'success', - data: { - name: 'Two.jpg', - type: 'file' - } - })); + deferredMove2.resolve(201); expect(fileList.findFileEl('Two.jpg').length).toEqual(0); @@ -779,47 +782,31 @@ describe('OCA.Files.FileList tests', function() { expect(notificationStub.notCalled).toEqual(true); }); it('Shows notification if a file could not be moved', function() { - var request; fileList.move('One.txt', '/somedir'); - expect(fakeServer.requests.length).toEqual(1); - request = fakeServer.requests[0]; - expect(request.url).toEqual(OC.webroot + '/index.php/apps/files/ajax/move.php'); - expect(OC.parseQueryString(request.requestBody)).toEqual({dir: '/subdir', file: 'One.txt', target: '/somedir'}); + expect(moveStub.calledOnce).toEqual(true); - fakeServer.requests[0].respond(200, {'Content-Type': 'application/json'}, JSON.stringify({ - status: 'error', - data: { - message: 'Error while moving file' - } - })); + deferredMove.reject(409); expect(fileList.findFileEl('One.txt').length).toEqual(1); expect(notificationStub.calledOnce).toEqual(true); - expect(notificationStub.getCall(0).args[0]).toEqual('Error while moving file'); + expect(notificationStub.getCall(0).args[0]).toEqual('Could not move "One.txt"'); }); it('Restores thumbnail if a file could not be moved', function() { - var request; fileList.move('One.txt', '/somedir'); expect(OC.TestUtil.getImageUrl(fileList.findFileEl('One.txt').find('.thumbnail'))) .toEqual(OC.imagePath('core', 'loading.gif')); - expect(fakeServer.requests.length).toEqual(1); - request = fakeServer.requests[0]; + expect(moveStub.calledOnce).toEqual(true); - fakeServer.requests[0].respond(200, {'Content-Type': 'application/json'}, JSON.stringify({ - status: 'error', - data: { - message: 'Error while moving file' - } - })); + deferredMove.reject(409); expect(fileList.findFileEl('One.txt').length).toEqual(1); expect(notificationStub.calledOnce).toEqual(true); - expect(notificationStub.getCall(0).args[0]).toEqual('Error while moving file'); + expect(notificationStub.getCall(0).args[0]).toEqual('Could not move "One.txt"'); expect(OC.TestUtil.getImageUrl(fileList.findFileEl('One.txt').find('.thumbnail'))) .toEqual(OC.imagePath('core', 'filetypes/text.svg')); @@ -878,7 +865,7 @@ describe('OCA.Files.FileList tests', function() { name: 'testFile.txt', directory: '/current dir' }; - var $tr = fileList.add(fileData); + fileList.add(fileData); expect(fileList.findFileEl('testFile.txt').length).toEqual(1); }); it('triggers "fileActionsReady" event after update', function() { @@ -1143,69 +1130,85 @@ describe('OCA.Files.FileList tests', function() { afterEach(function() { previewLoadStub.restore(); }); - it('renders default icon for file when none provided and no preview is available', function() { + it('renders default file icon when none provided and no mime type is set', function() { var fileData = { - type: 'file', name: 'testFile.txt' }; var $tr = fileList.add(fileData); var $imgDiv = $tr.find('td.filename .thumbnail'); expect(OC.TestUtil.getImageUrl($imgDiv)).toEqual(OC.webroot + '/core/img/filetypes/file.svg'); - expect(previewLoadStub.notCalled).toEqual(true); + // tries to load preview + expect(previewLoadStub.calledOnce).toEqual(true); }); - it('renders default icon for dir when none provided and no preview is available', function() { + it('renders default icon for folder when none provided', function() { var fileData = { - type: 'dir', - name: 'test dir' + name: 'test dir', + mimetype: 'httpd/unix-directory' }; + var $tr = fileList.add(fileData); var $imgDiv = $tr.find('td.filename .thumbnail'); expect(OC.TestUtil.getImageUrl($imgDiv)).toEqual(OC.webroot + '/core/img/filetypes/folder.svg'); + // no preview since it's a directory expect(previewLoadStub.notCalled).toEqual(true); }); it('renders provided icon for file when provided', function() { - var fileData = { + var fileData = new FileInfo({ type: 'file', name: 'test file', icon: OC.webroot + '/core/img/filetypes/application-pdf.svg', mimetype: 'application/pdf' - }; + }); var $tr = fileList.add(fileData); var $imgDiv = $tr.find('td.filename .thumbnail'); expect(OC.TestUtil.getImageUrl($imgDiv)).toEqual(OC.webroot + '/core/img/filetypes/application-pdf.svg'); + // try loading preview + expect(previewLoadStub.calledOnce).toEqual(true); + }); + it('renders provided icon for file when provided', function() { + var fileData = new FileInfo({ + name: 'somefile.pdf', + icon: OC.webroot + '/core/img/filetypes/application-pdf.svg' + }); + + var $tr = fileList.add(fileData); + var $imgDiv = $tr.find('td.filename .thumbnail'); + expect(OC.TestUtil.getImageUrl($imgDiv)).toEqual(OC.webroot + '/core/img/filetypes/application-pdf.svg'); + // try loading preview + expect(previewLoadStub.calledOnce).toEqual(true); + }); + it('renders provided icon for folder when provided', function() { + var fileData = new FileInfo({ + name: 'some folder', + mimetype: 'httpd/unix-directory', + icon: OC.webroot + '/core/img/filetypes/folder-alt.svg' + }); + + var $tr = fileList.add(fileData); + var $imgDiv = $tr.find('td.filename .thumbnail'); + expect(OC.TestUtil.getImageUrl($imgDiv)).toEqual(OC.webroot + '/core/img/filetypes/folder-alt.svg'); + // do not load preview for folders expect(previewLoadStub.notCalled).toEqual(true); }); - it('renders preview when no icon was provided and preview is available', function() { + it('renders preview when no icon was provided', function() { var fileData = { type: 'file', - name: 'test file', - isPreviewAvailable: true + name: 'test file' }; var $tr = fileList.add(fileData); var $td = $tr.find('td.filename'); - expect(OC.TestUtil.getImageUrl($td.find('.thumbnail'))).toEqual(OC.webroot + '/core/img/filetypes/file.svg'); + expect(OC.TestUtil.getImageUrl($td.find('.thumbnail'))) + .toEqual(OC.webroot + '/core/img/filetypes/file.svg'); expect(previewLoadStub.calledOnce).toEqual(true); // third argument is callback previewLoadStub.getCall(0).args[0].callback(OC.webroot + '/somepath.png'); expect(OC.TestUtil.getImageUrl($td.find('.thumbnail'))).toEqual(OC.webroot + '/somepath.png'); }); - it('renders default file type icon when no icon was provided and no preview is available', function() { - var fileData = { - type: 'file', - name: 'test file', - isPreviewAvailable: false - }; - var $tr = fileList.add(fileData); - var $imgDiv = $tr.find('td.filename .thumbnail'); - expect(OC.TestUtil.getImageUrl($imgDiv)).toEqual(OC.webroot + '/core/img/filetypes/file.svg'); - expect(previewLoadStub.notCalled).toEqual(true); - }); it('does not render preview for directories', function() { var fileData = { type: 'dir', mimetype: 'httpd/unix-directory', - name: 'test dir', - isPreviewAvailable: true + name: 'test dir' }; var $tr = fileList.add(fileData); var $td = $tr.find('td.filename'); @@ -1217,7 +1220,6 @@ describe('OCA.Files.FileList tests', function() { type: 'dir', mimetype: 'httpd/unix-directory', name: 'test dir', - isPreviewAvailable: true, mountType: 'external-root' }; var $tr = fileList.add(fileData); @@ -1230,7 +1232,6 @@ describe('OCA.Files.FileList tests', function() { type: 'dir', mimetype: 'httpd/unix-directory', name: 'test dir', - isPreviewAvailable: true, mountType: 'external' }; var $tr = fileList.add(fileData); @@ -1278,75 +1279,47 @@ describe('OCA.Files.FileList tests', function() { }); }); describe('loading file list', function() { + var deferredList; + var getFolderContentsStub; + beforeEach(function() { - var data = { - status: 'success', - data: { - files: testFiles, - permissions: 31 - } - }; - fakeServer.respondWith(/\/index\.php\/apps\/files\/ajax\/list.php\?dir=%2F(subdir|anothersubdir)/, [ - 200, { - "Content-Type": "application/json" - }, - JSON.stringify(data) - ]); + deferredList = $.Deferred(); + getFolderContentsStub = sinon.stub(filesClient, 'getFolderContents').returns(deferredList.promise()); + }); + afterEach(function() { + getFolderContentsStub.restore(); }); it('fetches file list from server and renders it when reload() is called', function() { fileList.reload(); - expect(fakeServer.requests.length).toEqual(1); - var url = fakeServer.requests[0].url; - var query = url.substr(url.indexOf('?') + 1); - expect(OC.parseQueryString(query)).toEqual({'dir': '/subdir', sort: 'name', sortdirection: 'asc'}); - fakeServer.respond(); + expect(getFolderContentsStub.calledOnce).toEqual(true); + expect(getFolderContentsStub.calledWith('/subdir')).toEqual(true); + deferredList.resolve(200, [testRoot].concat(testFiles)); expect($('#fileList tr').length).toEqual(4); expect(fileList.findFileEl('One.txt').length).toEqual(1); }); it('switches dir and fetches file list when calling changeDirectory()', function() { fileList.changeDirectory('/anothersubdir'); expect(fileList.getCurrentDirectory()).toEqual('/anothersubdir'); - expect(fakeServer.requests.length).toEqual(1); - var url = fakeServer.requests[0].url; - var query = url.substr(url.indexOf('?') + 1); - expect(OC.parseQueryString(query)).toEqual({'dir': '/anothersubdir', sort: 'name', sortdirection: 'asc'}); - fakeServer.respond(); + expect(getFolderContentsStub.calledOnce).toEqual(true); + expect(getFolderContentsStub.calledWith('/anothersubdir')).toEqual(true); }); it('converts backslashes to slashes when calling changeDirectory()', function() { fileList.changeDirectory('/another\\subdir'); expect(fileList.getCurrentDirectory()).toEqual('/another/subdir'); }); it('switches to root dir when current directory does not exist', function() { - fakeServer.respondWith(/\/index\.php\/apps\/files\/ajax\/list.php\?dir=%2funexist/, [ - 404, { - "Content-Type": "application/json" - }, - '' - ]); fileList.changeDirectory('/unexist'); - fakeServer.respond(); + deferredList.reject(404); expect(fileList.getCurrentDirectory()).toEqual('/'); }); it('switches to root dir when current directory is forbidden', function() { - fakeServer.respondWith(/\/index\.php\/apps\/files\/ajax\/list.php\?dir=%2funexist/, [ - 403, { - "Content-Type": "application/json" - }, - '' - ]); fileList.changeDirectory('/unexist'); - fakeServer.respond(); + deferredList.reject(403); expect(fileList.getCurrentDirectory()).toEqual('/'); }); it('switches to root dir when current directory is unavailable', function() { - fakeServer.respondWith(/\/index\.php\/apps\/files\/ajax\/list.php\?dir=%2funexist/, [ - 500, { - "Content-Type": "application/json" - }, - '' - ]); fileList.changeDirectory('/unexist'); - fakeServer.respond(); + deferredList.reject(500); expect(fileList.getCurrentDirectory()).toEqual('/'); }); it('shows mask before loading file list then hides it at the end', function() { @@ -1355,7 +1328,7 @@ describe('OCA.Files.FileList tests', function() { fileList.changeDirectory('/anothersubdir'); expect(showMaskStub.calledOnce).toEqual(true); expect(hideMaskStub.calledOnce).toEqual(false); - fakeServer.respond(); + deferredList.resolve(200, [testRoot].concat(testFiles)); expect(showMaskStub.calledOnce).toEqual(true); expect(hideMaskStub.calledOnce).toEqual(true); showMaskStub.restore(); @@ -1365,6 +1338,7 @@ describe('OCA.Files.FileList tests', function() { var handler = sinon.stub(); $('#app-content-files').on('changeDirectory', handler); fileList.changeDirectory('/somedir'); + deferredList.resolve(200, [testRoot].concat(testFiles)); expect(handler.calledOnce).toEqual(true); expect(handler.getCall(0).args[0].dir).toEqual('/somedir'); }); @@ -1375,31 +1349,27 @@ describe('OCA.Files.FileList tests', function() { it('refreshes breadcrumb after update', function() { var setDirSpy = sinon.spy(fileList.breadcrumb, 'setDirectory'); fileList.changeDirectory('/anothersubdir'); - fakeServer.respond(); + deferredList.resolve(200, [testRoot].concat(testFiles)); expect(fileList.breadcrumb.setDirectory.calledOnce).toEqual(true); expect(fileList.breadcrumb.setDirectory.calledWith('/anothersubdir')).toEqual(true); setDirSpy.restore(); + getFolderContentsStub.restore(); }); }); describe('breadcrumb events', function() { + var deferredList; + var getFolderContentsStub; + beforeEach(function() { - var data = { - status: 'success', - data: { - files: testFiles, - permissions: 31 - } - }; - fakeServer.respondWith(/\/index\.php\/apps\/files\/ajax\/list.php\?dir=%2Fsubdir/, [ - 200, { - "Content-Type": "application/json" - }, - JSON.stringify(data) - ]); + deferredList = $.Deferred(); + getFolderContentsStub = sinon.stub(filesClient, 'getFolderContents').returns(deferredList.promise()); + }); + afterEach(function() { + getFolderContentsStub.restore(); }); it('clicking on root breadcrumb changes directory to root', function() { fileList.changeDirectory('/subdir/two/three with space/four/five'); - fakeServer.respond(); + deferredList.resolve(200, [testRoot].concat(testFiles)); var changeDirStub = sinon.stub(fileList, 'changeDirectory'); fileList.breadcrumb.$el.find('.crumb:eq(0)').trigger({type: 'click', which: 1}); @@ -1409,7 +1379,7 @@ describe('OCA.Files.FileList tests', function() { }); it('clicking on breadcrumb changes directory', function() { fileList.changeDirectory('/subdir/two/three with space/four/five'); - fakeServer.respond(); + deferredList.resolve(200, [testRoot].concat(testFiles)); var changeDirStub = sinon.stub(fileList, 'changeDirectory'); fileList.breadcrumb.$el.find('.crumb:eq(3)').trigger({type: 'click', which: 1}); @@ -1418,9 +1388,10 @@ describe('OCA.Files.FileList tests', function() { changeDirStub.restore(); }); it('dropping files on breadcrumb calls move operation', function() { - var request, query, testDir = '/subdir/two/three with space/four/five'; + var testDir = '/subdir/two/three with space/four/five'; + var moveStub = sinon.stub(filesClient, 'move').returns($.Deferred().promise()); fileList.changeDirectory(testDir); - fakeServer.respond(); + deferredList.resolve(200, [testRoot].concat(testFiles)); var $crumb = fileList.breadcrumb.$el.find('.crumb:eq(3)'); // no idea what this is but is required by the handler var ui = { @@ -1436,33 +1407,18 @@ describe('OCA.Files.FileList tests', function() { // simulate drop event fileList._onDropOnBreadCrumb(new $.Event('drop', {target: $crumb}), ui); - // will trigger two calls to move.php (first one was previous list.php) - expect(fakeServer.requests.length).toEqual(3); - - request = fakeServer.requests[1]; - expect(request.method).toEqual('POST'); - expect(request.url).toEqual(OC.webroot + '/index.php/apps/files/ajax/move.php'); - query = OC.parseQueryString(request.requestBody); - expect(query).toEqual({ - target: '/subdir/two/three with space', - dir: testDir, - file: 'One.txt' - }); - - request = fakeServer.requests[2]; - expect(request.method).toEqual('POST'); - expect(request.url).toEqual(OC.webroot + '/index.php/apps/files/ajax/move.php'); - query = OC.parseQueryString(request.requestBody); - expect(query).toEqual({ - target: '/subdir/two/three with space', - dir: testDir, - file: 'Two.jpg' - }); + expect(moveStub.callCount).toEqual(2); + expect(moveStub.getCall(0).args[0]).toEqual(testDir + '/One.txt'); + expect(moveStub.getCall(0).args[1]).toEqual('/subdir/two/three with space/One.txt'); + expect(moveStub.getCall(1).args[0]).toEqual(testDir + '/Two.jpg'); + expect(moveStub.getCall(1).args[1]).toEqual('/subdir/two/three with space/Two.jpg'); + moveStub.restore(); }); it('dropping files on same dir breadcrumb does nothing', function() { var testDir = '/subdir/two/three with space/four/five'; + var moveStub = sinon.stub(filesClient, 'move').returns($.Deferred().promise()); fileList.changeDirectory(testDir); - fakeServer.respond(); + deferredList.resolve(200, [testRoot].concat(testFiles)); var $crumb = fileList.breadcrumb.$el.find('.crumb:last'); // no idea what this is but is required by the handler var ui = { @@ -1479,21 +1435,26 @@ describe('OCA.Files.FileList tests', function() { fileList._onDropOnBreadCrumb(new $.Event('drop', {target: $crumb}), ui); // no extra server request - expect(fakeServer.requests.length).toEqual(1); + expect(moveStub.notCalled).toEqual(true); }); }); describe('Download Url', function() { it('returns correct download URL for single files', function() { - expect(fileList.getDownloadUrl('some file.txt')).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=some%20file.txt'); - expect(fileList.getDownloadUrl('some file.txt', '/anotherpath/abc')).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fanotherpath%2Fabc&files=some%20file.txt'); + expect(fileList.getDownloadUrl('some file.txt')) + .toEqual(OC.webroot + '/remote.php/webdav/subdir/some%20file.txt'); + expect(fileList.getDownloadUrl('some file.txt', '/anotherpath/abc')) + .toEqual(OC.webroot + '/remote.php/webdav/anotherpath/abc/some%20file.txt'); $('#dir').val('/'); - expect(fileList.getDownloadUrl('some file.txt')).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2F&files=some%20file.txt'); + expect(fileList.getDownloadUrl('some file.txt')) + .toEqual(OC.webroot + '/remote.php/webdav/some%20file.txt'); }); it('returns correct download URL for multiple files', function() { - expect(fileList.getDownloadUrl(['a b c.txt', 'd e f.txt'])).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=%5B%22a%20b%20c.txt%22%2C%22d%20e%20f.txt%22%5D'); + expect(fileList.getDownloadUrl(['a b c.txt', 'd e f.txt'])) + .toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=%5B%22a%20b%20c.txt%22%2C%22d%20e%20f.txt%22%5D'); }); it('returns the correct ajax URL', function() { - expect(fileList.getAjaxUrl('test', {a:1, b:'x y'})).toEqual(OC.webroot + '/index.php/apps/files/ajax/test.php?a=1&b=x%20y'); + expect(fileList.getAjaxUrl('test', {a:1, b:'x y'})) + .toEqual(OC.webroot + '/index.php/apps/files/ajax/test.php?a=1&b=x%20y'); }); }); describe('File selection', function() { @@ -1672,24 +1633,17 @@ describe('OCA.Files.FileList tests', function() { }); it('Selection is cleared when switching dirs', function() { $('.select-all').click(); - var data = { - status: 'success', - data: { - files: testFiles, - permissions: 31 - } - }; - fakeServer.respondWith(/\/index\.php\/apps\/files\/ajax\/list.php/, [ - 200, { - "Content-Type": "application/json" - }, - JSON.stringify(data) - ] - ); + var deferredList = $.Deferred(); + var getFolderContentsStub = sinon.stub(filesClient, 'getFolderContents').returns(deferredList.promise()); + fileList.changeDirectory('/'); - fakeServer.respond(); + + deferredList.resolve(200, [testRoot].concat(testFiles)); + expect($('.select-all').prop('checked')).toEqual(false); expect(_.pluck(fileList.getSelectedFiles(), 'name')).toEqual([]); + + getFolderContentsStub.restore(); }); it('getSelectedFiles returns the selected files even when they are on the next page', function() { var selectedFiles; @@ -1796,6 +1750,12 @@ describe('OCA.Files.FileList tests', function() { etag: '456', permissions: OC.PERMISSION_ALL }); + expect(files[0].id).toEqual(1); + expect(files[0].name).toEqual('One.txt'); + expect(files[1].id).toEqual(3); + expect(files[1].name).toEqual('Three.pdf'); + expect(files[2].id).toEqual(4); + expect(files[2].name).toEqual('somedir'); }); it('Removing a file removes it from the selection', function() { fileList.remove('Three.pdf'); @@ -1824,7 +1784,6 @@ describe('OCA.Files.FileList tests', function() { }); describe('Download', function() { it('Opens download URL when clicking "Download"', function() { - var redirectStub = sinon.stub(OC, 'redirect'); $('.selectedActions .download').click(); expect(redirectStub.calledOnce).toEqual(true); expect(redirectStub.getCall(0).args[0]).toContain(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=%5B%22One.txt%22%2C%22Three.pdf%22%2C%22somedir%22%5D'); @@ -1833,54 +1792,53 @@ describe('OCA.Files.FileList tests', function() { it('Downloads root folder when all selected in root folder', function() { $('#dir').val('/'); $('.select-all').click(); - var redirectStub = sinon.stub(OC, 'redirect'); $('.selectedActions .download').click(); expect(redirectStub.calledOnce).toEqual(true); expect(redirectStub.getCall(0).args[0]).toContain(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2F&files='); - redirectStub.restore(); }); it('Downloads parent folder when all selected in subfolder', function() { $('.select-all').click(); - var redirectStub = sinon.stub(OC, 'redirect'); $('.selectedActions .download').click(); expect(redirectStub.calledOnce).toEqual(true); expect(redirectStub.getCall(0).args[0]).toContain(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2F&files=subdir'); - redirectStub.restore(); }); }); describe('Delete', function() { + var deleteStub, deferredDelete; + beforeEach(function() { + deferredDelete = $.Deferred(); + deleteStub = sinon.stub(filesClient, 'remove').returns(deferredDelete.promise()); + }); + afterEach(function() { + deleteStub.restore(); + }); it('Deletes selected files when "Delete" clicked', function() { - var request; $('.selectedActions .delete-selected').click(); - expect(fakeServer.requests.length).toEqual(1); - request = fakeServer.requests[0]; - expect(request.url).toEqual(OC.webroot + '/index.php/apps/files/ajax/delete.php'); - expect(OC.parseQueryString(request.requestBody)) - .toEqual({'dir': '/subdir', files: '["One.txt","Three.pdf","somedir"]'}); - fakeServer.requests[0].respond( - 200, - { 'Content-Type': 'application/json' }, - JSON.stringify({status: 'success'}) - ); + + expect(deleteStub.callCount).toEqual(3); + expect(deleteStub.getCall(0).args[0]).toEqual('/subdir/One.txt'); + expect(deleteStub.getCall(1).args[0]).toEqual('/subdir/Three.pdf'); + expect(deleteStub.getCall(2).args[0]).toEqual('/subdir/somedir'); + + deferredDelete.resolve(204); + expect(fileList.findFileEl('One.txt').length).toEqual(0); expect(fileList.findFileEl('Three.pdf').length).toEqual(0); expect(fileList.findFileEl('somedir').length).toEqual(0); expect(fileList.findFileEl('Two.jpg').length).toEqual(1); }); it('Deletes all files when all selected when "Delete" clicked', function() { - var request; $('.select-all').click(); $('.selectedActions .delete-selected').click(); - expect(fakeServer.requests.length).toEqual(1); - request = fakeServer.requests[0]; - expect(request.url).toEqual(OC.webroot + '/index.php/apps/files/ajax/delete.php'); - expect(OC.parseQueryString(request.requestBody)) - .toEqual({'dir': '/subdir', allfiles: 'true'}); - fakeServer.requests[0].respond( - 200, - { 'Content-Type': 'application/json' }, - JSON.stringify({status: 'success'}) - ); + + expect(deleteStub.callCount).toEqual(4); + expect(deleteStub.getCall(0).args[0]).toEqual('/subdir/One.txt'); + expect(deleteStub.getCall(1).args[0]).toEqual('/subdir/Two.jpg'); + expect(deleteStub.getCall(2).args[0]).toEqual('/subdir/Three.pdf'); + expect(deleteStub.getCall(3).args[0]).toEqual('/subdir/somedir'); + + deferredDelete.resolve(204); + expect(fileList.isEmpty).toEqual(true); }); }); @@ -2118,30 +2076,6 @@ describe('OCA.Files.FileList tests', function() { }); }); describe('Sorting files', function() { - it('Sorts by name by default', function() { - fileList.reload(); - expect(fakeServer.requests.length).toEqual(1); - var url = fakeServer.requests[0].url; - var query = OC.parseQueryString(url.substr(url.indexOf('?') + 1)); - expect(query.sort).toEqual('name'); - expect(query.sortdirection).toEqual('asc'); - }); - it('Reloads file list with a different sort when clicking on column header of unsorted column', function() { - fileList.$el.find('.column-size .columntitle').click(); - expect(fakeServer.requests.length).toEqual(1); - var url = fakeServer.requests[0].url; - var query = OC.parseQueryString(url.substr(url.indexOf('?') + 1)); - expect(query.sort).toEqual('size'); - expect(query.sortdirection).toEqual('desc'); - }); - it('Toggles sort direction when clicking on already sorted column', function() { - fileList.$el.find('.column-name .columntitle').click(); - expect(fakeServer.requests.length).toEqual(1); - var url = fakeServer.requests[0].url; - var query = OC.parseQueryString(url.substr(url.indexOf('?') + 1)); - expect(query.sort).toEqual('name'); - expect(query.sortdirection).toEqual('desc'); - }); it('Toggles the sort indicator when clicking on a column header', function() { var ASC_CLASS = fileList.SORT_INDICATOR_ASC_CLASS; var DESC_CLASS = fileList.SORT_INDICATOR_DESC_CLASS; @@ -2191,28 +2125,15 @@ describe('OCA.Files.FileList tests', function() { it('Uses correct sort comparator when inserting files', function() { testFiles.sort(OCA.Files.FileList.Comparators.size); testFiles.reverse(); //default is descending - // this will make it reload the testFiles with the correct sorting + fileList.setFiles(testFiles); fileList.$el.find('.column-size .columntitle').click(); - expect(fakeServer.requests.length).toEqual(1); - fakeServer.requests[0].respond( - 200, - { 'Content-Type': 'application/json' }, - JSON.stringify({ - status: 'success', - data: { - files: testFiles, - permissions: 31 - } - }) - ); - var newFileData = { + var newFileData = new FileInfo({ id: 999, - type: 'file', name: 'new file.txt', mimetype: 'text/plain', size: 40001, etag: '999' - }; + }); fileList.add(newFileData); expect(fileList.findFileEl('Three.pdf').index()).toEqual(0); expect(fileList.findFileEl('new file.txt').index()).toEqual(1); @@ -2224,41 +2145,18 @@ describe('OCA.Files.FileList tests', function() { }); it('Uses correct reversed sort comparator when inserting files', function() { testFiles.sort(OCA.Files.FileList.Comparators.size); - // this will make it reload the testFiles with the correct sorting + fileList.setFiles(testFiles); fileList.$el.find('.column-size .columntitle').click(); - expect(fakeServer.requests.length).toEqual(1); - fakeServer.requests[0].respond( - 200, - { 'Content-Type': 'application/json' }, - JSON.stringify({ - status: 'success', - data: { - files: testFiles, - permissions: 31 - } - }) - ); + // reverse sort fileList.$el.find('.column-size .columntitle').click(); - fakeServer.requests[1].respond( - 200, - { 'Content-Type': 'application/json' }, - JSON.stringify({ - status: 'success', - data: { - files: testFiles, - permissions: 31 - } - }) - ); - var newFileData = { + var newFileData = new FileInfo({ id: 999, - type: 'file', name: 'new file.txt', mimetype: 'text/plain', size: 40001, etag: '999' - }; + }); fileList.add(newFileData); expect(fileList.findFileEl('One.txt').index()).toEqual(0); expect(fileList.findFileEl('somedir').index()).toEqual(1); @@ -2290,87 +2188,96 @@ describe('OCA.Files.FileList tests', function() { }); describe('create file', function() { var deferredCreate; + var deferredInfo; + var createStub; + var getFileInfoStub; beforeEach(function() { deferredCreate = $.Deferred(); + deferredInfo = $.Deferred(); + createStub = sinon.stub(filesClient, 'putFileContents') + .returns(deferredCreate.promise()); + getFileInfoStub = sinon.stub(filesClient, 'getFileInfo') + .returns(deferredInfo.promise()); + }); + afterEach(function() { + createStub.restore(); + getFileInfoStub.restore(); }); it('creates file with given name and adds it to the list', function() { - var deferred = fileList.createFile('test file.txt'); - var successStub = sinon.stub(); - var failureStub = sinon.stub(); + fileList.createFile('test.txt'); - deferred.done(successStub); - deferred.fail(failureStub); + expect(createStub.calledOnce).toEqual(true); + expect(createStub.getCall(0).args[0]).toEqual('/subdir/test.txt'); + expect(createStub.getCall(0).args[2]).toEqual({ + contentType: 'text/plain', + overwrite: true + }); - expect(fakeServer.requests.length).toEqual(1); - expect(fakeServer.requests[0].url).toEqual(OC.generateUrl('/apps/files/ajax/newfile.php')); + deferredCreate.resolve(200); - var query = fakeServer.requests[0].requestBody; - expect(OC.parseQueryString(query)).toEqual({ - dir: '/subdir', - filename: 'test file.txt' - }); + expect(getFileInfoStub.calledOnce).toEqual(true); + expect(getFileInfoStub.getCall(0).args[0]).toEqual('/subdir/test.txt'); - fakeServer.requests[0].respond( + deferredInfo.resolve( 200, - { 'Content-Type': 'application/json' }, - JSON.stringify({ - status: 'success', - data: { - path: '/subdir', - name: 'test file.txt', - mimetype: 'text/plain' - } + new FileInfo({ + path: '/subdir', + name: 'test.txt', + mimetype: 'text/plain' }) ); - var $tr = fileList.findFileEl('test file.txt'); + var $tr = fileList.findFileEl('test.txt'); expect($tr.length).toEqual(1); expect($tr.attr('data-mime')).toEqual('text/plain'); - - expect(successStub.calledOnce).toEqual(true); - expect(failureStub.notCalled).toEqual(true); }); // TODO: error cases // TODO: unique name cases }); - describe('create directory', function() { - it('creates directory with given name and adds it to the list', function() { - var deferred = fileList.createDirectory('test directory'); - var successStub = sinon.stub(); - var failureStub = sinon.stub(); - - deferred.done(successStub); - deferred.fail(failureStub); - - expect(fakeServer.requests.length).toEqual(1); - expect(fakeServer.requests[0].url).toEqual(OC.generateUrl('/apps/files/ajax/newfolder.php')); - var query = fakeServer.requests[0].requestBody; - expect(OC.parseQueryString(query)).toEqual({ - dir: '/subdir', - foldername: 'test directory' - }); + describe('create folder', function() { + var deferredCreate; + var deferredInfo; + var createStub; + var getFileInfoStub; + + beforeEach(function() { + deferredCreate = $.Deferred(); + deferredInfo = $.Deferred(); + createStub = sinon.stub(filesClient, 'createDirectory') + .returns(deferredCreate.promise()); + getFileInfoStub = sinon.stub(filesClient, 'getFileInfo') + .returns(deferredInfo.promise()); + }); + afterEach(function() { + createStub.restore(); + getFileInfoStub.restore(); + }); + + it('creates folder with given name and adds it to the list', function() { + fileList.createDirectory('sub dir'); + + expect(createStub.calledOnce).toEqual(true); + expect(createStub.getCall(0).args[0]).toEqual('/subdir/sub dir'); - fakeServer.requests[0].respond( + deferredCreate.resolve(200); + + expect(getFileInfoStub.calledOnce).toEqual(true); + expect(getFileInfoStub.getCall(0).args[0]).toEqual('/subdir/sub dir'); + + deferredInfo.resolve( 200, - { 'Content-Type': 'application/json' }, - JSON.stringify({ - status: 'success', - data: { - path: '/subdir', - name: 'test directory', - mimetype: 'httpd/unix-directory' - } + new FileInfo({ + path: '/subdir', + name: 'sub dir', + mimetype: 'httpd/unix-directory' }) ); - var $tr = fileList.findFileEl('test directory'); + var $tr = fileList.findFileEl('sub dir'); expect($tr.length).toEqual(1); expect($tr.attr('data-mime')).toEqual('httpd/unix-directory'); - - expect(successStub.calledOnce).toEqual(true); - expect(failureStub.notCalled).toEqual(true); }); // TODO: error cases // TODO: unique name cases @@ -2481,14 +2388,14 @@ describe('OCA.Files.FileList tests', function() { expect(ev.result).not.toEqual(false); }); it('drop on a folder row inside the table triggers upload to target folder', function() { - var ev, formData; + var ev; ev = dropOn(fileList.findFileEl('somedir').find('td:eq(2)'), uploadData); expect(ev.result).not.toEqual(false); expect(uploadData.targetDir).toEqual('/subdir/somedir'); }); it('drop on a breadcrumb inside the table triggers upload to target folder', function() { - var ev, formData; + var ev; fileList.changeDirectory('a/b/c/d'); ev = dropOn(fileList.$el.find('.crumb:eq(2)'), uploadData); @@ -2497,32 +2404,50 @@ describe('OCA.Files.FileList tests', function() { }); }); }); - describe('Handeling errors', function () { - var redirectStub; + describe('Handling errors', function () { + var deferredList; + var getFolderContentsStub; - beforeEach(function () { - redirectStub = sinon.stub(OC, 'redirect'); - - fileList = new OCA.Files.FileList($('#app-content-files')); + beforeEach(function() { + deferredList = $.Deferred(); + getFolderContentsStub = + sinon.stub(filesClient, 'getFolderContents'); + getFolderContentsStub.onCall(0).returns(deferredList.promise()); + getFolderContentsStub.onCall(1).returns($.Deferred().promise()); + fileList.reload(); }); - afterEach(function () { + afterEach(function() { + getFolderContentsStub.restore(); fileList = undefined; + }); + it('redirects to files app in case of auth error', function () { + deferredList.reject(401, 'Authentication error'); - redirectStub.restore(); + expect(redirectStub.calledOnce).toEqual(true); + expect(redirectStub.getCall(0).args[0]).toEqual(OC.webroot + '/index.php/apps/files'); + expect(getFolderContentsStub.calledOnce).toEqual(true); }); - it('reloads the page on authentication errors', function () { - fileList.reload(); - fakeServer.requests[0].respond( - 200, - { 'Content-Type': 'application/json' }, - JSON.stringify({ - status: 'error', - data: { - 'error': 'authentication_error' - } - }) - ); - expect(redirectStub.calledWith(OC.generateUrl('apps/files'))).toEqual(true); + it('redirects to root folder in case of forbidden access', function () { + deferredList.reject(403); + + expect(fileList.getCurrentDirectory()).toEqual('/'); + expect(getFolderContentsStub.calledTwice).toEqual(true); + }); + it('redirects to root folder and shows notification in case of internal server error', function () { + expect(notificationStub.notCalled).toEqual(true); + deferredList.reject(500); + + expect(fileList.getCurrentDirectory()).toEqual('/'); + expect(getFolderContentsStub.calledTwice).toEqual(true); + expect(notificationStub.calledOnce).toEqual(true); + }); + it('redirects to root folder and shows notification in case of storage not available', function () { + expect(notificationStub.notCalled).toEqual(true); + deferredList.reject(503, 'Storage not available'); + + expect(fileList.getCurrentDirectory()).toEqual('/'); + expect(getFolderContentsStub.calledTwice).toEqual(true); + expect(notificationStub.calledOnce).toEqual(true); }); }); describe('showFileBusyState', function() { diff --git a/apps/files/tests/js/filesSpec.js b/apps/files/tests/js/filesSpec.js index 30e6675c155..b7627d59fdf 100644 --- a/apps/files/tests/js/filesSpec.js +++ b/apps/files/tests/js/filesSpec.js @@ -76,11 +76,11 @@ describe('OCA.Files.Files tests', function() { describe('getDownloadUrl', function() { it('returns the ajax download URL when filename and dir specified', function() { var url = Files.getDownloadUrl('test file.txt', '/subdir'); - expect(url).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=test%20file.txt'); + expect(url).toEqual(OC.webroot + '/remote.php/webdav/subdir/test%20file.txt'); }); - it('returns the ajax download URL when filename and root dir specific', function() { + it('returns the webdav download URL when filename and root dir specified', function() { var url = Files.getDownloadUrl('test file.txt', '/'); - expect(url).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2F&files=test%20file.txt'); + expect(url).toEqual(OC.webroot + '/remote.php/webdav/test%20file.txt'); }); it('returns the ajax download URL when multiple files specified', function() { var url = Files.getDownloadUrl(['test file.txt', 'abc.txt'], '/subdir'); diff --git a/apps/files_external/appinfo/register_command.php b/apps/files_external/appinfo/register_command.php new file mode 100644 index 00000000000..a436dc95005 --- /dev/null +++ b/apps/files_external/appinfo/register_command.php @@ -0,0 +1,34 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + + +use OCA\Files_External\Command\ListCommand; + +$userManager = OC::$server->getUserManager(); +$userSession = OC::$server->getUserSession(); + +$app = \OC_Mount_Config::$app; + +$globalStorageService = $app->getContainer()->query('\OCA\Files_external\Service\GlobalStoragesService'); +$userStorageService = $app->getContainer()->query('\OCA\Files_external\Service\UserStoragesService'); + +/** @var Symfony\Component\Console\Application $application */ +$application->add(new ListCommand($globalStorageService, $userStorageService, $userSession, $userManager)); diff --git a/apps/files_external/command/listcommand.php b/apps/files_external/command/listcommand.php new file mode 100644 index 00000000000..4c027ffcb8e --- /dev/null +++ b/apps/files_external/command/listcommand.php @@ -0,0 +1,231 @@ +<?php +/** + * @author Robin Appelman <icewind@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Files_External\Command; + +use OC\Core\Command\Base; +use OCA\Files_external\Lib\StorageConfig; +use OCA\Files_external\Service\GlobalStoragesService; +use OCA\Files_external\Service\UserStoragesService; +use OCP\IUserManager; +use OCP\IUserSession; +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Helper\Table; +use Symfony\Component\Console\Helper\TableHelper; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; + +class ListCommand extends Base { + /** + * @var GlobalStoragesService + */ + private $globalService; + + /** + * @var UserStoragesService + */ + private $userService; + + /** + * @var IUserSession + */ + private $userSession; + + /** + * @var IUserManager + */ + private $userManager; + + function __construct(GlobalStoragesService $globalService, UserStoragesService $userService, IUserSession $userSession, IUserManager $userManager) { + parent::__construct(); + $this->globalService = $globalService; + $this->userService = $userService; + $this->userSession = $userSession; + $this->userManager = $userManager; + } + + protected function configure() { + $this + ->setName('files_external:list') + ->setDescription('List configured mounts') + ->addArgument( + 'user_id', + InputArgument::OPTIONAL, + '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( + 'full', + null, + InputOption::VALUE_NONE, + 'don\'t truncate long values in table output' + ); + parent::configure(); + } + + protected function execute(InputInterface $input, OutputInterface $output) { + $userId = $input->getArgument('user_id'); + if (!empty($userId)) { + $user = $this->userManager->get($userId); + if (is_null($user)) { + $output->writeln("<error>user $userId not found</error>"); + return; + } + $this->userSession->setUser($user); + $storageService = $this->userService; + } else { + $storageService = $this->globalService; + } + + /** @var $mounts StorageConfig[] */ + $mounts = $storageService->getAllStorages(); + + if (count($mounts) === 0) { + if ($userId) { + $output->writeln("<info>No mounts configured by $userId</info>"); + } else { + $output->writeln("<info>No admin mounts configured</info>"); + } + return; + } + + $headers = ['Mount ID', 'Mount Point', 'Storage', 'Authentication Type', 'Configuration', 'Options']; + + if (!$userId) { + $headers[] = 'Applicable Users'; + $headers[] = 'Applicable Groups'; + } + + if (!$input->getOption('show-password')) { + $hideKeys = ['password', 'refresh_token', 'token', 'client_secret', 'public_key', 'private_key']; + foreach ($mounts as $mount) { + $config = $mount->getBackendOptions(); + foreach ($config as $key => $value) { + if (in_array($key, $hideKeys)) { + $mount->setBackendOption($key, '***'); + } + } + } + } + + $outputType = $input->getOption('output'); + if ($outputType === self::OUTPUT_FORMAT_JSON || $outputType === self::OUTPUT_FORMAT_JSON_PRETTY) { + $keys = array_map(function ($header) { + return strtolower(str_replace(' ', '_', $header)); + }, $headers); + + $pairs = array_map(function (StorageConfig $config) use ($keys, $userId) { + $values = [ + $config->getId(), + $config->getMountPoint(), + $config->getBackend()->getStorageClass(), + $config->getAuthMechanism()->getScheme(), + $config->getBackendOptions(), + $config->getMountOptions() + ]; + if (!$userId) { + $values[] = $config->getApplicableUsers(); + $values[] = $config->getApplicableGroups(); + } + + return array_combine($keys, $values); + }, $mounts); + if ($outputType === self::OUTPUT_FORMAT_JSON) { + $output->writeln(json_encode(array_values($pairs))); + } else { + $output->writeln(json_encode(array_values($pairs), JSON_PRETTY_PRINT)); + } + } else { + $full = $input->getOption('full'); + $defaultMountOptions = [ + 'encrypt' => true, + 'previews' => true, + 'filesystem_check_changes' => 1 + ]; + $rows = array_map(function (StorageConfig $config) use ($userId, $defaultMountOptions, $full) { + $storageConfig = $config->getBackendOptions(); + $keys = array_keys($storageConfig); + $values = array_values($storageConfig); + + if (!$full) { + $values = array_map(function ($value) { + if (is_string($value) && strlen($value) > 32) { + return substr($value, 0, 6) . '...' . substr($value, -6, 6); + } else { + return $value; + } + }, $values); + } + + $configStrings = array_map(function ($key, $value) { + return $key . ': ' . json_encode($value); + }, $keys, $values); + $configString = implode(', ', $configStrings); + + $mountOptions = $config->getMountOptions(); + // hide defaults + foreach ($mountOptions as $key => $value) { + if ($value === $defaultMountOptions[$key]) { + unset($mountOptions[$key]); + } + } + $keys = array_keys($mountOptions); + $values = array_values($mountOptions); + + $optionsStrings = array_map(function ($key, $value) { + return $key . ': ' . json_encode($value); + }, $keys, $values); + $optionsString = implode(', ', $optionsStrings); + + $values = [ + $config->getId(), + $config->getMountPoint(), + $config->getBackend()->getText(), + $config->getAuthMechanism()->getText(), + $configString, + $optionsString + ]; + + if (!$userId) { + $applicableUsers = implode(', ', $config->getApplicableUsers()); + $applicableGroups = implode(', ', $config->getApplicableGroups()); + if ($applicableUsers === '' && $applicableGroups === '') { + $applicableUsers = 'All'; + } + $values[] = $applicableUsers; + $values[] = $applicableGroups; + } + + return $values; + }, $mounts); + + $table = new Table($output); + $table->setHeaders($headers); + $table->setRows($rows); + $table->render(); + } + } +} diff --git a/apps/files_external/js/app.js b/apps/files_external/js/app.js index bf853f926dc..1bff3014bd6 100644 --- a/apps/files_external/js/app.js +++ b/apps/files_external/js/app.js @@ -54,7 +54,7 @@ OCA.External.App = { // folder in the files app instead of opening it directly fileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function (filename, context) { OCA.Files.App.setActiveView('files', {silent: true}); - OCA.Files.App.fileList.changeDirectory(context.$file.attr('data-path') + '/' + filename, true, true); + OCA.Files.App.fileList.changeDirectory(OC.joinPaths(context.$file.attr('data-path'), filename), true, true); }); fileActions.setDefault('dir', 'Open'); return fileActions; diff --git a/apps/files_external/l10n/de.js b/apps/files_external/l10n/de.js index a51cc52a247..19468ead63f 100644 --- a/apps/files_external/l10n/de.js +++ b/apps/files_external/l10n/de.js @@ -70,6 +70,7 @@ OC.L10N.register( "SMB / CIFS using OC login" : "SMB / CIFS mit OC-Login", "Username as share" : "Benutzername als Freigabe", "OpenStack Object Storage" : "Openstack-Objektspeicher", + "Service name" : "Service Name", "<b>Note:</b> " : "<b>Hinweis:</b> ", "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Hinweis:</b> Die cURL-Unterstützung von PHP ist nicht aktiviert oder installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich zur Installation an Deinen Systemadministrator.", "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Hinweis:</b> Die FTP Unterstützung von PHP ist nicht aktiviert oder installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich sich zur Installation an Deinen Systemadministrator.", @@ -87,6 +88,7 @@ OC.L10N.register( "Advanced settings" : "Erweiterte Einstellungen", "Delete" : "Löschen", "Add storage" : "Speicher hinzufügen", + "Allow users to mount external storage" : "Benutzern erlauben, externen Speicher einzubinden", "Allow users to mount the following external storage" : "Benutzern erlauben, den oder die folgenden externen Speicher einzubinden:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/de.json b/apps/files_external/l10n/de.json index 41ecaad2594..fa9c7068e7b 100644 --- a/apps/files_external/l10n/de.json +++ b/apps/files_external/l10n/de.json @@ -68,6 +68,7 @@ "SMB / CIFS using OC login" : "SMB / CIFS mit OC-Login", "Username as share" : "Benutzername als Freigabe", "OpenStack Object Storage" : "Openstack-Objektspeicher", + "Service name" : "Service Name", "<b>Note:</b> " : "<b>Hinweis:</b> ", "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Hinweis:</b> Die cURL-Unterstützung von PHP ist nicht aktiviert oder installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich zur Installation an Deinen Systemadministrator.", "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Hinweis:</b> Die FTP Unterstützung von PHP ist nicht aktiviert oder installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich sich zur Installation an Deinen Systemadministrator.", @@ -85,6 +86,7 @@ "Advanced settings" : "Erweiterte Einstellungen", "Delete" : "Löschen", "Add storage" : "Speicher hinzufügen", + "Allow users to mount external storage" : "Benutzern erlauben, externen Speicher einzubinden", "Allow users to mount the following external storage" : "Benutzern erlauben, den oder die folgenden externen Speicher einzubinden:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/lt_LT.js b/apps/files_external/l10n/lt_LT.js index b6d334d792d..78d03a865f2 100644 --- a/apps/files_external/l10n/lt_LT.js +++ b/apps/files_external/l10n/lt_LT.js @@ -1,6 +1,7 @@ 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į.", "External storage" : "Išorinė saugykla", "Personal" : "Asmeniniai", "Grant access" : "Suteikti priėjimą", diff --git a/apps/files_external/l10n/lt_LT.json b/apps/files_external/l10n/lt_LT.json index f1c46b145ee..fcb1f1f39bd 100644 --- a/apps/files_external/l10n/lt_LT.json +++ b/apps/files_external/l10n/lt_LT.json @@ -1,4 +1,5 @@ { "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į.", "External storage" : "Išorinė saugykla", "Personal" : "Asmeniniai", "Grant access" : "Suteikti priėjimą", diff --git a/apps/files_external/l10n/tr.js b/apps/files_external/l10n/tr.js index 619e5975ed8..9d46012454b 100644 --- a/apps/files_external/l10n/tr.js +++ b/apps/files_external/l10n/tr.js @@ -16,6 +16,7 @@ OC.L10N.register( "Not permitted to use authentication mechanism \"%s\"" : "\"%s\" kimlik doğrulama mekanizmasına izin verilmiyor", "Unsatisfied backend parameters" : "Yetersiz arka uç parametreleri", "Unsatisfied authentication mechanism parameters" : "Yetersiz kimlik doğrulama mekanizması parametreleri", + "Insufficient data: %s" : "Yetersiz veri: %s", "Personal" : "Kişisel", "System" : "Sistem", "Grant access" : "Erişimi sağla", @@ -101,6 +102,7 @@ OC.L10N.register( "Advanced settings" : "Gelişmiş ayarlar", "Delete" : "Sil", "Add storage" : "Depo ekle", + "Allow users to mount external storage" : "Kullanıcılara harici depolama bağlama izin ver", "Allow users to mount the following external storage" : "Kullanıcıların aşağıdaki harici depolamayı bağlamalarına izin ver" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files_external/l10n/tr.json b/apps/files_external/l10n/tr.json index cb315a333c2..17c76b1916e 100644 --- a/apps/files_external/l10n/tr.json +++ b/apps/files_external/l10n/tr.json @@ -14,6 +14,7 @@ "Not permitted to use authentication mechanism \"%s\"" : "\"%s\" kimlik doğrulama mekanizmasına izin verilmiyor", "Unsatisfied backend parameters" : "Yetersiz arka uç parametreleri", "Unsatisfied authentication mechanism parameters" : "Yetersiz kimlik doğrulama mekanizması parametreleri", + "Insufficient data: %s" : "Yetersiz veri: %s", "Personal" : "Kişisel", "System" : "Sistem", "Grant access" : "Erişimi sağla", @@ -99,6 +100,7 @@ "Advanced settings" : "Gelişmiş ayarlar", "Delete" : "Sil", "Add storage" : "Depo ekle", + "Allow users to mount external storage" : "Kullanıcılara harici depolama bağlama izin ver", "Allow users to mount the following external storage" : "Kullanıcıların aşağıdaki harici depolamayı bağlamalarına izin ver" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files_external/tests/env/start-webdav-ownCloud.sh b/apps/files_external/tests/env/start-webdav-ownCloud.sh index 6e3904f2bad..f04616d4991 100755 --- a/apps/files_external/tests/env/start-webdav-ownCloud.sh +++ b/apps/files_external/tests/env/start-webdav-ownCloud.sh @@ -62,7 +62,9 @@ while ! (nc -c -w 1 ${host} 80 </dev/null >&/dev/null \ fi done echo -sleep 1 + +# wait at least 5 more seconds - sometimes the webserver still needs some additional time +sleep 5 cat > $thisFolder/config.webdav.php <<DELIM <?php diff --git a/apps/files_sharing/ajax/list.php b/apps/files_sharing/ajax/list.php deleted file mode 100644 index c7f0bde5d4a..00000000000 --- a/apps/files_sharing/ajax/list.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php -/** - * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Lukas Reschke <lukas@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Roeland Jago Douma <rullzer@owncloud.com> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Vincent Petry <pvince81@owncloud.com> - * - * @copyright Copyright (c) 2015, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * - */ - -OCP\JSON::checkAppEnabled('files_sharing'); - -if(!isset($_GET['t'])){ - \OC_Response::setStatus(\OC_Response::STATUS_BAD_REQUEST); - \OCP\Util::writeLog('core-preview', 'No token parameter was passed', \OCP\Util::DEBUG); - exit; -} - -$token = $_GET['t']; - -$password = null; -if (isset($_POST['password'])) { - $password = $_POST['password']; -} - -$relativePath = null; -if (isset($_GET['dir'])) { - $relativePath = $_GET['dir']; -} - -$sortAttribute = isset( $_GET['sort'] ) ? $_GET['sort'] : 'name'; -$sortDirection = isset( $_GET['sortdirection'] ) ? ($_GET['sortdirection'] === 'desc') : false; - -$data = \OCA\Files_Sharing\Helper::setupFromToken($token, $relativePath, $password); - -$linkItem = $data['linkItem']; -// Load the files -$dir = $data['realPath']; - -$dir = \OC\Files\Filesystem::normalizePath($dir); -if (!\OC\Files\Filesystem::is_dir($dir . '/')) { - \OC_Response::setStatus(\OC_Response::STATUS_NOT_FOUND); - \OCP\JSON::error(array('success' => false)); - exit(); -} - -$data = array(); - -// make filelist -$files = \OCA\Files\Helper::getFiles($dir, $sortAttribute, $sortDirection); - -$formattedFiles = array(); -foreach ($files as $file) { - $entry = \OCA\Files\Helper::formatFileInfo($file); - // for now - unset($entry['directory']); - // do not disclose share owner - unset($entry['shareOwner']); - // do not disclose if something is a remote shares - unset($entry['mountType']); - unset($entry['icon']); - $entry['permissions'] = \OCP\Constants::PERMISSION_READ; - $formattedFiles[] = $entry; -} - -$data['directory'] = $relativePath; -$data['files'] = $formattedFiles; -$data['dirToken'] = $linkItem['token']; - -$permissions = $linkItem['permissions']; - -// if globally disabled -if (\OC::$server->getAppConfig()->getValue('core', 'shareapi_allow_public_upload', 'yes') === 'no') { - // only allow reading - $permissions = \OCP\Constants::PERMISSION_READ; -} - -$data['permissions'] = $permissions; - -OCP\JSON::success(array('data' => $data)); diff --git a/apps/files_sharing/api/local.php b/apps/files_sharing/api/local.php index bb5136a0c99..aaafafb269f 100644 --- a/apps/files_sharing/api/local.php +++ b/apps/files_sharing/api/local.php @@ -233,6 +233,7 @@ class Local { if (\OC::$server->getPreviewManager()->isMimeSupported($share['mimetype'])) { $share['isPreviewAvailable'] = true; } + unset($share['path']); } } $result = new \OC_OCS_Result($shares); diff --git a/apps/files_sharing/js/app.js b/apps/files_sharing/js/app.js index 3168e930829..af198208de2 100644 --- a/apps/files_sharing/js/app.js +++ b/apps/files_sharing/js/app.js @@ -142,7 +142,7 @@ OCA.Sharing.App = { // folder in the files app instead of opening it directly fileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function (filename, context) { OCA.Files.App.setActiveView('files', {silent: true}); - OCA.Files.App.fileList.changeDirectory(context.$file.attr('data-path') + '/' + filename, true, true); + OCA.Files.App.fileList.changeDirectory(OC.joinPaths(context.$file.attr('data-path'), filename), true, true); }); fileActions.setDefault('dir', 'Open'); return fileActions; diff --git a/apps/files_sharing/js/public.js b/apps/files_sharing/js/public.js index 246b639f652..82691129926 100644 --- a/apps/files_sharing/js/public.js +++ b/apps/files_sharing/js/public.js @@ -48,8 +48,20 @@ OCA.Sharing.PublicApp = { this._initialized = true; this.initialDir = $('#dir').val(); + var token = $('#sharingToken').val(); + // file list mode ? if ($el.find('#filestable').length) { + var filesClient = new OC.Files.Client({ + host: OC.getHost(), + port: OC.getPort(), + userName: token, + // note: password not be required, the endpoint + // will recognize previous validation from the session + root: OC.getRootPath() + '/public.php/webdav', + useHTTPS: OC.getProtocol() === 'https' + }); + this.fileList = new OCA.Files.FileList( $el, { @@ -58,7 +70,8 @@ OCA.Sharing.PublicApp = { dragOptions: dragOptions, folderDropOptions: folderDropOptions, fileActions: fileActions, - detailsViewEnabled: false + detailsViewEnabled: false, + filesClient: filesClient } ); this.files = OCA.Files.Files; @@ -88,7 +101,6 @@ OCA.Sharing.PublicApp = { // dynamically load image previews - var token = $('#sharingToken').val(); var bottomMargin = 350; var previewWidth = Math.ceil($(window).width() * window.devicePixelRatio); var previewHeight = Math.ceil(($(window).height() - bottomMargin) * window.devicePixelRatio); diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js index 63225a0d8ec..3d105f283d8 100644 --- a/apps/files_sharing/js/share.js +++ b/apps/files_sharing/js/share.js @@ -50,7 +50,7 @@ if (fileData.shareOwner) { tr.attr('data-share-owner', fileData.shareOwner); // user should always be able to rename a mount point - if (fileData.isShareMountPoint) { + if (fileData.mountType === 'shared-root') { tr.attr('data-permissions', fileData.permissions | OC.PERMISSION_UPDATE); } } @@ -68,6 +68,26 @@ return fileInfo; }; + var NS_OC = 'http://owncloud.org/ns'; + + var oldGetWebdavProperties = fileList._getWebdavProperties; + fileList._getWebdavProperties = function() { + var props = oldGetWebdavProperties.apply(this, arguments); + props.push('{' + NS_OC + '}owner-display-name'); + return props; + }; + + fileList.filesClient.addFileInfoParser(function(response) { + var data = {}; + var props = response.propStat[0].properties; + var permissionsProp = props['{' + NS_OC + '}permissions']; + + if (permissionsProp && permissionsProp.indexOf('S') >= 0) { + data.shareOwner = props['{' + NS_OC + '}owner-display-name']; + } + return data; + }); + // use delegate to catch the case with multiple file lists fileList.$el.on('fileActionsReady', function(ev){ var fileList = ev.fileList; diff --git a/apps/files_sharing/js/sharedfilelist.js b/apps/files_sharing/js/sharedfilelist.js index 68bfd63ec89..a799d4a94c2 100644 --- a/apps/files_sharing/js/sharedfilelist.js +++ b/apps/files_sharing/js/sharedfilelist.js @@ -231,6 +231,7 @@ files = _.chain(files) // convert share data to file data .map(function(share) { + // TODO: use OC.Files.FileInfo var file = { id: share.file_source, icon: OC.MimeType.getIconUrl(share.mimetype), @@ -242,9 +243,6 @@ } else { file.type = 'file'; - if (share.isPreviewAvailable) { - file.isPreviewAvailable = true; - } } file.share = { id: share.id, diff --git a/apps/files_sharing/l10n/es_AR.js b/apps/files_sharing/l10n/es_AR.js index fac8b357506..f0e363b2f49 100644 --- a/apps/files_sharing/l10n/es_AR.js +++ b/apps/files_sharing/l10n/es_AR.js @@ -1,6 +1,7 @@ OC.L10N.register( "files_sharing", { + "Server to server sharing is not enabled on this server" : "Compartir entre servidores no está habilitado en este servidor", "Cancel" : "Cancelar", "Shared by" : "Compartido por", "Sharing" : "Compartiendo", diff --git a/apps/files_sharing/l10n/es_AR.json b/apps/files_sharing/l10n/es_AR.json index 6a7316bff8c..7a6441c7bdf 100644 --- a/apps/files_sharing/l10n/es_AR.json +++ b/apps/files_sharing/l10n/es_AR.json @@ -1,4 +1,5 @@ { "translations": { + "Server to server sharing is not enabled on this server" : "Compartir entre servidores no está habilitado en este servidor", "Cancel" : "Cancelar", "Shared by" : "Compartido por", "Sharing" : "Compartiendo", diff --git a/apps/files_sharing/tests/js/publicAppSpec.js b/apps/files_sharing/tests/js/publicAppSpec.js index d496b78acfa..1ea5f7ed1bc 100644 --- a/apps/files_sharing/tests/js/publicAppSpec.js +++ b/apps/files_sharing/tests/js/publicAppSpec.js @@ -21,11 +21,13 @@ describe('OCA.Sharing.PublicApp tests', function() { var App = OCA.Sharing.PublicApp; + var hostStub, protocolStub, webrootStub; var $preview; - var fileListIn; - var fileListOut; beforeEach(function() { + protocolStub = sinon.stub(OC, 'getProtocol').returns('https'); + hostStub = sinon.stub(OC, 'getHost').returns('example.com'); + webrootStub = sinon.stub(OC, 'getRootPath').returns('/owncloud'); $preview = $('<div id="preview"></div>'); $('#testArea').append($preview); $preview.append( @@ -35,6 +37,12 @@ describe('OCA.Sharing.PublicApp tests', function() { ); }); + afterEach(function() { + protocolStub.restore(); + hostStub.restore(); + webrootStub.restore(); + }); + describe('File list', function() { // TODO: this should be moved to a separate file once the PublicFileList is extracted from public.js beforeEach(function() { @@ -78,6 +86,12 @@ describe('OCA.Sharing.PublicApp tests', function() { App._initialized = false; }); + it('Uses public webdav endpoint', function() { + expect(fakeServer.requests.length).toEqual(1); + expect(fakeServer.requests[0].method).toEqual('PROPFIND'); + expect(fakeServer.requests[0].url).toEqual('https://sh4tok@example.com/owncloud/public.php/webdav/subdir'); + }); + describe('Download Url', function() { var fileList; diff --git a/apps/files_sharing/tests/js/sharedfilelistSpec.js b/apps/files_sharing/tests/js/sharedfilelistSpec.js index b4b6ac4954a..fdc9de49c17 100644 --- a/apps/files_sharing/tests/js/sharedfilelistSpec.js +++ b/apps/files_sharing/tests/js/sharedfilelistSpec.js @@ -166,8 +166,7 @@ describe('OCA.Sharing.FileList tests', function() { expect($tr.attr('data-share-id')).toEqual('7'); expect($tr.find('a.name').attr('href')).toEqual( OC.webroot + - '/index.php/apps/files/ajax/download.php' + - '?dir=%2Flocal%20path&files=local%20name.txt' + '/remote.php/webdav/local%20path/local%20name.txt' ); expect($tr.find('.nametext').text().trim()).toEqual('local name.txt'); @@ -185,8 +184,7 @@ describe('OCA.Sharing.FileList tests', function() { expect($tr.attr('data-share-id')).toEqual('8'); expect($tr.find('a.name').attr('href')).toEqual( OC.webroot + - '/index.php/apps/files/ajax/download.php' + - '?dir=%2F&files=b.txt' + '/remote.php/webdav/b.txt' ); expect($tr.find('.nametext').text().trim()).toEqual('b.txt'); }); @@ -338,8 +336,7 @@ describe('OCA.Sharing.FileList tests', function() { expect($tr.attr('data-share-id')).toEqual('7'); expect($tr.find('a.name').attr('href')).toEqual( OC.webroot + - '/index.php/apps/files/ajax/download.php' + - '?dir=%2Flocal%20path&files=local%20name.txt' + '/remote.php/webdav/local%20path/local%20name.txt' ); expect($tr.find('.nametext').text().trim()).toEqual('local name.txt'); }); @@ -429,9 +426,8 @@ describe('OCA.Sharing.FileList tests', function() { expect($tr.attr('data-share-owner')).not.toBeDefined(); expect($tr.attr('data-share-id')).toEqual('7'); expect($tr.find('a.name').attr('href')).toEqual( - OC.webroot + - '/index.php/apps/files/ajax/download.php' + - '?dir=%2Flocal%20path&files=local%20name.txt'); + OC.webroot + '/remote.php/webdav/local%20path/local%20name.txt' + ); expect($tr.find('.nametext').text().trim()).toEqual('local name.txt'); }); @@ -498,9 +494,7 @@ describe('OCA.Sharing.FileList tests', function() { expect($tr.attr('data-share-owner')).not.toBeDefined(); expect($tr.attr('data-share-id')).toEqual('7,8,9'); expect($tr.find('a.name').attr('href')).toEqual( - OC.webroot + - '/index.php/apps/files/ajax/download.php' + - '?dir=%2Flocal%20path&files=local%20name.txt' + OC.webroot + '/remote.php/webdav/local%20path/local%20name.txt' ); expect($tr.find('.nametext').text().trim()).toEqual('local name.txt'); }); @@ -592,9 +586,8 @@ describe('OCA.Sharing.FileList tests', function() { expect($tr.attr('data-share-owner')).not.toBeDefined(); expect($tr.attr('data-share-id')).toEqual('7'); expect($tr.find('a.name').attr('href')).toEqual( - OC.webroot + - '/index.php/apps/files/ajax/download.php' + - '?dir=%2Flocal%20path&files=local%20name.txt'); + OC.webroot + '/remote.php/webdav/local%20path/local%20name.txt' + ); expect($tr.find('.nametext').text().trim()).toEqual('local name.txt'); }); @@ -634,8 +627,7 @@ describe('OCA.Sharing.FileList tests', function() { expect($tr.attr('data-share-id')).toEqual('7'); expect($tr.find('a.name').attr('href')).toEqual( OC.webroot + - '/index.php/apps/files/ajax/download.php' + - '?dir=%2Flocal%20path&files=local%20name.txt'); + '/remote.php/webdav/local%20path/local%20name.txt'); expect($tr.find('.nametext').text().trim()).toEqual('local name.txt'); }); diff --git a/apps/files_trashbin/js/app.js b/apps/files_trashbin/js/app.js index 1f46f568bf2..600a8ce2b03 100644 --- a/apps/files_trashbin/js/app.js +++ b/apps/files_trashbin/js/app.js @@ -38,10 +38,7 @@ OCA.Trashbin.App = { var fileActions = new OCA.Files.FileActions(); fileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function (filename, context) { var dir = context.fileList.getCurrentDirectory(); - if (dir !== '/') { - dir = dir + '/'; - } - context.fileList.changeDirectory(dir + filename); + context.fileList.changeDirectory(OC.joinPaths(dir, filename)); }); fileActions.setDefault('dir', 'Open'); diff --git a/apps/files_trashbin/js/filelist.js b/apps/files_trashbin/js/filelist.js index 6b624e333a0..5812aff82f7 100644 --- a/apps/files_trashbin/js/filelist.js +++ b/apps/files_trashbin/js/filelist.js @@ -283,7 +283,77 @@ isSelectedDeletable: function() { return true; - } + }, + + /** + * Reloads the file list using ajax call + * + * @return ajax call object + */ + reload: function() { + this._selectedFiles = {}; + this._selectionSummary.clear(); + this.$el.find('.select-all').prop('checked', false); + this.showMask(); + if (this._reloadCall) { + this._reloadCall.abort(); + } + this._reloadCall = $.ajax({ + url: this.getAjaxUrl('list'), + data: { + dir : this.getCurrentDirectory(), + sort: this._sort, + sortdirection: this._sortDirection + } + }); + var callBack = this.reloadCallback.bind(this); + return this._reloadCall.then(callBack, callBack); + }, + reloadCallback: function(result) { + delete this._reloadCall; + this.hideMask(); + + if (!result || result.status === 'error') { + // if the error is not related to folder we're trying to load, reload the page to handle logout etc + if (result.data.error === 'authentication_error' || + result.data.error === 'token_expired' || + result.data.error === 'application_not_enabled' + ) { + OC.redirect(OC.generateUrl('apps/files')); + } + OC.Notification.show(result.data.message); + return false; + } + + // Firewall Blocked request? + if (result.status === 403) { + // Go home + this.changeDirectory('/'); + OC.Notification.show(t('files', 'This operation is forbidden')); + return false; + } + + // Did share service die or something else fail? + if (result.status === 500) { + // Go home + this.changeDirectory('/'); + OC.Notification.show(t('files', 'This directory is unavailable, please check the logs or contact the administrator')); + return false; + } + + if (result.status === 404) { + // go back home + this.changeDirectory('/'); + return false; + } + // aborted ? + if (result.status === 0){ + return true; + } + + this.setFiles(result.data.files); + return true; + }, }); diff --git a/apps/files_trashbin/l10n/ar.js b/apps/files_trashbin/l10n/ar.js index 964d547c42a..8b78e9e017a 100644 --- a/apps/files_trashbin/l10n/ar.js +++ b/apps/files_trashbin/l10n/ar.js @@ -8,6 +8,7 @@ OC.L10N.register( "Delete" : "إلغاء", "Delete permanently" : "حذف بشكل دائم", "Error" : "خطأ", + "This operation is forbidden" : "هذة العملية ممنوعة ", "restored" : "تمت الاستعادة", "No entries found in this folder" : "لا يوجد مدخلات في هذا المجلد ", "Select all" : "تحديد الكل ", diff --git a/apps/files_trashbin/l10n/ar.json b/apps/files_trashbin/l10n/ar.json index cb73176fda1..ac3552d79af 100644 --- a/apps/files_trashbin/l10n/ar.json +++ b/apps/files_trashbin/l10n/ar.json @@ -6,6 +6,7 @@ "Delete" : "إلغاء", "Delete permanently" : "حذف بشكل دائم", "Error" : "خطأ", + "This operation is forbidden" : "هذة العملية ممنوعة ", "restored" : "تمت الاستعادة", "No entries found in this folder" : "لا يوجد مدخلات في هذا المجلد ", "Select all" : "تحديد الكل ", diff --git a/apps/files_trashbin/l10n/ast.js b/apps/files_trashbin/l10n/ast.js index b467f8b51a1..f59457ad6d1 100644 --- a/apps/files_trashbin/l10n/ast.js +++ b/apps/files_trashbin/l10n/ast.js @@ -8,6 +8,8 @@ OC.L10N.register( "Delete" : "Desaniciar", "Delete permanently" : "Desaniciar dafechu", "Error" : "Fallu", + "This operation is forbidden" : "La operación ta prohibida", + "This directory is unavailable, please check the logs or contact the administrator" : "Esti direutoriu nun ta disponible, por favor verifica'l rexistru o contacta l'alministrador", "restored" : "recuperóse", "No deleted files" : "Ensin ficheros desaniciaos", "You will be able to recover deleted files from here" : "Dende equí podrás recureperar los ficheros desaniciaos", diff --git a/apps/files_trashbin/l10n/ast.json b/apps/files_trashbin/l10n/ast.json index b568456279b..65380e118d6 100644 --- a/apps/files_trashbin/l10n/ast.json +++ b/apps/files_trashbin/l10n/ast.json @@ -6,6 +6,8 @@ "Delete" : "Desaniciar", "Delete permanently" : "Desaniciar dafechu", "Error" : "Fallu", + "This operation is forbidden" : "La operación ta prohibida", + "This directory is unavailable, please check the logs or contact the administrator" : "Esti direutoriu nun ta disponible, por favor verifica'l rexistru o contacta l'alministrador", "restored" : "recuperóse", "No deleted files" : "Ensin ficheros desaniciaos", "You will be able to recover deleted files from here" : "Dende equí podrás recureperar los ficheros desaniciaos", diff --git a/apps/files_trashbin/l10n/az.js b/apps/files_trashbin/l10n/az.js index a6b149dcbdb..7b3ab2ef04a 100644 --- a/apps/files_trashbin/l10n/az.js +++ b/apps/files_trashbin/l10n/az.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "Geri qaytarila bilmədi %s", "Deleted files" : "Silinmiş fayllar", "Restore" : "Geri qaytar", + "Delete" : "Sil", "Delete permanently" : "Həmişəlik sil", "Error" : "Səhv", + "This operation is forbidden" : "Bu əməliyyat qadağandır", + "This directory is unavailable, please check the logs or contact the administrator" : "Bu qovluq tapılmir. Xahiş olunur jurnalları yoxlayın ya da inzibatçı ilə əlaqə saxlayın", "restored" : "geriqaytarılıb", "No deleted files" : "Silinmiş fayllar mövcud deyil", "You will be able to recover deleted files from here" : "Siz silinmiş faylları burdan bərpa edə bilərsiniz", "No entries found in this folder" : "Bu qovluqda heç bir verilən tapılmadı", "Select all" : "Hamısıı seç", "Name" : "Ad", - "Deleted" : "Silinib", - "Delete" : "Sil" + "Deleted" : "Silinib" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/az.json b/apps/files_trashbin/l10n/az.json index 45d74ddbc9c..f9d23ea362a 100644 --- a/apps/files_trashbin/l10n/az.json +++ b/apps/files_trashbin/l10n/az.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "Geri qaytarila bilmədi %s", "Deleted files" : "Silinmiş fayllar", "Restore" : "Geri qaytar", + "Delete" : "Sil", "Delete permanently" : "Həmişəlik sil", "Error" : "Səhv", + "This operation is forbidden" : "Bu əməliyyat qadağandır", + "This directory is unavailable, please check the logs or contact the administrator" : "Bu qovluq tapılmir. Xahiş olunur jurnalları yoxlayın ya da inzibatçı ilə əlaqə saxlayın", "restored" : "geriqaytarılıb", "No deleted files" : "Silinmiş fayllar mövcud deyil", "You will be able to recover deleted files from here" : "Siz silinmiş faylları burdan bərpa edə bilərsiniz", "No entries found in this folder" : "Bu qovluqda heç bir verilən tapılmadı", "Select all" : "Hamısıı seç", "Name" : "Ad", - "Deleted" : "Silinib", - "Delete" : "Sil" + "Deleted" : "Silinib" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/bg_BG.js b/apps/files_trashbin/l10n/bg_BG.js index 9db73c98a6d..767f529a9a1 100644 --- a/apps/files_trashbin/l10n/bg_BG.js +++ b/apps/files_trashbin/l10n/bg_BG.js @@ -5,6 +5,7 @@ OC.L10N.register( "Couldn't restore %s" : "Неуспешно възтановяване на %s.", "Deleted files" : "Изтрити файлове", "Restore" : "Възстановяви", + "Delete" : "Изтрий", "Delete permanently" : "Изтрий завинаги", "Error" : "Грешка", "restored" : "възстановено", @@ -13,7 +14,6 @@ OC.L10N.register( "No entries found in this folder" : "Няма намерени записи в тази папка", "Select all" : "Избери всички", "Name" : "Име", - "Deleted" : "Изтрито", - "Delete" : "Изтрий" + "Deleted" : "Изтрито" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/bg_BG.json b/apps/files_trashbin/l10n/bg_BG.json index 3f3b3e8b835..824d1e44254 100644 --- a/apps/files_trashbin/l10n/bg_BG.json +++ b/apps/files_trashbin/l10n/bg_BG.json @@ -3,6 +3,7 @@ "Couldn't restore %s" : "Неуспешно възтановяване на %s.", "Deleted files" : "Изтрити файлове", "Restore" : "Възстановяви", + "Delete" : "Изтрий", "Delete permanently" : "Изтрий завинаги", "Error" : "Грешка", "restored" : "възстановено", @@ -11,7 +12,6 @@ "No entries found in this folder" : "Няма намерени записи в тази папка", "Select all" : "Избери всички", "Name" : "Име", - "Deleted" : "Изтрито", - "Delete" : "Изтрий" + "Deleted" : "Изтрито" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/bn_BD.js b/apps/files_trashbin/l10n/bn_BD.js index 6f6626b71cc..12537a14afb 100644 --- a/apps/files_trashbin/l10n/bn_BD.js +++ b/apps/files_trashbin/l10n/bn_BD.js @@ -5,10 +5,10 @@ OC.L10N.register( "Couldn't restore %s" : "%s ফেরত আনা গেলনা", "Deleted files" : "মুছে ফেলা ফাইলসমূহ", "Restore" : "ফিরিয়ে দাও", + "Delete" : "মুছে", "Error" : "সমস্যা", "restored" : "পূণঃসংরক্ষিত", "Name" : "নাম", - "Deleted" : "মুছে ফেলা", - "Delete" : "মুছে" + "Deleted" : "মুছে ফেলা" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/bn_BD.json b/apps/files_trashbin/l10n/bn_BD.json index affc277fcda..3630d490455 100644 --- a/apps/files_trashbin/l10n/bn_BD.json +++ b/apps/files_trashbin/l10n/bn_BD.json @@ -3,10 +3,10 @@ "Couldn't restore %s" : "%s ফেরত আনা গেলনা", "Deleted files" : "মুছে ফেলা ফাইলসমূহ", "Restore" : "ফিরিয়ে দাও", + "Delete" : "মুছে", "Error" : "সমস্যা", "restored" : "পূণঃসংরক্ষিত", "Name" : "নাম", - "Deleted" : "মুছে ফেলা", - "Delete" : "মুছে" + "Deleted" : "মুছে ফেলা" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/bn_IN.js b/apps/files_trashbin/l10n/bn_IN.js index 5943177a923..7c3bb37553a 100644 --- a/apps/files_trashbin/l10n/bn_IN.js +++ b/apps/files_trashbin/l10n/bn_IN.js @@ -5,11 +5,11 @@ OC.L10N.register( "Couldn't restore %s" : "%s পুনরুদ্ধার করা যায়নি", "Deleted files" : "ফাইলস মুছে ফেলা হয়েছে", "Restore" : "পুনরুদ্ধার", + "Delete" : "মুছে ফেলা", "Delete permanently" : "স্থায়ীভাবে মুছে দিন", "Error" : "ভুল", "restored" : "পুনরুদ্ধার করা হয়েছে", "Name" : "নাম", - "Deleted" : "মুছে ফেলা হয়েছে", - "Delete" : "মুছে ফেলা" + "Deleted" : "মুছে ফেলা হয়েছে" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/bn_IN.json b/apps/files_trashbin/l10n/bn_IN.json index 45a24ee7675..b7ae21692bf 100644 --- a/apps/files_trashbin/l10n/bn_IN.json +++ b/apps/files_trashbin/l10n/bn_IN.json @@ -3,11 +3,11 @@ "Couldn't restore %s" : "%s পুনরুদ্ধার করা যায়নি", "Deleted files" : "ফাইলস মুছে ফেলা হয়েছে", "Restore" : "পুনরুদ্ধার", + "Delete" : "মুছে ফেলা", "Delete permanently" : "স্থায়ীভাবে মুছে দিন", "Error" : "ভুল", "restored" : "পুনরুদ্ধার করা হয়েছে", "Name" : "নাম", - "Deleted" : "মুছে ফেলা হয়েছে", - "Delete" : "মুছে ফেলা" + "Deleted" : "মুছে ফেলা হয়েছে" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/bs.js b/apps/files_trashbin/l10n/bs.js index 0378a76f855..c02d88b07e4 100644 --- a/apps/files_trashbin/l10n/bs.js +++ b/apps/files_trashbin/l10n/bs.js @@ -2,9 +2,9 @@ OC.L10N.register( "files_trashbin", { "Restore" : "Obnovi", + "Delete" : "Izbriši", "Error" : "Greška", "Select all" : "Označi sve", - "Name" : "Ime", - "Delete" : "Izbriši" + "Name" : "Ime" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files_trashbin/l10n/bs.json b/apps/files_trashbin/l10n/bs.json index 6f222ca37af..00f1105abc6 100644 --- a/apps/files_trashbin/l10n/bs.json +++ b/apps/files_trashbin/l10n/bs.json @@ -1,8 +1,8 @@ { "translations": { "Restore" : "Obnovi", + "Delete" : "Izbriši", "Error" : "Greška", "Select all" : "Označi sve", - "Name" : "Ime", - "Delete" : "Izbriši" + "Name" : "Ime" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/ca.js b/apps/files_trashbin/l10n/ca.js index 356e525b73c..d5f19e466c1 100644 --- a/apps/files_trashbin/l10n/ca.js +++ b/apps/files_trashbin/l10n/ca.js @@ -5,6 +5,7 @@ OC.L10N.register( "Couldn't restore %s" : "No s'ha pogut restaurar %s", "Deleted files" : "Fitxers esborrats", "Restore" : "Recupera", + "Delete" : "Esborra", "Delete permanently" : "Esborra permanentment", "Error" : "Error", "restored" : "restaurat", @@ -13,7 +14,6 @@ OC.L10N.register( "No entries found in this folder" : "No hi ha entrades en aquesta carpeta", "Select all" : "Seleccionar tot", "Name" : "Nom", - "Deleted" : "Eliminat", - "Delete" : "Esborra" + "Deleted" : "Eliminat" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/ca.json b/apps/files_trashbin/l10n/ca.json index dfdec62d7d1..520ef5f2f74 100644 --- a/apps/files_trashbin/l10n/ca.json +++ b/apps/files_trashbin/l10n/ca.json @@ -3,6 +3,7 @@ "Couldn't restore %s" : "No s'ha pogut restaurar %s", "Deleted files" : "Fitxers esborrats", "Restore" : "Recupera", + "Delete" : "Esborra", "Delete permanently" : "Esborra permanentment", "Error" : "Error", "restored" : "restaurat", @@ -11,7 +12,6 @@ "No entries found in this folder" : "No hi ha entrades en aquesta carpeta", "Select all" : "Seleccionar tot", "Name" : "Nom", - "Deleted" : "Eliminat", - "Delete" : "Esborra" + "Deleted" : "Eliminat" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/cs_CZ.js b/apps/files_trashbin/l10n/cs_CZ.js index 4d0f9b7018d..22c33690420 100644 --- a/apps/files_trashbin/l10n/cs_CZ.js +++ b/apps/files_trashbin/l10n/cs_CZ.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "Nelze obnovit %s", "Deleted files" : "Odstraněné soubory", "Restore" : "Obnovit", + "Delete" : "Smazat", "Delete permanently" : "Trvale odstranit", "Error" : "Chyba", + "This operation is forbidden" : "Tato operace je zakázána", + "This directory is unavailable, please check the logs or contact the administrator" : "Tento adresář není dostupný, zkontrolujte prosím logy nebo kontaktujte svého správce systému", "restored" : "obnoveno", "No deleted files" : "Žádné smazané soubory", "You will be able to recover deleted files from here" : "Odtud budete moci obnovovat odstraněné soubory", "No entries found in this folder" : "V této složce nebylo nic nalezeno", "Select all" : "Vybrat vše", "Name" : "Název", - "Deleted" : "Smazáno", - "Delete" : "Smazat" + "Deleted" : "Smazáno" }, "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); diff --git a/apps/files_trashbin/l10n/cs_CZ.json b/apps/files_trashbin/l10n/cs_CZ.json index cffa7b663fa..a4a13942fd1 100644 --- a/apps/files_trashbin/l10n/cs_CZ.json +++ b/apps/files_trashbin/l10n/cs_CZ.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "Nelze obnovit %s", "Deleted files" : "Odstraněné soubory", "Restore" : "Obnovit", + "Delete" : "Smazat", "Delete permanently" : "Trvale odstranit", "Error" : "Chyba", + "This operation is forbidden" : "Tato operace je zakázána", + "This directory is unavailable, please check the logs or contact the administrator" : "Tento adresář není dostupný, zkontrolujte prosím logy nebo kontaktujte svého správce systému", "restored" : "obnoveno", "No deleted files" : "Žádné smazané soubory", "You will be able to recover deleted files from here" : "Odtud budete moci obnovovat odstraněné soubory", "No entries found in this folder" : "V této složce nebylo nic nalezeno", "Select all" : "Vybrat vše", "Name" : "Název", - "Deleted" : "Smazáno", - "Delete" : "Smazat" + "Deleted" : "Smazáno" },"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/cy_GB.js b/apps/files_trashbin/l10n/cy_GB.js index cd20621625f..e689aa9b52c 100644 --- a/apps/files_trashbin/l10n/cy_GB.js +++ b/apps/files_trashbin/l10n/cy_GB.js @@ -5,10 +5,10 @@ OC.L10N.register( "Couldn't restore %s" : "Methwyd adfer %s", "Deleted files" : "Ffeiliau ddilewyd", "Restore" : "Adfer", + "Delete" : "Dileu", "Delete permanently" : "Dileu'n barhaol", "Error" : "Gwall", "Name" : "Enw", - "Deleted" : "Wedi dileu", - "Delete" : "Dileu" + "Deleted" : "Wedi dileu" }, "nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;"); diff --git a/apps/files_trashbin/l10n/cy_GB.json b/apps/files_trashbin/l10n/cy_GB.json index 0f21da0c56d..c42ce3d10ea 100644 --- a/apps/files_trashbin/l10n/cy_GB.json +++ b/apps/files_trashbin/l10n/cy_GB.json @@ -3,10 +3,10 @@ "Couldn't restore %s" : "Methwyd adfer %s", "Deleted files" : "Ffeiliau ddilewyd", "Restore" : "Adfer", + "Delete" : "Dileu", "Delete permanently" : "Dileu'n barhaol", "Error" : "Gwall", "Name" : "Enw", - "Deleted" : "Wedi dileu", - "Delete" : "Dileu" + "Deleted" : "Wedi dileu" },"pluralForm" :"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/da.js b/apps/files_trashbin/l10n/da.js index dbcd566a9d2..6dcbd7040d1 100644 --- a/apps/files_trashbin/l10n/da.js +++ b/apps/files_trashbin/l10n/da.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "Kunne ikke gendanne %s", "Deleted files" : "Slettede filer", "Restore" : "Gendan", + "Delete" : "Slet", "Delete permanently" : "Slet permanent", "Error" : "Fejl", + "This operation is forbidden" : "Denne operation er forbudt", + "This directory is unavailable, please check the logs or contact the administrator" : "Denne mappe er utilgængelig, tjek venligst loggene eller kontakt administratoren", "restored" : "Gendannet", "No deleted files" : "Ingen slettede filer", "You will be able to recover deleted files from here" : "Du vil kunne gendanne slettede filer herfra", "No entries found in this folder" : "Der blev ikke fundet poster i denne mappe", "Select all" : "Vælg alle", "Name" : "Navn", - "Deleted" : "Slettet", - "Delete" : "Slet" + "Deleted" : "Slettet" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/da.json b/apps/files_trashbin/l10n/da.json index 0f660d2e44d..456b1ab73b2 100644 --- a/apps/files_trashbin/l10n/da.json +++ b/apps/files_trashbin/l10n/da.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "Kunne ikke gendanne %s", "Deleted files" : "Slettede filer", "Restore" : "Gendan", + "Delete" : "Slet", "Delete permanently" : "Slet permanent", "Error" : "Fejl", + "This operation is forbidden" : "Denne operation er forbudt", + "This directory is unavailable, please check the logs or contact the administrator" : "Denne mappe er utilgængelig, tjek venligst loggene eller kontakt administratoren", "restored" : "Gendannet", "No deleted files" : "Ingen slettede filer", "You will be able to recover deleted files from here" : "Du vil kunne gendanne slettede filer herfra", "No entries found in this folder" : "Der blev ikke fundet poster i denne mappe", "Select all" : "Vælg alle", "Name" : "Navn", - "Deleted" : "Slettet", - "Delete" : "Slet" + "Deleted" : "Slettet" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/de.js b/apps/files_trashbin/l10n/de.js index 96addde03b2..500205227c8 100644 --- a/apps/files_trashbin/l10n/de.js +++ b/apps/files_trashbin/l10n/de.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "Konnte %s nicht wiederherstellen", "Deleted files" : "Gelöschte Dateien", "Restore" : "Wiederherstellen", + "Delete" : "Löschen", "Delete permanently" : "Endgültig löschen", "Error" : "Fehler", + "This operation is forbidden" : "Diese Operation ist nicht erlaubt", + "This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfe die Logdateien oder kontaktiere den Administrator", "restored" : "Wiederhergestellt", "No deleted files" : "Keine gelöschten Dateien", "You will be able to recover deleted files from here" : "Du kannst hier gelöschte Dateien wiederherstellen", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", "Select all" : "Alle auswählen", "Name" : "Name", - "Deleted" : "gelöscht", - "Delete" : "Löschen" + "Deleted" : "gelöscht" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/de.json b/apps/files_trashbin/l10n/de.json index d7b9b07b87e..baa976b6ff3 100644 --- a/apps/files_trashbin/l10n/de.json +++ b/apps/files_trashbin/l10n/de.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "Konnte %s nicht wiederherstellen", "Deleted files" : "Gelöschte Dateien", "Restore" : "Wiederherstellen", + "Delete" : "Löschen", "Delete permanently" : "Endgültig löschen", "Error" : "Fehler", + "This operation is forbidden" : "Diese Operation ist nicht erlaubt", + "This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfe die Logdateien oder kontaktiere den Administrator", "restored" : "Wiederhergestellt", "No deleted files" : "Keine gelöschten Dateien", "You will be able to recover deleted files from here" : "Du kannst hier gelöschte Dateien wiederherstellen", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", "Select all" : "Alle auswählen", "Name" : "Name", - "Deleted" : "gelöscht", - "Delete" : "Löschen" + "Deleted" : "gelöscht" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/de_AT.js b/apps/files_trashbin/l10n/de_AT.js index db1e7544a5b..5d1a6cec445 100644 --- a/apps/files_trashbin/l10n/de_AT.js +++ b/apps/files_trashbin/l10n/de_AT.js @@ -1,7 +1,7 @@ OC.L10N.register( "files_trashbin", { - "Error" : "Fehler", - "Delete" : "Löschen" + "Delete" : "Löschen", + "Error" : "Fehler" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/de_AT.json b/apps/files_trashbin/l10n/de_AT.json index a854415701f..5452cc8972a 100644 --- a/apps/files_trashbin/l10n/de_AT.json +++ b/apps/files_trashbin/l10n/de_AT.json @@ -1,5 +1,5 @@ { "translations": { - "Error" : "Fehler", - "Delete" : "Löschen" + "Delete" : "Löschen", + "Error" : "Fehler" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/de_DE.js b/apps/files_trashbin/l10n/de_DE.js index c25166efc80..84a2c382efa 100644 --- a/apps/files_trashbin/l10n/de_DE.js +++ b/apps/files_trashbin/l10n/de_DE.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "Konnte %s nicht wiederherstellen", "Deleted files" : "Gelöschte Dateien", "Restore" : "Wiederherstellen", + "Delete" : "Löschen", "Delete permanently" : "Endgültig löschen", "Error" : "Fehler", + "This operation is forbidden" : "Diese Operation ist nicht erlaubt", + "This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfen Sie die Logdateien oder kontaktieren Sie den Administrator", "restored" : "Wiederhergestellt", "No deleted files" : "Keine gelöschten Dateien", "You will be able to recover deleted files from here" : "Sie können hier gelöschte Dateien wiederherstellen", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", "Select all" : "Alle auswählen", "Name" : "Name", - "Deleted" : "Gelöscht", - "Delete" : "Löschen" + "Deleted" : "Gelöscht" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/de_DE.json b/apps/files_trashbin/l10n/de_DE.json index 9f4a895fa16..966461efee3 100644 --- a/apps/files_trashbin/l10n/de_DE.json +++ b/apps/files_trashbin/l10n/de_DE.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "Konnte %s nicht wiederherstellen", "Deleted files" : "Gelöschte Dateien", "Restore" : "Wiederherstellen", + "Delete" : "Löschen", "Delete permanently" : "Endgültig löschen", "Error" : "Fehler", + "This operation is forbidden" : "Diese Operation ist nicht erlaubt", + "This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfen Sie die Logdateien oder kontaktieren Sie den Administrator", "restored" : "Wiederhergestellt", "No deleted files" : "Keine gelöschten Dateien", "You will be able to recover deleted files from here" : "Sie können hier gelöschte Dateien wiederherstellen", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", "Select all" : "Alle auswählen", "Name" : "Name", - "Deleted" : "Gelöscht", - "Delete" : "Löschen" + "Deleted" : "Gelöscht" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/el.js b/apps/files_trashbin/l10n/el.js index 8abbdb85b48..d63dc09c745 100644 --- a/apps/files_trashbin/l10n/el.js +++ b/apps/files_trashbin/l10n/el.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "Αδυναμία επαναφοράς %s", "Deleted files" : "Διεγραμμένα αρχεία", "Restore" : "Επαναφορά", + "Delete" : "Διαγραφή", "Delete permanently" : "Μόνιμη διαγραφή", "Error" : "Σφάλμα", + "This operation is forbidden" : "Αυτή η ενέργεια δεν επιτρέπεται", + "This directory is unavailable, please check the logs or contact the administrator" : "Ο κατάλογος δεν είναι διαθέσιμος, παρακαλώ ελέγξτε τα αρχεία καταγραφής ή επικοινωνήστε με το διαχειριστή", "restored" : "επαναφέρθηκαν", "No deleted files" : "Κανένα διαγεγραμμένο αρχείο", "You will be able to recover deleted files from here" : "Θα έχετε την δυνατότητα επαναφοράς διαγεγραμμένων αρχείων από εδώ", "No entries found in this folder" : "Δεν βρέθηκαν καταχωρήσεις σε αυτόν το φάκελο", "Select all" : "Επιλογή όλων", "Name" : "Όνομα", - "Deleted" : "Διαγραμμένα", - "Delete" : "Διαγραφή" + "Deleted" : "Διαγραμμένα" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/el.json b/apps/files_trashbin/l10n/el.json index eb52020a3e1..5d0ad857d35 100644 --- a/apps/files_trashbin/l10n/el.json +++ b/apps/files_trashbin/l10n/el.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "Αδυναμία επαναφοράς %s", "Deleted files" : "Διεγραμμένα αρχεία", "Restore" : "Επαναφορά", + "Delete" : "Διαγραφή", "Delete permanently" : "Μόνιμη διαγραφή", "Error" : "Σφάλμα", + "This operation is forbidden" : "Αυτή η ενέργεια δεν επιτρέπεται", + "This directory is unavailable, please check the logs or contact the administrator" : "Ο κατάλογος δεν είναι διαθέσιμος, παρακαλώ ελέγξτε τα αρχεία καταγραφής ή επικοινωνήστε με το διαχειριστή", "restored" : "επαναφέρθηκαν", "No deleted files" : "Κανένα διαγεγραμμένο αρχείο", "You will be able to recover deleted files from here" : "Θα έχετε την δυνατότητα επαναφοράς διαγεγραμμένων αρχείων από εδώ", "No entries found in this folder" : "Δεν βρέθηκαν καταχωρήσεις σε αυτόν το φάκελο", "Select all" : "Επιλογή όλων", "Name" : "Όνομα", - "Deleted" : "Διαγραμμένα", - "Delete" : "Διαγραφή" + "Deleted" : "Διαγραμμένα" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/en_GB.js b/apps/files_trashbin/l10n/en_GB.js index e2ff4ac73fb..e3f3b78af57 100644 --- a/apps/files_trashbin/l10n/en_GB.js +++ b/apps/files_trashbin/l10n/en_GB.js @@ -5,6 +5,7 @@ OC.L10N.register( "Couldn't restore %s" : "Couldn't restore %s", "Deleted files" : "Deleted files", "Restore" : "Restore", + "Delete" : "Delete", "Delete permanently" : "Delete permanently", "Error" : "Error", "restored" : "restored", @@ -13,7 +14,6 @@ OC.L10N.register( "No entries found in this folder" : "No entries found in this folder", "Select all" : "Select all", "Name" : "Name", - "Deleted" : "Deleted", - "Delete" : "Delete" + "Deleted" : "Deleted" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/en_GB.json b/apps/files_trashbin/l10n/en_GB.json index 078bca97a49..9c533523889 100644 --- a/apps/files_trashbin/l10n/en_GB.json +++ b/apps/files_trashbin/l10n/en_GB.json @@ -3,6 +3,7 @@ "Couldn't restore %s" : "Couldn't restore %s", "Deleted files" : "Deleted files", "Restore" : "Restore", + "Delete" : "Delete", "Delete permanently" : "Delete permanently", "Error" : "Error", "restored" : "restored", @@ -11,7 +12,6 @@ "No entries found in this folder" : "No entries found in this folder", "Select all" : "Select all", "Name" : "Name", - "Deleted" : "Deleted", - "Delete" : "Delete" + "Deleted" : "Deleted" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/eo.js b/apps/files_trashbin/l10n/eo.js index 95edf8d3eb0..b4ab12d4bdd 100644 --- a/apps/files_trashbin/l10n/eo.js +++ b/apps/files_trashbin/l10n/eo.js @@ -5,12 +5,12 @@ OC.L10N.register( "Couldn't restore %s" : "Ne povis restaŭriĝi %s", "Deleted files" : "Forigitaj dosieroj", "Restore" : "Restaŭri", + "Delete" : "Forigi", "Delete permanently" : "Forigi por ĉiam", "Error" : "Eraro", "restored" : "restaŭrita", "Select all" : "Elekti ĉion", "Name" : "Nomo", - "Deleted" : "Forigita", - "Delete" : "Forigi" + "Deleted" : "Forigita" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/eo.json b/apps/files_trashbin/l10n/eo.json index 7fd1d85ff7a..87a9b7d479b 100644 --- a/apps/files_trashbin/l10n/eo.json +++ b/apps/files_trashbin/l10n/eo.json @@ -3,12 +3,12 @@ "Couldn't restore %s" : "Ne povis restaŭriĝi %s", "Deleted files" : "Forigitaj dosieroj", "Restore" : "Restaŭri", + "Delete" : "Forigi", "Delete permanently" : "Forigi por ĉiam", "Error" : "Eraro", "restored" : "restaŭrita", "Select all" : "Elekti ĉion", "Name" : "Nomo", - "Deleted" : "Forigita", - "Delete" : "Forigi" + "Deleted" : "Forigita" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/es.js b/apps/files_trashbin/l10n/es.js index b7f1a52327a..7cc67ce1945 100644 --- a/apps/files_trashbin/l10n/es.js +++ b/apps/files_trashbin/l10n/es.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "No se puede restaurar %s", "Deleted files" : "Archivos eliminados", "Restore" : "Recuperar", + "Delete" : "Eliminar", "Delete permanently" : "Eliminar permanentemente", "Error" : "Error", + "This operation is forbidden" : "Esta operación está prohibida", + "This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verifique los registros o contáctese con el administrador", "restored" : "recuperado", "No deleted files" : "No hay ningún archivo eliminado", "You will be able to recover deleted files from here" : "Desde aquí se podrán recuperar archivos eliminados", "No entries found in this folder" : "No hay entradas en esta carpeta", "Select all" : "Seleccionar todo", "Name" : "Nombre", - "Deleted" : "Eliminado", - "Delete" : "Eliminar" + "Deleted" : "Eliminado" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/es.json b/apps/files_trashbin/l10n/es.json index c55ae652d55..05f3dfa20b8 100644 --- a/apps/files_trashbin/l10n/es.json +++ b/apps/files_trashbin/l10n/es.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "No se puede restaurar %s", "Deleted files" : "Archivos eliminados", "Restore" : "Recuperar", + "Delete" : "Eliminar", "Delete permanently" : "Eliminar permanentemente", "Error" : "Error", + "This operation is forbidden" : "Esta operación está prohibida", + "This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verifique los registros o contáctese con el administrador", "restored" : "recuperado", "No deleted files" : "No hay ningún archivo eliminado", "You will be able to recover deleted files from here" : "Desde aquí se podrán recuperar archivos eliminados", "No entries found in this folder" : "No hay entradas en esta carpeta", "Select all" : "Seleccionar todo", "Name" : "Nombre", - "Deleted" : "Eliminado", - "Delete" : "Eliminar" + "Deleted" : "Eliminado" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/es_AR.js b/apps/files_trashbin/l10n/es_AR.js index b9566c17f1f..e916fc98f04 100644 --- a/apps/files_trashbin/l10n/es_AR.js +++ b/apps/files_trashbin/l10n/es_AR.js @@ -5,11 +5,11 @@ OC.L10N.register( "Couldn't restore %s" : "No se pudo restaurar %s", "Deleted files" : "Archivos borrados", "Restore" : "Recuperar", + "Delete" : "Borrar", "Delete permanently" : "Borrar permanentemente", "Error" : "Error", "restored" : "recuperado", "Name" : "Nombre", - "Deleted" : "Borrado", - "Delete" : "Borrar" + "Deleted" : "Borrado" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/es_AR.json b/apps/files_trashbin/l10n/es_AR.json index c3de7177ef6..41ad13d0ba2 100644 --- a/apps/files_trashbin/l10n/es_AR.json +++ b/apps/files_trashbin/l10n/es_AR.json @@ -3,11 +3,11 @@ "Couldn't restore %s" : "No se pudo restaurar %s", "Deleted files" : "Archivos borrados", "Restore" : "Recuperar", + "Delete" : "Borrar", "Delete permanently" : "Borrar permanentemente", "Error" : "Error", "restored" : "recuperado", "Name" : "Nombre", - "Deleted" : "Borrado", - "Delete" : "Borrar" + "Deleted" : "Borrado" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/es_MX.js b/apps/files_trashbin/l10n/es_MX.js index 0a53f9cffdf..109427e9d80 100644 --- a/apps/files_trashbin/l10n/es_MX.js +++ b/apps/files_trashbin/l10n/es_MX.js @@ -5,11 +5,11 @@ OC.L10N.register( "Couldn't restore %s" : "No se puede restaurar %s", "Deleted files" : "Archivos eliminados", "Restore" : "Recuperar", + "Delete" : "Eliminar", "Delete permanently" : "Eliminar permanentemente", "Error" : "Error", "restored" : "recuperado", "Name" : "Nombre", - "Deleted" : "Eliminado", - "Delete" : "Eliminar" + "Deleted" : "Eliminado" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/es_MX.json b/apps/files_trashbin/l10n/es_MX.json index 56dce90e07d..a1bbba28cde 100644 --- a/apps/files_trashbin/l10n/es_MX.json +++ b/apps/files_trashbin/l10n/es_MX.json @@ -3,11 +3,11 @@ "Couldn't restore %s" : "No se puede restaurar %s", "Deleted files" : "Archivos eliminados", "Restore" : "Recuperar", + "Delete" : "Eliminar", "Delete permanently" : "Eliminar permanentemente", "Error" : "Error", "restored" : "recuperado", "Name" : "Nombre", - "Deleted" : "Eliminado", - "Delete" : "Eliminar" + "Deleted" : "Eliminado" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/et_EE.js b/apps/files_trashbin/l10n/et_EE.js index 9298fdd5b18..3f928dede8d 100644 --- a/apps/files_trashbin/l10n/et_EE.js +++ b/apps/files_trashbin/l10n/et_EE.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "%s ei saa taastada", "Deleted files" : "Kustutatud failid", "Restore" : "Taasta", + "Delete" : "Kustuta", "Delete permanently" : "Kustuta jäädavalt", "Error" : "Viga", + "This operation is forbidden" : "See toiming on keelatud", + "This directory is unavailable, please check the logs or contact the administrator" : "See kaust pole saadaval. Palun kontrolli logifaile või võta ühendust administraatoriga", "restored" : "taastatud", "No deleted files" : "Kustutatud faile pole", "You will be able to recover deleted files from here" : "Sa saad siit kustutatud faile taastada", "No entries found in this folder" : "Selles kaustas ei leitud kirjeid", "Select all" : "Vali kõik", "Name" : "Nimi", - "Deleted" : "Kustutatud", - "Delete" : "Kustuta" + "Deleted" : "Kustutatud" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/et_EE.json b/apps/files_trashbin/l10n/et_EE.json index 734c8f6f2ec..468a3bcb385 100644 --- a/apps/files_trashbin/l10n/et_EE.json +++ b/apps/files_trashbin/l10n/et_EE.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "%s ei saa taastada", "Deleted files" : "Kustutatud failid", "Restore" : "Taasta", + "Delete" : "Kustuta", "Delete permanently" : "Kustuta jäädavalt", "Error" : "Viga", + "This operation is forbidden" : "See toiming on keelatud", + "This directory is unavailable, please check the logs or contact the administrator" : "See kaust pole saadaval. Palun kontrolli logifaile või võta ühendust administraatoriga", "restored" : "taastatud", "No deleted files" : "Kustutatud faile pole", "You will be able to recover deleted files from here" : "Sa saad siit kustutatud faile taastada", "No entries found in this folder" : "Selles kaustas ei leitud kirjeid", "Select all" : "Vali kõik", "Name" : "Nimi", - "Deleted" : "Kustutatud", - "Delete" : "Kustuta" + "Deleted" : "Kustutatud" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/eu.js b/apps/files_trashbin/l10n/eu.js index 568fda14450..5db27f0a9c6 100644 --- a/apps/files_trashbin/l10n/eu.js +++ b/apps/files_trashbin/l10n/eu.js @@ -5,6 +5,7 @@ OC.L10N.register( "Couldn't restore %s" : "Ezin izan da %s berreskuratu", "Deleted files" : "Ezabatutako fitxategiak", "Restore" : "Berrezarri", + "Delete" : "Ezabatu", "Delete permanently" : "Ezabatu betirako", "Error" : "Errorea", "restored" : "Berrezarrita", @@ -13,7 +14,6 @@ OC.L10N.register( "No entries found in this folder" : "Ez da sarrerarik aurkitu karpeta honetan", "Select all" : "Hautatu dena", "Name" : "Izena", - "Deleted" : "Ezabatuta", - "Delete" : "Ezabatu" + "Deleted" : "Ezabatuta" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/eu.json b/apps/files_trashbin/l10n/eu.json index 890ff07a468..07591e6b5d6 100644 --- a/apps/files_trashbin/l10n/eu.json +++ b/apps/files_trashbin/l10n/eu.json @@ -3,6 +3,7 @@ "Couldn't restore %s" : "Ezin izan da %s berreskuratu", "Deleted files" : "Ezabatutako fitxategiak", "Restore" : "Berrezarri", + "Delete" : "Ezabatu", "Delete permanently" : "Ezabatu betirako", "Error" : "Errorea", "restored" : "Berrezarrita", @@ -11,7 +12,6 @@ "No entries found in this folder" : "Ez da sarrerarik aurkitu karpeta honetan", "Select all" : "Hautatu dena", "Name" : "Izena", - "Deleted" : "Ezabatuta", - "Delete" : "Ezabatu" + "Deleted" : "Ezabatuta" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/fa.js b/apps/files_trashbin/l10n/fa.js index 28aa38a96a6..281851c65a0 100644 --- a/apps/files_trashbin/l10n/fa.js +++ b/apps/files_trashbin/l10n/fa.js @@ -8,6 +8,8 @@ OC.L10N.register( "Delete" : "حذف", "Delete permanently" : "حذف قطعی", "Error" : "خطا", + "This operation is forbidden" : "این عملیات غیرمجاز است", + "This directory is unavailable, please check the logs or contact the administrator" : "پوشه در دسترس نیست، لطفا لاگها را بررسی کنید یا به مدیر سیستم اطلاع دهید", "restored" : "بازیابی شد", "No entries found in this folder" : "هیچ ورودیای در این پوشه وجود ندارد", "Select all" : "انتخاب همه", diff --git a/apps/files_trashbin/l10n/fa.json b/apps/files_trashbin/l10n/fa.json index d8641316f44..08bee906d38 100644 --- a/apps/files_trashbin/l10n/fa.json +++ b/apps/files_trashbin/l10n/fa.json @@ -6,6 +6,8 @@ "Delete" : "حذف", "Delete permanently" : "حذف قطعی", "Error" : "خطا", + "This operation is forbidden" : "این عملیات غیرمجاز است", + "This directory is unavailable, please check the logs or contact the administrator" : "پوشه در دسترس نیست، لطفا لاگها را بررسی کنید یا به مدیر سیستم اطلاع دهید", "restored" : "بازیابی شد", "No entries found in this folder" : "هیچ ورودیای در این پوشه وجود ندارد", "Select all" : "انتخاب همه", diff --git a/apps/files_trashbin/l10n/fi_FI.js b/apps/files_trashbin/l10n/fi_FI.js index be3fbad301f..a8758c77050 100644 --- a/apps/files_trashbin/l10n/fi_FI.js +++ b/apps/files_trashbin/l10n/fi_FI.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "Kohteen %s palautus epäonnistui", "Deleted files" : "Poistetut tiedostot", "Restore" : "Palauta", + "Delete" : "Poista", "Delete permanently" : "Poista pysyvästi", "Error" : "Virhe", + "This operation is forbidden" : "Tämä toiminto on kielletty", + "This directory is unavailable, please check the logs or contact the administrator" : "Hakemisto ei ole käytettävissä. Tarkista lokit tai ole yhteydessä ylläpitoon.", "restored" : "palautettu", "No deleted files" : "Ei poistettuja tiedostoja", "You will be able to recover deleted files from here" : "Voit palauttaa poistettuja tiedostoja tätä kautta", "No entries found in this folder" : "Ei kohteita tässä kansiossa", "Select all" : "Valitse kaikki", "Name" : "Nimi", - "Deleted" : "Poistettu", - "Delete" : "Poista" + "Deleted" : "Poistettu" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/fi_FI.json b/apps/files_trashbin/l10n/fi_FI.json index 3e22acdf2c9..c4ead30d036 100644 --- a/apps/files_trashbin/l10n/fi_FI.json +++ b/apps/files_trashbin/l10n/fi_FI.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "Kohteen %s palautus epäonnistui", "Deleted files" : "Poistetut tiedostot", "Restore" : "Palauta", + "Delete" : "Poista", "Delete permanently" : "Poista pysyvästi", "Error" : "Virhe", + "This operation is forbidden" : "Tämä toiminto on kielletty", + "This directory is unavailable, please check the logs or contact the administrator" : "Hakemisto ei ole käytettävissä. Tarkista lokit tai ole yhteydessä ylläpitoon.", "restored" : "palautettu", "No deleted files" : "Ei poistettuja tiedostoja", "You will be able to recover deleted files from here" : "Voit palauttaa poistettuja tiedostoja tätä kautta", "No entries found in this folder" : "Ei kohteita tässä kansiossa", "Select all" : "Valitse kaikki", "Name" : "Nimi", - "Deleted" : "Poistettu", - "Delete" : "Poista" + "Deleted" : "Poistettu" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/fr.js b/apps/files_trashbin/l10n/fr.js index 573977570a7..402644ecdb2 100644 --- a/apps/files_trashbin/l10n/fr.js +++ b/apps/files_trashbin/l10n/fr.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "Impossible de restaurer %s", "Deleted files" : "Fichiers supprimés", "Restore" : "Restaurer", + "Delete" : "Supprimer", "Delete permanently" : "Supprimer de façon définitive", "Error" : "Erreur", + "This operation is forbidden" : "Cette opération est interdite", + "This directory is unavailable, please check the logs or contact the administrator" : "Ce répertoire n'est pas disponible. Consultez les logs ou contactez votre administrateur", "restored" : "restauré", "No deleted files" : "Aucun fichier supprimé", "You will be able to recover deleted files from here" : "Vous pourrez restaurer vos fichiers supprimés ici", "No entries found in this folder" : "Aucune entrée trouvée dans ce dossier", "Select all" : "Tout sélectionner", "Name" : "Nom", - "Deleted" : "Effacé", - "Delete" : "Supprimer" + "Deleted" : "Effacé" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files_trashbin/l10n/fr.json b/apps/files_trashbin/l10n/fr.json index f4525b9d079..029c6bab0b5 100644 --- a/apps/files_trashbin/l10n/fr.json +++ b/apps/files_trashbin/l10n/fr.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "Impossible de restaurer %s", "Deleted files" : "Fichiers supprimés", "Restore" : "Restaurer", + "Delete" : "Supprimer", "Delete permanently" : "Supprimer de façon définitive", "Error" : "Erreur", + "This operation is forbidden" : "Cette opération est interdite", + "This directory is unavailable, please check the logs or contact the administrator" : "Ce répertoire n'est pas disponible. Consultez les logs ou contactez votre administrateur", "restored" : "restauré", "No deleted files" : "Aucun fichier supprimé", "You will be able to recover deleted files from here" : "Vous pourrez restaurer vos fichiers supprimés ici", "No entries found in this folder" : "Aucune entrée trouvée dans ce dossier", "Select all" : "Tout sélectionner", "Name" : "Nom", - "Deleted" : "Effacé", - "Delete" : "Supprimer" + "Deleted" : "Effacé" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/gl.js b/apps/files_trashbin/l10n/gl.js index a6ea37031a0..52ce23875a0 100644 --- a/apps/files_trashbin/l10n/gl.js +++ b/apps/files_trashbin/l10n/gl.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "Non foi posíbel restaurar %s", "Deleted files" : "Ficheiros eliminados", "Restore" : "Restabelecer", + "Delete" : "Eliminar", "Delete permanently" : "Eliminar permanentemente", "Error" : "Erro", + "This operation is forbidden" : "Esta operación está prohibida", + "This directory is unavailable, please check the logs or contact the administrator" : "Este directorio non está dispoñíbel, comprobe os rexistros ou póñase en contacto co administrador", "restored" : "restaurado", "No deleted files" : "Non hai ficheiros eliminados", "You will be able to recover deleted files from here" : "Poderá recuperar ficheiros borrados de aquí", "No entries found in this folder" : "Non se atoparon entradas neste cartafol", "Select all" : "Seleccionar todo", "Name" : "Nome", - "Deleted" : "Eliminado", - "Delete" : "Eliminar" + "Deleted" : "Eliminado" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/gl.json b/apps/files_trashbin/l10n/gl.json index da3aa55fa3f..89df0d2813f 100644 --- a/apps/files_trashbin/l10n/gl.json +++ b/apps/files_trashbin/l10n/gl.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "Non foi posíbel restaurar %s", "Deleted files" : "Ficheiros eliminados", "Restore" : "Restabelecer", + "Delete" : "Eliminar", "Delete permanently" : "Eliminar permanentemente", "Error" : "Erro", + "This operation is forbidden" : "Esta operación está prohibida", + "This directory is unavailable, please check the logs or contact the administrator" : "Este directorio non está dispoñíbel, comprobe os rexistros ou póñase en contacto co administrador", "restored" : "restaurado", "No deleted files" : "Non hai ficheiros eliminados", "You will be able to recover deleted files from here" : "Poderá recuperar ficheiros borrados de aquí", "No entries found in this folder" : "Non se atoparon entradas neste cartafol", "Select all" : "Seleccionar todo", "Name" : "Nome", - "Deleted" : "Eliminado", - "Delete" : "Eliminar" + "Deleted" : "Eliminado" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/he.js b/apps/files_trashbin/l10n/he.js index 95e5f391151..e63798008b5 100644 --- a/apps/files_trashbin/l10n/he.js +++ b/apps/files_trashbin/l10n/he.js @@ -5,11 +5,11 @@ OC.L10N.register( "Couldn't restore %s" : "לא ניתן לשחזר את %s", "Deleted files" : "קבצים שנמחקו", "Restore" : "שחזור", + "Delete" : "מחיקה", "Delete permanently" : "מחיקה לצמיתות", "Error" : "שגיאה", "restored" : "שוחזר", "Name" : "שם", - "Deleted" : "נמחק", - "Delete" : "מחיקה" + "Deleted" : "נמחק" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/he.json b/apps/files_trashbin/l10n/he.json index 68f38e819ff..1f65ace6a90 100644 --- a/apps/files_trashbin/l10n/he.json +++ b/apps/files_trashbin/l10n/he.json @@ -3,11 +3,11 @@ "Couldn't restore %s" : "לא ניתן לשחזר את %s", "Deleted files" : "קבצים שנמחקו", "Restore" : "שחזור", + "Delete" : "מחיקה", "Delete permanently" : "מחיקה לצמיתות", "Error" : "שגיאה", "restored" : "שוחזר", "Name" : "שם", - "Deleted" : "נמחק", - "Delete" : "מחיקה" + "Deleted" : "נמחק" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/hr.js b/apps/files_trashbin/l10n/hr.js index 89db9a16b98..476b0938c77 100644 --- a/apps/files_trashbin/l10n/hr.js +++ b/apps/files_trashbin/l10n/hr.js @@ -5,13 +5,13 @@ OC.L10N.register( "Couldn't restore %s" : "Nije moguće obnoviti %s", "Deleted files" : "Izbrisane datoteke", "Restore" : "Obnovite", + "Delete" : "Izbrišite", "Delete permanently" : "Trajno izbrišite", "Error" : "Pogreška", "restored" : "Obnovljeno", "No entries found in this folder" : "Zapis nije pronadjen u ovom direktorijumu ", "Select all" : "Selektiraj sve", "Name" : "Naziv", - "Deleted" : "Izbrisano", - "Delete" : "Izbrišite" + "Deleted" : "Izbrisano" }, "nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"); diff --git a/apps/files_trashbin/l10n/hr.json b/apps/files_trashbin/l10n/hr.json index d74addf2ca7..877d486fb80 100644 --- a/apps/files_trashbin/l10n/hr.json +++ b/apps/files_trashbin/l10n/hr.json @@ -3,13 +3,13 @@ "Couldn't restore %s" : "Nije moguće obnoviti %s", "Deleted files" : "Izbrisane datoteke", "Restore" : "Obnovite", + "Delete" : "Izbrišite", "Delete permanently" : "Trajno izbrišite", "Error" : "Pogreška", "restored" : "Obnovljeno", "No entries found in this folder" : "Zapis nije pronadjen u ovom direktorijumu ", "Select all" : "Selektiraj sve", "Name" : "Naziv", - "Deleted" : "Izbrisano", - "Delete" : "Izbrišite" + "Deleted" : "Izbrisano" },"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/hu_HU.js b/apps/files_trashbin/l10n/hu_HU.js index 0df2816a312..5fac34bbb2d 100644 --- a/apps/files_trashbin/l10n/hu_HU.js +++ b/apps/files_trashbin/l10n/hu_HU.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "Nem sikerült %s visszaállítása", "Deleted files" : "Törölt fájlok", "Restore" : "Visszaállítás", + "Delete" : "Törlés", "Delete permanently" : "Végleges törlés", "Error" : "Hiba", + "This operation is forbidden" : "Tiltott művelet", + "This directory is unavailable, please check the logs or contact the administrator" : "Ez a könyvtár nem elérhető, kérem nézze meg a naplófájlokat vagy keresse az adminisztrátort", "restored" : "visszaállítva", "No deleted files" : "Nincs törölt fájl", "You will be able to recover deleted files from here" : "Innen vissza tudja állítani a törölt fáljait.", "No entries found in this folder" : "Nincsenek bejegyzések ebben a könyvtárban", "Select all" : "Összes kijelölése", "Name" : "Név", - "Deleted" : "Törölve", - "Delete" : "Törlés" + "Deleted" : "Törölve" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/hu_HU.json b/apps/files_trashbin/l10n/hu_HU.json index 331cd210721..866c885a5d8 100644 --- a/apps/files_trashbin/l10n/hu_HU.json +++ b/apps/files_trashbin/l10n/hu_HU.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "Nem sikerült %s visszaállítása", "Deleted files" : "Törölt fájlok", "Restore" : "Visszaállítás", + "Delete" : "Törlés", "Delete permanently" : "Végleges törlés", "Error" : "Hiba", + "This operation is forbidden" : "Tiltott művelet", + "This directory is unavailable, please check the logs or contact the administrator" : "Ez a könyvtár nem elérhető, kérem nézze meg a naplófájlokat vagy keresse az adminisztrátort", "restored" : "visszaállítva", "No deleted files" : "Nincs törölt fájl", "You will be able to recover deleted files from here" : "Innen vissza tudja állítani a törölt fáljait.", "No entries found in this folder" : "Nincsenek bejegyzések ebben a könyvtárban", "Select all" : "Összes kijelölése", "Name" : "Név", - "Deleted" : "Törölve", - "Delete" : "Törlés" + "Deleted" : "Törölve" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/ia.js b/apps/files_trashbin/l10n/ia.js index 1ae952f8c9b..04e773a81bc 100644 --- a/apps/files_trashbin/l10n/ia.js +++ b/apps/files_trashbin/l10n/ia.js @@ -1,8 +1,8 @@ OC.L10N.register( "files_trashbin", { + "Delete" : "Deler", "Error" : "Error", - "Name" : "Nomine", - "Delete" : "Deler" + "Name" : "Nomine" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/ia.json b/apps/files_trashbin/l10n/ia.json index 909e6dfe769..fa4d526c849 100644 --- a/apps/files_trashbin/l10n/ia.json +++ b/apps/files_trashbin/l10n/ia.json @@ -1,6 +1,6 @@ { "translations": { + "Delete" : "Deler", "Error" : "Error", - "Name" : "Nomine", - "Delete" : "Deler" + "Name" : "Nomine" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/id.js b/apps/files_trashbin/l10n/id.js index 53827980ea9..499e1211e59 100644 --- a/apps/files_trashbin/l10n/id.js +++ b/apps/files_trashbin/l10n/id.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "Tidak dapat memulihkan %s", "Deleted files" : "Berkas yang dihapus", "Restore" : "Pulihkan", + "Delete" : "Hapus", "Delete permanently" : "Hapus secara permanen", "Error" : "Galat", + "This operation is forbidden" : "Operasi ini dilarang", + "This directory is unavailable, please check the logs or contact the administrator" : "Direktori ini tidak tersedia, silakan periksa log atau hubungi kontak", "restored" : "dipulihkan", "No deleted files" : "Tidak ada berkas yang dihapus", "You will be able to recover deleted files from here" : "Anda dapat memulihkan berkas yang dihapus dari sini", "No entries found in this folder" : "Tidak ada entri yang ditemukan dalam folder ini", "Select all" : "Pilih Semua", "Name" : "Nama", - "Deleted" : "Dihapus", - "Delete" : "Hapus" + "Deleted" : "Dihapus" }, "nplurals=1; plural=0;"); diff --git a/apps/files_trashbin/l10n/id.json b/apps/files_trashbin/l10n/id.json index d0d107a9571..491aad79f16 100644 --- a/apps/files_trashbin/l10n/id.json +++ b/apps/files_trashbin/l10n/id.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "Tidak dapat memulihkan %s", "Deleted files" : "Berkas yang dihapus", "Restore" : "Pulihkan", + "Delete" : "Hapus", "Delete permanently" : "Hapus secara permanen", "Error" : "Galat", + "This operation is forbidden" : "Operasi ini dilarang", + "This directory is unavailable, please check the logs or contact the administrator" : "Direktori ini tidak tersedia, silakan periksa log atau hubungi kontak", "restored" : "dipulihkan", "No deleted files" : "Tidak ada berkas yang dihapus", "You will be able to recover deleted files from here" : "Anda dapat memulihkan berkas yang dihapus dari sini", "No entries found in this folder" : "Tidak ada entri yang ditemukan dalam folder ini", "Select all" : "Pilih Semua", "Name" : "Nama", - "Deleted" : "Dihapus", - "Delete" : "Hapus" + "Deleted" : "Dihapus" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/is.js b/apps/files_trashbin/l10n/is.js index 38858a5a944..6c9250c21b6 100644 --- a/apps/files_trashbin/l10n/is.js +++ b/apps/files_trashbin/l10n/is.js @@ -5,6 +5,7 @@ OC.L10N.register( "Couldn't restore %s" : "Gat ekki endurheimt %s", "Deleted files" : "eyddar skrár", "Restore" : "Endurheimta", + "Delete" : "Eyða", "Delete permanently" : "Eyða varanlega", "Error" : "Villa", "restored" : "endurheimt", @@ -13,7 +14,6 @@ OC.L10N.register( "No entries found in this folder" : "Engar skrár fundust í þessari möppu", "Select all" : "Velja allt", "Name" : "Nafn", - "Deleted" : "Eytt", - "Delete" : "Eyða" + "Deleted" : "Eytt" }, "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); diff --git a/apps/files_trashbin/l10n/is.json b/apps/files_trashbin/l10n/is.json index ea2257a68ad..04d746c488d 100644 --- a/apps/files_trashbin/l10n/is.json +++ b/apps/files_trashbin/l10n/is.json @@ -3,6 +3,7 @@ "Couldn't restore %s" : "Gat ekki endurheimt %s", "Deleted files" : "eyddar skrár", "Restore" : "Endurheimta", + "Delete" : "Eyða", "Delete permanently" : "Eyða varanlega", "Error" : "Villa", "restored" : "endurheimt", @@ -11,7 +12,6 @@ "No entries found in this folder" : "Engar skrár fundust í þessari möppu", "Select all" : "Velja allt", "Name" : "Nafn", - "Deleted" : "Eytt", - "Delete" : "Eyða" + "Deleted" : "Eytt" },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/it.js b/apps/files_trashbin/l10n/it.js index 01840a9907c..2f98cd25e07 100644 --- a/apps/files_trashbin/l10n/it.js +++ b/apps/files_trashbin/l10n/it.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "Impossibile ripristinare %s", "Deleted files" : "File eliminati", "Restore" : "Ripristina", + "Delete" : "Elimina", "Delete permanently" : "Elimina definitivamente", "Error" : "Errore", + "This operation is forbidden" : "Questa operazione è vietata", + "This directory is unavailable, please check the logs or contact the administrator" : "Questa cartella non è disponibile, controlla i log o contatta l'amministratore", "restored" : "ripristinati", "No deleted files" : "Nessun file eliminato", "You will be able to recover deleted files from here" : "Potrai ripristinare i file eliminati da qui", "No entries found in this folder" : "Nessuna voce trovata in questa cartella", "Select all" : "Seleziona tutto", "Name" : "Nome", - "Deleted" : "Eliminati", - "Delete" : "Elimina" + "Deleted" : "Eliminati" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/it.json b/apps/files_trashbin/l10n/it.json index 89ee8efad16..3164a763c18 100644 --- a/apps/files_trashbin/l10n/it.json +++ b/apps/files_trashbin/l10n/it.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "Impossibile ripristinare %s", "Deleted files" : "File eliminati", "Restore" : "Ripristina", + "Delete" : "Elimina", "Delete permanently" : "Elimina definitivamente", "Error" : "Errore", + "This operation is forbidden" : "Questa operazione è vietata", + "This directory is unavailable, please check the logs or contact the administrator" : "Questa cartella non è disponibile, controlla i log o contatta l'amministratore", "restored" : "ripristinati", "No deleted files" : "Nessun file eliminato", "You will be able to recover deleted files from here" : "Potrai ripristinare i file eliminati da qui", "No entries found in this folder" : "Nessuna voce trovata in questa cartella", "Select all" : "Seleziona tutto", "Name" : "Nome", - "Deleted" : "Eliminati", - "Delete" : "Elimina" + "Deleted" : "Eliminati" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/ja.js b/apps/files_trashbin/l10n/ja.js index 6fdb9f3738e..880f391fbc9 100644 --- a/apps/files_trashbin/l10n/ja.js +++ b/apps/files_trashbin/l10n/ja.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "%s を復元できませんでした", "Deleted files" : "ゴミ箱", "Restore" : "復元", + "Delete" : "削除", "Delete permanently" : "完全に削除する", "Error" : "エラー", + "This operation is forbidden" : "この操作は禁止されています", + "This directory is unavailable, please check the logs or contact the administrator" : "このディレクトリは利用できません。ログを確認するか管理者に問い合わせてください。", "restored" : "復元済", "No deleted files" : "削除されたファイルはありません", "You will be able to recover deleted files from here" : "ここから削除されたファイルを元に戻すことができます。", "No entries found in this folder" : "このフォルダーにはエントリーがありません", "Select all" : "すべて選択", "Name" : "名前", - "Deleted" : "削除日時", - "Delete" : "削除" + "Deleted" : "削除日時" }, "nplurals=1; plural=0;"); diff --git a/apps/files_trashbin/l10n/ja.json b/apps/files_trashbin/l10n/ja.json index 1d07e8dd960..14172a324f2 100644 --- a/apps/files_trashbin/l10n/ja.json +++ b/apps/files_trashbin/l10n/ja.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "%s を復元できませんでした", "Deleted files" : "ゴミ箱", "Restore" : "復元", + "Delete" : "削除", "Delete permanently" : "完全に削除する", "Error" : "エラー", + "This operation is forbidden" : "この操作は禁止されています", + "This directory is unavailable, please check the logs or contact the administrator" : "このディレクトリは利用できません。ログを確認するか管理者に問い合わせてください。", "restored" : "復元済", "No deleted files" : "削除されたファイルはありません", "You will be able to recover deleted files from here" : "ここから削除されたファイルを元に戻すことができます。", "No entries found in this folder" : "このフォルダーにはエントリーがありません", "Select all" : "すべて選択", "Name" : "名前", - "Deleted" : "削除日時", - "Delete" : "削除" + "Deleted" : "削除日時" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/ka_GE.js b/apps/files_trashbin/l10n/ka_GE.js index cd578d4117a..71f465fe5b1 100644 --- a/apps/files_trashbin/l10n/ka_GE.js +++ b/apps/files_trashbin/l10n/ka_GE.js @@ -5,10 +5,10 @@ OC.L10N.register( "Couldn't restore %s" : "%s–ის აღდგენა ვერ მოხერხდა", "Deleted files" : "წაშლილი ფაილები", "Restore" : "აღდგენა", + "Delete" : "წაშლა", "Delete permanently" : "სრულად წაშლა", "Error" : "შეცდომა", "Name" : "სახელი", - "Deleted" : "წაშლილი", - "Delete" : "წაშლა" + "Deleted" : "წაშლილი" }, "nplurals=1; plural=0;"); diff --git a/apps/files_trashbin/l10n/ka_GE.json b/apps/files_trashbin/l10n/ka_GE.json index 11fc08b1255..e1721d96f29 100644 --- a/apps/files_trashbin/l10n/ka_GE.json +++ b/apps/files_trashbin/l10n/ka_GE.json @@ -3,10 +3,10 @@ "Couldn't restore %s" : "%s–ის აღდგენა ვერ მოხერხდა", "Deleted files" : "წაშლილი ფაილები", "Restore" : "აღდგენა", + "Delete" : "წაშლა", "Delete permanently" : "სრულად წაშლა", "Error" : "შეცდომა", "Name" : "სახელი", - "Deleted" : "წაშლილი", - "Delete" : "წაშლა" + "Deleted" : "წაშლილი" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/km.js b/apps/files_trashbin/l10n/km.js index fafbff1e665..b568abde589 100644 --- a/apps/files_trashbin/l10n/km.js +++ b/apps/files_trashbin/l10n/km.js @@ -5,11 +5,11 @@ OC.L10N.register( "Couldn't restore %s" : "មិនអាចស្ដារ %s ឡើងវិញបានទេ", "Deleted files" : "ឯកសារដែលបានលុប", "Restore" : "ស្ដារមកវិញ", + "Delete" : "លុប", "Delete permanently" : "លុបជាអចិន្ត្រៃយ៍", "Error" : "កំហុស", "restored" : "បានស្ដារវិញ", "Name" : "ឈ្មោះ", - "Deleted" : "បានលុប", - "Delete" : "លុប" + "Deleted" : "បានលុប" }, "nplurals=1; plural=0;"); diff --git a/apps/files_trashbin/l10n/km.json b/apps/files_trashbin/l10n/km.json index 0b291a61eb2..14481c4f2e7 100644 --- a/apps/files_trashbin/l10n/km.json +++ b/apps/files_trashbin/l10n/km.json @@ -3,11 +3,11 @@ "Couldn't restore %s" : "មិនអាចស្ដារ %s ឡើងវិញបានទេ", "Deleted files" : "ឯកសារដែលបានលុប", "Restore" : "ស្ដារមកវិញ", + "Delete" : "លុប", "Delete permanently" : "លុបជាអចិន្ត្រៃយ៍", "Error" : "កំហុស", "restored" : "បានស្ដារវិញ", "Name" : "ឈ្មោះ", - "Deleted" : "បានលុប", - "Delete" : "លុប" + "Deleted" : "បានលុប" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/kn.js b/apps/files_trashbin/l10n/kn.js index 4e918b5f06f..c9e17d94c58 100644 --- a/apps/files_trashbin/l10n/kn.js +++ b/apps/files_trashbin/l10n/kn.js @@ -2,9 +2,9 @@ OC.L10N.register( "files_trashbin", { "Restore" : "ಮರುಸ್ಥಾಪಿಸು", + "Delete" : "ಅಳಿಸಿ", "Error" : "ತಪ್ಪಾಗಿದೆ", "Select all" : "ಎಲ್ಲಾ ಆಯ್ಕೆ ಮಾಡಿ", - "Name" : "ಹೆಸರು", - "Delete" : "ಅಳಿಸಿ" + "Name" : "ಹೆಸರು" }, "nplurals=1; plural=0;"); diff --git a/apps/files_trashbin/l10n/kn.json b/apps/files_trashbin/l10n/kn.json index 174306ce04a..3bd9118dfce 100644 --- a/apps/files_trashbin/l10n/kn.json +++ b/apps/files_trashbin/l10n/kn.json @@ -1,8 +1,8 @@ { "translations": { "Restore" : "ಮರುಸ್ಥಾಪಿಸು", + "Delete" : "ಅಳಿಸಿ", "Error" : "ತಪ್ಪಾಗಿದೆ", "Select all" : "ಎಲ್ಲಾ ಆಯ್ಕೆ ಮಾಡಿ", - "Name" : "ಹೆಸರು", - "Delete" : "ಅಳಿಸಿ" + "Name" : "ಹೆಸರು" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/ko.js b/apps/files_trashbin/l10n/ko.js index d93dca056bb..36cb40288a3 100644 --- a/apps/files_trashbin/l10n/ko.js +++ b/apps/files_trashbin/l10n/ko.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "%s을(를) 복원할 수 없습니다", "Deleted files" : "삭제된 파일", "Restore" : "복원", + "Delete" : "삭제", "Delete permanently" : "영구히 삭제", "Error" : "오류", + "This operation is forbidden" : "이 작업이 금지됨", + "This directory is unavailable, please check the logs or contact the administrator" : "디렉터리를 사용할 수 없습니다. 로그를 확인하거나 관리자에게 연락하십시오", "restored" : "복원됨", "No deleted files" : "삭제된 파일 없음", "You will be able to recover deleted files from here" : "삭제된 파일을 여기에서 복구할 수 있습니다", "No entries found in this folder" : "이 폴더에 항목 없음", "Select all" : "모두 선택", "Name" : "이름", - "Deleted" : "삭제됨", - "Delete" : "삭제" + "Deleted" : "삭제됨" }, "nplurals=1; plural=0;"); diff --git a/apps/files_trashbin/l10n/ko.json b/apps/files_trashbin/l10n/ko.json index 25d1c888550..e95101dfce5 100644 --- a/apps/files_trashbin/l10n/ko.json +++ b/apps/files_trashbin/l10n/ko.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "%s을(를) 복원할 수 없습니다", "Deleted files" : "삭제된 파일", "Restore" : "복원", + "Delete" : "삭제", "Delete permanently" : "영구히 삭제", "Error" : "오류", + "This operation is forbidden" : "이 작업이 금지됨", + "This directory is unavailable, please check the logs or contact the administrator" : "디렉터리를 사용할 수 없습니다. 로그를 확인하거나 관리자에게 연락하십시오", "restored" : "복원됨", "No deleted files" : "삭제된 파일 없음", "You will be able to recover deleted files from here" : "삭제된 파일을 여기에서 복구할 수 있습니다", "No entries found in this folder" : "이 폴더에 항목 없음", "Select all" : "모두 선택", "Name" : "이름", - "Deleted" : "삭제됨", - "Delete" : "삭제" + "Deleted" : "삭제됨" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/lb.js b/apps/files_trashbin/l10n/lb.js index c83d9a3a28b..9b2aad6d8b0 100644 --- a/apps/files_trashbin/l10n/lb.js +++ b/apps/files_trashbin/l10n/lb.js @@ -5,6 +5,7 @@ OC.L10N.register( "Couldn't restore %s" : "Konnt %s net erëmhierstellen", "Deleted files" : "Geläscht Fichieren", "Restore" : "Erëmhierstellen", + "Delete" : "Läschen", "Delete permanently" : "Permanent läschen", "Error" : "Fehler", "restored" : "erëmhiergestallt", @@ -13,7 +14,6 @@ OC.L10N.register( "No entries found in this folder" : "Keng Elementer an dësem Dossier fonnt", "Select all" : "All auswielen", "Name" : "Numm", - "Deleted" : "Geläscht", - "Delete" : "Läschen" + "Deleted" : "Geläscht" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/lb.json b/apps/files_trashbin/l10n/lb.json index ca13342cb3b..f9c13ce017f 100644 --- a/apps/files_trashbin/l10n/lb.json +++ b/apps/files_trashbin/l10n/lb.json @@ -3,6 +3,7 @@ "Couldn't restore %s" : "Konnt %s net erëmhierstellen", "Deleted files" : "Geläscht Fichieren", "Restore" : "Erëmhierstellen", + "Delete" : "Läschen", "Delete permanently" : "Permanent läschen", "Error" : "Fehler", "restored" : "erëmhiergestallt", @@ -11,7 +12,6 @@ "No entries found in this folder" : "Keng Elementer an dësem Dossier fonnt", "Select all" : "All auswielen", "Name" : "Numm", - "Deleted" : "Geläscht", - "Delete" : "Läschen" + "Deleted" : "Geläscht" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/lt_LT.js b/apps/files_trashbin/l10n/lt_LT.js index afe317ca20a..1548afcc2ee 100644 --- a/apps/files_trashbin/l10n/lt_LT.js +++ b/apps/files_trashbin/l10n/lt_LT.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "Nepavyko atkurti %s", "Deleted files" : "Ištrinti failai", "Restore" : "Atstatyti", + "Delete" : "Ištrinti", "Delete permanently" : "Ištrinti negrįžtamai", "Error" : "Klaida", + "This operation is forbidden" : "Ši operacija yra uždrausta", + "This directory is unavailable, please check the logs or contact the administrator" : "Katalogas nepasiekiamas, prašome peržiūrėti žurnalo įrašus arba susisiekti su administratoriumi", "restored" : "atstatyta", "No deleted files" : "Nėra ištrintų failų", "You will be able to recover deleted files from here" : "Jūs galėsite atkurti ištrintus failus iš čia", "No entries found in this folder" : "Nerasta įrašų šiame aplanke", "Select all" : "Pažymėti viską", "Name" : "Pavadinimas", - "Deleted" : "Ištrinti", - "Delete" : "Ištrinti" + "Deleted" : "Ištrinti" }, "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_trashbin/l10n/lt_LT.json b/apps/files_trashbin/l10n/lt_LT.json index bf2cb31b588..51fab92428f 100644 --- a/apps/files_trashbin/l10n/lt_LT.json +++ b/apps/files_trashbin/l10n/lt_LT.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "Nepavyko atkurti %s", "Deleted files" : "Ištrinti failai", "Restore" : "Atstatyti", + "Delete" : "Ištrinti", "Delete permanently" : "Ištrinti negrįžtamai", "Error" : "Klaida", + "This operation is forbidden" : "Ši operacija yra uždrausta", + "This directory is unavailable, please check the logs or contact the administrator" : "Katalogas nepasiekiamas, prašome peržiūrėti žurnalo įrašus arba susisiekti su administratoriumi", "restored" : "atstatyta", "No deleted files" : "Nėra ištrintų failų", "You will be able to recover deleted files from here" : "Jūs galėsite atkurti ištrintus failus iš čia", "No entries found in this folder" : "Nerasta įrašų šiame aplanke", "Select all" : "Pažymėti viską", "Name" : "Pavadinimas", - "Deleted" : "Ištrinti", - "Delete" : "Ištrinti" + "Deleted" : "Ištrinti" },"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_trashbin/l10n/lv.js b/apps/files_trashbin/l10n/lv.js index 813ddd314e1..5629ba6af06 100644 --- a/apps/files_trashbin/l10n/lv.js +++ b/apps/files_trashbin/l10n/lv.js @@ -5,6 +5,7 @@ OC.L10N.register( "Couldn't restore %s" : "Nevarēja atjaunot %s", "Deleted files" : "Dzēstās datnes", "Restore" : "Atjaunot", + "Delete" : "Dzēst", "Delete permanently" : "Dzēst pavisam", "Error" : "Kļūda", "restored" : "atjaunots", @@ -13,7 +14,6 @@ OC.L10N.register( "No entries found in this folder" : "Šajā mapē nekas nav atrasts", "Select all" : "Atzīmēt visu", "Name" : "Nosaukums", - "Deleted" : "Dzēsts", - "Delete" : "Dzēst" + "Deleted" : "Dzēsts" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"); diff --git a/apps/files_trashbin/l10n/lv.json b/apps/files_trashbin/l10n/lv.json index 9c0ad01ce9a..4cf941bd21e 100644 --- a/apps/files_trashbin/l10n/lv.json +++ b/apps/files_trashbin/l10n/lv.json @@ -3,6 +3,7 @@ "Couldn't restore %s" : "Nevarēja atjaunot %s", "Deleted files" : "Dzēstās datnes", "Restore" : "Atjaunot", + "Delete" : "Dzēst", "Delete permanently" : "Dzēst pavisam", "Error" : "Kļūda", "restored" : "atjaunots", @@ -11,7 +12,6 @@ "No entries found in this folder" : "Šajā mapē nekas nav atrasts", "Select all" : "Atzīmēt visu", "Name" : "Nosaukums", - "Deleted" : "Dzēsts", - "Delete" : "Dzēst" + "Deleted" : "Dzēsts" },"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_trashbin/l10n/mk.js b/apps/files_trashbin/l10n/mk.js index f5286eac043..6acb933aa80 100644 --- a/apps/files_trashbin/l10n/mk.js +++ b/apps/files_trashbin/l10n/mk.js @@ -5,11 +5,11 @@ OC.L10N.register( "Couldn't restore %s" : "Не можеше да се поврати %s", "Deleted files" : "Избришани датотеки", "Restore" : "Поврати", + "Delete" : "Избриши", "Delete permanently" : "Трајно избришани", "Error" : "Грешка", "restored" : "повратени", "Name" : "Име", - "Deleted" : "Избришан", - "Delete" : "Избриши" + "Deleted" : "Избришан" }, "nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"); diff --git a/apps/files_trashbin/l10n/mk.json b/apps/files_trashbin/l10n/mk.json index 119a6c4f954..a9948f49ff6 100644 --- a/apps/files_trashbin/l10n/mk.json +++ b/apps/files_trashbin/l10n/mk.json @@ -3,11 +3,11 @@ "Couldn't restore %s" : "Не можеше да се поврати %s", "Deleted files" : "Избришани датотеки", "Restore" : "Поврати", + "Delete" : "Избриши", "Delete permanently" : "Трајно избришани", "Error" : "Грешка", "restored" : "повратени", "Name" : "Име", - "Deleted" : "Избришан", - "Delete" : "Избриши" + "Deleted" : "Избришан" },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/ms_MY.js b/apps/files_trashbin/l10n/ms_MY.js index 1441ab03bf9..22680ff254d 100644 --- a/apps/files_trashbin/l10n/ms_MY.js +++ b/apps/files_trashbin/l10n/ms_MY.js @@ -5,10 +5,10 @@ OC.L10N.register( "Couldn't restore %s" : "Tidak dapat memulihkan %s", "Deleted files" : "Fail dipadam", "Restore" : "Pulihkan", + "Delete" : "Padam", "Error" : "Ralat", "restored" : "dipulihkan", "Name" : "Nama", - "Deleted" : "Dipadam", - "Delete" : "Padam" + "Deleted" : "Dipadam" }, "nplurals=1; plural=0;"); diff --git a/apps/files_trashbin/l10n/ms_MY.json b/apps/files_trashbin/l10n/ms_MY.json index a2b674d23d5..340b46e78a1 100644 --- a/apps/files_trashbin/l10n/ms_MY.json +++ b/apps/files_trashbin/l10n/ms_MY.json @@ -3,10 +3,10 @@ "Couldn't restore %s" : "Tidak dapat memulihkan %s", "Deleted files" : "Fail dipadam", "Restore" : "Pulihkan", + "Delete" : "Padam", "Error" : "Ralat", "restored" : "dipulihkan", "Name" : "Nama", - "Deleted" : "Dipadam", - "Delete" : "Padam" + "Deleted" : "Dipadam" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/nb_NO.js b/apps/files_trashbin/l10n/nb_NO.js index 2c1fd5396ef..644ad102ae4 100644 --- a/apps/files_trashbin/l10n/nb_NO.js +++ b/apps/files_trashbin/l10n/nb_NO.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "Kunne ikke gjenopprette %s", "Deleted files" : "Slettede filer", "Restore" : "Gjenopprett", + "Delete" : "Slett", "Delete permanently" : "Slett permanent", "Error" : "Feil", + "This operation is forbidden" : "Operasjonen er forbudt", + "This directory is unavailable, please check the logs or contact the administrator" : "Denne mappen er utilgjengelig. Sjekk loggene eller kontakt administrator", "restored" : "gjenopprettet", "No deleted files" : "Ingen slettede filer", "You will be able to recover deleted files from here" : "Du vil kunne gjenopprette slettede filer herfra", "No entries found in this folder" : "Ingen oppføringer funnet i denne mappen", "Select all" : "Velg alle", "Name" : "Navn", - "Deleted" : "Slettet", - "Delete" : "Slett" + "Deleted" : "Slettet" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/nb_NO.json b/apps/files_trashbin/l10n/nb_NO.json index 44e6161fe18..442221a2c8c 100644 --- a/apps/files_trashbin/l10n/nb_NO.json +++ b/apps/files_trashbin/l10n/nb_NO.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "Kunne ikke gjenopprette %s", "Deleted files" : "Slettede filer", "Restore" : "Gjenopprett", + "Delete" : "Slett", "Delete permanently" : "Slett permanent", "Error" : "Feil", + "This operation is forbidden" : "Operasjonen er forbudt", + "This directory is unavailable, please check the logs or contact the administrator" : "Denne mappen er utilgjengelig. Sjekk loggene eller kontakt administrator", "restored" : "gjenopprettet", "No deleted files" : "Ingen slettede filer", "You will be able to recover deleted files from here" : "Du vil kunne gjenopprette slettede filer herfra", "No entries found in this folder" : "Ingen oppføringer funnet i denne mappen", "Select all" : "Velg alle", "Name" : "Navn", - "Deleted" : "Slettet", - "Delete" : "Slett" + "Deleted" : "Slettet" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/nds.js b/apps/files_trashbin/l10n/nds.js index b2dd9ff4ca6..8212e5210a9 100644 --- a/apps/files_trashbin/l10n/nds.js +++ b/apps/files_trashbin/l10n/nds.js @@ -2,6 +2,7 @@ OC.L10N.register( "files_trashbin", { "Delete" : "Löschen", + "Error" : "Fehler", "Name" : "Name" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/nds.json b/apps/files_trashbin/l10n/nds.json index 45b0caa74ac..d15a7c583ac 100644 --- a/apps/files_trashbin/l10n/nds.json +++ b/apps/files_trashbin/l10n/nds.json @@ -1,5 +1,6 @@ { "translations": { "Delete" : "Löschen", + "Error" : "Fehler", "Name" : "Name" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/nl.js b/apps/files_trashbin/l10n/nl.js index 4b9227b563f..1b536860ce6 100644 --- a/apps/files_trashbin/l10n/nl.js +++ b/apps/files_trashbin/l10n/nl.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "Kon %s niet herstellen", "Deleted files" : "Verwijderde bestanden", "Restore" : "Herstellen", + "Delete" : "Verwijder", "Delete permanently" : "Definitief verwijderen", "Error" : "Fout", + "This operation is forbidden" : "Deze taak is verboden", + "This directory is unavailable, please check the logs or contact the administrator" : "Deze map is niet beschikbaar. Verifieer de logs of neem contact op met de beheerder", "restored" : "hersteld", "No deleted files" : "Geen verwijderde bestanden", "You will be able to recover deleted files from here" : "U kunt verwijderde bestanden hier vandaan weer terugzetten", "No entries found in this folder" : "Niets gevonden in deze map", "Select all" : "Alles selecteren", "Name" : "Naam", - "Deleted" : "Verwijderd", - "Delete" : "Verwijder" + "Deleted" : "Verwijderd" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/nl.json b/apps/files_trashbin/l10n/nl.json index 7e78dde9baa..a80e1d8e1a9 100644 --- a/apps/files_trashbin/l10n/nl.json +++ b/apps/files_trashbin/l10n/nl.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "Kon %s niet herstellen", "Deleted files" : "Verwijderde bestanden", "Restore" : "Herstellen", + "Delete" : "Verwijder", "Delete permanently" : "Definitief verwijderen", "Error" : "Fout", + "This operation is forbidden" : "Deze taak is verboden", + "This directory is unavailable, please check the logs or contact the administrator" : "Deze map is niet beschikbaar. Verifieer de logs of neem contact op met de beheerder", "restored" : "hersteld", "No deleted files" : "Geen verwijderde bestanden", "You will be able to recover deleted files from here" : "U kunt verwijderde bestanden hier vandaan weer terugzetten", "No entries found in this folder" : "Niets gevonden in deze map", "Select all" : "Alles selecteren", "Name" : "Naam", - "Deleted" : "Verwijderd", - "Delete" : "Verwijder" + "Deleted" : "Verwijderd" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/nn_NO.js b/apps/files_trashbin/l10n/nn_NO.js index fc4a6a5cc37..c97071b9c66 100644 --- a/apps/files_trashbin/l10n/nn_NO.js +++ b/apps/files_trashbin/l10n/nn_NO.js @@ -5,11 +5,11 @@ OC.L10N.register( "Couldn't restore %s" : "Klarte ikkje gjenoppretta %s", "Deleted files" : "Sletta filer", "Restore" : "Gjenopprett", + "Delete" : "Slett", "Delete permanently" : "Slett for godt", "Error" : "Feil", "restored" : "gjenoppretta", "Name" : "Namn", - "Deleted" : "Sletta", - "Delete" : "Slett" + "Deleted" : "Sletta" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/nn_NO.json b/apps/files_trashbin/l10n/nn_NO.json index f8cf76ca3f4..acecd932b77 100644 --- a/apps/files_trashbin/l10n/nn_NO.json +++ b/apps/files_trashbin/l10n/nn_NO.json @@ -3,11 +3,11 @@ "Couldn't restore %s" : "Klarte ikkje gjenoppretta %s", "Deleted files" : "Sletta filer", "Restore" : "Gjenopprett", + "Delete" : "Slett", "Delete permanently" : "Slett for godt", "Error" : "Feil", "restored" : "gjenoppretta", "Name" : "Namn", - "Deleted" : "Sletta", - "Delete" : "Slett" + "Deleted" : "Sletta" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/oc.js b/apps/files_trashbin/l10n/oc.js index 390ccaea050..762d7a9b424 100644 --- a/apps/files_trashbin/l10n/oc.js +++ b/apps/files_trashbin/l10n/oc.js @@ -8,6 +8,8 @@ OC.L10N.register( "Delete" : "Suprimir", "Delete permanently" : "Suprimir de faiçon definitiva", "Error" : "Error", + "This operation is forbidden" : "L'operacion es interdicha", + "This directory is unavailable, please check the logs or contact the administrator" : "Aqueste repertòri es pas disponible. Consultatz los logs o contactatz vòstre administrator", "restored" : "restablit", "No deleted files" : "Cap de fichièr pas suprimit", "You will be able to recover deleted files from here" : "Poiretz restablir vòstres fichièrs suprimits aicí", diff --git a/apps/files_trashbin/l10n/oc.json b/apps/files_trashbin/l10n/oc.json index e2add0b3cdb..a48b12e0c6e 100644 --- a/apps/files_trashbin/l10n/oc.json +++ b/apps/files_trashbin/l10n/oc.json @@ -6,6 +6,8 @@ "Delete" : "Suprimir", "Delete permanently" : "Suprimir de faiçon definitiva", "Error" : "Error", + "This operation is forbidden" : "L'operacion es interdicha", + "This directory is unavailable, please check the logs or contact the administrator" : "Aqueste repertòri es pas disponible. Consultatz los logs o contactatz vòstre administrator", "restored" : "restablit", "No deleted files" : "Cap de fichièr pas suprimit", "You will be able to recover deleted files from here" : "Poiretz restablir vòstres fichièrs suprimits aicí", diff --git a/apps/files_trashbin/l10n/pa.js b/apps/files_trashbin/l10n/pa.js index 301d8f08c15..7c2bd3674dd 100644 --- a/apps/files_trashbin/l10n/pa.js +++ b/apps/files_trashbin/l10n/pa.js @@ -1,7 +1,7 @@ OC.L10N.register( "files_trashbin", { - "Error" : "ਗਲਤੀ", - "Delete" : "ਹਟਾਓ" + "Delete" : "ਹਟਾਓ", + "Error" : "ਗਲਤੀ" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/pa.json b/apps/files_trashbin/l10n/pa.json index 6ad75a4c997..aa150965640 100644 --- a/apps/files_trashbin/l10n/pa.json +++ b/apps/files_trashbin/l10n/pa.json @@ -1,5 +1,5 @@ { "translations": { - "Error" : "ਗਲਤੀ", - "Delete" : "ਹਟਾਓ" + "Delete" : "ਹਟਾਓ", + "Error" : "ਗਲਤੀ" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/pl.js b/apps/files_trashbin/l10n/pl.js index ba0a2e93bd3..0c11dab91d4 100644 --- a/apps/files_trashbin/l10n/pl.js +++ b/apps/files_trashbin/l10n/pl.js @@ -5,6 +5,7 @@ OC.L10N.register( "Couldn't restore %s" : "Nie można przywrócić %s", "Deleted files" : "Usunięte pliki", "Restore" : "Przywróć", + "Delete" : "Usuń", "Delete permanently" : "Trwale usuń", "Error" : "Błąd", "restored" : "przywrócony", @@ -13,7 +14,6 @@ OC.L10N.register( "No entries found in this folder" : "Brak wpisów w tym folderze", "Select all" : "Wybierz wszystko", "Name" : "Nazwa", - "Deleted" : "Usunięte", - "Delete" : "Usuń" + "Deleted" : "Usunięte" }, "nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files_trashbin/l10n/pl.json b/apps/files_trashbin/l10n/pl.json index 4fa8debaf29..8b56be020fb 100644 --- a/apps/files_trashbin/l10n/pl.json +++ b/apps/files_trashbin/l10n/pl.json @@ -3,6 +3,7 @@ "Couldn't restore %s" : "Nie można przywrócić %s", "Deleted files" : "Usunięte pliki", "Restore" : "Przywróć", + "Delete" : "Usuń", "Delete permanently" : "Trwale usuń", "Error" : "Błąd", "restored" : "przywrócony", @@ -11,7 +12,6 @@ "No entries found in this folder" : "Brak wpisów w tym folderze", "Select all" : "Wybierz wszystko", "Name" : "Nazwa", - "Deleted" : "Usunięte", - "Delete" : "Usuń" + "Deleted" : "Usunięte" },"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/pt_BR.js b/apps/files_trashbin/l10n/pt_BR.js index 737a522eea1..b1a3768a3bd 100644 --- a/apps/files_trashbin/l10n/pt_BR.js +++ b/apps/files_trashbin/l10n/pt_BR.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "Não foi possível restaurar %s", "Deleted files" : "Arquivos apagados", "Restore" : "Restaurar", + "Delete" : "Excluir", "Delete permanently" : "Excluir permanentemente", "Error" : "Erro", + "This operation is forbidden" : "Esta operação é proibida", + "This directory is unavailable, please check the logs or contact the administrator" : "Este diretório não está disponível, por favor, verifique os logs ou entre em contato com o administrador", "restored" : "restaurado", "No deleted files" : "Aquivos não removidos", "You will be able to recover deleted files from here" : "Você pode recuperar arquivos removidos daqui", "No entries found in this folder" : "Nenhuma entrada foi encontrada nesta pasta", "Select all" : "Selecionar tudo", "Name" : "Nome", - "Deleted" : "Excluído", - "Delete" : "Excluir" + "Deleted" : "Excluído" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files_trashbin/l10n/pt_BR.json b/apps/files_trashbin/l10n/pt_BR.json index 25ee0439d67..db2dc331d5d 100644 --- a/apps/files_trashbin/l10n/pt_BR.json +++ b/apps/files_trashbin/l10n/pt_BR.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "Não foi possível restaurar %s", "Deleted files" : "Arquivos apagados", "Restore" : "Restaurar", + "Delete" : "Excluir", "Delete permanently" : "Excluir permanentemente", "Error" : "Erro", + "This operation is forbidden" : "Esta operação é proibida", + "This directory is unavailable, please check the logs or contact the administrator" : "Este diretório não está disponível, por favor, verifique os logs ou entre em contato com o administrador", "restored" : "restaurado", "No deleted files" : "Aquivos não removidos", "You will be able to recover deleted files from here" : "Você pode recuperar arquivos removidos daqui", "No entries found in this folder" : "Nenhuma entrada foi encontrada nesta pasta", "Select all" : "Selecionar tudo", "Name" : "Nome", - "Deleted" : "Excluído", - "Delete" : "Excluir" + "Deleted" : "Excluído" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/pt_PT.js b/apps/files_trashbin/l10n/pt_PT.js index 8124af21751..8bcc248d948 100644 --- a/apps/files_trashbin/l10n/pt_PT.js +++ b/apps/files_trashbin/l10n/pt_PT.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "Não foi possível restaurar %s", "Deleted files" : "Ficheiros eliminados", "Restore" : "Restaurar", + "Delete" : "Eliminar", "Delete permanently" : "Eliminar permanentemente", "Error" : "Erro", + "This operation is forbidden" : "Esta operação é proibida", + "This directory is unavailable, please check the logs or contact the administrator" : "Esta diretoria está indisponível, por favor, verifique os registos ou contacte o administrador", "restored" : "Restaurado", "No deleted files" : "Sem ficheiros eliminados", "You will be able to recover deleted files from here" : "Poderá recuperar ficheiros apagados aqui", "No entries found in this folder" : "Não foram encontradas entradas nesta pasta", "Select all" : "Seleccionar todos", "Name" : "Nome", - "Deleted" : "Eliminado", - "Delete" : "Eliminar" + "Deleted" : "Eliminado" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/pt_PT.json b/apps/files_trashbin/l10n/pt_PT.json index f1fb924af59..e8bed1ea891 100644 --- a/apps/files_trashbin/l10n/pt_PT.json +++ b/apps/files_trashbin/l10n/pt_PT.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "Não foi possível restaurar %s", "Deleted files" : "Ficheiros eliminados", "Restore" : "Restaurar", + "Delete" : "Eliminar", "Delete permanently" : "Eliminar permanentemente", "Error" : "Erro", + "This operation is forbidden" : "Esta operação é proibida", + "This directory is unavailable, please check the logs or contact the administrator" : "Esta diretoria está indisponível, por favor, verifique os registos ou contacte o administrador", "restored" : "Restaurado", "No deleted files" : "Sem ficheiros eliminados", "You will be able to recover deleted files from here" : "Poderá recuperar ficheiros apagados aqui", "No entries found in this folder" : "Não foram encontradas entradas nesta pasta", "Select all" : "Seleccionar todos", "Name" : "Nome", - "Deleted" : "Eliminado", - "Delete" : "Eliminar" + "Deleted" : "Eliminado" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/ro.js b/apps/files_trashbin/l10n/ro.js index 89fb577014e..1c0df1c5157 100644 --- a/apps/files_trashbin/l10n/ro.js +++ b/apps/files_trashbin/l10n/ro.js @@ -5,13 +5,13 @@ OC.L10N.register( "Couldn't restore %s" : "Nu se poate recupera %s", "Deleted files" : "Sterge fisierele", "Restore" : "Restabilire", + "Delete" : "Șterge", "Delete permanently" : "Șterge permanent", "Error" : "Eroare", "restored" : "restaurat", "No deleted files" : "Nu sunt fișiere șterse", "Select all" : "Selectează tot", "Name" : "Nume", - "Deleted" : "A fost șters.", - "Delete" : "Șterge" + "Deleted" : "A fost șters." }, "nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"); diff --git a/apps/files_trashbin/l10n/ro.json b/apps/files_trashbin/l10n/ro.json index 6a68abae7fa..d7f01caca38 100644 --- a/apps/files_trashbin/l10n/ro.json +++ b/apps/files_trashbin/l10n/ro.json @@ -3,13 +3,13 @@ "Couldn't restore %s" : "Nu se poate recupera %s", "Deleted files" : "Sterge fisierele", "Restore" : "Restabilire", + "Delete" : "Șterge", "Delete permanently" : "Șterge permanent", "Error" : "Eroare", "restored" : "restaurat", "No deleted files" : "Nu sunt fișiere șterse", "Select all" : "Selectează tot", "Name" : "Nume", - "Deleted" : "A fost șters.", - "Delete" : "Șterge" + "Deleted" : "A fost șters." },"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/ru.js b/apps/files_trashbin/l10n/ru.js index b51486b6eb0..337d0b0a575 100644 --- a/apps/files_trashbin/l10n/ru.js +++ b/apps/files_trashbin/l10n/ru.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "%s не может быть восстановлен", "Deleted files" : "Удалённые файлы", "Restore" : "Восстановить", + "Delete" : "Удалить", "Delete permanently" : "Удалить окончательно", "Error" : "Ошибка", + "This operation is forbidden" : "Операция запрещена", + "This directory is unavailable, please check the logs or contact the administrator" : "Директория недоступна, пожалуйста проверьте журнал сообщений или свяжитесь с администратором", "restored" : "восстановлен", "No deleted files" : "Нет удалённых файлов", "You will be able to recover deleted files from here" : "Здесь вы сможете восстановить удалённые файлы", "No entries found in this folder" : "Нет элементов в этом каталоге", "Select all" : "Выделить все", "Name" : "Имя", - "Deleted" : "Удалён", - "Delete" : "Удалить" + "Deleted" : "Удалён" }, "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_trashbin/l10n/ru.json b/apps/files_trashbin/l10n/ru.json index 9fecb3a9641..2ab8d48476d 100644 --- a/apps/files_trashbin/l10n/ru.json +++ b/apps/files_trashbin/l10n/ru.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "%s не может быть восстановлен", "Deleted files" : "Удалённые файлы", "Restore" : "Восстановить", + "Delete" : "Удалить", "Delete permanently" : "Удалить окончательно", "Error" : "Ошибка", + "This operation is forbidden" : "Операция запрещена", + "This directory is unavailable, please check the logs or contact the administrator" : "Директория недоступна, пожалуйста проверьте журнал сообщений или свяжитесь с администратором", "restored" : "восстановлен", "No deleted files" : "Нет удалённых файлов", "You will be able to recover deleted files from here" : "Здесь вы сможете восстановить удалённые файлы", "No entries found in this folder" : "Нет элементов в этом каталоге", "Select all" : "Выделить все", "Name" : "Имя", - "Deleted" : "Удалён", - "Delete" : "Удалить" + "Deleted" : "Удалён" },"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_trashbin/l10n/si_LK.js b/apps/files_trashbin/l10n/si_LK.js index 2f8a62ccab8..84d0f86a7f6 100644 --- a/apps/files_trashbin/l10n/si_LK.js +++ b/apps/files_trashbin/l10n/si_LK.js @@ -1,8 +1,8 @@ OC.L10N.register( "files_trashbin", { + "Delete" : "මකා දමන්න", "Error" : "දෝෂයක්", - "Name" : "නම", - "Delete" : "මකා දමන්න" + "Name" : "නම" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/si_LK.json b/apps/files_trashbin/l10n/si_LK.json index c46fb9adcbc..467fc3e058c 100644 --- a/apps/files_trashbin/l10n/si_LK.json +++ b/apps/files_trashbin/l10n/si_LK.json @@ -1,6 +1,6 @@ { "translations": { + "Delete" : "මකා දමන්න", "Error" : "දෝෂයක්", - "Name" : "නම", - "Delete" : "මකා දමන්න" + "Name" : "නම" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/sk_SK.js b/apps/files_trashbin/l10n/sk_SK.js index 483691acf99..b4168ec5440 100644 --- a/apps/files_trashbin/l10n/sk_SK.js +++ b/apps/files_trashbin/l10n/sk_SK.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "Nemožno obnoviť %s", "Deleted files" : "Zmazané súbory", "Restore" : "Obnoviť", + "Delete" : "Zmazať", "Delete permanently" : "Zmazať natrvalo", "Error" : "Chyba", + "This operation is forbidden" : "Táto operácia je zakázaná", + "This directory is unavailable, please check the logs or contact the administrator" : "Priečinok je nedostupný, skontrolujte prosím logy, alebo kontaktujte správcu", "restored" : "obnovené", "No deleted files" : "Žiadne zmazané súbory", "You will be able to recover deleted files from here" : "Tu budete mať možnosť obnoviť zmazané súbory", "No entries found in this folder" : "V tomto priečinku nebolo nič nájdené", "Select all" : "Vybrať všetko", "Name" : "Názov", - "Deleted" : "Zmazané", - "Delete" : "Zmazať" + "Deleted" : "Zmazané" }, "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); diff --git a/apps/files_trashbin/l10n/sk_SK.json b/apps/files_trashbin/l10n/sk_SK.json index 90b91cd92be..b02227c7064 100644 --- a/apps/files_trashbin/l10n/sk_SK.json +++ b/apps/files_trashbin/l10n/sk_SK.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "Nemožno obnoviť %s", "Deleted files" : "Zmazané súbory", "Restore" : "Obnoviť", + "Delete" : "Zmazať", "Delete permanently" : "Zmazať natrvalo", "Error" : "Chyba", + "This operation is forbidden" : "Táto operácia je zakázaná", + "This directory is unavailable, please check the logs or contact the administrator" : "Priečinok je nedostupný, skontrolujte prosím logy, alebo kontaktujte správcu", "restored" : "obnovené", "No deleted files" : "Žiadne zmazané súbory", "You will be able to recover deleted files from here" : "Tu budete mať možnosť obnoviť zmazané súbory", "No entries found in this folder" : "V tomto priečinku nebolo nič nájdené", "Select all" : "Vybrať všetko", "Name" : "Názov", - "Deleted" : "Zmazané", - "Delete" : "Zmazať" + "Deleted" : "Zmazané" },"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/sl.js b/apps/files_trashbin/l10n/sl.js index 4287b3d860c..53654fe9504 100644 --- a/apps/files_trashbin/l10n/sl.js +++ b/apps/files_trashbin/l10n/sl.js @@ -5,6 +5,7 @@ OC.L10N.register( "Couldn't restore %s" : "Ni mogoče obnoviti %s", "Deleted files" : "Izbrisane datoteke", "Restore" : "Obnovi", + "Delete" : "Izbriši", "Delete permanently" : "Izbriši dokončno", "Error" : "Napaka", "restored" : "obnovljeno", @@ -13,7 +14,6 @@ OC.L10N.register( "No entries found in this folder" : "V tej mapi ni najdenih predmetov.", "Select all" : "izberi vse", "Name" : "Ime", - "Deleted" : "Izbrisano", - "Delete" : "Izbriši" + "Deleted" : "Izbrisano" }, "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"); diff --git a/apps/files_trashbin/l10n/sl.json b/apps/files_trashbin/l10n/sl.json index 0e996a2495b..4fbd296e3f6 100644 --- a/apps/files_trashbin/l10n/sl.json +++ b/apps/files_trashbin/l10n/sl.json @@ -3,6 +3,7 @@ "Couldn't restore %s" : "Ni mogoče obnoviti %s", "Deleted files" : "Izbrisane datoteke", "Restore" : "Obnovi", + "Delete" : "Izbriši", "Delete permanently" : "Izbriši dokončno", "Error" : "Napaka", "restored" : "obnovljeno", @@ -11,7 +12,6 @@ "No entries found in this folder" : "V tej mapi ni najdenih predmetov.", "Select all" : "izberi vse", "Name" : "Ime", - "Deleted" : "Izbrisano", - "Delete" : "Izbriši" + "Deleted" : "Izbrisano" },"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/sq.js b/apps/files_trashbin/l10n/sq.js index 3a1d0fed3bb..45348ca24b3 100644 --- a/apps/files_trashbin/l10n/sq.js +++ b/apps/files_trashbin/l10n/sq.js @@ -8,6 +8,8 @@ OC.L10N.register( "Delete" : "Fshije", "Delete permanently" : "Fshije përgjithmonë", "Error" : "Gabim", + "This operation is forbidden" : "Ky veprim është i ndaluar", + "This directory is unavailable, please check the logs or contact the administrator" : "Kjo drejtori nuk kapet, ju lutemi, kontrolloni regjistrat ose lidhuni me përgjegjësin", "restored" : "u rikthye", "No deleted files" : "Pa kartela të fshira", "You will be able to recover deleted files from here" : "Që këtu do të jeni në gjendje të rimerrni kartela të fshira", diff --git a/apps/files_trashbin/l10n/sq.json b/apps/files_trashbin/l10n/sq.json index 4f2c429cb75..a28078058c9 100644 --- a/apps/files_trashbin/l10n/sq.json +++ b/apps/files_trashbin/l10n/sq.json @@ -6,6 +6,8 @@ "Delete" : "Fshije", "Delete permanently" : "Fshije përgjithmonë", "Error" : "Gabim", + "This operation is forbidden" : "Ky veprim është i ndaluar", + "This directory is unavailable, please check the logs or contact the administrator" : "Kjo drejtori nuk kapet, ju lutemi, kontrolloni regjistrat ose lidhuni me përgjegjësin", "restored" : "u rikthye", "No deleted files" : "Pa kartela të fshira", "You will be able to recover deleted files from here" : "Që këtu do të jeni në gjendje të rimerrni kartela të fshira", diff --git a/apps/files_trashbin/l10n/sr.js b/apps/files_trashbin/l10n/sr.js index e9a4f79f94e..dc3c8b46bc7 100644 --- a/apps/files_trashbin/l10n/sr.js +++ b/apps/files_trashbin/l10n/sr.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "Не могу да вратим %s", "Deleted files" : "Обрисани фајлови", "Restore" : "Врати", + "Delete" : "Обриши", "Delete permanently" : "Обриши заувек", "Error" : "Грешка", + "This operation is forbidden" : "Ова радња је забрањена", + "This directory is unavailable, please check the logs or contact the administrator" : "Овај директоријум није доступан, проверите записе или контактирајте администратора", "restored" : "враћено", "No deleted files" : "Нема обрисаних фајлова", "You will be able to recover deleted files from here" : "Одавде ћете моћи да повратите обрисане фајлове", "No entries found in this folder" : "Нема ничега у овој фасцикли", "Select all" : "Означи све", "Name" : "Назив", - "Deleted" : "Обрисано", - "Delete" : "Обриши" + "Deleted" : "Обрисано" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files_trashbin/l10n/sr.json b/apps/files_trashbin/l10n/sr.json index e572b6a3e85..c57bbdb83d4 100644 --- a/apps/files_trashbin/l10n/sr.json +++ b/apps/files_trashbin/l10n/sr.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "Не могу да вратим %s", "Deleted files" : "Обрисани фајлови", "Restore" : "Врати", + "Delete" : "Обриши", "Delete permanently" : "Обриши заувек", "Error" : "Грешка", + "This operation is forbidden" : "Ова радња је забрањена", + "This directory is unavailable, please check the logs or contact the administrator" : "Овај директоријум није доступан, проверите записе или контактирајте администратора", "restored" : "враћено", "No deleted files" : "Нема обрисаних фајлова", "You will be able to recover deleted files from here" : "Одавде ћете моћи да повратите обрисане фајлове", "No entries found in this folder" : "Нема ничега у овој фасцикли", "Select all" : "Означи све", "Name" : "Назив", - "Deleted" : "Обрисано", - "Delete" : "Обриши" + "Deleted" : "Обрисано" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/sr@latin.js b/apps/files_trashbin/l10n/sr@latin.js index 24b57789fdb..e6eb817ccf3 100644 --- a/apps/files_trashbin/l10n/sr@latin.js +++ b/apps/files_trashbin/l10n/sr@latin.js @@ -5,6 +5,7 @@ OC.L10N.register( "Couldn't restore %s" : "Ne mogu da vratim %s", "Deleted files" : "Obrisani fajlovi", "Restore" : "Vrati", + "Delete" : "Obriši", "Delete permanently" : "Obriši zauvek", "Error" : "Greška", "restored" : "vraćeno", @@ -13,7 +14,6 @@ OC.L10N.register( "No entries found in this folder" : "Nema ničega u ovoj fascikli", "Select all" : "Označi sve", "Name" : "Naziv", - "Deleted" : "Obrisano", - "Delete" : "Obriši" + "Deleted" : "Obrisano" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files_trashbin/l10n/sr@latin.json b/apps/files_trashbin/l10n/sr@latin.json index 9351affd2a9..462e2f21e2a 100644 --- a/apps/files_trashbin/l10n/sr@latin.json +++ b/apps/files_trashbin/l10n/sr@latin.json @@ -3,6 +3,7 @@ "Couldn't restore %s" : "Ne mogu da vratim %s", "Deleted files" : "Obrisani fajlovi", "Restore" : "Vrati", + "Delete" : "Obriši", "Delete permanently" : "Obriši zauvek", "Error" : "Greška", "restored" : "vraćeno", @@ -11,7 +12,6 @@ "No entries found in this folder" : "Nema ničega u ovoj fascikli", "Select all" : "Označi sve", "Name" : "Naziv", - "Deleted" : "Obrisano", - "Delete" : "Obriši" + "Deleted" : "Obrisano" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/sv.js b/apps/files_trashbin/l10n/sv.js index d21f1418073..923d9cdd7db 100644 --- a/apps/files_trashbin/l10n/sv.js +++ b/apps/files_trashbin/l10n/sv.js @@ -8,6 +8,8 @@ OC.L10N.register( "Delete" : "Radera", "Delete permanently" : "Radera permanent", "Error" : "Fel", + "This operation is forbidden" : "Denna operation är förbjuden", + "This directory is unavailable, please check the logs or contact the administrator" : "Denna katalog är inte tillgänglig, kontrollera loggarna eller kontakta administratören", "restored" : "återställd", "No deleted files" : "Inga borttagna filer", "You will be able to recover deleted files from here" : "Du kommer kunna återfå raderade filer härifrån", diff --git a/apps/files_trashbin/l10n/sv.json b/apps/files_trashbin/l10n/sv.json index 0b9052ea713..f9ae83cabd2 100644 --- a/apps/files_trashbin/l10n/sv.json +++ b/apps/files_trashbin/l10n/sv.json @@ -6,6 +6,8 @@ "Delete" : "Radera", "Delete permanently" : "Radera permanent", "Error" : "Fel", + "This operation is forbidden" : "Denna operation är förbjuden", + "This directory is unavailable, please check the logs or contact the administrator" : "Denna katalog är inte tillgänglig, kontrollera loggarna eller kontakta administratören", "restored" : "återställd", "No deleted files" : "Inga borttagna filer", "You will be able to recover deleted files from here" : "Du kommer kunna återfå raderade filer härifrån", diff --git a/apps/files_trashbin/l10n/ta_LK.js b/apps/files_trashbin/l10n/ta_LK.js index cd53239625e..c5514d9d218 100644 --- a/apps/files_trashbin/l10n/ta_LK.js +++ b/apps/files_trashbin/l10n/ta_LK.js @@ -1,8 +1,8 @@ OC.L10N.register( "files_trashbin", { + "Delete" : "நீக்குக", "Error" : "வழு", - "Name" : "பெயர்", - "Delete" : "நீக்குக" + "Name" : "பெயர்" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/ta_LK.json b/apps/files_trashbin/l10n/ta_LK.json index ade1c7f13e0..c46481e9da9 100644 --- a/apps/files_trashbin/l10n/ta_LK.json +++ b/apps/files_trashbin/l10n/ta_LK.json @@ -1,6 +1,6 @@ { "translations": { + "Delete" : "நீக்குக", "Error" : "வழு", - "Name" : "பெயர்", - "Delete" : "நீக்குக" + "Name" : "பெயர்" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/te.js b/apps/files_trashbin/l10n/te.js index e851ec86421..d9972912e61 100644 --- a/apps/files_trashbin/l10n/te.js +++ b/apps/files_trashbin/l10n/te.js @@ -1,9 +1,9 @@ OC.L10N.register( "files_trashbin", { + "Delete" : "తొలగించు", "Delete permanently" : "శాశ్వతంగా తొలగించు", "Error" : "పొరపాటు", - "Name" : "పేరు", - "Delete" : "తొలగించు" + "Name" : "పేరు" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/te.json b/apps/files_trashbin/l10n/te.json index 4df06631a0c..0e6c6557355 100644 --- a/apps/files_trashbin/l10n/te.json +++ b/apps/files_trashbin/l10n/te.json @@ -1,7 +1,7 @@ { "translations": { + "Delete" : "తొలగించు", "Delete permanently" : "శాశ్వతంగా తొలగించు", "Error" : "పొరపాటు", - "Name" : "పేరు", - "Delete" : "తొలగించు" + "Name" : "పేరు" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/th_TH.js b/apps/files_trashbin/l10n/th_TH.js index e294f592e84..487b457deb3 100644 --- a/apps/files_trashbin/l10n/th_TH.js +++ b/apps/files_trashbin/l10n/th_TH.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "ไม่สามารถกู้คืน %s", "Deleted files" : "ไฟล์ที่ถูกลบ", "Restore" : "คืนค่า", + "Delete" : "ลบ", "Delete permanently" : "ลบแบบถาวร", "Error" : "ข้อผิดพลาด", + "This operation is forbidden" : "การดำเนินการนี้ถูกห้าม", + "This directory is unavailable, please check the logs or contact the administrator" : "ไม่สามารถใช้งานไดเรกทอรีนี้โปรดตรวจสอบบันทึกหรือติดต่อผู้ดูแลระบบ", "restored" : "การเรียกคืน", "No deleted files" : "ไม่มีไฟล์ที่ถูกลบ", "You will be able to recover deleted files from here" : "คุณจะสามารถกู้คืนไฟล์ที่ถูกลบจากที่นี่", "No entries found in this folder" : "ไม่พบรายการในโฟลเดอร์นี้", "Select all" : "เลือกทั้งหมด", "Name" : "ชื่อ", - "Deleted" : "ลบแล้ว", - "Delete" : "ลบ" + "Deleted" : "ลบแล้ว" }, "nplurals=1; plural=0;"); diff --git a/apps/files_trashbin/l10n/th_TH.json b/apps/files_trashbin/l10n/th_TH.json index 7dc7546f55b..db4bd2de209 100644 --- a/apps/files_trashbin/l10n/th_TH.json +++ b/apps/files_trashbin/l10n/th_TH.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "ไม่สามารถกู้คืน %s", "Deleted files" : "ไฟล์ที่ถูกลบ", "Restore" : "คืนค่า", + "Delete" : "ลบ", "Delete permanently" : "ลบแบบถาวร", "Error" : "ข้อผิดพลาด", + "This operation is forbidden" : "การดำเนินการนี้ถูกห้าม", + "This directory is unavailable, please check the logs or contact the administrator" : "ไม่สามารถใช้งานไดเรกทอรีนี้โปรดตรวจสอบบันทึกหรือติดต่อผู้ดูแลระบบ", "restored" : "การเรียกคืน", "No deleted files" : "ไม่มีไฟล์ที่ถูกลบ", "You will be able to recover deleted files from here" : "คุณจะสามารถกู้คืนไฟล์ที่ถูกลบจากที่นี่", "No entries found in this folder" : "ไม่พบรายการในโฟลเดอร์นี้", "Select all" : "เลือกทั้งหมด", "Name" : "ชื่อ", - "Deleted" : "ลบแล้ว", - "Delete" : "ลบ" + "Deleted" : "ลบแล้ว" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/tr.js b/apps/files_trashbin/l10n/tr.js index c6c73929555..e3f55f29aae 100644 --- a/apps/files_trashbin/l10n/tr.js +++ b/apps/files_trashbin/l10n/tr.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "%s geri yüklenemedi", "Deleted files" : "Silinmiş dosyalar", "Restore" : "Geri yükle", + "Delete" : "Sil", "Delete permanently" : "Kalıcı olarak sil", "Error" : "Hata", + "This operation is forbidden" : "Bu işlem yasak", + "This directory is unavailable, please check the logs or contact the administrator" : "Bu dizine yazılamıyor, lütfen günlüğü kontrol edin veya yönetici ile iletişime geçin", "restored" : "geri yüklendi", "No deleted files" : "Silinen dosya yok", "You will be able to recover deleted files from here" : "Silinen dosyalarınızı buradan kurtarabileceksiniz", "No entries found in this folder" : "Bu klasörde hiçbir girdi bulunamadı", "Select all" : "Tümünü seç", "Name" : "İsim", - "Deleted" : "Silinme", - "Delete" : "Sil" + "Deleted" : "Silinme" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files_trashbin/l10n/tr.json b/apps/files_trashbin/l10n/tr.json index 64f14af6674..d0f21497b5a 100644 --- a/apps/files_trashbin/l10n/tr.json +++ b/apps/files_trashbin/l10n/tr.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "%s geri yüklenemedi", "Deleted files" : "Silinmiş dosyalar", "Restore" : "Geri yükle", + "Delete" : "Sil", "Delete permanently" : "Kalıcı olarak sil", "Error" : "Hata", + "This operation is forbidden" : "Bu işlem yasak", + "This directory is unavailable, please check the logs or contact the administrator" : "Bu dizine yazılamıyor, lütfen günlüğü kontrol edin veya yönetici ile iletişime geçin", "restored" : "geri yüklendi", "No deleted files" : "Silinen dosya yok", "You will be able to recover deleted files from here" : "Silinen dosyalarınızı buradan kurtarabileceksiniz", "No entries found in this folder" : "Bu klasörde hiçbir girdi bulunamadı", "Select all" : "Tümünü seç", "Name" : "İsim", - "Deleted" : "Silinme", - "Delete" : "Sil" + "Deleted" : "Silinme" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/ug.js b/apps/files_trashbin/l10n/ug.js index 329a04416c2..244c0d92c17 100644 --- a/apps/files_trashbin/l10n/ug.js +++ b/apps/files_trashbin/l10n/ug.js @@ -2,10 +2,10 @@ OC.L10N.register( "files_trashbin", { "Deleted files" : "ئۆچۈرۈلگەن ھۆججەتلەر", + "Delete" : "ئۆچۈر", "Delete permanently" : "مەڭگۈلۈك ئۆچۈر", "Error" : "خاتالىق", "Name" : "ئاتى", - "Deleted" : "ئۆچۈرۈلدى", - "Delete" : "ئۆچۈر" + "Deleted" : "ئۆچۈرۈلدى" }, "nplurals=1; plural=0;"); diff --git a/apps/files_trashbin/l10n/ug.json b/apps/files_trashbin/l10n/ug.json index 60a915b2ee5..3c11d802b5f 100644 --- a/apps/files_trashbin/l10n/ug.json +++ b/apps/files_trashbin/l10n/ug.json @@ -1,9 +1,9 @@ { "translations": { "Deleted files" : "ئۆچۈرۈلگەن ھۆججەتلەر", + "Delete" : "ئۆچۈر", "Delete permanently" : "مەڭگۈلۈك ئۆچۈر", "Error" : "خاتالىق", "Name" : "ئاتى", - "Deleted" : "ئۆچۈرۈلدى", - "Delete" : "ئۆچۈر" + "Deleted" : "ئۆچۈرۈلدى" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/uk.js b/apps/files_trashbin/l10n/uk.js index 656a6f7b50b..eb3aca343d7 100644 --- a/apps/files_trashbin/l10n/uk.js +++ b/apps/files_trashbin/l10n/uk.js @@ -5,15 +5,16 @@ OC.L10N.register( "Couldn't restore %s" : "Неможливо відновити %s", "Deleted files" : "Видалені файли", "Restore" : "Відновити", + "Delete" : "Видалити", "Delete permanently" : "Видалити назавжди", "Error" : "Помилка", + "This operation is forbidden" : "Ця операція заборонена", "restored" : "відновлено", "No deleted files" : "Немає видалених файлів", "You will be able to recover deleted files from here" : "Ви зможете відновлювати видалені файли звідси", "No entries found in this folder" : "Записів не знайдено в цій папці", "Select all" : "Вибрати всі", "Name" : "Ім'я", - "Deleted" : "Видалено", - "Delete" : "Видалити" + "Deleted" : "Видалено" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files_trashbin/l10n/uk.json b/apps/files_trashbin/l10n/uk.json index bfd6860252e..47c17cd1d65 100644 --- a/apps/files_trashbin/l10n/uk.json +++ b/apps/files_trashbin/l10n/uk.json @@ -3,15 +3,16 @@ "Couldn't restore %s" : "Неможливо відновити %s", "Deleted files" : "Видалені файли", "Restore" : "Відновити", + "Delete" : "Видалити", "Delete permanently" : "Видалити назавжди", "Error" : "Помилка", + "This operation is forbidden" : "Ця операція заборонена", "restored" : "відновлено", "No deleted files" : "Немає видалених файлів", "You will be able to recover deleted files from here" : "Ви зможете відновлювати видалені файли звідси", "No entries found in this folder" : "Записів не знайдено в цій папці", "Select all" : "Вибрати всі", "Name" : "Ім'я", - "Deleted" : "Видалено", - "Delete" : "Видалити" + "Deleted" : "Видалено" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/ur_PK.js b/apps/files_trashbin/l10n/ur_PK.js index 2dbe75b304e..eaa9dca8e34 100644 --- a/apps/files_trashbin/l10n/ur_PK.js +++ b/apps/files_trashbin/l10n/ur_PK.js @@ -5,10 +5,10 @@ OC.L10N.register( "Couldn't restore %s" : "بحال نہيں کيا جا سکتا %s", "Deleted files" : "حذف شدہ فائليں", "Restore" : "بحال", + "Delete" : "حذف کریں", "Error" : "ایرر", "restored" : "بحال شدہ", "Name" : "اسم", - "Deleted" : "حذف شدہ ", - "Delete" : "حذف کریں" + "Deleted" : "حذف شدہ " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/ur_PK.json b/apps/files_trashbin/l10n/ur_PK.json index d7ec3662998..fd88573d62a 100644 --- a/apps/files_trashbin/l10n/ur_PK.json +++ b/apps/files_trashbin/l10n/ur_PK.json @@ -3,10 +3,10 @@ "Couldn't restore %s" : "بحال نہيں کيا جا سکتا %s", "Deleted files" : "حذف شدہ فائليں", "Restore" : "بحال", + "Delete" : "حذف کریں", "Error" : "ایرر", "restored" : "بحال شدہ", "Name" : "اسم", - "Deleted" : "حذف شدہ ", - "Delete" : "حذف کریں" + "Deleted" : "حذف شدہ " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/vi.js b/apps/files_trashbin/l10n/vi.js index c0ff36d90c3..660c8cf321b 100644 --- a/apps/files_trashbin/l10n/vi.js +++ b/apps/files_trashbin/l10n/vi.js @@ -5,6 +5,7 @@ OC.L10N.register( "Couldn't restore %s" : "Không thể khôi phục %s", "Deleted files" : "File đã bị xóa", "Restore" : "Khôi phục", + "Delete" : "Xóa", "Delete permanently" : "Xóa vĩnh vễn", "Error" : "Lỗi", "restored" : "khôi phục", @@ -13,7 +14,6 @@ OC.L10N.register( "No entries found in this folder" : "Chưa có mục nào trong thư mục", "Select all" : "Chọn tất cả", "Name" : "Tên", - "Deleted" : "Đã xóa", - "Delete" : "Xóa" + "Deleted" : "Đã xóa" }, "nplurals=1; plural=0;"); diff --git a/apps/files_trashbin/l10n/vi.json b/apps/files_trashbin/l10n/vi.json index a8b2c4a055e..ed25e642538 100644 --- a/apps/files_trashbin/l10n/vi.json +++ b/apps/files_trashbin/l10n/vi.json @@ -3,6 +3,7 @@ "Couldn't restore %s" : "Không thể khôi phục %s", "Deleted files" : "File đã bị xóa", "Restore" : "Khôi phục", + "Delete" : "Xóa", "Delete permanently" : "Xóa vĩnh vễn", "Error" : "Lỗi", "restored" : "khôi phục", @@ -11,7 +12,6 @@ "No entries found in this folder" : "Chưa có mục nào trong thư mục", "Select all" : "Chọn tất cả", "Name" : "Tên", - "Deleted" : "Đã xóa", - "Delete" : "Xóa" + "Deleted" : "Đã xóa" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/zh_CN.js b/apps/files_trashbin/l10n/zh_CN.js index 0ef17e35d62..be1eeab9348 100644 --- a/apps/files_trashbin/l10n/zh_CN.js +++ b/apps/files_trashbin/l10n/zh_CN.js @@ -5,15 +5,17 @@ OC.L10N.register( "Couldn't restore %s" : "无法恢复%s", "Deleted files" : "已删除文件", "Restore" : "恢复", + "Delete" : "删除", "Delete permanently" : "永久删除", "Error" : "错误", + "This operation is forbidden" : "操作被禁止", + "This directory is unavailable, please check the logs or contact the administrator" : "此目录不可用,请检查日志或联系管理员", "restored" : "已恢复", "No deleted files" : "无已删除文件", "You will be able to recover deleted files from here" : "你可以在此处恢复已删除的文件", "No entries found in this folder" : "此文件夹中无项目", "Select all" : "全部选择", "Name" : "名称", - "Deleted" : "已删除", - "Delete" : "删除" + "Deleted" : "已删除" }, "nplurals=1; plural=0;"); diff --git a/apps/files_trashbin/l10n/zh_CN.json b/apps/files_trashbin/l10n/zh_CN.json index 0349f643555..5d458254b87 100644 --- a/apps/files_trashbin/l10n/zh_CN.json +++ b/apps/files_trashbin/l10n/zh_CN.json @@ -3,15 +3,17 @@ "Couldn't restore %s" : "无法恢复%s", "Deleted files" : "已删除文件", "Restore" : "恢复", + "Delete" : "删除", "Delete permanently" : "永久删除", "Error" : "错误", + "This operation is forbidden" : "操作被禁止", + "This directory is unavailable, please check the logs or contact the administrator" : "此目录不可用,请检查日志或联系管理员", "restored" : "已恢复", "No deleted files" : "无已删除文件", "You will be able to recover deleted files from here" : "你可以在此处恢复已删除的文件", "No entries found in this folder" : "此文件夹中无项目", "Select all" : "全部选择", "Name" : "名称", - "Deleted" : "已删除", - "Delete" : "删除" + "Deleted" : "已删除" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/zh_HK.js b/apps/files_trashbin/l10n/zh_HK.js index 78811bbdd2c..8c3f5bda38a 100644 --- a/apps/files_trashbin/l10n/zh_HK.js +++ b/apps/files_trashbin/l10n/zh_HK.js @@ -1,8 +1,8 @@ OC.L10N.register( "files_trashbin", { + "Delete" : "刪除", "Error" : "錯誤", - "Name" : "名稱", - "Delete" : "刪除" + "Name" : "名稱" }, "nplurals=1; plural=0;"); diff --git a/apps/files_trashbin/l10n/zh_HK.json b/apps/files_trashbin/l10n/zh_HK.json index eaa123c49f4..559081426a0 100644 --- a/apps/files_trashbin/l10n/zh_HK.json +++ b/apps/files_trashbin/l10n/zh_HK.json @@ -1,6 +1,6 @@ { "translations": { + "Delete" : "刪除", "Error" : "錯誤", - "Name" : "名稱", - "Delete" : "刪除" + "Name" : "名稱" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/zh_TW.js b/apps/files_trashbin/l10n/zh_TW.js index e0ad6dbd723..76273723073 100644 --- a/apps/files_trashbin/l10n/zh_TW.js +++ b/apps/files_trashbin/l10n/zh_TW.js @@ -8,6 +8,8 @@ OC.L10N.register( "Delete" : "刪除", "Delete permanently" : "永久刪除", "Error" : "錯誤", + "This operation is forbidden" : "此動作被禁止", + "This directory is unavailable, please check the logs or contact the administrator" : "這個目錄無法存取,請檢查伺服器記錄檔或聯絡管理員", "restored" : "已還原", "No deleted files" : "沒有已刪除的檔案", "You will be able to recover deleted files from here" : "您可以從這裡還原已刪除的檔案", diff --git a/apps/files_trashbin/l10n/zh_TW.json b/apps/files_trashbin/l10n/zh_TW.json index 6a313220b58..18a8bb872f8 100644 --- a/apps/files_trashbin/l10n/zh_TW.json +++ b/apps/files_trashbin/l10n/zh_TW.json @@ -6,6 +6,8 @@ "Delete" : "刪除", "Delete permanently" : "永久刪除", "Error" : "錯誤", + "This operation is forbidden" : "此動作被禁止", + "This directory is unavailable, please check the logs or contact the administrator" : "這個目錄無法存取,請檢查伺服器記錄檔或聯絡管理員", "restored" : "已還原", "No deleted files" : "沒有已刪除的檔案", "You will be able to recover deleted files from here" : "您可以從這裡還原已刪除的檔案", diff --git a/apps/user_ldap/l10n/es.js b/apps/user_ldap/l10n/es.js index bfe48c28f99..e457978bcd7 100644 --- a/apps/user_ldap/l10n/es.js +++ b/apps/user_ldap/l10n/es.js @@ -24,6 +24,7 @@ OC.L10N.register( "Could not detect Base DN, please enter it manually." : "No se pudo detectar Base DN, por favor ingrésela manualmente.", "{nthServer}. Server" : "{nthServer}. servidor", "No object found in the given Base DN. Please revise." : "No se encuentra ningún objeto en la Base DN dada. Por favor revisar.", + "More than 1,000 directory entries available." : "Más de 1.000 entradas de directorios disponibles.", " entries available within the provided Base DN" : "entradas disponibles dentro de la BaseDN provista", "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Un error ocurrió. Por favor revise la Base DN, también como la configuración de la conexión y credenciales.", "Do you really want to delete the current Server Configuration?" : "¿Realmente desea eliminar la configuración actual del servidor?", diff --git a/apps/user_ldap/l10n/es.json b/apps/user_ldap/l10n/es.json index c8d64f6b9d6..ebce66270f1 100644 --- a/apps/user_ldap/l10n/es.json +++ b/apps/user_ldap/l10n/es.json @@ -22,6 +22,7 @@ "Could not detect Base DN, please enter it manually." : "No se pudo detectar Base DN, por favor ingrésela manualmente.", "{nthServer}. Server" : "{nthServer}. servidor", "No object found in the given Base DN. Please revise." : "No se encuentra ningún objeto en la Base DN dada. Por favor revisar.", + "More than 1,000 directory entries available." : "Más de 1.000 entradas de directorios disponibles.", " entries available within the provided Base DN" : "entradas disponibles dentro de la BaseDN provista", "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Un error ocurrió. Por favor revise la Base DN, también como la configuración de la conexión y credenciales.", "Do you really want to delete the current Server Configuration?" : "¿Realmente desea eliminar la configuración actual del servidor?", diff --git a/apps/user_ldap/l10n/lt_LT.js b/apps/user_ldap/l10n/lt_LT.js index e9429c0de2a..a5b85499804 100644 --- a/apps/user_ldap/l10n/lt_LT.js +++ b/apps/user_ldap/l10n/lt_LT.js @@ -4,9 +4,12 @@ OC.L10N.register( "Failed to clear the mappings." : "Nepavyko išvalyti sąsajų.", "Failed to delete the server configuration" : "Nepavyko pašalinti serverio konfigūracijos", "The configuration is valid and the connection could be established!" : "Konfigūracija yra tinkama bei prisijungta sėkmingai!", + "No action specified" : "Nepasirinktas veiksmas", "Select groups" : "Pasirinkti grupes", "Do you really want to delete the current Server Configuration?" : "Ar tikrai norite ištrinti dabartinę serverio konfigūraciją?", "Confirm Deletion" : "Patvirtinkite trynimą", + "_%s group found_::_%s groups found_" : ["Rasta %s grupė","Rastos %s grupės","Rastos %s grupės"], + "_%s user found_::_%s users found_" : ["Rastas %s vartotojas","Rasti %s vartotojai","Rasti %s vartotojai"], "Server" : "Serveris", "Users" : "Vartotojai", "Groups" : "Grupės", diff --git a/apps/user_ldap/l10n/lt_LT.json b/apps/user_ldap/l10n/lt_LT.json index 19ca042b62f..68dfbc38b9c 100644 --- a/apps/user_ldap/l10n/lt_LT.json +++ b/apps/user_ldap/l10n/lt_LT.json @@ -2,9 +2,12 @@ "Failed to clear the mappings." : "Nepavyko išvalyti sąsajų.", "Failed to delete the server configuration" : "Nepavyko pašalinti serverio konfigūracijos", "The configuration is valid and the connection could be established!" : "Konfigūracija yra tinkama bei prisijungta sėkmingai!", + "No action specified" : "Nepasirinktas veiksmas", "Select groups" : "Pasirinkti grupes", "Do you really want to delete the current Server Configuration?" : "Ar tikrai norite ištrinti dabartinę serverio konfigūraciją?", "Confirm Deletion" : "Patvirtinkite trynimą", + "_%s group found_::_%s groups found_" : ["Rasta %s grupė","Rastos %s grupės","Rastos %s grupės"], + "_%s user found_::_%s users found_" : ["Rastas %s vartotojas","Rasti %s vartotojai","Rasti %s vartotojai"], "Server" : "Serveris", "Users" : "Vartotojai", "Groups" : "Grupės", diff --git a/apps/user_ldap/l10n/oc.js b/apps/user_ldap/l10n/oc.js index 97ad04c7ec4..77cb592e402 100644 --- a/apps/user_ldap/l10n/oc.js +++ b/apps/user_ldap/l10n/oc.js @@ -24,6 +24,7 @@ OC.L10N.register( "Could not detect Base DN, please enter it manually." : "Impossible de detectar lo DN de basa, especificatz-lo manualament", "{nthServer}. Server" : "{nthServer}. Servidor", "No object found in the given Base DN. Please revise." : "Cap d'objècte pas trobat dins lo DN de basa especificat. Verificatz-lo.", + "More than 1,000 directory entries available." : "I a mai de 1000 entradas de repertòri disponiblas.", " entries available within the provided Base DN" : "entradas disponiblas dins lo DN de basa especificat", "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Una error s'es produsida. Verificatz lo DN de basa, e tanben los paramètres de connexion e las informacions d'identificacion.", "Do you really want to delete the current Server Configuration?" : "Sètz segur que volètz escafar la configuracion servidor actuala ?", diff --git a/apps/user_ldap/l10n/oc.json b/apps/user_ldap/l10n/oc.json index 8db8ef6297f..aa8d2b41861 100644 --- a/apps/user_ldap/l10n/oc.json +++ b/apps/user_ldap/l10n/oc.json @@ -22,6 +22,7 @@ "Could not detect Base DN, please enter it manually." : "Impossible de detectar lo DN de basa, especificatz-lo manualament", "{nthServer}. Server" : "{nthServer}. Servidor", "No object found in the given Base DN. Please revise." : "Cap d'objècte pas trobat dins lo DN de basa especificat. Verificatz-lo.", + "More than 1,000 directory entries available." : "I a mai de 1000 entradas de repertòri disponiblas.", " entries available within the provided Base DN" : "entradas disponiblas dins lo DN de basa especificat", "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Una error s'es produsida. Verificatz lo DN de basa, e tanben los paramètres de connexion e las informacions d'identificacion.", "Do you really want to delete the current Server Configuration?" : "Sètz segur que volètz escafar la configuracion servidor actuala ?", diff --git a/bower.json b/bower.json index e8bb9a35f32..77d7d75e85c 100644 --- a/bower.json +++ b/bower.json @@ -27,6 +27,8 @@ "strengthify": "0.4.2", "underscore": "~1.8.0", "bootstrap": "~3.3.5", - "backbone": "~1.2.1" + "backbone": "~1.2.1", + "davclient.js": "https://github.com/evert/davclient.js.git", + "es6-promise": "https://github.com/jakearchibald/es6-promise.git#~2.3.0" } } diff --git a/build/integration/features/bootstrap/FeatureContext.php b/build/integration/features/bootstrap/FeatureContext.php index 3d579f52810..b3d928bb21d 100644 --- a/build/integration/features/bootstrap/FeatureContext.php +++ b/build/integration/features/bootstrap/FeatureContext.php @@ -27,6 +27,9 @@ class FeatureContext implements Context, SnippetAcceptingContext { /** @var int */ private $sharingApiVersion = 1; + /** @var string*/ + private $davPath = "remote.php/webdav"; + /** @var SimpleXMLElement */ private $lastShareData = null; @@ -212,6 +215,13 @@ class FeatureContext implements Context, SnippetAcceptingContext { } /** + * @Given /^using dav path "([^"]*)"$/ + */ + public function usingDavPath($davPath) { + $this->davPath = $davPath; + } + + /** * @Given /^user "([^"]*)" exists$/ */ public function assureUserExists($user) { @@ -238,8 +248,23 @@ class FeatureContext implements Context, SnippetAcceptingContext { } /** - * @Given /^user "([^"]*)" belongs to group "([^"]*)"$/ + * @Then /^check that user "([^"]*)" belongs to group "([^"]*)"$/ */ + public function checkThatUserBelongsToGroup($user, $group) { + $fullUrl = $this->baseUrl . "v2.php/cloud/users/$user/groups"; + $client = new Client(); + $options = []; + if ($this->currentUser === 'admin') { + $options['auth'] = $this->adminUser; + } + + $this->response = $client->get($fullUrl, $options); + $respondedArray = $this->getArrayOfGroupsResponded($this->response); + sort($respondedArray); + PHPUnit_Framework_Assert::assertContains($group, $respondedArray); + PHPUnit_Framework_Assert::assertEquals(200, $this->response->getStatusCode()); + } + public function userBelongsToGroup($user, $group) { $fullUrl = $this->baseUrl . "v2.php/cloud/users/$user/groups"; $client = new Client(); @@ -251,8 +276,26 @@ class FeatureContext implements Context, SnippetAcceptingContext { $this->response = $client->get($fullUrl, $options); $groups = array($group); $respondedArray = $this->getArrayOfGroupsResponded($this->response); - PHPUnit_Framework_Assert::assertEquals($groups, $respondedArray, "", 0.0, 10, true); - PHPUnit_Framework_Assert::assertEquals(200, $this->response->getStatusCode()); + + if (array_key_exists($group, $respondedArray)) { + return True; + } else{ + return False; + } + } + + /** + * @Given /^user "([^"]*)" belongs to group "([^"]*)"$/ + */ + public function assureUserBelongsToGroup($user, $group){ + if (!$this->userBelongsToGroup($user, $group)){ + $previous_user = $this->currentUser; + $this->currentUser = "admin"; + $this->addingUserToGroup($user, $group); + $this->currentUser = $previous_user; + } + $this->checkThatUserBelongsToGroup($user, $group); + } /** @@ -566,10 +609,10 @@ class FeatureContext implements Context, SnippetAcceptingContext { } /** - * @When /^creating a public share with$/ + * @When /^creating a share with$/ * @param \Behat\Gherkin\Node\TableNode|null $formData */ - public function createPublicShare($body) { + public function creatingShare($body) { $fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v1/shares"; $client = new Client(); $options = []; @@ -767,7 +810,7 @@ class FeatureContext implements Context, SnippetAcceptingContext { elseif($contentExpected == "AN_URL"){ return $this->isExpectedUrl((string)$element->$field, "index.php/s/"); } - elseif ($element->$field == $contentExpected){ + elseif ((string)$element->$field == $contentExpected){ return True; } } @@ -818,10 +861,10 @@ class FeatureContext implements Context, SnippetAcceptingContext { PHPUnit_Framework_Assert::assertEquals(False, $this->isFieldInResponse('share_with', "$user")); } - public function isUserInSharedData($user){ + public function isUserOrGroupInSharedData($userOrGroup){ $data = $this->response->xml()->data[0]; foreach($data as $element) { - if ($element->share_with == $user){ + if ($element->share_with == $userOrGroup){ return True; } } @@ -841,13 +884,71 @@ class FeatureContext implements Context, SnippetAcceptingContext { $options['auth'] = [$user1, $this->regularUser]; } $this->response = $client->get($fullUrl, $options); - if ($this->isUserInSharedData($user2)){ + if ($this->isUserOrGroupInSharedData($user2)){ return; } else { $this->createShare($user1, $filepath, 0, $user2, null, null, null); } $this->response = $client->get($fullUrl, $options); - PHPUnit_Framework_Assert::assertEquals(True, $this->isUserInSharedData($user2)); + PHPUnit_Framework_Assert::assertEquals(True, $this->isUserOrGroupInSharedData($user2)); + } + + /** + * @Given /^file "([^"]*)" from user "([^"]*)" is shared with group "([^"]*)"$/ + */ + public function assureFileIsSharedWithGroup($filepath, $user, $group){ + $fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->sharingApiVersion}/shares" . "?path=$filepath"; + $client = new Client(); + $options = []; + if ($user === 'admin') { + $options['auth'] = $this->adminUser; + } else { + $options['auth'] = [$user, $this->regularUser]; + } + $this->response = $client->get($fullUrl, $options); + if ($this->isUserOrGroupInSharedData($group)){ + return; + } else { + $this->createShare($user, $filepath, 1, $group, null, null, null); + } + $this->response = $client->get($fullUrl, $options); + PHPUnit_Framework_Assert::assertEquals(True, $this->isUserOrGroupInSharedData($group)); + } + + public function makeDavRequest($user, $method, $path, $headers){ + $fullUrl = substr($this->baseUrl, 0, -4) . $this->davPath . "$path"; + $client = new Client(); + $options = []; + if ($user === 'admin') { + $options['auth'] = $this->adminUser; + } else { + $options['auth'] = [$user, $this->regularUser]; + } + $request = $client->createRequest($method, $fullUrl, $options); + foreach ($headers as $key => $value) { + $request->addHeader($key, $value); + } + //$this->response = $client->send($request); + return $client->send($request); + } + + /** + * @Given /^User "([^"]*)" moved file "([^"]*)" to "([^"]*)"$/ + */ + public function userMovedFile($user, $fileSource, $fileDestination){ + $fullUrl = substr($this->baseUrl, 0, -4) . $this->davPath; + $headers['Destination'] = $fullUrl . $fileDestination; + $this->response = $this->makeDavRequest($user, "MOVE", $fileSource, $headers); + PHPUnit_Framework_Assert::assertEquals(201, $this->response->getStatusCode()); + } + + /** + * @When /^User "([^"]*)" moves file "([^"]*)" to "([^"]*)"$/ + */ + public function userMovesFile($user, $fileSource, $fileDestination){ + $fullUrl = substr($this->baseUrl, 0, -4) . $this->davPath; + $headers['Destination'] = $fullUrl . $fileDestination; + $this->response = $this->makeDavRequest($user, "MOVE", $fileSource, $headers); } /** @@ -869,6 +970,26 @@ class FeatureContext implements Context, SnippetAcceptingContext { } /** + * @Then /^last share_id is included in the answer$/ + */ + public function checkingLastShareIDIsIncluded(){ + $share_id = $this->lastShareData->data[0]->id; + if (!$this->isFieldInResponse('id', $share_id)){ + PHPUnit_Framework_Assert::fail("Share id $share_id not found in response"); + } + } + + /** + * @Then /^last share_id is not included in the answer$/ + */ + public function checkingLastShareIDIsNotIncluded(){ + $share_id = $this->lastShareData->data[0]->id; + if ($this->isFieldInResponse('id', $share_id)){ + PHPUnit_Framework_Assert::fail("Share id $share_id has been found in response"); + } + } + + /** * @Then /^Share fields of last share match with$/ * @param \Behat\Gherkin\Node\TableNode|null $formData */ @@ -877,7 +998,9 @@ class FeatureContext implements Context, SnippetAcceptingContext { $fd = $body->getRowsHash(); foreach($fd as $field => $value) { - PHPUnit_Framework_Assert::assertEquals(True, $this->isFieldInResponse($field, $value)); + if (!$this->isFieldInResponse($field, $value)){ + PHPUnit_Framework_Assert::fail("$field" . " doesn't have value " . "$value"); + } } } } diff --git a/build/integration/features/sharing-v1.feature b/build/integration/features/sharing-v1.feature index 07c05af2f54..063a40b1d3c 100644 --- a/build/integration/features/sharing-v1.feature +++ b/build/integration/features/sharing-v1.feature @@ -1,6 +1,7 @@ Feature: sharing Background: Given using api version "1" + Given using dav path "remote.php/webdav" Scenario: Creating a new share with user Given user "user0" exists @@ -28,7 +29,7 @@ Feature: sharing Scenario: Creating a new public share Given user "user0" exists And As an "user0" - When creating a public share with + When creating a share with | path | welcome.txt | | shareType | 3 | Then the OCS status code should be "100" @@ -38,7 +39,7 @@ Feature: sharing Scenario: Creating a new public share with password Given user "user0" exists And As an "user0" - When creating a public share with + When creating a share with | path | welcome.txt | | shareType | 3 | | password | publicpw | @@ -49,7 +50,7 @@ Feature: sharing Scenario: Creating a new public share of a folder Given user "user0" exists And As an "user0" - When creating a public share with + When creating a share with | path | FOLDER | | shareType | 3 | | password | publicpw | @@ -68,7 +69,7 @@ Feature: sharing Scenario: Creating a new public share with password and adding an expiration date Given user "user0" exists And As an "user0" - When creating a public share with + When creating a share with | path | welcome.txt | | shareType | 3 | | password | publicpw | @@ -81,7 +82,7 @@ Feature: sharing Scenario: Creating a new public share, updating its expiration date and getting its info Given user "user0" exists And As an "user0" - When creating a public share with + When creating a share with | path | FOLDER | | shareType | 3 | And Updating last share with @@ -111,7 +112,7 @@ Feature: sharing Scenario: Creating a new public share, updating its password and getting its info Given user "user0" exists And As an "user0" - When creating a public share with + When creating a share with | path | FOLDER | | shareType | 3 | And Updating last share with @@ -140,7 +141,7 @@ Feature: sharing Scenario: Creating a new public share, updating its permissions and getting its info Given user "user0" exists And As an "user0" - When creating a public share with + When creating a share with | path | FOLDER | | shareType | 3 | And Updating last share with @@ -169,7 +170,7 @@ Feature: sharing Scenario: Creating a new public share, updating publicUpload option and getting its info Given user "user0" exists And As an "user0" - When creating a public share with + When creating a share with | path | FOLDER | | shareType | 3 | And Updating last share with @@ -272,6 +273,102 @@ Feature: sharing | share_with_displayname | user1 | | displayname_owner | user0 | + Scenario: keep group permissions in sync + Given As an "admin" + Given user "user0" exists + And user "user1" exists + And group "group1" exists + And user "user1" belongs to group "group1" + And file "textfile0.txt" from user "user0" is shared with group "group1" + And User "user1" moved file "/textfile0.txt" to "/FOLDER/textfile0.txt" + And As an "user0" + When Updating last share with + | permissions | 1 | + And Getting info of last share + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And Share fields of last share match with + | id | A_NUMBER | + | item_type | file | + | item_source | A_NUMBER | + | share_type | 1 | + | file_source | A_NUMBER | + | file_target | /textfile0.txt | + | permissions | 1 | + | stime | A_NUMBER | + | storage | A_NUMBER | + | mail_send | 0 | + | uid_owner | user0 | + | storage_id | home::user0 | + | file_parent | A_NUMBER | + | displayname_owner | user0 | + + Scenario: Sharee can see the share + Given user "user0" exists + And user "user1" exists + And file "textfile0.txt" from user "user0" is shared with user "user1" + And As an "user1" + When sending "GET" to "/apps/files_sharing/api/v1/shares?shared_with_me=true" + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And last share_id is included in the answer + + Scenario: User is not allowed to reshare file + As an "admin" + Given user "user0" exists + And user "user1" exists + And user "user2" exists + And As an "user0" + And creating a share with + | path | /textfile0.txt | + | shareType | 0 | + | shareWith | user1 | + | permissions | 8 | + And As an "user1" + When creating a share with + | path | /textfile0. (2).txt | + | shareType | 0 | + | shareWith | user2 | + | permissions | 31 | + Then the OCS status code should be "404" + And the HTTP status code should be "200" + + Scenario: User is not allowed to reshare file with more permissions + As an "admin" + Given user "user0" exists + And user "user1" exists + And user "user2" exists + And As an "user0" + And creating a share with + | path | /textfile0.txt | + | shareType | 0 | + | shareWith | user1 | + | permissions | 16 | + And As an "user1" + When creating a share with + | path | /textfile0. (2).txt | + | shareType | 0 | + | shareWith | user2 | + | permissions | 31 | + Then the OCS status code should be "404" + And the HTTP status code should be "200" + + Scenario: Delete all group shares + Given As an "admin" + And user "user0" exists + And user "user1" exists + And group "group1" exists + And user "user1" belongs to group "group1" + And file "textfile0.txt" from user "user0" is shared with group "group1" + And User "user1" moved file "/textfile0.txt" to "/FOLDER/textfile0.txt" + And As an "user0" + And Deleting last share + And As an "user1" + When sending "GET" to "/apps/files_sharing/api/v1/shares?shared_with_me=true" + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And last share_id is not included in the answer + Scenario: delete a share Given user "user0" exists And user "user1" exists diff --git a/build/integration/features/webdav-related.feature b/build/integration/features/webdav-related.feature new file mode 100644 index 00000000000..961b6b03431 --- /dev/null +++ b/build/integration/features/webdav-related.feature @@ -0,0 +1,23 @@ +Feature: sharing + Background: + Given using api version "1" + + Scenario: moving a file old way + Given using dav path "remote.php/webdav" + And As an "admin" + And user "user0" exists + When User "user0" moves file "/textfile0.txt" to "/FOLDER/textfile0.txt" + Then the HTTP status code should be "201" + + + + + + + + + + + + + diff --git a/buildjsdocs.sh b/buildjsdocs.sh index 90562558f66..57eefb29fd0 100755 --- a/buildjsdocs.sh +++ b/buildjsdocs.sh @@ -11,7 +11,7 @@ NPM="$(which npm 2>/dev/null)" PREFIX="build" OUTPUT_DIR="build/jsdocs" -JS_FILES="core/js/*.js apps/*/js/*.js" +JS_FILES="core/js/*.js core/js/**/*.js apps/*/js/*.js" if test -z "$NPM" then diff --git a/core/command/app/listapps.php b/core/command/app/listapps.php index e483037d45d..542420ee6b7 100644 --- a/core/command/app/listapps.php +++ b/core/command/app/listapps.php @@ -25,6 +25,7 @@ namespace OC\Core\Command\App; use OC\Core\Command\Base; use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; class ListApps extends Base { @@ -34,16 +35,32 @@ class ListApps extends Base { $this ->setName('app:list') ->setDescription('List all available apps') + ->addOption( + 'shipped', + null, + InputOption::VALUE_REQUIRED, + 'true - limit to shipped apps only, false - limit to non-shipped apps only' + ) ; } protected function execute(InputInterface $input, OutputInterface $output) { + if ($input->getOption('shipped') === 'true' || $input->getOption('shipped') === 'false'){ + $shouldFilterShipped = true; + $shippedFilter = $input->getOption('shipped') === 'true'; + } else { + $shouldFilterShipped = false; + } + $apps = \OC_App::getAllApps(); $enabledApps = $disabledApps = []; $versions = \OC_App::getAppVersions(); //sort enabled apps above disabled apps foreach ($apps as $app) { + if ($shouldFilterShipped && \OC_App::isShipped($app) !== $shippedFilter){ + continue; + } if (\OC_App::isEnabled($app)) { $enabledApps[] = $app; } else { diff --git a/core/js/core.json b/core/js/core.json index a80636e8463..c7621a08d62 100644 --- a/core/js/core.json +++ b/core/js/core.json @@ -8,7 +8,9 @@ "handlebars/handlebars.js", "blueimp-md5/js/md5.js", "bootstrap/js/tooltip.js", - "backbone/backbone.js" + "backbone/backbone.js", + "es6-promise/dist/es6-promise.js", + "davclient.js/lib/client.js" ], "libraries": [ "jquery-showpassword.js", @@ -39,6 +41,8 @@ "setupchecks.js", "../search/js/search.js", "mimetype.js", - "mimetypelist.js" + "mimetypelist.js", + "files/fileinfo.js", + "files/client.js" ] } diff --git a/core/js/files/client.js b/core/js/files/client.js new file mode 100644 index 00000000000..82cf3ff5121 --- /dev/null +++ b/core/js/files/client.js @@ -0,0 +1,691 @@ +/* + * Copyright (c) 2015 + * + * This file is licensed under the Affero General Public License version 3 + * or later. + * + * See the COPYING-README file. + * + */ + +/* global dav */ + +(function(OC, FileInfo) { + /** + * @class OC.Files.Client + * @classdesc Client to access files on the server + * + * @param {Object} options + * @param {String} options.host host name + * @param {int} [options.port] port + * @param {boolean} [options.useHTTPS] whether to use https + * @param {String} [options.root] root path + * @param {String} [options.userName] user name + * @param {String} [options.password] password + * + * @since 8.2 + */ + var Client = function(options) { + this._root = options.root; + if (this._root.charAt(this._root.length - 1) === '/') { + this._root = this._root.substr(0, this._root.length - 1); + } + + var url = 'http://'; + if (options.useHTTPS) { + url = 'https://'; + } + var credentials = ''; + if (options.userName) { + credentials += encodeURIComponent(options.userName); + } + if (options.password) { + credentials += ':' + encodeURIComponent(options.password); + } + if (credentials.length > 0) { + url += credentials + '@'; + } + + url += options.host + this._root; + this._defaultHeaders = options.defaultHeaders || {'X-Requested-With': 'XMLHttpRequest'}; + this._baseUrl = url; + this._client = new dav.Client({ + baseUrl: this._baseUrl, + xmlNamespaces: { + 'DAV:': 'd', + 'http://owncloud.org/ns': 'oc' + } + }); + this._client.xhrProvider = _.bind(this._xhrProvider, this); + }; + + Client.NS_OWNCLOUD = 'http://owncloud.org/ns'; + Client.NS_DAV = 'DAV:'; + Client._PROPFIND_PROPERTIES = [ + /** + * Modified time + */ + [Client.NS_DAV, 'getlastmodified'], + /** + * Etag + */ + [Client.NS_DAV, 'getetag'], + /** + * Mime type + */ + [Client.NS_DAV, 'getcontenttype'], + /** + * Resource type "collection" for folders, empty otherwise + */ + [Client.NS_DAV, 'resourcetype'], + /** + * File id + */ + [Client.NS_OWNCLOUD, 'fileid'], + /** + * Letter-coded permissions + */ + [Client.NS_OWNCLOUD, 'permissions'], + //[Client.NS_OWNCLOUD, 'downloadURL'], + /** + * Folder sizes + */ + [Client.NS_OWNCLOUD, 'size'], + /** + * File sizes + */ + [Client.NS_DAV, 'getcontentlength'] + ]; + + /** + * @memberof OC.Files + */ + Client.prototype = { + + /** + * Root path of the Webdav endpoint + * + * @type string + */ + _root: null, + + /** + * Client from the library + * + * @type dav.Client + */ + _client: null, + + /** + * Array of file info parsing functions. + * + * @type Array<OC.Files.Client~parseFileInfo> + */ + _fileInfoParsers: [], + + /** + * Returns the configured XHR provider for davclient + * @return {XMLHttpRequest} + */ + _xhrProvider: function() { + var headers = this._defaultHeaders; + var xhr = new XMLHttpRequest(); + var oldOpen = xhr.open; + // override open() method to add headers + xhr.open = function() { + var result = oldOpen.apply(this, arguments); + _.each(headers, function(value, key) { + xhr.setRequestHeader(key, value); + }); + return result; + }; + return xhr; + }, + + /** + * Prepends the base url to the given path sections + * + * @param {...String} path sections + * + * @return {String} base url + joined path, any leading or trailing slash + * will be kept + */ + _buildUrl: function() { + var path = this._buildPath.apply(this, arguments); + if (path.charAt([path.length - 1]) === '/') { + path = path.substr(0, path.length - 1); + } + if (path.charAt(0) === '/') { + path = path.substr(1); + } + return this._baseUrl + '/' + path; + }, + + /** + * Append the path to the root and also encode path + * sections + * + * @param {...String} path sections + * + * @return {String} joined path, any leading or trailing slash + * will be kept + */ + _buildPath: function() { + var path = OC.joinPaths.apply(this, arguments); + var sections = path.split('/'); + var i; + for (i = 0; i < sections.length; i++) { + sections[i] = encodeURIComponent(sections[i]); + } + path = sections.join('/'); + return path; + }, + + /** + * Parse headers string into a map + * + * @param {string} headersString headers list as string + * + * @return {Object.<String,Array>} map of header name to header contents + */ + _parseHeaders: function(headersString) { + var headerRows = headersString.split('\n'); + var headers = {}; + for (var i = 0; i < headerRows.length; i++) { + var sepPos = headerRows[i].indexOf(':'); + if (sepPos < 0) { + continue; + } + + var headerName = headerRows[i].substr(0, sepPos); + var headerValue = headerRows[i].substr(sepPos + 2); + + if (!headers[headerName]) { + // make it an array + headers[headerName] = []; + } + + headers[headerName].push(headerValue); + } + return headers; + }, + + /** + * Parses the etag response which is in double quotes. + * + * @param {string} etag etag value in double quotes + * + * @return {string} etag without double quotes + */ + _parseEtag: function(etag) { + if (etag.charAt(0) === '"') { + return etag.split('"')[1]; + } + return etag; + }, + + /** + * Parse Webdav result + * + * @param {Object} response XML object + * + * @return {Array.<FileInfo>} array of file info + */ + _parseFileInfo: function(response) { + var path = response.href; + if (path.substr(0, this._root.length) === this._root) { + path = path.substr(this._root.length); + } + + if (path.charAt(path.length - 1) === '/') { + path = path.substr(0, path.length - 1); + } + + path = '/' + decodeURIComponent(path); + + if (response.propStat.length === 1 && response.propStat[0].status !== 200) { + return null; + } + + var props = response.propStat[0].properties; + + var data = { + id: props['{' + Client.NS_OWNCLOUD + '}fileid'], + path: OC.dirname(path) || '/', + name: OC.basename(path), + mtime: new Date(props['{' + Client.NS_DAV + '}getlastmodified']) + }; + + var etagProp = props['{' + Client.NS_DAV + '}getetag']; + if (!_.isUndefined(etagProp)) { + data.etag = this._parseEtag(etagProp); + } + + var sizeProp = props['{' + Client.NS_DAV + '}getcontentlength']; + if (!_.isUndefined(sizeProp)) { + data.size = parseInt(sizeProp, 10); + } + + sizeProp = props['{' + Client.NS_OWNCLOUD + '}size']; + if (!_.isUndefined(sizeProp)) { + data.size = parseInt(sizeProp, 10); + } + + var contentType = props['{' + Client.NS_DAV + '}getcontenttype']; + if (!_.isUndefined(contentType)) { + data.mimetype = contentType; + } + + var resType = props['{' + Client.NS_DAV + '}resourcetype']; + var isFile = true; + if (!data.mimetype && resType) { + var xmlvalue = resType[0]; + if (xmlvalue.namespaceURI === Client.NS_DAV && xmlvalue.nodeName.split(':')[1] === 'collection') { + data.mimetype = 'httpd/unix-directory'; + isFile = false; + } + } + + data.permissions = OC.PERMISSION_READ; + var permissionProp = props['{' + Client.NS_OWNCLOUD + '}permissions']; + if (!_.isUndefined(permissionProp)) { + var permString = permissionProp || ''; + data.mountType = null; + for (var i = 0; i < permString.length; i++) { + var c = permString.charAt(i); + switch (c) { + // FIXME: twisted permissions + case 'C': + case 'K': + data.permissions |= OC.PERMISSION_CREATE; + if (!isFile) { + data.permissions |= OC.PERMISSION_UPDATE; + } + break; + case 'W': + if (isFile) { + // also add create permissions + data.permissions |= OC.PERMISSION_CREATE; + } + data.permissions |= OC.PERMISSION_UPDATE; + break; + case 'D': + data.permissions |= OC.PERMISSION_DELETE; + break; + case 'R': + data.permissions |= OC.PERMISSION_SHARE; + break; + case 'M': + if (!data.mountType) { + // TODO: how to identify external-root ? + data.mountType = 'external'; + } + break; + case 'S': + // TODO: how to identify shared-root ? + data.mountType = 'shared'; + break; + } + } + } + + // extend the parsed data using the custom parsers + _.each(this._fileInfoParsers, function(parserFunction) { + _.extend(data, parserFunction(response) || {}); + }); + + return new FileInfo(data); + }, + + /** + * Parse Webdav multistatus + * + * @param {Array} responses + */ + _parseResult: function(responses) { + var self = this; + return _.map(responses, function(response) { + return self._parseFileInfo(response); + }); + }, + + /** + * Returns whether the given status code means success + * + * @param {int} status status code + * + * @return true if status code is between 200 and 299 included + */ + _isSuccessStatus: function(status) { + return status >= 200 && status <= 299; + }, + + /** + * Returns the default PROPFIND properties to use during a call. + * + * @return {Array.<Object>} array of properties + */ + getPropfindProperties: function() { + if (!this._propfindProperties) { + this._propfindProperties = _.map(Client._PROPFIND_PROPERTIES, function(propDef) { + return '{' + propDef[0] + '}' + propDef[1]; + }); + } + return this._propfindProperties; + }, + + /** + * Lists the contents of a directory + * + * @param {String} path path to retrieve + * @param {Object} [options] options + * @param {boolean} [options.includeParent=false] set to true to keep + * the parent folder in the result list + * @param {Array} [options.properties] list of Webdav properties to retrieve + * + * @return {Promise} promise + */ + getFolderContents: function(path, options) { + if (!path) { + path = ''; + } + options = options || {}; + var self = this; + var deferred = $.Deferred(); + var promise = deferred.promise(); + var properties; + if (_.isUndefined(options.properties)) { + properties = this.getPropfindProperties(); + } else { + properties = options.properties; + } + + // TODO: headers + this._client.propFind( + this._buildUrl(path), + properties, + 1 + ).then(function(result) { + if (self._isSuccessStatus(result.status)) { + var results = self._parseResult(result.body); + if (!options || !options.includeParent) { + // remove root dir, the first entry + results.shift(); + } + deferred.resolve(result.status, results); + } else { + deferred.reject(result.status); + } + }); + return promise; + }, + + /** + * Returns the file info of a given path. + * + * @param {String} path path + * @param {Array} [options.properties] list of Webdav properties to retrieve + * + * @return {Promise} promise + */ + getFileInfo: function(path, options) { + if (!path) { + path = ''; + } + options = options || {}; + var self = this; + var deferred = $.Deferred(); + var promise = deferred.promise(); + var properties; + if (_.isUndefined(options.properties)) { + properties = this.getPropfindProperties(); + } else { + properties = options.properties; + } + + // TODO: headers + this._client.propFind( + this._buildUrl(path), + properties, + 0 + ).then( + function(result) { + if (self._isSuccessStatus(result.status)) { + deferred.resolve(result.status, self._parseResult([result.body])[0]); + } else { + deferred.reject(result.status); + } + } + ); + return promise; + }, + + /** + * Returns the contents of the given file. + * + * @param {String} path path to file + * + * @return {Promise} + */ + getFileContents: function(path) { + if (!path) { + throw 'Missing argument "path"'; + } + var self = this; + var deferred = $.Deferred(); + var promise = deferred.promise(); + + this._client.request( + 'GET', + this._buildUrl(path), + this._defaultHeaders + ).then( + function(result) { + if (self._isSuccessStatus(result.status)) { + deferred.resolve(result.status, result.body); + } else { + deferred.reject(result.status); + } + } + ); + return promise; + }, + + /** + * Puts the given data into the given file. + * + * @param {String} path path to file + * @param {String} body file body + * @param {Object} [options] + * @param {String} [options.contentType='text/plain'] content type + * @param {bool} [options.overwrite=true] whether to overwrite an existing file + * + * @return {Promise} + */ + putFileContents: function(path, body, options) { + if (!path) { + throw 'Missing argument "path"'; + } + var self = this; + var deferred = $.Deferred(); + var promise = deferred.promise(); + options = options || {}; + var headers = _.extend({}, this._defaultHeaders); + var contentType = 'text/plain'; + if (options.contentType) { + contentType = options.contentType; + } + + headers['Content-Type'] = contentType; + + if (_.isUndefined(options.overwrite) || options.overwrite) { + // will trigger 412 precondition failed if a file already exists + headers['If-None-Match'] = '*'; + } + + this._client.request( + 'PUT', + this._buildUrl(path), + headers, + body || '' + ).then( + function(result) { + if (self._isSuccessStatus(result.status)) { + deferred.resolve(result.status); + } else { + deferred.reject(result.status); + } + } + ); + return promise; + }, + + _simpleCall: function(method, path) { + if (!path) { + throw 'Missing argument "path"'; + } + + var self = this; + var deferred = $.Deferred(); + var promise = deferred.promise(); + + this._client.request( + method, + this._buildUrl(path), + this._defaultHeaders + ).then( + function(result) { + if (self._isSuccessStatus(result.status)) { + deferred.resolve(result.status); + } else { + deferred.reject(result.status); + } + } + ); + return promise; + }, + + /** + * Creates a directory + * + * @param {String} path path to create + * + * @return {Promise} + */ + createDirectory: function(path) { + return this._simpleCall('MKCOL', path); + }, + + /** + * Deletes a file or directory + * + * @param {String} path path to delete + * + * @return {Promise} + */ + remove: function(path) { + return this._simpleCall('DELETE', path); + }, + + /** + * Moves path to another path + * + * @param {String} path path to move + * @param {String} destinationPath destination path + * @param {boolean} [allowOverwrite=false] true to allow overwriting, + * false otherwise + * + * @return {Promise} promise + */ + move: function(path, destinationPath, allowOverwrite) { + if (!path) { + throw 'Missing argument "path"'; + } + if (!destinationPath) { + throw 'Missing argument "destinationPath"'; + } + + var self = this; + var deferred = $.Deferred(); + var promise = deferred.promise(); + var headers = + _.extend({ + 'Destination' : this._buildUrl(destinationPath) + }, this._defaultHeaders); + + if (!allowOverwrite) { + headers['Overwrite'] = 'F'; + } + + this._client.request( + 'MOVE', + this._buildUrl(path), + headers + ).then( + function(response) { + if (self._isSuccessStatus(response.status)) { + deferred.resolve(response.status); + } else { + deferred.reject(response.status); + } + } + ); + return promise; + }, + + /** + * Add a file info parser function + * + * @param {OC.Files.Client~parseFileInfo>} + */ + addFileInfoParser: function(parserFunction) { + this._fileInfoParsers.push(parserFunction); + } + + }; + + /** + * File info parser function + * + * This function receives a list of Webdav properties as input and + * should return a hash array of parsed properties, if applicable. + * + * @callback OC.Files.Client~parseFileInfo + * @param {Object} XML Webdav properties + * @return {Array} array of parsed property values + */ + + if (!OC.Files) { + /** + * @namespace OC.Files + * + * @since 8.2 + */ + OC.Files = {}; + } + + /** + * Returns the default instance of the files client + * + * @return {OC.Files.Client} default client + * + * @since 8.2 + */ + OC.Files.getClient = function() { + if (OC.Files._defaultClient) { + return OC.Files._defaultClient; + } + + var client = new OC.Files.Client({ + host: OC.getHost(), + port: OC.getPort(), + root: OC.linkToRemoteBase('webdav'), + useHTTPS: OC.getProtocol() === 'https' + }); + OC.Files._defaultClient = client; + return client; + }; + + OC.Files.Client = Client; +})(OC, OC.Files.FileInfo); + diff --git a/core/js/files/fileinfo.js b/core/js/files/fileinfo.js new file mode 100644 index 00000000000..3bf68d88b15 --- /dev/null +++ b/core/js/files/fileinfo.js @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2015 + * + * This file is licensed under the Affero General Public License version 3 + * or later. + * + * See the COPYING-README file. + * + */ + +(function(OC) { + + /** + * @class OC.Files.FileInfo + * @classdesc File information + * + * @param {Object} data file data, see attributes for details + * + * @since 8.2 + */ + var FileInfo = function(data) { + var self = this; + _.each(data, function(value, key) { + if (!_.isFunction(value)) { + self[key] = value; + } + }); + + if (!_.isUndefined(this.id)) { + this.id = parseInt(data.id, 10); + } + + // TODO: normalize path + this.path = data.path || ''; + + if (this.type === 'dir') { + this.mimetype = 'httpd/unix-directory'; + } else { + this.mimetype = this.mimetype || 'application/octet-stream'; + } + + if (!this.type) { + if (this.mimetype === 'httpd/unix-directory') { + this.type = 'dir'; + } else { + this.type = 'file'; + } + } + }; + + /** + * @memberof OC.Files + */ + FileInfo.prototype = { + /** + * File id + * + * @type int + */ + id: null, + + /** + * File name + * + * @type String + */ + name: null, + + /** + * Path leading to the file, without the file name, + * and with a leading slash. + * + * @type String + */ + path: null, + + /** + * Mime type + * + * @type String + */ + mimetype: null, + + /** + * Icon URL. + * + * Can be used to override the mime type icon. + * + * @type String + */ + icon: null, + + /** + * File type. 'file' for files, 'dir' for directories. + * + * @type String + * @deprecated rely on mimetype instead + */ + type: null, + + /** + * Permissions. + * + * @see OC#PERMISSION_ALL for permissions + * @type int + */ + permissions: null, + + /** + * Modification time + * + * @type int + */ + mtime: null, + + /** + * Etag + * + * @type String + */ + etag: null, + + /** + * Mount type. + * + * One of null, "external-root", "shared" or "shared-root" + * + * @type string + */ + mountType: null + }; + + if (!OC.Files) { + OC.Files = {}; + } + OC.Files.FileInfo = FileInfo; +})(OC); + diff --git a/core/js/files/iedavclient.js b/core/js/files/iedavclient.js new file mode 100644 index 00000000000..bc6bce2f9ae --- /dev/null +++ b/core/js/files/iedavclient.js @@ -0,0 +1,169 @@ +/* + * Copyright (c) 2015 + * + * This file is licensed under the Affero General Public License version 3 + * or later. + * + * See the COPYING-README file. + * + */ + +/* global dav */ +(function(dav) { + + /** + * Override davclient.js methods with IE-compatible logic + */ + dav.Client.prototype = _.extend({}, dav.Client.prototype, { + + /** + * Generates a propFind request. + * + * @param {string} url Url to do the propfind request on + * @param {Array} properties List of properties to retrieve. + * @return {Promise} + */ + propFind : function(url, properties, depth) { + + if(typeof depth == "undefined") { + depth = 0; + } + + var headers = { + Depth : depth, + 'Content-Type' : 'application/xml; charset=utf-8' + }; + + var body = + '<?xml version="1.0"?>\n' + + '<d:propfind '; + + var namespace; + for (namespace in this.xmlNamespaces) { + body += ' xmlns:' + this.xmlNamespaces[namespace] + '="' + namespace + '"'; + } + body += '>\n' + + ' <d:prop>\n'; + + for(var ii in properties) { + var propText = properties[ii]; + if (typeof propText !== 'string') { + // can happen on IE8 + continue; + } + var property = this.parseClarkNotation(properties[ii]); + if (this.xmlNamespaces[property.namespace]) { + body+=' <' + this.xmlNamespaces[property.namespace] + ':' + property.name + ' />\n'; + } else { + body+=' <x:' + property.name + ' xmlns:x="' + property.namespace + '" />\n'; + } + + } + body+=' </d:prop>\n'; + body+='</d:propfind>'; + + return this.request('PROPFIND', url, headers, body).then( + function(result) { + var elements = this.parseMultiStatus(result.xhr.responseXML); + var response; + if (depth===0) { + response = { + status: result.status, + body: elements[0] + }; + } else { + response = { + status: result.status, + body: elements + }; + } + return response; + + }.bind(this) + ); + + }, + + + _getElementsByTagName: function(node, name, resolver) { + var parts = name.split(':'); + var tagName = parts[1]; + var namespace = resolver(parts[0]); + if (node.getElementsByTagNameNS) { + return node.getElementsByTagNameNS(namespace, tagName); + } + return node.getElementsByTagName(name); + }, + + /** + * Parses a multi-status response body. + * + * @param {string} xmlBody + * @param {Array} + */ + parseMultiStatus : function(doc) { + + var result = []; + var resolver = function(foo) { + var ii; + for(ii in this.xmlNamespaces) { + if (this.xmlNamespaces[ii] === foo) { + return ii; + } + } + }.bind(this); + + var responses = this._getElementsByTagName(doc, 'd:response', resolver); + var i; + for (i = 0; i < responses.length; i++) { + var responseNode = responses[i]; + var response = { + href : null, + propStat : [] + }; + + var hrefNode = this._getElementsByTagName(responseNode, 'd:href', resolver)[0]; + + response.href = hrefNode.textContent || hrefNode.text; + + var propStatNodes = this._getElementsByTagName(responseNode, 'd:propstat', resolver); + var j = 0; + + for (j = 0; j < propStatNodes.length; j++) { + var propStatNode = propStatNodes[j]; + var statusNode = this._getElementsByTagName(propStatNode, 'd:status', resolver)[0]; + + var propStat = { + status : statusNode.textContent || statusNode.text, + properties : [] + }; + + var propNode = this._getElementsByTagName(propStatNode, 'd:prop', resolver)[0]; + if (!propNode) { + continue; + } + var k = 0; + for (k = 0; k < propNode.childNodes.length; k++) { + var prop = propNode.childNodes[k]; + var value = prop.textContent || prop.text; + if (prop.childNodes && prop.childNodes.length > 0 && prop.childNodes[0].nodeType === 1) { + value = prop.childNodes; + } + propStat.properties['{' + prop.namespaceURI + '}' + (prop.localName || prop.baseName)] = value; + + } + response.propStat.push(propStat); + } + + result.push(response); + } + + return result; + + } + + + }); + +})(dav); + diff --git a/core/js/js.js b/core/js/js.js index 57c9871233b..ce552bb8ea2 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -1428,7 +1428,6 @@ function initCore() { $('body').delegate('#app-content', 'apprendered appresized', adjustControlsWidth); } - } $(document).ready(initCore); diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index 4448b813021..fe93d0ea657 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -759,7 +759,7 @@ var OCdialogs = { filename: entry.name, date: OC.Util.relativeModifiedDate(entry.mtime) }); - if (entry.isPreviewAvailable) { + if (entry.type === 'file') { var urlSpec = { file: dir + '/' + entry.name }; diff --git a/core/js/tests/specHelper.js b/core/js/tests/specHelper.js index cd387d76ce8..f09a7054c9f 100644 --- a/core/js/tests/specHelper.js +++ b/core/js/tests/specHelper.js @@ -86,6 +86,7 @@ window.firstDay = 0; // setup dummy webroots /* jshint camelcase: false */ window.oc_debug = true; +// FIXME: oc_webroot is supposed to be only the path!!! window.oc_webroot = location.href + '/'; window.oc_appswebroots = { "files": window.oc_webroot + '/apps/files/' diff --git a/core/js/tests/specs/files/clientSpec.js b/core/js/tests/specs/files/clientSpec.js new file mode 100644 index 00000000000..3a3181d8426 --- /dev/null +++ b/core/js/tests/specs/files/clientSpec.js @@ -0,0 +1,711 @@ +/** +* ownCloud +* +* @author Vincent Petry +* @copyright 2015 Vincent Petry <pvince81@owncloud.com> +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +* License as published by the Free Software Foundation; either +* version 3 of the License, or any later version. +* +* This library 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 library. If not, see <http://www.gnu.org/licenses/>. +* +*/ + +describe('OC.Files.Client tests', function() { + var Client = OC.Files.Client; + var baseUrl; + var client; + + beforeEach(function() { + baseUrl = 'https://testhost/owncloud/remote.php/webdav/'; + + client = new Client({ + host: 'testhost', + root: '/owncloud/remote.php/webdav', + useHTTPS: true + }); + }); + afterEach(function() { + client = null; + }); + + /** + * Send an status response and check that the given + * promise gets its success handler called with the error + * status code + * + * @param {Promise} promise promise + * @param {int} status status to test + */ + function respondAndCheckStatus(promise, status) { + var successHandler = sinon.stub(); + var failHandler = sinon.stub(); + promise.done(successHandler); + promise.fail(failHandler); + + fakeServer.requests[0].respond( + status, + {'Content-Type': 'application/xml'}, + '' + ); + + promise.then(function() { + expect(successHandler.calledOnce).toEqual(true); + expect(successHandler.getCall(0).args[0]).toEqual(status); + + expect(failHandler.notCalled).toEqual(true); + }); + + return promise; + } + + /** + * Send an error response and check that the given + * promise gets its fail handler called with the error + * status code + * + * @param {Promise} promise promise object + * @param {int} status error status to test + */ + function respondAndCheckError(promise, status) { + var successHandler = sinon.stub(); + var failHandler = sinon.stub(); + promise.done(successHandler); + promise.fail(failHandler); + + fakeServer.requests[0].respond( + status, + {'Content-Type': 'application/xml'}, + '' + ); + + promise.then(function() { + expect(failHandler.calledOnce).toEqual(true); + expect(failHandler.calledWith(status)).toEqual(true); + + expect(successHandler.notCalled).toEqual(true); + + fulfill(); + }); + + return promise; + } + + /** + * Returns a list of request properties parsed from the given request body. + * + * @param {string} requestBody request XML + * + * @return {Array.<String>} array of request properties in the format + * "{NS:}propname" + */ + function getRequestedProperties(requestBody) { + var doc = (new window.DOMParser()).parseFromString( + requestBody, + 'application/xml' + ); + var propRoots = doc.getElementsByTagNameNS('DAV:', 'prop'); + var propsList = propRoots.item(0).childNodes; + return _.map(propsList, function(propNode) { + return '{' + propNode.namespaceURI + '}' + propNode.localName; + }); + } + + function makePropBlock(props) { + var s = '<d:prop>\n'; + + _.each(props, function(value, key) { + s += '<' + key + '>' + value + '</' + key + '>\n'; + }); + + return s + '</d:prop>\n'; + } + + function makeResponseBlock(href, props, failedProps) { + var s = '<d:response>\n'; + s += '<d:href>' + href + '</d:href>\n'; + s += '<d:propstat>\n'; + s += makePropBlock(props); + s += '<d:status>HTTP/1.1 200 OK</d:status>'; + s += '</d:propstat>\n'; + if (failedProps) { + s += '<d:propstat>\n'; + _.each(failedProps, function(prop) { + s += '<' + prop + '/>\n'; + }); + s += '<d:status>HTTP/1.1 404 Not Found</d:status>\n'; + s += '</d:propstat>\n'; + } + return s + '</d:response>\n'; + } + + describe('file listing', function() { + + var folderContentsXml = + '<?xml version="1.0" encoding="utf-8"?>' + + '<d:multistatus xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns" xmlns:oc="http://owncloud.org/ns">' + + makeResponseBlock( + '/owncloud/remote.php/webdav/path/to%20space/%E6%96%87%E4%BB%B6%E5%A4%B9/', + { + 'd:getlastmodified': 'Fri, 10 Jul 2015 10:00:05 GMT', + 'd:getetag': '"56cfcabd79abb"', + 'd:resourcetype': '<d:collection/>', + 'oc:id': '00000011oc2d13a6a068', + 'oc:permissions': 'RDNVCK', + 'oc:size': 120 + }, + [ + 'd:getcontenttype', + 'd:getcontentlength' + ] + ) + + makeResponseBlock( + '/owncloud/remote.php/webdav/path/to%20space/%E6%96%87%E4%BB%B6%E5%A4%B9/One.txt', + { + 'd:getlastmodified': 'Fri, 10 Jul 2015 13:38:05 GMT', + 'd:getetag': '"559fcabd79a38"', + 'd:getcontenttype': 'text/plain', + 'd:getcontentlength': 250, + 'd:resourcetype': '', + 'oc:id': '00000051oc2d13a6a068', + 'oc:permissions': 'RDNVW' + }, + [ + 'oc:size', + ] + ) + + makeResponseBlock( + '/owncloud/remote.php/webdav/path/to%20space/%E6%96%87%E4%BB%B6%E5%A4%B9/sub', + { + 'd:getlastmodified': 'Fri, 10 Jul 2015 14:00:00 GMT', + 'd:getetag': '"66cfcabd79abb"', + 'd:resourcetype': '<d:collection/>', + 'oc:id': '00000015oc2d13a6a068', + 'oc:permissions': 'RDNVCK', + 'oc:size': 100 + }, + [ + 'd:getcontenttype', + 'd:getcontentlength' + ] + ) + + '</d:multistatus>'; + + it('sends PROPFIND with explicit properties to get file list', function() { + client.getFolderContents('path/to space/文件夹'); + + expect(fakeServer.requests.length).toEqual(1); + expect(fakeServer.requests[0].method).toEqual('PROPFIND'); + expect(fakeServer.requests[0].url).toEqual(baseUrl + 'path/to%20space/%E6%96%87%E4%BB%B6%E5%A4%B9'); + expect(fakeServer.requests[0].requestHeaders.Depth).toEqual(1); + + var props = getRequestedProperties(fakeServer.requests[0].requestBody); + expect(props).toContain('{DAV:}getlastmodified'); + expect(props).toContain('{DAV:}getcontentlength'); + expect(props).toContain('{DAV:}getcontenttype'); + expect(props).toContain('{DAV:}getetag'); + expect(props).toContain('{DAV:}resourcetype'); + expect(props).toContain('{http://owncloud.org/ns}fileid'); + expect(props).toContain('{http://owncloud.org/ns}size'); + expect(props).toContain('{http://owncloud.org/ns}permissions'); + }); + it('sends PROPFIND to base url when empty path given', function() { + client.getFolderContents(''); + expect(fakeServer.requests.length).toEqual(1); + expect(fakeServer.requests[0].url).toEqual(baseUrl); + }); + it('sends PROPFIND to base url when root path given', function() { + client.getFolderContents('/'); + expect(fakeServer.requests.length).toEqual(1); + expect(fakeServer.requests[0].url).toEqual(baseUrl); + }); + it('parses the result list into a FileInfo array', function() { + var promise = client.getFolderContents('path/to space/文件夹'); + + expect(fakeServer.requests.length).toEqual(1); + + fakeServer.requests[0].respond( + 207, + {'Content-Type': 'application/xml'}, + folderContentsXml + ); + + promise.then(function(status, response) { + expect(status).toEqual(207); + expect(_.isArray(response)).toEqual(true); + + expect(response.length).toEqual(2); + + // file entry + var info = response[0]; + expect(info instanceof OC.Files.FileInfo).toEqual(true); + expect(info.id).toEqual(51); + expect(info.path).toEqual('/path/to space/文件夹'); + expect(info.name).toEqual('One.txt'); + expect(info.permissions).toEqual(31); + expect(info.size).toEqual(250); + expect(info.mtime.getTime()).toEqual(1436535485000); + expect(info.mimetype).toEqual('text/plain'); + expect(info.etag).toEqual('559fcabd79a38'); + + // sub entry + info = response[1]; + expect(info instanceof OC.Files.FileInfo).toEqual(true); + expect(info.id).toEqual(15); + expect(info.path).toEqual('/path/to space/文件夹'); + expect(info.name).toEqual('sub'); + expect(info.permissions).toEqual(31); + expect(info.size).toEqual(100); + expect(info.mtime.getTime()).toEqual(1436536800000); + expect(info.mimetype).toEqual('httpd/unix-directory'); + expect(info.etag).toEqual('66cfcabd79abb'); + }); + return promise.promise(); + }); + it('returns parent node in result if specified', function() { + var promise = client.getFolderContents('path/to space/文件夹', {includeParent: true}); + + expect(fakeServer.requests.length).toEqual(1); + + fakeServer.requests[0].respond( + 207, + {'Content-Type': 'application/xml'}, + folderContentsXml + ); + + promise.then(function(status, response) { + expect(status).toEqual(207); + expect(_.isArray(response)).toEqual(true); + + expect(response.length).toEqual(3); + + // root entry + var info = response[0]; + expect(info instanceof OC.Files.FileInfo).toEqual(true); + expect(info.id).toEqual(11); + expect(info.path).toEqual('/path/to space'); + expect(info.name).toEqual('文件夹'); + expect(info.permissions).toEqual(31); + expect(info.size).toEqual(120); + expect(info.mtime.getTime()).toEqual(1436522405000); + expect(info.mimetype).toEqual('httpd/unix-directory'); + expect(info.etag).toEqual('56cfcabd79abb'); + + // the two other entries follow + expect(response[1].id).toEqual(51); + expect(response[2].id).toEqual(15); + }); + + return promise; + }); + it('rejects promise when an error occurred', function() { + var promise = client.getFolderContents('path/to space/文件夹', {includeParent: true}); + return respondAndCheckError(promise, 404); + }); + it('throws exception if arguments are missing', function() { + // TODO + }); + }); + + describe('file info', function() { + var responseXml = + '<?xml version="1.0" encoding="utf-8"?>' + + '<d:multistatus xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns" xmlns:oc="http://owncloud.org/ns">' + + makeResponseBlock( + '/owncloud/remote.php/webdav/path/to%20space/%E6%96%87%E4%BB%B6%E5%A4%B9/', + { + 'd:getlastmodified': 'Fri, 10 Jul 2015 10:00:05 GMT', + 'd:getetag': '"56cfcabd79abb"', + 'd:resourcetype': '<d:collection/>', + 'oc:id': '00000011oc2d13a6a068', + 'oc:permissions': 'RDNVCK', + 'oc:size': 120 + }, + [ + 'd:getcontenttype', + 'd:getcontentlength' + ] + ) + + '</d:multistatus>'; + + it('sends PROPFIND with zero depth to get single file info', function() { + client.getFileInfo('path/to space/文件夹'); + + expect(fakeServer.requests.length).toEqual(1); + expect(fakeServer.requests[0].method).toEqual('PROPFIND'); + expect(fakeServer.requests[0].url).toEqual(baseUrl + 'path/to%20space/%E6%96%87%E4%BB%B6%E5%A4%B9'); + expect(fakeServer.requests[0].requestHeaders.Depth).toEqual(0); + + var props = getRequestedProperties(fakeServer.requests[0].requestBody); + expect(props).toContain('{DAV:}getlastmodified'); + expect(props).toContain('{DAV:}getcontentlength'); + expect(props).toContain('{DAV:}getcontenttype'); + expect(props).toContain('{DAV:}getetag'); + expect(props).toContain('{DAV:}resourcetype'); + expect(props).toContain('{http://owncloud.org/ns}fileid'); + expect(props).toContain('{http://owncloud.org/ns}size'); + expect(props).toContain('{http://owncloud.org/ns}permissions'); + }); + it('parses the result into a FileInfo', function() { + var promise = client.getFileInfo('path/to space/文件夹'); + + expect(fakeServer.requests.length).toEqual(1); + + fakeServer.requests[0].respond( + 207, + {'Content-Type': 'application/xml'}, + responseXml + ); + + promise.then(function(status, response) { + expect(status).toEqual(207); + expect(_.isArray(response)).toEqual(false); + + var info = response; + expect(info instanceof OC.Files.FileInfo).toEqual(true); + expect(info.id).toEqual(11); + expect(info.path).toEqual('/path/to space'); + expect(info.name).toEqual('文件夹'); + expect(info.permissions).toEqual(31); + expect(info.size).toEqual(120); + expect(info.mtime.getTime()).toEqual(1436522405000); + expect(info.mimetype).toEqual('httpd/unix-directory'); + expect(info.etag).toEqual('56cfcabd79abb'); + }); + + return promise; + }); + it('properly parses entry inside root', function() { + var responseXml = + '<?xml version="1.0" encoding="utf-8"?>' + + '<d:multistatus xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns" xmlns:oc="http://owncloud.org/ns">' + + makeResponseBlock( + '/owncloud/remote.php/webdav/in%20root', + { + 'd:getlastmodified': 'Fri, 10 Jul 2015 10:00:05 GMT', + 'd:getetag': '"56cfcabd79abb"', + 'd:resourcetype': '<d:collection/>', + 'oc:id': '00000011oc2d13a6a068', + 'oc:permissions': 'RDNVCK', + 'oc:size': 120 + }, + [ + 'd:getcontenttype', + 'd:getcontentlength' + ] + ) + + '</d:multistatus>'; + + var promise = client.getFileInfo('in root'); + + expect(fakeServer.requests.length).toEqual(1); + + fakeServer.requests[0].respond( + 207, + {'Content-Type': 'application/xml'}, + responseXml + ); + + promise.then(function(status, response) { + expect(status).toEqual(207); + expect(_.isArray(response)).toEqual(false); + + var info = response; + expect(info instanceof OC.Files.FileInfo).toEqual(true); + expect(info.id).toEqual(11); + expect(info.path).toEqual('/'); + expect(info.name).toEqual('in root'); + expect(info.permissions).toEqual(31); + expect(info.size).toEqual(120); + expect(info.mtime.getTime()).toEqual(1436522405000); + expect(info.mimetype).toEqual('httpd/unix-directory'); + expect(info.etag).toEqual('56cfcabd79abb'); + }); + + return promise; + }); + it('rejects promise when an error occurred', function() { + var promise = client.getFileInfo('path/to space/文件夹'); + return respondAndCheckError(promise, 404); + }); + it('throws exception if arguments are missing', function() { + // TODO + }); + }); + + describe('permissions', function() { + + function getFileInfoWithPermission(webdavPerm, isFile) { + var props = { + 'd:getlastmodified': 'Fri, 10 Jul 2015 13:38:05 GMT', + 'd:getetag': '"559fcabd79a38"', + 'd:getcontentlength': 250, + 'oc:id': '00000051oc2d13a6a068', + 'oc:permissions': webdavPerm, + }; + + if (isFile) { + props['d:getcontenttype'] = 'text/plain'; + } else { + props['d:resourcetype'] = '<d:collection/>'; + } + + var responseXml = + '<?xml version="1.0" encoding="utf-8"?>' + + '<d:multistatus xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns" xmlns:oc="http://owncloud.org/ns">' + + makeResponseBlock( + '/owncloud/remote.php/webdav/file.txt', + props + ) + + '</d:multistatus>'; + var promise = client.getFileInfo('file.txt'); + + expect(fakeServer.requests.length).toEqual(1); + fakeServer.requests[0].respond( + 207, + {'Content-Type': 'application/xml'}, + responseXml + ); + + fakeServer.restore(); + fakeServer = sinon.fakeServer.create(); + + return promise; + } + + function testPermission(permission, isFile, expectedPermissions) { + var promise = getFileInfoWithPermission(permission, isFile); + promise.then(function(result) { + expect(result.permissions).toEqual(expectedPermissions); + }); + return promise; + } + + function testMountType(permission, isFile, expectedMountType) { + var promise = getFileInfoWithPermission(permission, isFile); + promise.then(function(result) { + expect(result.mountType).toEqual(expectedMountType); + }); + return promise; + } + + it('properly parses file permissions', function() { + // permission, isFile, expectedPermissions + var testCases = [ + ['', true, OC.PERMISSION_READ], + ['C', true, OC.PERMISSION_READ | OC.PERMISSION_CREATE], + ['K', true, OC.PERMISSION_READ | OC.PERMISSION_CREATE], + ['W', true, OC.PERMISSION_READ | OC.PERMISSION_CREATE | OC.PERMISSION_UPDATE], + ['D', true, OC.PERMISSION_READ | OC.PERMISSION_DELETE], + ['R', true, OC.PERMISSION_READ | OC.PERMISSION_SHARE], + ['CKWDR', true, OC.PERMISSION_ALL] + ]; + return Promise.all( + _.map(testCases, function(testCase) { + return testPermission.apply(testCase); + }) + ); + }); + it('properly parses folder permissions', function() { + var testCases = [ + ['', false, OC.PERMISSION_READ], + ['C', false, OC.PERMISSION_READ | OC.PERMISSION_CREATE | OC.PERMISSION_UPDATE], + ['K', false, OC.PERMISSION_READ | OC.PERMISSION_CREATE | OC.PERMISSION_UPDATE], + ['W', false, OC.PERMISSION_READ | OC.PERMISSION_UPDATE], + ['D', false, OC.PERMISSION_READ | OC.PERMISSION_DELETE], + ['R', false, OC.PERMISSION_READ | OC.PERMISSION_SHARE], + ['CKWDR', false, OC.PERMISSION_ALL] + ]; + + return Promise.all( + _.map(testCases, function(testCase) { + return testPermission.apply(testCase); + }) + ); + }); + it('properly parses mount types', function() { + var testCases = [ + ['CKWDR', false, null], + ['M', false, 'external'], + ['S', false, 'shared'], + ['SM', false, 'shared'] + ]; + + return Promise.all( + _.map(testCases, function(testCase) { + return testMountType.apply(testCase); + }) + ); + }); + }); + + describe('get file contents', function() { + it('returns file contents', function() { + var promise = client.getFileContents('path/to space/文件夹/One.txt'); + + expect(fakeServer.requests.length).toEqual(1); + expect(fakeServer.requests[0].method).toEqual('GET'); + expect(fakeServer.requests[0].url).toEqual(baseUrl + 'path/to%20space/%E6%96%87%E4%BB%B6%E5%A4%B9/One.txt'); + + fakeServer.requests[0].respond( + 200, + {'Content-Type': 'text/plain'}, + 'some contents' + ); + + promise.then(function(status, response) { + expect(status).toEqual(200); + expect(response).toEqual('some contents'); + }); + + return promise; + }); + it('rejects promise when an error occurred', function() { + var promise = client.getFileContents('path/to space/文件夹/One.txt'); + return respondAndCheckError(promise, 409); + }); + it('throws exception if arguments are missing', function() { + // TODO + }); + }); + + describe('put file contents', function() { + it('sends PUT with file contents', function() { + var promise = client.putFileContents( + 'path/to space/文件夹/One.txt', + 'some contents' + ); + + expect(fakeServer.requests.length).toEqual(1); + expect(fakeServer.requests[0].method).toEqual('PUT'); + expect(fakeServer.requests[0].url).toEqual(baseUrl + 'path/to%20space/%E6%96%87%E4%BB%B6%E5%A4%B9/One.txt'); + expect(fakeServer.requests[0].requestBody).toEqual('some contents'); + expect(fakeServer.requests[0].requestHeaders['If-None-Match']).toEqual('*'); + expect(fakeServer.requests[0].requestHeaders['Content-Type']).toEqual('text/plain;charset=utf-8'); + + return respondAndCheckStatus(promise, 201); + }); + it('sends PUT with file contents with headers matching options', function() { + var promise = client.putFileContents( + 'path/to space/文件夹/One.txt', + 'some contents', + { + overwrite: false, + contentType: 'text/markdown' + } + ); + + expect(fakeServer.requests.length).toEqual(1); + expect(fakeServer.requests[0].method).toEqual('PUT'); + expect(fakeServer.requests[0].url).toEqual(baseUrl + 'path/to%20space/%E6%96%87%E4%BB%B6%E5%A4%B9/One.txt'); + expect(fakeServer.requests[0].requestBody).toEqual('some contents'); + expect(fakeServer.requests[0].requestHeaders['If-None-Match']).not.toBeDefined(); + expect(fakeServer.requests[0].requestHeaders['Content-Type']).toEqual('text/markdown;charset=utf-8'); + + return respondAndCheckStatus(promise, 201); + }); + it('rejects promise when an error occurred', function() { + var promise = client.putFileContents( + 'path/to space/文件夹/One.txt', + 'some contents' + ); + return respondAndCheckError(promise, 409); + }); + it('throws exception if arguments are missing', function() { + // TODO + }); + }); + + describe('create directory', function() { + it('sends MKCOL with specified path', function() { + var promise = client.createDirectory('path/to space/文件夹/new dir'); + + expect(fakeServer.requests.length).toEqual(1); + expect(fakeServer.requests[0].method).toEqual('MKCOL'); + expect(fakeServer.requests[0].url).toEqual(baseUrl + 'path/to%20space/%E6%96%87%E4%BB%B6%E5%A4%B9/new%20dir'); + + return respondAndCheckStatus(promise, 201); + }); + it('rejects promise when an error occurred', function() { + var promise = client.createDirectory('path/to space/文件夹/new dir'); + return respondAndCheckError(promise, 404); + }); + it('throws exception if arguments are missing', function() { + // TODO + }); + }); + + describe('deletion', function() { + it('sends DELETE with specified path', function() { + var promise = client.remove('path/to space/文件夹'); + + expect(fakeServer.requests.length).toEqual(1); + expect(fakeServer.requests[0].method).toEqual('DELETE'); + expect(fakeServer.requests[0].url).toEqual(baseUrl + 'path/to%20space/%E6%96%87%E4%BB%B6%E5%A4%B9'); + + return respondAndCheckStatus(promise, 201); + }); + it('rejects promise when an error occurred', function() { + var promise = client.remove('path/to space/文件夹'); + return respondAndCheckError(promise, 404); + }); + it('throws exception if arguments are missing', function() { + // TODO + }); + }); + + describe('move', function() { + it('sends MOVE with specified paths with fail on overwrite by default', function() { + var promise = client.move( + 'path/to space/文件夹', + 'path/to space/anotherdir/文件夹' + ); + + expect(fakeServer.requests.length).toEqual(1); + expect(fakeServer.requests[0].method).toEqual('MOVE'); + expect(fakeServer.requests[0].url).toEqual(baseUrl + 'path/to%20space/%E6%96%87%E4%BB%B6%E5%A4%B9'); + expect(fakeServer.requests[0].requestHeaders.Destination) + .toEqual(baseUrl + 'path/to%20space/anotherdir/%E6%96%87%E4%BB%B6%E5%A4%B9'); + expect(fakeServer.requests[0].requestHeaders.Overwrite) + .toEqual('F'); + + return respondAndCheckStatus(promise, 201); + }); + it('sends MOVE with silent overwrite mode when specified', function() { + var promise = client.move( + 'path/to space/文件夹', + 'path/to space/anotherdir/文件夹', + {allowOverwrite: true} + ); + + expect(fakeServer.requests.length).toEqual(1); + expect(fakeServer.requests[0].method).toEqual('MOVE'); + expect(fakeServer.requests[0].url).toEqual(baseUrl + 'path/to%20space/%E6%96%87%E4%BB%B6%E5%A4%B9'); + expect(fakeServer.requests[0].requestHeaders.Destination) + .toEqual(baseUrl + 'path/to%20space/anotherdir/%E6%96%87%E4%BB%B6%E5%A4%B9'); + expect(fakeServer.requests[0].requestHeaders.Overwrite) + .not.toBeDefined(); + + return respondAndCheckStatus(promise, 201); + }); + it('rejects promise when an error occurred', function() { + var promise = client.move( + 'path/to space/文件夹', + 'path/to space/anotherdir/文件夹', + {allowOverwrite: true} + ); + return respondAndCheckError(promise, 404); + }); + it('throws exception if arguments are missing', function() { + // TODO + }); + }); +}); diff --git a/core/l10n/de.js b/core/l10n/de.js index 0580f88d33b..873ff7d1634 100644 --- a/core/l10n/de.js +++ b/core/l10n/de.js @@ -14,6 +14,8 @@ OC.L10N.register( "Repair error: " : "Reperaturfehler:", "Set log level to debug - current level: \"%s\"" : "Log-Level auf Debug gesetzt - aktuelles Level: \"%s\"", "Reset log level to \"%s\"" : "Log-Level auf \"%s\" zurückgesetzt", + "%s (3rdparty)" : "%s (3rdparty)", + "%s (incompatible)" : "%s (nicht kompatibel)", "Following apps have been disabled: %s" : "Die folgenden Apps sind deaktiviert worden: %s", "Already up to date" : "Bereits aktuell", "File is too big" : "Datei ist zu groß", @@ -252,6 +254,7 @@ OC.L10N.register( "Please try again or contact your administrator." : "Bitte versuche es noch einmal oder kontaktiere Deinen Administrator.", "Log in" : "Anmelden", "Wrong password. Reset it?" : "Falsches Passwort. Soll es zurückgesetzt werden?", + "Stay logged in" : "Angemeldet bleiben", "Alternative Logins" : "Alternative Logins", "This ownCloud instance is currently in single user mode." : "Diese ownClound-Instanz befindet sich derzeit im Einzelbenutzermodus.", "This means only administrators can use the instance." : "Dies bedeutet, dass diese Instanz nur von Administratoren genutzt werden kann.", diff --git a/core/l10n/de.json b/core/l10n/de.json index 285d38429e7..dcaeb2ad1a5 100644 --- a/core/l10n/de.json +++ b/core/l10n/de.json @@ -12,6 +12,8 @@ "Repair error: " : "Reperaturfehler:", "Set log level to debug - current level: \"%s\"" : "Log-Level auf Debug gesetzt - aktuelles Level: \"%s\"", "Reset log level to \"%s\"" : "Log-Level auf \"%s\" zurückgesetzt", + "%s (3rdparty)" : "%s (3rdparty)", + "%s (incompatible)" : "%s (nicht kompatibel)", "Following apps have been disabled: %s" : "Die folgenden Apps sind deaktiviert worden: %s", "Already up to date" : "Bereits aktuell", "File is too big" : "Datei ist zu groß", @@ -250,6 +252,7 @@ "Please try again or contact your administrator." : "Bitte versuche es noch einmal oder kontaktiere Deinen Administrator.", "Log in" : "Anmelden", "Wrong password. Reset it?" : "Falsches Passwort. Soll es zurückgesetzt werden?", + "Stay logged in" : "Angemeldet bleiben", "Alternative Logins" : "Alternative Logins", "This ownCloud instance is currently in single user mode." : "Diese ownClound-Instanz befindet sich derzeit im Einzelbenutzermodus.", "This means only administrators can use the instance." : "Dies bedeutet, dass diese Instanz nur von Administratoren genutzt werden kann.", diff --git a/core/l10n/lt_LT.js b/core/l10n/lt_LT.js index 1b9d4842913..829e6f9e957 100644 --- a/core/l10n/lt_LT.js +++ b/core/l10n/lt_LT.js @@ -6,6 +6,7 @@ OC.L10N.register( "Turned on maintenance mode" : "Įjungta priežiūros veiksena", "Turned off maintenance mode" : "Išjungta priežiūros veiksena", "Maintenance mode is kept active" : "Priežiūros veiksena yra aktyvi", + "Updating database schema" : "Atnaujinama duomenų bazės struktūra", "Updated database" : "Atnaujinta duomenų bazė", "Checked database schema update" : "Tikrinama duomenų bazės struktūra", "Checked database schema update for apps" : "Tikrinama duomenų bazės struktūra įskiepiams", diff --git a/core/l10n/lt_LT.json b/core/l10n/lt_LT.json index 8df5dc1ff48..f67b9d6cc00 100644 --- a/core/l10n/lt_LT.json +++ b/core/l10n/lt_LT.json @@ -4,6 +4,7 @@ "Turned on maintenance mode" : "Įjungta priežiūros veiksena", "Turned off maintenance mode" : "Išjungta priežiūros veiksena", "Maintenance mode is kept active" : "Priežiūros veiksena yra aktyvi", + "Updating database schema" : "Atnaujinama duomenų bazės struktūra", "Updated database" : "Atnaujinta duomenų bazė", "Checked database schema update" : "Tikrinama duomenų bazės struktūra", "Checked database schema update for apps" : "Tikrinama duomenų bazės struktūra įskiepiams", diff --git a/core/l10n/nds.js b/core/l10n/nds.js index ed29474b797..2051b30361a 100644 --- a/core/l10n/nds.js +++ b/core/l10n/nds.js @@ -104,7 +104,11 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Dein Webserver ist für die Dateisynchronisierung noch nicht ordentlich eingerichtet, da die WebDAV-Schnittstelle fehlerhaft scheint. ", "This server has no working Internet connection. 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." : "Dieser Server ist nicht mit dem Internet verbunden. Das bedeutet, dass manche Funktionen, wie das Einbinden von externen Speichern, Benachrichtigungen über Aktualisierungen oder die Installation von Drittanbieter Apps nicht zur Verfügung stehen. Auch der Fernzugriff auf Dateien und das Senden von Hinweis-E-Mails könnte nicht funktionieren. Wir empfehlen die Internetverbindung dieses Servers zu aktivieren, wenn Du diese Funktionen nutzen möchtest.", "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." : "Der Zugriff auf Dein Datenverzeichnis und Deine Dateien ist über das Internet vermutlich möglich. Die .htaccess-Datei greift nicht. Wir empfehlen dringend den Webserver derart zu konfigurieren, dass das Datenverzeichnis nicht mehr zugreifbar ist oder das Datenverzeichnis nach außerhalb des Dokumentenwurzelverzeichnisses des Webservers zu verschieben.", + "Error" : "Fehler", "Password" : "Passwort", + "Send" : "Senden", + "can share" : "kann teilen", + "can edit" : "kann editieren", "Share" : "Teilen", "Delete" : "Löschen", "Personal" : "Persönlich", diff --git a/core/l10n/nds.json b/core/l10n/nds.json index bc8f8d2510c..cb2f908da76 100644 --- a/core/l10n/nds.json +++ b/core/l10n/nds.json @@ -102,7 +102,11 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Dein Webserver ist für die Dateisynchronisierung noch nicht ordentlich eingerichtet, da die WebDAV-Schnittstelle fehlerhaft scheint. ", "This server has no working Internet connection. 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." : "Dieser Server ist nicht mit dem Internet verbunden. Das bedeutet, dass manche Funktionen, wie das Einbinden von externen Speichern, Benachrichtigungen über Aktualisierungen oder die Installation von Drittanbieter Apps nicht zur Verfügung stehen. Auch der Fernzugriff auf Dateien und das Senden von Hinweis-E-Mails könnte nicht funktionieren. Wir empfehlen die Internetverbindung dieses Servers zu aktivieren, wenn Du diese Funktionen nutzen möchtest.", "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." : "Der Zugriff auf Dein Datenverzeichnis und Deine Dateien ist über das Internet vermutlich möglich. Die .htaccess-Datei greift nicht. Wir empfehlen dringend den Webserver derart zu konfigurieren, dass das Datenverzeichnis nicht mehr zugreifbar ist oder das Datenverzeichnis nach außerhalb des Dokumentenwurzelverzeichnisses des Webservers zu verschieben.", + "Error" : "Fehler", "Password" : "Passwort", + "Send" : "Senden", + "can share" : "kann teilen", + "can edit" : "kann editieren", "Share" : "Teilen", "Delete" : "Löschen", "Personal" : "Persönlich", diff --git a/core/l10n/tr.js b/core/l10n/tr.js index 257550ecd4b..9a92eac50a7 100644 --- a/core/l10n/tr.js +++ b/core/l10n/tr.js @@ -6,9 +6,12 @@ OC.L10N.register( "Turned on maintenance mode" : "Bakım kipi etkinleştirildi", "Turned off maintenance mode" : "Bakım kipi kapatıldı", "Maintenance mode is kept active" : "Bakım kipi etkin tutuldu", + "Updating database schema" : "Veritabanı şeması güncelleniyor", "Updated database" : "Veritabanı güncellendi", + "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Veritabanı şeması güncellenebilirliği denetleniyor (Veritabanının büyüklüğüne göre uzun sürebilir)", "Checked database schema update" : "Veritabanı şema güncellemesi denetlendi", - "Checking updates of apps" : "Uygulamaların güncellemelerini kontrol et", + "Checking updates of apps" : "Uygulamaların güncellemeleri denetleniyor", + "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "%s için veritabanı güncellenebilirliği denetleniyor (Veritabanının büyüklüğüne göre uzun sürebilir)", "Checked database schema update for apps" : "Uygulamalar için veritabanı şema güncellemesi denetlendi", "Updated \"%s\" to %s" : "\"%s\", %s sürümüne güncellendi", "Repair warning: " : "Onarım uyarısı:", @@ -24,6 +27,7 @@ OC.L10N.register( "No image or file provided" : "Resim veya dosya belirtilmedi", "Unknown filetype" : "Bilinmeyen dosya türü", "Invalid image" : "Geçersiz resim", + "An error occurred. Please contact your admin." : "Bir hata oluştu. Lütfen yöneticinize başvurun.", "No temporary profile picture available, try again" : "Kullanılabilir geçici profil resmi yok, tekrar deneyin", "No crop data provided" : "Kesme verisi sağlanmamış", "No valid crop data provided" : "Geçerli kırpma verisi sağlanmadı", @@ -111,6 +115,7 @@ OC.L10N.register( "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Güvenlik sebepleri ile şiddetle kaçınılması gereken /dev/urandom PHP tarafından okunamıyor. Daha fazla bilgi <a href=\"{docLink}\">belgelendirmemizde</a> bulunabilir.", "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Kullandığınız PHP sürümü ({version}) artık <a href=\"{phpLink}\">PHP tarafından desteklenmiyor</a>. PHP tarafından sağlanan performans ve güvenlik güncellemelerinden faydalanmak için PHP sürümünüzü güncellemenizi öneririz.", "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Ters vekil sunucu başlık yapılandırması hatalı veya ownCloud'a güvenilen bir vekil sunucusundan erişiyorsunuz. ownCloud'a güvenilen bir vekil sunucusundan erişmiyorsanız bu bir güvenlik problemidir ve bir saldırganın IP adresinizi taklit etmesine izin verebilir. Ayrıntılı bilgiyi <a href=\"{docLink}\">belgelendirmemizde</a> bulabilirsiniz.", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached ayrılmış önbellek olarak yapılandırıldı, ancak yanlış PHP modülü \"memcache\" olarak yüklendi. \\OC\\Memcache\\Memcached sadece \"memcached\" olarak desteklenir, \"memcache\" olarak kullanamazsınız. <a href=\"{wikiLink}\">memcached wiki about both modules</a> linkine bakınız.", "Error occurred while checking server setup" : "Sunucu yapılandırması denetlenirken hata oluştu", "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 başlığı \"{expected}\" ile eşleşmek üzere yapılandırılmamış. Bu muhtemel bir güvenlik veya gizlilik riski olduğundan bu ayarı düzeltmenizi öneririz.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "\"Strict-Transport-Security\" HTTP başlığı en az \"{seconds}\" saniye olarak ayarlanmış. İyileştirilmiş güvenlik için <a href=\"{docUrl}\">güvenlik ipuçlarımızda</a> belirtilen HSTS etkinleştirmesini öneririz.", @@ -172,7 +177,9 @@ OC.L10N.register( "Hello {name}" : "Merhaba {name}", "_download %n file_::_download %n files_" : ["%n dosya indir","%n dosya indir"], "{version} is available. Get more information on how to update." : "Sürüm {version} hazır. Nasıl güncelleyeceğinizle ilgili daha fazla bilgi alın.", + "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Güncelleme yapılıyor, sayfadan ayrılmak bazı işlemleri kesebilir.", "Updating {productName} to version {version}, this may take a while." : "{productName}, {version} sürümüne güncelleniyor, bu biraz zaman alabilir.", + "An error occurred." : "Bir hata oluştu", "Please reload the page." : "Lütfen sayfayı yeniden yükleyin.", "The update was unsuccessful. " : "Güncelleştirme başarısız.", "The update was successful. There were warnings." : "Güncelleme başarılı. Uyarılar mevcut.", @@ -262,6 +269,7 @@ OC.L10N.register( "Contact your system administrator if this message persists or appeared unexpectedly." : "Eğer bu ileti görünmeye devam ederse veya beklenmedik şekilde ortaya çıkmışsa sistem yöneticinizle iletişime geçin.", "Thank you for your patience." : "Sabrınız için teşekkür ederiz.", "You are accessing the server from an untrusted domain." : "Sunucuya güvenilmeyen bir alan adından ulaşıyorsunuz.", + "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ütfen yöneticiniz ile iletişime geçin. Eğer bu örneğin bir yöneticisi iseniz, config/config.php dosyası içerisindeki \"trusted_domain\" ayarını yapılandırın. Bu yapılandırmanın bir örneği config/config.sample.php dosyasında verilmiştir.", "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Yapılandırmanıza bağlı olarak, bir yönetici olarak bu alan adına güvenmek için aşağıdaki düğmeyi de kullanabilirsiniz.", "Add \"%s\" as trusted domain" : "\"%s\" alan adını güvenilir olarak ekle", "App update required" : "Uygulama güncellemesi gerekli", diff --git a/core/l10n/tr.json b/core/l10n/tr.json index 66f3a83f7ed..bb547a1a5f3 100644 --- a/core/l10n/tr.json +++ b/core/l10n/tr.json @@ -4,9 +4,12 @@ "Turned on maintenance mode" : "Bakım kipi etkinleştirildi", "Turned off maintenance mode" : "Bakım kipi kapatıldı", "Maintenance mode is kept active" : "Bakım kipi etkin tutuldu", + "Updating database schema" : "Veritabanı şeması güncelleniyor", "Updated database" : "Veritabanı güncellendi", + "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Veritabanı şeması güncellenebilirliği denetleniyor (Veritabanının büyüklüğüne göre uzun sürebilir)", "Checked database schema update" : "Veritabanı şema güncellemesi denetlendi", - "Checking updates of apps" : "Uygulamaların güncellemelerini kontrol et", + "Checking updates of apps" : "Uygulamaların güncellemeleri denetleniyor", + "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "%s için veritabanı güncellenebilirliği denetleniyor (Veritabanının büyüklüğüne göre uzun sürebilir)", "Checked database schema update for apps" : "Uygulamalar için veritabanı şema güncellemesi denetlendi", "Updated \"%s\" to %s" : "\"%s\", %s sürümüne güncellendi", "Repair warning: " : "Onarım uyarısı:", @@ -22,6 +25,7 @@ "No image or file provided" : "Resim veya dosya belirtilmedi", "Unknown filetype" : "Bilinmeyen dosya türü", "Invalid image" : "Geçersiz resim", + "An error occurred. Please contact your admin." : "Bir hata oluştu. Lütfen yöneticinize başvurun.", "No temporary profile picture available, try again" : "Kullanılabilir geçici profil resmi yok, tekrar deneyin", "No crop data provided" : "Kesme verisi sağlanmamış", "No valid crop data provided" : "Geçerli kırpma verisi sağlanmadı", @@ -109,6 +113,7 @@ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Güvenlik sebepleri ile şiddetle kaçınılması gereken /dev/urandom PHP tarafından okunamıyor. Daha fazla bilgi <a href=\"{docLink}\">belgelendirmemizde</a> bulunabilir.", "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Kullandığınız PHP sürümü ({version}) artık <a href=\"{phpLink}\">PHP tarafından desteklenmiyor</a>. PHP tarafından sağlanan performans ve güvenlik güncellemelerinden faydalanmak için PHP sürümünüzü güncellemenizi öneririz.", "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Ters vekil sunucu başlık yapılandırması hatalı veya ownCloud'a güvenilen bir vekil sunucusundan erişiyorsunuz. ownCloud'a güvenilen bir vekil sunucusundan erişmiyorsanız bu bir güvenlik problemidir ve bir saldırganın IP adresinizi taklit etmesine izin verebilir. Ayrıntılı bilgiyi <a href=\"{docLink}\">belgelendirmemizde</a> bulabilirsiniz.", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached ayrılmış önbellek olarak yapılandırıldı, ancak yanlış PHP modülü \"memcache\" olarak yüklendi. \\OC\\Memcache\\Memcached sadece \"memcached\" olarak desteklenir, \"memcache\" olarak kullanamazsınız. <a href=\"{wikiLink}\">memcached wiki about both modules</a> linkine bakınız.", "Error occurred while checking server setup" : "Sunucu yapılandırması denetlenirken hata oluştu", "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 başlığı \"{expected}\" ile eşleşmek üzere yapılandırılmamış. Bu muhtemel bir güvenlik veya gizlilik riski olduğundan bu ayarı düzeltmenizi öneririz.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "\"Strict-Transport-Security\" HTTP başlığı en az \"{seconds}\" saniye olarak ayarlanmış. İyileştirilmiş güvenlik için <a href=\"{docUrl}\">güvenlik ipuçlarımızda</a> belirtilen HSTS etkinleştirmesini öneririz.", @@ -170,7 +175,9 @@ "Hello {name}" : "Merhaba {name}", "_download %n file_::_download %n files_" : ["%n dosya indir","%n dosya indir"], "{version} is available. Get more information on how to update." : "Sürüm {version} hazır. Nasıl güncelleyeceğinizle ilgili daha fazla bilgi alın.", + "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Güncelleme yapılıyor, sayfadan ayrılmak bazı işlemleri kesebilir.", "Updating {productName} to version {version}, this may take a while." : "{productName}, {version} sürümüne güncelleniyor, bu biraz zaman alabilir.", + "An error occurred." : "Bir hata oluştu", "Please reload the page." : "Lütfen sayfayı yeniden yükleyin.", "The update was unsuccessful. " : "Güncelleştirme başarısız.", "The update was successful. There were warnings." : "Güncelleme başarılı. Uyarılar mevcut.", @@ -260,6 +267,7 @@ "Contact your system administrator if this message persists or appeared unexpectedly." : "Eğer bu ileti görünmeye devam ederse veya beklenmedik şekilde ortaya çıkmışsa sistem yöneticinizle iletişime geçin.", "Thank you for your patience." : "Sabrınız için teşekkür ederiz.", "You are accessing the server from an untrusted domain." : "Sunucuya güvenilmeyen bir alan adından ulaşıyorsunuz.", + "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ütfen yöneticiniz ile iletişime geçin. Eğer bu örneğin bir yöneticisi iseniz, config/config.php dosyası içerisindeki \"trusted_domain\" ayarını yapılandırın. Bu yapılandırmanın bir örneği config/config.sample.php dosyasında verilmiştir.", "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Yapılandırmanıza bağlı olarak, bir yönetici olarak bu alan adına güvenmek için aşağıdaki düğmeyi de kullanabilirsiniz.", "Add \"%s\" as trusted domain" : "\"%s\" alan adını güvenilir olarak ekle", "App update required" : "Uygulama güncellemesi gerekli", diff --git a/core/shipped.json b/core/shipped.json index cd1fca4d9fe..a7466a41aef 100644 --- a/core/shipped.json +++ b/core/shipped.json @@ -32,7 +32,8 @@ "user_ldap", "user_shibboleth", "windows_network_drive", - "password_policy" + "password_policy", + "federation" ], "alwaysEnabled": [ "files", diff --git a/core/vendor/.gitignore b/core/vendor/.gitignore index bcbb59b6f24..09b6a47c72d 100644 --- a/core/vendor/.gitignore +++ b/core/vendor/.gitignore @@ -122,3 +122,14 @@ bootstrap/js/* # backbone backbone/backbone-min* + +# davclient.js +davclient.js/** +!davclient.js/lib/* +!davclient.js/LICENSE + +# es6-promise +es6-promise/** +!es6-promise/LICENSE +!es6-promise/dist/es6-promise.js + diff --git a/core/vendor/davclient.js/LICENSE b/core/vendor/davclient.js/LICENSE new file mode 100644 index 00000000000..fd7293e8f32 --- /dev/null +++ b/core/vendor/davclient.js/LICENSE @@ -0,0 +1,27 @@ +Copyright (C) 2013-2014 fruux GmbH (https://fruux.com/) + +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name Sabre nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. diff --git a/core/vendor/davclient.js/lib/client.js b/core/vendor/davclient.js/lib/client.js new file mode 100644 index 00000000000..121b5dcab5f --- /dev/null +++ b/core/vendor/davclient.js/lib/client.js @@ -0,0 +1,296 @@ +if (typeof dav == 'undefined') { dav = {}; }; + +dav.Client = function(options) { + var i; + for(i in options) { + this[i] = options[i]; + } + +}; + +dav.Client.prototype = { + + baseUrl : null, + + userName : null, + + password : null, + + + xmlNamespaces : { + 'DAV:' : 'd' + }, + + /** + * Generates a propFind request. + * + * @param {string} url Url to do the propfind request on + * @param {Array} properties List of properties to retrieve. + * @return {Promise} + */ + propFind : function(url, properties, depth) { + + if(typeof depth == "undefined") { + depth = 0; + } + + var headers = { + Depth : depth, + 'Content-Type' : 'application/xml; charset=utf-8' + }; + + var body = + '<?xml version="1.0"?>\n' + + '<d:propfind '; + var namespace; + for (namespace in this.xmlNamespaces) { + body += ' xmlns:' + this.xmlNamespaces[namespace] + '="' + namespace + '"'; + } + body += '>\n' + + ' <d:prop>\n'; + + for(var ii in properties) { + + var property = this.parseClarkNotation(properties[ii]); + if (this.xmlNamespaces[property.namespace]) { + body+=' <' + this.xmlNamespaces[property.namespace] + ':' + property.name + ' />\n'; + } else { + body+=' <x:' + property.name + ' xmlns:x="' + property.namespace + '" />\n'; + } + + } + body+=' </d:prop>\n'; + body+='</d:propfind>'; + + return this.request('PROPFIND', url, headers, body).then( + function(result) { + + var resultBody = this.parseMultiStatus(result.body); + if (depth===0) { + return { + status: result.status, + body: resultBody[0], + xhr: result.xhr + }; + } else { + return { + status: result.status, + body: resultBody, + xhr: result.xhr + }; + } + + }.bind(this) + ); + + }, + + /** + * Performs a HTTP request, and returns a Promise + * + * @param {string} method HTTP method + * @param {string} url Relative or absolute url + * @param {Object} headers HTTP headers as an object. + * @param {string} body HTTP request body. + * @return {Promise} + */ + request : function(method, url, headers, body) { + + var xhr = this.xhrProvider(); + + if (this.userName) { + headers['Authorization'] = 'Basic ' + btoa(this.userName + ':' + this.password); + // xhr.open(method, this.resolveUrl(url), true, this.userName, this.password); + } + xhr.open(method, this.resolveUrl(url), true); + var ii; + for(ii in headers) { + xhr.setRequestHeader(ii, headers[ii]); + } + xhr.send(body); + + return new Promise(function(fulfill, reject) { + + xhr.onreadystatechange = function() { + + if (xhr.readyState !== 4) { + return; + } + + fulfill({ + body: xhr.response, + status: xhr.status, + xhr: xhr + }); + + }; + + xhr.ontimeout = function() { + + reject(new Error('Timeout exceeded')); + + }; + + }); + + }, + + /** + * Returns an XMLHttpRequest object. + * + * This is in its own method, so it can be easily overridden. + * + * @return {XMLHttpRequest} + */ + xhrProvider : function() { + + return new XMLHttpRequest(); + + }, + + + /** + * Parses a multi-status response body. + * + * @param {string} xmlBody + * @param {Array} + */ + parseMultiStatus : function(xmlBody) { + + var parser = new DOMParser(); + var doc = parser.parseFromString(xmlBody, "application/xml"); + + var resolver = function(foo) { + var ii; + for(ii in this.xmlNamespaces) { + if (this.xmlNamespaces[ii] === foo) { + return ii; + } + } + }.bind(this); + + var responseIterator = doc.evaluate('/d:multistatus/d:response', doc, resolver, XPathResult.ANY_TYPE, null); + + var result = []; + var responseNode = responseIterator.iterateNext(); + + while(responseNode) { + + var response = { + href : null, + propStat : [] + }; + + response.href = doc.evaluate('string(d:href)', responseNode, resolver, XPathResult.ANY_TYPE, null).stringValue; + + var propStatIterator = doc.evaluate('d:propstat', responseNode, resolver, XPathResult.ANY_TYPE, null); + var propStatNode = propStatIterator.iterateNext(); + + while(propStatNode) { + + var propStat = { + status : doc.evaluate('string(d:status)', propStatNode, resolver, XPathResult.ANY_TYPE, null).stringValue, + properties : [], + }; + + var propIterator = doc.evaluate('d:prop/*', propStatNode, resolver, XPathResult.ANY_TYPE, null); + + var propNode = propIterator.iterateNext(); + while(propNode) { + var content = propNode.textContent; + if (propNode.childNodes && propNode.childNodes.length > 0 && propNode.childNodes[0].nodeType === 1) { + content = propNode.childNodes; + } + + propStat.properties['{' + propNode.namespaceURI + '}' + propNode.localName] = content; + propNode = propIterator.iterateNext(); + + } + response.propStat.push(propStat); + propStatNode = propStatIterator.iterateNext(); + + + } + + result.push(response); + responseNode = responseIterator.iterateNext(); + + } + + return result; + + }, + + /** + * Takes a relative url, and maps it to an absolute url, using the baseUrl + * + * @param {string} url + * @return {string} + */ + resolveUrl : function(url) { + + // Note: this is rudamentary.. not sure yet if it handles every case. + if (/^https?:\/\//i.test(url)) { + // absolute + return url; + } + + var baseParts = this.parseUrl(this.baseUrl); + if (url.charAt('/')) { + // Url starts with a slash + return baseParts.root + url; + } + + // Url does not start with a slash, we need grab the base url right up until the last slash. + var newUrl = baseParts.root + '/'; + if (baseParts.path.lastIndexOf('/')!==-1) { + newUrl = newUrl = baseParts.path.subString(0, baseParts.path.lastIndexOf('/')) + '/'; + } + newUrl+=url; + return url; + + }, + + /** + * Parses a url and returns its individual components. + * + * @param {String} url + * @return {Object} + */ + parseUrl : function(url) { + + var parts = url.match(/^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/); + var result = { + url : parts[0], + scheme : parts[1], + host : parts[3], + port : parts[4], + path : parts[5], + query : parts[6], + fragment : parts[7], + }; + result.root = + result.scheme + '://' + + result.host + + (result.port ? ':' + result.port : ''); + + return result; + + }, + + parseClarkNotation : function(propertyName) { + + var result = propertyName.match(/^{([^}]+)}(.*)$/); + if (!result) { + return; + } + + return { + name : result[2], + namespace : result[1] + }; + + } + +}; + diff --git a/core/vendor/es6-promise/.bower.json b/core/vendor/es6-promise/.bower.json new file mode 100644 index 00000000000..f8c28b04e53 --- /dev/null +++ b/core/vendor/es6-promise/.bower.json @@ -0,0 +1,40 @@ +{ + "name": "es6-promise", + "namespace": "Promise", + "version": "2.3.0", + "description": "A polyfill for ES6-style Promises, tracking rsvp", + "authors": [ + "Stefan Penner <stefan.penner@gmail.com>" + ], + "main": "dist/es6-promise.js", + "keywords": [ + "promise" + ], + "repository": { + "type": "git", + "url": "git://github.com/jakearchibald/ES6-Promises.git" + }, + "bugs": { + "url": "https://github.com/jakearchibald/ES6-Promises/issues" + }, + "license": "MIT", + "ignore": [ + "node_modules", + "bower_components", + "test", + "tests", + "vendor", + "tasks" + ], + "homepage": "https://github.com/jakearchibald/es6-promise", + "_release": "2.3.0", + "_resolution": { + "type": "version", + "tag": "2.3.0", + "commit": "fcbab11a1a981eb2290bfff89017cb764335a2a5" + }, + "_source": "https://github.com/jakearchibald/es6-promise.git", + "_target": "~2.3.0", + "_originalSource": "https://github.com/jakearchibald/es6-promise.git", + "_direct": true +}
\ No newline at end of file diff --git a/core/vendor/es6-promise/.npmignore b/core/vendor/es6-promise/.npmignore new file mode 100644 index 00000000000..7a758111e9e --- /dev/null +++ b/core/vendor/es6-promise/.npmignore @@ -0,0 +1,11 @@ +/node_modules/ +/tmp +/tasks +/test +/vendor +/.jshintrc +/.npmignore +/.travis.yml +/Gruntfile.js +/component.json +/index.html diff --git a/core/vendor/es6-promise/.release.json b/core/vendor/es6-promise/.release.json new file mode 100644 index 00000000000..dee8cbc5d92 --- /dev/null +++ b/core/vendor/es6-promise/.release.json @@ -0,0 +1,17 @@ +{ + "non-interactive": true, + "dry-run": false, + "verbose": false, + "force": false, + "pkgFiles": ["package.json", "bower.json"], + "increment": "patch", + "commitMessage": "Release %s", + "tagName": "%s", + "tagAnnotation": "Release %s", + "buildCommand": "npm run-script build-all", + "distRepo": "git@github.com:components/rsvp.js.git", + "distStageDir": "tmp/stage", + "distBase": "dist", + "distFiles": ["**/*", "../package.json", "../bower.json"], + "publish": false +} diff --git a/core/vendor/es6-promise/.spmignore b/core/vendor/es6-promise/.spmignore new file mode 100644 index 00000000000..7a758111e9e --- /dev/null +++ b/core/vendor/es6-promise/.spmignore @@ -0,0 +1,11 @@ +/node_modules/ +/tmp +/tasks +/test +/vendor +/.jshintrc +/.npmignore +/.travis.yml +/Gruntfile.js +/component.json +/index.html diff --git a/core/vendor/es6-promise/LICENSE b/core/vendor/es6-promise/LICENSE new file mode 100644 index 00000000000..954ec5992df --- /dev/null +++ b/core/vendor/es6-promise/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/core/vendor/es6-promise/dist/es6-promise.js b/core/vendor/es6-promise/dist/es6-promise.js new file mode 100644 index 00000000000..aff0482ee5e --- /dev/null +++ b/core/vendor/es6-promise/dist/es6-promise.js @@ -0,0 +1,972 @@ +/*! + * @overview es6-promise - a tiny implementation of Promises/A+. + * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald) + * @license Licensed under MIT license + * See https://raw.githubusercontent.com/jakearchibald/es6-promise/master/LICENSE + * @version 2.3.0 + */ + +(function() { + "use strict"; + function lib$es6$promise$utils$$objectOrFunction(x) { + return typeof x === 'function' || (typeof x === 'object' && x !== null); + } + + function lib$es6$promise$utils$$isFunction(x) { + return typeof x === 'function'; + } + + function lib$es6$promise$utils$$isMaybeThenable(x) { + return typeof x === 'object' && x !== null; + } + + var lib$es6$promise$utils$$_isArray; + if (!Array.isArray) { + lib$es6$promise$utils$$_isArray = function (x) { + return Object.prototype.toString.call(x) === '[object Array]'; + }; + } else { + lib$es6$promise$utils$$_isArray = Array.isArray; + } + + var lib$es6$promise$utils$$isArray = lib$es6$promise$utils$$_isArray; + var lib$es6$promise$asap$$len = 0; + var lib$es6$promise$asap$$toString = {}.toString; + var lib$es6$promise$asap$$vertxNext; + var lib$es6$promise$asap$$customSchedulerFn; + + var lib$es6$promise$asap$$asap = function asap(callback, arg) { + lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len] = callback; + lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len + 1] = arg; + lib$es6$promise$asap$$len += 2; + if (lib$es6$promise$asap$$len === 2) { + // If len is 2, that means that we need to schedule an async flush. + // If additional callbacks are queued before the queue is flushed, they + // will be processed by this flush that we are scheduling. + if (lib$es6$promise$asap$$customSchedulerFn) { + lib$es6$promise$asap$$customSchedulerFn(lib$es6$promise$asap$$flush); + } else { + lib$es6$promise$asap$$scheduleFlush(); + } + } + } + + function lib$es6$promise$asap$$setScheduler(scheduleFn) { + lib$es6$promise$asap$$customSchedulerFn = scheduleFn; + } + + function lib$es6$promise$asap$$setAsap(asapFn) { + lib$es6$promise$asap$$asap = asapFn; + } + + var lib$es6$promise$asap$$browserWindow = (typeof window !== 'undefined') ? window : undefined; + var lib$es6$promise$asap$$browserGlobal = lib$es6$promise$asap$$browserWindow || {}; + var lib$es6$promise$asap$$BrowserMutationObserver = lib$es6$promise$asap$$browserGlobal.MutationObserver || lib$es6$promise$asap$$browserGlobal.WebKitMutationObserver; + var lib$es6$promise$asap$$isNode = typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; + + // test for web worker but not in IE10 + var lib$es6$promise$asap$$isWorker = typeof Uint8ClampedArray !== 'undefined' && + typeof importScripts !== 'undefined' && + typeof MessageChannel !== 'undefined'; + + // node + function lib$es6$promise$asap$$useNextTick() { + var nextTick = process.nextTick; + // node version 0.10.x displays a deprecation warning when nextTick is used recursively + // setImmediate should be used instead instead + var version = process.versions.node.match(/^(?:(\d+)\.)?(?:(\d+)\.)?(\*|\d+)$/); + if (Array.isArray(version) && version[1] === '0' && version[2] === '10') { + nextTick = setImmediate; + } + return function() { + nextTick(lib$es6$promise$asap$$flush); + }; + } + + // vertx + function lib$es6$promise$asap$$useVertxTimer() { + return function() { + lib$es6$promise$asap$$vertxNext(lib$es6$promise$asap$$flush); + }; + } + + function lib$es6$promise$asap$$useMutationObserver() { + var iterations = 0; + var observer = new lib$es6$promise$asap$$BrowserMutationObserver(lib$es6$promise$asap$$flush); + var node = document.createTextNode(''); + observer.observe(node, { characterData: true }); + + return function() { + node.data = (iterations = ++iterations % 2); + }; + } + + // web worker + function lib$es6$promise$asap$$useMessageChannel() { + var channel = new MessageChannel(); + channel.port1.onmessage = lib$es6$promise$asap$$flush; + return function () { + channel.port2.postMessage(0); + }; + } + + function lib$es6$promise$asap$$useSetTimeout() { + return function() { + setTimeout(lib$es6$promise$asap$$flush, 1); + }; + } + + var lib$es6$promise$asap$$queue = new Array(1000); + function lib$es6$promise$asap$$flush() { + for (var i = 0; i < lib$es6$promise$asap$$len; i+=2) { + var callback = lib$es6$promise$asap$$queue[i]; + var arg = lib$es6$promise$asap$$queue[i+1]; + + callback(arg); + + lib$es6$promise$asap$$queue[i] = undefined; + lib$es6$promise$asap$$queue[i+1] = undefined; + } + + lib$es6$promise$asap$$len = 0; + } + + function lib$es6$promise$asap$$attemptVertex() { + try { + var r = require; + var vertx = r('vertx'); + lib$es6$promise$asap$$vertxNext = vertx.runOnLoop || vertx.runOnContext; + return lib$es6$promise$asap$$useVertxTimer(); + } catch(e) { + return lib$es6$promise$asap$$useSetTimeout(); + } + } + + var lib$es6$promise$asap$$scheduleFlush; + // Decide what async method to use to triggering processing of queued callbacks: + if (lib$es6$promise$asap$$isNode) { + lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useNextTick(); + } else if (lib$es6$promise$asap$$BrowserMutationObserver) { + lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMutationObserver(); + } else if (lib$es6$promise$asap$$isWorker) { + lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMessageChannel(); + } else if (lib$es6$promise$asap$$browserWindow === undefined && typeof require === 'function') { + lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$attemptVertex(); + } else { + lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useSetTimeout(); + } + + function lib$es6$promise$$internal$$noop() {} + + var lib$es6$promise$$internal$$PENDING = void 0; + var lib$es6$promise$$internal$$FULFILLED = 1; + var lib$es6$promise$$internal$$REJECTED = 2; + + var lib$es6$promise$$internal$$GET_THEN_ERROR = new lib$es6$promise$$internal$$ErrorObject(); + + function lib$es6$promise$$internal$$selfFullfillment() { + return new TypeError("You cannot resolve a promise with itself"); + } + + function lib$es6$promise$$internal$$cannotReturnOwn() { + return new TypeError('A promises callback cannot return that same promise.'); + } + + function lib$es6$promise$$internal$$getThen(promise) { + try { + return promise.then; + } catch(error) { + lib$es6$promise$$internal$$GET_THEN_ERROR.error = error; + return lib$es6$promise$$internal$$GET_THEN_ERROR; + } + } + + function lib$es6$promise$$internal$$tryThen(then, value, fulfillmentHandler, rejectionHandler) { + try { + then.call(value, fulfillmentHandler, rejectionHandler); + } catch(e) { + return e; + } + } + + function lib$es6$promise$$internal$$handleForeignThenable(promise, thenable, then) { + lib$es6$promise$asap$$asap(function(promise) { + var sealed = false; + var error = lib$es6$promise$$internal$$tryThen(then, thenable, function(value) { + if (sealed) { return; } + sealed = true; + if (thenable !== value) { + lib$es6$promise$$internal$$resolve(promise, value); + } else { + lib$es6$promise$$internal$$fulfill(promise, value); + } + }, function(reason) { + if (sealed) { return; } + sealed = true; + + lib$es6$promise$$internal$$reject(promise, reason); + }, 'Settle: ' + (promise._label || ' unknown promise')); + + if (!sealed && error) { + sealed = true; + lib$es6$promise$$internal$$reject(promise, error); + } + }, promise); + } + + function lib$es6$promise$$internal$$handleOwnThenable(promise, thenable) { + if (thenable._state === lib$es6$promise$$internal$$FULFILLED) { + lib$es6$promise$$internal$$fulfill(promise, thenable._result); + } else if (thenable._state === lib$es6$promise$$internal$$REJECTED) { + lib$es6$promise$$internal$$reject(promise, thenable._result); + } else { + lib$es6$promise$$internal$$subscribe(thenable, undefined, function(value) { + lib$es6$promise$$internal$$resolve(promise, value); + }, function(reason) { + lib$es6$promise$$internal$$reject(promise, reason); + }); + } + } + + function lib$es6$promise$$internal$$handleMaybeThenable(promise, maybeThenable) { + if (maybeThenable.constructor === promise.constructor) { + lib$es6$promise$$internal$$handleOwnThenable(promise, maybeThenable); + } else { + var then = lib$es6$promise$$internal$$getThen(maybeThenable); + + if (then === lib$es6$promise$$internal$$GET_THEN_ERROR) { + lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$GET_THEN_ERROR.error); + } else if (then === undefined) { + lib$es6$promise$$internal$$fulfill(promise, maybeThenable); + } else if (lib$es6$promise$utils$$isFunction(then)) { + lib$es6$promise$$internal$$handleForeignThenable(promise, maybeThenable, then); + } else { + lib$es6$promise$$internal$$fulfill(promise, maybeThenable); + } + } + } + + function lib$es6$promise$$internal$$resolve(promise, value) { + if (promise === value) { + lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$selfFullfillment()); + } else if (lib$es6$promise$utils$$objectOrFunction(value)) { + lib$es6$promise$$internal$$handleMaybeThenable(promise, value); + } else { + lib$es6$promise$$internal$$fulfill(promise, value); + } + } + + function lib$es6$promise$$internal$$publishRejection(promise) { + if (promise._onerror) { + promise._onerror(promise._result); + } + + lib$es6$promise$$internal$$publish(promise); + } + + function lib$es6$promise$$internal$$fulfill(promise, value) { + if (promise._state !== lib$es6$promise$$internal$$PENDING) { return; } + + promise._result = value; + promise._state = lib$es6$promise$$internal$$FULFILLED; + + if (promise._subscribers.length !== 0) { + lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, promise); + } + } + + function lib$es6$promise$$internal$$reject(promise, reason) { + if (promise._state !== lib$es6$promise$$internal$$PENDING) { return; } + promise._state = lib$es6$promise$$internal$$REJECTED; + promise._result = reason; + + lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publishRejection, promise); + } + + function lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection) { + var subscribers = parent._subscribers; + var length = subscribers.length; + + parent._onerror = null; + + subscribers[length] = child; + subscribers[length + lib$es6$promise$$internal$$FULFILLED] = onFulfillment; + subscribers[length + lib$es6$promise$$internal$$REJECTED] = onRejection; + + if (length === 0 && parent._state) { + lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, parent); + } + } + + function lib$es6$promise$$internal$$publish(promise) { + var subscribers = promise._subscribers; + var settled = promise._state; + + if (subscribers.length === 0) { return; } + + var child, callback, detail = promise._result; + + for (var i = 0; i < subscribers.length; i += 3) { + child = subscribers[i]; + callback = subscribers[i + settled]; + + if (child) { + lib$es6$promise$$internal$$invokeCallback(settled, child, callback, detail); + } else { + callback(detail); + } + } + + promise._subscribers.length = 0; + } + + function lib$es6$promise$$internal$$ErrorObject() { + this.error = null; + } + + var lib$es6$promise$$internal$$TRY_CATCH_ERROR = new lib$es6$promise$$internal$$ErrorObject(); + + function lib$es6$promise$$internal$$tryCatch(callback, detail) { + try { + return callback(detail); + } catch(e) { + lib$es6$promise$$internal$$TRY_CATCH_ERROR.error = e; + return lib$es6$promise$$internal$$TRY_CATCH_ERROR; + } + } + + function lib$es6$promise$$internal$$invokeCallback(settled, promise, callback, detail) { + var hasCallback = lib$es6$promise$utils$$isFunction(callback), + value, error, succeeded, failed; + + if (hasCallback) { + value = lib$es6$promise$$internal$$tryCatch(callback, detail); + + if (value === lib$es6$promise$$internal$$TRY_CATCH_ERROR) { + failed = true; + error = value.error; + value = null; + } else { + succeeded = true; + } + + if (promise === value) { + lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$cannotReturnOwn()); + return; + } + + } else { + value = detail; + succeeded = true; + } + + if (promise._state !== lib$es6$promise$$internal$$PENDING) { + // noop + } else if (hasCallback && succeeded) { + lib$es6$promise$$internal$$resolve(promise, value); + } else if (failed) { + lib$es6$promise$$internal$$reject(promise, error); + } else if (settled === lib$es6$promise$$internal$$FULFILLED) { + lib$es6$promise$$internal$$fulfill(promise, value); + } else if (settled === lib$es6$promise$$internal$$REJECTED) { + lib$es6$promise$$internal$$reject(promise, value); + } + } + + function lib$es6$promise$$internal$$initializePromise(promise, resolver) { + try { + resolver(function resolvePromise(value){ + lib$es6$promise$$internal$$resolve(promise, value); + }, function rejectPromise(reason) { + lib$es6$promise$$internal$$reject(promise, reason); + }); + } catch(e) { + lib$es6$promise$$internal$$reject(promise, e); + } + } + + function lib$es6$promise$enumerator$$Enumerator(Constructor, input) { + var enumerator = this; + + enumerator._instanceConstructor = Constructor; + enumerator.promise = new Constructor(lib$es6$promise$$internal$$noop); + + if (enumerator._validateInput(input)) { + enumerator._input = input; + enumerator.length = input.length; + enumerator._remaining = input.length; + + enumerator._init(); + + if (enumerator.length === 0) { + lib$es6$promise$$internal$$fulfill(enumerator.promise, enumerator._result); + } else { + enumerator.length = enumerator.length || 0; + enumerator._enumerate(); + if (enumerator._remaining === 0) { + lib$es6$promise$$internal$$fulfill(enumerator.promise, enumerator._result); + } + } + } else { + lib$es6$promise$$internal$$reject(enumerator.promise, enumerator._validationError()); + } + } + + lib$es6$promise$enumerator$$Enumerator.prototype._validateInput = function(input) { + return lib$es6$promise$utils$$isArray(input); + }; + + lib$es6$promise$enumerator$$Enumerator.prototype._validationError = function() { + return new Error('Array Methods must be provided an Array'); + }; + + lib$es6$promise$enumerator$$Enumerator.prototype._init = function() { + this._result = new Array(this.length); + }; + + var lib$es6$promise$enumerator$$default = lib$es6$promise$enumerator$$Enumerator; + + lib$es6$promise$enumerator$$Enumerator.prototype._enumerate = function() { + var enumerator = this; + + var length = enumerator.length; + var promise = enumerator.promise; + var input = enumerator._input; + + for (var i = 0; promise._state === lib$es6$promise$$internal$$PENDING && i < length; i++) { + enumerator._eachEntry(input[i], i); + } + }; + + lib$es6$promise$enumerator$$Enumerator.prototype._eachEntry = function(entry, i) { + var enumerator = this; + var c = enumerator._instanceConstructor; + + if (lib$es6$promise$utils$$isMaybeThenable(entry)) { + if (entry.constructor === c && entry._state !== lib$es6$promise$$internal$$PENDING) { + entry._onerror = null; + enumerator._settledAt(entry._state, i, entry._result); + } else { + enumerator._willSettleAt(c.resolve(entry), i); + } + } else { + enumerator._remaining--; + enumerator._result[i] = entry; + } + }; + + lib$es6$promise$enumerator$$Enumerator.prototype._settledAt = function(state, i, value) { + var enumerator = this; + var promise = enumerator.promise; + + if (promise._state === lib$es6$promise$$internal$$PENDING) { + enumerator._remaining--; + + if (state === lib$es6$promise$$internal$$REJECTED) { + lib$es6$promise$$internal$$reject(promise, value); + } else { + enumerator._result[i] = value; + } + } + + if (enumerator._remaining === 0) { + lib$es6$promise$$internal$$fulfill(promise, enumerator._result); + } + }; + + lib$es6$promise$enumerator$$Enumerator.prototype._willSettleAt = function(promise, i) { + var enumerator = this; + + lib$es6$promise$$internal$$subscribe(promise, undefined, function(value) { + enumerator._settledAt(lib$es6$promise$$internal$$FULFILLED, i, value); + }, function(reason) { + enumerator._settledAt(lib$es6$promise$$internal$$REJECTED, i, reason); + }); + }; + function lib$es6$promise$promise$all$$all(entries) { + return new lib$es6$promise$enumerator$$default(this, entries).promise; + } + var lib$es6$promise$promise$all$$default = lib$es6$promise$promise$all$$all; + function lib$es6$promise$promise$race$$race(entries) { + /*jshint validthis:true */ + var Constructor = this; + + var promise = new Constructor(lib$es6$promise$$internal$$noop); + + if (!lib$es6$promise$utils$$isArray(entries)) { + lib$es6$promise$$internal$$reject(promise, new TypeError('You must pass an array to race.')); + return promise; + } + + var length = entries.length; + + function onFulfillment(value) { + lib$es6$promise$$internal$$resolve(promise, value); + } + + function onRejection(reason) { + lib$es6$promise$$internal$$reject(promise, reason); + } + + for (var i = 0; promise._state === lib$es6$promise$$internal$$PENDING && i < length; i++) { + lib$es6$promise$$internal$$subscribe(Constructor.resolve(entries[i]), undefined, onFulfillment, onRejection); + } + + return promise; + } + var lib$es6$promise$promise$race$$default = lib$es6$promise$promise$race$$race; + function lib$es6$promise$promise$resolve$$resolve(object) { + /*jshint validthis:true */ + var Constructor = this; + + if (object && typeof object === 'object' && object.constructor === Constructor) { + return object; + } + + var promise = new Constructor(lib$es6$promise$$internal$$noop); + lib$es6$promise$$internal$$resolve(promise, object); + return promise; + } + var lib$es6$promise$promise$resolve$$default = lib$es6$promise$promise$resolve$$resolve; + function lib$es6$promise$promise$reject$$reject(reason) { + /*jshint validthis:true */ + var Constructor = this; + var promise = new Constructor(lib$es6$promise$$internal$$noop); + lib$es6$promise$$internal$$reject(promise, reason); + return promise; + } + var lib$es6$promise$promise$reject$$default = lib$es6$promise$promise$reject$$reject; + + var lib$es6$promise$promise$$counter = 0; + + function lib$es6$promise$promise$$needsResolver() { + throw new TypeError('You must pass a resolver function as the first argument to the promise constructor'); + } + + function lib$es6$promise$promise$$needsNew() { + throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function."); + } + + var lib$es6$promise$promise$$default = lib$es6$promise$promise$$Promise; + /** + Promise objects represent the eventual result of an asynchronous operation. The + primary way of interacting with a promise is through its `then` method, which + registers callbacks to receive either a promise's eventual value or the reason + why the promise cannot be fulfilled. + + Terminology + ----------- + + - `promise` is an object or function with a `then` method whose behavior conforms to this specification. + - `thenable` is an object or function that defines a `then` method. + - `value` is any legal JavaScript value (including undefined, a thenable, or a promise). + - `exception` is a value that is thrown using the throw statement. + - `reason` is a value that indicates why a promise was rejected. + - `settled` the final resting state of a promise, fulfilled or rejected. + + A promise can be in one of three states: pending, fulfilled, or rejected. + + Promises that are fulfilled have a fulfillment value and are in the fulfilled + state. Promises that are rejected have a rejection reason and are in the + rejected state. A fulfillment value is never a thenable. + + Promises can also be said to *resolve* a value. If this value is also a + promise, then the original promise's settled state will match the value's + settled state. So a promise that *resolves* a promise that rejects will + itself reject, and a promise that *resolves* a promise that fulfills will + itself fulfill. + + + Basic Usage: + ------------ + + ```js + var promise = new Promise(function(resolve, reject) { + // on success + resolve(value); + + // on failure + reject(reason); + }); + + promise.then(function(value) { + // on fulfillment + }, function(reason) { + // on rejection + }); + ``` + + Advanced Usage: + --------------- + + Promises shine when abstracting away asynchronous interactions such as + `XMLHttpRequest`s. + + ```js + function getJSON(url) { + return new Promise(function(resolve, reject){ + var xhr = new XMLHttpRequest(); + + xhr.open('GET', url); + xhr.onreadystatechange = handler; + xhr.responseType = 'json'; + xhr.setRequestHeader('Accept', 'application/json'); + xhr.send(); + + function handler() { + if (this.readyState === this.DONE) { + if (this.status === 200) { + resolve(this.response); + } else { + reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']')); + } + } + }; + }); + } + + getJSON('/posts.json').then(function(json) { + // on fulfillment + }, function(reason) { + // on rejection + }); + ``` + + Unlike callbacks, promises are great composable primitives. + + ```js + Promise.all([ + getJSON('/posts'), + getJSON('/comments') + ]).then(function(values){ + values[0] // => postsJSON + values[1] // => commentsJSON + + return values; + }); + ``` + + @class Promise + @param {function} resolver + Useful for tooling. + @constructor + */ + function lib$es6$promise$promise$$Promise(resolver) { + this._id = lib$es6$promise$promise$$counter++; + this._state = undefined; + this._result = undefined; + this._subscribers = []; + + if (lib$es6$promise$$internal$$noop !== resolver) { + if (!lib$es6$promise$utils$$isFunction(resolver)) { + lib$es6$promise$promise$$needsResolver(); + } + + if (!(this instanceof lib$es6$promise$promise$$Promise)) { + lib$es6$promise$promise$$needsNew(); + } + + lib$es6$promise$$internal$$initializePromise(this, resolver); + } + } + + lib$es6$promise$promise$$Promise.all = lib$es6$promise$promise$all$$default; + lib$es6$promise$promise$$Promise.race = lib$es6$promise$promise$race$$default; + lib$es6$promise$promise$$Promise.resolve = lib$es6$promise$promise$resolve$$default; + lib$es6$promise$promise$$Promise.reject = lib$es6$promise$promise$reject$$default; + lib$es6$promise$promise$$Promise._setScheduler = lib$es6$promise$asap$$setScheduler; + lib$es6$promise$promise$$Promise._setAsap = lib$es6$promise$asap$$setAsap; + lib$es6$promise$promise$$Promise._asap = lib$es6$promise$asap$$asap; + + lib$es6$promise$promise$$Promise.prototype = { + constructor: lib$es6$promise$promise$$Promise, + + /** + The primary way of interacting with a promise is through its `then` method, + which registers callbacks to receive either a promise's eventual value or the + reason why the promise cannot be fulfilled. + + ```js + findUser().then(function(user){ + // user is available + }, function(reason){ + // user is unavailable, and you are given the reason why + }); + ``` + + Chaining + -------- + + The return value of `then` is itself a promise. This second, 'downstream' + promise is resolved with the return value of the first promise's fulfillment + or rejection handler, or rejected if the handler throws an exception. + + ```js + findUser().then(function (user) { + return user.name; + }, function (reason) { + return 'default name'; + }).then(function (userName) { + // If `findUser` fulfilled, `userName` will be the user's name, otherwise it + // will be `'default name'` + }); + + findUser().then(function (user) { + throw new Error('Found user, but still unhappy'); + }, function (reason) { + throw new Error('`findUser` rejected and we're unhappy'); + }).then(function (value) { + // never reached + }, function (reason) { + // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'. + // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'. + }); + ``` + If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream. + + ```js + findUser().then(function (user) { + throw new PedagogicalException('Upstream error'); + }).then(function (value) { + // never reached + }).then(function (value) { + // never reached + }, function (reason) { + // The `PedgagocialException` is propagated all the way down to here + }); + ``` + + Assimilation + ------------ + + Sometimes the value you want to propagate to a downstream promise can only be + retrieved asynchronously. This can be achieved by returning a promise in the + fulfillment or rejection handler. The downstream promise will then be pending + until the returned promise is settled. This is called *assimilation*. + + ```js + findUser().then(function (user) { + return findCommentsByAuthor(user); + }).then(function (comments) { + // The user's comments are now available + }); + ``` + + If the assimliated promise rejects, then the downstream promise will also reject. + + ```js + findUser().then(function (user) { + return findCommentsByAuthor(user); + }).then(function (comments) { + // If `findCommentsByAuthor` fulfills, we'll have the value here + }, function (reason) { + // If `findCommentsByAuthor` rejects, we'll have the reason here + }); + ``` + + Simple Example + -------------- + + Synchronous Example + + ```javascript + var result; + + try { + result = findResult(); + // success + } catch(reason) { + // failure + } + ``` + + Errback Example + + ```js + findResult(function(result, err){ + if (err) { + // failure + } else { + // success + } + }); + ``` + + Promise Example; + + ```javascript + findResult().then(function(result){ + // success + }, function(reason){ + // failure + }); + ``` + + Advanced Example + -------------- + + Synchronous Example + + ```javascript + var author, books; + + try { + author = findAuthor(); + books = findBooksByAuthor(author); + // success + } catch(reason) { + // failure + } + ``` + + Errback Example + + ```js + + function foundBooks(books) { + + } + + function failure(reason) { + + } + + findAuthor(function(author, err){ + if (err) { + failure(err); + // failure + } else { + try { + findBoooksByAuthor(author, function(books, err) { + if (err) { + failure(err); + } else { + try { + foundBooks(books); + } catch(reason) { + failure(reason); + } + } + }); + } catch(error) { + failure(err); + } + // success + } + }); + ``` + + Promise Example; + + ```javascript + findAuthor(). + then(findBooksByAuthor). + then(function(books){ + // found books + }).catch(function(reason){ + // something went wrong + }); + ``` + + @method then + @param {Function} onFulfilled + @param {Function} onRejected + Useful for tooling. + @return {Promise} + */ + then: function(onFulfillment, onRejection) { + var parent = this; + var state = parent._state; + + if (state === lib$es6$promise$$internal$$FULFILLED && !onFulfillment || state === lib$es6$promise$$internal$$REJECTED && !onRejection) { + return this; + } + + var child = new this.constructor(lib$es6$promise$$internal$$noop); + var result = parent._result; + + if (state) { + var callback = arguments[state - 1]; + lib$es6$promise$asap$$asap(function(){ + lib$es6$promise$$internal$$invokeCallback(state, child, callback, result); + }); + } else { + lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection); + } + + return child; + }, + + /** + `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same + as the catch block of a try/catch statement. + + ```js + function findAuthor(){ + throw new Error('couldn't find that author'); + } + + // synchronous + try { + findAuthor(); + } catch(reason) { + // something went wrong + } + + // async with promises + findAuthor().catch(function(reason){ + // something went wrong + }); + ``` + + @method catch + @param {Function} onRejection + Useful for tooling. + @return {Promise} + */ + 'catch': function(onRejection) { + return this.then(null, onRejection); + } + }; + function lib$es6$promise$polyfill$$polyfill() { + var local; + + if (typeof global !== 'undefined') { + local = global; + } else if (typeof self !== 'undefined') { + local = self; + } else { + try { + local = Function('return this')(); + } catch (e) { + throw new Error('polyfill failed because global object is unavailable in this environment'); + } + } + + var P = local.Promise; + + if (P && Object.prototype.toString.call(P.resolve()) === '[object Promise]' && !P.cast) { + return; + } + + local.Promise = lib$es6$promise$promise$$default; + } + var lib$es6$promise$polyfill$$default = lib$es6$promise$polyfill$$polyfill; + + var lib$es6$promise$umd$$ES6Promise = { + 'Promise': lib$es6$promise$promise$$default, + 'polyfill': lib$es6$promise$polyfill$$default + }; + + /* global define:true module:true window: true */ + if (typeof define === 'function' && define['amd']) { + define(function() { return lib$es6$promise$umd$$ES6Promise; }); + } else if (typeof module !== 'undefined' && module['exports']) { + module['exports'] = lib$es6$promise$umd$$ES6Promise; + } else if (typeof this !== 'undefined') { + this['ES6Promise'] = lib$es6$promise$umd$$ES6Promise; + } + + lib$es6$promise$polyfill$$default(); +}).call(this); + diff --git a/db_structure.xml b/db_structure.xml index 8135746233e..d4e566d1d54 100644 --- a/db_structure.xml +++ b/db_structure.xml @@ -1204,5 +1204,156 @@ </table> + <table> + <!-- + default place to store comment data + --> + <name>*dbprefix*comments</name> + + <declaration> + + <field> + <name>id</name> + <type>integer</type> + <default>0</default> + <notnull>true</notnull> + <unsigned>true</unsigned> + <length>4</length> + <autoincrement>1</autoincrement> + </field> + + <field> + <name>parent_id</name> + <type>integer</type> + <default>0</default> + <notnull>true</notnull> + <unsigned>true</unsigned> + <length>4</length> + </field> + + <field> + <name>topmost_parent_id</name> + <type>integer</type> + <default>0</default> + <notnull>true</notnull> + <unsigned>true</unsigned> + <length>4</length> + </field> + + <field> + <name>children_count</name> + <type>integer</type> + <default>0</default> + <notnull>true</notnull> + <unsigned>true</unsigned> + <length>4</length> + </field> + + <field> + <name>actor_type</name> + <type>text</type> + <default></default> + <notnull>true</notnull> + <length>64</length> + </field> + + <field> + <name>actor_id</name> + <type>text</type> + <default></default> + <notnull>true</notnull> + <length>64</length> + </field> + + <field> + <name>message</name> + <type>clob</type> + <default></default> + <notnull>false</notnull> + </field> + + <field> + <name>verb</name> + <type>text</type> + <default></default> + <notnull>false</notnull> + <length>64</length> + </field> + + <field> + <name>creation_timestamp</name> + <type>timestamp</type> + <default></default> + <notnull>false</notnull> + </field> + + <field> + <name>latest_child_timestamp</name> + <type>timestamp</type> + <default></default> + <notnull>false</notnull> + </field> + + <field> + <name>object_type</name> + <type>text</type> + <default></default> + <notnull>true</notnull> + <length>64</length> + </field> + + <field> + <name>object_id</name> + <type>text</type> + <default></default> + <notnull>true</notnull> + <length>64</length> + </field> +<!-- + TODO: finalize indexes when all queries are done + <index> + <name>comments_parent_id_index</name> + <unique>false</unique> + <field> + <name>parent_id</name> + <sorting>descending</sorting> + </field> + </index> + + <index> + <name>comments_actor_index</name> + <unique>false</unique> + <field> + <name>actor_type</name> + <sorting>ascending</sorting> + </field> + <field> + <name>actor_id</name> + <sorting>ascending</sorting> + </field> + </index> + + <index> + <name>comments_object_index</name> + <unique>false</unique> + <field> + <name>object_type</name> + <sorting>ascending</sorting> + </field> + <field> + <name>object_id</name> + <sorting>ascending</sorting> + </field> + <field> + <name>creation_timestamp</name> + <sorting>descending</sorting> + </field> + </index> +--> + + </declaration> + + </table> + </database> diff --git a/lib/l10n/ast.js b/lib/l10n/ast.js index c3ca33e74ad..9f676212377 100644 --- a/lib/l10n/ast.js +++ b/lib/l10n/ast.js @@ -110,8 +110,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Por favor, entruga al to alministrador pa reaniciar el sirvidor web.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 requeríu", "Please upgrade your database version" : "Por favor, anueva la versión de la to base de datos", - "Error occurred while checking PostgreSQL version" : "Asocedió un fallu mientres se comprobaba la versión de PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Por favor, asegúrate que tienes PostgreSQL >= 9 o comprueba los rexistros pa más información tocante al fallu", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Por favor, camuda los permisos a 0770 pa que'l direutoriu nun pueda llistase por otros usuarios.", "Data directory (%s) is readable by other users" : "El direutoriu de datos (%s) ye llexible por otros usuarios", "Data directory (%s) is invalid" : "Ye inválidu'l direutoriu de datos (%s)", diff --git a/lib/l10n/ast.json b/lib/l10n/ast.json index bfcaf8729d7..8fd9383d849 100644 --- a/lib/l10n/ast.json +++ b/lib/l10n/ast.json @@ -108,8 +108,6 @@ "Please ask your server administrator to restart the web server." : "Por favor, entruga al to alministrador pa reaniciar el sirvidor web.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 requeríu", "Please upgrade your database version" : "Por favor, anueva la versión de la to base de datos", - "Error occurred while checking PostgreSQL version" : "Asocedió un fallu mientres se comprobaba la versión de PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Por favor, asegúrate que tienes PostgreSQL >= 9 o comprueba los rexistros pa más información tocante al fallu", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Por favor, camuda los permisos a 0770 pa que'l direutoriu nun pueda llistase por otros usuarios.", "Data directory (%s) is readable by other users" : "El direutoriu de datos (%s) ye llexible por otros usuarios", "Data directory (%s) is invalid" : "Ye inválidu'l direutoriu de datos (%s)", diff --git a/lib/l10n/bg_BG.js b/lib/l10n/bg_BG.js index fae7f894bcc..8f947c22543 100644 --- a/lib/l10n/bg_BG.js +++ b/lib/l10n/bg_BG.js @@ -111,8 +111,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Моля, поискай от своя администратор да рестартира уеб сървъра.", "PostgreSQL >= 9 required" : "Изисква се PostgreSQL >= 9", "Please upgrade your database version" : "Моля, обнови базата данни.", - "Error occurred while checking PostgreSQL version" : "Настъпи грешка при проверката на версията на PostgreSQL.", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Моля, увери се, че PostgreSQL >= 9 или провери докладите за повече информация относно грешката.", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Моля, промени правата за достъп на 0770, за да не може директорията да бъде видяна от други потребители.", "Data directory (%s) is readable by other users" : "Data папката (%s) може да бъде разгледана от други потребители", "Data directory (%s) is invalid" : "Data папката (%s) e невалидна", diff --git a/lib/l10n/bg_BG.json b/lib/l10n/bg_BG.json index 21361a20897..b7a3db07d04 100644 --- a/lib/l10n/bg_BG.json +++ b/lib/l10n/bg_BG.json @@ -109,8 +109,6 @@ "Please ask your server administrator to restart the web server." : "Моля, поискай от своя администратор да рестартира уеб сървъра.", "PostgreSQL >= 9 required" : "Изисква се PostgreSQL >= 9", "Please upgrade your database version" : "Моля, обнови базата данни.", - "Error occurred while checking PostgreSQL version" : "Настъпи грешка при проверката на версията на PostgreSQL.", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Моля, увери се, че PostgreSQL >= 9 или провери докладите за повече информация относно грешката.", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Моля, промени правата за достъп на 0770, за да не може директорията да бъде видяна от други потребители.", "Data directory (%s) is readable by other users" : "Data папката (%s) може да бъде разгледана от други потребители", "Data directory (%s) is invalid" : "Data папката (%s) e невалидна", diff --git a/lib/l10n/ca.js b/lib/l10n/ca.js index 6df1b5245d4..89bc7ca54e3 100644 --- a/lib/l10n/ca.js +++ b/lib/l10n/ca.js @@ -99,8 +99,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Demaneu a l'administrador que reinici el servidor web.", "PostgreSQL >= 9 required" : "Es requereix PostgreSQL >= 9", "Please upgrade your database version" : "Actualitzeu la versió de la base de dades", - "Error occurred while checking PostgreSQL version" : "Hi ha hagut un error en comprovar la versió de PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Assegureu-vos que teniu PostgreSQL >= 9 o comproveu els registres per més informació quant a l'error", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Canvieu els permisos a 0770 per tal que la carpeta no es pugui llistar per altres usuaris.", "Data directory (%s) is readable by other users" : "La carpeta de dades (%s) és llegible per altres usuaris", "Data directory (%s) is invalid" : "La carpeta de dades (%s) no és vàlida", diff --git a/lib/l10n/ca.json b/lib/l10n/ca.json index bd722389fdc..73be16ae1bd 100644 --- a/lib/l10n/ca.json +++ b/lib/l10n/ca.json @@ -97,8 +97,6 @@ "Please ask your server administrator to restart the web server." : "Demaneu a l'administrador que reinici el servidor web.", "PostgreSQL >= 9 required" : "Es requereix PostgreSQL >= 9", "Please upgrade your database version" : "Actualitzeu la versió de la base de dades", - "Error occurred while checking PostgreSQL version" : "Hi ha hagut un error en comprovar la versió de PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Assegureu-vos que teniu PostgreSQL >= 9 o comproveu els registres per més informació quant a l'error", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Canvieu els permisos a 0770 per tal que la carpeta no es pugui llistar per altres usuaris.", "Data directory (%s) is readable by other users" : "La carpeta de dades (%s) és llegible per altres usuaris", "Data directory (%s) is invalid" : "La carpeta de dades (%s) no és vàlida", diff --git a/lib/l10n/cs_CZ.js b/lib/l10n/cs_CZ.js index 02d667e9cb8..0944b1a6a58 100644 --- a/lib/l10n/cs_CZ.js +++ b/lib/l10n/cs_CZ.js @@ -140,8 +140,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Požádejte svého správce systému o restart webového serveru.", "PostgreSQL >= 9 required" : "Je vyžadováno PostgreSQL >= 9", "Please upgrade your database version" : "Aktualizujte prosím verzi své databáze", - "Error occurred while checking PostgreSQL version" : "Při zjišťování verze PostgreSQL došlo k chybě", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Ujistěte se, že máte PostgreSQL >= 9, a zkontrolujte logy pro více informací o chybě.", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Změňte prosím práva na 0770, aby adresář nemohl být otevřen ostatními uživateli.", "Data directory (%s) is readable by other users" : "Datový adresář (%s) je čitelný i ostatními uživateli", "Data directory (%s) must be an absolute path" : "Cesta k datovému adresáři (%s) musí být uvedena absolutně", diff --git a/lib/l10n/cs_CZ.json b/lib/l10n/cs_CZ.json index d55cb2c9485..3dbe060740f 100644 --- a/lib/l10n/cs_CZ.json +++ b/lib/l10n/cs_CZ.json @@ -138,8 +138,6 @@ "Please ask your server administrator to restart the web server." : "Požádejte svého správce systému o restart webového serveru.", "PostgreSQL >= 9 required" : "Je vyžadováno PostgreSQL >= 9", "Please upgrade your database version" : "Aktualizujte prosím verzi své databáze", - "Error occurred while checking PostgreSQL version" : "Při zjišťování verze PostgreSQL došlo k chybě", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Ujistěte se, že máte PostgreSQL >= 9, a zkontrolujte logy pro více informací o chybě.", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Změňte prosím práva na 0770, aby adresář nemohl být otevřen ostatními uživateli.", "Data directory (%s) is readable by other users" : "Datový adresář (%s) je čitelný i ostatními uživateli", "Data directory (%s) must be an absolute path" : "Cesta k datovému adresáři (%s) musí být uvedena absolutně", diff --git a/lib/l10n/da.js b/lib/l10n/da.js index 232934fdcad..ff1004d6ff2 100644 --- a/lib/l10n/da.js +++ b/lib/l10n/da.js @@ -140,8 +140,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Du bedes anmode din serveradministrator om at genstarte webserveren.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 kræves", "Please upgrade your database version" : "Opgradér venligst din databaseversion", - "Error occurred while checking PostgreSQL version" : "Der opstod fejl under tjek af PostgreSQL-versionen", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Sørg venligst for at du har PostgreSQL >= 9 eller tjek loggen for flere informationer om fejlen", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Tilpas venligst rettigheder til 0770, så mappen ikke fremvises for andre brugere.", "Data directory (%s) is readable by other users" : "Datamappen (%s) kan læses af andre brugere", "Data directory (%s) must be an absolute path" : "Datamappen (%s) skal have en absolut sti", diff --git a/lib/l10n/da.json b/lib/l10n/da.json index 8b1e7744583..531c591e75b 100644 --- a/lib/l10n/da.json +++ b/lib/l10n/da.json @@ -138,8 +138,6 @@ "Please ask your server administrator to restart the web server." : "Du bedes anmode din serveradministrator om at genstarte webserveren.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 kræves", "Please upgrade your database version" : "Opgradér venligst din databaseversion", - "Error occurred while checking PostgreSQL version" : "Der opstod fejl under tjek af PostgreSQL-versionen", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Sørg venligst for at du har PostgreSQL >= 9 eller tjek loggen for flere informationer om fejlen", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Tilpas venligst rettigheder til 0770, så mappen ikke fremvises for andre brugere.", "Data directory (%s) is readable by other users" : "Datamappen (%s) kan læses af andre brugere", "Data directory (%s) must be an absolute path" : "Datamappen (%s) skal have en absolut sti", diff --git a/lib/l10n/de.js b/lib/l10n/de.js index 7baf49e0650..697cedfdd6f 100644 --- a/lib/l10n/de.js +++ b/lib/l10n/de.js @@ -140,8 +140,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Bitte kontaktiere Deinen Server-Administrator und bitte um den Neustart des Webservers.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 benötigt", "Please upgrade your database version" : "Bitte aktualisiere Deine Datenbankversion", - "Error occurred while checking PostgreSQL version" : "Es ist ein Fehler beim Prüfen der PostgreSQL-Version aufgetreten", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Stelle bitte sicher, dass Du PostgreSQL >= 9 verwendest oder prüfe die Logs für weitere Informationen über den Fehler", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Bitte ändere die Berechtigungen auf 0770 sodass das Verzeichnis nicht von anderen Nutzer angezeigt werden kann.", "Data directory (%s) is readable by other users" : "Daten-Verzeichnis (%s) ist von anderen Nutzern lesbar", "Data directory (%s) must be an absolute path" : "Das Datenverzeichnis (%s) muss ein absoluter Pfad sein", diff --git a/lib/l10n/de.json b/lib/l10n/de.json index 927e610e0d0..bdee6657676 100644 --- a/lib/l10n/de.json +++ b/lib/l10n/de.json @@ -138,8 +138,6 @@ "Please ask your server administrator to restart the web server." : "Bitte kontaktiere Deinen Server-Administrator und bitte um den Neustart des Webservers.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 benötigt", "Please upgrade your database version" : "Bitte aktualisiere Deine Datenbankversion", - "Error occurred while checking PostgreSQL version" : "Es ist ein Fehler beim Prüfen der PostgreSQL-Version aufgetreten", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Stelle bitte sicher, dass Du PostgreSQL >= 9 verwendest oder prüfe die Logs für weitere Informationen über den Fehler", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Bitte ändere die Berechtigungen auf 0770 sodass das Verzeichnis nicht von anderen Nutzer angezeigt werden kann.", "Data directory (%s) is readable by other users" : "Daten-Verzeichnis (%s) ist von anderen Nutzern lesbar", "Data directory (%s) must be an absolute path" : "Das Datenverzeichnis (%s) muss ein absoluter Pfad sein", diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js index c0c92a12037..ac05b409391 100644 --- a/lib/l10n/de_DE.js +++ b/lib/l10n/de_DE.js @@ -136,8 +136,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Bitte kontaktieren Sie Ihren Server-Administrator und bitten Sie um den Neustart des Webservers.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 benötigt", "Please upgrade your database version" : "Bitte aktualisieren Sie Ihre Datenbankversion", - "Error occurred while checking PostgreSQL version" : "Es ist ein Fehler beim Prüfen der PostgreSQL-Version aufgetreten", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Stellen Sie sicher, dass Sie PostgreSQL >= 9 verwenden oder prüfen Sie die Logs für weitere Informationen über den Fehler", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Bitte ändern Sie die Berechtigungen auf 0770, so dass das Verzeichnis nicht von anderen Benutzern angezeigt werden kann.", "Data directory (%s) is readable by other users" : "Daten-Verzeichnis (%s) ist von anderen Benutzern lesbar", "Data directory (%s) must be an absolute path" : "Das Datenverzeichnis (%s) muss ein absoluter Pfad sein", diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json index afa38ec4705..6a896b9fd6e 100644 --- a/lib/l10n/de_DE.json +++ b/lib/l10n/de_DE.json @@ -134,8 +134,6 @@ "Please ask your server administrator to restart the web server." : "Bitte kontaktieren Sie Ihren Server-Administrator und bitten Sie um den Neustart des Webservers.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 benötigt", "Please upgrade your database version" : "Bitte aktualisieren Sie Ihre Datenbankversion", - "Error occurred while checking PostgreSQL version" : "Es ist ein Fehler beim Prüfen der PostgreSQL-Version aufgetreten", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Stellen Sie sicher, dass Sie PostgreSQL >= 9 verwenden oder prüfen Sie die Logs für weitere Informationen über den Fehler", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Bitte ändern Sie die Berechtigungen auf 0770, so dass das Verzeichnis nicht von anderen Benutzern angezeigt werden kann.", "Data directory (%s) is readable by other users" : "Daten-Verzeichnis (%s) ist von anderen Benutzern lesbar", "Data directory (%s) must be an absolute path" : "Das Datenverzeichnis (%s) muss ein absoluter Pfad sein", diff --git a/lib/l10n/el.js b/lib/l10n/el.js index 932028a22cd..d1a6e0100c2 100644 --- a/lib/l10n/el.js +++ b/lib/l10n/el.js @@ -137,8 +137,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Παρακαλώ ζητήστε από το διαχειριστή του διακομιστή σας να επανεκκινήσει το διακομιστή δικτύου σας.", "PostgreSQL >= 9 required" : "Απαιτείται PostgreSQL >= 9", "Please upgrade your database version" : "Παρακαλώ αναβαθμίστε την έκδοση της βάσης δεδομένων σας", - "Error occurred while checking PostgreSQL version" : "Προέκυψε σφάλμα κατά τον έλεγχο της έκδοσης PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Παρακαλώ ελέγξτε ότι έχετε PostgreSQL >= 9 ή ελέγξτε στα ιστορικό σφαλμάτων για περισσότερες πληροφορίες για το σφάλμα", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Παρακαλώ αλλάξτε τις ρυθμίσεις σε 0770 έτσι ώστε ο κατάλογος να μην μπορεί να προβάλλεται από άλλους χρήστες.", "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 33a6abe2494..753b7e5b046 100644 --- a/lib/l10n/el.json +++ b/lib/l10n/el.json @@ -135,8 +135,6 @@ "Please ask your server administrator to restart the web server." : "Παρακαλώ ζητήστε από το διαχειριστή του διακομιστή σας να επανεκκινήσει το διακομιστή δικτύου σας.", "PostgreSQL >= 9 required" : "Απαιτείται PostgreSQL >= 9", "Please upgrade your database version" : "Παρακαλώ αναβαθμίστε την έκδοση της βάσης δεδομένων σας", - "Error occurred while checking PostgreSQL version" : "Προέκυψε σφάλμα κατά τον έλεγχο της έκδοσης PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Παρακαλώ ελέγξτε ότι έχετε PostgreSQL >= 9 ή ελέγξτε στα ιστορικό σφαλμάτων για περισσότερες πληροφορίες για το σφάλμα", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Παρακαλώ αλλάξτε τις ρυθμίσεις σε 0770 έτσι ώστε ο κατάλογος να μην μπορεί να προβάλλεται από άλλους χρήστες.", "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 1ea5f9ef3ed..58721efe41f 100644 --- a/lib/l10n/en_GB.js +++ b/lib/l10n/en_GB.js @@ -132,8 +132,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Please ask your server administrator to restart the web server.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 required", "Please upgrade your database version" : "Please upgrade your database version", - "Error occurred while checking PostgreSQL version" : "Error occurred while checking PostgreSQL version", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Please change the permissions to 0770 so that the directory cannot be listed by other users.", "Data directory (%s) is readable by other users" : "Data directory (%s) is readable by other users", "Data directory (%s) must be an absolute path" : "Data directory (%s) must be an absolute path", diff --git a/lib/l10n/en_GB.json b/lib/l10n/en_GB.json index ddc0cb947e4..f09b192b3d1 100644 --- a/lib/l10n/en_GB.json +++ b/lib/l10n/en_GB.json @@ -130,8 +130,6 @@ "Please ask your server administrator to restart the web server." : "Please ask your server administrator to restart the web server.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 required", "Please upgrade your database version" : "Please upgrade your database version", - "Error occurred while checking PostgreSQL version" : "Error occurred while checking PostgreSQL version", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Please change the permissions to 0770 so that the directory cannot be listed by other users.", "Data directory (%s) is readable by other users" : "Data directory (%s) is readable by other users", "Data directory (%s) must be an absolute path" : "Data directory (%s) must be an absolute path", diff --git a/lib/l10n/eo.js b/lib/l10n/eo.js index b69c0836197..21996ac557d 100644 --- a/lib/l10n/eo.js +++ b/lib/l10n/eo.js @@ -70,7 +70,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Bonvolu peti viajn serviladministranton, ke ŝi/li reekfunkciigu la TTT-servilon.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 necesas", "Please upgrade your database version" : "Bonvolu ĝisdatigi la eldonon de via datumbazo", - "Error occurred while checking PostgreSQL version" : "Eraro okazis dum kontrolo de eldono de PostgreSQL", "Data directory (%s) is readable by other users" : "Dosierujo de datumoj (%s) legeblas de aliaj uzantoj", "Data directory (%s) must be an absolute path" : "Dosierujo de datumoj (%s) devas specifiĝi per absoluta vojo", "Data directory (%s) is invalid" : "Dosierujo de datumoj (%s) ne validas" diff --git a/lib/l10n/eo.json b/lib/l10n/eo.json index 37558aef9e2..b7e60a7fb55 100644 --- a/lib/l10n/eo.json +++ b/lib/l10n/eo.json @@ -68,7 +68,6 @@ "Please ask your server administrator to restart the web server." : "Bonvolu peti viajn serviladministranton, ke ŝi/li reekfunkciigu la TTT-servilon.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 necesas", "Please upgrade your database version" : "Bonvolu ĝisdatigi la eldonon de via datumbazo", - "Error occurred while checking PostgreSQL version" : "Eraro okazis dum kontrolo de eldono de PostgreSQL", "Data directory (%s) is readable by other users" : "Dosierujo de datumoj (%s) legeblas de aliaj uzantoj", "Data directory (%s) must be an absolute path" : "Dosierujo de datumoj (%s) devas specifiĝi per absoluta vojo", "Data directory (%s) is invalid" : "Dosierujo de datumoj (%s) ne validas" diff --git a/lib/l10n/es.js b/lib/l10n/es.js index 3eb2e71a7d4..8f554001cfd 100644 --- a/lib/l10n/es.js +++ b/lib/l10n/es.js @@ -87,6 +87,7 @@ OC.L10N.register( "Sharing %s failed, because the backend does not allow shares from type %i" : "No se pudo compartir %s porque el repositorio no permite recursos compartidos del tipo %i", "Sharing %s failed, because the file does not exist" : "No se pudo compartir %s porque el archivo no existe", "You are not allowed to share %s" : "Usted no está autorizado para compartir %s", + "Sharing %s failed, because you can not share with yourself" : "Se falló al compartir %s, porque no puedes compartir contigo mismo", "Sharing %s failed, because the user %s does not exist" : "Se ha fallado al compartir %s, ya que el usuario %s no existe", "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se ha fallado al compartir %s, ya que el usuario %s no es miembro de ningún grupo del que %s sea miembro", "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", @@ -105,6 +106,7 @@ OC.L10N.register( "Sharing backend %s must implement the interface OCP\\Share_Backend" : "El motor compartido %s debe implementar la interfaz OCP\\Share_Backend", "Sharing backend %s not found" : "El motor compartido %s no se ha encontrado", "Sharing backend for %s not found" : "Motor compartido para %s no encontrado", + "Sharing failed, because the user %s is the original sharer" : "Se ha fallado al compartir, ya que el usuario %s es el compartidor original", "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se ha fallado al compartir %s, ya que los permisos superan los permisos otorgados a %s", "Sharing %s failed, because resharing is not allowed" : "Se ha fallado al compartir %s, ya que volver a compartir no está permitido", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Se ha fallado al compartir %s porque el motor compartido para %s podría no encontrar su origen", @@ -138,8 +140,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Consulte al administrador de su servidor para reiniciar el servidor web.", "PostgreSQL >= 9 required" : "PostgreSQL 9 o superior requerido.", "Please upgrade your database version" : "Actualice su versión de base de datos.", - "Error occurred while checking PostgreSQL version" : "Ha ocurrido un error mientras se comprobaba la versión de PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Por favor, asegúrese de que tiene PostgreSQL 9 o superior, o revise los registros para obtener más información acerca del error.", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Por favor cambie los permisos a 0770 para que el directorio no se pueda mostrar para otros usuarios.", "Data directory (%s) is readable by other users" : "El directorio de datos (%s) se puede leer por otros usuarios.", "Data directory (%s) must be an absolute path" : "El directorio de datos (%s) debe ser una ruta absoluta", diff --git a/lib/l10n/es.json b/lib/l10n/es.json index bbc50f2b5b8..94ff1d3db2c 100644 --- a/lib/l10n/es.json +++ b/lib/l10n/es.json @@ -85,6 +85,7 @@ "Sharing %s failed, because the backend does not allow shares from type %i" : "No se pudo compartir %s porque el repositorio no permite recursos compartidos del tipo %i", "Sharing %s failed, because the file does not exist" : "No se pudo compartir %s porque el archivo no existe", "You are not allowed to share %s" : "Usted no está autorizado para compartir %s", + "Sharing %s failed, because you can not share with yourself" : "Se falló al compartir %s, porque no puedes compartir contigo mismo", "Sharing %s failed, because the user %s does not exist" : "Se ha fallado al compartir %s, ya que el usuario %s no existe", "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se ha fallado al compartir %s, ya que el usuario %s no es miembro de ningún grupo del que %s sea miembro", "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", @@ -103,6 +104,7 @@ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "El motor compartido %s debe implementar la interfaz OCP\\Share_Backend", "Sharing backend %s not found" : "El motor compartido %s no se ha encontrado", "Sharing backend for %s not found" : "Motor compartido para %s no encontrado", + "Sharing failed, because the user %s is the original sharer" : "Se ha fallado al compartir, ya que el usuario %s es el compartidor original", "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se ha fallado al compartir %s, ya que los permisos superan los permisos otorgados a %s", "Sharing %s failed, because resharing is not allowed" : "Se ha fallado al compartir %s, ya que volver a compartir no está permitido", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Se ha fallado al compartir %s porque el motor compartido para %s podría no encontrar su origen", @@ -136,8 +138,6 @@ "Please ask your server administrator to restart the web server." : "Consulte al administrador de su servidor para reiniciar el servidor web.", "PostgreSQL >= 9 required" : "PostgreSQL 9 o superior requerido.", "Please upgrade your database version" : "Actualice su versión de base de datos.", - "Error occurred while checking PostgreSQL version" : "Ha ocurrido un error mientras se comprobaba la versión de PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Por favor, asegúrese de que tiene PostgreSQL 9 o superior, o revise los registros para obtener más información acerca del error.", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Por favor cambie los permisos a 0770 para que el directorio no se pueda mostrar para otros usuarios.", "Data directory (%s) is readable by other users" : "El directorio de datos (%s) se puede leer por otros usuarios.", "Data directory (%s) must be an absolute path" : "El directorio de datos (%s) debe ser una ruta absoluta", diff --git a/lib/l10n/es_AR.js b/lib/l10n/es_AR.js index 58c5f473851..aff2406c699 100644 --- a/lib/l10n/es_AR.js +++ b/lib/l10n/es_AR.js @@ -1,6 +1,7 @@ OC.L10N.register( "lib", { + "Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!", "Help" : "Ayuda", "Personal" : "Personal", "Users" : "Usuarios", @@ -48,6 +49,7 @@ OC.L10N.register( "Could not find category \"%s\"" : "No fue posible encontrar la categoría \"%s\"", "Apps" : "Apps", "A valid username must be provided" : "Debe ingresar un nombre de usuario válido", - "A valid password must be provided" : "Debe ingresar una contraseña válida" + "A valid password must be provided" : "Debe ingresar una contraseña válida", + "Storage not available" : "Almacenamiento no disponible" }, "nplurals=2; plural=(n != 1);"); diff --git a/lib/l10n/es_AR.json b/lib/l10n/es_AR.json index 605aecb1ab1..4cbbb8ad93f 100644 --- a/lib/l10n/es_AR.json +++ b/lib/l10n/es_AR.json @@ -1,4 +1,5 @@ { "translations": { + "Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!", "Help" : "Ayuda", "Personal" : "Personal", "Users" : "Usuarios", @@ -46,6 +47,7 @@ "Could not find category \"%s\"" : "No fue posible encontrar la categoría \"%s\"", "Apps" : "Apps", "A valid username must be provided" : "Debe ingresar un nombre de usuario válido", - "A valid password must be provided" : "Debe ingresar una contraseña válida" + "A valid password must be provided" : "Debe ingresar una contraseña válida", + "Storage not available" : "Almacenamiento no disponible" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/lib/l10n/et_EE.js b/lib/l10n/et_EE.js index d2146e8af30..eaf98861f23 100644 --- a/lib/l10n/et_EE.js +++ b/lib/l10n/et_EE.js @@ -114,8 +114,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Palu oma serveri haldajal veebiserver taaskäivitada.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 on nõutav", "Please upgrade your database version" : "Palun uuenda oma andmebaasi versiooni", - "Error occurred while checking PostgreSQL version" : "Viga PostgreSQL versiooni kontrollimisel", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Palun veendu, et kasutad PostgreSQL >=9 või vaata logidest vea kohta detailsemat informatsiooni", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Palun muuda kataloogi õigused 0770-ks, et kataloogi sisu poleks teistele kasutajatele nähtav", "Data directory (%s) is readable by other users" : "Andmete kataloog (%s) on teistele kasutajate loetav", "Data directory (%s) is invalid" : "Andmete kataloog (%s) pole korrektne", diff --git a/lib/l10n/et_EE.json b/lib/l10n/et_EE.json index 6c223ecfa4f..7d28a75c59e 100644 --- a/lib/l10n/et_EE.json +++ b/lib/l10n/et_EE.json @@ -112,8 +112,6 @@ "Please ask your server administrator to restart the web server." : "Palu oma serveri haldajal veebiserver taaskäivitada.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 on nõutav", "Please upgrade your database version" : "Palun uuenda oma andmebaasi versiooni", - "Error occurred while checking PostgreSQL version" : "Viga PostgreSQL versiooni kontrollimisel", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Palun veendu, et kasutad PostgreSQL >=9 või vaata logidest vea kohta detailsemat informatsiooni", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Palun muuda kataloogi õigused 0770-ks, et kataloogi sisu poleks teistele kasutajatele nähtav", "Data directory (%s) is readable by other users" : "Andmete kataloog (%s) on teistele kasutajate loetav", "Data directory (%s) is invalid" : "Andmete kataloog (%s) pole korrektne", diff --git a/lib/l10n/eu.js b/lib/l10n/eu.js index 7b69f456692..c6e75f37988 100644 --- a/lib/l10n/eu.js +++ b/lib/l10n/eu.js @@ -113,8 +113,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Mesedez eskatu zerbitzariaren kudeatzaileari web zerbitzaria berrabiarazteko.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 behar da", "Please upgrade your database version" : "Mesedez eguneratu zure datu basearen bertsioa", - "Error occurred while checking PostgreSQL version" : "Errore bat gertatu da PostgreSQLren bertsioa egiaztatzerakoan", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Mesedez ziurtatu PostgreSQL >= 9 duzula edo begiratu logak erroreari buruzko informazio gehiago lortzeko", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Mesedez aldatu baimenak 0770ra beste erabiltzaileek karpetan sartu ezin izateko.", "Data directory (%s) is readable by other users" : "Data karpeta (%s) beste erabiltzaileek irakur dezakete", "Data directory (%s) is invalid" : "Datuen karpeta (%s) ez da baliogarria", diff --git a/lib/l10n/eu.json b/lib/l10n/eu.json index 591c31869ab..cf6c5da9394 100644 --- a/lib/l10n/eu.json +++ b/lib/l10n/eu.json @@ -111,8 +111,6 @@ "Please ask your server administrator to restart the web server." : "Mesedez eskatu zerbitzariaren kudeatzaileari web zerbitzaria berrabiarazteko.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 behar da", "Please upgrade your database version" : "Mesedez eguneratu zure datu basearen bertsioa", - "Error occurred while checking PostgreSQL version" : "Errore bat gertatu da PostgreSQLren bertsioa egiaztatzerakoan", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Mesedez ziurtatu PostgreSQL >= 9 duzula edo begiratu logak erroreari buruzko informazio gehiago lortzeko", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Mesedez aldatu baimenak 0770ra beste erabiltzaileek karpetan sartu ezin izateko.", "Data directory (%s) is readable by other users" : "Data karpeta (%s) beste erabiltzaileek irakur dezakete", "Data directory (%s) is invalid" : "Datuen karpeta (%s) ez da baliogarria", diff --git a/lib/l10n/fa.js b/lib/l10n/fa.js index 950b37e631f..4e4d33d0ace 100644 --- a/lib/l10n/fa.js +++ b/lib/l10n/fa.js @@ -70,7 +70,6 @@ OC.L10N.register( "PHP module %s not installed." : "ماژول PHP %s نصب نشده است.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 نیاز است", "Please upgrade your database version" : "لطفا نسخهی پایگاهدادهی خود را بروز کنید", - "Error occurred while checking PostgreSQL version" : "خطا در هنگام بررسی نسخهی PostgreSQL", "Storage not available" : "فضای ذخیره سازی موجود نیست" }, "nplurals=1; plural=0;"); diff --git a/lib/l10n/fa.json b/lib/l10n/fa.json index 2f6270c7e7a..4ca821758dc 100644 --- a/lib/l10n/fa.json +++ b/lib/l10n/fa.json @@ -68,7 +68,6 @@ "PHP module %s not installed." : "ماژول PHP %s نصب نشده است.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 نیاز است", "Please upgrade your database version" : "لطفا نسخهی پایگاهدادهی خود را بروز کنید", - "Error occurred while checking PostgreSQL version" : "خطا در هنگام بررسی نسخهی PostgreSQL", "Storage not available" : "فضای ذخیره سازی موجود نیست" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/lib/l10n/fi_FI.js b/lib/l10n/fi_FI.js index c932fa35d60..3510ebdd956 100644 --- a/lib/l10n/fi_FI.js +++ b/lib/l10n/fi_FI.js @@ -122,8 +122,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Pyydä palvelimen ylläpitäjää käynnistämään web-palvelin uudelleen.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 vaaditaan", "Please upgrade your database version" : "Päivitä tietokantasi versio", - "Error occurred while checking PostgreSQL version" : "Virhe PostgreSQL:n versiota tarkistaessa", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Varmista, että käytössäsi on PostgreSQL >= 9 tai tarkista lokit saadaksesi lisätietoja virheestä", "Data directory (%s) is readable by other users" : "Datakansio (%s) on muiden käyttäjien luettavissa", "Data directory (%s) must be an absolute path" : "Datahakemiston (%s) tulee olla absoluuttinen polku", "Check the value of \"datadirectory\" in your configuration" : "Tarkista \"datadirectory\"-arvo asetuksistasi", diff --git a/lib/l10n/fi_FI.json b/lib/l10n/fi_FI.json index 55209ee0b72..eb55bc2a8ff 100644 --- a/lib/l10n/fi_FI.json +++ b/lib/l10n/fi_FI.json @@ -120,8 +120,6 @@ "Please ask your server administrator to restart the web server." : "Pyydä palvelimen ylläpitäjää käynnistämään web-palvelin uudelleen.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 vaaditaan", "Please upgrade your database version" : "Päivitä tietokantasi versio", - "Error occurred while checking PostgreSQL version" : "Virhe PostgreSQL:n versiota tarkistaessa", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Varmista, että käytössäsi on PostgreSQL >= 9 tai tarkista lokit saadaksesi lisätietoja virheestä", "Data directory (%s) is readable by other users" : "Datakansio (%s) on muiden käyttäjien luettavissa", "Data directory (%s) must be an absolute path" : "Datahakemiston (%s) tulee olla absoluuttinen polku", "Check the value of \"datadirectory\" in your configuration" : "Tarkista \"datadirectory\"-arvo asetuksistasi", diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js index 305dea06792..9660650b4f1 100644 --- a/lib/l10n/fr.js +++ b/lib/l10n/fr.js @@ -139,8 +139,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Veuillez demander à votre administrateur serveur de redémarrer le serveur web.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 requis", "Please upgrade your database version" : "Veuillez mettre à jour votre gestionnaire de base de données", - "Error occurred while checking PostgreSQL version" : "Une erreur s’est produite pendant la récupération du numéro de version de PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Veuillez vérifier que vous utilisez PostgreSQL >= 9 , ou regardez dans le journal d’erreur pour plus d’informations sur ce problème", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Veuillez changer les permissions du répertoire en mode 0770 afin que son contenu ne puisse pas être listé par les autres utilisateurs.", "Data directory (%s) is readable by other users" : "Le répertoire de données (%s) est lisible par les autres utilisateurs", "Data directory (%s) must be an absolute path" : "Le chemin du dossier de données (%s) doit être absolu", diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json index 9ca7bce8d10..a388630993e 100644 --- a/lib/l10n/fr.json +++ b/lib/l10n/fr.json @@ -137,8 +137,6 @@ "Please ask your server administrator to restart the web server." : "Veuillez demander à votre administrateur serveur de redémarrer le serveur web.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 requis", "Please upgrade your database version" : "Veuillez mettre à jour votre gestionnaire de base de données", - "Error occurred while checking PostgreSQL version" : "Une erreur s’est produite pendant la récupération du numéro de version de PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Veuillez vérifier que vous utilisez PostgreSQL >= 9 , ou regardez dans le journal d’erreur pour plus d’informations sur ce problème", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Veuillez changer les permissions du répertoire en mode 0770 afin que son contenu ne puisse pas être listé par les autres utilisateurs.", "Data directory (%s) is readable by other users" : "Le répertoire de données (%s) est lisible par les autres utilisateurs", "Data directory (%s) must be an absolute path" : "Le chemin du dossier de données (%s) doit être absolu", diff --git a/lib/l10n/gl.js b/lib/l10n/gl.js index d6894749c0d..2025f14d5f8 100644 --- a/lib/l10n/gl.js +++ b/lib/l10n/gl.js @@ -136,8 +136,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Pregúntelle ao administrador do servidor polo reinicio do servidor web..", "PostgreSQL >= 9 required" : "Requírese PostgreSQL >= 9", "Please upgrade your database version" : "Anove a versión da súa base de datos", - "Error occurred while checking PostgreSQL version" : "Produciuse un erro mentres comprobaba a versión de PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Asegúrese de que dispón do PostgreSQL >= 9 ou comprobe os rexistros para obter máis información sobre este erro", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Cambie os permisos a 0770 para que o directorio non poida seren listado por outros usuarios.", "Data directory (%s) is readable by other users" : "O directorio de datos (%s) é lexíbel por outros usuarios", "Data directory (%s) must be an absolute path" : "O directorio de datos (%s) debe ser unha ruta absoluta", diff --git a/lib/l10n/gl.json b/lib/l10n/gl.json index 4dab647d768..8e93ad5253a 100644 --- a/lib/l10n/gl.json +++ b/lib/l10n/gl.json @@ -134,8 +134,6 @@ "Please ask your server administrator to restart the web server." : "Pregúntelle ao administrador do servidor polo reinicio do servidor web..", "PostgreSQL >= 9 required" : "Requírese PostgreSQL >= 9", "Please upgrade your database version" : "Anove a versión da súa base de datos", - "Error occurred while checking PostgreSQL version" : "Produciuse un erro mentres comprobaba a versión de PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Asegúrese de que dispón do PostgreSQL >= 9 ou comprobe os rexistros para obter máis información sobre este erro", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Cambie os permisos a 0770 para que o directorio non poida seren listado por outros usuarios.", "Data directory (%s) is readable by other users" : "O directorio de datos (%s) é lexíbel por outros usuarios", "Data directory (%s) must be an absolute path" : "O directorio de datos (%s) debe ser unha ruta absoluta", diff --git a/lib/l10n/hr.js b/lib/l10n/hr.js index ef605582c78..4c3443fa294 100644 --- a/lib/l10n/hr.js +++ b/lib/l10n/hr.js @@ -106,8 +106,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Molimo zamolite svog administratora poslužitelja da ponovno pokrene web poslužitelj.", "PostgreSQL >= 9 required" : "Potreban je PostgreSQL >= 9", "Please upgrade your database version" : "Molimo, ažurirajte svoju verziju baze podataka", - "Error occurred while checking PostgreSQL version" : "Došlo je do pogreške tijekom provjeravanja verzije PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Pobrinite se da imate PostgreSQL >= 9. Za više informacija provjerite zapisnike.", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Molimo promijenite dozvole na 0770 tako da se tim direktorijem ne mogu služiti drugi korisnici", "Data directory (%s) is readable by other users" : "Podatkovni direktorij (%s) čitljiv je za druge korisnike", "Data directory (%s) is invalid" : "Podatkovni direktorij (%s) nije ispravan", diff --git a/lib/l10n/hr.json b/lib/l10n/hr.json index 6e7e2bd432f..78d3ce21529 100644 --- a/lib/l10n/hr.json +++ b/lib/l10n/hr.json @@ -104,8 +104,6 @@ "Please ask your server administrator to restart the web server." : "Molimo zamolite svog administratora poslužitelja da ponovno pokrene web poslužitelj.", "PostgreSQL >= 9 required" : "Potreban je PostgreSQL >= 9", "Please upgrade your database version" : "Molimo, ažurirajte svoju verziju baze podataka", - "Error occurred while checking PostgreSQL version" : "Došlo je do pogreške tijekom provjeravanja verzije PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Pobrinite se da imate PostgreSQL >= 9. Za više informacija provjerite zapisnike.", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Molimo promijenite dozvole na 0770 tako da se tim direktorijem ne mogu služiti drugi korisnici", "Data directory (%s) is readable by other users" : "Podatkovni direktorij (%s) čitljiv je za druge korisnike", "Data directory (%s) is invalid" : "Podatkovni direktorij (%s) nije ispravan", diff --git a/lib/l10n/hu_HU.js b/lib/l10n/hu_HU.js index df162844485..7025b1b59b0 100644 --- a/lib/l10n/hu_HU.js +++ b/lib/l10n/hu_HU.js @@ -127,8 +127,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Kérje meg a rendszergazdát, hogy indítsa újra a webszervert!", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 szükséges", "Please upgrade your database version" : "Kérem frissítse az adatbázis-szoftvert!", - "Error occurred while checking PostgreSQL version" : "Hiba történt a PostgreSQL verziójának ellenőrzése közben", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Kérjük gondoskodjon róla, hogy a PostgreSQL legalább 9-es verziójú legyen, vagy ellenőrizze a naplófájlokat, hogy mi okozta a hibát!", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Kérjük módosítsa a könyvtár elérhetőségi engedélybeállítását 0770-re, hogy a tartalmát más felhasználó ne listázhassa!", "Data directory (%s) is readable by other users" : "Az adatkönyvtár (%s) más felhasználók számára is olvasható ", "Data directory (%s) must be an absolute path" : "Az adatkönyvtárnak (%s) abszolút elérési útnak kell lennie", diff --git a/lib/l10n/hu_HU.json b/lib/l10n/hu_HU.json index a94321be0b6..e882e6dae54 100644 --- a/lib/l10n/hu_HU.json +++ b/lib/l10n/hu_HU.json @@ -125,8 +125,6 @@ "Please ask your server administrator to restart the web server." : "Kérje meg a rendszergazdát, hogy indítsa újra a webszervert!", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 szükséges", "Please upgrade your database version" : "Kérem frissítse az adatbázis-szoftvert!", - "Error occurred while checking PostgreSQL version" : "Hiba történt a PostgreSQL verziójának ellenőrzése közben", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Kérjük gondoskodjon róla, hogy a PostgreSQL legalább 9-es verziójú legyen, vagy ellenőrizze a naplófájlokat, hogy mi okozta a hibát!", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Kérjük módosítsa a könyvtár elérhetőségi engedélybeállítását 0770-re, hogy a tartalmát más felhasználó ne listázhassa!", "Data directory (%s) is readable by other users" : "Az adatkönyvtár (%s) más felhasználók számára is olvasható ", "Data directory (%s) must be an absolute path" : "Az adatkönyvtárnak (%s) abszolút elérési útnak kell lennie", diff --git a/lib/l10n/id.js b/lib/l10n/id.js index 70a47a4d87a..9d7842935da 100644 --- a/lib/l10n/id.js +++ b/lib/l10n/id.js @@ -140,8 +140,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Mohon minta administrator Anda untuk menjalankan ulang server web.", "PostgreSQL >= 9 required" : "Diperlukan PostgreSQL >= 9", "Please upgrade your database version" : "Mohon perbarui versi basis data Anda", - "Error occurred while checking PostgreSQL version" : "Terjadi kesalahan saat memeriksa versi PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Pastikan bahwa Anda memiliki PostgreSQL >= 9 atau periksa log untuk informasi lebih lanjut tentang kesalahan", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Mohon ubah perizinan menjadi 0770 sehingga direktori tersebut tidak dapat dilihat oleh pengguna lain.", "Data directory (%s) is readable by other users" : "Direktori data (%s) dapat dibaca oleh pengguna lain", "Data directory (%s) must be an absolute path" : "Direktori Data (%s) harus berupa lokasi lengkap", diff --git a/lib/l10n/id.json b/lib/l10n/id.json index 01f60eee2f7..f6a042e5dd7 100644 --- a/lib/l10n/id.json +++ b/lib/l10n/id.json @@ -138,8 +138,6 @@ "Please ask your server administrator to restart the web server." : "Mohon minta administrator Anda untuk menjalankan ulang server web.", "PostgreSQL >= 9 required" : "Diperlukan PostgreSQL >= 9", "Please upgrade your database version" : "Mohon perbarui versi basis data Anda", - "Error occurred while checking PostgreSQL version" : "Terjadi kesalahan saat memeriksa versi PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Pastikan bahwa Anda memiliki PostgreSQL >= 9 atau periksa log untuk informasi lebih lanjut tentang kesalahan", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Mohon ubah perizinan menjadi 0770 sehingga direktori tersebut tidak dapat dilihat oleh pengguna lain.", "Data directory (%s) is readable by other users" : "Direktori data (%s) dapat dibaca oleh pengguna lain", "Data directory (%s) must be an absolute path" : "Direktori Data (%s) harus berupa lokasi lengkap", diff --git a/lib/l10n/it.js b/lib/l10n/it.js index 92fd849ef7e..ab6c5119c82 100644 --- a/lib/l10n/it.js +++ b/lib/l10n/it.js @@ -140,8 +140,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Chiedi all'amministratore di riavviare il server web.", "PostgreSQL >= 9 required" : "Richiesto PostgreSQL >= 9", "Please upgrade your database version" : "Aggiorna la versione del tuo database", - "Error occurred while checking PostgreSQL version" : "Si è verificato un errore durante il controllo della versione di PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Assicurati di avere PostgreSQL >= 9 o controlla i log per ulteriori informazioni sull'errore", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Modifica i permessi in 0770 in modo tale che la cartella non sia leggibile dagli altri utenti.", "Data directory (%s) is readable by other users" : "La cartella dei dati (%s) è leggibile dagli altri utenti", "Data directory (%s) must be an absolute path" : "La cartella dei dati (%s) deve essere un percorso assoluto", diff --git a/lib/l10n/it.json b/lib/l10n/it.json index 080f2e87986..0eb2ddd825a 100644 --- a/lib/l10n/it.json +++ b/lib/l10n/it.json @@ -138,8 +138,6 @@ "Please ask your server administrator to restart the web server." : "Chiedi all'amministratore di riavviare il server web.", "PostgreSQL >= 9 required" : "Richiesto PostgreSQL >= 9", "Please upgrade your database version" : "Aggiorna la versione del tuo database", - "Error occurred while checking PostgreSQL version" : "Si è verificato un errore durante il controllo della versione di PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Assicurati di avere PostgreSQL >= 9 o controlla i log per ulteriori informazioni sull'errore", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Modifica i permessi in 0770 in modo tale che la cartella non sia leggibile dagli altri utenti.", "Data directory (%s) is readable by other users" : "La cartella dei dati (%s) è leggibile dagli altri utenti", "Data directory (%s) must be an absolute path" : "La cartella dei dati (%s) deve essere un percorso assoluto", diff --git a/lib/l10n/ja.js b/lib/l10n/ja.js index d00866d4ba6..21375b53925 100644 --- a/lib/l10n/ja.js +++ b/lib/l10n/ja.js @@ -140,8 +140,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "サーバー管理者にWebサーバーを再起動するよう依頼してください。", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 が必要です", "Please upgrade your database version" : "新しいバージョンのデータベースにアップグレードしてください", - "Error occurred while checking PostgreSQL version" : "PostgreSQL のバージョンチェック中にエラーが発生しました", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "PostgreSQL >= 9 がインストールされているかどうか確認してください。もしくは、ログからエラーに関する詳細な情報を確認してください。", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "ディレクトリが他のユーザーから見えないように、パーミッションを 0770 に変更してください。", "Data directory (%s) is readable by other users" : "データディレクトリ (%s) は他のユーザーも閲覧することができます", "Data directory (%s) must be an absolute path" : "データディレクトリ (%s) は、絶対パスである必要があります。", diff --git a/lib/l10n/ja.json b/lib/l10n/ja.json index e939520703e..204eb63787b 100644 --- a/lib/l10n/ja.json +++ b/lib/l10n/ja.json @@ -138,8 +138,6 @@ "Please ask your server administrator to restart the web server." : "サーバー管理者にWebサーバーを再起動するよう依頼してください。", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 が必要です", "Please upgrade your database version" : "新しいバージョンのデータベースにアップグレードしてください", - "Error occurred while checking PostgreSQL version" : "PostgreSQL のバージョンチェック中にエラーが発生しました", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "PostgreSQL >= 9 がインストールされているかどうか確認してください。もしくは、ログからエラーに関する詳細な情報を確認してください。", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "ディレクトリが他のユーザーから見えないように、パーミッションを 0770 に変更してください。", "Data directory (%s) is readable by other users" : "データディレクトリ (%s) は他のユーザーも閲覧することができます", "Data directory (%s) must be an absolute path" : "データディレクトリ (%s) は、絶対パスである必要があります。", diff --git a/lib/l10n/ko.js b/lib/l10n/ko.js index 5a35f149f03..41a7e1921f2 100644 --- a/lib/l10n/ko.js +++ b/lib/l10n/ko.js @@ -140,8 +140,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "서버 관리자에게 웹 서버 재시작을 요청하십시오.", "PostgreSQL >= 9 required" : "PostgreSQL 버전 9 이상이 필요합니다", "Please upgrade your database version" : "데이터베이스 버전을 업그레이드 하십시오", - "Error occurred while checking PostgreSQL version" : "PostgreSQL 버전을 확인하는 중 오류가 발생했습니다", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "PostgreSQL 버전 9 이상이 있는지 확인하시고, 자세한 정보는 로그를 확인하십시오", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "권한을 0770으로 변경하여 다른 사용자가 읽을 수 없도록 하십시오.", "Data directory (%s) is readable by other users" : "데이터 디렉터리(%s)를 다른 사용자가 읽을 수 있음", "Data directory (%s) must be an absolute path" : "데이터 디렉터리(%s)는 반드시 절대 경로여야 함", diff --git a/lib/l10n/ko.json b/lib/l10n/ko.json index deb80e00e98..193ddb2d27b 100644 --- a/lib/l10n/ko.json +++ b/lib/l10n/ko.json @@ -138,8 +138,6 @@ "Please ask your server administrator to restart the web server." : "서버 관리자에게 웹 서버 재시작을 요청하십시오.", "PostgreSQL >= 9 required" : "PostgreSQL 버전 9 이상이 필요합니다", "Please upgrade your database version" : "데이터베이스 버전을 업그레이드 하십시오", - "Error occurred while checking PostgreSQL version" : "PostgreSQL 버전을 확인하는 중 오류가 발생했습니다", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "PostgreSQL 버전 9 이상이 있는지 확인하시고, 자세한 정보는 로그를 확인하십시오", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "권한을 0770으로 변경하여 다른 사용자가 읽을 수 없도록 하십시오.", "Data directory (%s) is readable by other users" : "데이터 디렉터리(%s)를 다른 사용자가 읽을 수 있음", "Data directory (%s) must be an absolute path" : "데이터 디렉터리(%s)는 반드시 절대 경로여야 함", diff --git a/lib/l10n/lt_LT.js b/lib/l10n/lt_LT.js index 27392c84d2c..c93903ff75e 100644 --- a/lib/l10n/lt_LT.js +++ b/lib/l10n/lt_LT.js @@ -1,6 +1,9 @@ OC.L10N.register( "lib", { + "Cannot write into \"config\" directory!" : "Negalima rašyti į \"config\" aplanką!", + "This can usually be fixed by giving the webserver write access to the config directory" : "Tai gali būti ištaisyta suteikiant web serveriui rašymo teises į config aplanką", + "PHP %s or higher is required." : "Reikalinga PHP %s arba aukštesnė.", "Help" : "Pagalba", "Personal" : "Asmeniniai", "Users" : "Vartotojai", @@ -17,6 +20,8 @@ OC.L10N.register( "_%n minute ago_::_%n minutes ago_" : ["prieš %n min.","Prieš % minutes","Prieš %n minučių"], "seconds ago" : "prieš sekundę", "web services under your control" : "jūsų valdomos web paslaugos", + "Empty filename is not allowed" : "Tuščias failo pavadinimas neleidžiamas", + "File name is a reserved word" : "Failo pavadinimas negalimas, žodis rezervuotas", "File name contains at least one invalid character" : "Failo vardas sudarytas iš neleistinų simbolių", "App directory already exists" : "Programos aplankas jau egzistuoja", "Can't create app folder. Please fix permissions. %s" : "Nepavyksta sukurti aplanko. Prašome pataisyti leidimus. %s", diff --git a/lib/l10n/lt_LT.json b/lib/l10n/lt_LT.json index 674939a7a0a..2784c3aefc1 100644 --- a/lib/l10n/lt_LT.json +++ b/lib/l10n/lt_LT.json @@ -1,4 +1,7 @@ { "translations": { + "Cannot write into \"config\" directory!" : "Negalima rašyti į \"config\" aplanką!", + "This can usually be fixed by giving the webserver write access to the config directory" : "Tai gali būti ištaisyta suteikiant web serveriui rašymo teises į config aplanką", + "PHP %s or higher is required." : "Reikalinga PHP %s arba aukštesnė.", "Help" : "Pagalba", "Personal" : "Asmeniniai", "Users" : "Vartotojai", @@ -15,6 +18,8 @@ "_%n minute ago_::_%n minutes ago_" : ["prieš %n min.","Prieš % minutes","Prieš %n minučių"], "seconds ago" : "prieš sekundę", "web services under your control" : "jūsų valdomos web paslaugos", + "Empty filename is not allowed" : "Tuščias failo pavadinimas neleidžiamas", + "File name is a reserved word" : "Failo pavadinimas negalimas, žodis rezervuotas", "File name contains at least one invalid character" : "Failo vardas sudarytas iš neleistinų simbolių", "App directory already exists" : "Programos aplankas jau egzistuoja", "Can't create app folder. Please fix permissions. %s" : "Nepavyksta sukurti aplanko. Prašome pataisyti leidimus. %s", diff --git a/lib/l10n/nb_NO.js b/lib/l10n/nb_NO.js index 4f85c4975e0..a8ea9cca6ab 100644 --- a/lib/l10n/nb_NO.js +++ b/lib/l10n/nb_NO.js @@ -140,8 +140,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Be server-administratoren om å starte web-serveren på nytt.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 kreves", "Please upgrade your database version" : "Vennligst oppgrader versjonen av databasen din", - "Error occurred while checking PostgreSQL version" : "Det oppstod en feil ved sjekking av PostgreSQL-versjon", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Sjekk at du har PostgreSQL >= 9 eller sjekk loggene for mer informasjon om feilen", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Endre tillatelsene til 0770 slik at mappen ikke kan listes av andre brukere.", "Data directory (%s) is readable by other users" : "Data-mappen (%s) kan leses av andre brukere", "Data directory (%s) must be an absolute path" : "Datamappen (%s) må være en absolutt sti", diff --git a/lib/l10n/nb_NO.json b/lib/l10n/nb_NO.json index 80f1ba19fc9..22a3154f8f3 100644 --- a/lib/l10n/nb_NO.json +++ b/lib/l10n/nb_NO.json @@ -138,8 +138,6 @@ "Please ask your server administrator to restart the web server." : "Be server-administratoren om å starte web-serveren på nytt.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 kreves", "Please upgrade your database version" : "Vennligst oppgrader versjonen av databasen din", - "Error occurred while checking PostgreSQL version" : "Det oppstod en feil ved sjekking av PostgreSQL-versjon", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Sjekk at du har PostgreSQL >= 9 eller sjekk loggene for mer informasjon om feilen", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Endre tillatelsene til 0770 slik at mappen ikke kan listes av andre brukere.", "Data directory (%s) is readable by other users" : "Data-mappen (%s) kan leses av andre brukere", "Data directory (%s) must be an absolute path" : "Datamappen (%s) må være en absolutt sti", diff --git a/lib/l10n/nl.js b/lib/l10n/nl.js index d1cfc134c38..24e087a50f5 100644 --- a/lib/l10n/nl.js +++ b/lib/l10n/nl.js @@ -140,8 +140,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Vraag uw beheerder de webserver opnieuw op te starten.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 vereist", "Please upgrade your database version" : "Werk uw database versie bij", - "Error occurred while checking PostgreSQL version" : "Een fout trad op bij checken PostgreSQL versie", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Verifieer dat u PostgreSQL >=9 draait of check de logs voor meer informatie over deze fout", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Wijzig de permissies in 0770 zodat de directory niet door anderen bekeken kan worden.", "Data directory (%s) is readable by other users" : "De datadirectory (%s) is leesbaar voor andere gebruikers", "Data directory (%s) must be an absolute path" : "De datadirectory (%s) moet een absoluut pad hebben", diff --git a/lib/l10n/nl.json b/lib/l10n/nl.json index a38fbdbecc4..691f3e08240 100644 --- a/lib/l10n/nl.json +++ b/lib/l10n/nl.json @@ -138,8 +138,6 @@ "Please ask your server administrator to restart the web server." : "Vraag uw beheerder de webserver opnieuw op te starten.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 vereist", "Please upgrade your database version" : "Werk uw database versie bij", - "Error occurred while checking PostgreSQL version" : "Een fout trad op bij checken PostgreSQL versie", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Verifieer dat u PostgreSQL >=9 draait of check de logs voor meer informatie over deze fout", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Wijzig de permissies in 0770 zodat de directory niet door anderen bekeken kan worden.", "Data directory (%s) is readable by other users" : "De datadirectory (%s) is leesbaar voor andere gebruikers", "Data directory (%s) must be an absolute path" : "De datadirectory (%s) moet een absoluut pad hebben", diff --git a/lib/l10n/oc.js b/lib/l10n/oc.js index b304ccaeec0..e99298f3737 100644 --- a/lib/l10n/oc.js +++ b/lib/l10n/oc.js @@ -139,8 +139,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Demandatz a vòstre administrator servidor que reavie lo servidor web.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 requesit", "Please upgrade your database version" : "Metètz a jorn vòstre gestionari de banca de donadas", - "Error occurred while checking PostgreSQL version" : "Una error s’es produsida pendent la recuperacion del numèro de version de PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Verificatz qu'utilizatz PostgreSQL >= 9 , o agachatz dins lo jornal d’error per mai d’informacions sus aqueste problèma", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Cambiatz las permissions del repertòri en mòde 0770 per fin que son contengut pòsca èsser listat pels autres utilizaires.", "Data directory (%s) is readable by other users" : "Lo repertòri de donadas (%s) es legible pels autres utilizaires", "Data directory (%s) must be an absolute path" : "Lo camin del dorsièr de donadas (%s) deu èsser absolut", diff --git a/lib/l10n/oc.json b/lib/l10n/oc.json index 2341f7d199b..8a835f35872 100644 --- a/lib/l10n/oc.json +++ b/lib/l10n/oc.json @@ -137,8 +137,6 @@ "Please ask your server administrator to restart the web server." : "Demandatz a vòstre administrator servidor que reavie lo servidor web.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 requesit", "Please upgrade your database version" : "Metètz a jorn vòstre gestionari de banca de donadas", - "Error occurred while checking PostgreSQL version" : "Una error s’es produsida pendent la recuperacion del numèro de version de PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Verificatz qu'utilizatz PostgreSQL >= 9 , o agachatz dins lo jornal d’error per mai d’informacions sus aqueste problèma", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Cambiatz las permissions del repertòri en mòde 0770 per fin que son contengut pòsca èsser listat pels autres utilizaires.", "Data directory (%s) is readable by other users" : "Lo repertòri de donadas (%s) es legible pels autres utilizaires", "Data directory (%s) must be an absolute path" : "Lo camin del dorsièr de donadas (%s) deu èsser absolut", diff --git a/lib/l10n/pl.js b/lib/l10n/pl.js index e347fd6249a..ffb1120a117 100644 --- a/lib/l10n/pl.js +++ b/lib/l10n/pl.js @@ -110,8 +110,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Poproś administratora serwera o restart serwera www.", "PostgreSQL >= 9 required" : "Wymagany PostgreSQL >= 9", "Please upgrade your database version" : "Uaktualnij wersję bazy danych", - "Error occurred while checking PostgreSQL version" : "Wystąpił błąd podczas sprawdzania wersji PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Upewnij się, że PostgreSQL jest w wersji co najmniej 9 lub sprawdź log by uzyskać więcej informacji na temat błędu", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Zmień uprawnienia na 0770, żeby ukryć zawartość katalogu przed innymi użytkownikami.", "Data directory (%s) is readable by other users" : "Katalog danych (%s) jest możliwy do odczytania przez innych użytkowników", "Data directory (%s) is invalid" : "Katalog danych (%s) jest nieprawidłowy", diff --git a/lib/l10n/pl.json b/lib/l10n/pl.json index 5f4151f4012..0ac37f3d01d 100644 --- a/lib/l10n/pl.json +++ b/lib/l10n/pl.json @@ -108,8 +108,6 @@ "Please ask your server administrator to restart the web server." : "Poproś administratora serwera o restart serwera www.", "PostgreSQL >= 9 required" : "Wymagany PostgreSQL >= 9", "Please upgrade your database version" : "Uaktualnij wersję bazy danych", - "Error occurred while checking PostgreSQL version" : "Wystąpił błąd podczas sprawdzania wersji PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Upewnij się, że PostgreSQL jest w wersji co najmniej 9 lub sprawdź log by uzyskać więcej informacji na temat błędu", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Zmień uprawnienia na 0770, żeby ukryć zawartość katalogu przed innymi użytkownikami.", "Data directory (%s) is readable by other users" : "Katalog danych (%s) jest możliwy do odczytania przez innych użytkowników", "Data directory (%s) is invalid" : "Katalog danych (%s) jest nieprawidłowy", diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js index 5939fc1f3ca..8078d369b76 100644 --- a/lib/l10n/pt_BR.js +++ b/lib/l10n/pt_BR.js @@ -140,8 +140,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Por favor, peça ao seu administrador do servidor para reiniciar o servidor web.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 requirido", "Please upgrade your database version" : "Por favor, atualize sua versão do banco de dados", - "Error occurred while checking PostgreSQL version" : "Erro ao verificar a versão do PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Por favor, verifique se você tem PostgreSQL> = 9 ou verificar os logs para obter mais informações sobre o erro", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Por favor, altere as permissões para 0770 para que o diretório não possa ser listado por outros usuários.", "Data directory (%s) is readable by other users" : "Diretório de dados (%s) pode ser lido por outros usuários", "Data directory (%s) must be an absolute path" : "Diretório de dados (%s) deve ser um caminho absoluto", diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json index e25e14daa13..5987c1e2ac7 100644 --- a/lib/l10n/pt_BR.json +++ b/lib/l10n/pt_BR.json @@ -138,8 +138,6 @@ "Please ask your server administrator to restart the web server." : "Por favor, peça ao seu administrador do servidor para reiniciar o servidor web.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 requirido", "Please upgrade your database version" : "Por favor, atualize sua versão do banco de dados", - "Error occurred while checking PostgreSQL version" : "Erro ao verificar a versão do PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Por favor, verifique se você tem PostgreSQL> = 9 ou verificar os logs para obter mais informações sobre o erro", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Por favor, altere as permissões para 0770 para que o diretório não possa ser listado por outros usuários.", "Data directory (%s) is readable by other users" : "Diretório de dados (%s) pode ser lido por outros usuários", "Data directory (%s) must be an absolute path" : "Diretório de dados (%s) deve ser um caminho absoluto", diff --git a/lib/l10n/pt_PT.js b/lib/l10n/pt_PT.js index a4207e996ad..5cf4eb92fee 100644 --- a/lib/l10n/pt_PT.js +++ b/lib/l10n/pt_PT.js @@ -131,8 +131,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Pro favor pergunte ao seu administrador do servidor para reiniciar o servidor da internet.", "PostgreSQL >= 9 required" : "Necessita PostgreSQL >= 9", "Please upgrade your database version" : "Por favor actualize a sua versão da base de dados", - "Error occurred while checking PostgreSQL version" : "Ocorreu um erro enquanto pesquisava a versão do PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Por favor confirme que tem o PostgreSQL >= 9 ou verifique os registos para mais informação sobre o erro", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Por favor altere as permissões para 0770 para que esse directório não possa ser listado por outros utilizadores.", "Data directory (%s) is readable by other users" : "O directório de dados (%s) é legível para outros utilizadores", "Data directory (%s) must be an absolute path" : "Diretório de dados (%s) deve ser um caminho absoluto", diff --git a/lib/l10n/pt_PT.json b/lib/l10n/pt_PT.json index 94a85e0d371..d4996db5942 100644 --- a/lib/l10n/pt_PT.json +++ b/lib/l10n/pt_PT.json @@ -129,8 +129,6 @@ "Please ask your server administrator to restart the web server." : "Pro favor pergunte ao seu administrador do servidor para reiniciar o servidor da internet.", "PostgreSQL >= 9 required" : "Necessita PostgreSQL >= 9", "Please upgrade your database version" : "Por favor actualize a sua versão da base de dados", - "Error occurred while checking PostgreSQL version" : "Ocorreu um erro enquanto pesquisava a versão do PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Por favor confirme que tem o PostgreSQL >= 9 ou verifique os registos para mais informação sobre o erro", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Por favor altere as permissões para 0770 para que esse directório não possa ser listado por outros utilizadores.", "Data directory (%s) is readable by other users" : "O directório de dados (%s) é legível para outros utilizadores", "Data directory (%s) must be an absolute path" : "Diretório de dados (%s) deve ser um caminho absoluto", diff --git a/lib/l10n/ro.js b/lib/l10n/ro.js index 008fcd83349..92e739b7d54 100644 --- a/lib/l10n/ro.js +++ b/lib/l10n/ro.js @@ -51,7 +51,6 @@ OC.L10N.register( "PHP modules have been installed, but they are still listed as missing?" : "Modulele PHP au fost instalate, dar apar ca lipsind?", "PostgreSQL >= 9 required" : "Este necesară versiunea 9 sau mai mare a PostgreSQL", "Please upgrade your database version" : "Actualizați baza de date la o versiune mai nouă", - "Error occurred while checking PostgreSQL version" : "A apărut o eroare la verificarea versiunii PostgreSQL", "Storage not available" : "Spațiu de stocare indisponibil" }, "nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"); diff --git a/lib/l10n/ro.json b/lib/l10n/ro.json index b23f99f410a..9f6abb00413 100644 --- a/lib/l10n/ro.json +++ b/lib/l10n/ro.json @@ -49,7 +49,6 @@ "PHP modules have been installed, but they are still listed as missing?" : "Modulele PHP au fost instalate, dar apar ca lipsind?", "PostgreSQL >= 9 required" : "Este necesară versiunea 9 sau mai mare a PostgreSQL", "Please upgrade your database version" : "Actualizați baza de date la o versiune mai nouă", - "Error occurred while checking PostgreSQL version" : "A apărut o eroare la verificarea versiunii PostgreSQL", "Storage not available" : "Spațiu de stocare indisponibil" },"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));" }
\ No newline at end of file diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js index 58b05ccd2e5..6b5932c0b55 100644 --- a/lib/l10n/ru.js +++ b/lib/l10n/ru.js @@ -140,8 +140,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Пожалуйста, попросите вашего администратора перезапустить веб-сервер.", "PostgreSQL >= 9 required" : "Требуется PostgreSQL >= 9", "Please upgrade your database version" : "Обновите базу данных", - "Error occurred while checking PostgreSQL version" : "Произошла ошибка при проверке версии PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Убедитесь что версия PostgreSQL >= 9 или проверьте журналы для получения дополнительной информацией об ошибке", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Измените права доступа на 0770, чтобы другие пользователи не могли получить список файлов этого каталога.", "Data directory (%s) is readable by other users" : "Каталог данных (%s) доступен для чтения другим пользователям", "Data directory (%s) must be an absolute path" : "Директория данных (%s) должна иметь абсолютный путь", diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json index a5cf92180bb..62567fd749a 100644 --- a/lib/l10n/ru.json +++ b/lib/l10n/ru.json @@ -138,8 +138,6 @@ "Please ask your server administrator to restart the web server." : "Пожалуйста, попросите вашего администратора перезапустить веб-сервер.", "PostgreSQL >= 9 required" : "Требуется PostgreSQL >= 9", "Please upgrade your database version" : "Обновите базу данных", - "Error occurred while checking PostgreSQL version" : "Произошла ошибка при проверке версии PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Убедитесь что версия PostgreSQL >= 9 или проверьте журналы для получения дополнительной информацией об ошибке", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Измените права доступа на 0770, чтобы другие пользователи не могли получить список файлов этого каталога.", "Data directory (%s) is readable by other users" : "Каталог данных (%s) доступен для чтения другим пользователям", "Data directory (%s) must be an absolute path" : "Директория данных (%s) должна иметь абсолютный путь", diff --git a/lib/l10n/sk_SK.js b/lib/l10n/sk_SK.js index 395b45b0dc5..03d2671d2e8 100644 --- a/lib/l10n/sk_SK.js +++ b/lib/l10n/sk_SK.js @@ -138,8 +138,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Prosím, požiadajte administrátora vášho servera o reštartovanie webového servera.", "PostgreSQL >= 9 required" : "Vyžadované PostgreSQL >= 9", "Please upgrade your database version" : "Prosím, aktualizujte verziu svojej databázy", - "Error occurred while checking PostgreSQL version" : "Nastala chyba pri overovaní verzie PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Prosím, uistite sa, že máte PostgreSQL >= 9 alebo sa pozrite do protokolu, kde nájdete podrobnejšie informácie o chybe", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Prosím, zmeňte oprávnenia na 0770, aby tento priečinok nemohli ostatní používatelia otvoriť.", "Data directory (%s) is readable by other users" : "Priečinok dát (%s) je prístupný na čítanie ostatným používateľom", "Data directory (%s) must be an absolute path" : "Priečinok dát (%s) musí byť zadaný ako absolútna cesta", diff --git a/lib/l10n/sk_SK.json b/lib/l10n/sk_SK.json index 6fbfca2602b..2c09cdac580 100644 --- a/lib/l10n/sk_SK.json +++ b/lib/l10n/sk_SK.json @@ -136,8 +136,6 @@ "Please ask your server administrator to restart the web server." : "Prosím, požiadajte administrátora vášho servera o reštartovanie webového servera.", "PostgreSQL >= 9 required" : "Vyžadované PostgreSQL >= 9", "Please upgrade your database version" : "Prosím, aktualizujte verziu svojej databázy", - "Error occurred while checking PostgreSQL version" : "Nastala chyba pri overovaní verzie PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Prosím, uistite sa, že máte PostgreSQL >= 9 alebo sa pozrite do protokolu, kde nájdete podrobnejšie informácie o chybe", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Prosím, zmeňte oprávnenia na 0770, aby tento priečinok nemohli ostatní používatelia otvoriť.", "Data directory (%s) is readable by other users" : "Priečinok dát (%s) je prístupný na čítanie ostatným používateľom", "Data directory (%s) must be an absolute path" : "Priečinok dát (%s) musí byť zadaný ako absolútna cesta", diff --git a/lib/l10n/sl.js b/lib/l10n/sl.js index 07a21c894fb..b84110995e2 100644 --- a/lib/l10n/sl.js +++ b/lib/l10n/sl.js @@ -120,8 +120,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Obvestite skrbnika strežnika, da je treba ponovno zagnati spletni strežnik.", "PostgreSQL >= 9 required" : "Zahtevana je različica PostgreSQL >= 9.", "Please upgrade your database version" : "Posodobite različico podatkovne zbirke.", - "Error occurred while checking PostgreSQL version" : "Prišlo je do napake med preverjanjem različice PostgreSQL.", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Prepričajte se, da je nameščena različica PostgreSQL >= 9 in preverite dnevniški zapis za več podrobnosti o napaki.", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Spremenite dovoljenja mape na 0770 in s tem onemogočite branje vsebine drugim uporabnikom.", "Data directory (%s) is readable by other users" : "Podatkovna mapa (%s) ima določena dovoljenja za branje skupine.", "Data directory (%s) is invalid" : "Podatkovna mapa (%s) ni veljavna.", diff --git a/lib/l10n/sl.json b/lib/l10n/sl.json index ed518f770bb..7f70f881b31 100644 --- a/lib/l10n/sl.json +++ b/lib/l10n/sl.json @@ -118,8 +118,6 @@ "Please ask your server administrator to restart the web server." : "Obvestite skrbnika strežnika, da je treba ponovno zagnati spletni strežnik.", "PostgreSQL >= 9 required" : "Zahtevana je različica PostgreSQL >= 9.", "Please upgrade your database version" : "Posodobite različico podatkovne zbirke.", - "Error occurred while checking PostgreSQL version" : "Prišlo je do napake med preverjanjem različice PostgreSQL.", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Prepričajte se, da je nameščena različica PostgreSQL >= 9 in preverite dnevniški zapis za več podrobnosti o napaki.", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Spremenite dovoljenja mape na 0770 in s tem onemogočite branje vsebine drugim uporabnikom.", "Data directory (%s) is readable by other users" : "Podatkovna mapa (%s) ima določena dovoljenja za branje skupine.", "Data directory (%s) is invalid" : "Podatkovna mapa (%s) ni veljavna.", diff --git a/lib/l10n/sq.js b/lib/l10n/sq.js index 2cf6eeecdef..ff319d2a01f 100644 --- a/lib/l10n/sq.js +++ b/lib/l10n/sq.js @@ -140,8 +140,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Ju lutemi, kërkojini përgjegjësit të shërbyesit tuaj të rinisë shërbyesin web.", "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.", - "Error occurred while checking PostgreSQL version" : "Ndodhi një gabim teksa kontrollohej versioni i PostgreSQL-së", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Ju lutemi, sigurohuni që keni PostgreSQL >= 9 ose kontrolloni regjistrat për më tepër të dhëna rreth gabimit", "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ë.", "Data directory (%s) is readable by other users" : "Drejtoria e të dhënave (%s) është e lexueshme nga përdorues të tjerë", "Data directory (%s) must be an absolute path" : "Drejtoria e të dhënave (%s) duhet të jepë një shteg absolut", diff --git a/lib/l10n/sq.json b/lib/l10n/sq.json index ec412dfff53..200bfd7a9ca 100644 --- a/lib/l10n/sq.json +++ b/lib/l10n/sq.json @@ -138,8 +138,6 @@ "Please ask your server administrator to restart the web server." : "Ju lutemi, kërkojini përgjegjësit të shërbyesit tuaj të rinisë shërbyesin web.", "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.", - "Error occurred while checking PostgreSQL version" : "Ndodhi një gabim teksa kontrollohej versioni i PostgreSQL-së", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Ju lutemi, sigurohuni që keni PostgreSQL >= 9 ose kontrolloni regjistrat për më tepër të dhëna rreth gabimit", "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ë.", "Data directory (%s) is readable by other users" : "Drejtoria e të dhënave (%s) është e lexueshme nga përdorues të tjerë", "Data directory (%s) must be an absolute path" : "Drejtoria e të dhënave (%s) duhet të jepë një shteg absolut", diff --git a/lib/l10n/sr.js b/lib/l10n/sr.js index 677c14b92cc..07fe91c176e 100644 --- a/lib/l10n/sr.js +++ b/lib/l10n/sr.js @@ -138,8 +138,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Замолите вашег администратора сервера да поново покрене веб сервер.", "PostgreSQL >= 9 required" : "Захтеван је ПостгреСкул >= 9", "Please upgrade your database version" : "Надоградите ваше издање базе", - "Error occurred while checking PostgreSQL version" : "Дошло је до грешке приликом провере издања програма ПостгреСкул", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Проверите да ли имате ПостгреСкул >= 9 или проверите дневнике записа за више информација о грешци", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Промените дозволе у 0770 како директоријуми не би могли бити излистани од стране других корисника.", "Data directory (%s) is readable by other users" : "Директоријум података (%s) могу читати остали корисници", "Data directory (%s) must be an absolute path" : "Директоријум података (%s) мора бити апсолутна путања", diff --git a/lib/l10n/sr.json b/lib/l10n/sr.json index 7ac58babca4..38349a02baf 100644 --- a/lib/l10n/sr.json +++ b/lib/l10n/sr.json @@ -136,8 +136,6 @@ "Please ask your server administrator to restart the web server." : "Замолите вашег администратора сервера да поново покрене веб сервер.", "PostgreSQL >= 9 required" : "Захтеван је ПостгреСкул >= 9", "Please upgrade your database version" : "Надоградите ваше издање базе", - "Error occurred while checking PostgreSQL version" : "Дошло је до грешке приликом провере издања програма ПостгреСкул", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Проверите да ли имате ПостгреСкул >= 9 или проверите дневнике записа за више информација о грешци", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Промените дозволе у 0770 како директоријуми не би могли бити излистани од стране других корисника.", "Data directory (%s) is readable by other users" : "Директоријум података (%s) могу читати остали корисници", "Data directory (%s) must be an absolute path" : "Директоријум података (%s) мора бити апсолутна путања", diff --git a/lib/l10n/sv.js b/lib/l10n/sv.js index f5e0ceaf114..a27ea06c152 100644 --- a/lib/l10n/sv.js +++ b/lib/l10n/sv.js @@ -112,8 +112,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Vänligen be din serveradministratör att starta om webservern.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 krävs", "Please upgrade your database version" : "Vänligen uppgradera din databas-version", - "Error occurred while checking PostgreSQL version" : "Ett fel inträffade vid kontroll utav PostgreSQL-version", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Vänligen säkerställ att du har PostgreSQL >= 9 eller kolla loggarna för mer information om felet", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Vänligen ändra rättigheterna till 0770 så att katalogen inte kan listas utav andra användare.", "Data directory (%s) is readable by other users" : "Datakatalogen (%s) kan läsas av andra användare", "Data directory (%s) is invalid" : "Datakatlogen (%s) är ogiltig", diff --git a/lib/l10n/sv.json b/lib/l10n/sv.json index 415f8de7e08..2e85e4bd507 100644 --- a/lib/l10n/sv.json +++ b/lib/l10n/sv.json @@ -110,8 +110,6 @@ "Please ask your server administrator to restart the web server." : "Vänligen be din serveradministratör att starta om webservern.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 krävs", "Please upgrade your database version" : "Vänligen uppgradera din databas-version", - "Error occurred while checking PostgreSQL version" : "Ett fel inträffade vid kontroll utav PostgreSQL-version", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Vänligen säkerställ att du har PostgreSQL >= 9 eller kolla loggarna för mer information om felet", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Vänligen ändra rättigheterna till 0770 så att katalogen inte kan listas utav andra användare.", "Data directory (%s) is readable by other users" : "Datakatalogen (%s) kan läsas av andra användare", "Data directory (%s) is invalid" : "Datakatlogen (%s) är ogiltig", diff --git a/lib/l10n/th_TH.js b/lib/l10n/th_TH.js index d7cc862481a..4da409b7d88 100644 --- a/lib/l10n/th_TH.js +++ b/lib/l10n/th_TH.js @@ -140,8 +140,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "โปรดสอบถามผู้ดูแลระบบเซิร์ฟเวอร์ของคุณเพื่อเริ่มการทำงานของเว็บเซิร์ฟเวอร์", "PostgreSQL >= 9 required" : "จำเป็นต้องใช้ PostgreSQL รุ่น >= 9", "Please upgrade your database version" : "กรุณาอัพเดทฐานข้อมูลของคุณ", - "Error occurred while checking PostgreSQL version" : "เกิดข้อผิดพลาดขึ้นขณะที่การตรวจสอบรุ่นของ PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "กรุณาให้แน่ใจว่าคุณมี PostgreSQL รุ่น >= 9 หรือตรวจสอบบันทึกสำหรับข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาด", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "กรุณาเปลี่ยนสิทธิ์การเข้าถึงเป็น 0770 เพื่อให้ไดเรกทอรีไม่สามารถแก้ไขโดยผู้ใช้อื่น", "Data directory (%s) is readable by other users" : "ไดเรกทอรีข้อมูล (%s) สามารถอ่านได้โดยผู้ใช้อื่น", "Data directory (%s) must be an absolute path" : "ไดเรกทอรีข้อมูล (%s) จะต้องเป็นเส้นทางที่แน่นอน", diff --git a/lib/l10n/th_TH.json b/lib/l10n/th_TH.json index 3a9fc838bd7..a21802be63a 100644 --- a/lib/l10n/th_TH.json +++ b/lib/l10n/th_TH.json @@ -138,8 +138,6 @@ "Please ask your server administrator to restart the web server." : "โปรดสอบถามผู้ดูแลระบบเซิร์ฟเวอร์ของคุณเพื่อเริ่มการทำงานของเว็บเซิร์ฟเวอร์", "PostgreSQL >= 9 required" : "จำเป็นต้องใช้ PostgreSQL รุ่น >= 9", "Please upgrade your database version" : "กรุณาอัพเดทฐานข้อมูลของคุณ", - "Error occurred while checking PostgreSQL version" : "เกิดข้อผิดพลาดขึ้นขณะที่การตรวจสอบรุ่นของ PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "กรุณาให้แน่ใจว่าคุณมี PostgreSQL รุ่น >= 9 หรือตรวจสอบบันทึกสำหรับข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาด", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "กรุณาเปลี่ยนสิทธิ์การเข้าถึงเป็น 0770 เพื่อให้ไดเรกทอรีไม่สามารถแก้ไขโดยผู้ใช้อื่น", "Data directory (%s) is readable by other users" : "ไดเรกทอรีข้อมูล (%s) สามารถอ่านได้โดยผู้ใช้อื่น", "Data directory (%s) must be an absolute path" : "ไดเรกทอรีข้อมูล (%s) จะต้องเป็นเส้นทางที่แน่นอน", diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js index 963bbbacc24..89beff7d2e1 100644 --- a/lib/l10n/tr.js +++ b/lib/l10n/tr.js @@ -87,6 +87,7 @@ OC.L10N.register( "Sharing %s failed, because the backend does not allow shares from type %i" : "Arka uç %i türündeki paylaşımlara izin vermediğinden %s paylaşımı başarısız", "Sharing %s failed, because the file does not exist" : "%s paylaşımı, dosya mevcut olmadığından başarısız oldu", "You are not allowed to share %s" : "%s paylaşımını yapma izniniz yok", + "Sharing %s failed, because you can not share with yourself" : "%s paylaşımı başarısız, kendiniz ile paylaşamazsınız", "Sharing %s failed, because the user %s does not exist" : "%s paylaşımı, %s kullanıcısı mevcut olmadığından başarısız oldu", "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "%s paylaşımı, %s kullanıcısının %s üyeliklerinden birine sahip olmadığından başarısız oldu", "Sharing %s failed, because this item is already shared with %s" : "%s paylaşımı, %s ile zaten paylaşıldığından dolayı başarısız oldu", @@ -105,6 +106,7 @@ OC.L10N.register( "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Paylaşma arka ucu %s OCP\\Share_Backend arayüzünü desteklemeli", "Sharing backend %s not found" : "Paylaşım arka ucu %s bulunamadı", "Sharing backend for %s not found" : "%s için paylaşım arka ucu bulunamadı", + "Sharing failed, because the user %s is the original sharer" : "%s kullanıcısı özgün paylaşan kişi olduğundan başarısız oldu", "Sharing %s failed, because the permissions exceed permissions granted to %s" : "%s paylaşımı, izinler %s için verilen izinleri aştığından dolayı başarısız oldu", "Sharing %s failed, because resharing is not allowed" : "%s paylaşımı, tekrar paylaşımın izin verilmemesinden dolayı başarısız oldu", "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s paylaşımı, %s için arka ucun kaynağını bulamamasından dolayı başarısız oldu", @@ -138,8 +140,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Lütfen web sunucusunu yeniden başlatması için sunucu yöneticinize danışın.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 gerekli", "Please upgrade your database version" : "Lütfen veritabanı sürümünüzü yükseltin", - "Error occurred while checking PostgreSQL version" : "PostgreSQL sürümü denetlenirken hata oluştu", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "PostgreSQL >= 9 sürümüne sahip olduğunuzu doğrulayın veya hata hakkında daha fazla bilgi için günlükleri denetleyin", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Lütfen izinleri 0770 olarak ayarlayıp dizinin diğer kullanıcılar tarafından görülememesini sağlayın.", "Data directory (%s) is readable by other users" : "Veri dizini (%s) diğer kullanıcılar tarafından okunabilir", "Data directory (%s) must be an absolute path" : "Veri dizini (%s) tam yol olmalıdır", diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json index 1880b659fa9..02b3549baca 100644 --- a/lib/l10n/tr.json +++ b/lib/l10n/tr.json @@ -85,6 +85,7 @@ "Sharing %s failed, because the backend does not allow shares from type %i" : "Arka uç %i türündeki paylaşımlara izin vermediğinden %s paylaşımı başarısız", "Sharing %s failed, because the file does not exist" : "%s paylaşımı, dosya mevcut olmadığından başarısız oldu", "You are not allowed to share %s" : "%s paylaşımını yapma izniniz yok", + "Sharing %s failed, because you can not share with yourself" : "%s paylaşımı başarısız, kendiniz ile paylaşamazsınız", "Sharing %s failed, because the user %s does not exist" : "%s paylaşımı, %s kullanıcısı mevcut olmadığından başarısız oldu", "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "%s paylaşımı, %s kullanıcısının %s üyeliklerinden birine sahip olmadığından başarısız oldu", "Sharing %s failed, because this item is already shared with %s" : "%s paylaşımı, %s ile zaten paylaşıldığından dolayı başarısız oldu", @@ -103,6 +104,7 @@ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Paylaşma arka ucu %s OCP\\Share_Backend arayüzünü desteklemeli", "Sharing backend %s not found" : "Paylaşım arka ucu %s bulunamadı", "Sharing backend for %s not found" : "%s için paylaşım arka ucu bulunamadı", + "Sharing failed, because the user %s is the original sharer" : "%s kullanıcısı özgün paylaşan kişi olduğundan başarısız oldu", "Sharing %s failed, because the permissions exceed permissions granted to %s" : "%s paylaşımı, izinler %s için verilen izinleri aştığından dolayı başarısız oldu", "Sharing %s failed, because resharing is not allowed" : "%s paylaşımı, tekrar paylaşımın izin verilmemesinden dolayı başarısız oldu", "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s paylaşımı, %s için arka ucun kaynağını bulamamasından dolayı başarısız oldu", @@ -136,8 +138,6 @@ "Please ask your server administrator to restart the web server." : "Lütfen web sunucusunu yeniden başlatması için sunucu yöneticinize danışın.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 gerekli", "Please upgrade your database version" : "Lütfen veritabanı sürümünüzü yükseltin", - "Error occurred while checking PostgreSQL version" : "PostgreSQL sürümü denetlenirken hata oluştu", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "PostgreSQL >= 9 sürümüne sahip olduğunuzu doğrulayın veya hata hakkında daha fazla bilgi için günlükleri denetleyin", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Lütfen izinleri 0770 olarak ayarlayıp dizinin diğer kullanıcılar tarafından görülememesini sağlayın.", "Data directory (%s) is readable by other users" : "Veri dizini (%s) diğer kullanıcılar tarafından okunabilir", "Data directory (%s) must be an absolute path" : "Veri dizini (%s) tam yol olmalıdır", diff --git a/lib/l10n/uk.js b/lib/l10n/uk.js index b2537139cc2..25bd609d82e 100644 --- a/lib/l10n/uk.js +++ b/lib/l10n/uk.js @@ -129,8 +129,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "Будь ласка, зверніться до адміністратора, щоб перезавантажити сервер.", "PostgreSQL >= 9 required" : "Потрібно PostgreSQL> = 9", "Please upgrade your database version" : "Оновіть версію бази даних", - "Error occurred while checking PostgreSQL version" : "Сталася помилка при перевірці версії PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Переконайтеся що версія PostgreSQL> = 9 або перевірте журнали для отримання додаткової інформацією про помилку", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Змініть права доступу на 0770, щоб інші користувачі не могли отримати список файлів цього каталогу.", "Data directory (%s) is readable by other users" : "Каталог даних (%s) доступний для читання іншим користувачам", "Data directory (%s) must be an absolute path" : "Тека з даними (%s) має бути задана абсолютним шляхом", diff --git a/lib/l10n/uk.json b/lib/l10n/uk.json index f5b1bc77465..1d07831ae70 100644 --- a/lib/l10n/uk.json +++ b/lib/l10n/uk.json @@ -127,8 +127,6 @@ "Please ask your server administrator to restart the web server." : "Будь ласка, зверніться до адміністратора, щоб перезавантажити сервер.", "PostgreSQL >= 9 required" : "Потрібно PostgreSQL> = 9", "Please upgrade your database version" : "Оновіть версію бази даних", - "Error occurred while checking PostgreSQL version" : "Сталася помилка при перевірці версії PostgreSQL", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Переконайтеся що версія PostgreSQL> = 9 або перевірте журнали для отримання додаткової інформацією про помилку", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Змініть права доступу на 0770, щоб інші користувачі не могли отримати список файлів цього каталогу.", "Data directory (%s) is readable by other users" : "Каталог даних (%s) доступний для читання іншим користувачам", "Data directory (%s) must be an absolute path" : "Тека з даними (%s) має бути задана абсолютним шляхом", diff --git a/lib/l10n/zh_CN.js b/lib/l10n/zh_CN.js index 1ec317736af..a0d17de2796 100644 --- a/lib/l10n/zh_CN.js +++ b/lib/l10n/zh_CN.js @@ -88,7 +88,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "请联系服务器管理员重启网页服务器。", "PostgreSQL >= 9 required" : "要求 PostgreSQL >= 9", "Please upgrade your database version" : "请升级您的数据库版本", - "Error occurred while checking PostgreSQL version" : "检查 PostgreSQL 版本时发生了一个错误", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "请更改权限为 0770 以避免其他用户查看目录。", "Data directory (%s) is readable by other users" : "文件目录 (%s) 可以被其他用户读取", "Data directory (%s) is invalid" : "文件目录 (%s) 无效", diff --git a/lib/l10n/zh_CN.json b/lib/l10n/zh_CN.json index d1ec158a8d3..b6bd6642114 100644 --- a/lib/l10n/zh_CN.json +++ b/lib/l10n/zh_CN.json @@ -86,7 +86,6 @@ "Please ask your server administrator to restart the web server." : "请联系服务器管理员重启网页服务器。", "PostgreSQL >= 9 required" : "要求 PostgreSQL >= 9", "Please upgrade your database version" : "请升级您的数据库版本", - "Error occurred while checking PostgreSQL version" : "检查 PostgreSQL 版本时发生了一个错误", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "请更改权限为 0770 以避免其他用户查看目录。", "Data directory (%s) is readable by other users" : "文件目录 (%s) 可以被其他用户读取", "Data directory (%s) is invalid" : "文件目录 (%s) 无效", diff --git a/lib/l10n/zh_TW.js b/lib/l10n/zh_TW.js index 1284f83e541..2fd08b7a8f7 100644 --- a/lib/l10n/zh_TW.js +++ b/lib/l10n/zh_TW.js @@ -135,8 +135,6 @@ OC.L10N.register( "Please ask your server administrator to restart the web server." : "請聯絡您的系統管理員重新啟動網頁伺服器", "PostgreSQL >= 9 required" : "需要 PostgreSQL 版本 >= 9", "Please upgrade your database version" : "請升級您的資料庫版本", - "Error occurred while checking PostgreSQL version" : "檢查 PostgreSQL 版本時發生錯誤", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "請確定您的 PostgreSQL 版本 >= 9,或是看看記錄檔是否有更詳細的訊息", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "請將該目錄權限設定為 0770 ,以免其他使用者讀取", "Data directory (%s) is readable by other users" : "資料目錄 (%s) 可以被其他使用者讀取", "Data directory (%s) must be an absolute path" : "資料夾目錄(%s) 必須式絕對路徑", diff --git a/lib/l10n/zh_TW.json b/lib/l10n/zh_TW.json index 93aeea2c6e1..25b16b9cae0 100644 --- a/lib/l10n/zh_TW.json +++ b/lib/l10n/zh_TW.json @@ -133,8 +133,6 @@ "Please ask your server administrator to restart the web server." : "請聯絡您的系統管理員重新啟動網頁伺服器", "PostgreSQL >= 9 required" : "需要 PostgreSQL 版本 >= 9", "Please upgrade your database version" : "請升級您的資料庫版本", - "Error occurred while checking PostgreSQL version" : "檢查 PostgreSQL 版本時發生錯誤", - "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "請確定您的 PostgreSQL 版本 >= 9,或是看看記錄檔是否有更詳細的訊息", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "請將該目錄權限設定為 0770 ,以免其他使用者讀取", "Data directory (%s) is readable by other users" : "資料目錄 (%s) 可以被其他使用者讀取", "Data directory (%s) must be an absolute path" : "資料夾目錄(%s) 必須式絕對路徑", diff --git a/lib/private/appframework/http/request.php b/lib/private/appframework/http/request.php index 96620838dfb..ea42c9a8967 100644 --- a/lib/private/appframework/http/request.php +++ b/lib/private/appframework/http/request.php @@ -42,7 +42,7 @@ use OCP\Security\ISecureRandom; */ class Request implements \ArrayAccess, \Countable, IRequest { - const USER_AGENT_IE = '/MSIE/'; + const USER_AGENT_IE = '/(MSIE)|(Trident)/'; const USER_AGENT_IE_8 = '/MSIE 8.0/'; // Android Chrome user agent: https://developers.google.com/chrome/mobile/docs/user-agent const USER_AGENT_ANDROID_MOBILE_CHROME = '#Android.*Chrome/[.0-9]*#'; @@ -674,6 +674,9 @@ class Request implements \ArrayAccess, \Countable, IRequest { * @return bool true if at least one of the given agent matches, false otherwise */ public function isUserAgent(array $agent) { + if (!isset($this->server['HTTP_USER_AGENT'])) { + return false; + } foreach ($agent as $regex) { if (preg_match($regex, $this->server['HTTP_USER_AGENT'])) { return true; diff --git a/lib/private/db/adapteroci8.php b/lib/private/db/adapteroci8.php index 6e7857e6620..76c265bc178 100644 --- a/lib/private/db/adapteroci8.php +++ b/lib/private/db/adapteroci8.php @@ -26,6 +26,9 @@ namespace OC\DB; class AdapterOCI8 extends Adapter { public function lastInsertId($table) { + if (is_null($table)) { + throw new \InvalidArgumentException('Oracle requires a table name to be passed into lastInsertId()'); + } if ($table !== null) { $suffix = '_SEQ'; $table = '"' . $table . $suffix . '"'; diff --git a/lib/private/db/connection.php b/lib/private/db/connection.php index 1b86d3d383a..85b1b7cd5ea 100644 --- a/lib/private/db/connection.php +++ b/lib/private/db/connection.php @@ -214,8 +214,7 @@ class Connection extends \Doctrine\DBAL\Connection implements IDBConnection { * @param string $seqName Name of the sequence object from which the ID should be returned. * @return string A string representation of the last inserted ID. */ - public function lastInsertId($seqName = null) - { + public function lastInsertId($seqName = null) { if ($seqName) { $seqName = $this->replaceTablePrefix($seqName); } diff --git a/lib/private/notification/inotification.php b/lib/private/notification/inotification.php index a8bf5b110ab..0187abab152 100644 --- a/lib/private/notification/inotification.php +++ b/lib/private/notification/inotification.php @@ -61,25 +61,26 @@ interface INotification { public function getUser(); /** - * @param int $timestamp + * @param \DateTime $dateTime * @return $this - * @throws \InvalidArgumentException if the timestamp are invalid - * @since 8.2.0 + * @throws \InvalidArgumentException if the $dateTime is invalid + * @since 9.0.0 */ - public function setTimestamp($timestamp); + public function setDateTime(\DateTime $dateTime); /** - * @return int - * @since 8.2.0 + * @return \DateTime + * @since 9.0.0 */ - public function getTimestamp(); + public function getDateTime(); /** * @param string $type - * @param int $id + * @param string $id * @return $this - * @throws \InvalidArgumentException if the object type or id are invalid + * @throws \InvalidArgumentException if the object type or id is invalid * @since 8.2.0 + * @changed 9.0.0 Type of $id changed to string */ public function setObject($type, $id); @@ -90,8 +91,9 @@ interface INotification { public function getObjectType(); /** - * @return int + * @return string * @since 8.2.0 + * @changed 9.0.0 Return type changed to string */ public function getObjectId(); diff --git a/lib/private/notification/notification.php b/lib/private/notification/notification.php index 01df659d4a1..70964fc0366 100644 --- a/lib/private/notification/notification.php +++ b/lib/private/notification/notification.php @@ -29,13 +29,13 @@ class Notification implements INotification { /** @var string */ protected $user; - /** @var int */ - protected $timestamp; + /** @var \DateTime */ + protected $dateTime; /** @var string */ protected $objectType; - /** @var int */ + /** @var string */ protected $objectId; /** @var string */ @@ -80,9 +80,10 @@ class Notification implements INotification { public function __construct() { $this->app = ''; $this->user = ''; - $this->timestamp = 0; + $this->dateTime = new \DateTime(); + $this->dateTime->setTimestamp(0); $this->objectType = ''; - $this->objectId = 0; + $this->objectId = ''; $this->subject = ''; $this->subjectParameters = []; $this->subjectParsed = ''; @@ -140,33 +141,34 @@ class Notification implements INotification { } /** - * @param int $timestamp + * @param \DateTime $dateTime * @return $this - * @throws \InvalidArgumentException if the timestamp is invalid - * @since 8.2.0 + * @throws \InvalidArgumentException if the $dateTime is invalid + * @since 9.0.0 */ - public function setTimestamp($timestamp) { - if (!is_int($timestamp)) { - throw new \InvalidArgumentException('The given timestamp is invalid'); + public function setDateTime(\DateTime $dateTime) { + if ($dateTime->getTimestamp() === 0) { + throw new \InvalidArgumentException('The given date time is invalid'); } - $this->timestamp = $timestamp; + $this->dateTime = $dateTime; return $this; } /** - * @return int - * @since 8.2.0 + * @return \DateTime + * @since 9.0.0 */ - public function getTimestamp() { - return $this->timestamp; + public function getDateTime() { + return $this->dateTime; } /** * @param string $type - * @param int $id + * @param string $id * @return $this * @throws \InvalidArgumentException if the object type or id is invalid * @since 8.2.0 + * @changed 9.0.0 Type of $id changed to string */ public function setObject($type, $id) { if (!is_string($type) || $type === '' || isset($type[64])) { @@ -174,10 +176,10 @@ class Notification implements INotification { } $this->objectType = $type; - if (!is_int($id)) { + if (!is_int($id) && (!is_string($id) || $id === '' || isset($id[64]))) { throw new \InvalidArgumentException('The given object id is invalid'); } - $this->objectId = $id; + $this->objectId = (string) $id; return $this; } @@ -190,8 +192,9 @@ class Notification implements INotification { } /** - * @return int + * @return string * @since 8.2.0 + * @changed 9.0.0 Return type changed to string */ public function getObjectId() { return $this->objectId; @@ -438,11 +441,11 @@ class Notification implements INotification { && $this->getUser() !== '' && - $this->getTimestamp() !== 0 + $this->getDateTime()->getTimestamp() !== 0 && $this->getObjectType() !== '' && - $this->getObjectId() !== 0 + $this->getObjectId() !== '' ; } } diff --git a/lib/private/share/share.php b/lib/private/share/share.php index d377708a268..6aac0d6264d 100644 --- a/lib/private/share/share.php +++ b/lib/private/share/share.php @@ -2332,22 +2332,7 @@ class Share extends Constants { $id = false; if ($result) { - $id = \OC::$server->getDatabaseConnection()->lastInsertId(); - // Fallback, if lastInterId() doesn't work we need to perform a select - // to get the ID (seems to happen sometimes on Oracle) - if (!$id) { - $getId = \OC_DB::prepare(' - SELECT `id` - FROM`*PREFIX*share` - WHERE `uid_owner` = ? AND `item_target` = ? AND `item_source` = ? AND `stime` = ? - '); - $r = $getId->execute(array($shareData['uidOwner'], $shareData['itemTarget'], $shareData['itemSource'], $shareData['shareTime'])); - if ($r) { - $row = $r->fetchRow(); - $id = $row['id']; - } - } - + $id = \OC::$server->getDatabaseConnection()->lastInsertId('*PREFIX*share'); } return $id; diff --git a/lib/private/share20/defaultshareprovider.php b/lib/private/share20/defaultshareprovider.php index 7f21d3aadf5..5805e41d411 100644 --- a/lib/private/share20/defaultshareprovider.php +++ b/lib/private/share20/defaultshareprovider.php @@ -69,19 +69,20 @@ class DefaultShareProvider implements IShareProvider { } /** - * Get all childre of this share + * Get all children of this share * - * @param IShare $share + * @param IShare $parent * @return IShare[] */ - private function getChildren(IShare $share) { + public function getChildren(IShare $parent) { $children = []; $qb = $this->dbConn->getQueryBuilder(); $qb->select('*') ->from('share') ->where($qb->expr()->eq('parent', $qb->createParameter('parent'))) - ->setParameter(':parent', $share->getId()); + ->setParameter(':parent', $parent->getId()) + ->orderBy('id'); $cursor = $qb->execute(); while($data = $cursor->fetch()) { @@ -93,50 +94,15 @@ class DefaultShareProvider implements IShareProvider { } /** - * Delete all the children of this share - * - * @param IShare $share - */ - protected function deleteChildren(IShare $share) { - foreach($this->getChildren($share) as $child) { - $this->delete($child); - } - } - - /** * Delete a share * - * @param Share $share + * @param IShare $share * @throws BackendError */ public function delete(IShare $share) { - $this->deleteChildren($share); - // Fetch share to make sure it exists $share = $this->getShareById($share->getId()); - $shareType = $share->getShareType(); - $sharedWith = ''; - if ($shareType === \OCP\Share::SHARE_TYPE_USER) { - $sharedWith = $share->getSharedWith()->getUID(); - } else if ($shareType === \OCP\Share::SHARE_TYPE_GROUP) { - $sharedWith = $share->getSharedWith()->getGID(); - } - - $hookParams = [ - 'id' => $share->getId(), - 'itemType' => $share->getPath() instanceof \OCP\Files\File ? 'file' : 'folder', - 'itemSource' => $share->getPath()->getId(), - 'shareType' => $shareType, - 'shareWith' => $sharedWith, - 'itemparent' => $share->getParent(), - 'uidOwner' => $share->getSharedBy()->getUID(), - 'fileSource' => $share->getPath()->getId(), - 'fileTarget' => $share->getTarget() - ]; - - \OC_Hook::emit('OCP\Share', 'pre_unshare', $hookParams); - $qb = $this->dbConn->getQueryBuilder(); $qb->delete('share') ->where($qb->expr()->eq('id', $qb->createParameter('id'))) @@ -147,8 +113,6 @@ class DefaultShareProvider implements IShareProvider { } catch (\Exception $e) { throw new BackendError(); } - - \OC_Hook::emit('OCP\Share', 'post_unshare', $hookParams); } /** @@ -195,8 +159,9 @@ class DefaultShareProvider implements IShareProvider { /** * Get shares for a given path * + * @param \OCP\IUser $user * @param \OCP\Files\Node $path - * @param Share[] + * @return IShare[] */ public function getSharesByPath(\OCP\IUser $user, \OCP\Files\Node $path) { throw new \Exception(); @@ -253,7 +218,7 @@ class DefaultShareProvider implements IShareProvider { $share->setSharedBy($this->userManager->get($data['uid_owner'])); // TODO: getById can return an array. How to handle this properly?? - $path = $this->userFolder->getById($data['file_source']); + $path = $this->userFolder->getById((int)$data['file_source']); $path = $path[0]; $share->setPath($path); diff --git a/lib/private/share20/ishareprovider.php b/lib/private/share20/ishareprovider.php index b3f4eb6868f..833de1b58f6 100644 --- a/lib/private/share20/ishareprovider.php +++ b/lib/private/share20/ishareprovider.php @@ -45,7 +45,7 @@ interface IShareProvider { /** * Delete a share * - * @param Share $share + * @param IShare $share * @throws BackendError */ public function delete(IShare $share); @@ -71,10 +71,19 @@ interface IShareProvider { public function getShareById($id); /** + * Get children + * + * @param IShare $parent + * @return IShare[] + */ + public function getChildren(IShare $parent); + + /** * Get shares for a given path * + * @param \OCP\IUser $user * @param \OCP\Files\Node $path - * @param Share[] + * @return IShare[] */ public function getSharesByPath(\OCP\IUser $user, \OCP\Files\Node $path); diff --git a/lib/private/share20/manager.php b/lib/private/share20/manager.php index 52e43a9aa9f..57d84967977 100644 --- a/lib/private/share20/manager.php +++ b/lib/private/share20/manager.php @@ -97,6 +97,25 @@ class Manager { } /** + * Delete all the children of this share + * + * @param IShare $share + * @return IShare[] List of deleted shares + */ + protected function deleteChildren(IShare $share) { + $deletedShares = []; + foreach($this->defaultProvider->getChildren($share) as $child) { + $deletedChildren = $this->deleteChildren($child); + $deletedShares = array_merge($deletedShares, $deletedChildren); + + $this->defaultProvider->delete($child); + $deletedShares[] = $child; + } + + return $deletedShares; + } + + /** * Delete a share * * @param Share $share @@ -104,11 +123,58 @@ class Manager { * @throws \OC\Share20\Exception\BackendError */ public function deleteShare(IShare $share) { - if ($share->getId() === null) { - throw new ShareNotFound(); - } + // Just to make sure we have all the info + $share = $this->getShareById($share->getId()); + + $formatHookParams = function($share) { + // Prepare hook + $shareType = $share->getShareType(); + $sharedWith = ''; + if ($shareType === \OCP\Share::SHARE_TYPE_USER) { + $sharedWith = $share->getSharedWith()->getUID(); + } else if ($shareType === \OCP\Share::SHARE_TYPE_GROUP) { + $sharedWith = $share->getSharedWith()->getGID(); + } else if ($shareType === \OCP\Share::SHARE_TYPE_REMOTE) { + $sharedWith = $share->getSharedWith(); + } + $hookParams = [ + 'id' => $share->getId(), + 'itemType' => $share->getPath() instanceof \OCP\Files\File ? 'file' : 'folder', + 'itemSource' => $share->getPath()->getId(), + 'shareType' => $shareType, + 'shareWith' => $sharedWith, + 'itemparent' => $share->getParent(), + 'uidOwner' => $share->getSharedBy()->getUID(), + 'fileSource' => $share->getPath()->getId(), + 'fileTarget' => $share->getTarget() + ]; + return $hookParams; + }; + + $hookParams = $formatHookParams($share); + + // Emit pre-hook + \OC_Hook::emit('OCP\Share', 'pre_unshare', $hookParams); + + // Get all children and delete them as well + $deletedShares = $this->deleteChildren($share); + + // Do the actual delete $this->defaultProvider->delete($share); + + // All the deleted shares caused by this delete + $deletedShares[] = $share; + + //Format hook info + $formattedDeletedShares = array_map(function($share) use ($formatHookParams) { + return $formatHookParams($share); + }, $deletedShares); + + $hookParams['deletedShares'] = $formattedDeletedShares; + + // Emit post hook + \OC_Hook::emit('OCP\Share', 'post_unshare', $hookParams); } /** @@ -131,6 +197,10 @@ class Manager { * @throws ShareNotFound */ public function getShareById($id) { + if ($id === null) { + throw new ShareNotFound(); + } + $share = $this->defaultProvider->getShareById($id); if ($share->getSharedWith() !== $this->currentUser && diff --git a/lib/private/template.php b/lib/private/template.php index 97666f0b8dc..1476a964ef3 100644 --- a/lib/private/template.php +++ b/lib/private/template.php @@ -143,7 +143,9 @@ class OC_Template extends \OC\Template\Base { OC_Util::addStyle("jquery.ocdialog"); OC_Util::addScript("compatibility", null, true); OC_Util::addScript("placeholders", null, true); - + OC_Util::addScript('files/fileinfo'); + OC_Util::addScript('files/client'); + // Add the stuff we need always // following logic will import all vendor libraries that are // specified in core/js/core.json @@ -158,7 +160,12 @@ class OC_Template extends \OC\Template\Base { } else { throw new \Exception('Cannot read core/js/core.json'); } - + + if (\OC::$server->getRequest()->isUserAgent([\OC\AppFramework\Http\Request::USER_AGENT_IE])) { + // shim for the davclient.js library + \OCP\Util::addScript('files/iedavclient'); + } + self::$initTemplateEngineFirstRun = false; } diff --git a/lib/private/template/functions.php b/lib/private/template/functions.php index 1c6eaa9a389..cea5860cec6 100644 --- a/lib/private/template/functions.php +++ b/lib/private/template/functions.php @@ -30,7 +30,7 @@ /** * Prints a sanitized string - * @param string|array $string the string which will be escaped and printed + * @param string $string the string which will be escaped and printed */ function p($string) { print(OC_Util::sanitizeHTML($string)); diff --git a/lib/private/util.php b/lib/private/util.php index e48cdd4d9fc..69f01c22be9 100644 --- a/lib/private/util.php +++ b/lib/private/util.php @@ -864,12 +864,9 @@ class OC_Util { } } } catch (\Doctrine\DBAL\DBALException $e) { - \OCP\Util::logException('core', $e); - $errors[] = array( - 'error' => $l->t('Error occurred while checking PostgreSQL version'), - 'hint' => $l->t('Please make sure you have PostgreSQL >= 9 or' - . ' check the logs for more information about the error') - ); + $logger = \OC::$server->getLogger(); + $logger->warning('Error occurred while checking PostgreSQL version, assuming >= 9'); + $logger->logException($e); } } return $errors; diff --git a/lib/public/files/node.php b/lib/public/files/node.php index 866b9b6f61f..aa1115f8c28 100644 --- a/lib/public/files/node.php +++ b/lib/public/files/node.php @@ -225,12 +225,4 @@ interface Node extends FileInfo { * @since 6.0.0 */ public function getName(); - - /** - * Get the file owner - * - * @since 9.0.0 - * @return string - */ - public function getOwner(); } diff --git a/settings/ajax/changedisplayname.php b/settings/ajax/changedisplayname.php deleted file mode 100644 index 380cbac43da..00000000000 --- a/settings/ajax/changedisplayname.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php -/** - * @author Bart Visscher <bartv@thisnet.nl> - * @author Christopher Schäpers <kondou@ts.unde.re> - * @author David Reagan <reagand@lanecc.edu> - * @author Jan-Christoph Borchardt <hey@jancborchardt.net> - * @author Lukas Reschke <lukas@owncloud.com> - * @author Robin Appelman <icewind@owncloud.com> - * - * @copyright Copyright (c) 2015, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * - */ -// Check if we are a user - -OCP\JSON::callCheck(); -OC_JSON::checkLoggedIn(); - -$l = \OC::$server->getL10N('settings'); - -$username = isset($_POST["username"]) ? $_POST["username"] : OC_User::getUser(); -$displayName = (string)$_POST["displayName"]; - -$userstatus = null; -if(OC_User::isAdminUser(OC_User::getUser())) { - $userstatus = 'admin'; -} - -$isUserAccessible = false; -$subadminUserObject = \OC::$server->getUserManager()->get(\OC_User::getUser()); -$targetUserObject = \OC::$server->getUserManager()->get($username); -if($subadminUserObject !== null && $targetUserObject !== null) { - $isUserAccessible = \OC::$server->getGroupManager()->getSubAdmin()->isUserAccessible($subadminUserObject, $targetUserObject); -} - -if($isUserAccessible) { - $userstatus = 'subadmin'; -} - -if ($username === OC_User::getUser() && OC_User::canUserChangeDisplayName($username)) { - $userstatus = 'changeOwnDisplayName'; -} - -if(is_null($userstatus)) { - OC_JSON::error( array( "data" => array( "message" => $l->t("Authentication error") ))); - exit(); -} - -// Return Success story -if( OC_User::setDisplayName( $username, $displayName )) { - OC_JSON::success(array("data" => array( "message" => $l->t('Your full name has been changed.'), "username" => $username, 'displayName' => $displayName ))); -} -else{ - OC_JSON::error(array("data" => array( "message" => $l->t("Unable to change full name"), 'displayName' => OC_User::getDisplayName($username) ))); -} diff --git a/settings/controller/userscontroller.php b/settings/controller/userscontroller.php index 82483a76245..942319901f3 100644 --- a/settings/controller/userscontroller.php +++ b/settings/controller/userscontroller.php @@ -585,4 +585,58 @@ class UsersController extends Controller { ); } + + /** + * Set the displayName of a user + * + * @NoAdminRequired + * @NoSubadminRequired + * + * @param string $username + * @param string $displayName + * @return DataResponse + */ + public function setDisplayName($username, $displayName) { + $currentUser = $this->userSession->getUser(); + + if ($username === null) { + $username = $currentUser->getUID(); + } + + $user = $this->userManager->get($username); + + if ($user === null || + !$user->canChangeDisplayName() || + ( + !$this->groupManager->isAdmin($currentUser->getUID()) && + !$this->groupManager->getSubAdmin()->isUserAccessible($currentUser, $user) && + $currentUser !== $user) + ) { + return new DataResponse([ + 'status' => 'error', + 'data' => [ + 'message' => $this->l10n->t('Authentication error'), + ], + ]); + } + + if ($user->setDisplayName($displayName)) { + return new DataResponse([ + 'status' => 'success', + 'data' => [ + 'message' => $this->l10n->t('Your full name has been changed.'), + 'username' => $username, + 'displayName' => $displayName, + ], + ]); + } else { + return new DataResponse([ + 'status' => 'error', + 'data' => [ + 'message' => $this->l10n->t('Unable to change full name'), + 'displayName' => $user->getDisplayName(), + ], + ]); + } + } } diff --git a/settings/css/settings.css b/settings/css/settings.css index 60ba805d3ca..5a1d864734b 100644 --- a/settings/css/settings.css +++ b/settings/css/settings.css @@ -412,13 +412,13 @@ table.grid td.date{ .cronlog { margin-left: 10px; } -.cronstatus { +.status { display: inline-block; height: 16px; width: 16px; vertical-align: text-bottom; } -.cronstatus.success { +.status.success { border-radius: 50%; } diff --git a/settings/js/personal.js b/settings/js/personal.js index 3439eba686f..c9280d31353 100644 --- a/settings/js/personal.js +++ b/settings/js/personal.js @@ -70,7 +70,7 @@ function changeDisplayName () { // Serialize the data var post = $("#displaynameform").serialize(); // Ajax foo - $.post('ajax/changedisplayname.php', post, function (data) { + $.post(OC.generateUrl('/settings/users/{id}/displayName', {id: OC.currentUser}), post, function (data) { if (data.status === "success") { $('#oldDisplayName').val($('#displayName').val()); // update displayName on the top right expand button diff --git a/settings/js/users/users.js b/settings/js/users/users.js index 8ce9cb6ac7c..c20a21b060a 100644 --- a/settings/js/users/users.js +++ b/settings/js/users/users.js @@ -687,7 +687,7 @@ $(document).ready(function () { $div.imageplaceholder(uid, displayName); } $.post( - OC.filePath('settings', 'ajax', 'changedisplayname.php'), + OC.generateUrl('/settings/users/{id}/displayName', {id: uid}), {username: uid, displayName: $(this).val()}, function (result) { if (result && result.status==='success' && $div.length){ diff --git a/settings/l10n/cs_CZ.js b/settings/l10n/cs_CZ.js index e1097fc485f..3e5d3867c65 100644 --- a/settings/l10n/cs_CZ.js +++ b/settings/l10n/cs_CZ.js @@ -192,6 +192,7 @@ OC.L10N.register( "More" : "Více", "Less" : "Méně", "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Soubor logu je větší než 100 MB. Jeho stažení zabere nějaký čas!", + "What to log" : "Co se má logovat", "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "Je použita databáze SQLite. Pro větší instalace doporučujeme přejít na robustnější databázi.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Obzvláště při používání klientské aplikace pro synchronizaci s desktopem není SQLite doporučeno.", "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" href=\"%s\">documentation ↗</a>." : "Pro migraci na jinou databázi lze použít aplikaci pro příkazový řádek: 'occ db:convert-type', nebo nahlédněte do <a target=\"_blank\" href=\"%s\">dokumentace ↗</a>.", diff --git a/settings/l10n/cs_CZ.json b/settings/l10n/cs_CZ.json index 9e3b9a7b72c..42771f82ba2 100644 --- a/settings/l10n/cs_CZ.json +++ b/settings/l10n/cs_CZ.json @@ -190,6 +190,7 @@ "More" : "Více", "Less" : "Méně", "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Soubor logu je větší než 100 MB. Jeho stažení zabere nějaký čas!", + "What to log" : "Co se má logovat", "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "Je použita databáze SQLite. Pro větší instalace doporučujeme přejít na robustnější databázi.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Obzvláště při používání klientské aplikace pro synchronizaci s desktopem není SQLite doporučeno.", "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" href=\"%s\">documentation ↗</a>." : "Pro migraci na jinou databázi lze použít aplikaci pro příkazový řádek: 'occ db:convert-type', nebo nahlédněte do <a target=\"_blank\" href=\"%s\">dokumentace ↗</a>.", diff --git a/settings/l10n/de.js b/settings/l10n/de.js index a0c762076bb..2034a6650e7 100644 --- a/settings/l10n/de.js +++ b/settings/l10n/de.js @@ -12,12 +12,10 @@ OC.L10N.register( "Log" : "Log", "Tips & tricks" : "Tipps & Tricks", "Updates" : "Updates", - "Authentication error" : "Authentifizierungsfehler", - "Your full name has been changed." : "Dein vollständiger Name ist geändert worden.", - "Unable to change full name" : "Der vollständige Name konnte nicht geändert werden", "Couldn't remove app." : "Die App konnte nicht entfernt werden.", "Language changed" : "Sprache geändert", "Invalid request" : "Fehlerhafte Anfrage", + "Authentication error" : "Authentifizierungsfehler", "Admins can't remove themself from the admin group" : "Administratoren können sich nicht selbst aus der Admin-Gruppe löschen.", "Unable to add user to group %s" : "Der Benutzer konnte nicht zur Gruppe %s hinzugefügt werden", "Unable to remove user from group %s" : "Der Benutzer konnte nicht aus der Gruppe %s entfernt werden", @@ -53,6 +51,8 @@ OC.L10N.register( "Invalid user" : "Ungültiger Benutzer", "Unable to change mail address" : "E-Mail-Adresse konnte nicht geändert werden", "Email saved" : "E-Mail-Adresse gespeichert", + "Your full name has been changed." : "Dein vollständiger Name ist geändert worden.", + "Unable to change full name" : "Der vollständige Name konnte nicht geändert werden", "Are you really sure you want add \"{domain}\" as trusted domain?" : "Bist Du wirklich sicher, dass Du „{domain}“ als vertrauenswürdige Domain hinzufügen möchtest?", "Add trusted domain" : "Vertrauenswürdige Domain hinzufügen", "Migration in progress. Please wait until the migration is finished" : "Migration in Arbeit. Bitte warte, bis die Migration beendet ist", @@ -80,6 +80,7 @@ OC.L10N.register( "Uninstall" : "Deinstallieren", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Die App wurde aktiviert, muss aber aktualisiert werden. Du wirst in 5 Sekunden zu Aktualisierungsseite weitergeleitet", "App update" : "App aktualisiert", + "No apps found for \"{query}\"" : "Es wurden keine Apps für \"{query}\"", "An error occurred: {message}" : "Ein Fehler ist aufgetreten: {message}", "Select a profile picture" : "Wähle ein Profilbild", "Very weak password" : "Sehr schwaches Passwort", @@ -185,6 +186,7 @@ OC.L10N.register( "More" : "Mehr", "Less" : "Weniger", "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Die Logdatei ist größer als 100 MB. Es kann etwas Zeit beanspruchen, sie herunterzuladen!", + "What to log" : "Was für ein Protokoll", "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "SQLite wird als Datenbank verwendet. Bei größeren Installationen wird empfohlen, auf ein anderes Datenbank-Backend zu wechseln.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Insbesondere bei der Nutzung des Desktop Clients zur Dateisynchronisierung wird vom Einsatz von SQLite abgeraten.", "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" href=\"%s\">documentation ↗</a>." : "Um zu einer anderen Datenbank zu migrieren, benutze bitte die Kommandozeile: 'occ db:convert-type', oder in die <a target=\"_blank\" href=\"%s\">Dokumentation ↗</a> schauen.", diff --git a/settings/l10n/de.json b/settings/l10n/de.json index be68541cab9..31f677bd66b 100644 --- a/settings/l10n/de.json +++ b/settings/l10n/de.json @@ -10,12 +10,10 @@ "Log" : "Log", "Tips & tricks" : "Tipps & Tricks", "Updates" : "Updates", - "Authentication error" : "Authentifizierungsfehler", - "Your full name has been changed." : "Dein vollständiger Name ist geändert worden.", - "Unable to change full name" : "Der vollständige Name konnte nicht geändert werden", "Couldn't remove app." : "Die App konnte nicht entfernt werden.", "Language changed" : "Sprache geändert", "Invalid request" : "Fehlerhafte Anfrage", + "Authentication error" : "Authentifizierungsfehler", "Admins can't remove themself from the admin group" : "Administratoren können sich nicht selbst aus der Admin-Gruppe löschen.", "Unable to add user to group %s" : "Der Benutzer konnte nicht zur Gruppe %s hinzugefügt werden", "Unable to remove user from group %s" : "Der Benutzer konnte nicht aus der Gruppe %s entfernt werden", @@ -51,6 +49,8 @@ "Invalid user" : "Ungültiger Benutzer", "Unable to change mail address" : "E-Mail-Adresse konnte nicht geändert werden", "Email saved" : "E-Mail-Adresse gespeichert", + "Your full name has been changed." : "Dein vollständiger Name ist geändert worden.", + "Unable to change full name" : "Der vollständige Name konnte nicht geändert werden", "Are you really sure you want add \"{domain}\" as trusted domain?" : "Bist Du wirklich sicher, dass Du „{domain}“ als vertrauenswürdige Domain hinzufügen möchtest?", "Add trusted domain" : "Vertrauenswürdige Domain hinzufügen", "Migration in progress. Please wait until the migration is finished" : "Migration in Arbeit. Bitte warte, bis die Migration beendet ist", @@ -78,6 +78,7 @@ "Uninstall" : "Deinstallieren", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Die App wurde aktiviert, muss aber aktualisiert werden. Du wirst in 5 Sekunden zu Aktualisierungsseite weitergeleitet", "App update" : "App aktualisiert", + "No apps found for \"{query}\"" : "Es wurden keine Apps für \"{query}\"", "An error occurred: {message}" : "Ein Fehler ist aufgetreten: {message}", "Select a profile picture" : "Wähle ein Profilbild", "Very weak password" : "Sehr schwaches Passwort", @@ -183,6 +184,7 @@ "More" : "Mehr", "Less" : "Weniger", "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Die Logdatei ist größer als 100 MB. Es kann etwas Zeit beanspruchen, sie herunterzuladen!", + "What to log" : "Was für ein Protokoll", "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "SQLite wird als Datenbank verwendet. Bei größeren Installationen wird empfohlen, auf ein anderes Datenbank-Backend zu wechseln.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Insbesondere bei der Nutzung des Desktop Clients zur Dateisynchronisierung wird vom Einsatz von SQLite abgeraten.", "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" href=\"%s\">documentation ↗</a>." : "Um zu einer anderen Datenbank zu migrieren, benutze bitte die Kommandozeile: 'occ db:convert-type', oder in die <a target=\"_blank\" href=\"%s\">Dokumentation ↗</a> schauen.", diff --git a/settings/l10n/es_AR.js b/settings/l10n/es_AR.js index 14b4c6457da..ed34e871e83 100644 --- a/settings/l10n/es_AR.js +++ b/settings/l10n/es_AR.js @@ -1,16 +1,15 @@ OC.L10N.register( "settings", { + "APCu" : "APCu", "Sharing" : "Compartiendo", "External Storage" : "Almacenamiento externo", "Cron" : "Cron", "Log" : "Log", "Updates" : "Actualizaciones", - "Authentication error" : "Error al autenticar", - "Your full name has been changed." : "Su nombre completo ha sido cambiado.", - "Unable to change full name" : "Imposible cambiar el nombre completo", "Language changed" : "Idioma cambiado", "Invalid request" : "Pedido inválido", + "Authentication error" : "Error al autenticar", "Admins can't remove themself from the admin group" : "Los administradores no se pueden quitar a si mismos del grupo administrador. ", "Unable to add user to group %s" : "No fue posible agregar el usuario al grupo %s", "Unable to remove user from group %s" : "No es posible borrar al usuario del grupo %s", @@ -26,6 +25,8 @@ OC.L10N.register( "Email sent" : "e-mail mandado", "You need to set your user email before being able to send test emails." : "Necesita especificar el usuario de correo electrónico antes de poder enviar correos electrónicos de prueba.", "Email saved" : "e-mail guardado", + "Your full name has been changed." : "Su nombre completo ha sido cambiado.", + "Unable to change full name" : "Imposible cambiar el nombre completo", "Sending..." : "Enviando...", "All" : "Todos", "Please wait...." : "Por favor, esperá....", diff --git a/settings/l10n/es_AR.json b/settings/l10n/es_AR.json index c03a8ef96db..f337de3b801 100644 --- a/settings/l10n/es_AR.json +++ b/settings/l10n/es_AR.json @@ -1,14 +1,13 @@ { "translations": { + "APCu" : "APCu", "Sharing" : "Compartiendo", "External Storage" : "Almacenamiento externo", "Cron" : "Cron", "Log" : "Log", "Updates" : "Actualizaciones", - "Authentication error" : "Error al autenticar", - "Your full name has been changed." : "Su nombre completo ha sido cambiado.", - "Unable to change full name" : "Imposible cambiar el nombre completo", "Language changed" : "Idioma cambiado", "Invalid request" : "Pedido inválido", + "Authentication error" : "Error al autenticar", "Admins can't remove themself from the admin group" : "Los administradores no se pueden quitar a si mismos del grupo administrador. ", "Unable to add user to group %s" : "No fue posible agregar el usuario al grupo %s", "Unable to remove user from group %s" : "No es posible borrar al usuario del grupo %s", @@ -24,6 +23,8 @@ "Email sent" : "e-mail mandado", "You need to set your user email before being able to send test emails." : "Necesita especificar el usuario de correo electrónico antes de poder enviar correos electrónicos de prueba.", "Email saved" : "e-mail guardado", + "Your full name has been changed." : "Su nombre completo ha sido cambiado.", + "Unable to change full name" : "Imposible cambiar el nombre completo", "Sending..." : "Enviando...", "All" : "Todos", "Please wait...." : "Por favor, esperá....", diff --git a/settings/l10n/lt_LT.js b/settings/l10n/lt_LT.js index b54d9cad1fc..c1ec5be2214 100644 --- a/settings/l10n/lt_LT.js +++ b/settings/l10n/lt_LT.js @@ -1,12 +1,21 @@ OC.L10N.register( "settings", { + "APCu" : "APCu", + "Redis" : "Redis", + "Security & setup warnings" : "Saugos ir diegimo perspėjimai", "Sharing" : "Dalijimasis", + "Server-side encryption" : "Šifravimas serveryje", "External Storage" : "Išorinės saugyklos", "Cron" : "Cron", + "Email server" : "Pašto serveris", "Log" : "Žurnalas", + "Tips & tricks" : "Patarimai ir gudrybės", "Updates" : "Atnaujinimai", "Authentication error" : "Autentikacijos klaida", + "Your full name has been changed." : "Pilnas vardas pakeistas.", + "Unable to change full name" : "Nepavyko pakeisti pilno vardo", + "Couldn't remove app." : "Nepavyko pašalinti programėlės.", "Language changed" : "Kalba pakeista", "Invalid request" : "Klaidinga užklausa", "Admins can't remove themself from the admin group" : "Administratoriai negali pašalinti savęs iš administratorių grupės", @@ -17,11 +26,16 @@ OC.L10N.register( "No user supplied" : "Nepateiktas naudotojas", "Please provide an admin recovery password, otherwise all user data will be lost" : "Prašome įvesti administratoriaus atkūrimo slaptažodį, kitaip visi naudotojo suomenys bus prarasti", "Wrong admin recovery password. Please check the password and try again." : "Netinkamas administratoriau atkūrimo slaptažodis. Prašome pasitikrinti ir bandyti vėl.", + "Backend doesn't support password change, but the user's encryption key was successfully updated." : "Vartotojo slaptažodžio pakeitimas negalimas, bet šifravimo raktas atnaujintas sėkmingai.", "Unable to change password" : "Nepavyksta pakeisti slaptažodžio", "Enabled" : "Įjungta", + "Not enabled" : "Neįjungta", "Federated Cloud Sharing" : "Viešas dalijimasis padebesiu", "Saved" : "Išsaugoti", "Email sent" : "Laiškas išsiųstas", + "Invalid mail address" : "Neteisingas pašto adresas", + "Your %s account was created" : "Tavo paskyra %s sukurta", + "Unable to delete user." : "Nepavyko ištrinti vartotojo.", "Email saved" : "El. paštas išsaugotas", "All" : "Viskas", "Please wait...." : "Prašome palaukti...", diff --git a/settings/l10n/lt_LT.json b/settings/l10n/lt_LT.json index 6142e8a7158..cf389512098 100644 --- a/settings/l10n/lt_LT.json +++ b/settings/l10n/lt_LT.json @@ -1,10 +1,19 @@ { "translations": { + "APCu" : "APCu", + "Redis" : "Redis", + "Security & setup warnings" : "Saugos ir diegimo perspėjimai", "Sharing" : "Dalijimasis", + "Server-side encryption" : "Šifravimas serveryje", "External Storage" : "Išorinės saugyklos", "Cron" : "Cron", + "Email server" : "Pašto serveris", "Log" : "Žurnalas", + "Tips & tricks" : "Patarimai ir gudrybės", "Updates" : "Atnaujinimai", "Authentication error" : "Autentikacijos klaida", + "Your full name has been changed." : "Pilnas vardas pakeistas.", + "Unable to change full name" : "Nepavyko pakeisti pilno vardo", + "Couldn't remove app." : "Nepavyko pašalinti programėlės.", "Language changed" : "Kalba pakeista", "Invalid request" : "Klaidinga užklausa", "Admins can't remove themself from the admin group" : "Administratoriai negali pašalinti savęs iš administratorių grupės", @@ -15,11 +24,16 @@ "No user supplied" : "Nepateiktas naudotojas", "Please provide an admin recovery password, otherwise all user data will be lost" : "Prašome įvesti administratoriaus atkūrimo slaptažodį, kitaip visi naudotojo suomenys bus prarasti", "Wrong admin recovery password. Please check the password and try again." : "Netinkamas administratoriau atkūrimo slaptažodis. Prašome pasitikrinti ir bandyti vėl.", + "Backend doesn't support password change, but the user's encryption key was successfully updated." : "Vartotojo slaptažodžio pakeitimas negalimas, bet šifravimo raktas atnaujintas sėkmingai.", "Unable to change password" : "Nepavyksta pakeisti slaptažodžio", "Enabled" : "Įjungta", + "Not enabled" : "Neįjungta", "Federated Cloud Sharing" : "Viešas dalijimasis padebesiu", "Saved" : "Išsaugoti", "Email sent" : "Laiškas išsiųstas", + "Invalid mail address" : "Neteisingas pašto adresas", + "Your %s account was created" : "Tavo paskyra %s sukurta", + "Unable to delete user." : "Nepavyko ištrinti vartotojo.", "Email saved" : "El. paštas išsaugotas", "All" : "Viskas", "Please wait...." : "Prašome palaukti...", diff --git a/settings/l10n/tr.js b/settings/l10n/tr.js index 4c60ee3d072..eb003a1f2f7 100644 --- a/settings/l10n/tr.js +++ b/settings/l10n/tr.js @@ -78,6 +78,9 @@ OC.L10N.register( "Uninstalling ...." : "Kaldırılıyor ....", "Error while uninstalling app" : "Uygulama kaldırılırken hata", "Uninstall" : "Kaldır", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Uygulama etkinleştirildi fakat güncellenmesi gerekiyor. 5 saniye içinde güncelleme sayfasına yönlendirileceksiniz.", + "App update" : "Uygulama güncellemesi", + "No apps found for \"{query}\"" : "\"{query}\" için uygulama bulunamadı", "An error occurred: {message}" : "Bir hata oluştu: {message}", "Select a profile picture" : "Bir profil fotoğrafı seçin", "Very weak password" : "Çok güçsüz parola", @@ -159,6 +162,10 @@ OC.L10N.register( "Use system's cron service to call the cron.php file every 15 minutes." : "Cron.php dosyasını her 15 dakikada bir çağırmak için sistem cron hizmetini kullan.", "Enable server-side encryption" : "Sunucu taraflı şifrelemeyi aç", "Please read carefully before activating server-side encryption: " : "Lütfen sunucu tarafında şifrelemeyi etkinleştirmeden önce dikkatlice okuyun: ", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Şifreleme etkinleştirildiğinde, sunucuya yüklenen tüm dosyalar şifrelenmiş olarak kalacaktır. Şifrelemeyi devre dışı bırakmak sadece ileriki zamanlarda aktif şifreleme modülü desteklediğinde yapılabilir, ve ön koşullar (örn: düzenleme anahtarı oluşturulması) yerine getirildiğinde.", + "Encryption alone does not guarantee security of the system. Please see ownCloud documentation for more information about how the encryption app works, and the supported use cases." : "Şifreleme tek başına sistem güvenliğini garanti etmez. Lütfen şifreleme uygulamasının çalışma bilgisi ve desteklenen kullanım durumları için ownCloud belgelerine bakın.", + "Be aware that encryption always increases the file size." : "Şifrelemenin dosya boyutunu büyüteceğini unutmayın.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Verilerinizi düzenli yedekleyin ve şifreleme anahtarlarınızın verilerinizle birlikte yedeklendiğinden emin olun. ", "This is the final warning: Do you really want to enable encryption?" : "Bu son uyarıdır: Şifrelemeyi etkinleştirmek istiyor musunuz?", "Enable encryption" : "Şifrelemeyi aç", "No encryption module loaded, please enable an encryption module in the app menu." : "Hiç şifrelenme modülü yüklenmemiş, lütfen uygulama menüsünden bir şifreleme modülü etkinleştirin.", @@ -185,6 +192,7 @@ OC.L10N.register( "More" : "Daha fazla", "Less" : "Daha az", "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Günlük dosyası 100 MB'dan daha büyük. İndirmek zaman alabilir!", + "What to log" : "Neler günlüklenmeli", "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "Veritabanı olarak SQLite kullanılıyor. Daha büyük kurulumlar için farklı bir veritabanı arka ucuna geçmenizi öneriyoruz.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Özellikle dosya eşitleme için masaüstü istemcisi kullanılırken SQLite kullanımı önerilmez.", "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" href=\"%s\">documentation ↗</a>." : "Başka bir veritabanına geçmek için komut satırı aracını kullanın: 'occ db:convert-type' veya <a target=\"_blank\" href=\"%s\">belgelendirmeye ↗</a> bakın.", diff --git a/settings/l10n/tr.json b/settings/l10n/tr.json index c7de4a505fb..c96a4f566c4 100644 --- a/settings/l10n/tr.json +++ b/settings/l10n/tr.json @@ -76,6 +76,9 @@ "Uninstalling ...." : "Kaldırılıyor ....", "Error while uninstalling app" : "Uygulama kaldırılırken hata", "Uninstall" : "Kaldır", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Uygulama etkinleştirildi fakat güncellenmesi gerekiyor. 5 saniye içinde güncelleme sayfasına yönlendirileceksiniz.", + "App update" : "Uygulama güncellemesi", + "No apps found for \"{query}\"" : "\"{query}\" için uygulama bulunamadı", "An error occurred: {message}" : "Bir hata oluştu: {message}", "Select a profile picture" : "Bir profil fotoğrafı seçin", "Very weak password" : "Çok güçsüz parola", @@ -157,6 +160,10 @@ "Use system's cron service to call the cron.php file every 15 minutes." : "Cron.php dosyasını her 15 dakikada bir çağırmak için sistem cron hizmetini kullan.", "Enable server-side encryption" : "Sunucu taraflı şifrelemeyi aç", "Please read carefully before activating server-side encryption: " : "Lütfen sunucu tarafında şifrelemeyi etkinleştirmeden önce dikkatlice okuyun: ", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Şifreleme etkinleştirildiğinde, sunucuya yüklenen tüm dosyalar şifrelenmiş olarak kalacaktır. Şifrelemeyi devre dışı bırakmak sadece ileriki zamanlarda aktif şifreleme modülü desteklediğinde yapılabilir, ve ön koşullar (örn: düzenleme anahtarı oluşturulması) yerine getirildiğinde.", + "Encryption alone does not guarantee security of the system. Please see ownCloud documentation for more information about how the encryption app works, and the supported use cases." : "Şifreleme tek başına sistem güvenliğini garanti etmez. Lütfen şifreleme uygulamasının çalışma bilgisi ve desteklenen kullanım durumları için ownCloud belgelerine bakın.", + "Be aware that encryption always increases the file size." : "Şifrelemenin dosya boyutunu büyüteceğini unutmayın.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Verilerinizi düzenli yedekleyin ve şifreleme anahtarlarınızın verilerinizle birlikte yedeklendiğinden emin olun. ", "This is the final warning: Do you really want to enable encryption?" : "Bu son uyarıdır: Şifrelemeyi etkinleştirmek istiyor musunuz?", "Enable encryption" : "Şifrelemeyi aç", "No encryption module loaded, please enable an encryption module in the app menu." : "Hiç şifrelenme modülü yüklenmemiş, lütfen uygulama menüsünden bir şifreleme modülü etkinleştirin.", @@ -183,6 +190,7 @@ "More" : "Daha fazla", "Less" : "Daha az", "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Günlük dosyası 100 MB'dan daha büyük. İndirmek zaman alabilir!", + "What to log" : "Neler günlüklenmeli", "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "Veritabanı olarak SQLite kullanılıyor. Daha büyük kurulumlar için farklı bir veritabanı arka ucuna geçmenizi öneriyoruz.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Özellikle dosya eşitleme için masaüstü istemcisi kullanılırken SQLite kullanımı önerilmez.", "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" href=\"%s\">documentation ↗</a>." : "Başka bir veritabanına geçmek için komut satırı aracını kullanın: 'occ db:convert-type' veya <a target=\"_blank\" href=\"%s\">belgelendirmeye ↗</a> bakın.", diff --git a/settings/routes.php b/settings/routes.php index 6ba38388d3a..95ad234c699 100644 --- a/settings/routes.php +++ b/settings/routes.php @@ -46,6 +46,7 @@ $application->registerRoutes($this, [ ['name' => 'AppSettings#listApps', 'url' => '/settings/apps/list', 'verb' => 'GET'], ['name' => 'AppSettings#changeExperimentalConfigState', 'url' => '/settings/apps/experimental', 'verb' => 'POST'], ['name' => 'SecuritySettings#trustedDomains', 'url' => '/settings/admin/security/trustedDomains', 'verb' => 'POST'], + ['name' => 'Users#setDisplayName', 'url' => '/settings/users/{username}/displayName', 'verb' => 'POST'], ['name' => 'Users#setMailAddress', 'url' => '/settings/users/{id}/mailAddress', 'verb' => 'PUT'], ['name' => 'Users#stats', 'url' => '/settings/users/stats', 'verb' => 'GET'], ['name' => 'LogSettings#setLogLevel', 'url' => '/settings/admin/log/level', 'verb' => 'POST'], @@ -79,8 +80,6 @@ $this->create('settings_ajax_togglesubadmins', '/settings/ajax/togglesubadmins.p $this->create('settings_users_changepassword', '/settings/users/changepassword') ->post() ->action('OC\Settings\ChangePassword\Controller', 'changeUserPassword'); -$this->create('settings_ajax_changedisplayname', '/settings/ajax/changedisplayname.php') - ->actionInclude('settings/ajax/changedisplayname.php'); $this->create('settings_ajax_changegorupname', '/settings/ajax/changegroupname.php') ->actionInclude('settings/ajax/changegroupname.php'); // personal diff --git a/settings/templates/admin.php b/settings/templates/admin.php index 24af4964248..0721c0e0afb 100644 --- a/settings/templates/admin.php +++ b/settings/templates/admin.php @@ -290,18 +290,18 @@ if ($_['cronErrors']) { $relative_time = relative_modified_date($_['lastcron']); $absolute_time = OC_Util::formatDate($_['lastcron']); if (time() - $_['lastcron'] <= 3600): ?> - <span class="cronstatus success"></span> + <span class="status success"></span> <span class="crondate" original-title="<?php p($absolute_time);?>"> <?php p($l->t("Last cron job execution: %s.", [$relative_time]));?> </span> <?php else: ?> - <span class="cronstatus error"></span> + <span class="status error"></span> <span class="crondate" original-title="<?php p($absolute_time);?>"> <?php p($l->t("Last cron job execution: %s. Something seems wrong.", [$relative_time]));?> </span> <?php endif; else: ?> - <span class="cronstatus error"></span> + <span class="status error"></span> <?php p($l->t("Cron was not executed yet!")); endif; ?> </p> diff --git a/tests/enable_all.php b/tests/enable_all.php index 464155b1f39..6f2d1fa8717 100644 --- a/tests/enable_all.php +++ b/tests/enable_all.php @@ -22,4 +22,4 @@ enableApp('encryption'); enableApp('user_ldap'); enableApp('files_versions'); enableApp('provisioning_api'); - +enableApp('federation'); diff --git a/tests/karma.config.js b/tests/karma.config.js index 64a94ef230b..dc621ae0f74 100644 --- a/tests/karma.config.js +++ b/tests/karma.config.js @@ -164,15 +164,15 @@ module.exports = function(config) { // need to test the core app as well ? if (testCore) { // core tests - files.push(corePath + 'tests/specs/*.js'); + files.push(corePath + 'tests/specs/**/*.js'); } function addApp(app) { // if only a string was specified, expand to structure if (typeof(app) === 'string') { app = { - srcFiles: 'apps/' + app + '/js/*.js', - testFiles: 'apps/' + app + '/tests/js/*.js' + srcFiles: 'apps/' + app + '/js/**/*.js', + testFiles: 'apps/' + app + '/tests/js/**/*.js' }; } diff --git a/tests/lib/appframework/http/RequestTest.php b/tests/lib/appframework/http/RequestTest.php index f628a30f1da..ab5fe154441 100644 --- a/tests/lib/appframework/http/RequestTest.php +++ b/tests/lib/appframework/http/RequestTest.php @@ -693,20 +693,37 @@ class RequestTest extends \Test\TestCase { */ public function testUserAgent($testAgent, $userAgent, $matches) { $request = new Request( - [ - 'server' => [ - 'HTTP_USER_AGENT' => $testAgent, - ] - ], - $this->secureRandom, - $this->config, - $this->stream + [ + 'server' => [ + 'HTTP_USER_AGENT' => $testAgent, + ] + ], + $this->secureRandom, + $this->config, + $this->stream ); $this->assertSame($matches, $request->isUserAgent($userAgent)); } /** + * @dataProvider userAgentProvider + * @param string $testAgent + * @param array $userAgent + * @param bool $matches + */ + public function testUndefinedUserAgent($testAgent, $userAgent, $matches) { + $request = new Request( + [], + $this->secureRandom, + $this->config, + $this->stream + ); + + $this->assertFalse($request->isUserAgent($userAgent)); + } + + /** * @return array */ function userAgentProvider() { diff --git a/tests/lib/notification/notificationtest.php b/tests/lib/notification/notificationtest.php index 662dc5a6176..91fa1de8b42 100644 --- a/tests/lib/notification/notificationtest.php +++ b/tests/lib/notification/notificationtest.php @@ -62,14 +62,6 @@ class NotificationTest extends TestCase { return $dataSets; } - protected function dataValidInt() { - return [ - [0], - [1], - [time()], - ]; - } - protected function dataInvalidInt() { return [ [true], @@ -139,52 +131,68 @@ class NotificationTest extends TestCase { $this->notification->setUser($user); } - public function dataSetTimestamp() { - return $this->dataValidInt(); + public function dataSetDateTime() { + $past = new \DateTime(); + $past->sub(new \DateInterval('P1Y')); + $current = new \DateTime(); + $future = new \DateTime(); + $future->add(new \DateInterval('P1Y')); + + return [ + [$past], + [$current], + [$future], + ]; } /** - * @dataProvider dataSetTimestamp - * @param int $timestamp + * @dataProvider dataSetDateTime + * @param \DateTime $dateTime */ - public function testSetTimestamp($timestamp) { - $this->assertSame(0, $this->notification->getTimestamp()); - $this->assertSame($this->notification, $this->notification->setTimestamp($timestamp)); - $this->assertSame($timestamp, $this->notification->getTimestamp()); + public function testSetDateTime(\DateTime $dateTime) { + $this->assertSame(0, $this->notification->getDateTime()->getTimestamp()); + $this->assertSame($this->notification, $this->notification->setDateTime($dateTime)); + $this->assertSame($dateTime, $this->notification->getDateTime()); } - public function dataSetTimestampInvalid() { - return $this->dataInvalidInt(); + public function dataSetDateTimeZero() { + $nineTeenSeventy = new \DateTime(); + $nineTeenSeventy->setTimestamp(0); + return [ + [$nineTeenSeventy], + ]; } /** - * @dataProvider dataSetTimestampInvalid - * @param mixed $timestamp + * @dataProvider dataSetDateTimeZero + * @param \DateTime $dateTime * * @expectedException \InvalidArgumentException + * @expectedMessage 'The given date time is invalid' */ - public function testSetTimestampInvalid($timestamp) { - $this->notification->setTimestamp($timestamp); + public function testSetDateTimeZero($dateTime) { + $this->notification->setDateTime($dateTime); } public function dataSetObject() { return [ - ['a', 1], - [str_repeat('a', 64), time()], + ['a', '21', '21'], + [str_repeat('a', 64), 42, '42'], ]; } /** * @dataProvider dataSetObject * @param string $type - * @param int $id + * @param int|string $id + * @param string $exptectedId */ - public function testSetObject($type, $id) { + public function testSetObject($type, $id, $exptectedId) { $this->assertSame('', $this->notification->getObjectType()); - $this->assertSame(0, $this->notification->getObjectId()); + $this->assertSame('', $this->notification->getObjectId()); $this->assertSame($this->notification, $this->notification->setObject($type, $id)); $this->assertSame($type, $this->notification->getObjectType()); - $this->assertSame($id, $this->notification->getObjectId()); + $this->assertSame($exptectedId, $this->notification->getObjectId()); } public function dataSetObjectTypeInvalid() { @@ -203,7 +211,14 @@ class NotificationTest extends TestCase { } public function dataSetObjectIdInvalid() { - return $this->dataInvalidInt(); + return [ + [true], + [false], + [''], + [str_repeat('a', 64 + 1)], + [[]], + [[str_repeat('a', 64 + 1)]], + ]; } /** @@ -553,12 +568,12 @@ class NotificationTest extends TestCase { public function dataIsValidCommon() { return [ - ['', '', 0, '', 0, false], - ['app', '', 0, '', 0, false], - ['app', 'user', 0, '', 0, false], - ['app', 'user', time(), '', 0, false], - ['app', 'user', time(), 'type', 0, false], - ['app', 'user', time(), 'type', 42, true], + ['', '', 0, '', '', false], + ['app', '', 0, '', '', false], + ['app', 'user', 0, '', '', false], + ['app', 'user', time(), '', '', false], + ['app', 'user', time(), 'type', '', false], + ['app', 'user', time(), 'type', '42', true], ]; } @@ -569,7 +584,7 @@ class NotificationTest extends TestCase { * @param string $user * @param int $timestamp * @param string $objectType - * @param int $objectId + * @param string $objectId * @param bool $expected */ public function testIsValidCommon($app, $user, $timestamp, $objectType, $objectId, $expected) { @@ -578,7 +593,7 @@ class NotificationTest extends TestCase { ->setMethods([ 'getApp', 'getUser', - 'getTimestamp', + 'getDateTime', 'getObjectType', 'getObjectId', ]) @@ -592,9 +607,12 @@ class NotificationTest extends TestCase { ->method('getUser') ->willReturn($user); + $dateTime = new \DateTime(); + $dateTime->setTimestamp($timestamp); + $notification->expects($this->any()) - ->method('getTimestamp') - ->willReturn($timestamp); + ->method('getDateTime') + ->willReturn($dateTime); $notification->expects($this->any()) ->method('getObjectType') diff --git a/tests/lib/repair/cleantags.php b/tests/lib/repair/cleantags.php index a511daa03d6..896dd333cc2 100644 --- a/tests/lib/repair/cleantags.php +++ b/tests/lib/repair/cleantags.php @@ -165,20 +165,6 @@ class CleanTags extends \Test\TestCase { * @return int */ protected function getLastInsertID($tableName, $idName) { - $id = $this->connection->lastInsertId(); - if ($id) { - return $id; - } - - // FIXME !!!! ORACLE WORKAROUND DO NOT COPY - // FIXME INSTEAD HELP FIXING DOCTRINE - // FIXME https://github.com/owncloud/core/issues/13303 - // FIXME ALSO FIX https://github.com/owncloud/core/commit/2dd85ec984c12d3be401518f22c90d2327bec07a - $qb = $this->connection->getQueryBuilder(); - $result = $qb->select($qb->createFunction('MAX(`' . $idName . '`)')) - ->from($tableName) - ->execute(); - - return (int) $result->fetchColumn(); + return $this->connection->lastInsertId("*PREFIX*$tableName"); } } diff --git a/tests/lib/repair/oldgroupmembershipsharestest.php b/tests/lib/repair/oldgroupmembershipsharestest.php index 74f68bd7899..272e1ef09c4 100644 --- a/tests/lib/repair/oldgroupmembershipsharestest.php +++ b/tests/lib/repair/oldgroupmembershipsharestest.php @@ -72,7 +72,7 @@ class OldGroupMembershipSharesTest extends \Test\TestCase { ->orderBy('id', 'ASC') ->execute(); $rows = $result->fetchAll(); - $this->assertSame([['id' => $parent], ['id' => $group2], ['id' => $user1], ['id' => $member], ['id' => $notAMember]], $rows); + $this->assertEquals([['id' => $parent], ['id' => $group2], ['id' => $user1], ['id' => $member], ['id' => $notAMember]], $rows); $result->closeCursor(); $repair->run(); @@ -83,7 +83,7 @@ class OldGroupMembershipSharesTest extends \Test\TestCase { ->orderBy('id', 'ASC') ->execute(); $rows = $result->fetchAll(); - $this->assertSame([['id' => $parent], ['id' => $group2], ['id' => $user1], ['id' => $member]], $rows); + $this->assertEquals([['id' => $parent], ['id' => $group2], ['id' => $user1], ['id' => $member]], $rows); $result->closeCursor(); } @@ -118,21 +118,6 @@ class OldGroupMembershipSharesTest extends \Test\TestCase { ->values($shareValues) ->execute(); - return $this->getLastShareId(); - } - - /** - * @return int - */ - protected function getLastShareId() { - // select because lastInsertId does not work with OCI - $query = $this->connection->getQueryBuilder(); - $result = $query->select('id') - ->from('share') - ->orderBy('id', 'DESC') - ->execute(); - $row = $result->fetch(); - $result->closeCursor(); - return $row['id']; + return $this->connection->lastInsertId('*PREFIX*share'); } } diff --git a/tests/lib/repair/repairinvalidsharestest.php b/tests/lib/repair/repairinvalidsharestest.php index 005a2db2344..e8dcaa4da97 100644 --- a/tests/lib/repair/repairinvalidsharestest.php +++ b/tests/lib/repair/repairinvalidsharestest.php @@ -162,7 +162,7 @@ class RepairInvalidSharesTest extends TestCase { ->orderBy('id', 'ASC') ->execute(); $rows = $result->fetchAll(); - $this->assertSame([['id' => $parent], ['id' => $validChild], ['id' => $invalidChild]], $rows); + $this->assertEquals([['id' => $parent], ['id' => $validChild], ['id' => $invalidChild]], $rows); $result->closeCursor(); $this->repair->run(); @@ -173,7 +173,7 @@ class RepairInvalidSharesTest extends TestCase { ->orderBy('id', 'ASC') ->execute(); $rows = $result->fetchAll(); - $this->assertSame([['id' => $parent], ['id' => $validChild]], $rows); + $this->assertEquals([['id' => $parent], ['id' => $validChild]], $rows); $result->closeCursor(); } @@ -181,15 +181,7 @@ class RepairInvalidSharesTest extends TestCase { * @return int */ protected function getLastShareId() { - // select because lastInsertId does not work with OCI - $query = $this->connection->getQueryBuilder(); - $result = $query->select('id') - ->from('share') - ->orderBy('id', 'DESC') - ->execute(); - $row = $result->fetch(); - $result->closeCursor(); - return $row['id']; + return $this->connection->lastInsertId('*PREFIX*share'); } } diff --git a/tests/lib/share20/defaultshareprovidertest.php b/tests/lib/share20/defaultshareprovidertest.php index f8b6f98be7c..4c0b5523947 100644 --- a/tests/lib/share20/defaultshareprovidertest.php +++ b/tests/lib/share20/defaultshareprovidertest.php @@ -368,47 +368,8 @@ class DefaultShareProviderTest extends \Test\TestCase { $cursor->closeCursor(); - $path = $this->getMock('OCP\Files\File'); - $path - ->expects($this->exactly(2)) - ->method('getId') - ->willReturn(42); - - $sharedWith = $this->getMock('OCP\IUser'); - $sharedWith - ->expects($this->once()) - ->method('getUID') - ->willReturn('sharedWith'); - $sharedBy = $this->getMock('OCP\IUser'); - $sharedBy - ->expects($this->once()) - ->method('getUID') - ->willReturn('sharedBy'); - $share = $this->getMock('OC\Share20\IShare'); - $share - ->method('getId') - ->willReturn($id); - $share - ->expects($this->once()) - ->method('getShareType') - ->willReturn(\OCP\Share::SHARE_TYPE_USER); - $share - ->expects($this->exactly(3)) - ->method('getPath') - ->willReturn($path); - $share - ->expects($this->once()) - ->method('getSharedWith') - ->willReturn($sharedWith); - $share - ->expects($this->once()) - ->method('getSharedBy') - ->willReturn($sharedBy); - $share - ->expects($this->once()) - ->method('getTarget') - ->willReturn('myTarget'); + $share->method('getId')->willReturn($id); $provider = $this->getMockBuilder('OC\Share20\DefaultShareProvider') ->setConstructorArgs([ @@ -418,38 +379,13 @@ class DefaultShareProviderTest extends \Test\TestCase { $this->userFolder, ] ) - ->setMethods(['deleteChildren', 'getShareById']) + ->setMethods(['getShareById']) ->getMock(); $provider ->expects($this->once()) - ->method('deleteChildren'); - $provider - ->expects($this->once()) ->method('getShareById') ->willReturn($share); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['listen'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'pre_unshare', $hookListner, 'listen'); - \OCP\Util::connectHook('OCP\Share', 'post_unshare', $hookListner, 'listen'); - - $hookListnerExpects = [ - 'id' => $id, - 'itemType' => 'file', - 'itemSource' => 42, - 'shareType' => \OCP\Share::SHARE_TYPE_USER, - 'shareWith' => 'sharedWith', - 'itemparent' => null, - 'uidOwner' => 'sharedBy', - 'fileSource' => 42, - 'fileTarget' => 'myTarget', - ]; - - $hookListner - ->expects($this->exactly(2)) - ->method('listen') - ->with($hookListnerExpects); - - $provider->delete($share); $qb = $this->dbConn->getQueryBuilder(); @@ -463,116 +399,6 @@ class DefaultShareProviderTest extends \Test\TestCase { $this->assertEmpty($result); } - public function testDeleteNestedShares() { - $qb = $this->dbConn->getQueryBuilder(); - $qb->insert('share') - ->values([ - 'share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_USER), - 'share_with' => $qb->expr()->literal('sharedWith'), - 'uid_owner' => $qb->expr()->literal('sharedBy'), - 'item_type' => $qb->expr()->literal('file'), - 'file_source' => $qb->expr()->literal(42), - 'file_target' => $qb->expr()->literal('myTarget'), - 'permissions' => $qb->expr()->literal(13), - ]); - $this->assertEquals(1, $qb->execute()); - - // Get the id - $qb = $this->dbConn->getQueryBuilder(); - $cursor = $qb->select('id') - ->from('share') - ->setMaxResults(1) - ->orderBy('id', 'DESC') - ->execute(); - $id1 = $cursor->fetch(); - $id1 = $id1['id']; - $cursor->closeCursor(); - - - $qb = $this->dbConn->getQueryBuilder(); - $qb->insert('share') - ->values([ - 'share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_USER), - 'share_with' => $qb->expr()->literal('sharedWith'), - 'uid_owner' => $qb->expr()->literal('sharedBy'), - 'item_type' => $qb->expr()->literal('file'), - 'file_source' => $qb->expr()->literal(42), - 'file_target' => $qb->expr()->literal('myTarget'), - 'permissions' => $qb->expr()->literal(13), - 'parent' => $qb->expr()->literal($id1), - ]); - $this->assertEquals(1, $qb->execute()); - - // Get the id - $qb = $this->dbConn->getQueryBuilder(); - $cursor = $qb->select('id') - ->from('share') - ->setMaxResults(1) - ->orderBy('id', 'DESC') - ->execute(); - $id2 = $cursor->fetch(); - $id2 = $id2['id']; - $cursor->closeCursor(); - - - $qb = $this->dbConn->getQueryBuilder(); - $qb->insert('share') - ->values([ - 'share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_USER), - 'share_with' => $qb->expr()->literal('sharedWith'), - 'uid_owner' => $qb->expr()->literal('sharedBy'), - 'item_type' => $qb->expr()->literal('file'), - 'file_source' => $qb->expr()->literal(42), - 'file_target' => $qb->expr()->literal('myTarget'), - 'permissions' => $qb->expr()->literal(13), - 'parent' => $qb->expr()->literal($id2), - ]); - $this->assertEquals(1, $qb->execute()); - - $storage = $this->getMock('OC\Files\Storage\Storage'); - $storage - ->method('getOwner') - ->willReturn('shareOwner'); - $path = $this->getMock('OCP\Files\Node'); - $path - ->method('getStorage') - ->wilLReturn($storage); - $this->userFolder - ->method('getById') - ->with(42) - ->willReturn([$path]); - - $sharedWith = $this->getMock('OCP\IUser'); - $sharedWith - ->method('getUID') - ->willReturn('sharedWith'); - $sharedBy = $this->getMock('OCP\IUser'); - $sharedBy - ->method('getUID') - ->willReturn('sharedBy'); - $shareOwner = $this->getMock('OCP\IUser'); - $this->userManager - ->method('get') - ->will($this->returnValueMap([ - ['sharedWith', $sharedWith], - ['sharedBy', $sharedBy], - ['shareOwner', $shareOwner], - ])); - - $share = $this->provider->getShareById($id1); - $this->provider->delete($share); - - $qb = $this->dbConn->getQueryBuilder(); - $qb->select('*') - ->from('share'); - - $cursor = $qb->execute(); - $result = $cursor->fetchAll(); - $cursor->closeCursor(); - - $this->assertEmpty($result); - } - /** * @expectedException \OC\Share20\Exception\BackendError */ @@ -581,29 +407,6 @@ class DefaultShareProviderTest extends \Test\TestCase { $share ->method('getId') ->willReturn(42); - $share - ->expects($this->once()) - ->method('getShareType') - ->willReturn(\OCP\Share::SHARE_TYPE_LINK); - - $path = $this->getMock('OCP\Files\Folder'); - $path - ->expects($this->exactly(2)) - ->method('getId') - ->willReturn(100); - $share - ->expects($this->exactly(3)) - ->method('getPath') - ->willReturn($path); - - $sharedBy = $this->getMock('OCP\IUser'); - $sharedBy - ->expects($this->once()) - ->method('getUID'); - $share - ->expects($this->once()) - ->method('getSharedBy') - ->willReturn($sharedBy); $expr = $this->getMock('OCP\DB\QueryBuilder\IExpressionBuilder'); $qb = $this->getMock('OCP\DB\QueryBuilder\IQueryBuilder'); @@ -637,18 +440,133 @@ class DefaultShareProviderTest extends \Test\TestCase { $this->userFolder, ] ) - ->setMethods(['deleteChildren', 'getShareById']) + ->setMethods(['getShareById']) ->getMock(); $provider ->expects($this->once()) - ->method('deleteChildren') - ->with($share); - $provider - ->expects($this->once()) ->method('getShareById') ->with(42) ->willReturn($share); $provider->delete($share); } + + public function testGetChildren() { + $qb = $this->dbConn->getQueryBuilder(); + $qb->insert('share') + ->values([ + 'share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_USER), + 'share_with' => $qb->expr()->literal('sharedWith'), + 'uid_owner' => $qb->expr()->literal('sharedBy'), + 'item_type' => $qb->expr()->literal('file'), + 'file_source' => $qb->expr()->literal(42), + 'file_target' => $qb->expr()->literal('myTarget'), + 'permissions' => $qb->expr()->literal(13), + ]); + $qb->execute(); + + // Get the id + $qb = $this->dbConn->getQueryBuilder(); + $cursor = $qb->select('id') + ->from('share') + ->setMaxResults(1) + ->orderBy('id', 'DESC') + ->execute(); + $id = $cursor->fetch(); + $id = $id['id']; + $cursor->closeCursor(); + + $qb = $this->dbConn->getQueryBuilder(); + $qb->insert('share') + ->values([ + 'share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_USER), + 'share_with' => $qb->expr()->literal('user1'), + 'uid_owner' => $qb->expr()->literal('user2'), + 'item_type' => $qb->expr()->literal('file'), + 'file_source' => $qb->expr()->literal(1), + 'file_target' => $qb->expr()->literal('myTarget1'), + 'permissions' => $qb->expr()->literal(2), + 'parent' => $qb->expr()->literal($id), + ]); + $qb->execute(); + + $qb = $this->dbConn->getQueryBuilder(); + $qb->insert('share') + ->values([ + 'share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_GROUP), + 'share_with' => $qb->expr()->literal('group1'), + 'uid_owner' => $qb->expr()->literal('user3'), + 'item_type' => $qb->expr()->literal('folder'), + 'file_source' => $qb->expr()->literal(3), + 'file_target' => $qb->expr()->literal('myTarget2'), + 'permissions' => $qb->expr()->literal(4), + 'parent' => $qb->expr()->literal($id), + ]); + $qb->execute(); + + + $storage = $this->getMock('OC\Files\Storage\Storage'); + $storage + ->method('getOwner') + ->willReturn('shareOwner'); + $path1 = $this->getMock('OCP\Files\File'); + $path1->expects($this->once())->method('getStorage')->willReturn($storage); + $path2 = $this->getMock('OCP\Files\Folder'); + $path2->expects($this->once())->method('getStorage')->willReturn($storage); + $this->userFolder + ->method('getById') + ->will($this->returnValueMap([ + [1, [$path1]], + [3, [$path2]], + ])); + + $shareOwner = $this->getMock('OCP\IUser'); + $user1 = $this->getMock('OCP\IUser'); + $user2 = $this->getMock('OCP\IUser'); + $user3 = $this->getMock('OCP\IUser'); + $this->userManager + ->method('get') + ->will($this->returnValueMap([ + ['shareOwner', $shareOwner], + ['user1', $user1], + ['user2', $user2], + ['user3', $user3], + ])); + + $group1 = $this->getMock('OCP\IGroup'); + $this->groupManager + ->method('get') + ->will($this->returnValueMap([ + ['group1', $group1] + ])); + + $share = $this->getMock('\OC\Share20\IShare'); + $share->method('getId')->willReturn($id); + + $children = $this->provider->getChildren($share); + + $this->assertCount(2, $children); + + //Child1 + $this->assertEquals(\OCP\Share::SHARE_TYPE_USER, $children[0]->getShareType()); + $this->assertEquals($user1, $children[0]->getSharedWith()); + $this->assertEquals($user2, $children[0]->getSharedBy()); + $this->assertEquals($shareOwner, $children[0]->getShareOwner()); + $this->assertEquals($path1, $children[0]->getPath()); + $this->assertEquals(2, $children[0]->getPermissions()); + $this->assertEquals(null, $children[0]->getToken()); + $this->assertEquals(null, $children[0]->getExpirationDate()); + $this->assertEquals('myTarget1', $children[0]->getTarget()); + + //Child2 + $this->assertEquals(\OCP\Share::SHARE_TYPE_GROUP, $children[1]->getShareType()); + $this->assertEquals($group1, $children[1]->getSharedWith()); + $this->assertEquals($user3, $children[1]->getSharedBy()); + $this->assertEquals($shareOwner, $children[1]->getShareOwner()); + $this->assertEquals($path2, $children[1]->getPath()); + $this->assertEquals(4, $children[1]->getPermissions()); + $this->assertEquals(null, $children[1]->getToken()); + $this->assertEquals(null, $children[1]->getExpirationDate()); + $this->assertEquals('myTarget2', $children[1]->getTarget()); + } } diff --git a/tests/lib/share20/managertest.php b/tests/lib/share20/managertest.php index fc6c30692f5..54be9033567 100644 --- a/tests/lib/share20/managertest.php +++ b/tests/lib/share20/managertest.php @@ -94,20 +94,301 @@ class ManagerTest extends \Test\TestCase { $this->manager->deleteShare($share); } - public function testDelete() { + public function dataTestDelete() { + $user = $this->getMock('\OCP\IUser'); + $user->method('getUID')->willReturn('sharedWithUser'); + + $group = $this->getMock('\OCP\IGroup'); + $group->method('getGID')->willReturn('sharedWithGroup'); + + return [ + [\OCP\Share::SHARE_TYPE_USER, $user, 'sharedWithUser'], + [\OCP\Share::SHARE_TYPE_GROUP, $group, 'sharedWithGroup'], + [\OCP\Share::SHARE_TYPE_LINK, '', ''], + [\OCP\Share::SHARE_TYPE_REMOTE, 'foo@bar.com', 'foo@bar.com'], + ]; + } + + /** + * @dataProvider dataTestDelete + */ + public function testDelete($shareType, $sharedWith, $sharedWith_string) { + $manager = $this->getMockBuilder('\OC\Share20\Manager') + ->setConstructorArgs([ + $this->user, + $this->userManager, + $this->groupManager, + $this->logger, + $this->appConfig, + $this->userFolder, + $this->defaultProvider + ]) + ->setMethods(['getShareById', 'deleteChildren']) + ->getMock(); + + $sharedBy = $this->getMock('\OCP\IUser'); + $sharedBy->method('getUID')->willReturn('sharedBy'); + + $path = $this->getMock('\OCP\Files\File'); + $path->method('getId')->willReturn(1); + $share = $this->getMock('\OC\Share20\IShare'); + $share->method('getId')->willReturn(42); + $share->method('getShareType')->willReturn($shareType); + $share->method('getSharedWith')->willReturn($sharedWith); + $share->method('getSharedBy')->willReturn($sharedBy); + $share->method('getPath')->willReturn($path); + $share->method('getTarget')->willReturn('myTarget'); + + $manager->expects($this->once())->method('getShareById')->with(42)->willReturn($share); + $manager->expects($this->once())->method('deleteChildren')->with($share); - $share - ->expects($this->once()) - ->method('getId') - ->with() - ->willReturn(42); $this->defaultProvider ->expects($this->once()) ->method('delete') ->with($share); - $this->manager->deleteShare($share); + $hookListner = $this->getMockBuilder('Dummy')->setMethods(['pre', 'post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'pre_unshare', $hookListner, 'pre'); + \OCP\Util::connectHook('OCP\Share', 'post_unshare', $hookListner, 'post'); + + $hookListnerExpectsPre = [ + 'id' => 42, + 'itemType' => 'file', + 'itemSource' => 1, + 'shareType' => $shareType, + 'shareWith' => $sharedWith_string, + 'itemparent' => null, + 'uidOwner' => 'sharedBy', + 'fileSource' => 1, + 'fileTarget' => 'myTarget', + ]; + + $hookListnerExpectsPost = [ + 'id' => 42, + 'itemType' => 'file', + 'itemSource' => 1, + 'shareType' => $shareType, + 'shareWith' => $sharedWith_string, + 'itemparent' => null, + 'uidOwner' => 'sharedBy', + 'fileSource' => 1, + 'fileTarget' => 'myTarget', + 'deletedShares' => [ + [ + 'id' => 42, + 'itemType' => 'file', + 'itemSource' => 1, + 'shareType' => $shareType, + 'shareWith' => $sharedWith_string, + 'itemparent' => null, + 'uidOwner' => 'sharedBy', + 'fileSource' => 1, + 'fileTarget' => 'myTarget', + ], + ], + ]; + + + $hookListner + ->expects($this->exactly(1)) + ->method('pre') + ->with($hookListnerExpectsPre); + $hookListner + ->expects($this->exactly(1)) + ->method('post') + ->with($hookListnerExpectsPost); + + $manager->deleteShare($share); + } + + public function testDeleteNested() { + $manager = $this->getMockBuilder('\OC\Share20\Manager') + ->setConstructorArgs([ + $this->user, + $this->userManager, + $this->groupManager, + $this->logger, + $this->appConfig, + $this->userFolder, + $this->defaultProvider + ]) + ->setMethods(['getShareById']) + ->getMock(); + + $sharedBy1 = $this->getMock('\OCP\IUser'); + $sharedBy1->method('getUID')->willReturn('sharedBy1'); + $sharedBy2 = $this->getMock('\OCP\IUser'); + $sharedBy2->method('getUID')->willReturn('sharedBy2'); + $sharedBy3 = $this->getMock('\OCP\IUser'); + $sharedBy3->method('getUID')->willReturn('sharedBy3'); + + $sharedWith1 = $this->getMock('\OCP\IUser'); + $sharedWith1->method('getUID')->willReturn('sharedWith1'); + $sharedWith2 = $this->getMock('\OCP\IGroup'); + $sharedWith2->method('getGID')->willReturn('sharedWith2'); + + $path = $this->getMock('\OCP\Files\File'); + $path->method('getId')->willReturn(1); + + $share1 = $this->getMock('\OC\Share20\IShare'); + $share1->method('getId')->willReturn(42); + $share1->method('getShareType')->willReturn(\OCP\Share::SHARE_TYPE_USER); + $share1->method('getSharedWith')->willReturn($sharedWith1); + $share1->method('getSharedBy')->willReturn($sharedBy1); + $share1->method('getPath')->willReturn($path); + $share1->method('getTarget')->willReturn('myTarget1'); + + $share2 = $this->getMock('\OC\Share20\IShare'); + $share2->method('getId')->willReturn(43); + $share2->method('getShareType')->willReturn(\OCP\Share::SHARE_TYPE_GROUP); + $share2->method('getSharedWith')->willReturn($sharedWith2); + $share2->method('getSharedBy')->willReturn($sharedBy2); + $share2->method('getPath')->willReturn($path); + $share2->method('getTarget')->willReturn('myTarget2'); + $share2->method('getParent')->willReturn(42); + + $share3 = $this->getMock('\OC\Share20\IShare'); + $share3->method('getId')->willReturn(44); + $share3->method('getShareType')->willReturn(\OCP\Share::SHARE_TYPE_LINK); + $share3->method('getSharedBy')->willReturn($sharedBy3); + $share3->method('getPath')->willReturn($path); + $share3->method('getTarget')->willReturn('myTarget3'); + $share3->method('getParent')->willReturn(43); + + $manager->expects($this->once())->method('getShareById')->with(42)->willReturn($share1); + + $this->defaultProvider + ->method('getChildren') + ->will($this->returnValueMap([ + [$share1, [$share2]], + [$share2, [$share3]], + [$share3, []], + ])); + + $this->defaultProvider + ->method('delete') + ->withConsecutive($share3, $share2, $share1); + + $hookListner = $this->getMockBuilder('Dummy')->setMethods(['pre', 'post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'pre_unshare', $hookListner, 'pre'); + \OCP\Util::connectHook('OCP\Share', 'post_unshare', $hookListner, 'post'); + + $hookListnerExpectsPre = [ + 'id' => 42, + 'itemType' => 'file', + 'itemSource' => 1, + 'shareType' => \OCP\Share::SHARE_TYPE_USER, + 'shareWith' => 'sharedWith1', + 'itemparent' => null, + 'uidOwner' => 'sharedBy1', + 'fileSource' => 1, + 'fileTarget' => 'myTarget1', + ]; + + $hookListnerExpectsPost = [ + 'id' => 42, + 'itemType' => 'file', + 'itemSource' => 1, + 'shareType' => \OCP\Share::SHARE_TYPE_USER, + 'shareWith' => 'sharedWith1', + 'itemparent' => null, + 'uidOwner' => 'sharedBy1', + 'fileSource' => 1, + 'fileTarget' => 'myTarget1', + 'deletedShares' => [ + [ + 'id' => 44, + 'itemType' => 'file', + 'itemSource' => 1, + 'shareType' => \OCP\Share::SHARE_TYPE_LINK, + 'shareWith' => '', + 'itemparent' => 43, + 'uidOwner' => 'sharedBy3', + 'fileSource' => 1, + 'fileTarget' => 'myTarget3', + ], + [ + 'id' => 43, + 'itemType' => 'file', + 'itemSource' => 1, + 'shareType' => \OCP\Share::SHARE_TYPE_GROUP, + 'shareWith' => 'sharedWith2', + 'itemparent' => 42, + 'uidOwner' => 'sharedBy2', + 'fileSource' => 1, + 'fileTarget' => 'myTarget2', + ], + [ + 'id' => 42, + 'itemType' => 'file', + 'itemSource' => 1, + 'shareType' => \OCP\Share::SHARE_TYPE_USER, + 'shareWith' => 'sharedWith1', + 'itemparent' => null, + 'uidOwner' => 'sharedBy1', + 'fileSource' => 1, + 'fileTarget' => 'myTarget1', + ], + ], + ]; + + + $hookListner + ->expects($this->exactly(1)) + ->method('pre') + ->with($hookListnerExpectsPre); + $hookListner + ->expects($this->exactly(1)) + ->method('post') + ->with($hookListnerExpectsPost); + + $manager->deleteShare($share1); + } + + public function testDeleteChildren() { + $manager = $this->getMockBuilder('\OC\Share20\Manager') + ->setConstructorArgs([ + $this->user, + $this->userManager, + $this->groupManager, + $this->logger, + $this->appConfig, + $this->userFolder, + $this->defaultProvider + ]) + ->setMethods(['deleteShare']) + ->getMock(); + + $share = $this->getMock('\OC\Share20\IShare'); + + $child1 = $this->getMock('\OC\Share20\IShare'); + $child2 = $this->getMock('\OC\Share20\IShare'); + $child3 = $this->getMock('\OC\Share20\IShare'); + + $shares = [ + $child1, + $child2, + $child3, + ]; + + $this->defaultProvider + ->expects($this->exactly(4)) + ->method('getChildren') + ->will($this->returnCallback(function($_share) use ($share, $shares) { + if ($_share === $share) { + return $shares; + } + return []; + })); + + $this->defaultProvider + ->expects($this->exactly(3)) + ->method('delete') + ->withConsecutive($child1, $child2, $child3); + + $result = $this->invokePrivate($manager, 'deleteChildren', [$share]); + $this->assertSame($shares, $result); } /** diff --git a/tests/settings/controller/userscontrollertest.php b/tests/settings/controller/userscontrollertest.php index f4b05671ce8..b10737035ea 100644 --- a/tests/settings/controller/userscontrollertest.php +++ b/tests/settings/controller/userscontrollertest.php @@ -1746,4 +1746,173 @@ class UsersControllerTest extends \Test\TestCase { $this->assertEquals($expectedResponse, $response); } + public function testSetDisplayNameNull() { + $user = $this->getMock('\OCP\IUser'); + $user->method('getUID')->willReturn('userName'); + + $this->container['UserSession'] + ->expects($this->once()) + ->method('getUser') + ->willReturn($user); + + $expectedResponse = new DataResponse( + [ + 'status' => 'error', + 'data' => [ + 'message' => 'Authentication error', + ], + ] + ); + $response = $this->container['UsersController']->setDisplayName(null, 'displayName'); + + $this->assertEquals($expectedResponse, $response); + } + + public function dataSetDisplayName() { + $data = []; + + $user1 = $this->getMock('\OCP\IUser'); + $user1->method('getUID')->willReturn('user1'); + $user1->method('canChangeDisplayName')->willReturn(true); + $data[] = [$user1, $user1, false, false, true]; + + $user1 = $this->getMock('\OCP\IUser'); + $user1->method('getUID')->willReturn('user1'); + $user1->method('canChangeDisplayName')->willReturn(false); + $data[] = [$user1, $user1, false, false, false]; + + $user1 = $this->getMock('\OCP\IUser'); + $user1->method('getUID')->willReturn('user1'); + $user2 = $this->getMock('\OCP\IUser'); + $user2->method('getUID')->willReturn('user2'); + $user2->method('canChangeDisplayName')->willReturn(true); + $data[] = [$user1, $user2, false, false, false]; + + $user1 = $this->getMock('\OCP\IUser'); + $user1->method('getUID')->willReturn('user1'); + $user2 = $this->getMock('\OCP\IUser'); + $user2->method('getUID')->willReturn('user2'); + $user2->method('canChangeDisplayName')->willReturn(true); + $data[] = [$user1, $user2, true, false, true]; + + $user1 = $this->getMock('\OCP\IUser'); + $user1->method('getUID')->willReturn('user1'); + $user2 = $this->getMock('\OCP\IUser'); + $user2->method('getUID')->willReturn('user2'); + $user2->method('canChangeDisplayName')->willReturn(true); + $data[] = [$user1, $user2, false, true, true]; + + return $data; + } + + /** + * @dataProvider dataSetDisplayName + */ + public function testSetDisplayName($currentUser, $editUser, $isAdmin, $isSubAdmin, $valid) { + $this->container['UserSession'] + ->expects($this->once()) + ->method('getUser') + ->willReturn($currentUser); + $this->container['UserManager'] + ->expects($this->once()) + ->method('get') + ->with($editUser->getUID()) + ->willReturn($editUser); + + $subadmin = $this->getMockBuilder('\OC\SubAdmin') + ->disableOriginalConstructor() + ->getMock(); + $subadmin + ->method('isUserAccessible') + ->with($currentUser, $editUser) + ->willReturn($isSubAdmin); + + $this->container['GroupManager'] + ->method('getSubAdmin') + ->willReturn($subadmin); + $this->container['GroupManager'] + ->method('isAdmin') + ->with($currentUser->getUID()) + ->willReturn($isAdmin); + + if ($valid === true) { + $editUser->expects($this->once()) + ->method('setDisplayName') + ->with('newDisplayName') + ->willReturn(true); + $expectedResponse = new DataResponse( + [ + 'status' => 'success', + 'data' => [ + 'message' => 'Your full name has been changed.', + 'username' => $editUser->getUID(), + 'displayName' => 'newDisplayName', + ], + ] + ); + } else { + $editUser->expects($this->never())->method('setDisplayName'); + $expectedResponse = new DataResponse( + [ + 'status' => 'error', + 'data' => [ + 'message' => 'Authentication error', + ], + ] + ); + } + + $response = $this->container['UsersController']->setDisplayName($editUser->getUID(), 'newDisplayName'); + $this->assertEquals($expectedResponse, $response); + } + + public function testSetDisplayNameFails() { + $user = $this->getMock('\OCP\IUser'); + $user->method('canChangeDisplayname')->willReturn(true); + $user->method('getUID')->willReturn('user'); + $user->expects($this->once()) + ->method('setDisplayName') + ->with('newDisplayName') + ->willReturn(false); + $user->method('getDisplayName')->willReturn('oldDisplayName'); + + $this->container['UserSession'] + ->expects($this->once()) + ->method('getUser') + ->willReturn($user); + $this->container['UserManager'] + ->expects($this->once()) + ->method('get') + ->with($user->getUID()) + ->willReturn($user); + + $subadmin = $this->getMockBuilder('\OC\SubAdmin') + ->disableOriginalConstructor() + ->getMock(); + $subadmin + ->method('isUserAccessible') + ->with($user, $user) + ->willReturn(false); + + $this->container['GroupManager'] + ->method('getSubAdmin') + ->willReturn($subadmin); + $this->container['GroupManager'] + ->expects($this->once()) + ->method('isAdmin') + ->with($user->getUID()) + ->willReturn(false); + + $expectedResponse = new DataResponse( + [ + 'status' => 'error', + 'data' => [ + 'message' => 'Unable to change full name', + 'displayName' => 'oldDisplayName', + ], + ] + ); + $response = $this->container['UsersController']->setDisplayName($user->getUID(), 'newDisplayName'); + $this->assertEquals($expectedResponse, $response); + } } |