diff options
203 files changed, 1819 insertions, 306 deletions
diff --git a/README.md b/README.md index adf8999f565..63ba04031b0 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,14 @@ [](https://ci.owncloud.org/job/server-master-linux/) [](https://scrutinizer-ci.com/g/owncloud/core/) +[](https://codecov.io/github/owncloud/core?branch=master) [](https://codeclimate.com/github/owncloud/core) [](https://scan.coverity.com/projects/owncloud-core) [](https://www.versioneye.com/user/projects/54f4a2384f3108959a000a16) [](https://www.versioneye.com/user/projects/54d1f76f3ca0840b190000c0) + + **[ownCloud](http://ownCloud.org) gives you freedom and control over your own data. A personal cloud which runs on your own server.** diff --git a/apps/comments/l10n/es.js b/apps/comments/l10n/es.js index 23716ca5757..02e45762e09 100644 --- a/apps/comments/l10n/es.js +++ b/apps/comments/l10n/es.js @@ -2,7 +2,9 @@ OC.L10N.register( "comments", { "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> en archivos", + "You commented" : "Has comentado", "%1$s commented" : "%1$s comentados", + "You commented on %2$s" : "Has comentado en %2$s", "%1$s commented on %2$s" : "%1$s comentados en %2$s", "Comments" : "Comentarios", "Type in a new comment..." : "Ingrese un nuevo comentario...", diff --git a/apps/comments/l10n/es.json b/apps/comments/l10n/es.json index cc3e1781299..232fea3a18b 100644 --- a/apps/comments/l10n/es.json +++ b/apps/comments/l10n/es.json @@ -1,6 +1,8 @@ { "translations": { "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> en archivos", + "You commented" : "Has comentado", "%1$s commented" : "%1$s comentados", + "You commented on %2$s" : "Has comentado en %2$s", "%1$s commented on %2$s" : "%1$s comentados en %2$s", "Comments" : "Comentarios", "Type in a new comment..." : "Ingrese un nuevo comentario...", diff --git a/apps/comments/l10n/nl.js b/apps/comments/l10n/nl.js index d168c0658db..eb9faf55e1a 100644 --- a/apps/comments/l10n/nl.js +++ b/apps/comments/l10n/nl.js @@ -2,7 +2,9 @@ OC.L10N.register( "comments", { "<strong>Comments</strong> for files" : "<strong>Reacties</strong> voor bestanden", + "You commented" : "U heeft gereageerd", "%1$s commented" : "%1$s heeft gereageerd", + "You commented on %2$s" : "U heeft gereageerd op %2$s", "%1$s commented on %2$s" : "%1$s heeft gereageerd op %2$s", "Comments" : "Reacties", "Type in a new comment..." : "Type een nieuwe reactie...", diff --git a/apps/comments/l10n/nl.json b/apps/comments/l10n/nl.json index 74050c7f816..d2a811207f6 100644 --- a/apps/comments/l10n/nl.json +++ b/apps/comments/l10n/nl.json @@ -1,6 +1,8 @@ { "translations": { "<strong>Comments</strong> for files" : "<strong>Reacties</strong> voor bestanden", + "You commented" : "U heeft gereageerd", "%1$s commented" : "%1$s heeft gereageerd", + "You commented on %2$s" : "U heeft gereageerd op %2$s", "%1$s commented on %2$s" : "%1$s heeft gereageerd op %2$s", "Comments" : "Reacties", "Type in a new comment..." : "Type een nieuwe reactie...", diff --git a/apps/comments/l10n/sv.js b/apps/comments/l10n/sv.js index db3cfe589ae..6c3b17555bc 100644 --- a/apps/comments/l10n/sv.js +++ b/apps/comments/l10n/sv.js @@ -2,7 +2,9 @@ OC.L10N.register( "comments", { "<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> till filer", + "You commented" : "Du kommenterade", "%1$s commented" : "%1$s har kommenterat", + "You commented on %2$s" : "Du kommenterade %2$s", "%1$s commented on %2$s" : "%1$s kommenterade på %2$s", "Comments" : "Kommentarer", "Type in a new comment..." : "Skriv en ny kommentar", diff --git a/apps/comments/l10n/sv.json b/apps/comments/l10n/sv.json index 7547cfe69e2..6b2e9b7b71d 100644 --- a/apps/comments/l10n/sv.json +++ b/apps/comments/l10n/sv.json @@ -1,6 +1,8 @@ { "translations": { "<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> till filer", + "You commented" : "Du kommenterade", "%1$s commented" : "%1$s har kommenterat", + "You commented on %2$s" : "Du kommenterade %2$s", "%1$s commented on %2$s" : "%1$s kommenterade på %2$s", "Comments" : "Kommentarer", "Type in a new comment..." : "Skriv en ny kommentar", diff --git a/apps/comments/l10n/tr.js b/apps/comments/l10n/tr.js index d098f212de6..ff5bbca4081 100644 --- a/apps/comments/l10n/tr.js +++ b/apps/comments/l10n/tr.js @@ -1,21 +1,23 @@ OC.L10N.register( "comments", { - "<strong>Comments</strong> for files" : "Dosyalar için <strong>Yorumlar</strong>", + "<strong>Comments</strong> for files" : "Dosyalar için <strong>yorumlar</strong>", + "You commented" : "Yorum yaptınız", "%1$s commented" : "%1$s yorumlanmış", - "%1$s commented on %2$s" : "%1$s yorumlanmış %2$s", + "You commented on %2$s" : "%2$s için yorum yaptınız", + "%1$s commented on %2$s" : "%1$s, %2$s için yorum yaptı", "Comments" : "Yorumlar", - "Type in a new comment..." : "Yeni bir yorum yazın", - "Delete comment" : "Yorumu silin", + "Type in a new comment..." : "Yeni bir yorum yazın...", + "Delete comment" : "Yorumu sil", "Post" : "Gönder", "Cancel" : "İptal", - "Edit comment" : "Yorumu düzenleyin", + "Edit comment" : "Yorumu düzenle", "[Deleted user]" : "[Silinmiş kullanıcı]", "No other comments available" : "Mevcut başka yorum yok", "More comments..." : "Daha fazla yorum...", "Save" : "Kaydet", - "Allowed characters {count} of {max}" : "İzin verilen karakterler {count} {max}", - "{count} unread comments" : "{count} okunmamış yorumlar", + "Allowed characters {count} of {max}" : "İzin verilen karakterler {count}/{max}", + "{count} unread comments" : "{count} okunmamış yorum", "Comment" : "Yorum" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/comments/l10n/tr.json b/apps/comments/l10n/tr.json index 8b644c82ee1..724670c53ae 100644 --- a/apps/comments/l10n/tr.json +++ b/apps/comments/l10n/tr.json @@ -1,19 +1,21 @@ { "translations": { - "<strong>Comments</strong> for files" : "Dosyalar için <strong>Yorumlar</strong>", + "<strong>Comments</strong> for files" : "Dosyalar için <strong>yorumlar</strong>", + "You commented" : "Yorum yaptınız", "%1$s commented" : "%1$s yorumlanmış", - "%1$s commented on %2$s" : "%1$s yorumlanmış %2$s", + "You commented on %2$s" : "%2$s için yorum yaptınız", + "%1$s commented on %2$s" : "%1$s, %2$s için yorum yaptı", "Comments" : "Yorumlar", - "Type in a new comment..." : "Yeni bir yorum yazın", - "Delete comment" : "Yorumu silin", + "Type in a new comment..." : "Yeni bir yorum yazın...", + "Delete comment" : "Yorumu sil", "Post" : "Gönder", "Cancel" : "İptal", - "Edit comment" : "Yorumu düzenleyin", + "Edit comment" : "Yorumu düzenle", "[Deleted user]" : "[Silinmiş kullanıcı]", "No other comments available" : "Mevcut başka yorum yok", "More comments..." : "Daha fazla yorum...", "Save" : "Kaydet", - "Allowed characters {count} of {max}" : "İzin verilen karakterler {count} {max}", - "{count} unread comments" : "{count} okunmamış yorumlar", + "Allowed characters {count} of {max}" : "İzin verilen karakterler {count}/{max}", + "{count} unread comments" : "{count} okunmamış yorum", "Comment" : "Yorum" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/zh_TW.js b/apps/comments/l10n/zh_TW.js index 65cddd342ca..41c0dd4b0f2 100644 --- a/apps/comments/l10n/zh_TW.js +++ b/apps/comments/l10n/zh_TW.js @@ -1,7 +1,23 @@ OC.L10N.register( "comments", { + "<strong>Comments</strong> for files" : "檔案的<strong>留言</strong>", + "You commented" : "您留言", + "%1$s commented" : "%1$s 留言", + "You commented on %2$s" : "您對 %2$s 留言", + "%1$s commented on %2$s" : "%1$s 對 %2$s 留言", + "Comments" : "留言", + "Type in a new comment..." : "輸入新留言…", + "Delete comment" : "刪除留言", + "Post" : "送出", "Cancel" : "取消", - "Save" : "儲存" + "Edit comment" : "編輯留言", + "[Deleted user]" : "[已刪除的使用者]", + "No other comments available" : "沒有其他留言", + "More comments..." : "更多留言…", + "Save" : "儲存", + "Allowed characters {count} of {max}" : "已輸入 {count} / 長度限制 {max}", + "{count} unread comments" : "{count} 則未讀留言", + "Comment" : "留言" }, "nplurals=1; plural=0;"); diff --git a/apps/comments/l10n/zh_TW.json b/apps/comments/l10n/zh_TW.json index 4da0032a014..7fe1b0fb1fa 100644 --- a/apps/comments/l10n/zh_TW.json +++ b/apps/comments/l10n/zh_TW.json @@ -1,5 +1,21 @@ { "translations": { + "<strong>Comments</strong> for files" : "檔案的<strong>留言</strong>", + "You commented" : "您留言", + "%1$s commented" : "%1$s 留言", + "You commented on %2$s" : "您對 %2$s 留言", + "%1$s commented on %2$s" : "%1$s 對 %2$s 留言", + "Comments" : "留言", + "Type in a new comment..." : "輸入新留言…", + "Delete comment" : "刪除留言", + "Post" : "送出", "Cancel" : "取消", - "Save" : "儲存" + "Edit comment" : "編輯留言", + "[Deleted user]" : "[已刪除的使用者]", + "No other comments available" : "沒有其他留言", + "More comments..." : "更多留言…", + "Save" : "儲存", + "Allowed characters {count} of {max}" : "已輸入 {count} / 長度限制 {max}", + "{count} unread comments" : "{count} 則未讀留言", + "Comment" : "留言" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/dav/appinfo/database.xml b/apps/dav/appinfo/database.xml index b0a7ad4f2a8..71dec639064 100644 --- a/apps/dav/appinfo/database.xml +++ b/apps/dav/appinfo/database.xml @@ -31,18 +31,22 @@ CREATE TABLE addressbooks ( <field> <name>principaluri</name> <type>text</type> + <length>255</length> </field> <field> <name>displayname</name> <type>text</type> + <length>255</length> </field> <field> <name>uri</name> <type>text</type> + <length>255</length> </field> <field> <name>description</name> <type>text</type> + <length>255</length> </field> <field> <name>synctoken</name> @@ -102,6 +106,7 @@ CREATE TABLE cards ( <field> <name>uri</name> <type>text</type> + <length>255</length> </field> <field> <name>lastmodified</name> @@ -150,6 +155,7 @@ CREATE TABLE addressbookchanges ( <field> <name>uri</name> <type>text</type> + <length>255</length> </field> <field> <name>synctoken</name> @@ -219,6 +225,7 @@ CREATE TABLE calendarobjects ( <field> <name>uri</name> <type>text</type> + <length>255</length> </field> <field> <name>calendarid</name> @@ -246,6 +253,7 @@ CREATE TABLE calendarobjects ( <field> <name>componenttype</name> <type>text</type> + <length>8</length> </field> <field> <name>firstoccurence</name> @@ -260,6 +268,7 @@ CREATE TABLE calendarobjects ( <field> <name>uid</name> <type>text</type> + <length>255</length> </field> <index> <name>calobjects_index</name> @@ -304,14 +313,17 @@ CREATE TABLE calendarobjects ( <field> <name>principaluri</name> <type>text</type> + <length>255</length> </field> <field> <name>displayname</name> <type>text</type> + <length>255</length> </field> <field> <name>uri</name> <type>text</type> + <length>255</length> </field> <field> <name>synctoken</name> @@ -323,6 +335,7 @@ CREATE TABLE calendarobjects ( <field> <name>description</name> <type>text</type> + <length>255</length> </field> <field> <name>calendarorder</name> @@ -342,6 +355,7 @@ CREATE TABLE calendarobjects ( <field> <name>components</name> <type>text</type> + <length>20</length> </field> <field> <name>transparent</name> @@ -387,6 +401,7 @@ CREATE TABLE calendarobjects ( <field> <name>uri</name> <type>text</type> + <length>255</length> </field> <field> <name>synctoken</name> @@ -456,10 +471,12 @@ CREATE TABLE calendarobjects ( <field> <name>principaluri</name> <type>text</type> + <length>255</length> </field> <field> <name>source</name> <type>text</type> + <length>255</length> </field> <field> <name>displayname</name> @@ -541,6 +558,7 @@ CREATE TABLE calendarobjects ( <field> <name>principaluri</name> <type>text</type> + <length>255</length> </field> <field> <name>calendardata</name> @@ -549,6 +567,7 @@ CREATE TABLE calendarobjects ( <field> <name>uri</name> <type>text</type> + <length>255</length> </field> <field> <name>lastmodified</name> @@ -658,10 +677,12 @@ CREATE TABLE calendarobjects ( <field> <name>principaluri</name> <type>text</type> + <length>255</length> </field> <field> <name>type</name> <type>text</type> + <length>255</length> </field> <field> <name>access</name> diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml index 82d0f7cf8a1..b7c7267dce8 100644 --- a/apps/dav/appinfo/info.xml +++ b/apps/dav/appinfo/info.xml @@ -5,7 +5,7 @@ <description>ownCloud WebDAV endpoint</description> <licence>AGPL</licence> <author>owncloud.org</author> - <version>0.2.2</version> + <version>0.2.3</version> <default_enable/> <types> <filesystem/> diff --git a/apps/dav/appinfo/v1/publicwebdav.php b/apps/dav/appinfo/v1/publicwebdav.php index b0ee264aac3..558a8238666 100644 --- a/apps/dav/appinfo/v1/publicwebdav.php +++ b/apps/dav/appinfo/v1/publicwebdav.php @@ -32,7 +32,7 @@ OC_App::loadApps($RUNTIME_APPTYPES); OC_Util::obEnd(); // Backends -$authBackend = new OCA\DAV\Connector\PublicAuth(\OC::$server->getConfig()); +$authBackend = new OCA\DAV\Connector\PublicAuth(\OC::$server->getConfig(), \OC::$server->getRequest()); $serverFactory = new OCA\DAV\Connector\Sabre\ServerFactory( \OC::$server->getConfig(), diff --git a/apps/dav/lib/caldav/caldavbackend.php b/apps/dav/lib/caldav/caldavbackend.php index 5f82db10b39..f0f236de3ff 100644 --- a/apps/dav/lib/caldav/caldavbackend.php +++ b/apps/dav/lib/caldav/caldavbackend.php @@ -705,7 +705,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription * * This default may well be good enough for personal use, and calendars * that aren't very large. But if you anticipate high usage, big calendars - * or high loads, you are strongly adviced to optimize certain paths. + * or high loads, you are strongly advised to optimize certain paths. * * The best way to do so is override this method and to optimize * specifically for 'common filters'. @@ -1299,7 +1299,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription } if ($componentType === 'VEVENT' && $component->DTSTART) { $firstOccurence = $component->DTSTART->getDateTime()->getTimeStamp(); - // Finding the last occurence is a bit harder + // Finding the last occurrence is a bit harder if (!isset($component->RRULE)) { if (isset($component->DTEND)) { $lastOccurence = $component->DTEND->getDateTime()->getTimeStamp(); diff --git a/apps/dav/lib/carddav/carddavbackend.php b/apps/dav/lib/carddav/carddavbackend.php index 97f5706049a..28d5ed1ae99 100644 --- a/apps/dav/lib/carddav/carddavbackend.php +++ b/apps/dav/lib/carddav/carddavbackend.php @@ -392,7 +392,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { } /** - * Returns a specfic card. + * Returns a specific card. * * The same set of properties must be returned as with getCards. The only * exception is that 'carddata' is absolutely required. diff --git a/apps/dav/lib/connector/publicauth.php b/apps/dav/lib/connector/publicauth.php index f069a214fe8..0d75a4db493 100644 --- a/apps/dav/lib/connector/publicauth.php +++ b/apps/dav/lib/connector/publicauth.php @@ -26,6 +26,9 @@ namespace OCA\DAV\Connector; +use OCP\IConfig; +use OCP\IRequest; + class PublicAuth extends \Sabre\DAV\Auth\Backend\AbstractBasic { /** @@ -36,10 +39,18 @@ class PublicAuth extends \Sabre\DAV\Auth\Backend\AbstractBasic { private $share; /** + * @var IRequest + */ + private $request; + + /** * @param \OCP\IConfig $config + * @param IRequest $request */ - public function __construct($config) { + public function __construct(IConfig $config, + IRequest $request) { $this->config = $config; + $this->request = $request; } /** @@ -52,6 +63,7 @@ class PublicAuth extends \Sabre\DAV\Auth\Backend\AbstractBasic { * @param string $password * * @return bool + * @throws \Sabre\DAV\Exception\NotAuthenticated */ protected function validateUserPass($username, $password) { $linkItem = \OCP\Share::getShareByToken($username, false); @@ -92,6 +104,12 @@ class PublicAuth extends \Sabre\DAV\Auth\Backend\AbstractBasic { && \OC::$server->getSession()->get('public_link_authenticated') === $linkItem['id']) { return true; } else { + if (in_array('XMLHttpRequest', explode(',', $this->request->getHeader('X-Requested-With')))) { + // do not re-authenticate over ajax, use dummy auth name to prevent browser popup + http_response_code(401); + header('WWW-Authenticate', 'DummyBasic real="ownCloud"'); + throw new \Sabre\DAV\Exception\NotAuthenticated('Cannot authenticate over ajax calls'); + } return false; } } else if ($linkItem['share_type'] == \OCP\Share::SHARE_TYPE_REMOTE) { diff --git a/apps/dav/lib/connector/sabre/filesplugin.php b/apps/dav/lib/connector/sabre/filesplugin.php index fb2af554c68..8b54291793a 100644 --- a/apps/dav/lib/connector/sabre/filesplugin.php +++ b/apps/dav/lib/connector/sabre/filesplugin.php @@ -45,6 +45,7 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin { const FILEID_PROPERTYNAME = '{http://owncloud.org/ns}id'; const INTERNAL_FILEID_PROPERTYNAME = '{http://owncloud.org/ns}fileid'; const PERMISSIONS_PROPERTYNAME = '{http://owncloud.org/ns}permissions'; + const SHARE_PERMISSIONS_PROPERTYNAME = '{http://owncloud.org/ns}share-permissions'; const DOWNLOADURL_PROPERTYNAME = '{http://owncloud.org/ns}downloadURL'; const SIZE_PROPERTYNAME = '{http://owncloud.org/ns}size'; const GETETAG_PROPERTYNAME = '{DAV:}getetag'; @@ -116,6 +117,7 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin { $server->protectedProperties[] = self::FILEID_PROPERTYNAME; $server->protectedProperties[] = self::INTERNAL_FILEID_PROPERTYNAME; $server->protectedProperties[] = self::PERMISSIONS_PROPERTYNAME; + $server->protectedProperties[] = self::SHARE_PERMISSIONS_PROPERTYNAME; $server->protectedProperties[] = self::SIZE_PROPERTYNAME; $server->protectedProperties[] = self::DOWNLOADURL_PROPERTYNAME; $server->protectedProperties[] = self::OWNER_ID_PROPERTYNAME; @@ -245,6 +247,10 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin { return $perms; }); + $propFind->handle(self::SHARE_PERMISSIONS_PROPERTYNAME, function() use ($node) { + return $node->getSharePermissions(); + }); + $propFind->handle(self::GETETAG_PROPERTYNAME, function() use ($node) { return $node->getETag(); }); diff --git a/apps/dav/lib/connector/sabre/lockplugin.php b/apps/dav/lib/connector/sabre/lockplugin.php index ff4e1dc01bb..66da39a57c8 100644 --- a/apps/dav/lib/connector/sabre/lockplugin.php +++ b/apps/dav/lib/connector/sabre/lockplugin.php @@ -49,7 +49,7 @@ class LockPlugin extends ServerPlugin { } public function getLock(RequestInterface $request) { - // we cant listen on 'beforeMethod:PUT' due to order of operations with setting up the tree + // we can't listen on 'beforeMethod:PUT' due to order of operations with setting up the tree // so instead we limit ourselves to the PUT method manually if ($request->getMethod() !== 'PUT' || isset($_SERVER['HTTP_OC_CHUNKED'])) { return; diff --git a/apps/dav/lib/connector/sabre/node.php b/apps/dav/lib/connector/sabre/node.php index 95a5f0a8749..9867fe66cd3 100644 --- a/apps/dav/lib/connector/sabre/node.php +++ b/apps/dav/lib/connector/sabre/node.php @@ -30,6 +30,7 @@ namespace OCA\DAV\Connector\Sabre; +use OC\Files\Mount\MoveableMount; use OCA\DAV\Connector\Sabre\Exception\InvalidPath; @@ -214,6 +215,55 @@ abstract class Node implements \Sabre\DAV\INode { } /** + * @return int + */ + public function getSharePermissions() { + $storage = $this->info->getStorage(); + + $path = $this->info->getInternalPath(); + + if ($storage->instanceOfStorage('\OC\Files\Storage\Shared')) { + /** @var \OC\Files\Storage\Shared $storage */ + $permissions = (int)$storage->getShare()['permissions']; + } else { + $permissions = $storage->getPermissions($path); + } + + /* + * We can always share non moveable mount points with DELETE and UPDATE + * Eventually we need to do this properly + */ + $mountpoint = $this->info->getMountPoint(); + if (!($mountpoint instanceof MoveableMount)) { + $mountpointpath = $mountpoint->getMountPoint(); + if (substr($mountpointpath, -1) === '/') { + $mountpointpath = substr($mountpointpath, 0, -1); + } + + if ($mountpointpath === $this->info->getPath()) { + $permissions |= \OCP\Constants::PERMISSION_DELETE | \OCP\Constants::PERMISSION_UPDATE; + } + } + + /* + * Without sharing permissions there are also no other permissions + */ + if (!($permissions & \OCP\Constants::PERMISSION_SHARE) || + !($permissions & \OCP\Constants::PERMISSION_READ)) { + return 0; + } + + /* + * Files can't have create or delete permissions + */ + if ($this->info->getType() === \OCP\Files\FileInfo::TYPE_FILE) { + $permissions &= ~(\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_DELETE); + } + + return $permissions; + } + + /** * @return string */ public function getDavPermissions() { diff --git a/apps/dav/tests/unit/connector/sabre/filesplugin.php b/apps/dav/tests/unit/connector/sabre/filesplugin.php index 0a790ec6fc9..e88066a12da 100644 --- a/apps/dav/tests/unit/connector/sabre/filesplugin.php +++ b/apps/dav/tests/unit/connector/sabre/filesplugin.php @@ -366,7 +366,7 @@ class FilesPlugin extends \Test\TestCase { * |-text.txt * |-test.txt * - * FolderA is an incomming shared folder and there are no delete permissions. + * FolderA is an incoming shared folder and there are no delete permissions. * Thus moving /FolderA/test.txt to /test.txt should fail already on that check * * @expectedException \Sabre\DAV\Exception\Forbidden diff --git a/apps/dav/tests/unit/connector/sabre/node.php b/apps/dav/tests/unit/connector/sabre/node.php index 8c92c2f063c..cde8e746dc3 100644 --- a/apps/dav/tests/unit/connector/sabre/node.php +++ b/apps/dav/tests/unit/connector/sabre/node.php @@ -63,4 +63,68 @@ class Node extends \Test\TestCase { $node = new \OCA\DAV\Connector\Sabre\File($view, $info); $this->assertEquals($expected, $node->getDavPermissions()); } + + public function sharePermissionsProvider() { + return [ + [\OCP\Files\FileInfo::TYPE_FILE, 1, 0], + [\OCP\Files\FileInfo::TYPE_FILE, 3, 0], + [\OCP\Files\FileInfo::TYPE_FILE, 5, 0], + [\OCP\Files\FileInfo::TYPE_FILE, 7, 0], + [\OCP\Files\FileInfo::TYPE_FILE, 9, 0], + [\OCP\Files\FileInfo::TYPE_FILE, 11, 0], + [\OCP\Files\FileInfo::TYPE_FILE, 13, 0], + [\OCP\Files\FileInfo::TYPE_FILE, 15, 0], + [\OCP\Files\FileInfo::TYPE_FILE, 17, 17], + [\OCP\Files\FileInfo::TYPE_FILE, 19, 19], + [\OCP\Files\FileInfo::TYPE_FILE, 21, 17], + [\OCP\Files\FileInfo::TYPE_FILE, 23, 19], + [\OCP\Files\FileInfo::TYPE_FILE, 25, 17], + [\OCP\Files\FileInfo::TYPE_FILE, 27, 19], + [\OCP\Files\FileInfo::TYPE_FILE, 29, 17], + [\OCP\Files\FileInfo::TYPE_FILE, 30, 0], + [\OCP\Files\FileInfo::TYPE_FILE, 31, 19], + [\OCP\Files\FileInfo::TYPE_FOLDER, 1, 0], + [\OCP\Files\FileInfo::TYPE_FOLDER, 3, 0], + [\OCP\Files\FileInfo::TYPE_FOLDER, 5, 0], + [\OCP\Files\FileInfo::TYPE_FOLDER, 7, 0], + [\OCP\Files\FileInfo::TYPE_FOLDER, 9, 0], + [\OCP\Files\FileInfo::TYPE_FOLDER, 11, 0], + [\OCP\Files\FileInfo::TYPE_FOLDER, 13, 0], + [\OCP\Files\FileInfo::TYPE_FOLDER, 15, 0], + [\OCP\Files\FileInfo::TYPE_FOLDER, 17, 17], + [\OCP\Files\FileInfo::TYPE_FOLDER, 19, 19], + [\OCP\Files\FileInfo::TYPE_FOLDER, 21, 21], + [\OCP\Files\FileInfo::TYPE_FOLDER, 23, 23], + [\OCP\Files\FileInfo::TYPE_FOLDER, 25, 25], + [\OCP\Files\FileInfo::TYPE_FOLDER, 27, 27], + [\OCP\Files\FileInfo::TYPE_FOLDER, 29, 29], + [\OCP\Files\FileInfo::TYPE_FOLDER, 30, 0], + [\OCP\Files\FileInfo::TYPE_FOLDER, 31, 31], + ]; + } + + /** + * @dataProvider sharePermissionsProvider + */ + public function testSharePermissions($type, $permissions, $expected) { + $storage = $this->getMock('\OCP\Files\Storage'); + $storage->method('getPermissions')->willReturn($permissions); + + $mountpoint = $this->getMock('\OCP\Files\Mount\IMountPoint'); + $mountpoint->method('getMountPoint')->willReturn('myPath'); + + $info = $this->getMockBuilder('\OC\Files\FileInfo') + ->disableOriginalConstructor() + ->setMethods(['getStorage', 'getType', 'getMountPoint']) + ->getMock(); + + $info->method('getStorage')->willReturn($storage); + $info->method('getType')->willReturn($type); + $info->method('getMountPoint')->willReturn($mountpoint); + + $view = $this->getMock('\OC\Files\View'); + + $node = new \OCA\DAV\Connector\Sabre\File($view, $info); + $this->assertEquals($expected, $node->getSharePermissions()); + } } diff --git a/apps/encryption/l10n/sl.js b/apps/encryption/l10n/sl.js index 12514c29bba..bf051fc446e 100644 --- a/apps/encryption/l10n/sl.js +++ b/apps/encryption/l10n/sl.js @@ -23,11 +23,14 @@ OC.L10N.register( "Private key password successfully updated." : "Zasebni ključ za geslo je uspešno posodobljen.", "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ni ustreznega osebnega ključa za program za šifriranje. Posodobite osebni ključ za dostop do šifriranih datotek med nastavitvami.", "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Program za šifriranje je omogočen, vendar ni začet. Odjavite se in nato ponovno prijavite.", + "Encryption App is enabled and ready" : "Program za šifriranje ne omogočen in pripravljen za delo", "Bad Signature" : "Neustrezen podpis", "Missing Signature" : "Manjkajoč podpis", + "one-time password for server-side-encryption" : "enkratno geslo za šifriranje na strani strežnika", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Te datoteke ni mogoče šifrirati, ker je to najverjetneje datoteka v souporabi. Prosite lastnika datoteke, da jo da ponovno v souporabo.", "The share will expire on %s." : "Povezava souporabe bo potekla %s.", "Cheers!" : "Na zdravje!", + "Encrypt the home storage" : "Šifriraj domačo shrambo", "Enable recovery key" : "Omogoči obnovitev gesla", "Disable recovery key" : "Onemogoči obnovitev gesla", "Recovery key password" : "Ključ za obnovitev gesla", @@ -37,6 +40,7 @@ OC.L10N.register( "New recovery key password" : "Novi ključ za obnovitev gesla", "Repeat new recovery key password" : "Ponovi novi ključ za obnovitev gesla", "Change Password" : "Spremeni geslo", + "ownCloud basic encryption module" : "Osnovno šifriranje z ownCloud", "Your private key password no longer matches your log-in password." : "Zasebno geslo ni več skladno s prijavnim geslom.", "Set your old private key password to your current log-in password:" : "Nastavite star zasebni ključ na trenutno prijavno geslo:", " If you don't remember your old password you can ask your administrator to recover your files." : "Če ste pozabili svoje geslo, lahko vaše datoteke obnovi le skrbnik sistema.", diff --git a/apps/encryption/l10n/sl.json b/apps/encryption/l10n/sl.json index c6811b7240f..14dc8f66144 100644 --- a/apps/encryption/l10n/sl.json +++ b/apps/encryption/l10n/sl.json @@ -21,11 +21,14 @@ "Private key password successfully updated." : "Zasebni ključ za geslo je uspešno posodobljen.", "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ni ustreznega osebnega ključa za program za šifriranje. Posodobite osebni ključ za dostop do šifriranih datotek med nastavitvami.", "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Program za šifriranje je omogočen, vendar ni začet. Odjavite se in nato ponovno prijavite.", + "Encryption App is enabled and ready" : "Program za šifriranje ne omogočen in pripravljen za delo", "Bad Signature" : "Neustrezen podpis", "Missing Signature" : "Manjkajoč podpis", + "one-time password for server-side-encryption" : "enkratno geslo za šifriranje na strani strežnika", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Te datoteke ni mogoče šifrirati, ker je to najverjetneje datoteka v souporabi. Prosite lastnika datoteke, da jo da ponovno v souporabo.", "The share will expire on %s." : "Povezava souporabe bo potekla %s.", "Cheers!" : "Na zdravje!", + "Encrypt the home storage" : "Šifriraj domačo shrambo", "Enable recovery key" : "Omogoči obnovitev gesla", "Disable recovery key" : "Onemogoči obnovitev gesla", "Recovery key password" : "Ključ za obnovitev gesla", @@ -35,6 +38,7 @@ "New recovery key password" : "Novi ključ za obnovitev gesla", "Repeat new recovery key password" : "Ponovi novi ključ za obnovitev gesla", "Change Password" : "Spremeni geslo", + "ownCloud basic encryption module" : "Osnovno šifriranje z ownCloud", "Your private key password no longer matches your log-in password." : "Zasebno geslo ni več skladno s prijavnim geslom.", "Set your old private key password to your current log-in password:" : "Nastavite star zasebni ključ na trenutno prijavno geslo:", " If you don't remember your old password you can ask your administrator to recover your files." : "Če ste pozabili svoje geslo, lahko vaše datoteke obnovi le skrbnik sistema.", diff --git a/apps/federatedfilesharing/l10n/tr.js b/apps/federatedfilesharing/l10n/tr.js index 123271c5e6b..c0e9f843271 100644 --- a/apps/federatedfilesharing/l10n/tr.js +++ b/apps/federatedfilesharing/l10n/tr.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Invalid Federated Cloud ID" : "Geçersiz Birleşmiş Bulut Kimliği", "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", + "Not allowed to create a federated share with the same user" : "Aynı kullanıcı ile bir birleşmiş paylaşım oluşturulamaz", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s paylaşımı başarısız. %s bulunamadı veya sunucu şu anda ulaşılamıyor olabilir." }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/federatedfilesharing/l10n/tr.json b/apps/federatedfilesharing/l10n/tr.json index c81393bc30d..dc9bd7a8f46 100644 --- a/apps/federatedfilesharing/l10n/tr.json +++ b/apps/federatedfilesharing/l10n/tr.json @@ -1,6 +1,7 @@ { "translations": { "Invalid Federated Cloud ID" : "Geçersiz Birleşmiş Bulut Kimliği", "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", + "Not allowed to create a federated share with the same user" : "Aynı kullanıcı ile bir birleşmiş paylaşım oluşturulamaz", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s paylaşımı başarısız. %s bulunamadı veya sunucu şu anda ulaşılamıyor olabilir." },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/tr.js b/apps/federation/l10n/tr.js index af299744a92..71e76bdec98 100644 --- a/apps/federation/l10n/tr.js +++ b/apps/federation/l10n/tr.js @@ -5,8 +5,11 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "Sunucu zaten güvenilen sunucu listesine eklenmiş.", "No ownCloud server found" : "Hiçbir ownCloud sunucusu bulunamadı", "Could not add server" : "Sunucu eklenemedi", + "Federation" : "Birleşim", + "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." : "ownCloud Birleşimi, kullanıcı dizin değişimi yapmak için diğer güvenilir ownCloud'larla bağlanmanızı sağlar. Örneğin, birleşmiş paylaşım için hatici kullanıcıları otomatik doldurmak için kullanılacaktır.", + "Add server automatically once a federated share was created successfully" : "Birleşmiş bir paylaşım başarıyla eklenildiğinde sunucuyu otomatik olarak ekle", "Trusted ownCloud Servers" : "Güvenilen ownCloud Sunucuları", - "+ Add ownCloud server" : "ownCloud sunucusu ekle", + "+ Add ownCloud server" : "+ ownCloud sunucusu ekle", "ownCloud Server" : "ownCloud Sunucusu" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/federation/l10n/tr.json b/apps/federation/l10n/tr.json index 2ed13eca58e..68f7b38218b 100644 --- a/apps/federation/l10n/tr.json +++ b/apps/federation/l10n/tr.json @@ -3,8 +3,11 @@ "Server is already in the list of trusted servers." : "Sunucu zaten güvenilen sunucu listesine eklenmiş.", "No ownCloud server found" : "Hiçbir ownCloud sunucusu bulunamadı", "Could not add server" : "Sunucu eklenemedi", + "Federation" : "Birleşim", + "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." : "ownCloud Birleşimi, kullanıcı dizin değişimi yapmak için diğer güvenilir ownCloud'larla bağlanmanızı sağlar. Örneğin, birleşmiş paylaşım için hatici kullanıcıları otomatik doldurmak için kullanılacaktır.", + "Add server automatically once a federated share was created successfully" : "Birleşmiş bir paylaşım başarıyla eklenildiğinde sunucuyu otomatik olarak ekle", "Trusted ownCloud Servers" : "Güvenilen ownCloud Sunucuları", - "+ Add ownCloud server" : "ownCloud sunucusu ekle", + "+ Add ownCloud server" : "+ ownCloud sunucusu ekle", "ownCloud Server" : "ownCloud Sunucusu" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 842ec4aac73..0c4d41b65f9 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -2280,12 +2280,14 @@ this.$el.find('#filestable thead th').addClass('hidden'); this.$el.find('#emptycontent').addClass('hidden'); $('#searchresults').addClass('filter-empty'); + $('#searchresults .emptycontent').addClass('emptycontent-search'); if ( $('#searchresults').length === 0 || $('#searchresults').hasClass('hidden') ) { this.$el.find('.nofilterresults').removeClass('hidden'). find('p').text(t('files', "No entries in this folder match '{filter}'", {filter:this._filter}, null, {'escape': false})); } } else { $('#searchresults').removeClass('filter-empty'); + $('#searchresults .emptycontent').removeClass('emptycontent-search'); this.$el.find('#filestable thead th').toggleClass('hidden', this.isEmpty); if (!this.$el.find('.mask').exists()) { this.$el.find('#emptycontent').toggleClass('hidden', !this.isEmpty); diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js index 79f0e955d28..51114b98999 100644 --- a/apps/files/l10n/es.js +++ b/apps/files/l10n/es.js @@ -106,6 +106,7 @@ OC.L10N.register( "Missing permissions to edit from here." : "Faltan permisos para poder editar desde aquí.", "Settings" : "Ajustes", "WebDAV" : "WebDAV", + "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Introduce esta dirección <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\"> en el cliente de ownCloud para acceder a tus archivos a través de él</a>", "Cancel upload" : "Cancelar la subida", "No files in here" : "Aquí no hay archivos", "Upload some content or sync with your devices!" : "Suba contenidos o sincronice sus dispositivos.", diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json index 4281aa2ca2f..eee5fcfced9 100644 --- a/apps/files/l10n/es.json +++ b/apps/files/l10n/es.json @@ -104,6 +104,7 @@ "Missing permissions to edit from here." : "Faltan permisos para poder editar desde aquí.", "Settings" : "Ajustes", "WebDAV" : "WebDAV", + "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Introduce esta dirección <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\"> en el cliente de ownCloud para acceder a tus archivos a través de él</a>", "Cancel upload" : "Cancelar la subida", "No files in here" : "Aquí no hay archivos", "Upload some content or sync with your devices!" : "Suba contenidos o sincronice sus dispositivos.", diff --git a/apps/files/l10n/nl.js b/apps/files/l10n/nl.js index bcf2209103d..45f435806bc 100644 --- a/apps/files/l10n/nl.js +++ b/apps/files/l10n/nl.js @@ -105,6 +105,7 @@ OC.L10N.register( "Missing permissions to edit from here." : "Ontbrekende rechten om vanaf hier te bewerken.", "Settings" : "Instellingen", "WebDAV" : "WebDAV", + "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Gebruik deze link <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">om uw bestanden via WebDAV te benaderen</a>", "Cancel upload" : "Upload afbreken", "No files in here" : "Hier geen bestanden", "Upload some content or sync with your devices!" : "Upload bestanden of synchroniseer met uw apparaten!", diff --git a/apps/files/l10n/nl.json b/apps/files/l10n/nl.json index 615bdce44cd..1c0990e3394 100644 --- a/apps/files/l10n/nl.json +++ b/apps/files/l10n/nl.json @@ -103,6 +103,7 @@ "Missing permissions to edit from here." : "Ontbrekende rechten om vanaf hier te bewerken.", "Settings" : "Instellingen", "WebDAV" : "WebDAV", + "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Gebruik deze link <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">om uw bestanden via WebDAV te benaderen</a>", "Cancel upload" : "Upload afbreken", "No files in here" : "Hier geen bestanden", "Upload some content or sync with your devices!" : "Upload bestanden of synchroniseer met uw apparaten!", diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js index d05c51f05ce..d5b7a5bfe36 100644 --- a/apps/files/l10n/tr.js +++ b/apps/files/l10n/tr.js @@ -28,6 +28,7 @@ OC.L10N.register( "Unable to upload {filename} as it is a directory or has 0 bytes" : "{filename} bir dizin veya 0 bayt olduğundan yüklenemedi", "Total file size {size1} exceeds upload limit {size2}" : "Toplam dosya boyutu {size1}, {size2} gönderme sınırını aşıyor", "Not enough free space, you are uploading {size1} but only {size2} is left" : "Yeterince boş alan yok. Gönderdiğiniz boyut {size1} ancak {size2} alan mevcut", + "Error uploading file \"{fileName}\": {message}" : "\"{fileName}\" dosyası yüklenirken hata: {message}", "Could not get result from server." : "Sunucudan sonuç alınamadı.", "File upload is in progress. Leaving the page now will cancel the upload." : "Dosya yükleme işlemi sürüyor. Şu anda sayfadan ayrılmak yükleme işlemini iptal edecek.", "Actions" : "Eylemler", @@ -105,6 +106,7 @@ OC.L10N.register( "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\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Dosyalarınıza WebDAV ile erişmek için <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">bu adresi kullanın</a>", "Cancel upload" : "Yüklemeyi iptal et", "No files in here" : "Burada hiç dosya yok", "Upload some content or sync with your devices!" : "Bir şeyler yükleyin veya aygıtlarınızla eşitleyin!", diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json index 1755166faff..1be304f7c3b 100644 --- a/apps/files/l10n/tr.json +++ b/apps/files/l10n/tr.json @@ -26,6 +26,7 @@ "Unable to upload {filename} as it is a directory or has 0 bytes" : "{filename} bir dizin veya 0 bayt olduğundan yüklenemedi", "Total file size {size1} exceeds upload limit {size2}" : "Toplam dosya boyutu {size1}, {size2} gönderme sınırını aşıyor", "Not enough free space, you are uploading {size1} but only {size2} is left" : "Yeterince boş alan yok. Gönderdiğiniz boyut {size1} ancak {size2} alan mevcut", + "Error uploading file \"{fileName}\": {message}" : "\"{fileName}\" dosyası yüklenirken hata: {message}", "Could not get result from server." : "Sunucudan sonuç alınamadı.", "File upload is in progress. Leaving the page now will cancel the upload." : "Dosya yükleme işlemi sürüyor. Şu anda sayfadan ayrılmak yükleme işlemini iptal edecek.", "Actions" : "Eylemler", @@ -103,6 +104,7 @@ "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\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Dosyalarınıza WebDAV ile erişmek için <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">bu adresi kullanın</a>", "Cancel upload" : "Yüklemeyi iptal et", "No files in here" : "Burada hiç dosya yok", "Upload some content or sync with your devices!" : "Bir şeyler yükleyin veya aygıtlarınızla eşitleyin!", diff --git a/apps/files/l10n/zh_TW.js b/apps/files/l10n/zh_TW.js index 9ae73b2195d..3d51a9a5133 100644 --- a/apps/files/l10n/zh_TW.js +++ b/apps/files/l10n/zh_TW.js @@ -28,6 +28,7 @@ OC.L10N.register( "Unable to upload {filename} as it is a directory or has 0 bytes" : "因為 {filename} 是個目錄或是大小為零,所以無法上傳", "Total file size {size1} exceeds upload limit {size2}" : "檔案大小總和 {size1} 超過上傳限制 {size2}", "Not enough free space, you are uploading {size1} but only {size2} is left" : "可用空間不足,你正要上傳 {size1} 可是只剩下 {size2}", + "Error uploading file \"{fileName}\": {message}" : "上傳檔案 \"{fileName}\" 發生錯誤:{message}", "Could not get result from server." : "無法從伺服器取回結果", "File upload is in progress. Leaving the page now will cancel the upload." : "檔案上傳中,離開此頁面將會取消上傳", "Actions" : "動作", @@ -105,6 +106,7 @@ OC.L10N.register( "Missing permissions to edit from here." : "您沒有在此編輯的權限", "Settings" : "設定", "WebDAV" : "WebDAV", + "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "使用這個位址來<a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">使用 WebDAV 存取檔案</a>", "Cancel upload" : "取消上傳", "No files in here" : "沒有任何檔案", "Upload some content or sync with your devices!" : "在您的裝置中同步或上傳一些內容", diff --git a/apps/files/l10n/zh_TW.json b/apps/files/l10n/zh_TW.json index 1187ffa9c24..0c70aab817c 100644 --- a/apps/files/l10n/zh_TW.json +++ b/apps/files/l10n/zh_TW.json @@ -26,6 +26,7 @@ "Unable to upload {filename} as it is a directory or has 0 bytes" : "因為 {filename} 是個目錄或是大小為零,所以無法上傳", "Total file size {size1} exceeds upload limit {size2}" : "檔案大小總和 {size1} 超過上傳限制 {size2}", "Not enough free space, you are uploading {size1} but only {size2} is left" : "可用空間不足,你正要上傳 {size1} 可是只剩下 {size2}", + "Error uploading file \"{fileName}\": {message}" : "上傳檔案 \"{fileName}\" 發生錯誤:{message}", "Could not get result from server." : "無法從伺服器取回結果", "File upload is in progress. Leaving the page now will cancel the upload." : "檔案上傳中,離開此頁面將會取消上傳", "Actions" : "動作", @@ -103,6 +104,7 @@ "Missing permissions to edit from here." : "您沒有在此編輯的權限", "Settings" : "設定", "WebDAV" : "WebDAV", + "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "使用這個位址來<a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">使用 WebDAV 存取檔案</a>", "Cancel upload" : "取消上傳", "No files in here" : "沒有任何檔案", "Upload some content or sync with your devices!" : "在您的裝置中同步或上傳一些內容", diff --git a/apps/files_external/css/settings.css b/apps/files_external/css/settings.css index c96c0cb97b9..9338b8d3ee7 100644 --- a/apps/files_external/css/settings.css +++ b/apps/files_external/css/settings.css @@ -12,8 +12,8 @@ } td.mountPoint, td.backend { width:160px; } -#externalStorage td>img.action { visibility:hidden; padding-top:7px; } -#externalStorage tr:hover>td>img.action { visibility:visible; cursor:pointer; } +#externalStorage td>img { padding-top:7px; opacity: 0.5; } +#externalStorage td>img:hover { padding-top:7px; cursor:pointer; opacity: 1; } #addMountPoint>td { border:none; } #addMountPoint>td.applicable { visibility:hidden; } #addMountPoint>td.hidden { visibility:hidden; } diff --git a/apps/files_external/js/statusmanager.js b/apps/files_external/js/statusmanager.js index 33d2ea104be..118ec17d246 100644 --- a/apps/files_external/js/statusmanager.js +++ b/apps/files_external/js/statusmanager.js @@ -497,7 +497,7 @@ OCA.External.StatusManager.Utils = { if (folder instanceof $) { trFolder = folder; } else { - // cant use here FileList.findFileEl(OCA.External.StatusManager.Utils.jqSelEscape(folder)); return incorrect instance of filelist + // can't use here FileList.findFileEl(OCA.External.StatusManager.Utils.jqSelEscape(folder)); return incorrect instance of filelist trFolder = $('#fileList tr[data-file=\"' + OCA.External.StatusManager.Utils.jqSelEscape(folder) + '\"]'); } trFolder.removeClass('externalErroredRow').removeClass('externalDisabledRow'); diff --git a/apps/files_external/l10n/es.js b/apps/files_external/l10n/es.js index 648c91e3164..f46eb9c651e 100644 --- a/apps/files_external/l10n/es.js +++ b/apps/files_external/l10n/es.js @@ -29,7 +29,7 @@ OC.L10N.register( "Error generating key pair" : "Error al generar el par de claves", "Enable encryption" : "Habilitar cifrado", "Enable previews" : "Habilitar previsualizaciones", - "Enable sharing" : "Habilitar comparto", + "Enable sharing" : "Habilitar el uso compartido", "Check for changes" : "Comprobar si hay cambios", "Never" : "Nunca", "Once every direct access" : "Una vez cada acceso directo", @@ -69,7 +69,7 @@ OC.L10N.register( "Rackspace" : "Espacio de Rack", "API key" : "Clave API", "Username and password" : "Nombre de usuario y contraseña", - "Log-in credentials, save in session" : "Iniciar credenciales, guardar en la sesión", + "Log-in credentials, save in session" : "Credenciales de login, guardar en la sesión", "RSA public key" : "Clave pública RSA", "Public key" : "Clave pública", "Amazon S3" : "Amazon S3", diff --git a/apps/files_external/l10n/es.json b/apps/files_external/l10n/es.json index c9a07f20d13..3dfc2736ec0 100644 --- a/apps/files_external/l10n/es.json +++ b/apps/files_external/l10n/es.json @@ -27,7 +27,7 @@ "Error generating key pair" : "Error al generar el par de claves", "Enable encryption" : "Habilitar cifrado", "Enable previews" : "Habilitar previsualizaciones", - "Enable sharing" : "Habilitar comparto", + "Enable sharing" : "Habilitar el uso compartido", "Check for changes" : "Comprobar si hay cambios", "Never" : "Nunca", "Once every direct access" : "Una vez cada acceso directo", @@ -67,7 +67,7 @@ "Rackspace" : "Espacio de Rack", "API key" : "Clave API", "Username and password" : "Nombre de usuario y contraseña", - "Log-in credentials, save in session" : "Iniciar credenciales, guardar en la sesión", + "Log-in credentials, save in session" : "Credenciales de login, guardar en la sesión", "RSA public key" : "Clave pública RSA", "Public key" : "Clave pública", "Amazon S3" : "Amazon S3", diff --git a/apps/files_external/l10n/mk.js b/apps/files_external/l10n/mk.js index 70d9b5a755f..0f0677c2d55 100644 --- a/apps/files_external/l10n/mk.js +++ b/apps/files_external/l10n/mk.js @@ -4,6 +4,7 @@ OC.L10N.register( "Personal" : "Лично", "Grant access" : "Дозволи пристап", "Access granted" : "Пристапот е дозволен", + "Enable encryption" : "Овозможи енкрипција", "Saved" : "Снимено", "Username" : "Корисничко име", "Password" : "Лозинка", diff --git a/apps/files_external/l10n/mk.json b/apps/files_external/l10n/mk.json index d97c5b872ba..b6437b19640 100644 --- a/apps/files_external/l10n/mk.json +++ b/apps/files_external/l10n/mk.json @@ -2,6 +2,7 @@ "Personal" : "Лично", "Grant access" : "Дозволи пристап", "Access granted" : "Пристапот е дозволен", + "Enable encryption" : "Овозможи енкрипција", "Saved" : "Снимено", "Username" : "Корисничко име", "Password" : "Лозинка", diff --git a/apps/files_external/l10n/tr.js b/apps/files_external/l10n/tr.js index dfbbef593ae..14e86c5868f 100644 --- a/apps/files_external/l10n/tr.js +++ b/apps/files_external/l10n/tr.js @@ -43,8 +43,15 @@ OC.L10N.register( "Couldn't get the list of external mount points: {type}" : "Harici bağlama noktalarının listesi alınamadı: {type}", "There was an error with message: " : "Şu mesajla bir hata oluştu:", "External mount error" : "Harici bağlama hatası", + "external-storage" : "harici-depolama", + "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows ağ sürücüsü bağlama nokta listesi alınamadı: sunucudan boş yanıt", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Yapılandırılmış harici bağlama noktalarından bazıları bağlı değil. Lütfen daha fazla bilgi için kırmızı satırlara tıklayın", + "Please enter the credentials for the {mount} mount" : "{mount} bağlaması için kimlik bilgilerini girin", "Username" : "Kullanıcı Adı", "Password" : "Parola", + "Credentials saved" : "Kimlik bilgileri kaydedildi", + "Credentials saving failed" : "Kimlik bilgileri kaydedilemedi", + "Credentials required" : "Kimlik bilgileri gerekli", "Save" : "Kaydet", "Access key" : "Erişim anahtarı", "Secret key" : "Gizli anahtar", @@ -62,6 +69,7 @@ OC.L10N.register( "Rackspace" : "Rackspace", "API key" : "API anahtarı", "Username and password" : "Kullanıcı adı ve parola", + "Log-in credentials, save in session" : "Oturum kimlik bilgileri, oturumda kaydet", "RSA public key" : "RSA ortak anahtarı", "Public key" : "Ortak anahtar", "Amazon S3" : "Amazon S3", diff --git a/apps/files_external/l10n/tr.json b/apps/files_external/l10n/tr.json index 2b1296e3c6f..cc015c380fe 100644 --- a/apps/files_external/l10n/tr.json +++ b/apps/files_external/l10n/tr.json @@ -41,8 +41,15 @@ "Couldn't get the list of external mount points: {type}" : "Harici bağlama noktalarının listesi alınamadı: {type}", "There was an error with message: " : "Şu mesajla bir hata oluştu:", "External mount error" : "Harici bağlama hatası", + "external-storage" : "harici-depolama", + "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows ağ sürücüsü bağlama nokta listesi alınamadı: sunucudan boş yanıt", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Yapılandırılmış harici bağlama noktalarından bazıları bağlı değil. Lütfen daha fazla bilgi için kırmızı satırlara tıklayın", + "Please enter the credentials for the {mount} mount" : "{mount} bağlaması için kimlik bilgilerini girin", "Username" : "Kullanıcı Adı", "Password" : "Parola", + "Credentials saved" : "Kimlik bilgileri kaydedildi", + "Credentials saving failed" : "Kimlik bilgileri kaydedilemedi", + "Credentials required" : "Kimlik bilgileri gerekli", "Save" : "Kaydet", "Access key" : "Erişim anahtarı", "Secret key" : "Gizli anahtar", @@ -60,6 +67,7 @@ "Rackspace" : "Rackspace", "API key" : "API anahtarı", "Username and password" : "Kullanıcı adı ve parola", + "Log-in credentials, save in session" : "Oturum kimlik bilgileri, oturumda kaydet", "RSA public key" : "RSA ortak anahtarı", "Public key" : "Ortak anahtar", "Amazon S3" : "Amazon S3", diff --git a/apps/files_external/lib/dropbox.php b/apps/files_external/lib/dropbox.php index f59b5a460e1..8381ccbae59 100644 --- a/apps/files_external/lib/dropbox.php +++ b/apps/files_external/lib/dropbox.php @@ -29,7 +29,9 @@ namespace OC\Files\Storage; +use GuzzleHttp\Exception\RequestException; use Icewind\Streams\IteratorDirectory; +use Icewind\Streams\RetryWrapper; require_once __DIR__ . '/../3rdparty/Dropbox/autoload.php'; @@ -257,10 +259,9 @@ class Dropbox extends \OC\Files\Storage\Common { $client = \OC::$server->getHTTPClientService()->newClient(); try { - $tmpFile = \OC::$server->getTempManager()->getTemporaryFile(); - $client->get($downloadUrl, [ + $response = $client->get($downloadUrl, [ 'headers' => $headers, - 'save_to' => $tmpFile, + 'stream' => true, ]); } catch (RequestException $e) { if (!is_null($e->getResponse())) { @@ -274,7 +275,8 @@ class Dropbox extends \OC\Files\Storage\Common { } } - return fopen($tmpFile, 'r'); + $handle = $response->getBody(); + return RetryWrapper::wrap($handle); } catch (\Exception $exception) { \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR); return false; diff --git a/apps/files_external/lib/ftp.php b/apps/files_external/lib/ftp.php index 338e2c14fa4..7249aeceb5d 100644 --- a/apps/files_external/lib/ftp.php +++ b/apps/files_external/lib/ftp.php @@ -78,7 +78,7 @@ class FTP extends \OC\Files\Storage\StreamWrapper{ if ($this->secure) { $url.='s'; } - $url.='://'.$this->user.':'.$this->password.'@'.$this->host.$this->root.$path; + $url.='://'.urlencode($this->user).':'.urlencode($this->password).'@'.$this->host.$this->root.$path; return $url; } diff --git a/apps/files_external/lib/google.php b/apps/files_external/lib/google.php index b79f42d1e00..62d264dfeef 100644 --- a/apps/files_external/lib/google.php +++ b/apps/files_external/lib/google.php @@ -35,6 +35,7 @@ namespace OC\Files\Storage; use GuzzleHttp\Exception\RequestException; use Icewind\Streams\IteratorDirectory; +use Icewind\Streams\RetryWrapper; set_include_path(get_include_path().PATH_SEPARATOR. \OC_App::getAppPath('files_external').'/3rdparty/google-api-php-client/src'); @@ -441,10 +442,10 @@ class Google extends \OC\Files\Storage\Common { // the library's service doesn't support streaming, so we use Guzzle instead $client = \OC::$server->getHTTPClientService()->newClient(); try { - $tmpFile = \OC::$server->getTempManager()->getTemporaryFile($ext); - $client->get($downloadUrl, [ + $response = $client->get($downloadUrl, [ 'headers' => $httpRequest->getRequestHeaders(), - 'save_to' => $tmpFile, + 'stream' => true, + 'verify' => __DIR__ . '/../3rdparty/google-api-php-client/src/Google/IO/cacerts.pem', ]); } catch (RequestException $e) { if(!is_null($e->getResponse())) { @@ -458,7 +459,8 @@ class Google extends \OC\Files\Storage\Common { } } - return fopen($tmpFile, 'r'); + $handle = $response->getBody(); + return RetryWrapper::wrap($handle); } } return false; diff --git a/apps/files_external/lib/sftp.php b/apps/files_external/lib/sftp.php index f6b2873cf49..a6984f3b4e0 100644 --- a/apps/files_external/lib/sftp.php +++ b/apps/files_external/lib/sftp.php @@ -32,6 +32,7 @@ namespace OC\Files\Storage; use Icewind\Streams\IteratorDirectory; +use Icewind\Streams\RetryWrapper; use phpseclib\Net\SFTP\Stream; /** @@ -374,7 +375,8 @@ class SFTP extends \OC\Files\Storage\Common { case 'c': case 'c+': $context = stream_context_create(array('sftp' => array('session' => $this->getConnection()))); - return fopen($this->constructUrl($path), $mode, false, $context); + $handle = fopen($this->constructUrl($path), $mode, false, $context); + return RetryWrapper::wrap($handle); } } catch (\Exception $e) { } @@ -459,7 +461,7 @@ class SFTP extends \OC\Files\Storage\Common { // Do not pass the password here. We want to use the Net_SFTP object // supplied via stream context or fail. We only supply username and // hostname because this might show up in logs (they are not used). - $url = 'sftp://'.$this->user.'@'.$this->host.':'.$this->port.$this->root.$path; + $url = 'sftp://' . urlencode($this->user) . '@' . $this->host . ':' . $this->port . $this->root . $path; return $url; } } diff --git a/apps/files_external/service/globalstoragesservice.php b/apps/files_external/service/globalstoragesservice.php index 312d8417a92..62da314c5fa 100644 --- a/apps/files_external/service/globalstoragesservice.php +++ b/apps/files_external/service/globalstoragesservice.php @@ -72,7 +72,7 @@ class GlobalStoragesService extends StoragesService { /** * Triggers signal_create_mount or signal_delete_mount to - * accomodate for additions/deletions in applicableUsers + * accommodate for additions/deletions in applicableUsers * and applicableGroups fields. * * @param StorageConfig $oldStorage old storage config diff --git a/apps/files_external/service/legacystoragesservice.php b/apps/files_external/service/legacystoragesservice.php index bab1008e561..158fc2b5137 100644 --- a/apps/files_external/service/legacystoragesservice.php +++ b/apps/files_external/service/legacystoragesservice.php @@ -188,7 +188,7 @@ abstract class LegacyStoragesService { $storagesWithConfigHash[$configId] = $currentStorage; } } catch (\UnexpectedValueException $e) { - // dont die if a storage backend doesn't exist + // don't die if a storage backend doesn't exist \OCP\Util::writeLog( 'files_external', 'Could not load storage: "' . $e->getMessage() . '"', diff --git a/apps/files_external/service/storagesservice.php b/apps/files_external/service/storagesservice.php index 1762b55a06c..6542be146d6 100644 --- a/apps/files_external/service/storagesservice.php +++ b/apps/files_external/service/storagesservice.php @@ -96,7 +96,7 @@ abstract class StoragesService { $config->setId((int)$mount['mount_id']); return $config; } catch (\UnexpectedValueException $e) { - // dont die if a storage backend doesn't exist + // don't die if a storage backend doesn't exist \OCP\Util::writeLog( 'files_external', 'Could not load storage: "' . $e->getMessage() . '"', @@ -352,7 +352,7 @@ abstract class StoragesService { /** * Triggers signal_create_mount or signal_delete_mount to - * accomodate for additions/deletions in applicableUsers + * accommodate for additions/deletions in applicableUsers * and applicableGroups fields. * * @param StorageConfig $oldStorage old storage data diff --git a/apps/files_external/service/userstoragesservice.php b/apps/files_external/service/userstoragesservice.php index d4b04de609d..c46846e76d6 100644 --- a/apps/files_external/service/userstoragesservice.php +++ b/apps/files_external/service/userstoragesservice.php @@ -82,7 +82,7 @@ class UserStoragesService extends StoragesService { /** * Triggers signal_create_mount or signal_delete_mount to - * accomodate for additions/deletions in applicableUsers + * accommodate for additions/deletions in applicableUsers * and applicableGroups fields. * * @param StorageConfig $oldStorage old storage data diff --git a/apps/files_external/templates/settings.php b/apps/files_external/templates/settings.php index 697a145131c..feccd2a4e45 100644 --- a/apps/files_external/templates/settings.php +++ b/apps/files_external/templates/settings.php @@ -124,7 +124,7 @@ </td> <?php endif; ?> <td class="mountOptionsToggle hidden"> - <img class="svg action" + <img class="svg" title="<?php p($l->t('Advanced settings')); ?>" alt="<?php p($l->t('Advanced settings')); ?>" src="<?php print_unescaped(image_path('core', 'actions/settings.svg')); ?>" @@ -132,7 +132,7 @@ <input type="hidden" class="mountOptions" value="" /> </td> <td class="hidden"> - <img class="svg action" + <img class="svg" alt="<?php p($l->t('Delete')); ?>" title="<?php p($l->t('Delete')); ?>" src="<?php print_unescaped(image_path('core', 'actions/delete.svg')); ?>" diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js index a253763389c..5bfc8e1d4a2 100644 --- a/apps/files_sharing/js/share.js +++ b/apps/files_sharing/js/share.js @@ -111,8 +111,9 @@ _.each($files, function(file) { var $tr = $(file); - var shareTypes = $tr.attr('data-share-types'); - if (shareTypes) { + var shareTypes = $tr.attr('data-share-types') || ''; + var shareOwner = $tr.attr('data-share-owner'); + if (shareTypes || shareOwner) { var hasLink = false; var hasShares = false; _.each(shareTypes.split(',') || [], function(shareType) { diff --git a/apps/files_sharing/l10n/sv.js b/apps/files_sharing/l10n/sv.js index d2357c0de33..2381031c192 100644 --- a/apps/files_sharing/l10n/sv.js +++ b/apps/files_sharing/l10n/sv.js @@ -3,11 +3,15 @@ OC.L10N.register( { "Server to server sharing is not enabled on this server" : "Server-till-server-delning är inte aktiverat på denna server", "The mountpoint name contains invalid characters." : "Monteringspunktens namn innehåller ogiltiga tecken.", + "Not allowed to create a federated share with the same user server" : "Ej tillåten att skapa en federerad delning med samma användarserver.", "Invalid or untrusted SSL certificate" : "Ogiltigt eller ej betrott SSL-certifikat", + "Could not authenticate to remote share, password might be wrong" : "Kunde ej autensiera fjärrdelningen, lösenordet kan vara fel", + "Storage not valid" : "Lagring ej giltig", "Couldn't add remote share" : "Kunde inte lägga till fjärrutdelning", "Shared with you" : "Delat med dig", "Shared with others" : "Delat med andra", "Shared by link" : "Delad som länk", + "Federated sharing" : "Federated Delning", "Nothing shared with you yet" : "Inget delat med dig ännu", "Files and folders others share with you will show up here" : "Filer och mappar andra delar med dig kommer visas här", "Nothing shared yet" : "Inget delat ännu", @@ -19,12 +23,15 @@ OC.L10N.register( "Remote share password" : "Lösenord för fjärrdelning", "Cancel" : "Avbryt", "Add remote share" : "Lägg till fjärrdelning", + "You can upload into this folder" : "Du kan ladda upp i denna map", + "No ownCloud installation (7 or higher) found at {remote}" : "Ingen OwnCloud Installation (7 eller senare) funnen på {remote}", "Invalid ownCloud url" : "Felaktig ownCloud url", "Shared by" : "Delad av", "Sharing" : "Dela", "A file or folder has been <strong>shared</strong>" : "En fil eller mapp har <strong>delats</strong>", "A file or folder was shared from <strong>another server</strong>" : "En fil eller mapp delades från <strong>en annan server</strong>", "A public shared file or folder was <strong>downloaded</strong>" : "En publikt delad fil eller mapp blev <strong>nerladdad</strong>", + "You received a new remote share %2$s from %1$s" : "Du har mottagit en fjärrdelning %2$s från %1$s", "You received a new remote share from %s" : "Du mottog en ny fjärrdelning från %s", "%1$s accepted remote share %2$s" : "%1$s accepterade fjärrdelning %2$s", "%1$s declined remote share %2$s" : "%1$s nekade fjärrdelning %2$s", @@ -32,11 +39,43 @@ OC.L10N.register( "Public shared folder %1$s was downloaded" : "Publikt delad mapp %1$s blev nerladdad", "Public shared file %1$s was downloaded" : "Publikt delad fil %1$s blev nerladdad", "You shared %1$s with %2$s" : "Du delade %1$s med %2$s", + "%2$s shared %1$s with %3$s" : "%2$s delade %1$s med %3$s", + "You removed the share of %2$s for %1$s" : "Du tog bort delning av %2$s för %1$s", + "%2$s removed the share of %3$s for %1$s" : "%2$s tog bort delningen av %3$s för %1$s", "You shared %1$s with group %2$s" : "Du delade %1$s med grupp %2$s", + "%2$s shared %1$s with group %3$s" : "%2$s delade %1$s med gruppen %3$s", + "You removed the share of group %2$s for %1$s" : "Du tog bort delningen av gruppen %2$s för %1$s", + "%2$s removed the share of group %3$s for %1$s" : "%2$s tog bort delningen av grupp %3$s för %1$s", + "%2$s shared %1$s via link" : "%2$s delade %1$s via länk", "You shared %1$s via link" : "Du delade %1$s via länk", + "You removed the public link for %1$s" : "Du tog bort den publika länken för %1$s", + "%2$s removed the public link for %1$s" : "%2$s tog bort den publika länken för %1$s", + "Your public link for %1$s expired" : "Din publika länk för %1$s har löpt ut", + "The public link of %2$s for %1$s expired" : "Den publika länken för %2$s av %1$s har löpt ut", "%2$s shared %1$s with you" : "%2$s delade %1$s med dig", + "%2$s removed the share for %1$s" : "%2$s tog bort delningen av %1$s", + "Downloaded via public link" : "Nerladdad via publik länk", + "Shared with %2$s" : "Delad med %2$s", + "Shared with %3$s by %2$s" : "Delad med %3$s av %2$s", + "Removed share for %2$s" : "Tog bort delningen för %2$s", + "%2$s removed share for %3$s" : "%2$s tog bort delningen för %3$s", + "Shared with group %2$s" : "Delning med grupp %2$s", + "Shared with group %3$s by %2$s" : "Delade med grupp %3$s av %2$s", + "Removed share of group %2$s" : "Tog bort delning av grupp %2$s", + "%2$s removed share of group %3$s" : "%2$s tog bort delningen av grupp %3$s", + "Shared via link by %2$s" : "Delad via länk av %2$s", + "Shared via public link" : "Delad via publik länk", + "Removed public link" : "Tog bort publik länk", + "%2$s removed public link" : "%2$s tog bort publik länk", + "Public link expired" : "Tidsgräns för publik länk har löpt ut", + "Public link of %2$s expired" : "Tidsgräns för publik länk för %2$s har löpt ut", + "Shared by %2$s" : "Delad av %2$s", "Shares" : "Delningar", + "You received \"/%2$s\" as a remote share from %1$s" : "Du mottog \"/%2$s\" som fjärrdelning från %1$s", "Accept" : "Acceptera", + "Decline" : "Neka", + "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Dela med mig genom min #owncloud Federated Cloud ID, se %s", + "Share with me through my #ownCloud Federated Cloud ID" : "Dela med mig genom min #ownCloud Federated Cloud ID", "This share is password-protected" : "Den här delningen är lösenordsskyddad", "The password is wrong. Try again." : "Lösenordet är fel. Försök igen.", "Password" : "Lösenord", @@ -53,7 +92,15 @@ OC.L10N.register( "Download" : "Ladda ner", "Download %s" : "Ladda ner %s", "Direct link" : "Direkt länk", + "Federated Cloud Sharing" : "Federate Cloud delning", + "Open documentation" : "Öppna dokumentation", "Allow users on this server to send shares to other servers" : "Tillåt användare på denna server att skicka utdelningar till andra servrar", - "Allow users on this server to receive shares from other servers" : "Tillåt användare på denna servern att ta emot utdelningar från andra servrar" + "Allow users on this server to receive shares from other servers" : "Tillåt användare på denna servern att ta emot utdelningar från andra servrar", + "Federated Cloud" : "Federated Cloud", + "Your Federated Cloud ID:" : "Ditt Federated Cloud ID", + "Share it:" : "Dela detta:", + "Add to your website" : "Lägg till på din hemsida", + "Share with me via ownCloud" : "Dela med mig via Owncloud", + "HTML Code:" : "HTML Kod:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/sv.json b/apps/files_sharing/l10n/sv.json index 9331d95aafb..f86e9491149 100644 --- a/apps/files_sharing/l10n/sv.json +++ b/apps/files_sharing/l10n/sv.json @@ -1,11 +1,15 @@ { "translations": { "Server to server sharing is not enabled on this server" : "Server-till-server-delning är inte aktiverat på denna server", "The mountpoint name contains invalid characters." : "Monteringspunktens namn innehåller ogiltiga tecken.", + "Not allowed to create a federated share with the same user server" : "Ej tillåten att skapa en federerad delning med samma användarserver.", "Invalid or untrusted SSL certificate" : "Ogiltigt eller ej betrott SSL-certifikat", + "Could not authenticate to remote share, password might be wrong" : "Kunde ej autensiera fjärrdelningen, lösenordet kan vara fel", + "Storage not valid" : "Lagring ej giltig", "Couldn't add remote share" : "Kunde inte lägga till fjärrutdelning", "Shared with you" : "Delat med dig", "Shared with others" : "Delat med andra", "Shared by link" : "Delad som länk", + "Federated sharing" : "Federated Delning", "Nothing shared with you yet" : "Inget delat med dig ännu", "Files and folders others share with you will show up here" : "Filer och mappar andra delar med dig kommer visas här", "Nothing shared yet" : "Inget delat ännu", @@ -17,12 +21,15 @@ "Remote share password" : "Lösenord för fjärrdelning", "Cancel" : "Avbryt", "Add remote share" : "Lägg till fjärrdelning", + "You can upload into this folder" : "Du kan ladda upp i denna map", + "No ownCloud installation (7 or higher) found at {remote}" : "Ingen OwnCloud Installation (7 eller senare) funnen på {remote}", "Invalid ownCloud url" : "Felaktig ownCloud url", "Shared by" : "Delad av", "Sharing" : "Dela", "A file or folder has been <strong>shared</strong>" : "En fil eller mapp har <strong>delats</strong>", "A file or folder was shared from <strong>another server</strong>" : "En fil eller mapp delades från <strong>en annan server</strong>", "A public shared file or folder was <strong>downloaded</strong>" : "En publikt delad fil eller mapp blev <strong>nerladdad</strong>", + "You received a new remote share %2$s from %1$s" : "Du har mottagit en fjärrdelning %2$s från %1$s", "You received a new remote share from %s" : "Du mottog en ny fjärrdelning från %s", "%1$s accepted remote share %2$s" : "%1$s accepterade fjärrdelning %2$s", "%1$s declined remote share %2$s" : "%1$s nekade fjärrdelning %2$s", @@ -30,11 +37,43 @@ "Public shared folder %1$s was downloaded" : "Publikt delad mapp %1$s blev nerladdad", "Public shared file %1$s was downloaded" : "Publikt delad fil %1$s blev nerladdad", "You shared %1$s with %2$s" : "Du delade %1$s med %2$s", + "%2$s shared %1$s with %3$s" : "%2$s delade %1$s med %3$s", + "You removed the share of %2$s for %1$s" : "Du tog bort delning av %2$s för %1$s", + "%2$s removed the share of %3$s for %1$s" : "%2$s tog bort delningen av %3$s för %1$s", "You shared %1$s with group %2$s" : "Du delade %1$s med grupp %2$s", + "%2$s shared %1$s with group %3$s" : "%2$s delade %1$s med gruppen %3$s", + "You removed the share of group %2$s for %1$s" : "Du tog bort delningen av gruppen %2$s för %1$s", + "%2$s removed the share of group %3$s for %1$s" : "%2$s tog bort delningen av grupp %3$s för %1$s", + "%2$s shared %1$s via link" : "%2$s delade %1$s via länk", "You shared %1$s via link" : "Du delade %1$s via länk", + "You removed the public link for %1$s" : "Du tog bort den publika länken för %1$s", + "%2$s removed the public link for %1$s" : "%2$s tog bort den publika länken för %1$s", + "Your public link for %1$s expired" : "Din publika länk för %1$s har löpt ut", + "The public link of %2$s for %1$s expired" : "Den publika länken för %2$s av %1$s har löpt ut", "%2$s shared %1$s with you" : "%2$s delade %1$s med dig", + "%2$s removed the share for %1$s" : "%2$s tog bort delningen av %1$s", + "Downloaded via public link" : "Nerladdad via publik länk", + "Shared with %2$s" : "Delad med %2$s", + "Shared with %3$s by %2$s" : "Delad med %3$s av %2$s", + "Removed share for %2$s" : "Tog bort delningen för %2$s", + "%2$s removed share for %3$s" : "%2$s tog bort delningen för %3$s", + "Shared with group %2$s" : "Delning med grupp %2$s", + "Shared with group %3$s by %2$s" : "Delade med grupp %3$s av %2$s", + "Removed share of group %2$s" : "Tog bort delning av grupp %2$s", + "%2$s removed share of group %3$s" : "%2$s tog bort delningen av grupp %3$s", + "Shared via link by %2$s" : "Delad via länk av %2$s", + "Shared via public link" : "Delad via publik länk", + "Removed public link" : "Tog bort publik länk", + "%2$s removed public link" : "%2$s tog bort publik länk", + "Public link expired" : "Tidsgräns för publik länk har löpt ut", + "Public link of %2$s expired" : "Tidsgräns för publik länk för %2$s har löpt ut", + "Shared by %2$s" : "Delad av %2$s", "Shares" : "Delningar", + "You received \"/%2$s\" as a remote share from %1$s" : "Du mottog \"/%2$s\" som fjärrdelning från %1$s", "Accept" : "Acceptera", + "Decline" : "Neka", + "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Dela med mig genom min #owncloud Federated Cloud ID, se %s", + "Share with me through my #ownCloud Federated Cloud ID" : "Dela med mig genom min #ownCloud Federated Cloud ID", "This share is password-protected" : "Den här delningen är lösenordsskyddad", "The password is wrong. Try again." : "Lösenordet är fel. Försök igen.", "Password" : "Lösenord", @@ -51,7 +90,15 @@ "Download" : "Ladda ner", "Download %s" : "Ladda ner %s", "Direct link" : "Direkt länk", + "Federated Cloud Sharing" : "Federate Cloud delning", + "Open documentation" : "Öppna dokumentation", "Allow users on this server to send shares to other servers" : "Tillåt användare på denna server att skicka utdelningar till andra servrar", - "Allow users on this server to receive shares from other servers" : "Tillåt användare på denna servern att ta emot utdelningar från andra servrar" + "Allow users on this server to receive shares from other servers" : "Tillåt användare på denna servern att ta emot utdelningar från andra servrar", + "Federated Cloud" : "Federated Cloud", + "Your Federated Cloud ID:" : "Ditt Federated Cloud ID", + "Share it:" : "Dela detta:", + "Add to your website" : "Lägg till på din hemsida", + "Share with me via ownCloud" : "Dela med mig via Owncloud", + "HTML Code:" : "HTML Kod:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/tr.js b/apps/files_sharing/l10n/tr.js index df267d35b1f..c08d9baa0d5 100644 --- a/apps/files_sharing/l10n/tr.js +++ b/apps/files_sharing/l10n/tr.js @@ -74,8 +74,8 @@ OC.L10N.register( "You received \"/%2$s\" as a remote share from %1$s" : "%1$s kişisinden \"/%2$s\" uzak paylaşımını aldınız", "Accept" : "Kabul et", "Decline" : "Reddet", - "Share with me through my #ownCloud Federated Cloud ID, see %s" : "#ownCloud Birleşik Bulut kimliğim ile paylaşıldı, bkz %s", - "Share with me through my #ownCloud Federated Cloud ID" : "#ownCloud Birleşmiş Bulut kimliğim ile paylaşıldı", + "Share with me through my #ownCloud Federated Cloud ID, see %s" : "#ownCloud Birleşik Bulut kimliğim ile paylaş, bkz %s", + "Share with me through my #ownCloud Federated Cloud ID" : "#ownCloud Birleşmiş Bulut kimliğim ile paylaş", "This share is password-protected" : "Bu paylaşım parola korumalı", "The password is wrong. Try again." : "Parola hatalı. Yeniden deneyin.", "Password" : "Parola", @@ -100,7 +100,7 @@ OC.L10N.register( "Your Federated Cloud ID:" : "Birleşmiş Bulut Kimliğiniz:", "Share it:" : "Paylaşın:", "Add to your website" : "Web sitenize ekleyin", - "Share with me via ownCloud" : "Benimle ownCloud aracılığıyla paylaşıldı", + "Share with me via ownCloud" : "Benimle ownCloud aracılığıyla paylaşın", "HTML Code:" : "HTML Kodu:" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files_sharing/l10n/tr.json b/apps/files_sharing/l10n/tr.json index 1b921920dd7..b107ec25589 100644 --- a/apps/files_sharing/l10n/tr.json +++ b/apps/files_sharing/l10n/tr.json @@ -72,8 +72,8 @@ "You received \"/%2$s\" as a remote share from %1$s" : "%1$s kişisinden \"/%2$s\" uzak paylaşımını aldınız", "Accept" : "Kabul et", "Decline" : "Reddet", - "Share with me through my #ownCloud Federated Cloud ID, see %s" : "#ownCloud Birleşik Bulut kimliğim ile paylaşıldı, bkz %s", - "Share with me through my #ownCloud Federated Cloud ID" : "#ownCloud Birleşmiş Bulut kimliğim ile paylaşıldı", + "Share with me through my #ownCloud Federated Cloud ID, see %s" : "#ownCloud Birleşik Bulut kimliğim ile paylaş, bkz %s", + "Share with me through my #ownCloud Federated Cloud ID" : "#ownCloud Birleşmiş Bulut kimliğim ile paylaş", "This share is password-protected" : "Bu paylaşım parola korumalı", "The password is wrong. Try again." : "Parola hatalı. Yeniden deneyin.", "Password" : "Parola", @@ -98,7 +98,7 @@ "Your Federated Cloud ID:" : "Birleşmiş Bulut Kimliğiniz:", "Share it:" : "Paylaşın:", "Add to your website" : "Web sitenize ekleyin", - "Share with me via ownCloud" : "Benimle ownCloud aracılığıyla paylaşıldı", + "Share with me via ownCloud" : "Benimle ownCloud aracılığıyla paylaşın", "HTML Code:" : "HTML Kodu:" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/tests/js/shareSpec.js b/apps/files_sharing/tests/js/shareSpec.js index c488bd94fab..c34234bfe13 100644 --- a/apps/files_sharing/tests/js/shareSpec.js +++ b/apps/files_sharing/tests/js/shareSpec.js @@ -141,7 +141,7 @@ describe('OCA.Sharing.Util tests', function() { permissions: OC.PERMISSION_ALL, shareOwner: 'User One', etag: 'abc', - shareTypes: [OC.Share.SHARE_TYPE_USER] + shareTypes: [] }]); $tr = fileList.$el.find('tbody tr:first'); $action = $tr.find('.action-share'); diff --git a/apps/files_trashbin/lib/trashbin.php b/apps/files_trashbin/lib/trashbin.php index 46447908b90..52692950a65 100644 --- a/apps/files_trashbin/lib/trashbin.php +++ b/apps/files_trashbin/lib/trashbin.php @@ -56,7 +56,7 @@ class Trashbin { private static $scannedVersions = false; /** - * Ensure we dont need to scan the file during the move to trash + * Ensure we don't need to scan the file during the move to trash * by triggering the scan in the pre-hook * * @param array $params diff --git a/apps/files_trashbin/tests/storage.php b/apps/files_trashbin/tests/storage.php index 958c5f79a98..afc07ff36c8 100644 --- a/apps/files_trashbin/tests/storage.php +++ b/apps/files_trashbin/tests/storage.php @@ -435,7 +435,7 @@ class Storage extends \Test\TestCase { } /** - * Delete should fail is the source file cant be deleted + * Delete should fail if the source file can't be deleted. */ public function testSingleStorageDeleteFileFail() { /** @@ -472,7 +472,7 @@ class Storage extends \Test\TestCase { } /** - * Delete should fail is the source folder cant be deleted + * Delete should fail if the source folder can't be deleted. */ public function testSingleStorageDeleteFolderFail() { /** diff --git a/apps/systemtags/l10n/tr.js b/apps/systemtags/l10n/tr.js index 6ca4c299006..2356ac42584 100644 --- a/apps/systemtags/l10n/tr.js +++ b/apps/systemtags/l10n/tr.js @@ -1,7 +1,21 @@ OC.L10N.register( "systemtags", { + "<strong>System tags</strong> for a file have been modified" : "Bir dosya için <strong>sistem etiketleri</strong> değiştirildi", + "%1$s assigned system tag %3$s" : "%1$s, %3$s sistem etiketini atadı", + "%1$s unassigned system tag %3$s" : "%1$s, %3$s sistem etiket atamasını kaldırdı", + "%1$s created system tag %2$s" : "%1$s, %2$s sistem etiketini oluşturdu", + "%1$s deleted system tag %2$s" : "%1$s, %2$s sistem etiketini sildi", + "%1$s updated system tag %3$s to %2$s" : "%1$s, %3$s sistem etiketini %2$s olarak güncelledi", + "%1$s assigned system tag %3$s to %2$s" : "%1$s, %3$s sistem etiketini %2$s etiketine atadı", + "%1$s unassigned system tag %3$s from %2$s" : "%1$s, %3$s sistem etiketinin %2$s atamasını kaldırdı", + "%s (not-assignable)" : "%s (atanamaz)", + "%s (invisible)" : "%s (gizli)", "Tags" : "Etiketler", + "Tagged files" : "Etiketli dosyalar", + "Select tags to filter by" : "Filtrelemek için etiketleri seçin", + "Please select tags to filter by" : "Filtrelemek için etiketleri seçin", + "No files found for the selected tags" : "Seçilen etiketler ile ilgili dosya bulunamadı", "No files in here" : "Burada hiç dosya yok", "No entries found in this folder" : "Bu klasörde hiçbir girdi bulunamadı", "Name" : "Ad", diff --git a/apps/systemtags/l10n/tr.json b/apps/systemtags/l10n/tr.json index 4dfd5722459..b85c64ab0b3 100644 --- a/apps/systemtags/l10n/tr.json +++ b/apps/systemtags/l10n/tr.json @@ -1,5 +1,19 @@ { "translations": { + "<strong>System tags</strong> for a file have been modified" : "Bir dosya için <strong>sistem etiketleri</strong> değiştirildi", + "%1$s assigned system tag %3$s" : "%1$s, %3$s sistem etiketini atadı", + "%1$s unassigned system tag %3$s" : "%1$s, %3$s sistem etiket atamasını kaldırdı", + "%1$s created system tag %2$s" : "%1$s, %2$s sistem etiketini oluşturdu", + "%1$s deleted system tag %2$s" : "%1$s, %2$s sistem etiketini sildi", + "%1$s updated system tag %3$s to %2$s" : "%1$s, %3$s sistem etiketini %2$s olarak güncelledi", + "%1$s assigned system tag %3$s to %2$s" : "%1$s, %3$s sistem etiketini %2$s etiketine atadı", + "%1$s unassigned system tag %3$s from %2$s" : "%1$s, %3$s sistem etiketinin %2$s atamasını kaldırdı", + "%s (not-assignable)" : "%s (atanamaz)", + "%s (invisible)" : "%s (gizli)", "Tags" : "Etiketler", + "Tagged files" : "Etiketli dosyalar", + "Select tags to filter by" : "Filtrelemek için etiketleri seçin", + "Please select tags to filter by" : "Filtrelemek için etiketleri seçin", + "No files found for the selected tags" : "Seçilen etiketler ile ilgili dosya bulunamadı", "No files in here" : "Burada hiç dosya yok", "No entries found in this folder" : "Bu klasörde hiçbir girdi bulunamadı", "Name" : "Ad", diff --git a/apps/updatenotification/l10n/tr.js b/apps/updatenotification/l10n/tr.js index 26b00321924..036cedb6fb6 100644 --- a/apps/updatenotification/l10n/tr.js +++ b/apps/updatenotification/l10n/tr.js @@ -1,9 +1,13 @@ OC.L10N.register( "updatenotification", { + "Updated channel" : "Kanal güncellendi", "{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.", "Updater" : "Güncelleyici", "A new version is available: %s" : "Yeni bir sürüm mevcut: %s", + "Open updater" : "Güncelleyiciyi aç", + "Your version is up to date." : "Sürümünüz güncel.", + "Checked on %s" : "Son denetlenme: %s", "Update channel:" : "Güncelleme kanalı:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Her zaman yeni / deneysel bir sürüme güncelleyebilirsiniz, ancak daha düşük bir kararlı sürüme düşüremezsiniz." }, diff --git a/apps/updatenotification/l10n/tr.json b/apps/updatenotification/l10n/tr.json index 07f42475269..a7523e3472b 100644 --- a/apps/updatenotification/l10n/tr.json +++ b/apps/updatenotification/l10n/tr.json @@ -1,7 +1,11 @@ { "translations": { + "Updated channel" : "Kanal güncellendi", "{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.", "Updater" : "Güncelleyici", "A new version is available: %s" : "Yeni bir sürüm mevcut: %s", + "Open updater" : "Güncelleyiciyi aç", + "Your version is up to date." : "Sürümünüz güncel.", + "Checked on %s" : "Son denetlenme: %s", "Update channel:" : "Güncelleme kanalı:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Her zaman yeni / deneysel bir sürüme güncelleyebilirsiniz, ancak daha düşük bir kararlı sürüme düşüremezsiniz." },"pluralForm" :"nplurals=2; plural=(n > 1);" diff --git a/apps/user_ldap/css/settings.css b/apps/user_ldap/css/settings.css index db24588f761..c99efc48c5b 100644 --- a/apps/user_ldap/css/settings.css +++ b/apps/user_ldap/css/settings.css @@ -208,3 +208,21 @@ select[multiple=multiple] + button { position: absolute; left: -2000px; } + +#ldapSettings { + background-color: white; + padding: 0; +} + +#ldapSettings > fieldset { + background-color: white; +} + +#ldapSettings ul.ui-tabs-nav .ui-tabs-active, +#ldapSettings ul.ui-tabs-nav .ui-tabs-active > a { + background-color: white; +} + +#ldapSettings div.ui-accordion-content { + background: white; +} diff --git a/apps/user_ldap/l10n/sl.js b/apps/user_ldap/l10n/sl.js index 0fd05945d55..e359ae585a8 100644 --- a/apps/user_ldap/l10n/sl.js +++ b/apps/user_ldap/l10n/sl.js @@ -12,6 +12,7 @@ OC.L10N.register( "No data specified" : "Ni navedenih podatkov", " Could not set configuration %s" : "Ni mogoče uveljaviti nastavitev %s", "Action does not exist" : "Dejanje ne obstaja", + "The Base DN appears to be wrong" : "Enoznačno ime (DN) podatkovne zbirke je napačno", "Configuration incorrect" : "Nastavitev ni ustrezna", "Configuration incomplete" : "Nastavitev je nepopolna", "Configuration OK" : "Nastavitev je ustrezna", diff --git a/apps/user_ldap/l10n/sl.json b/apps/user_ldap/l10n/sl.json index 2e1501e1e54..bb7586eed7c 100644 --- a/apps/user_ldap/l10n/sl.json +++ b/apps/user_ldap/l10n/sl.json @@ -10,6 +10,7 @@ "No data specified" : "Ni navedenih podatkov", " Could not set configuration %s" : "Ni mogoče uveljaviti nastavitev %s", "Action does not exist" : "Dejanje ne obstaja", + "The Base DN appears to be wrong" : "Enoznačno ime (DN) podatkovne zbirke je napačno", "Configuration incorrect" : "Nastavitev ni ustrezna", "Configuration incomplete" : "Nastavitev je nepopolna", "Configuration OK" : "Nastavitev je ustrezna", diff --git a/apps/user_ldap/l10n/sv.js b/apps/user_ldap/l10n/sv.js index dd75c836333..8ccc9fdb5b5 100644 --- a/apps/user_ldap/l10n/sv.js +++ b/apps/user_ldap/l10n/sv.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Failed to clear the mappings." : "Fel vid rensning av mappningar", "Failed to delete the server configuration" : "Misslyckades med att radera serverinställningen", + "The configuration is invalid: anonymous bind is not allowed." : "Denna konfiguration är ogiltig: anonymous bind är ej tillåten.", "The configuration is valid and the connection could be established!" : "Inställningen är giltig och anslutningen kunde upprättas!", "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurationen är riktig, men Bind felade. Var vänlig och kontrollera serverinställningar och logininformation.", "The configuration is invalid. Please have a look at the logs for further details." : "Inställningen är ogiltig. Vänligen se ownCloud-loggen för fler detaljer.", @@ -10,15 +11,38 @@ OC.L10N.register( "No configuration specified" : "Ingen konfiguration har angetts", "No data specified" : "Ingen data har angetts", " Could not set configuration %s" : "Kunde inte sätta inställning %s", + "Action does not exist" : "Funktion existerar ej", + "The Base DN appears to be wrong" : "Den grundläggande DN verkar vara fel", "Configuration incorrect" : "Felaktig konfiguration", "Configuration incomplete" : "Konfigurationen är ej komplett", "Configuration OK" : "Konfigurationen är OK", "Select groups" : "Välj grupper", "Select object classes" : "Välj objekt-klasser", + "Please check the credentials, they seem to be wrong." : "Var god kontrollera dina uppgifter, de verkar vara fel.", + "Please specify the port, it could not be auto-detected." : "Var god specificera en port, den kunde ej autodetekteras.", + "Base DN could not be auto-detected, please revise credentials, host and port." : "Grundläggande DN kunde ej autodetekteras, var god dubbelkontrollera dina uppgifter, värd och port.", + "Could not detect Base DN, please enter it manually." : "Kunde ej upptäcka Base DN, var god ange det manuellt.", "{nthServer}. Server" : "{nthServer}. Server", + "No object found in the given Base DN. Please revise." : "Inget objekt funnet i den givna Base DN. Var god granska.", + "More than 1,000 directory entries available." : "Mer än 1,000 katalogposter tillgängliga.", + " entries available within the provided Base DN" : "Poster tillgängliga inom angivet Base DN", + "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Ett fel uppstod. Var god kontrollera Base DN, och även anslutningsinställningar och referenser.", "Do you really want to delete the current Server Configuration?" : "Vill du verkligen radera den nuvarande serverinställningen?", "Confirm Deletion" : "Bekräfta radering", + "Mappings cleared successfully!" : "Rensning av mappningar lyckades!", + "Error while clearing the mappings." : "Fel uppstod under rensning av mappningar", + "Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonymous bind är inte tillåten. Var god ange en Användar-DN och lösenord.", + "LDAP Operations error. Anonymous bind might not be allowed." : "LDAP procedursfel. Anonymous bind tillåts troligtvis inte.", + "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Sparning misslyckades. Var god kontrollera att databasen är verksam. Ladda om innan du fortsätter.", + "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Byte av läge kommer aktivera automatiska LDAP förfrågningar. Beroende på din LDAP storlek kan de ta ett tag. Vill du fortfarande ändra läge?", + "Mode switch" : "Lägesändring", "Select attributes" : "Välj attribut", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Användare inte hittad. Var god kontrollera din inloggnings attribut och användarnamn. Effektivt filter (för att kopiera och klistra in i kommandofönster validering):", + "User found and settings verified." : "Användare hittad och inställnings bekräftade.", + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Inställningar bekräftade, men inga användare funna. Endast den första kommer kunna logga in. Överväg ett mer begränsat filter.", + "An unspecified error occurred. Please check the settings and the log." : "Ett ospecificerat fel uppstod. Var god kontrollera inställningar och logfilen.", + "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Sökfiltret är ej giltigt, antagligen på grund utav ett syntaxfel så som ojämnat antal öppna och stängda klammrar. Var god granska.", + "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Ett anslutningsfel till LDAP / AD uppstod. Var god granska värd, port och inloggningsuppgifter.", "_%s group found_::_%s groups found_" : ["%s grupp hittad","%s grupper hittade"], "_%s user found_::_%s users found_" : ["%s användare hittad","%s användare hittade"], "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunde inte upptäcka attributet användarvisningsnamn. Vänligen ange det själv i de avancerade LDAP-inställningarna.", diff --git a/apps/user_ldap/l10n/sv.json b/apps/user_ldap/l10n/sv.json index d71e94b3050..9ed20fbeda0 100644 --- a/apps/user_ldap/l10n/sv.json +++ b/apps/user_ldap/l10n/sv.json @@ -1,6 +1,7 @@ { "translations": { "Failed to clear the mappings." : "Fel vid rensning av mappningar", "Failed to delete the server configuration" : "Misslyckades med att radera serverinställningen", + "The configuration is invalid: anonymous bind is not allowed." : "Denna konfiguration är ogiltig: anonymous bind är ej tillåten.", "The configuration is valid and the connection could be established!" : "Inställningen är giltig och anslutningen kunde upprättas!", "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurationen är riktig, men Bind felade. Var vänlig och kontrollera serverinställningar och logininformation.", "The configuration is invalid. Please have a look at the logs for further details." : "Inställningen är ogiltig. Vänligen se ownCloud-loggen för fler detaljer.", @@ -8,15 +9,38 @@ "No configuration specified" : "Ingen konfiguration har angetts", "No data specified" : "Ingen data har angetts", " Could not set configuration %s" : "Kunde inte sätta inställning %s", + "Action does not exist" : "Funktion existerar ej", + "The Base DN appears to be wrong" : "Den grundläggande DN verkar vara fel", "Configuration incorrect" : "Felaktig konfiguration", "Configuration incomplete" : "Konfigurationen är ej komplett", "Configuration OK" : "Konfigurationen är OK", "Select groups" : "Välj grupper", "Select object classes" : "Välj objekt-klasser", + "Please check the credentials, they seem to be wrong." : "Var god kontrollera dina uppgifter, de verkar vara fel.", + "Please specify the port, it could not be auto-detected." : "Var god specificera en port, den kunde ej autodetekteras.", + "Base DN could not be auto-detected, please revise credentials, host and port." : "Grundläggande DN kunde ej autodetekteras, var god dubbelkontrollera dina uppgifter, värd och port.", + "Could not detect Base DN, please enter it manually." : "Kunde ej upptäcka Base DN, var god ange det manuellt.", "{nthServer}. Server" : "{nthServer}. Server", + "No object found in the given Base DN. Please revise." : "Inget objekt funnet i den givna Base DN. Var god granska.", + "More than 1,000 directory entries available." : "Mer än 1,000 katalogposter tillgängliga.", + " entries available within the provided Base DN" : "Poster tillgängliga inom angivet Base DN", + "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Ett fel uppstod. Var god kontrollera Base DN, och även anslutningsinställningar och referenser.", "Do you really want to delete the current Server Configuration?" : "Vill du verkligen radera den nuvarande serverinställningen?", "Confirm Deletion" : "Bekräfta radering", + "Mappings cleared successfully!" : "Rensning av mappningar lyckades!", + "Error while clearing the mappings." : "Fel uppstod under rensning av mappningar", + "Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonymous bind är inte tillåten. Var god ange en Användar-DN och lösenord.", + "LDAP Operations error. Anonymous bind might not be allowed." : "LDAP procedursfel. Anonymous bind tillåts troligtvis inte.", + "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Sparning misslyckades. Var god kontrollera att databasen är verksam. Ladda om innan du fortsätter.", + "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Byte av läge kommer aktivera automatiska LDAP förfrågningar. Beroende på din LDAP storlek kan de ta ett tag. Vill du fortfarande ändra läge?", + "Mode switch" : "Lägesändring", "Select attributes" : "Välj attribut", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Användare inte hittad. Var god kontrollera din inloggnings attribut och användarnamn. Effektivt filter (för att kopiera och klistra in i kommandofönster validering):", + "User found and settings verified." : "Användare hittad och inställnings bekräftade.", + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Inställningar bekräftade, men inga användare funna. Endast den första kommer kunna logga in. Överväg ett mer begränsat filter.", + "An unspecified error occurred. Please check the settings and the log." : "Ett ospecificerat fel uppstod. Var god kontrollera inställningar och logfilen.", + "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Sökfiltret är ej giltigt, antagligen på grund utav ett syntaxfel så som ojämnat antal öppna och stängda klammrar. Var god granska.", + "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Ett anslutningsfel till LDAP / AD uppstod. Var god granska värd, port och inloggningsuppgifter.", "_%s group found_::_%s groups found_" : ["%s grupp hittad","%s grupper hittade"], "_%s user found_::_%s users found_" : ["%s användare hittad","%s användare hittade"], "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kunde inte upptäcka attributet användarvisningsnamn. Vänligen ange det själv i de avancerade LDAP-inställningarna.", diff --git a/build/integration/features/bootstrap/WebDav.php b/build/integration/features/bootstrap/WebDav.php index b56a1b7d2f6..2ef5f252f11 100644 --- a/build/integration/features/bootstrap/WebDav.php +++ b/build/integration/features/bootstrap/WebDav.php @@ -316,6 +316,20 @@ trait WebDav { } /** + * @When User :user uploads file with content :content to :destination + */ + public function userUploadsAFileWithContentTo($user, $content, $destination) + { + $file = \GuzzleHttp\Stream\Stream::factory($content); + try { + $this->response = $this->makeDavRequest($user, "PUT", $destination, [], $file); + } catch (\GuzzleHttp\Exception\ServerException $e) { + // 4xx and 5xx responses cause an exception + $this->response = $e->getResponse(); + } + } + + /** * @When User :user deletes file :file * @param string $user * @param string $file diff --git a/build/integration/features/sharing-v1.feature b/build/integration/features/sharing-v1.feature index ba535e83aab..b9d77120b9c 100644 --- a/build/integration/features/sharing-v1.feature +++ b/build/integration/features/sharing-v1.feature @@ -566,3 +566,107 @@ Feature: sharing | path | welcome.txt | | shareType | 3 | Then share ids should match + + Scenario: Correct webdav share-permissions for owned file + Given user "user0" exists + And User "user0" uploads file with content "foo" to "/tmp.txt" + When as "user0" gets properties of folder "/tmp.txt" with + |{http://owncloud.org/ns}share-permissions| + Then the single response should contain a property "{http://owncloud.org/ns}share-permissions" with value "19" + + Scenario: Correct webdav share-permissions for received file with edit and reshare permissions + Given user "user0" exists + And user "user1" exists + And User "user0" uploads file with content "foo" to "/tmp.txt" + And file "tmp.txt" of user "user0" is shared with user "user1" + When as "user1" gets properties of folder "/tmp.txt" with + |{http://owncloud.org/ns}share-permissions| + Then the single response should contain a property "{http://owncloud.org/ns}share-permissions" with value "19" + + Scenario: Correct webdav share-permissions for received file with edit permissions but no reshare permissions + Given user "user0" exists + And user "user1" exists + And User "user0" uploads file with content "foo" to "/tmp.txt" + And file "tmp.txt" of user "user0" is shared with user "user1" + And As an "user0" + And Updating last share with + | permissions | 3 | + When as "user1" gets properties of folder "/tmp.txt" with + |{http://owncloud.org/ns}share-permissions| + Then the single response should contain a property "{http://owncloud.org/ns}share-permissions" with value "0" + + Scenario: Correct webdav share-permissions for received file with reshare permissions but no edit permissions + Given user "user0" exists + And user "user1" exists + And User "user0" uploads file with content "foo" to "/tmp.txt" + And file "tmp.txt" of user "user0" is shared with user "user1" + And As an "user0" + And Updating last share with + | permissions | 17 | + When as "user1" gets properties of folder "/tmp.txt" with + |{http://owncloud.org/ns}share-permissions| + Then the single response should contain a property "{http://owncloud.org/ns}share-permissions" with value "17" + + Scenario: Correct webdav share-permissions for owned folder + Given user "user0" exists + And user "user0" created a folder "/tmp" + When as "user0" gets properties of folder "/" with + |{http://owncloud.org/ns}share-permissions| + Then the single response should contain a property "{http://owncloud.org/ns}share-permissions" with value "31" + + Scenario: Correct webdav share-permissions for received folder with all permissions + Given user "user0" exists + And user "user1" exists + And user "user0" created a folder "/tmp" + And file "/tmp" of user "user0" is shared with user "user1" + When as "user1" gets properties of folder "/tmp" with + |{http://owncloud.org/ns}share-permissions| + Then the single response should contain a property "{http://owncloud.org/ns}share-permissions" with value "31" + + Scenario: Correct webdav share-permissions for received folder with all permissions but edit + Given user "user0" exists + And user "user1" exists + And user "user0" created a folder "/tmp" + And file "/tmp" of user "user0" is shared with user "user1" + And As an "user0" + And Updating last share with + | permissions | 29 | + When as "user1" gets properties of folder "/tmp" with + |{http://owncloud.org/ns}share-permissions| + Then the single response should contain a property "{http://owncloud.org/ns}share-permissions" with value "29" + + Scenario: Correct webdav share-permissions for received folder with all permissions but create + Given user "user0" exists + And user "user1" exists + And user "user0" created a folder "/tmp" + And file "/tmp" of user "user0" is shared with user "user1" + And As an "user0" + And Updating last share with + | permissions | 27 | + When as "user1" gets properties of folder "/tmp" with + |{http://owncloud.org/ns}share-permissions| + Then the single response should contain a property "{http://owncloud.org/ns}share-permissions" with value "27" + + Scenario: Correct webdav share-permissions for received folder with all permissions but delete + Given user "user0" exists + And user "user1" exists + And user "user0" created a folder "/tmp" + And file "/tmp" of user "user0" is shared with user "user1" + And As an "user0" + And Updating last share with + | permissions | 23 | + When as "user1" gets properties of folder "/tmp" with + |{http://owncloud.org/ns}share-permissions| + Then the single response should contain a property "{http://owncloud.org/ns}share-permissions" with value "23" + + Scenario: Correct webdav share-permissions for received folder with all permissions but share + Given user "user0" exists + And user "user1" exists + And user "user0" created a folder "/tmp" + And file "/tmp" of user "user0" is shared with user "user1" + And As an "user0" + And Updating last share with + | permissions | 15 | + When as "user1" gets properties of folder "/tmp" with + |{http://owncloud.org/ns}share-permissions| + Then the single response should contain a property "{http://owncloud.org/ns}share-permissions" with value "0" diff --git a/core/css/styles.css b/core/css/styles.css index a429d55560e..a1dda59a86b 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -177,17 +177,20 @@ body { #emptycontent, .emptycontent { - font-size: 16px; color: #888; text-align: center; margin-top: 100px; /* ie8 */ margin-top: 30vh; width: 100%; } +#emptycontent.emptycontent-search, +.emptycontent.emptycontent-search { + position: static; +} #emptycontent h2, .emptycontent h2 { - font-weight: 600; margin-bottom: 10px; + line-height: 150%; } #emptycontent [class^="icon-"], .emptycontent [class^="icon-"], diff --git a/core/img/actions/upload-white.png b/core/img/actions/upload-white.png Binary files differindex a3b233e8aa6..28693f855d3 100644 --- a/core/img/actions/upload-white.png +++ b/core/img/actions/upload-white.png diff --git a/core/img/actions/upload-white.svg b/core/img/actions/upload-white.svg index 9c54cac5e1e..afc8ca9e5cc 100644 --- a/core/img/actions/upload-white.svg +++ b/core/img/actions/upload-white.svg @@ -1,6 +1,4 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> - <g transform="translate(0 -1036.4)"> - <path d="m10 1051.4h-4l-1-7h-4l7-7 7 7h-4z" fill="#fff"/> - </g> + <path fill="#fff" d="m8 1-6 6h4v4h4v-4h4zm-6 12v2h12v-2z"/> </svg> diff --git a/core/js/js.js b/core/js/js.js index e90ceaf4e18..b74775a935f 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -740,13 +740,23 @@ var OC={ * if an error/auth error status was returned. */ _processAjaxError: function(xhr) { + var self = this; // purposefully aborted request ? - if (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout')) { + // this._userIsNavigatingAway needed to distinguish ajax calls cancelled by navigating away + // from calls cancelled by failed cross-domain ajax due to SSO redirect + if (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || self._reloadCalled)) { return; } - if (_.contains([0, 302, 307, 401], xhr.status)) { - OC.reload(); + if (_.contains([0, 302, 303, 307, 401], xhr.status)) { + // sometimes "beforeunload" happens later, so need to defer the reload a bit + setTimeout(function() { + if (!self._userIsNavigatingAway && !self._reloadCalled) { + OC.reload(); + // only call reload once + self._reloadCalled = true; + } + }, 100); } }, @@ -1438,6 +1448,29 @@ function initCore() { $('html').addClass('edge'); } + $(window).on('unload.main', function() { + OC._unloadCalled = true; + }); + $(window).on('beforeunload.main', function() { + // super-trick thanks to http://stackoverflow.com/a/4651049 + // in case another handler displays a confirmation dialog (ex: navigating away + // during an upload), there are two possible outcomes: user clicked "ok" or + // "cancel" + + // first timeout handler is called after unload dialog is closed + setTimeout(function() { + OC._userIsNavigatingAway = true; + + // second timeout event is only called if user cancelled (Chrome), + // but in other browsers it might still be triggered, so need to + // set a higher delay... + setTimeout(function() { + if (!OC._unloadCalled) { + OC._userIsNavigatingAway = false; + } + }, 10000); + },1); + }); $(document).on('ajaxError.main', function( event, request, settings ) { if (settings && settings.allowAuthErrors) { return; diff --git a/core/js/tests/specs/coreSpec.js b/core/js/tests/specs/coreSpec.js index 774c2fdc72f..f18ecbc1a44 100644 --- a/core/js/tests/specs/coreSpec.js +++ b/core/js/tests/specs/coreSpec.js @@ -20,6 +20,15 @@ */ describe('Core base tests', function() { + afterEach(function() { + // many tests call window.initCore so need to unregister global events + // ideally in the future we'll need a window.unloadCore() function + $(document).off('ajaxError.main'); + $(document).off('unload.main'); + $(document).off('beforeunload.main'); + OC._userIsNavigatingAway = false; + OC._reloadCalled = false; + }); describe('Base values', function() { it('Sets webroots', function() { expect(OC.webroot).toBeDefined(); @@ -925,9 +934,10 @@ describe('Core base tests', function() { }); }); describe('global ajax errors', function() { - var reloadStub, ajaxErrorStub; + var reloadStub, ajaxErrorStub, clock; beforeEach(function() { + clock = sinon.useFakeTimers(); reloadStub = sinon.stub(OC, 'reload'); // unstub the error processing method ajaxErrorStub = OC._processAjaxError; @@ -936,15 +946,17 @@ describe('Core base tests', function() { }); afterEach(function() { reloadStub.restore(); - $(document).off('ajaxError'); + clock.restore(); }); - it('reloads current page in case of auth error', function () { + it('reloads current page in case of auth error', function() { var dataProvider = [ [200, false], [400, false], + [0, true], [401, true], [302, true], + [303, true], [307, true] ]; @@ -953,9 +965,13 @@ describe('Core base tests', function() { var expectedCall = dataProvider[i][1]; reloadStub.reset(); + OC._reloadCalled = false; $(document).trigger(new $.Event('ajaxError'), xhr); + // trigger timers + clock.tick(1000); + if (expectedCall) { expect(reloadStub.calledOnce).toEqual(true); } else { @@ -963,6 +979,27 @@ describe('Core base tests', function() { } } }); - }) + it('reload only called once in case of auth error', function() { + var xhr = { status: 401 }; + + $(document).trigger(new $.Event('ajaxError'), xhr); + $(document).trigger(new $.Event('ajaxError'), xhr); + + // trigger timers + clock.tick(1000); + + expect(reloadStub.calledOnce).toEqual(true); + }); + it('does not reload the page if the user was navigating away', function() { + var xhr = { status: 0 }; + OC._userIsNavigatingAway = true; + clock.tick(100); + + $(document).trigger(new $.Event('ajaxError'), xhr); + + clock.tick(1000); + expect(reloadStub.notCalled).toEqual(true); + }); + }); }); diff --git a/core/l10n/nl.js b/core/l10n/nl.js index aade9882602..8fdb88440e7 100644 --- a/core/l10n/nl.js +++ b/core/l10n/nl.js @@ -119,10 +119,18 @@ OC.L10N.register( "Good password" : "Goed wachtwoord", "Strong password" : "Sterk wachtwoord", "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Uw webserver is nog niet goed ingesteld voor bestandssynchronisatie, omdat de WebDAV interface verstoord lijkt.", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Uw webserver is niet goed ingesteld om \"{url}\" te vinden. Meer informatie is te vinden in onze <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentatie</a>.", "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." : "Deze server heeft geen actieve internetverbinding. Dat betekent dat sommige functies, zoals aankoppelen van externe opslag, notificaties over updates of installatie van apps van 3e partijen niet werken. Ook het benaderen van bestanden vanaf een remote locatie en het versturen van notificatie emails kan mislukken. We adviseren om de internetverbinding voor deze server in te schakelen als u alle functies wilt gebruiken.", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Er is geen geheugencache geconfigureerd. Om de prestaties te verhogen kunt u de memcache configureren als die beschikbaar is. Meer informatie vind u in onze <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentatie</a>.", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom is niet leesbaar door PHP, hetgeen wordt afgeraden wegens beveiligingsredenen. Meer informatie in onze <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentatie</a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "U draait momenteel PHP {version}. We adviseren u om zo gauw uw distributie dat biedt, uw PHP versie bij te werken voor betere <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">prestaties en beveiliging geleverd door de PHP Group</a>.", + "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 target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "De reverse proxy headerconfiguratie is onjuist, of u hebt toegang tot ownCloud via een vertrouwde proxy. Als u ownCloud niet via een vertrouwde proxy benadert, dan levert dan een beveiligingsrisico op, waardoor een aanvaller het IP-adres dat ownCloud ziet kan spoofen. Meer informatie is te vinden in onze <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentatie</a>.", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached is geconfigureerd als gedistribueerde cache, maar de verkeerde PHP module \"memcache\" is geïnstalleerd. \\OC\\Memcache\\Memcached ondersteunt alleen \"memcached\" en niet \"memcache\". Zie de <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki over beide modules</a>.", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Sommige bestanden kwamen niet door de code betrouwbaarheidscontrole. Meer informatie over het oplossen van dit probleem kan worden gevonden in onze <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentatie</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lijst met ongeldige bestanden…</a> / <a href=\"{rescanEndpoint}\">Opnieuw…</a>)", "Error occurred while checking server setup" : "Een fout trad op bij checken serverconfiguratie", "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." : "Uw data folder en uw bestanden zijn waarschijnlijk vanaf het internet bereikbaar. Het .htaccess-bestand werkt niet. We raden ten zeerste aan aan om uw webserver zodanig te configureren, dat de datadirectory niet bereikbaar is vanaf het internet of om uw datadirectory te verplaatsen naar een locatie buiten de document root van de webserver.", "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." : "De \"{header}\" HTTP header is niet overeenkomstig met \"{expected}\" geconfigureerd. Dit is een potentieel security of privacy risico en we adviseren om deze instelling te wijzigen.", + "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "De \"Strict-Transport-Security\" HTTP header is niet geconfigureerd met minimaal \"{seconds}\" seconden. Voor verbeterde beveiliging adviseren we HSTS in te schakelen zoals beschreven in onze<a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>.", "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "U bent met deze site verbonden over HTTP. We adviseren met klem uw server zo te configureren dat HTTPS wordt vereist, zoals beschreven in onze <a href=\"{docUrl}\">security tips</a>.", "Shared" : "Gedeeld", "Shared with {recipients}" : "Gedeeld met {recipients}", @@ -239,6 +247,7 @@ OC.L10N.register( "Trace" : "Trace", "Security warning" : "Beveiligingswaarschuwing", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Uw gegevensdirectory en bestanden zijn vermoedelijk bereikbaar vanaf het internet, omdat het .htaccess-bestand niet functioneert.", + "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Bekijk de <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentatie</a> voor Informatie over het correct configureren van uw server.", "Create an <strong>admin account</strong>" : "Maak een <strong>beheerdersaccount</strong> aan", "Username" : "Gebruikersnaam", "Storage & database" : "Opslag & database", diff --git a/core/l10n/nl.json b/core/l10n/nl.json index db19836ef8b..9588e4f27dc 100644 --- a/core/l10n/nl.json +++ b/core/l10n/nl.json @@ -117,10 +117,18 @@ "Good password" : "Goed wachtwoord", "Strong password" : "Sterk wachtwoord", "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Uw webserver is nog niet goed ingesteld voor bestandssynchronisatie, omdat de WebDAV interface verstoord lijkt.", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Uw webserver is niet goed ingesteld om \"{url}\" te vinden. Meer informatie is te vinden in onze <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentatie</a>.", "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." : "Deze server heeft geen actieve internetverbinding. Dat betekent dat sommige functies, zoals aankoppelen van externe opslag, notificaties over updates of installatie van apps van 3e partijen niet werken. Ook het benaderen van bestanden vanaf een remote locatie en het versturen van notificatie emails kan mislukken. We adviseren om de internetverbinding voor deze server in te schakelen als u alle functies wilt gebruiken.", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Er is geen geheugencache geconfigureerd. Om de prestaties te verhogen kunt u de memcache configureren als die beschikbaar is. Meer informatie vind u in onze <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentatie</a>.", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom is niet leesbaar door PHP, hetgeen wordt afgeraden wegens beveiligingsredenen. Meer informatie in onze <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentatie</a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "U draait momenteel PHP {version}. We adviseren u om zo gauw uw distributie dat biedt, uw PHP versie bij te werken voor betere <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">prestaties en beveiliging geleverd door de PHP Group</a>.", + "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 target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "De reverse proxy headerconfiguratie is onjuist, of u hebt toegang tot ownCloud via een vertrouwde proxy. Als u ownCloud niet via een vertrouwde proxy benadert, dan levert dan een beveiligingsrisico op, waardoor een aanvaller het IP-adres dat ownCloud ziet kan spoofen. Meer informatie is te vinden in onze <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentatie</a>.", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached is geconfigureerd als gedistribueerde cache, maar de verkeerde PHP module \"memcache\" is geïnstalleerd. \\OC\\Memcache\\Memcached ondersteunt alleen \"memcached\" en niet \"memcache\". Zie de <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki over beide modules</a>.", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Sommige bestanden kwamen niet door de code betrouwbaarheidscontrole. Meer informatie over het oplossen van dit probleem kan worden gevonden in onze <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentatie</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lijst met ongeldige bestanden…</a> / <a href=\"{rescanEndpoint}\">Opnieuw…</a>)", "Error occurred while checking server setup" : "Een fout trad op bij checken serverconfiguratie", "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." : "Uw data folder en uw bestanden zijn waarschijnlijk vanaf het internet bereikbaar. Het .htaccess-bestand werkt niet. We raden ten zeerste aan aan om uw webserver zodanig te configureren, dat de datadirectory niet bereikbaar is vanaf het internet of om uw datadirectory te verplaatsen naar een locatie buiten de document root van de webserver.", "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." : "De \"{header}\" HTTP header is niet overeenkomstig met \"{expected}\" geconfigureerd. Dit is een potentieel security of privacy risico en we adviseren om deze instelling te wijzigen.", + "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "De \"Strict-Transport-Security\" HTTP header is niet geconfigureerd met minimaal \"{seconds}\" seconden. Voor verbeterde beveiliging adviseren we HSTS in te schakelen zoals beschreven in onze<a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>.", "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "U bent met deze site verbonden over HTTP. We adviseren met klem uw server zo te configureren dat HTTPS wordt vereist, zoals beschreven in onze <a href=\"{docUrl}\">security tips</a>.", "Shared" : "Gedeeld", "Shared with {recipients}" : "Gedeeld met {recipients}", @@ -237,6 +245,7 @@ "Trace" : "Trace", "Security warning" : "Beveiligingswaarschuwing", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Uw gegevensdirectory en bestanden zijn vermoedelijk bereikbaar vanaf het internet, omdat het .htaccess-bestand niet functioneert.", + "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Bekijk de <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentatie</a> voor Informatie over het correct configureren van uw server.", "Create an <strong>admin account</strong>" : "Maak een <strong>beheerdersaccount</strong> aan", "Username" : "Gebruikersnaam", "Storage & database" : "Opslag & database", diff --git a/core/l10n/sv.js b/core/l10n/sv.js index 4fe45118610..6f4fbb9c9e5 100644 --- a/core/l10n/sv.js +++ b/core/l10n/sv.js @@ -38,6 +38,7 @@ OC.L10N.register( "Couldn't reset password because the token is invalid" : "Kunde inte återställa lösenordet på grund av felaktig token", "Couldn't reset password because the token is expired" : "Lösenord kunde inte återställas eftersom \"token\" har utgått", "Couldn't send reset email. Please make sure your username is correct." : "Kunde inte skicka återställningsmail. Vänligen kontrollera att ditt användarnamn är korrekt.", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Kunde inte skicka återställningsmail eftersom det saknas epost-adress för denna användaren. Kontakta din administratör", "%s password reset" : "%s återställ lösenord", "Couldn't send reset email. Please contact your administrator." : "Kunde inte skicka återställningsmail. Vänligen kontakta din administratör.", "Sunday" : "Söndag", @@ -85,6 +86,7 @@ OC.L10N.register( "Oct." : "Okt.", "Nov." : "Nov.", "Dec." : "Dec.", + "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\"> Ett problem uppstod under integritetskontrollen av koden. Mer information ... </a>", "Settings" : "Inställningar", "Saving..." : "Sparar...", "Dismiss" : "Avfärda", @@ -116,7 +118,20 @@ OC.L10N.register( "So-so password" : "Okej lösenord", "Good password" : "Bra lösenord", "Strong password" : "Starkt lösenord", + "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Din webbserver är inte konfigurerad korrekt för att tillåta filsynkronisering eftersom WebDAV gränssnittet verkar otillgängligt.", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Din webbserver är inte konfigurerad riktigt för att lösa \"{url}\". Vidare information kan hittas i vår <a target=\"_blank\" rel\"noreferrer\" href=\"{docLink}\">dokumentation</a>.", + "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." : "Servern har ingen fungerande internetuppkoppling. Detta betyder att vissa funktioner så som extern lagring, notifikationer om uppdateringar eller installationer utav tredjeparts applikationer inte kommer fungera. Åtkomst av filer utifrån och att skicka notifieringar via epost kanske inte fungerar heller. Vi föreslår att man aktiverar internetanslutningen för denna server om man vill använda samtliga funktioner.", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Ingen minnes cache har blivit konfigurerad. För att förbättra din prestanda var god konfigurera memcache om tillgängligt. Vidare information kan finnas i vår <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentation</a>.", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom är inte läsbar av PHP vilket definitivt inte är rekommenderat av säkerhetsskäl. Vidare information kan finnas i vår <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentation</a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Du kör för närvarande PHP {version}. Vi rekommenderar dig att uppgradera din PHP version så att ta fördel utav <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">prestanda och säkerhetsuppdateringar från PHP Group</a> så fort som din distribution stödjer det.", + "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 target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Konfiguration för \"reverse proxy headers\" är felaktig eller så försöker du nå Owncloud från en betrodd proxy. Om du inte försöker nå Owncloud från en betrodd proxy, detta är en säkerhetsrisk och kan möjliggöra att en hacker att förfalska sin IP adress som är synlig för Owncloud. Vidare information kan finnas i vår <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentation</a>.", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached är konfigurerad som distribuerad cache, men fel PHP modul \"memcache\" är installerad. \\OC\\Memcache\\Memcached stödjer bara \"memcached\" och inte \"memcache\". Se wiki för <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached för båda modulerna</a>.", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Några filer passerade inte integritetskontrollen. Vidare information om hur man löser dessa problem kan finnas i vår dokumentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lista över felaktiga filer…</a> / <a href=\"{rescanEndpoint}\">Sök igenom igen…</a>)", "Error occurred while checking server setup" : "Ett fel inträffade när en kontroll utav servens setup gjordes", + "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." : "Din datakatalog och dina filer är sannolikt tillgängliga över internet. .htaccess filen fungerar ej korrekt. Vi uppmuntrar starkt att du konfigurerar din webbserver på ett sätt som inte gör din datakatalog tillgänglig på nätet eller att man flyttar hela datakatalogen ut ifrån webbserverns webbrot.", + "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 headern är inte konfigurerad att evalueras till \"{expected}\". Detta är en potensiell säkerhetsrisk och vi rekommenderar dig åtgärda denna inställning.", + "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "The \"Strict-Transport-Security\" HTTP headern är inte konfigurerad till minst \"{seconds}\" sekunder. För förbättrad säkerhet rekommenderas aktivering utav HSTS som beskrivs i våra <a href=\"{docUrl}\" rel=\"noreferrer\">säkerhetstips</a>.", + "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Du har begärt denna sidan över HTTP. Vi föreslår starkt att du konfigurerar din webbserver att kräva använding utav HTTPS istället, som beskrivs i våra <a href=\"{docUrl}\">säkerhetstips</a>.", "Shared" : "Delad", "Shared with {recipients}" : "Delad med {recipients}", "Error" : "Fel", @@ -150,18 +165,30 @@ OC.L10N.register( "change" : "ändra", "delete" : "radera", "access control" : "åtkomstkontroll", + "Could not unshare" : "Kunde inte odela", + "Share details could not be loaded for this item." : "Delningsdetaljer kunde inte laddas för detta objekt.", + "No users or groups found for {search}" : "Inga användare eller grupper funna för {search}", + "No users found for {search}" : "Inga användare funna för {search}", "An error occured. Please try again" : "Ett fel uppstod. Var god försök igen", "{sharee} (group)" : "{sharee} (group)", "{sharee} (at {server})" : "{sharee} (at {server})", "{sharee} (remote)" : "{sharee} (remote)", "Share" : "Dela", "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Dela med folk på andra ownClouds med följande syntax username@example.com/owncloud", + "Share with users…" : "Dela med användare...", + "Share with users, groups or remote users…" : "Dela med användare, grupper och fjärranvändare...", + "Share with users or groups…" : "Dela med användare eller grupper...", + "Share with users or remote users…" : "Dela med användare eller fjärranvändare...", + "Error removing share" : "Fel uppstod när delning försökte tas bort", "Warning" : "Varning", "Error while sending notification" : "Fel när notifikation skulle skickas", + "Non-existing tag #{tag}" : "Icke-existerande tag #{tag}", + "not assignable" : "Ej tilldelningsbar", "invisible" : "osynlig", "({scope})" : "({scope})", "Delete" : "Radera", "Rename" : "Byt namn", + "Collaborative tags" : "Sammarbets taggar", "The object type is not specified." : "Objekttypen är inte specificerad.", "Enter new" : "Skriv nytt", "Add" : "Lägg till", @@ -175,12 +202,17 @@ OC.L10N.register( "Hello {name}" : "Hej {name}", "new" : "ny", "_download %n file_::_download %n files_" : ["Ladda ner %n fil","Ladda ner %n filer"], + "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Uppgradering pågår, att lämna denna sidan kan störa processen i vissa miljöer", "Updating {productName} to version {version}, this may take a while." : "Uppdaterar {productName} till version {version}, detta kan ta en stund.", "An error occurred." : "Ett fel inträffade.", "Please reload the page." : "Vänligen ladda om sidan.", + "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Uppdateringen misslyckades. För mer information <a href=\"{url}\">kolla vår forum post</a> angående problemet.", "The update was unsuccessful. " : "Uppdateringen misslyckades.", "The update was successful. There were warnings." : "Uppdateringen lyckades. Det finns varningar.", "The update was successful. Redirecting you to ownCloud now." : "Uppdateringen lyckades. Du omdirigeras nu till OwnCloud.", + "Searching other places" : "Söker på andra platser", + "No search results in other folders" : "Inga sökresultat i andra mappar", + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} sökresultat i en annan mapp","{count} sökresultat i andra mappar"], "Personal" : "Personligt", "Users" : "Användare", "Apps" : "Program", @@ -215,24 +247,30 @@ OC.L10N.register( "Trace" : "Spåra", "Security warning" : "Säkerhetsvarning", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Din datakatalog och filer är förmodligen tillgängliga från Internet, eftersom .htaccess-filen inte fungerar.", + "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "För information om hur man korrekt konfigurerar din server se <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">dokumentationen</a>.", "Create an <strong>admin account</strong>" : "Skapa ett <strong>administratörskonto</strong>", "Username" : "Användarnamn", "Storage & database" : "Lagring & databas", "Data folder" : "Datamapp", "Configure the database" : "Konfigurera databasen", "Only %s is available." : "Endast %s är tillgänglig.", + "Install and activate additional PHP modules to choose other database types." : "Installera och aktivera ytterligare moduler för att kunna välja andra databas-typer.", "For more details check out the documentation." : "För mer detaljer kolla dokumentationen", "Database user" : "Databasanvändare", "Database password" : "Lösenord till databasen", "Database name" : "Databasnamn", "Database tablespace" : "Databas tabellutrymme", "Database host" : "Databasserver", + "Performance warning" : "Prestanda varning", "SQLite will be used as database." : "SQLite kommer att användas som databas", + "For larger installations we recommend to choose a different database backend." : "För större installationer rekommenderar vi at man väljer en annan databasmotor.", + "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Speciellt när desktop klienten för filsynkronisering används så avråds användande av SQLite.", "Finish setup" : "Avsluta installation", "Finishing …" : "Avslutar ...", "Need help?" : "Behöver du hjälp?", "See the documentation" : "Kolla dokumentationen", "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Hej där,<br><br>ville bara informera dig om att %s delade <strong>%s</strong> med dig.<br><a href=\"%s\">Visa den!</a><br><br>", + "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Denna applikationen kräver JavaScript för att fungera korrekt. Var god {linkstart}aktivera JavaScript{linkend} och ladda om sidan.", "Log out" : "Logga ut", "Search" : "Sök", "Server side authentication failed!" : "Servern misslyckades med autentisering!", @@ -253,6 +291,7 @@ OC.L10N.register( "Contact your system administrator if this message persists or appeared unexpectedly." : "Hör av dig till din systemadministratör ifall detta meddelande fortsätter eller visas oväntat.", "Thank you for your patience." : "Tack för ditt tålamod.", "You are accessing the server from an untrusted domain." : "Du ansluter till servern från en osäker domän.", + "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." : "Var god kontakta din administratör. Om du är en administratör för denna installationen konfigurera \"trusted_domains\" i inställnings i config/config.php. En exempelkonfiguration återfinns i confg/config.sample.php.", "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Beroende på din konfiguartion, så finns det möjlighet att du som administratör kan använda knappen nedan för att verifiera på denna domän.", "Add \"%s\" as trusted domain" : "Lägg till \"%s\" som en pålitlig domän", "App update required" : "Appen behöver uppdateras", diff --git a/core/l10n/sv.json b/core/l10n/sv.json index fc05448e02d..adc6a1a82f9 100644 --- a/core/l10n/sv.json +++ b/core/l10n/sv.json @@ -36,6 +36,7 @@ "Couldn't reset password because the token is invalid" : "Kunde inte återställa lösenordet på grund av felaktig token", "Couldn't reset password because the token is expired" : "Lösenord kunde inte återställas eftersom \"token\" har utgått", "Couldn't send reset email. Please make sure your username is correct." : "Kunde inte skicka återställningsmail. Vänligen kontrollera att ditt användarnamn är korrekt.", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Kunde inte skicka återställningsmail eftersom det saknas epost-adress för denna användaren. Kontakta din administratör", "%s password reset" : "%s återställ lösenord", "Couldn't send reset email. Please contact your administrator." : "Kunde inte skicka återställningsmail. Vänligen kontakta din administratör.", "Sunday" : "Söndag", @@ -83,6 +84,7 @@ "Oct." : "Okt.", "Nov." : "Nov.", "Dec." : "Dec.", + "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\"> Ett problem uppstod under integritetskontrollen av koden. Mer information ... </a>", "Settings" : "Inställningar", "Saving..." : "Sparar...", "Dismiss" : "Avfärda", @@ -114,7 +116,20 @@ "So-so password" : "Okej lösenord", "Good password" : "Bra lösenord", "Strong password" : "Starkt lösenord", + "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Din webbserver är inte konfigurerad korrekt för att tillåta filsynkronisering eftersom WebDAV gränssnittet verkar otillgängligt.", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Din webbserver är inte konfigurerad riktigt för att lösa \"{url}\". Vidare information kan hittas i vår <a target=\"_blank\" rel\"noreferrer\" href=\"{docLink}\">dokumentation</a>.", + "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." : "Servern har ingen fungerande internetuppkoppling. Detta betyder att vissa funktioner så som extern lagring, notifikationer om uppdateringar eller installationer utav tredjeparts applikationer inte kommer fungera. Åtkomst av filer utifrån och att skicka notifieringar via epost kanske inte fungerar heller. Vi föreslår att man aktiverar internetanslutningen för denna server om man vill använda samtliga funktioner.", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Ingen minnes cache har blivit konfigurerad. För att förbättra din prestanda var god konfigurera memcache om tillgängligt. Vidare information kan finnas i vår <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentation</a>.", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom är inte läsbar av PHP vilket definitivt inte är rekommenderat av säkerhetsskäl. Vidare information kan finnas i vår <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentation</a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Du kör för närvarande PHP {version}. Vi rekommenderar dig att uppgradera din PHP version så att ta fördel utav <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">prestanda och säkerhetsuppdateringar från PHP Group</a> så fort som din distribution stödjer det.", + "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 target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Konfiguration för \"reverse proxy headers\" är felaktig eller så försöker du nå Owncloud från en betrodd proxy. Om du inte försöker nå Owncloud från en betrodd proxy, detta är en säkerhetsrisk och kan möjliggöra att en hacker att förfalska sin IP adress som är synlig för Owncloud. Vidare information kan finnas i vår <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentation</a>.", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached är konfigurerad som distribuerad cache, men fel PHP modul \"memcache\" är installerad. \\OC\\Memcache\\Memcached stödjer bara \"memcached\" och inte \"memcache\". Se wiki för <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached för båda modulerna</a>.", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Några filer passerade inte integritetskontrollen. Vidare information om hur man löser dessa problem kan finnas i vår dokumentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lista över felaktiga filer…</a> / <a href=\"{rescanEndpoint}\">Sök igenom igen…</a>)", "Error occurred while checking server setup" : "Ett fel inträffade när en kontroll utav servens setup gjordes", + "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." : "Din datakatalog och dina filer är sannolikt tillgängliga över internet. .htaccess filen fungerar ej korrekt. Vi uppmuntrar starkt att du konfigurerar din webbserver på ett sätt som inte gör din datakatalog tillgänglig på nätet eller att man flyttar hela datakatalogen ut ifrån webbserverns webbrot.", + "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 headern är inte konfigurerad att evalueras till \"{expected}\". Detta är en potensiell säkerhetsrisk och vi rekommenderar dig åtgärda denna inställning.", + "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "The \"Strict-Transport-Security\" HTTP headern är inte konfigurerad till minst \"{seconds}\" sekunder. För förbättrad säkerhet rekommenderas aktivering utav HSTS som beskrivs i våra <a href=\"{docUrl}\" rel=\"noreferrer\">säkerhetstips</a>.", + "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Du har begärt denna sidan över HTTP. Vi föreslår starkt att du konfigurerar din webbserver att kräva använding utav HTTPS istället, som beskrivs i våra <a href=\"{docUrl}\">säkerhetstips</a>.", "Shared" : "Delad", "Shared with {recipients}" : "Delad med {recipients}", "Error" : "Fel", @@ -148,18 +163,30 @@ "change" : "ändra", "delete" : "radera", "access control" : "åtkomstkontroll", + "Could not unshare" : "Kunde inte odela", + "Share details could not be loaded for this item." : "Delningsdetaljer kunde inte laddas för detta objekt.", + "No users or groups found for {search}" : "Inga användare eller grupper funna för {search}", + "No users found for {search}" : "Inga användare funna för {search}", "An error occured. Please try again" : "Ett fel uppstod. Var god försök igen", "{sharee} (group)" : "{sharee} (group)", "{sharee} (at {server})" : "{sharee} (at {server})", "{sharee} (remote)" : "{sharee} (remote)", "Share" : "Dela", "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Dela med folk på andra ownClouds med följande syntax username@example.com/owncloud", + "Share with users…" : "Dela med användare...", + "Share with users, groups or remote users…" : "Dela med användare, grupper och fjärranvändare...", + "Share with users or groups…" : "Dela med användare eller grupper...", + "Share with users or remote users…" : "Dela med användare eller fjärranvändare...", + "Error removing share" : "Fel uppstod när delning försökte tas bort", "Warning" : "Varning", "Error while sending notification" : "Fel när notifikation skulle skickas", + "Non-existing tag #{tag}" : "Icke-existerande tag #{tag}", + "not assignable" : "Ej tilldelningsbar", "invisible" : "osynlig", "({scope})" : "({scope})", "Delete" : "Radera", "Rename" : "Byt namn", + "Collaborative tags" : "Sammarbets taggar", "The object type is not specified." : "Objekttypen är inte specificerad.", "Enter new" : "Skriv nytt", "Add" : "Lägg till", @@ -173,12 +200,17 @@ "Hello {name}" : "Hej {name}", "new" : "ny", "_download %n file_::_download %n files_" : ["Ladda ner %n fil","Ladda ner %n filer"], + "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Uppgradering pågår, att lämna denna sidan kan störa processen i vissa miljöer", "Updating {productName} to version {version}, this may take a while." : "Uppdaterar {productName} till version {version}, detta kan ta en stund.", "An error occurred." : "Ett fel inträffade.", "Please reload the page." : "Vänligen ladda om sidan.", + "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Uppdateringen misslyckades. För mer information <a href=\"{url}\">kolla vår forum post</a> angående problemet.", "The update was unsuccessful. " : "Uppdateringen misslyckades.", "The update was successful. There were warnings." : "Uppdateringen lyckades. Det finns varningar.", "The update was successful. Redirecting you to ownCloud now." : "Uppdateringen lyckades. Du omdirigeras nu till OwnCloud.", + "Searching other places" : "Söker på andra platser", + "No search results in other folders" : "Inga sökresultat i andra mappar", + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} sökresultat i en annan mapp","{count} sökresultat i andra mappar"], "Personal" : "Personligt", "Users" : "Användare", "Apps" : "Program", @@ -213,24 +245,30 @@ "Trace" : "Spåra", "Security warning" : "Säkerhetsvarning", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Din datakatalog och filer är förmodligen tillgängliga från Internet, eftersom .htaccess-filen inte fungerar.", + "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "För information om hur man korrekt konfigurerar din server se <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">dokumentationen</a>.", "Create an <strong>admin account</strong>" : "Skapa ett <strong>administratörskonto</strong>", "Username" : "Användarnamn", "Storage & database" : "Lagring & databas", "Data folder" : "Datamapp", "Configure the database" : "Konfigurera databasen", "Only %s is available." : "Endast %s är tillgänglig.", + "Install and activate additional PHP modules to choose other database types." : "Installera och aktivera ytterligare moduler för att kunna välja andra databas-typer.", "For more details check out the documentation." : "För mer detaljer kolla dokumentationen", "Database user" : "Databasanvändare", "Database password" : "Lösenord till databasen", "Database name" : "Databasnamn", "Database tablespace" : "Databas tabellutrymme", "Database host" : "Databasserver", + "Performance warning" : "Prestanda varning", "SQLite will be used as database." : "SQLite kommer att användas som databas", + "For larger installations we recommend to choose a different database backend." : "För större installationer rekommenderar vi at man väljer en annan databasmotor.", + "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Speciellt när desktop klienten för filsynkronisering används så avråds användande av SQLite.", "Finish setup" : "Avsluta installation", "Finishing …" : "Avslutar ...", "Need help?" : "Behöver du hjälp?", "See the documentation" : "Kolla dokumentationen", "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Hej där,<br><br>ville bara informera dig om att %s delade <strong>%s</strong> med dig.<br><a href=\"%s\">Visa den!</a><br><br>", + "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Denna applikationen kräver JavaScript för att fungera korrekt. Var god {linkstart}aktivera JavaScript{linkend} och ladda om sidan.", "Log out" : "Logga ut", "Search" : "Sök", "Server side authentication failed!" : "Servern misslyckades med autentisering!", @@ -251,6 +289,7 @@ "Contact your system administrator if this message persists or appeared unexpectedly." : "Hör av dig till din systemadministratör ifall detta meddelande fortsätter eller visas oväntat.", "Thank you for your patience." : "Tack för ditt tålamod.", "You are accessing the server from an untrusted domain." : "Du ansluter till servern från en osäker domän.", + "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." : "Var god kontakta din administratör. Om du är en administratör för denna installationen konfigurera \"trusted_domains\" i inställnings i config/config.php. En exempelkonfiguration återfinns i confg/config.sample.php.", "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Beroende på din konfiguartion, så finns det möjlighet att du som administratör kan använda knappen nedan för att verifiera på denna domän.", "Add \"%s\" as trusted domain" : "Lägg till \"%s\" som en pålitlig domän", "App update required" : "Appen behöver uppdateras", diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js index 4bb8e61dfb2..87784dd896a 100644 --- a/core/l10n/zh_TW.js +++ b/core/l10n/zh_TW.js @@ -156,14 +156,30 @@ OC.L10N.register( "change" : "更動", "delete" : "刪除", "access control" : "存取控制", + "Could not unshare" : "無法取消分享", "Share details could not be loaded for this item." : "無法載入分享細節", + "No users or groups found for {search}" : "沒有群組或使用者符合 {search}", + "No users found for {search}" : "沒有使用者符合 {search}", "An error occured. Please try again" : "發生錯誤,請重試", + "{sharee} (group)" : "{sharee} (群組)", + "{sharee} (at {server})" : "{sharee} (在 {server})", + "{sharee} (remote)" : "{sharee} (遠端)", "Share" : "分享", "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "與其他在ownCloud上的人們分享,請使用此格式 username@example.com/owncloud", + "Share with users…" : "分享給其他使用者…", + "Share with users, groups or remote users…" : "分享給其他使用者、群組或遠端使用者…", + "Share with users or groups…" : "分享給群組或使用者…", + "Share with users or remote users…" : "分享給使用者或遠端使用者…", + "Error removing share" : "移除分享時發生錯誤", "Warning" : "警告", "Error while sending notification" : "發送通知錯誤", + "Non-existing tag #{tag}" : "不存在的標籤 #{tag}", + "not assignable" : "不可指定", + "invisible" : "不可見", + "({scope})" : "({scope})", "Delete" : "刪除", "Rename" : "重新命名", + "Collaborative tags" : "標籤", "The object type is not specified." : "未指定物件類型", "Enter new" : "輸入新的", "Add" : "增加", @@ -175,11 +191,13 @@ OC.L10N.register( "sunny" : "晴朗的", "Hello {name}, the weather is {weather}" : "哈囉 {name}, 天氣是 {weather}", "Hello {name}" : "哈囉 {name}", + "new" : "新", "_download %n file_::_download %n files_" : ["下載 %n 個檔案"], "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "正在更新,在某些狀況下,離開本頁面可能會導致更新中斷", "Updating {productName} to version {version}, this may take a while." : "正在更新 {productName} 到版本 {version} ,請稍候", "An error occurred." : "發生錯誤", "Please reload the page." : "請重新整理頁面", + "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "更新失敗,檢視<a href=\"{url}\">論壇上的文章</a>來瞭解更多", "The update was unsuccessful. " : "更新失敗", "The update was successful. There were warnings." : "更新成功,有警告訊息", "The update was successful. Redirecting you to ownCloud now." : "升級成功,正將您重新導向至 ownCloud 。", diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json index ef0a3a81a8c..8d2d03b5c50 100644 --- a/core/l10n/zh_TW.json +++ b/core/l10n/zh_TW.json @@ -154,14 +154,30 @@ "change" : "更動", "delete" : "刪除", "access control" : "存取控制", + "Could not unshare" : "無法取消分享", "Share details could not be loaded for this item." : "無法載入分享細節", + "No users or groups found for {search}" : "沒有群組或使用者符合 {search}", + "No users found for {search}" : "沒有使用者符合 {search}", "An error occured. Please try again" : "發生錯誤,請重試", + "{sharee} (group)" : "{sharee} (群組)", + "{sharee} (at {server})" : "{sharee} (在 {server})", + "{sharee} (remote)" : "{sharee} (遠端)", "Share" : "分享", "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "與其他在ownCloud上的人們分享,請使用此格式 username@example.com/owncloud", + "Share with users…" : "分享給其他使用者…", + "Share with users, groups or remote users…" : "分享給其他使用者、群組或遠端使用者…", + "Share with users or groups…" : "分享給群組或使用者…", + "Share with users or remote users…" : "分享給使用者或遠端使用者…", + "Error removing share" : "移除分享時發生錯誤", "Warning" : "警告", "Error while sending notification" : "發送通知錯誤", + "Non-existing tag #{tag}" : "不存在的標籤 #{tag}", + "not assignable" : "不可指定", + "invisible" : "不可見", + "({scope})" : "({scope})", "Delete" : "刪除", "Rename" : "重新命名", + "Collaborative tags" : "標籤", "The object type is not specified." : "未指定物件類型", "Enter new" : "輸入新的", "Add" : "增加", @@ -173,11 +189,13 @@ "sunny" : "晴朗的", "Hello {name}, the weather is {weather}" : "哈囉 {name}, 天氣是 {weather}", "Hello {name}" : "哈囉 {name}", + "new" : "新", "_download %n file_::_download %n files_" : ["下載 %n 個檔案"], "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "正在更新,在某些狀況下,離開本頁面可能會導致更新中斷", "Updating {productName} to version {version}, this may take a while." : "正在更新 {productName} 到版本 {version} ,請稍候", "An error occurred." : "發生錯誤", "Please reload the page." : "請重新整理頁面", + "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "更新失敗,檢視<a href=\"{url}\">論壇上的文章</a>來瞭解更多", "The update was unsuccessful. " : "更新失敗", "The update was successful. There were warnings." : "更新成功,有警告訊息", "The update was successful. Redirecting you to ownCloud now." : "升級成功,正將您重新導向至 ownCloud 。", diff --git a/core/templates/layout.base.php b/core/templates/layout.base.php index 3a974b00c2c..29c2ca6696d 100644 --- a/core/templates/layout.base.php +++ b/core/templates/layout.base.php @@ -15,7 +15,10 @@ <link rel="apple-touch-icon-precomposed" href="<?php print_unescaped(image_path('', 'favicon-touch.png')); ?>"> <link rel="mask-icon" sizes="any" href="<?php print_unescaped(image_path('', 'favicon-mask.svg')); ?>" color="#1d2d44"> <?php foreach ($_['cssfiles'] as $cssfile): ?> - <link rel="stylesheet" href="<?php print_unescaped($cssfile); ?>" media="screen"> + <link rel="stylesheet" href="<?php print_unescaped($cssfile); ?>"> + <?php endforeach; ?> + <?php foreach($_['printcssfiles'] as $cssfile): ?> + <link rel="stylesheet" href="<?php print_unescaped($cssfile); ?>" media="print"> <?php endforeach; ?> <?php foreach ($_['jsfiles'] as $jsfile): ?> <script src="<?php print_unescaped($jsfile); ?>"></script> diff --git a/core/templates/layout.guest.php b/core/templates/layout.guest.php index 7ee282faf0f..3f9c47f9aa6 100644 --- a/core/templates/layout.guest.php +++ b/core/templates/layout.guest.php @@ -16,7 +16,10 @@ <link rel="apple-touch-icon-precomposed" href="<?php print_unescaped(image_path('', 'favicon-touch.png')); ?>"> <link rel="mask-icon" sizes="any" href="<?php print_unescaped(image_path('', 'favicon-mask.svg')); ?>" color="#1d2d44"> <?php foreach($_['cssfiles'] as $cssfile): ?> - <link rel="stylesheet" href="<?php print_unescaped($cssfile); ?>" media="screen"> + <link rel="stylesheet" href="<?php print_unescaped($cssfile); ?>"> + <?php endforeach; ?> + <?php foreach($_['printcssfiles'] as $cssfile): ?> + <link rel="stylesheet" href="<?php print_unescaped($cssfile); ?>" media="print"> <?php endforeach; ?> <?php foreach($_['jsfiles'] as $jsfile): ?> <script src="<?php print_unescaped($jsfile); ?>"></script> diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index dd4864ea73f..601af6077f4 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -23,7 +23,10 @@ <link rel="apple-touch-icon-precomposed" href="<?php print_unescaped(image_path($_['appid'], 'favicon-touch.png')); ?>"> <link rel="mask-icon" sizes="any" href="<?php print_unescaped(image_path($_['appid'], 'favicon-mask.svg')); ?>" color="#1d2d44"> <?php foreach($_['cssfiles'] as $cssfile): ?> - <link rel="stylesheet" href="<?php print_unescaped($cssfile); ?>" media="screen"> + <link rel="stylesheet" href="<?php print_unescaped($cssfile); ?>"> + <?php endforeach; ?> + <?php foreach($_['printcssfiles'] as $cssfile): ?> + <link rel="stylesheet" href="<?php print_unescaped($cssfile); ?>" media="print"> <?php endforeach; ?> <?php foreach($_['jsfiles'] as $jsfile): ?> <script src="<?php print_unescaped($jsfile); ?>"></script> diff --git a/lib/base.php b/lib/base.php index 1a3dbbaa56a..f3076a1181a 100644 --- a/lib/base.php +++ b/lib/base.php @@ -722,7 +722,8 @@ class OC { } private static function registerEncryptionWrapper() { - \OCP\Util::connectHook('OC_Filesystem', 'preSetup', 'OC\Encryption\Manager', 'setupStorage'); + $manager = self::$server->getEncryptionManager(); + \OCP\Util::connectHook('OC_Filesystem', 'preSetup', $manager, 'setupStorage'); } private static function registerEncryptionHooks() { diff --git a/lib/l10n/de.js b/lib/l10n/de.js index 9718e03f50d..64250641b77 100644 --- a/lib/l10n/de.js +++ b/lib/l10n/de.js @@ -26,6 +26,7 @@ OC.L10N.register( "Users" : "Benutzer", "Admin" : "Administration", "Recommended" : "Empfohlen", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "Die Anwendung \"%s\" kann nicht installiert werden, weil die Anwendungsinfodatei nicht gelesen werden kann.", "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "Die App „%s“ kann nicht installiert werden, da sie mit dieser ownCloud-Version nicht kompatibel ist.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Die App „%s“ kann nicht installiert werden, da die folgenden Abhängigkeiten nicht erfüllt sind: %s", "No app name specified" : "Es wurde kein App-Name angegeben", @@ -60,6 +61,7 @@ OC.L10N.register( "Archives of type %s are not supported" : "Archive vom Typ %s werden nicht unterstützt", "Failed to open archive when installing app" : "Das Archiv konnte bei der Installation der Applikation nicht geöffnet werden", "App does not provide an info.xml file" : "Die Applikation enthält keine info.xml Datei", + "App cannot be installed because appinfo file cannot be read." : "Die Anwendung kann nicht installiert werden, weil die Anwendungsinfodatei nicht gelesen werden kann.", "Signature could not get checked. Please contact the app developer and check your admin screen." : "Die Signatur konnte nicht überprüft werden. Bitte kontaktiere die App-Entwickler und überprüfe deinen Admin-Bildschirm.", "App can't be installed because of not allowed code in the App" : "Die App kann nicht installiert werden, weil sie unerlaubten Code enthält", "App can't be installed because it is not compatible with this version of ownCloud" : "Die App kann nicht installiert werden, weil sie mit dieser Version von ownCloud nicht kompatibel ist", diff --git a/lib/l10n/de.json b/lib/l10n/de.json index e4fab43f812..633ab47d9de 100644 --- a/lib/l10n/de.json +++ b/lib/l10n/de.json @@ -24,6 +24,7 @@ "Users" : "Benutzer", "Admin" : "Administration", "Recommended" : "Empfohlen", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "Die Anwendung \"%s\" kann nicht installiert werden, weil die Anwendungsinfodatei nicht gelesen werden kann.", "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "Die App „%s“ kann nicht installiert werden, da sie mit dieser ownCloud-Version nicht kompatibel ist.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Die App „%s“ kann nicht installiert werden, da die folgenden Abhängigkeiten nicht erfüllt sind: %s", "No app name specified" : "Es wurde kein App-Name angegeben", @@ -58,6 +59,7 @@ "Archives of type %s are not supported" : "Archive vom Typ %s werden nicht unterstützt", "Failed to open archive when installing app" : "Das Archiv konnte bei der Installation der Applikation nicht geöffnet werden", "App does not provide an info.xml file" : "Die Applikation enthält keine info.xml Datei", + "App cannot be installed because appinfo file cannot be read." : "Die Anwendung kann nicht installiert werden, weil die Anwendungsinfodatei nicht gelesen werden kann.", "Signature could not get checked. Please contact the app developer and check your admin screen." : "Die Signatur konnte nicht überprüft werden. Bitte kontaktiere die App-Entwickler und überprüfe deinen Admin-Bildschirm.", "App can't be installed because of not allowed code in the App" : "Die App kann nicht installiert werden, weil sie unerlaubten Code enthält", "App can't be installed because it is not compatible with this version of ownCloud" : "Die App kann nicht installiert werden, weil sie mit dieser Version von ownCloud nicht kompatibel ist", diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js index 9233549ef23..54270493749 100644 --- a/lib/l10n/de_DE.js +++ b/lib/l10n/de_DE.js @@ -26,6 +26,7 @@ OC.L10N.register( "Users" : "Benutzer", "Admin" : "Administrator", "Recommended" : "Empfohlen", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "Die Anwendung \"%s\" kann nicht installiert werden, weil die Anwendungsinfodatei nicht gelesen werden kann.", "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "Die App „%s“ kann nicht installiert werden, da sie mit dieser ownCloud-Version nicht kompatibel ist.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Die App „%s“ kann nicht installiert werden, da die folgenden Abhängigkeiten nicht erfüllt sind: %s", "No app name specified" : "Es wurde kein App-Name angegeben", @@ -60,6 +61,7 @@ OC.L10N.register( "Archives of type %s are not supported" : "Archive des Typs %s werden nicht unterstützt.", "Failed to open archive when installing app" : "Das Archiv konnte bei der Installation der Applikation nicht geöffnet werden", "App does not provide an info.xml file" : "Die Applikation enthält keine info.xml Datei", + "App cannot be installed because appinfo file cannot be read." : "Die Anwendung kann nicht installiert werden, weil die Anwendungsinfodatei nicht gelesen werden kann.", "Signature could not get checked. Please contact the app developer and check your admin screen." : "Signatur konnte nicht überprüft werden. Bitte kontaktieren Sie den App Entwickler und überprüfen Sie Ihren Administrationsbereich.", "App can't be installed because of not allowed code in the App" : "Die App kann nicht installiert werden, weil sie unerlaubten Code enthält", "App can't be installed because it is not compatible with this version of ownCloud" : "Die Anwendung konnte nicht installiert werden, weil Sie nicht mit dieser Version von ownCloud kompatibel ist.", diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json index f1b83520dc4..49abf03a567 100644 --- a/lib/l10n/de_DE.json +++ b/lib/l10n/de_DE.json @@ -24,6 +24,7 @@ "Users" : "Benutzer", "Admin" : "Administrator", "Recommended" : "Empfohlen", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "Die Anwendung \"%s\" kann nicht installiert werden, weil die Anwendungsinfodatei nicht gelesen werden kann.", "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "Die App „%s“ kann nicht installiert werden, da sie mit dieser ownCloud-Version nicht kompatibel ist.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Die App „%s“ kann nicht installiert werden, da die folgenden Abhängigkeiten nicht erfüllt sind: %s", "No app name specified" : "Es wurde kein App-Name angegeben", @@ -58,6 +59,7 @@ "Archives of type %s are not supported" : "Archive des Typs %s werden nicht unterstützt.", "Failed to open archive when installing app" : "Das Archiv konnte bei der Installation der Applikation nicht geöffnet werden", "App does not provide an info.xml file" : "Die Applikation enthält keine info.xml Datei", + "App cannot be installed because appinfo file cannot be read." : "Die Anwendung kann nicht installiert werden, weil die Anwendungsinfodatei nicht gelesen werden kann.", "Signature could not get checked. Please contact the app developer and check your admin screen." : "Signatur konnte nicht überprüft werden. Bitte kontaktieren Sie den App Entwickler und überprüfen Sie Ihren Administrationsbereich.", "App can't be installed because of not allowed code in the App" : "Die App kann nicht installiert werden, weil sie unerlaubten Code enthält", "App can't be installed because it is not compatible with this version of ownCloud" : "Die Anwendung konnte nicht installiert werden, weil Sie nicht mit dieser Version von ownCloud kompatibel ist.", diff --git a/lib/l10n/es.js b/lib/l10n/es.js index aaeb2ec6239..b2b04e15f3c 100644 --- a/lib/l10n/es.js +++ b/lib/l10n/es.js @@ -130,6 +130,7 @@ OC.L10N.register( "Cannot write into \"apps\" directory" : "No se puede escribir en el directorio de \"apps\"", "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Esto puede solucionarse fácilmente %sdándole permisos de escritura al servidor en el directorio%s de apps o deshabilitando la tienda de apps en el archivo de configuración.", "Cannot create \"data\" directory (%s)" : "No puedo crear del directorio \"data\" (%s)", + "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Normalmente esto se puede solucionar <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">dándole al servidor web permisos de escritura en todo el directorio o el directorio 'root'</a>", "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Los permisos normalmente puede solucionarse %sdándole al servidor permisos de escritura del directorio raíz%s.", "Setting locale to %s failed" : "Falló la activación del idioma %s ", "Please install one of these locales on your system and restart your webserver." : "Instale uno de estos idiomas en su sistema y reinicie su servidor web.", diff --git a/lib/l10n/es.json b/lib/l10n/es.json index 362c2e34ca5..db87962de70 100644 --- a/lib/l10n/es.json +++ b/lib/l10n/es.json @@ -128,6 +128,7 @@ "Cannot write into \"apps\" directory" : "No se puede escribir en el directorio de \"apps\"", "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Esto puede solucionarse fácilmente %sdándole permisos de escritura al servidor en el directorio%s de apps o deshabilitando la tienda de apps en el archivo de configuración.", "Cannot create \"data\" directory (%s)" : "No puedo crear del directorio \"data\" (%s)", + "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Normalmente esto se puede solucionar <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">dándole al servidor web permisos de escritura en todo el directorio o el directorio 'root'</a>", "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Los permisos normalmente puede solucionarse %sdándole al servidor permisos de escritura del directorio raíz%s.", "Setting locale to %s failed" : "Falló la activación del idioma %s ", "Please install one of these locales on your system and restart your webserver." : "Instale uno de estos idiomas en su sistema y reinicie su servidor web.", diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js index 39b937279ad..51f22a711a4 100644 --- a/lib/l10n/fr.js +++ b/lib/l10n/fr.js @@ -26,6 +26,7 @@ OC.L10N.register( "Users" : "Utilisateurs", "Admin" : "Administration", "Recommended" : "Recommandée", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "L'application \"%s\" ne peut pas être installée car le fichier appinfo ne peut pas être lu.", "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "L'application \"%s\" ne peut pas être installée car elle n'est pas compatible avec cette version de ownCloud.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "L'application \"%s\" ne peut pas être installée à cause des dépendances suivantes non satisfaites : %s", "No app name specified" : "Aucun nom d'application spécifié", @@ -60,6 +61,7 @@ OC.L10N.register( "Archives of type %s are not supported" : "Les archives de type %s ne sont pas prises en charge", "Failed to open archive when installing app" : "Échec de l'ouverture de l'archive lors de l'installation de l'application", "App does not provide an info.xml file" : "L'application ne fournit pas de fichier info.xml", + "App cannot be installed because appinfo file cannot be read." : "L'application ne peut pas être installée car le fichier appinfo ne peut pas être lu.", "Signature could not get checked. Please contact the app developer and check your admin screen." : "La signature n'a pas pu être vérifiée. Merci de contacter le développeur de l'application et de vérifier votre page d'administration.", "App can't be installed because of not allowed code in the App" : "L'application ne peut être installée car elle contient du code non-autorisé", "App can't be installed because it is not compatible with this version of ownCloud" : "L'application ne peut être installée car elle n'est pas compatible avec cette version de ownCloud", diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json index d635304b0e7..d7351b2d422 100644 --- a/lib/l10n/fr.json +++ b/lib/l10n/fr.json @@ -24,6 +24,7 @@ "Users" : "Utilisateurs", "Admin" : "Administration", "Recommended" : "Recommandée", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "L'application \"%s\" ne peut pas être installée car le fichier appinfo ne peut pas être lu.", "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "L'application \"%s\" ne peut pas être installée car elle n'est pas compatible avec cette version de ownCloud.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "L'application \"%s\" ne peut pas être installée à cause des dépendances suivantes non satisfaites : %s", "No app name specified" : "Aucun nom d'application spécifié", @@ -58,6 +59,7 @@ "Archives of type %s are not supported" : "Les archives de type %s ne sont pas prises en charge", "Failed to open archive when installing app" : "Échec de l'ouverture de l'archive lors de l'installation de l'application", "App does not provide an info.xml file" : "L'application ne fournit pas de fichier info.xml", + "App cannot be installed because appinfo file cannot be read." : "L'application ne peut pas être installée car le fichier appinfo ne peut pas être lu.", "Signature could not get checked. Please contact the app developer and check your admin screen." : "La signature n'a pas pu être vérifiée. Merci de contacter le développeur de l'application et de vérifier votre page d'administration.", "App can't be installed because of not allowed code in the App" : "L'application ne peut être installée car elle contient du code non-autorisé", "App can't be installed because it is not compatible with this version of ownCloud" : "L'application ne peut être installée car elle n'est pas compatible avec cette version de ownCloud", diff --git a/lib/l10n/it.js b/lib/l10n/it.js index 2b52d575822..ad0b50d3fc5 100644 --- a/lib/l10n/it.js +++ b/lib/l10n/it.js @@ -26,6 +26,7 @@ OC.L10N.register( "Users" : "Utenti", "Admin" : "Admin", "Recommended" : "Consigliata", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "L'applicazione \"%s\" non può essere installata poiché il file appinfo non può essere letto.", "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "L'applicazione \"%s\" non può essere installata poiché non è compatibile con questa versione di ownCloud.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "L'applicazione \"%s\" non può essere installata poiché le seguenti dipendenze non sono soddisfatte: %s", "No app name specified" : "Il nome dell'applicazione non è specificato", @@ -60,6 +61,7 @@ OC.L10N.register( "Archives of type %s are not supported" : "Gli archivi di tipo %s non sono supportati", "Failed to open archive when installing app" : "Apertura archivio non riuscita durante l'installazione dell'applicazione", "App does not provide an info.xml file" : "L'applicazione non fornisce un file info.xml", + "App cannot be installed because appinfo file cannot be read." : "L'applicazione non può essere installata poiché il file appinfo non può essere letto.", "Signature could not get checked. Please contact the app developer and check your admin screen." : "La firma non può essere verificata. Contatta lo sviluppatore dell'applicazione e controlla la schermata di amministrazione.", "App can't be installed because of not allowed code in the App" : "L'applicazione non può essere installata a causa di codice non consentito al suo interno", "App can't be installed because it is not compatible with this version of ownCloud" : "L'applicazione non può essere installata poiché non è compatibile con questa versione di ownCloud", diff --git a/lib/l10n/it.json b/lib/l10n/it.json index 9e238d7fa12..93acead882f 100644 --- a/lib/l10n/it.json +++ b/lib/l10n/it.json @@ -24,6 +24,7 @@ "Users" : "Utenti", "Admin" : "Admin", "Recommended" : "Consigliata", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "L'applicazione \"%s\" non può essere installata poiché il file appinfo non può essere letto.", "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "L'applicazione \"%s\" non può essere installata poiché non è compatibile con questa versione di ownCloud.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "L'applicazione \"%s\" non può essere installata poiché le seguenti dipendenze non sono soddisfatte: %s", "No app name specified" : "Il nome dell'applicazione non è specificato", @@ -58,6 +59,7 @@ "Archives of type %s are not supported" : "Gli archivi di tipo %s non sono supportati", "Failed to open archive when installing app" : "Apertura archivio non riuscita durante l'installazione dell'applicazione", "App does not provide an info.xml file" : "L'applicazione non fornisce un file info.xml", + "App cannot be installed because appinfo file cannot be read." : "L'applicazione non può essere installata poiché il file appinfo non può essere letto.", "Signature could not get checked. Please contact the app developer and check your admin screen." : "La firma non può essere verificata. Contatta lo sviluppatore dell'applicazione e controlla la schermata di amministrazione.", "App can't be installed because of not allowed code in the App" : "L'applicazione non può essere installata a causa di codice non consentito al suo interno", "App can't be installed because it is not compatible with this version of ownCloud" : "L'applicazione non può essere installata poiché non è compatibile con questa versione di ownCloud", diff --git a/lib/l10n/nl.js b/lib/l10n/nl.js index 47605b895df..41ca12d45d7 100644 --- a/lib/l10n/nl.js +++ b/lib/l10n/nl.js @@ -131,6 +131,7 @@ OC.L10N.register( "Cannot write into \"apps\" directory" : "Kan niet schrijven naar de \"apps\" directory", "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Dit kan hersteld worden door de webserver schrijfrechten te %s geven op de appsdirectory %s of door de appstore te deactiveren in het configbestand.", "Cannot create \"data\" directory (%s)" : "Kan de \"data\" directory (%s) niet aanmaken", + "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Dit kan worden hersteld door <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\"> de webserver schrijfrechten te geven tot de hoofddirectory</a>.", "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Dit kan hersteld worden door de webserver schrijfrechten te %s geven op de hoofddirectory %s.", "Setting locale to %s failed" : "Instellen taal op %s mislukte", "Please install one of these locales on your system and restart your webserver." : "Installeer één van de talen op uw systeem en herstart uw webserver.", diff --git a/lib/l10n/nl.json b/lib/l10n/nl.json index e7a8cb5f020..c43e2ea15ca 100644 --- a/lib/l10n/nl.json +++ b/lib/l10n/nl.json @@ -129,6 +129,7 @@ "Cannot write into \"apps\" directory" : "Kan niet schrijven naar de \"apps\" directory", "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Dit kan hersteld worden door de webserver schrijfrechten te %s geven op de appsdirectory %s of door de appstore te deactiveren in het configbestand.", "Cannot create \"data\" directory (%s)" : "Kan de \"data\" directory (%s) niet aanmaken", + "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Dit kan worden hersteld door <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\"> de webserver schrijfrechten te geven tot de hoofddirectory</a>.", "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Dit kan hersteld worden door de webserver schrijfrechten te %s geven op de hoofddirectory %s.", "Setting locale to %s failed" : "Instellen taal op %s mislukte", "Please install one of these locales on your system and restart your webserver." : "Installeer één van de talen op uw systeem en herstart uw webserver.", diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js index 2abe0764537..1f2c517bfea 100644 --- a/lib/l10n/pt_BR.js +++ b/lib/l10n/pt_BR.js @@ -26,6 +26,7 @@ OC.L10N.register( "Users" : "Usuários", "Admin" : "Admin", "Recommended" : "Recomendado", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "O App \"%s\" não pode ser instalado porque o arquivo appinfo não pode ser lido.", "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "App \"%s\" não pode ser instalado porque não é compatível com esta versão do ownCloud.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "App \"%s\" não pode ser instalado porque as seguintes dependências não foram cumpridas: %s", "No app name specified" : "O nome do aplicativo não foi especificado.", @@ -60,6 +61,7 @@ OC.L10N.register( "Archives of type %s are not supported" : "Arquivos do tipo %s não são suportados", "Failed to open archive when installing app" : "Falha para abrir o arquivo enquanto instalava o aplicativo", "App does not provide an info.xml file" : "O aplicativo não fornece um arquivo info.xml", + "App cannot be installed because appinfo file cannot be read." : "O App não pode ser instalado porque o arquivo appinfo não pode ser lido.", "Signature could not get checked. Please contact the app developer and check your admin screen." : "A assinatura não pode ser verificada. Por favor entre em contato com o desenvolvedor do aplicativo e verificar sua tela de administração.", "App can't be installed because of not allowed code in the App" : "O aplicativo não pode ser instalado por causa do código não permitido no Aplivativo", "App can't be installed because it is not compatible with this version of ownCloud" : "O aplicativo não pode ser instalado porque não é compatível com esta versão do ownCloud", diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json index af3cc1ba0f2..48cd31f22c5 100644 --- a/lib/l10n/pt_BR.json +++ b/lib/l10n/pt_BR.json @@ -24,6 +24,7 @@ "Users" : "Usuários", "Admin" : "Admin", "Recommended" : "Recomendado", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "O App \"%s\" não pode ser instalado porque o arquivo appinfo não pode ser lido.", "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "App \"%s\" não pode ser instalado porque não é compatível com esta versão do ownCloud.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "App \"%s\" não pode ser instalado porque as seguintes dependências não foram cumpridas: %s", "No app name specified" : "O nome do aplicativo não foi especificado.", @@ -58,6 +59,7 @@ "Archives of type %s are not supported" : "Arquivos do tipo %s não são suportados", "Failed to open archive when installing app" : "Falha para abrir o arquivo enquanto instalava o aplicativo", "App does not provide an info.xml file" : "O aplicativo não fornece um arquivo info.xml", + "App cannot be installed because appinfo file cannot be read." : "O App não pode ser instalado porque o arquivo appinfo não pode ser lido.", "Signature could not get checked. Please contact the app developer and check your admin screen." : "A assinatura não pode ser verificada. Por favor entre em contato com o desenvolvedor do aplicativo e verificar sua tela de administração.", "App can't be installed because of not allowed code in the App" : "O aplicativo não pode ser instalado por causa do código não permitido no Aplivativo", "App can't be installed because it is not compatible with this version of ownCloud" : "O aplicativo não pode ser instalado porque não é compatível com esta versão do ownCloud", diff --git a/lib/l10n/sl.js b/lib/l10n/sl.js index c9757f8e6de..47511d0c49e 100644 --- a/lib/l10n/sl.js +++ b/lib/l10n/sl.js @@ -10,6 +10,7 @@ OC.L10N.register( "You are not allowed to share %s" : "Omogočanje souporabe %s brez ustreznih dovoljenj ni mogoče.", "Cannot increase permissions of %s" : "Ni mogoče povečati dovoljen %s", "Expiration date is in the past" : "Datum preteka je že mimo!", + "Cannot set expiration date more than %s days in the future" : "Datuma pretaka ni mogoče nastaviti za več kot %s dni v prihodnosti.", "PHP %s or higher is required." : "Zahtevana je različica PHP %s ali višja.", "PHP with a version lower than %s is required." : "Zahtevana je različica PHP manj kot %s.", "Following databases are supported: %s" : "Podprte so navedene podatkovne zbirke: %s", diff --git a/lib/l10n/sl.json b/lib/l10n/sl.json index 8827701ef85..be488a84000 100644 --- a/lib/l10n/sl.json +++ b/lib/l10n/sl.json @@ -8,6 +8,7 @@ "You are not allowed to share %s" : "Omogočanje souporabe %s brez ustreznih dovoljenj ni mogoče.", "Cannot increase permissions of %s" : "Ni mogoče povečati dovoljen %s", "Expiration date is in the past" : "Datum preteka je že mimo!", + "Cannot set expiration date more than %s days in the future" : "Datuma pretaka ni mogoče nastaviti za več kot %s dni v prihodnosti.", "PHP %s or higher is required." : "Zahtevana je različica PHP %s ali višja.", "PHP with a version lower than %s is required." : "Zahtevana je različica PHP manj kot %s.", "Following databases are supported: %s" : "Podprte so navedene podatkovne zbirke: %s", diff --git a/lib/l10n/sq.js b/lib/l10n/sq.js index 7a303ba38c1..54a162455c6 100644 --- a/lib/l10n/sq.js +++ b/lib/l10n/sq.js @@ -26,6 +26,7 @@ OC.L10N.register( "Users" : "Përdorues", "Admin" : "Admin", "Recommended" : "E rekomanduar", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "Aplikacioni \"%s\" s’mund të instalohet, ngaqë s’lexohet dot kartela appinfo.", "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "Përditësimi \"%s\" s’instalohet dot, ngaqë s’është i përputhshëm me këtë version të ownCloud-it.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Përditësimi \"%s\" s’instalohet dot, ngaqë s’plotësohen varësitë vijuese: %s.", "No app name specified" : "S’u dha emër aplikacioni", @@ -60,6 +61,7 @@ OC.L10N.register( "Archives of type %s are not supported" : "Nuk mbulohen arkivat e llojit %s", "Failed to open archive when installing app" : "Dështoi në hapje arkivi teksa instalohej aplikacioni", "App does not provide an info.xml file" : "Aplikacioni s’ofron kartele të vlefshme .xml", + "App cannot be installed because appinfo file cannot be read." : "Aplikacioni s’mund të instalohet, ngaqë s’lexohet dot kartela appinfo.", "Signature could not get checked. Please contact the app developer and check your admin screen." : "Nënshkrimi s’u kontrollua dot. Ju lutemi, lidhuni me zhvilluesin e aplikacionit dhe kontrolloni te skena juaj e përgjegjësit.", "App can't be installed because of not allowed code in the App" : "Aplikacioni s’mund të instalohet, për shkak kodi të palejuar te Aplikacioni", "App can't be installed because it is not compatible with this version of ownCloud" : "Aplikacioni s’mund të instalohet, ngaqë s’është i përputhshëm me këtë version të ownCloud-it", diff --git a/lib/l10n/sq.json b/lib/l10n/sq.json index 984c0cb8890..09d48e8f52a 100644 --- a/lib/l10n/sq.json +++ b/lib/l10n/sq.json @@ -24,6 +24,7 @@ "Users" : "Përdorues", "Admin" : "Admin", "Recommended" : "E rekomanduar", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "Aplikacioni \"%s\" s’mund të instalohet, ngaqë s’lexohet dot kartela appinfo.", "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "Përditësimi \"%s\" s’instalohet dot, ngaqë s’është i përputhshëm me këtë version të ownCloud-it.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Përditësimi \"%s\" s’instalohet dot, ngaqë s’plotësohen varësitë vijuese: %s.", "No app name specified" : "S’u dha emër aplikacioni", @@ -58,6 +59,7 @@ "Archives of type %s are not supported" : "Nuk mbulohen arkivat e llojit %s", "Failed to open archive when installing app" : "Dështoi në hapje arkivi teksa instalohej aplikacioni", "App does not provide an info.xml file" : "Aplikacioni s’ofron kartele të vlefshme .xml", + "App cannot be installed because appinfo file cannot be read." : "Aplikacioni s’mund të instalohet, ngaqë s’lexohet dot kartela appinfo.", "Signature could not get checked. Please contact the app developer and check your admin screen." : "Nënshkrimi s’u kontrollua dot. Ju lutemi, lidhuni me zhvilluesin e aplikacionit dhe kontrolloni te skena juaj e përgjegjësit.", "App can't be installed because of not allowed code in the App" : "Aplikacioni s’mund të instalohet, për shkak kodi të palejuar te Aplikacioni", "App can't be installed because it is not compatible with this version of ownCloud" : "Aplikacioni s’mund të instalohet, ngaqë s’është i përputhshëm me këtë version të ownCloud-it", diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js index 0e696948c5b..0751030e107 100644 --- a/lib/l10n/tr.js +++ b/lib/l10n/tr.js @@ -8,7 +8,9 @@ OC.L10N.register( "Sample configuration detected" : "Örnek yapılandırma tespit edildi", "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Örnek yapılandırmanın kopyalanmış olabileceği tespit edildi. Bu kurulumunuzu bozabilir ve desteklenmemektedir. Lütfen config.php dosyasında değişiklik yapmadan önce belgelendirmeyi okuyun", "You are not allowed to share %s" : "%s paylaşımını yapma izniniz yok", + "Cannot increase permissions of %s" : "%s izinleri yükseltilemiyor", "Expiration date is in the past" : "Son kullanma tarihi geçmişte", + "Cannot set expiration date more than %s days in the future" : "Paylaşımların son kullanım süreleri, gelecekte %s günden fazla olamaz", "PHP %s or higher is required." : "PHP %s veya daha üst sürümü gerekli.", "PHP with a version lower than %s is required." : "PHP'nin %s sürümü öncesi gerekli.", "Following databases are supported: %s" : "Şu veritabanları desteklenmekte: %s", @@ -58,13 +60,16 @@ OC.L10N.register( "Archives of type %s are not supported" : "%s arşiv türü desteklenmiyor", "Failed to open archive when installing app" : "Uygulama kurulurken arşiv dosyası açılamadı", "App does not provide an info.xml file" : "Uygulama info.xml dosyası sağlamıyor", + "Signature could not get checked. Please contact the app developer and check your admin screen." : "İmza denetlenemedi. Lütfen uygulama yöneticisi ile iletişime geçin ve yönetici ekranınıza bakın.", "App can't be installed because of not allowed code in the App" : "Uygulama, izin verilmeyen kodlar barındırdığından kurulamıyor", "App can't be installed because it is not compatible with this version of ownCloud" : "ownCloud sürümünüz ile uyumsuz olduğu için uygulama kurulamıyor", "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Uygulama, birlikte gelmeyen uygulama olmasına rağmen <shipped>true</shipped> etiketi içerdiği için kurulamıyor", + "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "Uygulama info.xml içindeki sürüm ile uygulama marketinde belirtilen sürüm aynı olmadığından kurulamıyor", "Application is not enabled" : "Uygulama etkin değil", "Authentication error" : "Kimlik doğrulama hatası", "Token expired. Please reload page." : "Belirteç süresi geçti. Lütfen sayfayı yenileyin.", "Unknown user" : "Bilinmeyen kullanıcı", + "%s enter the database username and name." : "%s veritabanı adı ve kullanıcı adını girin.", "%s enter the database username." : "%s veritabanı kullanıcı adını girin.", "%s enter the database name." : "%s veritabanı adını girin.", "%s you may not use dots in the database name" : "%s veritabanı adında nokta kullanamayabilirsiniz", @@ -96,6 +101,7 @@ OC.L10N.register( "Sharing %s failed, because %s is not a member of the group %s" : "%s paylaşımı, %s kullanıcısı %s grup üyesi olmadığından başarısız oldu", "You need to provide a password to create a public link, only protected links are allowed" : "Herkese açık bir bağlantı oluşturmak için bir parola belirtmeniz gerekiyor. Sadece korunmuş bağlantılara izin verilmektedir", "Sharing %s failed, because sharing with links is not allowed" : "%s paylaşımı, bağlantılar ile paylaşım izin verilmediğinden başarısız oldu", + "Not allowed to create a federated share with the same user" : "Aynı kullanıcı ile bir birleşik paylaşım oluşturulamaz", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s paylaşımı başarısız. %s bulunamadı veya sunucu şu anda ulaşılamıyor olabilir.", "Share type %s is not valid for %s" : "%s paylaşım türü %s için geçerli değil", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "%s için izinler, izinler %s için verilen izinleri aştığından dolayı ayarlanamadı", @@ -113,7 +119,9 @@ OC.L10N.register( "Sharing %s failed, because the file could not be found in the file cache" : "%s paylaşımı, dosyanın dosya önbelleğinde bulunamamasınndan dolayı başarısız oldu", "Could not find category \"%s\"" : "\"%s\" kategorisi bulunamadı", "Apps" : "Uygulamalar", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Kullanıcı adında sadece bu karakterlere izin verilmektedir: \"a-z\", \"A-Z\", \"0-9\", ve \"_.@-'\"", "A valid username must be provided" : "Geçerli bir kullanıcı adı mutlaka sağlanmalı", + "Username contains whitespace at the beginning or at the end" : "Kullanıcı adı başlangıç veya sonda boşluk içeriyor", "A valid password must be provided" : "Geçerli bir parola mutlaka sağlanmalı", "The username is already being used" : "Bu kullanıcı adı zaten kullanımda", "No database drivers (sqlite, mysql, or postgresql) installed." : "Yüklü veritabanı sürücüsü (sqlite, mysql veya postgresql) yok.", @@ -123,6 +131,7 @@ OC.L10N.register( "Cannot write into \"apps\" directory" : "\"apps\" dizinine yazılamıyor", "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Bu genellikle, %sweb sunucusuna apps dizinine yazma erişimi verilerek%s veya yapılandırma dosyasında appstore (uygulama mağazası) devre dışı bırakılarak çözülebilir.", "Cannot create \"data\" directory (%s)" : "\"Veri\" dizini oluşturulamıyor (%s)", + "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Bu genellikle, <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">web sunucusuna kök dizinine yazma erişimi verilerek</a> çözülebilir.", "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "İzinler genellikle, %sweb sunucusuna kök dizinine yazma erişimi verilerek%s çözülebilir", "Setting locale to %s failed" : "Dili %s olarak ayarlama başarısız", "Please install one of these locales on your system and restart your webserver." : "Lütfen bu yerellerden birini sisteminize yükleyin ve web sunucunuzu yeniden başlatın.", @@ -132,6 +141,8 @@ OC.L10N.register( "Adjusting this setting in php.ini will make ownCloud run again" : "Bu ayarı php.ini içerisinde ayarlamak ownCloud'ı tekrar çalıştıracak.", "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload, beklenen \"0\" değerinin aksine \"%s\" olarak ayarlanmış", "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Bu hatayı düzeltmek için php.ini içerisindeki <code>mbstring.func_overload</code> ayarını <code>0</code> olarak ayarlayın", + "libxml2 2.7.0 is at least required. Currently %s is installed." : "En düşük libxml2 2.7.0 gerekli. Şu anda %s kurulu.", + "To fix this issue update your libxml2 version and restart your web server." : "Bu sorunu çözmek için libxml2 sürümünüzü güncelleyin ve web sunucusunu yeniden başlatın.", "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP satıriçi doc bloklarını ayıklamak üzere yapılandırılmış gibi görünüyor. Bu, bazı çekirdek uygulamalarını erişilemez yapacak.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Bu, muhtemelen Zend OPcache veya eAccelerator gibi bir önbellek/hızlandırıcı nedeniyle meydana gelir.", "PHP modules have been installed, but they are still listed as missing?" : "PHP modülleri yüklü, ancak hala eksik olarak mı görünüyorlar?", @@ -145,6 +156,10 @@ OC.L10N.register( "Data directory (%s) is invalid" : "Veri dizini (%s) geçersiz", "Please check that the data directory contains a file \".ocdata\" in its root." : "Lütfen veri dizininin kökünde \".ocdata\" adlı bir dosyanın bulunduğunu denetleyin.", "Could not obtain lock type %d on \"%s\"." : "\"%s\" üzerinde %d kilit türü alınamadı.", - "Storage not available" : "Depolama mevcut değil" + "Storage unauthorized. %s" : "Depolamaya erişim izni yok. %s", + "Storage incomplete configuration. %s" : "Depolamada tamamlanmamış yapılandırma. %s", + "Storage connection error. %s" : "Depolama bağlantı hatası. %s", + "Storage not available" : "Depolama mevcut değil", + "Storage connection timeout. %s" : "Depolama bağlantı zaman aşımı. %s" }, "nplurals=2; plural=(n > 1);"); diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json index 8843ea6b512..09e0010836d 100644 --- a/lib/l10n/tr.json +++ b/lib/l10n/tr.json @@ -6,7 +6,9 @@ "Sample configuration detected" : "Örnek yapılandırma tespit edildi", "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Örnek yapılandırmanın kopyalanmış olabileceği tespit edildi. Bu kurulumunuzu bozabilir ve desteklenmemektedir. Lütfen config.php dosyasında değişiklik yapmadan önce belgelendirmeyi okuyun", "You are not allowed to share %s" : "%s paylaşımını yapma izniniz yok", + "Cannot increase permissions of %s" : "%s izinleri yükseltilemiyor", "Expiration date is in the past" : "Son kullanma tarihi geçmişte", + "Cannot set expiration date more than %s days in the future" : "Paylaşımların son kullanım süreleri, gelecekte %s günden fazla olamaz", "PHP %s or higher is required." : "PHP %s veya daha üst sürümü gerekli.", "PHP with a version lower than %s is required." : "PHP'nin %s sürümü öncesi gerekli.", "Following databases are supported: %s" : "Şu veritabanları desteklenmekte: %s", @@ -56,13 +58,16 @@ "Archives of type %s are not supported" : "%s arşiv türü desteklenmiyor", "Failed to open archive when installing app" : "Uygulama kurulurken arşiv dosyası açılamadı", "App does not provide an info.xml file" : "Uygulama info.xml dosyası sağlamıyor", + "Signature could not get checked. Please contact the app developer and check your admin screen." : "İmza denetlenemedi. Lütfen uygulama yöneticisi ile iletişime geçin ve yönetici ekranınıza bakın.", "App can't be installed because of not allowed code in the App" : "Uygulama, izin verilmeyen kodlar barındırdığından kurulamıyor", "App can't be installed because it is not compatible with this version of ownCloud" : "ownCloud sürümünüz ile uyumsuz olduğu için uygulama kurulamıyor", "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Uygulama, birlikte gelmeyen uygulama olmasına rağmen <shipped>true</shipped> etiketi içerdiği için kurulamıyor", + "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "Uygulama info.xml içindeki sürüm ile uygulama marketinde belirtilen sürüm aynı olmadığından kurulamıyor", "Application is not enabled" : "Uygulama etkin değil", "Authentication error" : "Kimlik doğrulama hatası", "Token expired. Please reload page." : "Belirteç süresi geçti. Lütfen sayfayı yenileyin.", "Unknown user" : "Bilinmeyen kullanıcı", + "%s enter the database username and name." : "%s veritabanı adı ve kullanıcı adını girin.", "%s enter the database username." : "%s veritabanı kullanıcı adını girin.", "%s enter the database name." : "%s veritabanı adını girin.", "%s you may not use dots in the database name" : "%s veritabanı adında nokta kullanamayabilirsiniz", @@ -94,6 +99,7 @@ "Sharing %s failed, because %s is not a member of the group %s" : "%s paylaşımı, %s kullanıcısı %s grup üyesi olmadığından başarısız oldu", "You need to provide a password to create a public link, only protected links are allowed" : "Herkese açık bir bağlantı oluşturmak için bir parola belirtmeniz gerekiyor. Sadece korunmuş bağlantılara izin verilmektedir", "Sharing %s failed, because sharing with links is not allowed" : "%s paylaşımı, bağlantılar ile paylaşım izin verilmediğinden başarısız oldu", + "Not allowed to create a federated share with the same user" : "Aynı kullanıcı ile bir birleşik paylaşım oluşturulamaz", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s paylaşımı başarısız. %s bulunamadı veya sunucu şu anda ulaşılamıyor olabilir.", "Share type %s is not valid for %s" : "%s paylaşım türü %s için geçerli değil", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "%s için izinler, izinler %s için verilen izinleri aştığından dolayı ayarlanamadı", @@ -111,7 +117,9 @@ "Sharing %s failed, because the file could not be found in the file cache" : "%s paylaşımı, dosyanın dosya önbelleğinde bulunamamasınndan dolayı başarısız oldu", "Could not find category \"%s\"" : "\"%s\" kategorisi bulunamadı", "Apps" : "Uygulamalar", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Kullanıcı adında sadece bu karakterlere izin verilmektedir: \"a-z\", \"A-Z\", \"0-9\", ve \"_.@-'\"", "A valid username must be provided" : "Geçerli bir kullanıcı adı mutlaka sağlanmalı", + "Username contains whitespace at the beginning or at the end" : "Kullanıcı adı başlangıç veya sonda boşluk içeriyor", "A valid password must be provided" : "Geçerli bir parola mutlaka sağlanmalı", "The username is already being used" : "Bu kullanıcı adı zaten kullanımda", "No database drivers (sqlite, mysql, or postgresql) installed." : "Yüklü veritabanı sürücüsü (sqlite, mysql veya postgresql) yok.", @@ -121,6 +129,7 @@ "Cannot write into \"apps\" directory" : "\"apps\" dizinine yazılamıyor", "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Bu genellikle, %sweb sunucusuna apps dizinine yazma erişimi verilerek%s veya yapılandırma dosyasında appstore (uygulama mağazası) devre dışı bırakılarak çözülebilir.", "Cannot create \"data\" directory (%s)" : "\"Veri\" dizini oluşturulamıyor (%s)", + "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Bu genellikle, <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">web sunucusuna kök dizinine yazma erişimi verilerek</a> çözülebilir.", "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "İzinler genellikle, %sweb sunucusuna kök dizinine yazma erişimi verilerek%s çözülebilir", "Setting locale to %s failed" : "Dili %s olarak ayarlama başarısız", "Please install one of these locales on your system and restart your webserver." : "Lütfen bu yerellerden birini sisteminize yükleyin ve web sunucunuzu yeniden başlatın.", @@ -130,6 +139,8 @@ "Adjusting this setting in php.ini will make ownCloud run again" : "Bu ayarı php.ini içerisinde ayarlamak ownCloud'ı tekrar çalıştıracak.", "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload, beklenen \"0\" değerinin aksine \"%s\" olarak ayarlanmış", "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Bu hatayı düzeltmek için php.ini içerisindeki <code>mbstring.func_overload</code> ayarını <code>0</code> olarak ayarlayın", + "libxml2 2.7.0 is at least required. Currently %s is installed." : "En düşük libxml2 2.7.0 gerekli. Şu anda %s kurulu.", + "To fix this issue update your libxml2 version and restart your web server." : "Bu sorunu çözmek için libxml2 sürümünüzü güncelleyin ve web sunucusunu yeniden başlatın.", "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP satıriçi doc bloklarını ayıklamak üzere yapılandırılmış gibi görünüyor. Bu, bazı çekirdek uygulamalarını erişilemez yapacak.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Bu, muhtemelen Zend OPcache veya eAccelerator gibi bir önbellek/hızlandırıcı nedeniyle meydana gelir.", "PHP modules have been installed, but they are still listed as missing?" : "PHP modülleri yüklü, ancak hala eksik olarak mı görünüyorlar?", @@ -143,6 +154,10 @@ "Data directory (%s) is invalid" : "Veri dizini (%s) geçersiz", "Please check that the data directory contains a file \".ocdata\" in its root." : "Lütfen veri dizininin kökünde \".ocdata\" adlı bir dosyanın bulunduğunu denetleyin.", "Could not obtain lock type %d on \"%s\"." : "\"%s\" üzerinde %d kilit türü alınamadı.", - "Storage not available" : "Depolama mevcut değil" + "Storage unauthorized. %s" : "Depolamaya erişim izni yok. %s", + "Storage incomplete configuration. %s" : "Depolamada tamamlanmamış yapılandırma. %s", + "Storage connection error. %s" : "Depolama bağlantı hatası. %s", + "Storage not available" : "Depolama mevcut değil", + "Storage connection timeout. %s" : "Depolama bağlantı zaman aşımı. %s" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/lib/private/Server.php b/lib/private/Server.php index 392b2b17b9c..581a2b44cea 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -59,6 +59,7 @@ use OC\Lock\DBLockingProvider; use OC\Lock\MemcacheLockingProvider; use OC\Lock\NoopLockingProvider; use OC\Mail\Mailer; +use OC\Memcache\ArrayCache; use OC\Notification\Manager; use OC\Security\CertificateManager; use OC\Security\CSP\ContentSecurityPolicyManager; @@ -117,7 +118,8 @@ class Server extends ServerContainer implements IServerContainer { $c->getLogger(), $c->getL10N('core'), new View(), - $util + $util, + new ArrayCache() ); }); diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php index 4737de002cb..1c9d4d82277 100644 --- a/lib/private/Share20/Manager.php +++ b/lib/private/Share20/Manager.php @@ -23,6 +23,7 @@ namespace OC\Share20; +use OC\Files\Mount\MoveableMount; use OCP\Files\IRootFolder; use OCP\Files\NotFoundException; use OCP\IUserManager; @@ -215,8 +216,19 @@ class Manager implements IManager { throw new \InvalidArgumentException('A share requires permissions'); } + /* + * Quick fix for #23536 + * Non moveable mount points do not have update and delete permissions + * while we 'most likely' do have that on the storage. + */ + $permissions = $share->getNode()->getPermissions(); + $mount = $share->getNode()->getMountPoint(); + if (!($mount instanceof MoveableMount)) { + $permissions |= \OCP\Constants::PERMISSION_DELETE | \OCP\Constants::PERMISSION_UPDATE; + } + // Check that we do not share with more permissions than we have - if ($share->getPermissions() & ~$share->getNode()->getPermissions()) { + if ($share->getPermissions() & ~$permissions) { $message_t = $this->l->t('Cannot increase permissions of %s', [$share->getNode()->getPath()]); throw new GenericShareException($message_t, $message_t, 404); } diff --git a/lib/private/Share20/Share.php b/lib/private/Share20/Share.php index 6edd0e6886a..c361f01216f 100644 --- a/lib/private/Share20/Share.php +++ b/lib/private/Share20/Share.php @@ -26,6 +26,7 @@ use OCP\Files\Node; use OCP\Files\NotFoundException; use OCP\IUser; use OCP\IGroup; +use OCP\Share\Exceptions\IllegalIDChangeException; class Share implements \OCP\Share\IShare { @@ -75,7 +76,19 @@ class Share implements \OCP\Share\IShare { * @inheritdoc */ public function setId($id) { - $this->id = $id; + if (is_int($id)) { + $id = (string)$id; + } + + if(!is_string($id)) { + throw new \InvalidArgumentException('String expected.'); + } + + if ($this->id !== null) { + throw new IllegalIDChangeException('Not allowed to assign a new internal id to a share'); + } + + $this->id = trim($id); return $this; } @@ -100,7 +113,15 @@ class Share implements \OCP\Share\IShare { * @inheritdoc */ public function setProviderId($id) { - $this->providerId = $id; + if(!is_string($id)) { + throw new \InvalidArgumentException('String expected.'); + } + + if ($this->providerId !== null) { + throw new IllegalIDChangeException('Not allowed to assign a new provider id to a share'); + } + + $this->providerId = trim($id); return $this; } diff --git a/lib/private/app.php b/lib/private/app.php index 3b8cbba3898..05d220f7d38 100644 --- a/lib/private/app.php +++ b/lib/private/app.php @@ -207,6 +207,9 @@ class OC_App { */ public static function setAppTypes($app) { $appData = self::getAppInfo($app); + if(!is_array($appData)) { + return; + } if (isset($appData['types'])) { $appTypes = implode(',', $appData['types']); @@ -783,6 +786,10 @@ class OC_App { if (array_search($app, $blacklist) === false) { $info = OC_App::getAppInfo($app); + if (!is_array($info)) { + \OCP\Util::writeLog('core', 'Could not read app info file for app "' . $app . '"', \OCP\Util::ERROR); + continue; + } if (!isset($info['name'])) { \OCP\Util::writeLog('core', 'App id "' . $app . '" has no name in appinfo', \OCP\Util::ERROR); @@ -1081,6 +1088,14 @@ class OC_App { if ($app !== false) { // check if the app is compatible with this version of ownCloud $info = self::getAppInfo($app); + if(!is_array($info)) { + throw new \Exception( + $l->t('App "%s" cannot be installed because appinfo file cannot be read.', + [$info['name']] + ) + ); + } + $version = \OCP\Util::getVersion(); if (!self::isAppCompatible($version, $info)) { throw new \Exception( diff --git a/lib/private/avatar.php b/lib/private/avatar.php index 4b9d3d82404..3f8038360a4 100644 --- a/lib/private/avatar.php +++ b/lib/private/avatar.php @@ -134,7 +134,7 @@ class Avatar implements IAvatar { */ public function remove () { $regex = '/^avatar\.([0-9]+\.)?(jpg|png)$/'; - $avatars = $this->folder->search('avatar'); + $avatars = $this->folder->getDirectoryListing(); foreach ($avatars as $avatar) { if (preg_match($regex, $avatar->getName())) { diff --git a/lib/private/encryption/encryptionwrapper.php b/lib/private/encryption/encryptionwrapper.php new file mode 100644 index 00000000000..11beb0cd6b1 --- /dev/null +++ b/lib/private/encryption/encryptionwrapper.php @@ -0,0 +1,124 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2016, 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 OC\Encryption; + + +use OC\Memcache\ArrayCache; +use OC\Files\Filesystem; +use OC\Files\Storage\Wrapper\Encryption; +use OCP\Files\Mount\IMountPoint; +use OC\Files\View; +use OCP\Files\Storage; +use OCP\ILogger; + +/** + * Class EncryptionWrapper + * + * applies the encryption storage wrapper + * + * @package OC\Encryption + */ +class EncryptionWrapper { + + /** @var ArrayCache */ + private $arrayCache; + + /** @var Manager */ + private $manager; + + /** @var ILogger */ + private $logger; + + /** + * EncryptionWrapper constructor. + * + * @param ArrayCache $arrayCache + * @param Manager $manager + * @param ILogger $logger + */ + public function __construct(ArrayCache $arrayCache, + Manager $manager, + ILogger $logger + ) { + $this->arrayCache = $arrayCache; + $this->manager = $manager; + $this->logger = $logger; + } + + /** + * Wraps the given storage when it is not a shared storage + * + * @param string $mountPoint + * @param Storage $storage + * @param IMountPoint $mount + * @return Encryption|Storage + */ + public function wrapStorage($mountPoint, Storage $storage, IMountPoint $mount) { + $parameters = [ + 'storage' => $storage, + 'mountPoint' => $mountPoint, + 'mount' => $mount + ]; + + if (!$storage->instanceOfStorage('OC\Files\Storage\Shared') + && !$storage->instanceOfStorage('OCA\Files_Sharing\External\Storage') + && !$storage->instanceOfStorage('OC\Files\Storage\OwnCloud')) { + + $user = \OC::$server->getUserSession()->getUser(); + $mountManager = Filesystem::getMountManager(); + $uid = $user ? $user->getUID() : null; + $fileHelper = \OC::$server->getEncryptionFilesHelper(); + $keyStorage = \OC::$server->getEncryptionKeyStorage(); + + $util = new Util( + new View(), + \OC::$server->getUserManager(), + \OC::$server->getGroupManager(), + \OC::$server->getConfig() + ); + $update = new Update( + new View(), + $util, + Filesystem::getMountManager(), + $this->manager, + $fileHelper, + $uid + ); + return new Encryption( + $parameters, + $this->manager, + $util, + $this->logger, + $fileHelper, + $uid, + $keyStorage, + $update, + $mountManager, + $this->arrayCache + ); + } else { + return $storage; + } + } + +} diff --git a/lib/private/encryption/manager.php b/lib/private/encryption/manager.php index d1d17a92887..d45bbf07ee9 100644 --- a/lib/private/encryption/manager.php +++ b/lib/private/encryption/manager.php @@ -27,6 +27,7 @@ namespace OC\Encryption; use OC\Encryption\Keys\Storage; use OC\Files\Filesystem; use OC\Files\View; +use OC\Memcache\ArrayCache; use OC\ServiceUnavailableException; use OCP\Encryption\IEncryptionModule; use OCP\Encryption\IManager; @@ -54,20 +55,25 @@ class Manager implements IManager { /** @var Util */ protected $util; + /** @var ArrayCache */ + protected $arrayCache; + /** * @param IConfig $config * @param ILogger $logger * @param IL10N $l10n * @param View $rootView * @param Util $util + * @param ArrayCache $arrayCache */ - public function __construct(IConfig $config, ILogger $logger, IL10N $l10n, View $rootView, Util $util) { + public function __construct(IConfig $config, ILogger $logger, IL10N $l10n, View $rootView, Util $util, ArrayCache $arrayCache) { $this->encryptionModules = array(); $this->config = $config; $this->logger = $logger; $this->l = $l10n; $this->rootView = $rootView; $this->util = $util; + $this->arrayCache = $arrayCache; } /** @@ -227,14 +233,9 @@ class Manager implements IManager { /** * Add storage wrapper */ - public static function setupStorage() { - $util = new Util( - new View(), - \OC::$server->getUserManager(), - \OC::$server->getGroupManager(), - \OC::$server->getConfig() - ); - Filesystem::addStorageWrapper('oc_encryption', array($util, 'wrapStorage'), 2); + public function setupStorage() { + $encryptionWrapper = new EncryptionWrapper($this->arrayCache, $this, $this->logger); + Filesystem::addStorageWrapper('oc_encryption', array($encryptionWrapper, 'wrapStorage'), 2); } diff --git a/lib/private/encryption/util.php b/lib/private/encryption/util.php index 860c541934a..9e0cfca830d 100644 --- a/lib/private/encryption/util.php +++ b/lib/private/encryption/util.php @@ -28,10 +28,8 @@ use OC\Encryption\Exceptions\EncryptionHeaderKeyExistsException; use OC\Encryption\Exceptions\EncryptionHeaderToLargeException; use OC\Encryption\Exceptions\ModuleDoesNotExistsException; use OC\Files\Filesystem; -use OC\Files\Storage\Wrapper\Encryption; use OC\Files\View; use OCP\Encryption\IEncryptionModule; -use OCP\Files\Mount\IMountPoint; use OCP\Files\Storage; use OCP\IConfig; @@ -392,52 +390,4 @@ class Util { return $this->config->getAppValue('core', 'encryption_key_storage_root', ''); } - /** - * Wraps the given storage when it is not a shared storage - * - * @param string $mountPoint - * @param Storage $storage - * @param IMountPoint $mount - * @return Encryption|Storage - */ - public function wrapStorage($mountPoint, Storage $storage, IMountPoint $mount) { - $parameters = [ - 'storage' => $storage, - 'mountPoint' => $mountPoint, - 'mount' => $mount]; - - if (!$storage->instanceOfStorage('OC\Files\Storage\Shared') - && !$storage->instanceOfStorage('OCA\Files_Sharing\External\Storage') - && !$storage->instanceOfStorage('OC\Files\Storage\OwnCloud')) { - - $manager = \OC::$server->getEncryptionManager(); - $user = \OC::$server->getUserSession()->getUser(); - $logger = \OC::$server->getLogger(); - $mountManager = Filesystem::getMountManager(); - $uid = $user ? $user->getUID() : null; - $fileHelper = \OC::$server->getEncryptionFilesHelper(); - $keyStorage = \OC::$server->getEncryptionKeyStorage(); - $update = new Update( - new View(), - $this, - Filesystem::getMountManager(), - $manager, - $fileHelper, - $uid - ); - return new Encryption( - $parameters, - $manager, - $this, - $logger, - $fileHelper, - $uid, - $keyStorage, - $update, - $mountManager - ); - } else { - return $storage; - } - } } diff --git a/lib/private/files/storage/wrapper/encryption.php b/lib/private/files/storage/wrapper/encryption.php index 81eea9944f8..1add4d7fd0a 100644 --- a/lib/private/files/storage/wrapper/encryption.php +++ b/lib/private/files/storage/wrapper/encryption.php @@ -33,6 +33,7 @@ use OC\Files\Cache\CacheEntry; use OC\Files\Filesystem; use OC\Files\Mount\Manager; use OC\Files\Storage\LocalTempFileTrait; +use OC\Memcache\ArrayCache; use OCP\Encryption\Exceptions\GenericEncryptionException; use OCP\Encryption\IFile; use OCP\Encryption\IManager; @@ -82,6 +83,9 @@ class Encryption extends Wrapper { /** @var array remember for which path we execute the repair step to avoid recursions */ private $fixUnencryptedSizeOf = array(); + /** @var ArrayCache */ + private $arrayCache; + /** * @param array $parameters * @param IManager $encryptionManager @@ -92,6 +96,7 @@ class Encryption extends Wrapper { * @param IStorage $keyStorage * @param Update $update * @param Manager $mountManager + * @param ArrayCache $arrayCache */ public function __construct( $parameters, @@ -102,9 +107,10 @@ class Encryption extends Wrapper { $uid = null, IStorage $keyStorage = null, Update $update = null, - Manager $mountManager = null + Manager $mountManager = null, + ArrayCache $arrayCache = null ) { - + $this->mountPoint = $parameters['mountPoint']; $this->mount = $parameters['mount']; $this->encryptionManager = $encryptionManager; @@ -116,6 +122,7 @@ class Encryption extends Wrapper { $this->unencryptedSize = array(); $this->update = $update; $this->mountManager = $mountManager; + $this->arrayCache = $arrayCache; parent::__construct($parameters); } @@ -167,20 +174,25 @@ class Encryption extends Wrapper { return null; } $fullPath = $this->getFullPath($path); + $info = $this->getCache()->get($path); if (isset($this->unencryptedSize[$fullPath])) { $data['encrypted'] = true; $data['size'] = $this->unencryptedSize[$fullPath]; } else { - $info = $this->getCache()->get($path); if (isset($info['fileid']) && $info['encrypted']) { $data['size'] = $this->verifyUnencryptedSize($path, $info['size']); $data['encrypted'] = true; } } + if (isset($info['encryptedVersion']) && $info['encryptedVersion'] > 1) { + $data['encryptedVersion'] = $info['encryptedVersion']; + } + return $data; } + /** * see http://php.net/manual/en/function.file_get_contents.php * @@ -352,6 +364,14 @@ class Encryption extends Wrapper { */ public function fopen($path, $mode) { + // check if the file is stored in the array cache, this means that we + // copy a file over to the versions folder, in this case we don't want to + // decrypt it + if ($this->arrayCache->hasKey('encryption_copy_version_' . $path)) { + $this->arrayCache->remove('encryption_copy_version_' . $path); + return $this->storage->fopen($path, $mode); + } + $encryptionEnabled = $this->encryptionManager->isEnabled(); $shouldEncrypt = false; $encryptionModule = null; @@ -674,7 +694,12 @@ class Encryption extends Wrapper { // key from the original file. Just create a 1:1 copy and done if ($this->isVersion($targetInternalPath) || $this->isVersion($sourceInternalPath)) { + // remember that we try to create a version so that we can detect it during + // fopen($sourceInternalPath) and by-pass the encryption in order to + // create a 1:1 copy of the file + $this->arrayCache->set('encryption_copy_version_' . $sourceInternalPath, true); $result = $this->storage->copyFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath); + $this->arrayCache->remove('encryption_copy_version_' . $sourceInternalPath); if ($result) { $info = $this->getCache('', $sourceStorage)->get($sourceInternalPath); // make sure that we update the unencrypted size for the version @@ -841,7 +866,7 @@ class Encryption extends Wrapper { $firstBlock = $this->readFirstBlock($path); if (substr($firstBlock, 0, strlen(Util::HEADER_START)) === Util::HEADER_START) { - $headerSize = strlen($firstBlock); + $headerSize = $this->util->getHeaderSize(); } return $headerSize; diff --git a/lib/private/installer.php b/lib/private/installer.php index c026383e26e..421e281e56b 100644 --- a/lib/private/installer.php +++ b/lib/private/installer.php @@ -342,6 +342,9 @@ class OC_Installer{ } $info = OC_App::getAppInfo($extractDir.'/appinfo/info.xml', true); + if(!is_array($info)) { + throw new \Exception($l->t('App cannot be installed because appinfo file cannot be read.')); + } // We can't trust the parsed info.xml file as it may have been tampered // with by an attacker and thus we need to use the local data to check diff --git a/lib/private/memcache/xcache.php b/lib/private/memcache/xcache.php index eea55fefc4d..e80901faadc 100644 --- a/lib/private/memcache/xcache.php +++ b/lib/private/memcache/xcache.php @@ -125,7 +125,7 @@ class XCache extends Cache implements IMemcache { // AND administration functions are password-protected. return false; } - $var_size = \OC::$server->getIniWrapper()->getNumeric('xcache.var_size'); + $var_size = \OC::$server->getIniWrapper()->getBytes('xcache.var_size'); if (!$var_size) { return false; } diff --git a/lib/private/templatelayout.php b/lib/private/templatelayout.php index 5afbd4495c4..fe7638f399d 100644 --- a/lib/private/templatelayout.php +++ b/lib/private/templatelayout.php @@ -156,11 +156,16 @@ class TemplateLayout extends \OC_Template { // Add the css files $cssFiles = self::findStylesheetFiles(\OC_Util::$styles); $this->assign('cssfiles', array()); + $this->assign('printcssfiles', []); foreach($cssFiles as $info) { $web = $info[1]; $file = $info[2]; - $this->append( 'cssfiles', $web.'/'.$file . '?v=' . self::$versionHash); + if (substr($file, -strlen('print.css')) === 'print.css') { + $this->append( 'printcssfiles', $web.'/'.$file . '?v=' . self::$versionHash); + } else { + $this->append( 'cssfiles', $web.'/'.$file . '?v=' . self::$versionHash); + } } } } @@ -227,10 +232,35 @@ class TemplateLayout extends \OC_Template { } $cssFiles = self::findStylesheetFiles(\OC_Util::$styles); - $cssHash = self::hashFileNames($cssFiles); - if (!file_exists("$assetDir/assets/$cssHash.css")) { - $cssFiles = array_map(function ($item) { + // differentiate between screen stylesheets and printer stylesheets + $screenCssFiles = array_filter($cssFiles, function($cssFile) { + return substr_compare($cssFile[2], 'print.css', -strlen('print.css')) !== 0; + }); + $screenCssAsset = $this->generateCssAsset($screenCssFiles); + + $printCssFiles = array_filter($cssFiles, function($cssFile) { + return substr_compare($cssFile[2], 'print.css', -strlen('print.css')) === 0; + }); + $printCssAsset = $this->generateCssAsset($printCssFiles); + + $this->append('jsfiles', \OC::$server->getURLGenerator()->linkTo('assets', "$jsHash.js")); + $this->append('cssfiles', $screenCssAsset); + $this->append('printcssfiles', $printCssAsset); + } + + /** + * generates a single css asset file from an array of css files if at least one of them has changed + * otherwise it just returns the path to the old asset file + * @param $files + * @return string + */ + private function generateCssAsset($files) { + $assetDir = \OC::$server->getConfig()->getSystemValue('assetdirectory', \OC::$SERVERROOT); + $hash = self::hashFileNames($files); + + if (!file_exists("$assetDir/assets/$hash.css")) { + $files = array_map(function ($item) { $root = $item[0]; $file = $item[2]; $assetPath = $root . '/' . $file; @@ -246,16 +276,17 @@ class TemplateLayout extends \OC_Template { $sourceRoot, $sourcePath ); - }, $cssFiles); - $cssCollection = new AssetCollection($cssFiles); - $cssCollection->setTargetPath("assets/$cssHash.css"); + }, $files); + + $cssCollection = new AssetCollection($files); + $cssCollection->setTargetPath("assets/$hash.css"); $writer = new AssetWriter($assetDir); $writer->writeAsset($cssCollection); + } - $this->append('jsfiles', \OC::$server->getURLGenerator()->linkTo('assets', "$jsHash.js")); - $this->append('cssfiles', \OC::$server->getURLGenerator()->linkTo('assets', "$cssHash.css")); + return \OC::$server->getURLGenerator()->linkTo('assets', "$hash.css"); } /** diff --git a/lib/public/share/exceptions/genericshareexception.php b/lib/public/Share/Exceptions/GenericShareException.php index b32c2f26574..b32c2f26574 100644 --- a/lib/public/share/exceptions/genericshareexception.php +++ b/lib/public/Share/Exceptions/GenericShareException.php diff --git a/lib/public/Share/Exceptions/IllegalIDChangeException.php b/lib/public/Share/Exceptions/IllegalIDChangeException.php new file mode 100644 index 00000000000..6cd887c386b --- /dev/null +++ b/lib/public/Share/Exceptions/IllegalIDChangeException.php @@ -0,0 +1,27 @@ +<?php +/** + * @author Roeland Jago Douma <rullzer@owncloud.com> + * + * @copyright Copyright (c) 2016, 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 OCP\Share\Exceptions; + +/** + * Exception for illegal attempts to modify an id of a share + * @since 9.1.0 + */ +class IllegalIDChangeException extends GenericShareException {} diff --git a/lib/public/share/exceptions/sharenotfound.php b/lib/public/Share/Exceptions/ShareNotFound.php index 96e7c096492..96e7c096492 100644 --- a/lib/public/share/exceptions/sharenotfound.php +++ b/lib/public/Share/Exceptions/ShareNotFound.php diff --git a/lib/public/share/imanager.php b/lib/public/Share/IManager.php index 64e5b554de9..64e5b554de9 100644 --- a/lib/public/share/imanager.php +++ b/lib/public/Share/IManager.php diff --git a/lib/public/share/iproviderfactory.php b/lib/public/Share/IProviderFactory.php index 3a8baccf33b..3a8baccf33b 100644 --- a/lib/public/share/iproviderfactory.php +++ b/lib/public/Share/IProviderFactory.php diff --git a/lib/public/share/ishare.php b/lib/public/Share/IShare.php index fdf40f19e56..ee71715f436 100644 --- a/lib/public/share/ishare.php +++ b/lib/public/Share/IShare.php @@ -25,6 +25,7 @@ use OCP\Files\File; use OCP\Files\Folder; use OCP\Files\Node; use OCP\Files\NotFoundException; +use OCP\Share\Exceptions\IllegalIDChangeException; /** * Interface IShare @@ -35,6 +36,19 @@ use OCP\Files\NotFoundException; interface IShare { /** + * Set the internal id of the share + * It is only allowed to set the internal id of a share once. + * Attempts to override the internal id will result in an IllegalIDChangeException + * + * @param string $id + * @return \OCP\Share\IShare + * @throws IllegalIDChangeException + * @throws \InvalidArgumentException + * @since 9.1.0 + */ + public function setId($id); + + /** * Get the internal id of the share. * * @return string @@ -53,6 +67,19 @@ interface IShare { public function getFullId(); /** + * Set the provider id of the share + * It is only allowed to set the provider id of a share once. + * Attempts to override the provider id will result in an IllegalIDChangeException + * + * @param string $id + * @return \OCP\Share\IShare + * @throws IllegalIDChangeException + * @throws \InvalidArgumentException + * @since 9.1.0 + */ + public function setProviderId($id); + + /** * Set the node of the file/folder that is shared * * @param Node $node diff --git a/lib/public/share/ishareprovider.php b/lib/public/Share/IShareProvider.php index d00b9da7b59..d00b9da7b59 100644 --- a/lib/public/share/ishareprovider.php +++ b/lib/public/Share/IShareProvider.php diff --git a/lib/public/app.php b/lib/public/app.php index 032116eb43f..c3ba90cea41 100644 --- a/lib/public/app.php +++ b/lib/public/app.php @@ -112,7 +112,7 @@ class App { * Read app metadata from the info.xml file * @param string $app id of the app or the path of the info.xml file * @param boolean $path (optional) - * @return array + * @return array|null * @since 4.0.0 */ public static function getAppInfo( $app, $path=false ) { diff --git a/settings/css/settings.css b/settings/css/settings.css index 2e7b6d213a5..edc4939d2d8 100644 --- a/settings/css/settings.css +++ b/settings/css/settings.css @@ -194,6 +194,14 @@ span.usersLastLoginTooltip { white-space: nowrap; } color: #000000; } +#userlist .mailAddress .loading-small { + width: 16px; + height: 16px; + margin-left: -26px; + position: relative; + top: 3px; +} + tr:hover>td.password>span, tr:hover>td.displayName>span { margin:0; cursor:pointer; } tr:hover>td.remove>a, tr:hover>td.password>img,tr:hover>td.displayName>img, tr:hover>td.quota>img { visibility:visible; cursor:pointer; } td.remove { diff --git a/settings/js/apps.js b/settings/js/apps.js index 9322319d4ba..e052a9ee9d3 100644 --- a/settings/js/apps.js +++ b/settings/js/apps.js @@ -506,7 +506,7 @@ OC.Settings.Apps = OC.Settings.Apps || { if (apps.length === 0) { $appList.addClass('hidden'); $emptyList.removeClass('hidden'); - $emptyList.removeClass('hidden').find('h2').text(t('settings', 'No apps found for "{query}"', { + $emptyList.removeClass('hidden').find('h2').text(t('settings', 'No apps found for {query}', { query: query })); } else { diff --git a/settings/js/users/users.js b/settings/js/users/users.js index 261d9a8eb52..9706ac9fbcd 100644 --- a/settings/js/users/users.js +++ b/settings/js/users/users.js @@ -728,31 +728,46 @@ $(document).ready(function () { var mailAddress = escapeHTML(UserList.getMailAddress($td)); var $input = $('<input type="text">').val(mailAddress); $td.children('span').replaceWith($input); + $td.find('img').hide(); $input .focus() .keypress(function (event) { if (event.keyCode === 13) { - $tr.data('mailAddress', $input.val()); - $input.blur(); + // enter key + + var mailAddress = $input.val(); + $td.find('.loading-small').css('display', 'inline-block'); + $input.css('padding-right', '26px'); + $input.attr('disabled', 'disabled'); $.ajax({ type: 'PUT', url: OC.generateUrl('/settings/users/{id}/mailAddress', {id: uid}), data: { mailAddress: $(this).val() } - }).fail(function (result) { - OC.Notification.show(result.responseJSON.data.message); - // reset the values + }).success(function () { + // set data attribute to new value + // will in blur() be used to show the text instead of the input field $tr.data('mailAddress', mailAddress); - $tr.children('.mailAddress').children('span').text(mailAddress); + $td.find('.loading-small').css('display', ''); + $input.removeAttr('disabled') + .triggerHandler('blur'); // needed instead of $input.blur() for Firefox + }).fail(function (result) { + OC.Notification.showTemporary(result.responseJSON.data.message); + $td.find('.loading-small').css('display', ''); + $input.removeAttr('disabled') + .css('padding-right', '6px'); }); } }) .blur(function () { - var mailAddress = $tr.data('mailAddress'); - var $span = $('<span>').text(mailAddress); - $tr.data('mailAddress', mailAddress); + if($td.find('.loading-small').css('display') === 'inline-block') { + // in Chrome the blur event is fired too early by the browser - even if the request is still running + return; + } + var $span = $('<span>').text($tr.data('mailAddress')); $input.replaceWith($span); + $td.find('img').show(); }); }); diff --git a/settings/l10n/cs_CZ.js b/settings/l10n/cs_CZ.js index 8abde86dd17..d6eb0ecf843 100644 --- a/settings/l10n/cs_CZ.js +++ b/settings/l10n/cs_CZ.js @@ -84,7 +84,6 @@ OC.L10N.register( "Uninstall" : "Odinstalovat", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikace byla povolena ale je třeba ji aktualizovat. Za 5 sekund budete přesměrování na stránku pro aktualizaci.", "App update" : "Aktualizace aplikace", - "No apps found for \"{query}\"" : "Nebyly nalezeny žádné aplikace pro \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Došlo k chybě. Nahrajte prosím ASCII-kódovaný PEM certifikát.", "Valid until {date}" : "Platný do {date}", "Delete" : "Smazat", diff --git a/settings/l10n/cs_CZ.json b/settings/l10n/cs_CZ.json index 25a70e6cb57..e5aa853f62e 100644 --- a/settings/l10n/cs_CZ.json +++ b/settings/l10n/cs_CZ.json @@ -82,7 +82,6 @@ "Uninstall" : "Odinstalovat", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikace byla povolena ale je třeba ji aktualizovat. Za 5 sekund budete přesměrování na stránku pro aktualizaci.", "App update" : "Aktualizace aplikace", - "No apps found for \"{query}\"" : "Nebyly nalezeny žádné aplikace pro \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Došlo k chybě. Nahrajte prosím ASCII-kódovaný PEM certifikát.", "Valid until {date}" : "Platný do {date}", "Delete" : "Smazat", diff --git a/settings/l10n/de.js b/settings/l10n/de.js index 66ade247e96..70b183d355a 100644 --- a/settings/l10n/de.js +++ b/settings/l10n/de.js @@ -84,7 +84,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}\"", + "No apps found for {query}" : "Keine Applikationen für {query} gefunden", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Es ist ein Fehler aufgetreten. Bitte lade ein ASCII-kodiertes PEM-Zertifikat hoch.", "Valid until {date}" : "Gültig bis {date}", "Delete" : "Löschen", diff --git a/settings/l10n/de.json b/settings/l10n/de.json index fc78a0b5671..3d9095a7204 100644 --- a/settings/l10n/de.json +++ b/settings/l10n/de.json @@ -82,7 +82,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}\"", + "No apps found for {query}" : "Keine Applikationen für {query} gefunden", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Es ist ein Fehler aufgetreten. Bitte lade ein ASCII-kodiertes PEM-Zertifikat hoch.", "Valid until {date}" : "Gültig bis {date}", "Delete" : "Löschen", diff --git a/settings/l10n/de_DE.js b/settings/l10n/de_DE.js index 88b57827ecb..64c1978f908 100644 --- a/settings/l10n/de_DE.js +++ b/settings/l10n/de_DE.js @@ -84,7 +84,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, aber sie benötigt ein Update. Sie werden zur Update Seite in 5 Sekunden weitergeleitet.", "App update" : "App aktualisieren", - "No apps found for \"{query}\"" : "Es wurden keine Apps gefunden für \"{query}\"", + "No apps found for {query}" : "Keine Applikationen für {query} gefunden", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Es ist ein Fehler aufgetreten. Bitte laden Sie ein ASCII-kodiertes PEM-Zertifikat hoch.", "Valid until {date}" : "Gültig bis {date}", "Delete" : "Löschen", diff --git a/settings/l10n/de_DE.json b/settings/l10n/de_DE.json index 4275f77efa3..5b267b9bf7c 100644 --- a/settings/l10n/de_DE.json +++ b/settings/l10n/de_DE.json @@ -82,7 +82,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, aber sie benötigt ein Update. Sie werden zur Update Seite in 5 Sekunden weitergeleitet.", "App update" : "App aktualisieren", - "No apps found for \"{query}\"" : "Es wurden keine Apps gefunden für \"{query}\"", + "No apps found for {query}" : "Keine Applikationen für {query} gefunden", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Es ist ein Fehler aufgetreten. Bitte laden Sie ein ASCII-kodiertes PEM-Zertifikat hoch.", "Valid until {date}" : "Gültig bis {date}", "Delete" : "Löschen", diff --git a/settings/l10n/el.js b/settings/l10n/el.js index 1f76f4c1494..05710d0659d 100644 --- a/settings/l10n/el.js +++ b/settings/l10n/el.js @@ -80,7 +80,6 @@ OC.L10N.register( "Uninstall" : "Απεγκατάσταση", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Η εφαρμογή έχει ενεργοποιηθεί αλλά χρειάζεται ενημέρωση. Θα μεταφερθείτε στη σελίδα ενημέρωσης σε 5 δευτερόλεπτα.", "App update" : "Ενημέρωση εφαρμογής", - "No apps found for \"{query}\"" : "Δεν βρέθηκαν εφαρμογές για \"{query\"}", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Προέκυψε σφάλμα. Παρακαλούμε μεταφορτώστε ένα πιστοποιητικό PEM κωδικοποιημένο κατά ASCII.", "Valid until {date}" : "Έγκυρο έως {date}", "Delete" : "Διαγραφή", diff --git a/settings/l10n/el.json b/settings/l10n/el.json index 52629cc1893..0e2b9c41a18 100644 --- a/settings/l10n/el.json +++ b/settings/l10n/el.json @@ -78,7 +78,6 @@ "Uninstall" : "Απεγκατάσταση", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Η εφαρμογή έχει ενεργοποιηθεί αλλά χρειάζεται ενημέρωση. Θα μεταφερθείτε στη σελίδα ενημέρωσης σε 5 δευτερόλεπτα.", "App update" : "Ενημέρωση εφαρμογής", - "No apps found for \"{query}\"" : "Δεν βρέθηκαν εφαρμογές για \"{query\"}", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Προέκυψε σφάλμα. Παρακαλούμε μεταφορτώστε ένα πιστοποιητικό PEM κωδικοποιημένο κατά ASCII.", "Valid until {date}" : "Έγκυρο έως {date}", "Delete" : "Διαγραφή", diff --git a/settings/l10n/en_GB.js b/settings/l10n/en_GB.js index ba88d8fb7e5..a34bca4a417 100644 --- a/settings/l10n/en_GB.js +++ b/settings/l10n/en_GB.js @@ -84,7 +84,6 @@ OC.L10N.register( "Uninstall" : "Uninstall", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.", "App update" : "App update", - "No apps found for \"{query}\"" : "No apps found for \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "An error occurred. Please upload an ASCII-encoded PEM certificate.", "Valid until {date}" : "Valid until {date}", "Delete" : "Delete", diff --git a/settings/l10n/en_GB.json b/settings/l10n/en_GB.json index c183192cb2a..8048816c62e 100644 --- a/settings/l10n/en_GB.json +++ b/settings/l10n/en_GB.json @@ -82,7 +82,6 @@ "Uninstall" : "Uninstall", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.", "App update" : "App update", - "No apps found for \"{query}\"" : "No apps found for \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "An error occurred. Please upload an ASCII-encoded PEM certificate.", "Valid until {date}" : "Valid until {date}", "Delete" : "Delete", diff --git a/settings/l10n/es.js b/settings/l10n/es.js index cc445819b5d..1a9764228a4 100644 --- a/settings/l10n/es.js +++ b/settings/l10n/es.js @@ -84,7 +84,6 @@ OC.L10N.register( "Uninstall" : "Desinstalar", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido activada pero necesita ser actualizada. Seras redirigido a la pagina de actualizariones en 5 segundos.", "App update" : "Actualización de aplicación", - "No apps found for \"{query}\"" : "No se han encontrado aplicaciones para \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ha ocurrido un error. Por favor, cargue un certificado PEM codificado en ASCII.", "Valid until {date}" : "Válido hasta {date}", "Delete" : "Eliminar", @@ -126,17 +125,20 @@ OC.L10N.register( "SSL" : "SSL", "TLS" : "TLS", "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php parece que no está configurado correctamente para solicitar las variables de entorno del sistema. La prueba con getenv(\"PATH\") sólo retorna una respuesta vacía.", + "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Por favor revisa la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentación de instalación ↗</a> para notas de configuración PHP y la configuración PHP de tu servidor, especialmente cuando se está usando php-fpm", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Se ha habilitado la configuración de sólo lectura. Esto evita tener que ajustar algunas configuraciones a través de la interfaz web. Además, el archivo debe hacerse modificable manualmente para cada actualización.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP está aparentemente configurado para eliminar bloques de documentos en línea. Esto hará que varias aplicaciones principales no estén accesibles.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Probablemente esto venga a causa de la caché o un acelerador, tales como Zend OPcache o eAccelerator.", "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Su servidor está operando con Microsoft Windows. Le recomendamos GNU/Linux encarecidamente para disfrutar una experiencia óptima como usuario.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s una versión inferior %2$s está instalada, por razones de estabilidad y rendimiento, se recomienda actualizar a la versión %1$s más reciente .", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "No se ha encontrado el modulo PHP 'fileinfo'. Le recomendamos encarecidamente que habilite este módulo para obtener mejores resultados con la detección de tipos MIME.", + "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "El bloqueo de archivos transaccional está desactivado, esto podría conducir a problemas con 'race conditions'. Activa 'filelocking.enabled' en 'config.php' para solucionar esos problemas. Mira la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentación ↗</a> para más información.", "System locale can not be set to a one which supports UTF-8." : "No se puede escoger una configuración regional que soporte UTF-8.", "This means that there might be problems with certain characters in file names." : "Esto significa que puede haber problemas con ciertos caracteres en los nombres de los archivos.", "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Es muy recomendable instalar los paquetes necesarios para poder soportar una de las siguientes configuraciones regionales: %s. ", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Si su instalación no está ubicada en la raíz del dominio y usa el cron del sistema, puede haber problemas al generarse los URL. Para evitarlos, configure la opción \"overwrite.cli.url\" en su archivo config.php para que use la ruta de la raíz del sitio web de su instalación (sugerencia: \"%s\")", "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "No fue posible ejecutar cronjob vía CLI. Han aparecido los siguientes errores técnicos:", + "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "Por favor, compruebe de nuevo las <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">guías de instalación ↗</a>, y comprueba por cualquier error o advertencia en el <a href=\"#log-section\">Registro</a>", "All checks passed." : "Ha pasado todos los controles", "Open documentation" : "Documentación abierta", "Allow apps to use the Share API" : "Permitir a las aplicaciones utilizar la API de Compartición", @@ -149,6 +151,7 @@ OC.L10N.register( "days" : "días", "Enforce expiration date" : "Imponer fecha de caducidad", "Allow resharing" : "Permitir recompartición", + "Allow sharing with groups" : "Permitir compartir con grupos", "Restrict users to only share with users in their groups" : "Restringe a los usuarios a compartir solo con otros usuarios en sus grupos", "Allow users to send mail notification for shared files to other users" : "Permitir a los usuarios enviar notificaciones por correo electrónico de los archivos compartidos a otros usuarios", "Exclude groups from sharing" : "Excluye grupos de compartir", @@ -195,6 +198,7 @@ OC.L10N.register( "What to log" : "Que registrar", "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "Se utiliza SQLite como base de datos. Para instalaciones mas grandes se recomiende cambiar a otro sistema de base de datos. ", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "El uso de SQLite está desaconsejado especialmente cuando se usa el cliente de escritorio para sincronizar los ficheros.", + "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "Para migrar a otra base de datos usa la herramienta de línea de comandos 'occ db:convert-type' o mira la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentación ↗</a>.", "How to do backups" : "Cómo hacer copias de seguridad", "Advanced monitoring" : "Monitorización avanzada", "Performance tuning" : "Ajuste de rendimiento", diff --git a/settings/l10n/es.json b/settings/l10n/es.json index a2d70fa0693..3396804b76b 100644 --- a/settings/l10n/es.json +++ b/settings/l10n/es.json @@ -82,7 +82,6 @@ "Uninstall" : "Desinstalar", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido activada pero necesita ser actualizada. Seras redirigido a la pagina de actualizariones en 5 segundos.", "App update" : "Actualización de aplicación", - "No apps found for \"{query}\"" : "No se han encontrado aplicaciones para \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ha ocurrido un error. Por favor, cargue un certificado PEM codificado en ASCII.", "Valid until {date}" : "Válido hasta {date}", "Delete" : "Eliminar", @@ -124,17 +123,20 @@ "SSL" : "SSL", "TLS" : "TLS", "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php parece que no está configurado correctamente para solicitar las variables de entorno del sistema. La prueba con getenv(\"PATH\") sólo retorna una respuesta vacía.", + "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Por favor revisa la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentación de instalación ↗</a> para notas de configuración PHP y la configuración PHP de tu servidor, especialmente cuando se está usando php-fpm", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Se ha habilitado la configuración de sólo lectura. Esto evita tener que ajustar algunas configuraciones a través de la interfaz web. Además, el archivo debe hacerse modificable manualmente para cada actualización.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP está aparentemente configurado para eliminar bloques de documentos en línea. Esto hará que varias aplicaciones principales no estén accesibles.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Probablemente esto venga a causa de la caché o un acelerador, tales como Zend OPcache o eAccelerator.", "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Su servidor está operando con Microsoft Windows. Le recomendamos GNU/Linux encarecidamente para disfrutar una experiencia óptima como usuario.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s una versión inferior %2$s está instalada, por razones de estabilidad y rendimiento, se recomienda actualizar a la versión %1$s más reciente .", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "No se ha encontrado el modulo PHP 'fileinfo'. Le recomendamos encarecidamente que habilite este módulo para obtener mejores resultados con la detección de tipos MIME.", + "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "El bloqueo de archivos transaccional está desactivado, esto podría conducir a problemas con 'race conditions'. Activa 'filelocking.enabled' en 'config.php' para solucionar esos problemas. Mira la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentación ↗</a> para más información.", "System locale can not be set to a one which supports UTF-8." : "No se puede escoger una configuración regional que soporte UTF-8.", "This means that there might be problems with certain characters in file names." : "Esto significa que puede haber problemas con ciertos caracteres en los nombres de los archivos.", "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Es muy recomendable instalar los paquetes necesarios para poder soportar una de las siguientes configuraciones regionales: %s. ", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Si su instalación no está ubicada en la raíz del dominio y usa el cron del sistema, puede haber problemas al generarse los URL. Para evitarlos, configure la opción \"overwrite.cli.url\" en su archivo config.php para que use la ruta de la raíz del sitio web de su instalación (sugerencia: \"%s\")", "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "No fue posible ejecutar cronjob vía CLI. Han aparecido los siguientes errores técnicos:", + "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "Por favor, compruebe de nuevo las <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">guías de instalación ↗</a>, y comprueba por cualquier error o advertencia en el <a href=\"#log-section\">Registro</a>", "All checks passed." : "Ha pasado todos los controles", "Open documentation" : "Documentación abierta", "Allow apps to use the Share API" : "Permitir a las aplicaciones utilizar la API de Compartición", @@ -147,6 +149,7 @@ "days" : "días", "Enforce expiration date" : "Imponer fecha de caducidad", "Allow resharing" : "Permitir recompartición", + "Allow sharing with groups" : "Permitir compartir con grupos", "Restrict users to only share with users in their groups" : "Restringe a los usuarios a compartir solo con otros usuarios en sus grupos", "Allow users to send mail notification for shared files to other users" : "Permitir a los usuarios enviar notificaciones por correo electrónico de los archivos compartidos a otros usuarios", "Exclude groups from sharing" : "Excluye grupos de compartir", @@ -193,6 +196,7 @@ "What to log" : "Que registrar", "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "Se utiliza SQLite como base de datos. Para instalaciones mas grandes se recomiende cambiar a otro sistema de base de datos. ", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "El uso de SQLite está desaconsejado especialmente cuando se usa el cliente de escritorio para sincronizar los ficheros.", + "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "Para migrar a otra base de datos usa la herramienta de línea de comandos 'occ db:convert-type' o mira la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentación ↗</a>.", "How to do backups" : "Cómo hacer copias de seguridad", "Advanced monitoring" : "Monitorización avanzada", "Performance tuning" : "Ajuste de rendimiento", diff --git a/settings/l10n/fi_FI.js b/settings/l10n/fi_FI.js index c17122ce207..157ddab53cb 100644 --- a/settings/l10n/fi_FI.js +++ b/settings/l10n/fi_FI.js @@ -83,7 +83,7 @@ OC.L10N.register( "Uninstall" : "Poista asennus", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Tämä sovellus on otettu käyttöön, mutta se vaatii päivityksen. Sinut ohjataan päivityssivulle viiden sekunnin kuluttua.", "App update" : "Sovelluspäivitys", - "No apps found for \"{query}\"" : "Haulla \"{query}\" ei löytynyt sovelluksia", + "No apps found for {query}" : "Haulla {query} ei löytynyt sovelluksia", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Tapahtu virhe. Lähetä ASCII-koodattu PEM-varmenne.", "Valid until {date}" : "Kelvollinen {date} asti", "Delete" : "Poista", diff --git a/settings/l10n/fi_FI.json b/settings/l10n/fi_FI.json index ebe9b434b89..0a0c2c36740 100644 --- a/settings/l10n/fi_FI.json +++ b/settings/l10n/fi_FI.json @@ -81,7 +81,7 @@ "Uninstall" : "Poista asennus", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Tämä sovellus on otettu käyttöön, mutta se vaatii päivityksen. Sinut ohjataan päivityssivulle viiden sekunnin kuluttua.", "App update" : "Sovelluspäivitys", - "No apps found for \"{query}\"" : "Haulla \"{query}\" ei löytynyt sovelluksia", + "No apps found for {query}" : "Haulla {query} ei löytynyt sovelluksia", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Tapahtu virhe. Lähetä ASCII-koodattu PEM-varmenne.", "Valid until {date}" : "Kelvollinen {date} asti", "Delete" : "Poista", diff --git a/settings/l10n/fr.js b/settings/l10n/fr.js index 53a502b62fb..6486a686b98 100644 --- a/settings/l10n/fr.js +++ b/settings/l10n/fr.js @@ -84,7 +84,7 @@ OC.L10N.register( "Uninstall" : "Désinstaller", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "L'application a été activée mais doit être mise à jour. Vous allez être redirigé vers la page des mises à jour dans 5 secondes.", "App update" : "Mise à jour", - "No apps found for \"{query}\"" : "Aucune application trouvée pour \"{query}\"", + "No apps found for {query}" : "Aucune application trouvée pour {query}", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Une erreur est survenue. Veuillez fournir un certificat PEM encodé au format ASCII.", "Valid until {date}" : "Valide jusqu'au {date}", "Delete" : "Supprimer", diff --git a/settings/l10n/fr.json b/settings/l10n/fr.json index 6acae56d266..f9e2365489a 100644 --- a/settings/l10n/fr.json +++ b/settings/l10n/fr.json @@ -82,7 +82,7 @@ "Uninstall" : "Désinstaller", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "L'application a été activée mais doit être mise à jour. Vous allez être redirigé vers la page des mises à jour dans 5 secondes.", "App update" : "Mise à jour", - "No apps found for \"{query}\"" : "Aucune application trouvée pour \"{query}\"", + "No apps found for {query}" : "Aucune application trouvée pour {query}", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Une erreur est survenue. Veuillez fournir un certificat PEM encodé au format ASCII.", "Valid until {date}" : "Valide jusqu'au {date}", "Delete" : "Supprimer", diff --git a/settings/l10n/he.js b/settings/l10n/he.js index cbe7cba15f4..c0aa6a02b3f 100644 --- a/settings/l10n/he.js +++ b/settings/l10n/he.js @@ -84,7 +84,6 @@ OC.L10N.register( "Uninstall" : "הסרת התקנה", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "היישום הופעל אך יש לעדכן אותו. בעוד 5 שניות הדף ינותב לעמוד העדכון.", "App update" : "עדכון יישום", - "No apps found for \"{query}\"" : "לא נמצא יישום עבור \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "אירעה שגיאה. יש להעלות תעודת ASCII-encoded PEM.", "Valid until {date}" : "בתוקף עד ל- {date}", "Delete" : "מחיקה", diff --git a/settings/l10n/he.json b/settings/l10n/he.json index e48e837f8cc..af790f3f4d7 100644 --- a/settings/l10n/he.json +++ b/settings/l10n/he.json @@ -82,7 +82,6 @@ "Uninstall" : "הסרת התקנה", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "היישום הופעל אך יש לעדכן אותו. בעוד 5 שניות הדף ינותב לעמוד העדכון.", "App update" : "עדכון יישום", - "No apps found for \"{query}\"" : "לא נמצא יישום עבור \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "אירעה שגיאה. יש להעלות תעודת ASCII-encoded PEM.", "Valid until {date}" : "בתוקף עד ל- {date}", "Delete" : "מחיקה", diff --git a/settings/l10n/hu_HU.js b/settings/l10n/hu_HU.js index 8014f48eda5..95e547f3c5d 100644 --- a/settings/l10n/hu_HU.js +++ b/settings/l10n/hu_HU.js @@ -77,7 +77,6 @@ OC.L10N.register( "Error while uninstalling app" : "Hiba történt az alkalmazás eltávolítása közben", "Uninstall" : "Eltávolítás", "App update" : "Alkalmazás frissítése", - "No apps found for \"{query}\"" : "Nem található alkalmazás a „{query}” lekérdezésre.", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Hiba történt! Kérem töltsön fel egy, ASCII karakterekkel kódolt PEM tanusítványt!", "Valid until {date}" : "Érvényes: {date}", "Delete" : "Törlés", diff --git a/settings/l10n/hu_HU.json b/settings/l10n/hu_HU.json index 1869a2d85cf..fdf956e0b7a 100644 --- a/settings/l10n/hu_HU.json +++ b/settings/l10n/hu_HU.json @@ -75,7 +75,6 @@ "Error while uninstalling app" : "Hiba történt az alkalmazás eltávolítása közben", "Uninstall" : "Eltávolítás", "App update" : "Alkalmazás frissítése", - "No apps found for \"{query}\"" : "Nem található alkalmazás a „{query}” lekérdezésre.", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Hiba történt! Kérem töltsön fel egy, ASCII karakterekkel kódolt PEM tanusítványt!", "Valid until {date}" : "Érvényes: {date}", "Delete" : "Törlés", diff --git a/settings/l10n/id.js b/settings/l10n/id.js index 6468a0d612e..a0b1dcaf004 100644 --- a/settings/l10n/id.js +++ b/settings/l10n/id.js @@ -80,7 +80,6 @@ OC.L10N.register( "Uninstall" : "Copot", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikasi sudah diaktifkan tetapi perlu diperbarui. Anda akan dialihkan ke halaman pembaruan dalam 5 detik.", "App update" : "Pembaruan Aplikasi", - "No apps found for \"{query}\"" : "Tidak ada aplikasi yang ditemukan untuk \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Terjadi kesalahan. Mohon unggah sertifikat PEM terenkode-ASCII.", "Valid until {date}" : "Berlaku sampai {date}", "Delete" : "Hapus", diff --git a/settings/l10n/id.json b/settings/l10n/id.json index b35c05c0ca4..690ca0fbc36 100644 --- a/settings/l10n/id.json +++ b/settings/l10n/id.json @@ -78,7 +78,6 @@ "Uninstall" : "Copot", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikasi sudah diaktifkan tetapi perlu diperbarui. Anda akan dialihkan ke halaman pembaruan dalam 5 detik.", "App update" : "Pembaruan Aplikasi", - "No apps found for \"{query}\"" : "Tidak ada aplikasi yang ditemukan untuk \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Terjadi kesalahan. Mohon unggah sertifikat PEM terenkode-ASCII.", "Valid until {date}" : "Berlaku sampai {date}", "Delete" : "Hapus", diff --git a/settings/l10n/is.js b/settings/l10n/is.js index 6ba4f05e5e3..26e5866a27f 100644 --- a/settings/l10n/is.js +++ b/settings/l10n/is.js @@ -84,7 +84,6 @@ OC.L10N.register( "Uninstall" : "Henda út", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Forritið hefur verið virkjað, en það þarf að uppfæra það. Þú verður áframsendur á uppfærslusíðuna eftir 5 sekúndur.", "App update" : "Uppfærsla forrits", - "No apps found for \"{query}\"" : "Engin forrit fundust fyrir \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Villa kom upp. Sendu inn ASCII-kóðað PEM-skilríki.", "Valid until {date}" : "Gildir til {date}", "Delete" : "Eyða", @@ -125,6 +124,7 @@ OC.L10N.register( "NT LAN Manager" : "NT LAN stjórnun", "SSL" : "SSL", "TLS" : "TLS", + "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Þjónninn þinn er keyrandi á Microsoft Windows. Við mælum sterklega með Linux til að njóta sem best allra eiginleika fyrir notendurna.", "System locale can not be set to a one which supports UTF-8." : "Ekki var hægt að setja staðfærslu kerfisins á neina sem styður UTF-8.", "All checks passed." : "Stóðst allar prófanir.", "Open documentation" : "Opna hjálparskjöl", @@ -138,6 +138,7 @@ OC.L10N.register( "days" : "daga", "Enforce expiration date" : "Krefjast dagsetningar á gildistíma", "Allow resharing" : "Leyfa endurdeilingu", + "Allow sharing with groups" : "Leyfa deilingu með hópum", "Restrict users to only share with users in their groups" : "Takmarka notendur við að deila með notendum í þeirra eigin hópum", "Allow users to send mail notification for shared files to other users" : "Leyfa notendum að senda tilkynningar til annarra notenda í tölvupósti vegna deildra skráa", "Exclude groups from sharing" : "Undanskilja hópa frá því að deila", diff --git a/settings/l10n/is.json b/settings/l10n/is.json index 191129e6375..95157e1247e 100644 --- a/settings/l10n/is.json +++ b/settings/l10n/is.json @@ -82,7 +82,6 @@ "Uninstall" : "Henda út", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Forritið hefur verið virkjað, en það þarf að uppfæra það. Þú verður áframsendur á uppfærslusíðuna eftir 5 sekúndur.", "App update" : "Uppfærsla forrits", - "No apps found for \"{query}\"" : "Engin forrit fundust fyrir \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Villa kom upp. Sendu inn ASCII-kóðað PEM-skilríki.", "Valid until {date}" : "Gildir til {date}", "Delete" : "Eyða", @@ -123,6 +122,7 @@ "NT LAN Manager" : "NT LAN stjórnun", "SSL" : "SSL", "TLS" : "TLS", + "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Þjónninn þinn er keyrandi á Microsoft Windows. Við mælum sterklega með Linux til að njóta sem best allra eiginleika fyrir notendurna.", "System locale can not be set to a one which supports UTF-8." : "Ekki var hægt að setja staðfærslu kerfisins á neina sem styður UTF-8.", "All checks passed." : "Stóðst allar prófanir.", "Open documentation" : "Opna hjálparskjöl", @@ -136,6 +136,7 @@ "days" : "daga", "Enforce expiration date" : "Krefjast dagsetningar á gildistíma", "Allow resharing" : "Leyfa endurdeilingu", + "Allow sharing with groups" : "Leyfa deilingu með hópum", "Restrict users to only share with users in their groups" : "Takmarka notendur við að deila með notendum í þeirra eigin hópum", "Allow users to send mail notification for shared files to other users" : "Leyfa notendum að senda tilkynningar til annarra notenda í tölvupósti vegna deildra skráa", "Exclude groups from sharing" : "Undanskilja hópa frá því að deila", diff --git a/settings/l10n/it.js b/settings/l10n/it.js index f35b9b911da..5752bbc8282 100644 --- a/settings/l10n/it.js +++ b/settings/l10n/it.js @@ -84,7 +84,7 @@ OC.L10N.register( "Uninstall" : "Disinstalla", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "L'applicazione è stata abilitata, ma deve essere aggiornata. Sarai rediretto alla pagina di aggiornamento in 5 secondi.", "App update" : "Aggiornamento applicazione", - "No apps found for \"{query}\"" : "Nessuna applicazione trovata per \"{query}\"", + "No apps found for {query}" : "Nessuna applicazione trovata per {query}", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Si è verificato un errore. Carica un certificato PEM codificato in ASCII.", "Valid until {date}" : "Valido fino al {date}", "Delete" : "Elimina", diff --git a/settings/l10n/it.json b/settings/l10n/it.json index bdce62590cf..8a96ae1dd9e 100644 --- a/settings/l10n/it.json +++ b/settings/l10n/it.json @@ -82,7 +82,7 @@ "Uninstall" : "Disinstalla", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "L'applicazione è stata abilitata, ma deve essere aggiornata. Sarai rediretto alla pagina di aggiornamento in 5 secondi.", "App update" : "Aggiornamento applicazione", - "No apps found for \"{query}\"" : "Nessuna applicazione trovata per \"{query}\"", + "No apps found for {query}" : "Nessuna applicazione trovata per {query}", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Si è verificato un errore. Carica un certificato PEM codificato in ASCII.", "Valid until {date}" : "Valido fino al {date}", "Delete" : "Elimina", diff --git a/settings/l10n/ja.js b/settings/l10n/ja.js index 55106a99399..a559d922f7e 100644 --- a/settings/l10n/ja.js +++ b/settings/l10n/ja.js @@ -81,7 +81,6 @@ OC.L10N.register( "Uninstall" : "アンインストール", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "アプリは有効ですが、更新が必要です。5秒後に更新ページにリダイレクトします。", "App update" : "アプリのアップデート", - "No apps found for \"{query}\"" : "\"{query}\" に対応するアプリはありません", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "エラーが発生しました。ASCIIコードのPEM証明書をアップロードしてください。", "Valid until {date}" : "{date} まで有効", "Delete" : "削除", diff --git a/settings/l10n/ja.json b/settings/l10n/ja.json index 211b8d7259b..260b76300b3 100644 --- a/settings/l10n/ja.json +++ b/settings/l10n/ja.json @@ -79,7 +79,6 @@ "Uninstall" : "アンインストール", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "アプリは有効ですが、更新が必要です。5秒後に更新ページにリダイレクトします。", "App update" : "アプリのアップデート", - "No apps found for \"{query}\"" : "\"{query}\" に対応するアプリはありません", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "エラーが発生しました。ASCIIコードのPEM証明書をアップロードしてください。", "Valid until {date}" : "{date} まで有効", "Delete" : "削除", diff --git a/settings/l10n/ko.js b/settings/l10n/ko.js index 2e602db29c8..73fa8ca1603 100644 --- a/settings/l10n/ko.js +++ b/settings/l10n/ko.js @@ -84,7 +84,6 @@ OC.L10N.register( "Uninstall" : "제거", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "앱이 활성화되었지만, 앱을 업데이트해야 합니다. 5초 후 앱 업데이트 페이지로 넘어갑니다.", "App update" : "앱 업데이트", - "No apps found for \"{query}\"" : "\"{query}\"에 해당하는 앱을 찾을 수 없음", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "오류가 발생했습니다. ASCII로 인코딩된 PEM 인증서를 업로드하십시오.", "Valid until {date}" : "{date}까지 유효함", "Delete" : "삭제", diff --git a/settings/l10n/ko.json b/settings/l10n/ko.json index 3284f57fb62..070aaa164b1 100644 --- a/settings/l10n/ko.json +++ b/settings/l10n/ko.json @@ -82,7 +82,6 @@ "Uninstall" : "제거", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "앱이 활성화되었지만, 앱을 업데이트해야 합니다. 5초 후 앱 업데이트 페이지로 넘어갑니다.", "App update" : "앱 업데이트", - "No apps found for \"{query}\"" : "\"{query}\"에 해당하는 앱을 찾을 수 없음", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "오류가 발생했습니다. ASCII로 인코딩된 PEM 인증서를 업로드하십시오.", "Valid until {date}" : "{date}까지 유효함", "Delete" : "삭제", diff --git a/settings/l10n/mk.js b/settings/l10n/mk.js index 24e010f230c..7c49081c5b0 100644 --- a/settings/l10n/mk.js +++ b/settings/l10n/mk.js @@ -80,6 +80,7 @@ OC.L10N.register( "Strong password" : "Јака лозинка", "Groups" : "Групи", "Unable to delete {objName}" : "Не можам да избришам {objName}", + "Error creating group: {message}" : "Грешка при креирање на група: {message}", "A valid group name must be provided" : "Мора да се обезбеди валидно име на група", "deleted {groupName}" : "избришано {groupName}", "undo" : "врати", @@ -88,7 +89,9 @@ OC.L10N.register( "deleted {userName}" : "избришан {userName}", "add group" : "додади група", "A valid username must be provided" : "Мора да се обезбеди валидно корисничко име ", + "Error creating user: {message}" : "Грешка при креирање на корисник: {message}", "A valid password must be provided" : "Мора да се обезбеди валидна лозинка", + "A valid email must be provided" : "Мора да се обезбеди валидна електронска пошта", "__language_name__" : "__language_name__", "Unlimited" : "Неограничено", "Personal info" : "Лични податоци", @@ -103,6 +106,7 @@ OC.L10N.register( "NT LAN Manager" : "NT LAN Менаџер", "SSL" : "SSL", "TLS" : "TLS", + "All checks passed." : "Сите проверки се поминати.", "Open documentation" : "Отвори ја документацијата", "Allow apps to use the Share API" : "Дозволете апликациите да го користат API-то за споделување", "Allow users to share via link" : "Допушти корисниците да споделуваат со линкови", @@ -113,9 +117,13 @@ OC.L10N.register( "days" : "денови", "Enforce expiration date" : "Наметни датум на траење", "Allow resharing" : "Овозможи повторно споделување", + "Allow sharing with groups" : "Овозможи споделување со групи", "Restrict users to only share with users in their groups" : "Ограничи корисниците да споделуваат со корисници во своите групи", "Exclude groups from sharing" : "Исклучи групи од споделување", "Execute one task with each page loaded" : "Изврши по една задача со секоја вчитана страница", + "Enable server-side encryption" : "Овозможи енкрипција на страна на серверот", + "Enable encryption" : "Овозможи енкрипција", + "Start migration" : "Започни ја миграцијата", "This is used for sending out notifications." : "Ова се користи за испраќање на известувања.", "Send mode" : "Мод на испраќање", "Encryption" : "Енкрипција", @@ -130,9 +138,18 @@ OC.L10N.register( "SMTP Password" : "SMTP лозинка", "Test email settings" : "Провери ги нагодувањаа за електронска пошта", "Send email" : "Испрати пошта", + "Download logfile" : "Преземи ја датотеката со логови", "More" : "Повеќе", "Less" : "Помалку", + "What to log" : "Што да логирам", + "How to do backups" : "Како да правам резервни копии", + "Advanced monitoring" : "Напредно мониторирање", + "Performance tuning" : "Нагодување на перформансите", + "Improving the config.php" : "Подобруваер на config.php", + "Theming" : "Поставување на тема", + "Hardening and security guidance" : "Заштита и насоки за безбедност", "Version" : "Верзија", + "Developer documentation" : "Документација за програмери", "Documentation:" : "Документација:", "Enable only for specific groups" : "Овозможи само на специфицирани групи", "Cheers!" : "Поздрав!", diff --git a/settings/l10n/mk.json b/settings/l10n/mk.json index a5ddac631e3..7dd4902c284 100644 --- a/settings/l10n/mk.json +++ b/settings/l10n/mk.json @@ -78,6 +78,7 @@ "Strong password" : "Јака лозинка", "Groups" : "Групи", "Unable to delete {objName}" : "Не можам да избришам {objName}", + "Error creating group: {message}" : "Грешка при креирање на група: {message}", "A valid group name must be provided" : "Мора да се обезбеди валидно име на група", "deleted {groupName}" : "избришано {groupName}", "undo" : "врати", @@ -86,7 +87,9 @@ "deleted {userName}" : "избришан {userName}", "add group" : "додади група", "A valid username must be provided" : "Мора да се обезбеди валидно корисничко име ", + "Error creating user: {message}" : "Грешка при креирање на корисник: {message}", "A valid password must be provided" : "Мора да се обезбеди валидна лозинка", + "A valid email must be provided" : "Мора да се обезбеди валидна електронска пошта", "__language_name__" : "__language_name__", "Unlimited" : "Неограничено", "Personal info" : "Лични податоци", @@ -101,6 +104,7 @@ "NT LAN Manager" : "NT LAN Менаџер", "SSL" : "SSL", "TLS" : "TLS", + "All checks passed." : "Сите проверки се поминати.", "Open documentation" : "Отвори ја документацијата", "Allow apps to use the Share API" : "Дозволете апликациите да го користат API-то за споделување", "Allow users to share via link" : "Допушти корисниците да споделуваат со линкови", @@ -111,9 +115,13 @@ "days" : "денови", "Enforce expiration date" : "Наметни датум на траење", "Allow resharing" : "Овозможи повторно споделување", + "Allow sharing with groups" : "Овозможи споделување со групи", "Restrict users to only share with users in their groups" : "Ограничи корисниците да споделуваат со корисници во своите групи", "Exclude groups from sharing" : "Исклучи групи од споделување", "Execute one task with each page loaded" : "Изврши по една задача со секоја вчитана страница", + "Enable server-side encryption" : "Овозможи енкрипција на страна на серверот", + "Enable encryption" : "Овозможи енкрипција", + "Start migration" : "Започни ја миграцијата", "This is used for sending out notifications." : "Ова се користи за испраќање на известувања.", "Send mode" : "Мод на испраќање", "Encryption" : "Енкрипција", @@ -128,9 +136,18 @@ "SMTP Password" : "SMTP лозинка", "Test email settings" : "Провери ги нагодувањаа за електронска пошта", "Send email" : "Испрати пошта", + "Download logfile" : "Преземи ја датотеката со логови", "More" : "Повеќе", "Less" : "Помалку", + "What to log" : "Што да логирам", + "How to do backups" : "Како да правам резервни копии", + "Advanced monitoring" : "Напредно мониторирање", + "Performance tuning" : "Нагодување на перформансите", + "Improving the config.php" : "Подобруваер на config.php", + "Theming" : "Поставување на тема", + "Hardening and security guidance" : "Заштита и насоки за безбедност", "Version" : "Верзија", + "Developer documentation" : "Документација за програмери", "Documentation:" : "Документација:", "Enable only for specific groups" : "Овозможи само на специфицирани групи", "Cheers!" : "Поздрав!", diff --git a/settings/l10n/nb_NO.js b/settings/l10n/nb_NO.js index a81d53f70b2..e115c20de04 100644 --- a/settings/l10n/nb_NO.js +++ b/settings/l10n/nb_NO.js @@ -84,7 +84,6 @@ OC.L10N.register( "Uninstall" : "Avinstaller", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Appen er aktivert men må oppdateres. Du vil bli omdirigert til oppdateringssiden om 5 sekunder.", "App update" : "Oppdatering av applikasjon", - "No apps found for \"{query}\"" : "Ingen apper funnet for \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Det oppstod en feil. Vennligst last opp et ASCII-kodet PEM-sertifikat.", "Valid until {date}" : "Gyldig til {date}", "Delete" : "Slett", diff --git a/settings/l10n/nb_NO.json b/settings/l10n/nb_NO.json index 367bba7fc2d..752f57c50a6 100644 --- a/settings/l10n/nb_NO.json +++ b/settings/l10n/nb_NO.json @@ -82,7 +82,6 @@ "Uninstall" : "Avinstaller", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Appen er aktivert men må oppdateres. Du vil bli omdirigert til oppdateringssiden om 5 sekunder.", "App update" : "Oppdatering av applikasjon", - "No apps found for \"{query}\"" : "Ingen apper funnet for \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Det oppstod en feil. Vennligst last opp et ASCII-kodet PEM-sertifikat.", "Valid until {date}" : "Gyldig til {date}", "Delete" : "Slett", diff --git a/settings/l10n/nl.js b/settings/l10n/nl.js index c38f2b82ff5..c069b98e203 100644 --- a/settings/l10n/nl.js +++ b/settings/l10n/nl.js @@ -84,7 +84,6 @@ OC.L10N.register( "Uninstall" : "De-installeren", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "De app is geactiveerd maar moet worden bijgewerkt. U wordt over 5 seconden doorgeleid naar de bijwerkpagina.", "App update" : "App update", - "No apps found for \"{query}\"" : "Geen apps gevonden voor \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Er trad een fout op. Upload als een ASCII-gecodeerd PEM certificaat.", "Valid until {date}" : "Geldig tot {date}", "Delete" : "Verwijder", @@ -126,17 +125,20 @@ OC.L10N.register( "SSL" : "SSL", "TLS" : "TLS", "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php lijkt niet goed te zijn ingesteld om systeemomgevingsvariabelen te bevragen. De test met getenv(\"PATH\") gaf een leeg resultaat.", + "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Verifieer de <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installatiedocumentatie ↗</a> voor php configuratie notities en de php configuratie van uw server, zeker als php-fpm wordt gebruikt.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "De Alleen-lezen config is geactiveerd. Dit voorkomt het via de webinterface wijzigen van verschillende instellingen. Bovendien moet het bestand voor elke aanpassing handmatig op beschrijfbaar worden ingesteld.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP is blijkbaar zo ingesteld dat inline doc blokken worden gestript. Hierdoor worden verschillende kernmodules onbruikbaar.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dit wordt vermoedelijk veroorzaakt door een cache/accelerator, zoals Zend OPcache of eAccelerator.", "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Uw server draait op Microsoft Windows. We adviseren om een linux server te gebruiken voor een optimale gebruikerservaring.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s lager dan versie %2$s geïnstalleerd, voor betere stabiliteit en prestaties adviseren wij om %1$s te upgraden naar een nieuwere versie.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "De PHP module 'fileinfo' ontbreekt. We adviseren met klem om deze module te activeren om de beste resultaten te bereiken voor mime-type detectie.", + "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transactionele bestandlocking is gedeactiveerd, dat zou kunnen leiden tot versiebeheerproblemen. Schakel 'filelocking enabled' in config.php in om deze problemen te voorkomen. Zie de <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentatie ↗</a> voor meer informatie.", "System locale can not be set to a one which supports UTF-8." : "De systeemtaal kan niet worden ingesteld op een taal die UTF-8 ondersteunt.", "This means that there might be problems with certain characters in file names." : "Dat betekent dat er problemen kunnen optreden met bepaalde tekens in bestandsnamen.", "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "We adviseren met klem om de noodzakelijke pakketten op uw systeem te installeren om een van de volgende talen te ondersteunen: %s.", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Als uw installatie niet in de hoofddirectory van het domein staat, maar wel cron gebruikt, dan kunnen er problemen ontstaan bij het genereren van URL's. Om deze problemen te voorkomen zou u de \"overwrite.cli.url\" optie in config.php moeten instellen op het webroot pad van uw ownCloud (aanbevolen: \"%s\") ", "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "het was niet mogelijk om de cronjob via CLI uit te voeren. De volgende technische problemen traden op:", + "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "Lees de <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installatie handleiding</a> goed door en controleer op fouten en waarschuwingen in de <a href=\"#log-section\">logging</a>.", "All checks passed." : "Alle checks geslaagd", "Open documentation" : "Open documentatie", "Allow apps to use the Share API" : "Apps toestaan de Share API te gebruiken", @@ -149,6 +151,7 @@ OC.L10N.register( "days" : "dagen", "Enforce expiration date" : "Verplicht de vervaldatum", "Allow resharing" : "Toestaan opnieuw delen", + "Allow sharing with groups" : "Sta delen met groepen toe", "Restrict users to only share with users in their groups" : "Laat gebruikers alleen delen met andere gebruikers in hun groepen", "Allow users to send mail notification for shared files to other users" : "Sta gebruikers toe om e-mailnotificaties aan andere gebruikers te versturen voor gedeelde bestanden", "Exclude groups from sharing" : "Sluit groepen uit van delen", @@ -195,6 +198,7 @@ OC.L10N.register( "What to log" : "Wat loggen", "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "SQLite wordt gebruikt als database. Voor grotere installaties adviseren we om te schakelen naar een andere database engine.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Vooral wanneer de desktop client wordt gebruik voor bestandssynchronisatie wordt gebruik van sqlite afgeraden.", + "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "Om te migreren naar een andere database moet u de commandoregel tool gebruiken: 'occ db:convert-type', lees de <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentatie ↗</a>.", "How to do backups" : "Hoe maak je back-ups", "Advanced monitoring" : "Geavanceerde monitoring", "Performance tuning" : "Prestatie afstelling", diff --git a/settings/l10n/nl.json b/settings/l10n/nl.json index b7e6b023aee..09ed6852d31 100644 --- a/settings/l10n/nl.json +++ b/settings/l10n/nl.json @@ -82,7 +82,6 @@ "Uninstall" : "De-installeren", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "De app is geactiveerd maar moet worden bijgewerkt. U wordt over 5 seconden doorgeleid naar de bijwerkpagina.", "App update" : "App update", - "No apps found for \"{query}\"" : "Geen apps gevonden voor \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Er trad een fout op. Upload als een ASCII-gecodeerd PEM certificaat.", "Valid until {date}" : "Geldig tot {date}", "Delete" : "Verwijder", @@ -124,17 +123,20 @@ "SSL" : "SSL", "TLS" : "TLS", "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php lijkt niet goed te zijn ingesteld om systeemomgevingsvariabelen te bevragen. De test met getenv(\"PATH\") gaf een leeg resultaat.", + "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Verifieer de <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installatiedocumentatie ↗</a> voor php configuratie notities en de php configuratie van uw server, zeker als php-fpm wordt gebruikt.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "De Alleen-lezen config is geactiveerd. Dit voorkomt het via de webinterface wijzigen van verschillende instellingen. Bovendien moet het bestand voor elke aanpassing handmatig op beschrijfbaar worden ingesteld.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP is blijkbaar zo ingesteld dat inline doc blokken worden gestript. Hierdoor worden verschillende kernmodules onbruikbaar.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dit wordt vermoedelijk veroorzaakt door een cache/accelerator, zoals Zend OPcache of eAccelerator.", "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Uw server draait op Microsoft Windows. We adviseren om een linux server te gebruiken voor een optimale gebruikerservaring.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s lager dan versie %2$s geïnstalleerd, voor betere stabiliteit en prestaties adviseren wij om %1$s te upgraden naar een nieuwere versie.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "De PHP module 'fileinfo' ontbreekt. We adviseren met klem om deze module te activeren om de beste resultaten te bereiken voor mime-type detectie.", + "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transactionele bestandlocking is gedeactiveerd, dat zou kunnen leiden tot versiebeheerproblemen. Schakel 'filelocking enabled' in config.php in om deze problemen te voorkomen. Zie de <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentatie ↗</a> voor meer informatie.", "System locale can not be set to a one which supports UTF-8." : "De systeemtaal kan niet worden ingesteld op een taal die UTF-8 ondersteunt.", "This means that there might be problems with certain characters in file names." : "Dat betekent dat er problemen kunnen optreden met bepaalde tekens in bestandsnamen.", "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "We adviseren met klem om de noodzakelijke pakketten op uw systeem te installeren om een van de volgende talen te ondersteunen: %s.", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Als uw installatie niet in de hoofddirectory van het domein staat, maar wel cron gebruikt, dan kunnen er problemen ontstaan bij het genereren van URL's. Om deze problemen te voorkomen zou u de \"overwrite.cli.url\" optie in config.php moeten instellen op het webroot pad van uw ownCloud (aanbevolen: \"%s\") ", "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "het was niet mogelijk om de cronjob via CLI uit te voeren. De volgende technische problemen traden op:", + "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "Lees de <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installatie handleiding</a> goed door en controleer op fouten en waarschuwingen in de <a href=\"#log-section\">logging</a>.", "All checks passed." : "Alle checks geslaagd", "Open documentation" : "Open documentatie", "Allow apps to use the Share API" : "Apps toestaan de Share API te gebruiken", @@ -147,6 +149,7 @@ "days" : "dagen", "Enforce expiration date" : "Verplicht de vervaldatum", "Allow resharing" : "Toestaan opnieuw delen", + "Allow sharing with groups" : "Sta delen met groepen toe", "Restrict users to only share with users in their groups" : "Laat gebruikers alleen delen met andere gebruikers in hun groepen", "Allow users to send mail notification for shared files to other users" : "Sta gebruikers toe om e-mailnotificaties aan andere gebruikers te versturen voor gedeelde bestanden", "Exclude groups from sharing" : "Sluit groepen uit van delen", @@ -193,6 +196,7 @@ "What to log" : "Wat loggen", "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "SQLite wordt gebruikt als database. Voor grotere installaties adviseren we om te schakelen naar een andere database engine.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Vooral wanneer de desktop client wordt gebruik voor bestandssynchronisatie wordt gebruik van sqlite afgeraden.", + "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "Om te migreren naar een andere database moet u de commandoregel tool gebruiken: 'occ db:convert-type', lees de <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentatie ↗</a>.", "How to do backups" : "Hoe maak je back-ups", "Advanced monitoring" : "Geavanceerde monitoring", "Performance tuning" : "Prestatie afstelling", diff --git a/settings/l10n/oc.js b/settings/l10n/oc.js index f5c83114ff0..06b939725b5 100644 --- a/settings/l10n/oc.js +++ b/settings/l10n/oc.js @@ -80,7 +80,6 @@ OC.L10N.register( "Uninstall" : "Desinstallar", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "L'aplicacion es estada activada mas deu èsser mesa a jorn. Seretz redirigit cap a la pagina de las mesas a jorn dins 5 segondas.", "App update" : "Mesa a jorn", - "No apps found for \"{query}\"" : "Cap d'aplicacion pas trobada per \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Una error s'es produsida. Provesissètz un certificat PEM encodat al format ASCII.", "Valid until {date}" : "Valid fins al {date}", "Delete" : "Suprimir", diff --git a/settings/l10n/oc.json b/settings/l10n/oc.json index b80dd5409ef..08894868bf6 100644 --- a/settings/l10n/oc.json +++ b/settings/l10n/oc.json @@ -78,7 +78,6 @@ "Uninstall" : "Desinstallar", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "L'aplicacion es estada activada mas deu èsser mesa a jorn. Seretz redirigit cap a la pagina de las mesas a jorn dins 5 segondas.", "App update" : "Mesa a jorn", - "No apps found for \"{query}\"" : "Cap d'aplicacion pas trobada per \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Una error s'es produsida. Provesissètz un certificat PEM encodat al format ASCII.", "Valid until {date}" : "Valid fins al {date}", "Delete" : "Suprimir", diff --git a/settings/l10n/pt_BR.js b/settings/l10n/pt_BR.js index c7cb04348e3..43dbec597f3 100644 --- a/settings/l10n/pt_BR.js +++ b/settings/l10n/pt_BR.js @@ -84,7 +84,7 @@ OC.L10N.register( "Uninstall" : "Desinstalar", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "O aplicativo foi habilitado, mas precisa ser atualizado. Você será redirecionado para a página de atualização em 5 segundos.", "App update" : "Atualização de aplicativo", - "No apps found for \"{query}\"" : "Nenhum aplicativo encontrado para \"{query}\"", + "No apps found for {query}" : "Nenhum aplicativo encontrados para {query}", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ocorreu um erro. Por favor envie um certificado ASCII-encoded PEM", "Valid until {date}" : "Vádido até {date}", "Delete" : "Excluir", diff --git a/settings/l10n/pt_BR.json b/settings/l10n/pt_BR.json index a4737892390..6c9071b1b4e 100644 --- a/settings/l10n/pt_BR.json +++ b/settings/l10n/pt_BR.json @@ -82,7 +82,7 @@ "Uninstall" : "Desinstalar", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "O aplicativo foi habilitado, mas precisa ser atualizado. Você será redirecionado para a página de atualização em 5 segundos.", "App update" : "Atualização de aplicativo", - "No apps found for \"{query}\"" : "Nenhum aplicativo encontrado para \"{query}\"", + "No apps found for {query}" : "Nenhum aplicativo encontrados para {query}", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ocorreu um erro. Por favor envie um certificado ASCII-encoded PEM", "Valid until {date}" : "Vádido até {date}", "Delete" : "Excluir", diff --git a/settings/l10n/pt_PT.js b/settings/l10n/pt_PT.js index c041f93fe5a..70c74762477 100644 --- a/settings/l10n/pt_PT.js +++ b/settings/l10n/pt_PT.js @@ -84,7 +84,6 @@ OC.L10N.register( "Uninstall" : "Desinstalar", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "A aplicação foi ativada, mas precisa de ser atualizada. Você será redirecionado para a página de atualização em 5 segundos.", "App update" : "Atualizar App", - "No apps found for \"{query}\"" : "Não foram encontradas aplicações para \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ocorreu um erro. Por favor, envie um certificado PEM codificado em ASCII.", "Valid until {date}" : "Válida até {date}", "Delete" : "Apagar", diff --git a/settings/l10n/pt_PT.json b/settings/l10n/pt_PT.json index 37b947c2f6f..5fc36b71bcd 100644 --- a/settings/l10n/pt_PT.json +++ b/settings/l10n/pt_PT.json @@ -82,7 +82,6 @@ "Uninstall" : "Desinstalar", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "A aplicação foi ativada, mas precisa de ser atualizada. Você será redirecionado para a página de atualização em 5 segundos.", "App update" : "Atualizar App", - "No apps found for \"{query}\"" : "Não foram encontradas aplicações para \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ocorreu um erro. Por favor, envie um certificado PEM codificado em ASCII.", "Valid until {date}" : "Válida até {date}", "Delete" : "Apagar", diff --git a/settings/l10n/ru.js b/settings/l10n/ru.js index 9cbcebb1473..b372180d745 100644 --- a/settings/l10n/ru.js +++ b/settings/l10n/ru.js @@ -84,7 +84,6 @@ OC.L10N.register( "Uninstall" : "Удалить", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Приложение было включено и нуждается в обновлении. Вас перенаправит на страницу обновления через 5 секунд.", "App update" : "Обновить приложения", - "No apps found for \"{query}\"" : "Не найдено приложений по вашему \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Произошла ошибка. Пожалуйста загрузите сертификат PEM в ASCII кодировке.", "Valid until {date}" : "Действительно до {дата}", "Delete" : "Удалить", diff --git a/settings/l10n/ru.json b/settings/l10n/ru.json index fb4c1bcfa8a..160dbe8167d 100644 --- a/settings/l10n/ru.json +++ b/settings/l10n/ru.json @@ -82,7 +82,6 @@ "Uninstall" : "Удалить", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Приложение было включено и нуждается в обновлении. Вас перенаправит на страницу обновления через 5 секунд.", "App update" : "Обновить приложения", - "No apps found for \"{query}\"" : "Не найдено приложений по вашему \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Произошла ошибка. Пожалуйста загрузите сертификат PEM в ASCII кодировке.", "Valid until {date}" : "Действительно до {дата}", "Delete" : "Удалить", diff --git a/settings/l10n/sl.js b/settings/l10n/sl.js index b59c8d21b9c..3f41d38d7fc 100644 --- a/settings/l10n/sl.js +++ b/settings/l10n/sl.js @@ -78,7 +78,6 @@ OC.L10N.register( "Uninstall" : "Odstrani namestitev", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Vstavek je omogočen, vendar zahteva posodobitev. Samodejno bo izvedena preusmeritev na stran za posodobitev v 5 sekundah.", "App update" : "Posodabljanje vstavkov", - "No apps found for \"{query}\"" : "Za \"{query}\" ni na voljo nobenega vstavka.", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Prišlo je do napake. Uvoziti je treba ustrezno ASCII kodirano potrdilo PEM.", "Valid until {date}" : "Veljavno do {date}", "Delete" : "Izbriši", diff --git a/settings/l10n/sl.json b/settings/l10n/sl.json index 9531946bbe0..55406ef3a30 100644 --- a/settings/l10n/sl.json +++ b/settings/l10n/sl.json @@ -76,7 +76,6 @@ "Uninstall" : "Odstrani namestitev", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Vstavek je omogočen, vendar zahteva posodobitev. Samodejno bo izvedena preusmeritev na stran za posodobitev v 5 sekundah.", "App update" : "Posodabljanje vstavkov", - "No apps found for \"{query}\"" : "Za \"{query}\" ni na voljo nobenega vstavka.", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Prišlo je do napake. Uvoziti je treba ustrezno ASCII kodirano potrdilo PEM.", "Valid until {date}" : "Veljavno do {date}", "Delete" : "Izbriši", diff --git a/settings/l10n/sq.js b/settings/l10n/sq.js index cd5d1f8a6f4..82d6bc8780b 100644 --- a/settings/l10n/sq.js +++ b/settings/l10n/sq.js @@ -84,7 +84,7 @@ OC.L10N.register( "Uninstall" : "Çinstaloje", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikacioni është aktivizuar, por lyp të përditësohet. Do të ridrejtoheni te faqja e përditësimeve brenda 5 sekondash.", "App update" : "Përditësim aplikacioni", - "No apps found for \"{query}\"" : "S’u gjetën aplikacione për \"{query}\"", + "No apps found for {query}" : "S’u gjetën aplikacione për {query}", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ndodhi një gabim. Ju lutemi, ngarkoni një dëshmi PEM të koduar me ASCII.", "Valid until {date}" : "E vlefshme deri më {date}", "Delete" : "Fshije", diff --git a/settings/l10n/sq.json b/settings/l10n/sq.json index 62e576c00e5..ab88d0f67df 100644 --- a/settings/l10n/sq.json +++ b/settings/l10n/sq.json @@ -82,7 +82,7 @@ "Uninstall" : "Çinstaloje", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikacioni është aktivizuar, por lyp të përditësohet. Do të ridrejtoheni te faqja e përditësimeve brenda 5 sekondash.", "App update" : "Përditësim aplikacioni", - "No apps found for \"{query}\"" : "S’u gjetën aplikacione për \"{query}\"", + "No apps found for {query}" : "S’u gjetën aplikacione për {query}", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ndodhi një gabim. Ju lutemi, ngarkoni një dëshmi PEM të koduar me ASCII.", "Valid until {date}" : "E vlefshme deri më {date}", "Delete" : "Fshije", diff --git a/settings/l10n/sv.js b/settings/l10n/sv.js index 038a65a761a..82dfa175973 100644 --- a/settings/l10n/sv.js +++ b/settings/l10n/sv.js @@ -24,18 +24,26 @@ OC.L10N.register( "No user supplied" : "Ingen användare angiven", "Please provide an admin recovery password, otherwise all user data will be lost" : "Ange ett återställningslösenord för administratören. Annars kommer all användardata förloras", "Wrong admin recovery password. Please check the password and try again." : "Felaktigt återställningslösenord för administratör. Kolla lösenordet och prova igen.", + "Backend doesn't support password change, but the user's encryption key was successfully updated." : "Backend stödjer ej lösenordsbyte, men användarens ändring av krypteringsnyckel lyckades.", "Unable to change password" : "Kunde inte ändra lösenord", "Enabled" : "Aktiverad", "Not enabled" : "Inte aktiverad", + "installing and updating apps via the app store or Federated Cloud Sharing" : "installering och uppdatering utav applikationer eller Federate Cloud delning.", + "Federated Cloud Sharing" : "Federate Cloud delning", + "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL använder en föråldrad %s version (%s). Var god uppdatera ditt operativsystem annars kan funktioner som %s sluta fungera pålitligt.", + "A problem occurred, please check your log files (Error: %s)" : "Ett problem uppstod, var god kontrollera loggfiler (Error: %s)", + "Migration Completed" : "Migrering Färdigställd", "Group already exists." : "Gruppen finns redan.", "Unable to add group." : "Lyckades inte lägga till grupp.", "Unable to delete group." : "Lyckades inte radera grupp.", "log-level out of allowed range" : "logg-nivå utanför tillåtet område", "Saved" : "Sparad", "test email settings" : "Testa e-post inställningar", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ett problem uppstod när mail försökte skickas. Var god kontrollera dina inställningar. (Error: %s)", "Email sent" : "E-post skickad", "You need to set your user email before being able to send test emails." : "Du behöver ställa in din användares e-postadress före du kan skicka test e-post.", "Invalid mail address" : "Ogiltig e-postadress", + "A user with that name already exists." : "En användare med det namnet existerar redan.", "Unable to create user." : "Kan inte skapa användare.", "Your %s account was created" : "Ditt %s konto skapades", "Unable to delete user." : "Kan inte radera användare.", @@ -47,24 +55,36 @@ OC.L10N.register( "Unable to change full name" : "Kunde inte ändra hela namnet", "Are you really sure you want add \"{domain}\" as trusted domain?" : "Är du verkligen säker på att du vill lägga till \"{domain}\" som en trusted domian?", "Add trusted domain" : "Lägg till betrodd domän", + "Migration in progress. Please wait until the migration is finished" : "Migrering pågår. Var god vänta tills migreringen är färdigställd.", + "Migration started …" : "Migrering påbörjad ...", "Sending..." : "Skickar ...", "Official" : "Officiell", "Approved" : "Godkänd", "Experimental" : "Experimentiell", "All" : "Alla", + "No apps found for your version" : "Inga appar funna för din version", + "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Officiella appar är utvecklade av Owncloud's community. De erbjuder funtionalitet som är centralt för owncloud och redo för användning i produktion.", + "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Godkända appar är utvecklade av betrodda utvecklare och har genomgått enklare säkerhetstester. De är aktivt utvecklade i ett öppet kodbibliotek och deras underhållare anser dom stabila nog för enklare till normalt användande.", + "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Denna applikation är ej kontrollerad för säkerhetsbrister och är ny eller känd att orsaka instabilitetsproblem. Installera på egen risk.", "Update to %s" : "Uppdatera till %s", + "_You have %n app update pending_::_You have %n app updates pending_" : ["Du har %n applikationsuppdatering väntandes.","Du har %n applikationsuppdateringar väntandes."], "Please wait...." : "Var god vänta ...", "Error while disabling app" : "Fel vid inaktivering av app", "Disable" : "Deaktivera", "Enable" : "Aktivera", "Error while enabling app" : "Fel vid aktivering av app", + "Error: this app cannot be enabled because it makes the server unstable" : "Fel uppstod: Denna applikation kan ej startas för det gör servern ostabil.", + "Error: could not disable broken app" : "Fel: Gick ej att inaktivera trasig applikation.", + "Error while disabling broken app" : "Fel under inaktivering av trasig applikation.", "Updating...." : "Uppdaterar ...", "Error while updating app" : "Fel uppstod vid uppdatering av appen", "Updated" : "Uppdaterad", "Uninstalling ...." : "Avinstallerar ...", "Error while uninstalling app" : "Ett fel inträffade när applikatonen avinstallerades", "Uninstall" : "Avinstallera", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Applikationen har aktiverats men behöver uppdateras. Du kommer bli omdirigerad till uppdateringssidan inom 5 sekunder.", "App update" : "Uppdatering av app", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ett fel uppstod. Var god ladda upp ett ASCII-kodad PEM certifikat.", "Valid until {date}" : "Giltig t.o.m. {date}", "Delete" : "Radera", "An error occurred: {message}" : "Ett fel inträffade: {message}", @@ -76,6 +96,7 @@ OC.L10N.register( "Strong password" : "Starkt lösenord", "Groups" : "Grupper", "Unable to delete {objName}" : "Kunde inte radera {objName}", + "Error creating group: {message}" : "Fel uppstod vid skapande av grupp: {message}", "A valid group name must be provided" : "Ett giltigt gruppnamn måste anges", "deleted {groupName}" : "raderade {groupName} ", "undo" : "ångra", @@ -83,7 +104,9 @@ OC.L10N.register( "never" : "aldrig", "deleted {userName}" : "raderade {userName}", "add group" : "lägg till grupp", + "Changing the password will result in data loss, because data recovery is not available for this user" : "Ändring utav lösenord kommer resultera i förlorad data, eftersom dataåterställning ej är tillgängligt för denna användare.", "A valid username must be provided" : "Ett giltigt användarnamn måste anges", + "Error creating user: {message}" : "Fel uppstod när användare skulle skapas: {message}", "A valid password must be provided" : "Ett giltigt lösenord måste anges", "A valid email must be provided" : "En giltig e-postadress måste anges", "__language_name__" : "__language_name__", @@ -101,16 +124,23 @@ OC.L10N.register( "NT LAN Manager" : "NT LAN Manager", "SSL" : "SSL", "TLS" : "TLS", + "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php verkar ej vara konfigurerat för att kunna skicka förfrågan om systemmiljövariabler. Testet med getenv(\"PATH\") returnerade bara ett tomt svar.", + "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Var god kontrollera <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\"> installationsdokumentationen ↗</a> för konfigurationsanteckningar för php och för php konfigurationen för din server, speciellt när php-fpm används.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Läs-bara konfigureringen har blivit aktiv. Detta förhindrar att några konfigureringar kan sättas via web-gränssnittet.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP är tydligen inställd för att rensa inline doc block. Detta kommer att göra flera kärnapplikationer otillgängliga.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Detta orsakas troligtvis av en cache/accelerator som t ex Zend OPchache eller eAccelerator.", "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Din server använder Microsoft Windows. Vi rekommenderar starkt Linux för en optimal användarerfarenhet.", + "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s under version %2$s är installerad, för stabilitet och prestanda rekommenderar vi uppdatering till en nyare %1$s version.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP-modulen 'fileinfo' saknas. Vi rekommenderar starkt att aktivera den här modulen för att kunna upptäcka korrekt mime-typ.", + "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transactional file locking är inaktiverad, detta kan innebära konkurrenstillstånd. Aktivera \"filelocking.enabled' i config.php för att undvika dessa problem. Se <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentationen ↗</a> för mer information.", "System locale can not be set to a one which supports UTF-8." : "Systemspråk kan inte ställas in till ett som stödjer UTF-8.", "This means that there might be problems with certain characters in file names." : "Detta betyder att där kan komma att uppstå problem med vissa tecken i filnamn.", "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Vi rekommenderar starkt att installera de nödvändiga paketen på ditt system för att stödja en av följande språkversioner: %s.", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Om din installation inte installerades på roten av domänen och använder system cron så kan det uppstå problem med URL-genereringen. För att undvika dessa problem, var vänlig sätt \"overwrite.cli.url\"-inställningen i din config.php-fil till webbrotsökvägen av din installation (Föreslagen: \"%s\")", + "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "Det var ej möjligt att exekvera cronjob via CLI. Följande tekniska fel har uppstått:", + "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "Var god dubbelkontrollera <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\"> installationsguiden ↗</a>, och kontrollera efter några fel eller varningar i <a href=\"#log-section\"> logfilen</a>.", "All checks passed." : "Alla kontroller lyckades!", + "Open documentation" : "Öppna dokumentation", "Allow apps to use the Share API" : "Tillåt applikationer att använda delat API", "Allow users to share via link" : "Tillåt användare att dela via länk", "Enforce password protection" : "Tillämpa lösenordskydd", @@ -121,17 +151,31 @@ OC.L10N.register( "days" : "dagar", "Enforce expiration date" : "Tillämpa förfallodatum", "Allow resharing" : "Tillåt vidaredelning", + "Allow sharing with groups" : "Tilåt delning med grupper", "Restrict users to only share with users in their groups" : "Begränsa användare till att enbart kunna dela med användare i deras grupper", "Allow users to send mail notification for shared files to other users" : "Tillåt användare att skicka mejlnotifiering för delade filer till andra användare", "Exclude groups from sharing" : "Exkludera grupp från att dela", "These groups will still be able to receive shares, but not to initiate them." : "Dessa grupper kommer fortfarande kunna ta emot delningar, men inte skapa delningar.", + "Allow username autocompletion in share dialog. If this is disabled the full username needs to be entered." : "Tillåt användarnamn att autokompletteras i delningsfönstret. Om det är inaktiverat krävs fullständigt användarnamn i rutan.", "Last cron job execution: %s." : "Sista cron kördes %s", "Last cron job execution: %s. Something seems wrong." : "Sista cron kördes %s. Något verkar vara fel.", "Cron was not executed yet!" : "Cron har inte körts ännu!", "Execute one task with each page loaded" : "Exekvera en uppgift vid varje sidladdning", "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php är registrerad som en webcron service att ropa på cron.php varje 15 minuter över http.", "Use system's cron service to call the cron.php file every 15 minutes." : "Använd systemets cron-tjänst för att anropa cron.php var 15:e minut.", + "Enable server-side encryption" : "Aktivera kryptering på server.", + "Please read carefully before activating server-side encryption: " : "OBS: Var god läs noga innan kryptering aktiveras på servern.", + "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." : "När kryptering är aktiverat, så kommer alla filer som laddas upp till servern från den tidpunkt och frammåt bli krypterad på servern. Det kommer bara vara möjligt att inaktivera kryptering vid ett senare tillfälle om krypteringsmodulen stödjer den funktionen och alla förvillkor (exempelvis använder återställningsnyckel) är mötta.", + "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." : "Kryptering ensamt garanterar inte säkerhet av själva systemet. Var god see Owncloud's dokumentation för mer information om hur krypteringsapplikationen fungerar, och de användarfallen som stöds.", + "Be aware that encryption always increases the file size." : "OBS! Observera att kryptering alltid ökar filstorleken", + "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." : "Det är alltid en god ide att skapa regelbundna säkerhetskopior av din data, om kryptering används var säker på att även krypteringsnycklarna säkerhetskopieras tillsammans med din data.", + "This is the final warning: Do you really want to enable encryption?" : "Detta är en slutgiltig varning: Vill du verkligen aktivera kryptering?", "Enable encryption" : "Aktivera kryptering", + "No encryption module loaded, please enable an encryption module in the app menu." : "Ingen krypteringsmodul laddad, var god aktivera krypteringsmodulen i applikationsmenyn.", + "Select default encryption module:" : "Välj standard krypteringsmodul:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Du behöver migrera dina krypteringsnycklar från den gamla krypteringen (owncloud <= 8.0) till den nya. Var god aktivera \"Default encryption module\" och kör 'occ encryption:migrate'.", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du behöver migrera dina krypteringsnycklar från den gamla krypteringen (owncloud <= 8.0) till den nya.", + "Start migration" : "Starta migrering", "This is used for sending out notifications." : "Detta används för att skicka ut notifieringar.", "Send mode" : "Sändningsläge", "Encryption" : "Kryptering", @@ -150,34 +194,65 @@ OC.L10N.register( "Download logfile" : "Ladda ner loggfil", "More" : "Mer", "Less" : "Mindre", + "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Logfilen är större än 100 MB. Nerladdningen kan ta en stund!", "What to log" : "Vad som ska loggas", + "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "SQLite används som databas. För större installationer så rekommenderar vi ett byte till en annan databasmotor.", + "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Speciellt när desktop klienten för filsynkronisering används så avråds användande av SQLite.", + "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "För att migrera till en annan databas använd kommandoverktyget 'occ db:convert-type' eller se <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\"> dokumentationen ↗</a>", + "How to do backups" : "Hur man skapar säkerhetskopior", + "Advanced monitoring" : "Advancerad bevakning", + "Performance tuning" : "Prestanda inställningar", + "Improving the config.php" : "Förbättra config.php", + "Theming" : "Teman", + "Hardening and security guidance" : "Säkerhetsriktlinjer", "Version" : "Version", + "Developer documentation" : "Utvecklar dokumentation", + "Experimental applications ahead" : "Experimentiella applikationer framför", + "Experimental apps are not checked for security issues, new or known to be unstable and under heavy development. Installing them can cause data loss or security breaches." : "Experimentella applikationer är ej kontrollerade för säkerhetsproblem, nya eller kända att vara instabila och under föränderlig utveckling. Installation utav dessa kan orsaka dataförlust eller säkerhetsbrott.", + "by %s" : "av %s", "%s-licensed" : "%s-licensierad.", "Documentation:" : "Dokumentation:", + "User documentation" : "Användardokumentation", + "Admin documentation" : "Administratörsdokumentation", + "Show description …" : "Visa beskrivning", + "Hide description …" : "Dölj beskrivning", + "This app has an update available." : "Denna applikation har en uppdatering tillgänglig.", + "This app has no minimum ownCloud version assigned. This will be an error in ownCloud 11 and later." : "Denna applikation har ingen minimum version av Owncloud tilldelad. Detta kommer rapporteras som ett fel i Owncloud 11 och senare.", + "This app has no maximum ownCloud version assigned. This will be an error in ownCloud 11 and later." : "Denna applikation har ingen maximal version av Owncloud tilldelad. Detta kommer rapporteras som ett fel i Owncloud 11 och senare.", "This app cannot be installed because the following dependencies are not fulfilled:" : "Denna applikation kan inte installeras då följande beroenden inte är uppfyllda: %s", "Enable only for specific groups" : "Aktivera endast för specifika grupper", "Uninstall App" : "Avinstallera applikation", + "Enable experimental apps" : "Aktivera experimentiella applikationer", + "SSL Root Certificates" : "SSL Root certifikat", "Common Name" : "Vanligt namn", "Valid until" : "Giltigt till", "Issued By" : "Utfärdat av", "Valid until %s" : "Giltigt till %s", + "Import root certificate" : "Importera root certifikat", "Hey there,<br><br>just letting you know that you now have an %s account.<br><br>Your username: %s<br>Access it: <a href=\"%s\">%s</a><br><br>" : "Hej där,<br><br>vill bara informera dig om att du nu har ett %s konto.<br><br>Ditt användarnamn: %s<br>Accessa det genom: <a href=\"%s\">%s</a><br><br>", "Cheers!" : "Ha de fint!", "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Hej där,\n\nvill bara informera dig om att du nu har ett %s konto.\n\nDitt användarnamn: %s\nAccessa det genom: %s\n", + "Administrator documentation" : "Administratörsdokumentation", + "Online documentation" : "Online dokumentation", "Forum" : "Forum", + "Issue tracker" : "Felsökare", + "Commercial support" : "Kommersiell support", "You are using <strong>%s</strong> of <strong>%s</strong>" : "Du använder <strong>%s</strong> av <strong>%s</strong>", "Profile picture" : "Profilbild", "Upload new" : "Ladda upp ny", "Select from Files" : "Välj från Filer", "Remove image" : "Radera bild", "png or jpg, max. 20 MB" : "png eller jpg, max 20 MB", + "Picture provided by original account" : "Bild gjordes tillgänglig av orginal konto", "Cancel" : "Avbryt", "Choose as profile picture" : "Välj som profilbild", "Full name" : "Fullständigt namn", "No display name set" : "Inget visningsnamn angivet", "Email" : "E-post", "Your email address" : "Din e-postadress", + "For password recovery and notifications" : "För lösenordsåterställning och notifieringar", "No email address set" : "Ingen e-postadress angiven", + "You are member of the following groups:" : "Du är medlem i följande grupper:", "Password" : "Lösenord", "Unable to change your password" : "Kunde inte ändra ditt lösenord", "Current password" : "Nuvarande lösenord", diff --git a/settings/l10n/sv.json b/settings/l10n/sv.json index 59c639ccb68..a4e687f891d 100644 --- a/settings/l10n/sv.json +++ b/settings/l10n/sv.json @@ -22,18 +22,26 @@ "No user supplied" : "Ingen användare angiven", "Please provide an admin recovery password, otherwise all user data will be lost" : "Ange ett återställningslösenord för administratören. Annars kommer all användardata förloras", "Wrong admin recovery password. Please check the password and try again." : "Felaktigt återställningslösenord för administratör. Kolla lösenordet och prova igen.", + "Backend doesn't support password change, but the user's encryption key was successfully updated." : "Backend stödjer ej lösenordsbyte, men användarens ändring av krypteringsnyckel lyckades.", "Unable to change password" : "Kunde inte ändra lösenord", "Enabled" : "Aktiverad", "Not enabled" : "Inte aktiverad", + "installing and updating apps via the app store or Federated Cloud Sharing" : "installering och uppdatering utav applikationer eller Federate Cloud delning.", + "Federated Cloud Sharing" : "Federate Cloud delning", + "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL använder en föråldrad %s version (%s). Var god uppdatera ditt operativsystem annars kan funktioner som %s sluta fungera pålitligt.", + "A problem occurred, please check your log files (Error: %s)" : "Ett problem uppstod, var god kontrollera loggfiler (Error: %s)", + "Migration Completed" : "Migrering Färdigställd", "Group already exists." : "Gruppen finns redan.", "Unable to add group." : "Lyckades inte lägga till grupp.", "Unable to delete group." : "Lyckades inte radera grupp.", "log-level out of allowed range" : "logg-nivå utanför tillåtet område", "Saved" : "Sparad", "test email settings" : "Testa e-post inställningar", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ett problem uppstod när mail försökte skickas. Var god kontrollera dina inställningar. (Error: %s)", "Email sent" : "E-post skickad", "You need to set your user email before being able to send test emails." : "Du behöver ställa in din användares e-postadress före du kan skicka test e-post.", "Invalid mail address" : "Ogiltig e-postadress", + "A user with that name already exists." : "En användare med det namnet existerar redan.", "Unable to create user." : "Kan inte skapa användare.", "Your %s account was created" : "Ditt %s konto skapades", "Unable to delete user." : "Kan inte radera användare.", @@ -45,24 +53,36 @@ "Unable to change full name" : "Kunde inte ändra hela namnet", "Are you really sure you want add \"{domain}\" as trusted domain?" : "Är du verkligen säker på att du vill lägga till \"{domain}\" som en trusted domian?", "Add trusted domain" : "Lägg till betrodd domän", + "Migration in progress. Please wait until the migration is finished" : "Migrering pågår. Var god vänta tills migreringen är färdigställd.", + "Migration started …" : "Migrering påbörjad ...", "Sending..." : "Skickar ...", "Official" : "Officiell", "Approved" : "Godkänd", "Experimental" : "Experimentiell", "All" : "Alla", + "No apps found for your version" : "Inga appar funna för din version", + "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Officiella appar är utvecklade av Owncloud's community. De erbjuder funtionalitet som är centralt för owncloud och redo för användning i produktion.", + "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Godkända appar är utvecklade av betrodda utvecklare och har genomgått enklare säkerhetstester. De är aktivt utvecklade i ett öppet kodbibliotek och deras underhållare anser dom stabila nog för enklare till normalt användande.", + "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Denna applikation är ej kontrollerad för säkerhetsbrister och är ny eller känd att orsaka instabilitetsproblem. Installera på egen risk.", "Update to %s" : "Uppdatera till %s", + "_You have %n app update pending_::_You have %n app updates pending_" : ["Du har %n applikationsuppdatering väntandes.","Du har %n applikationsuppdateringar väntandes."], "Please wait...." : "Var god vänta ...", "Error while disabling app" : "Fel vid inaktivering av app", "Disable" : "Deaktivera", "Enable" : "Aktivera", "Error while enabling app" : "Fel vid aktivering av app", + "Error: this app cannot be enabled because it makes the server unstable" : "Fel uppstod: Denna applikation kan ej startas för det gör servern ostabil.", + "Error: could not disable broken app" : "Fel: Gick ej att inaktivera trasig applikation.", + "Error while disabling broken app" : "Fel under inaktivering av trasig applikation.", "Updating...." : "Uppdaterar ...", "Error while updating app" : "Fel uppstod vid uppdatering av appen", "Updated" : "Uppdaterad", "Uninstalling ...." : "Avinstallerar ...", "Error while uninstalling app" : "Ett fel inträffade när applikatonen avinstallerades", "Uninstall" : "Avinstallera", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Applikationen har aktiverats men behöver uppdateras. Du kommer bli omdirigerad till uppdateringssidan inom 5 sekunder.", "App update" : "Uppdatering av app", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ett fel uppstod. Var god ladda upp ett ASCII-kodad PEM certifikat.", "Valid until {date}" : "Giltig t.o.m. {date}", "Delete" : "Radera", "An error occurred: {message}" : "Ett fel inträffade: {message}", @@ -74,6 +94,7 @@ "Strong password" : "Starkt lösenord", "Groups" : "Grupper", "Unable to delete {objName}" : "Kunde inte radera {objName}", + "Error creating group: {message}" : "Fel uppstod vid skapande av grupp: {message}", "A valid group name must be provided" : "Ett giltigt gruppnamn måste anges", "deleted {groupName}" : "raderade {groupName} ", "undo" : "ångra", @@ -81,7 +102,9 @@ "never" : "aldrig", "deleted {userName}" : "raderade {userName}", "add group" : "lägg till grupp", + "Changing the password will result in data loss, because data recovery is not available for this user" : "Ändring utav lösenord kommer resultera i förlorad data, eftersom dataåterställning ej är tillgängligt för denna användare.", "A valid username must be provided" : "Ett giltigt användarnamn måste anges", + "Error creating user: {message}" : "Fel uppstod när användare skulle skapas: {message}", "A valid password must be provided" : "Ett giltigt lösenord måste anges", "A valid email must be provided" : "En giltig e-postadress måste anges", "__language_name__" : "__language_name__", @@ -99,16 +122,23 @@ "NT LAN Manager" : "NT LAN Manager", "SSL" : "SSL", "TLS" : "TLS", + "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php verkar ej vara konfigurerat för att kunna skicka förfrågan om systemmiljövariabler. Testet med getenv(\"PATH\") returnerade bara ett tomt svar.", + "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Var god kontrollera <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\"> installationsdokumentationen ↗</a> för konfigurationsanteckningar för php och för php konfigurationen för din server, speciellt när php-fpm används.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Läs-bara konfigureringen har blivit aktiv. Detta förhindrar att några konfigureringar kan sättas via web-gränssnittet.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP är tydligen inställd för att rensa inline doc block. Detta kommer att göra flera kärnapplikationer otillgängliga.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Detta orsakas troligtvis av en cache/accelerator som t ex Zend OPchache eller eAccelerator.", "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Din server använder Microsoft Windows. Vi rekommenderar starkt Linux för en optimal användarerfarenhet.", + "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s under version %2$s är installerad, för stabilitet och prestanda rekommenderar vi uppdatering till en nyare %1$s version.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP-modulen 'fileinfo' saknas. Vi rekommenderar starkt att aktivera den här modulen för att kunna upptäcka korrekt mime-typ.", + "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transactional file locking är inaktiverad, detta kan innebära konkurrenstillstånd. Aktivera \"filelocking.enabled' i config.php för att undvika dessa problem. Se <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentationen ↗</a> för mer information.", "System locale can not be set to a one which supports UTF-8." : "Systemspråk kan inte ställas in till ett som stödjer UTF-8.", "This means that there might be problems with certain characters in file names." : "Detta betyder att där kan komma att uppstå problem med vissa tecken i filnamn.", "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Vi rekommenderar starkt att installera de nödvändiga paketen på ditt system för att stödja en av följande språkversioner: %s.", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Om din installation inte installerades på roten av domänen och använder system cron så kan det uppstå problem med URL-genereringen. För att undvika dessa problem, var vänlig sätt \"overwrite.cli.url\"-inställningen i din config.php-fil till webbrotsökvägen av din installation (Föreslagen: \"%s\")", + "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "Det var ej möjligt att exekvera cronjob via CLI. Följande tekniska fel har uppstått:", + "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "Var god dubbelkontrollera <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\"> installationsguiden ↗</a>, och kontrollera efter några fel eller varningar i <a href=\"#log-section\"> logfilen</a>.", "All checks passed." : "Alla kontroller lyckades!", + "Open documentation" : "Öppna dokumentation", "Allow apps to use the Share API" : "Tillåt applikationer att använda delat API", "Allow users to share via link" : "Tillåt användare att dela via länk", "Enforce password protection" : "Tillämpa lösenordskydd", @@ -119,17 +149,31 @@ "days" : "dagar", "Enforce expiration date" : "Tillämpa förfallodatum", "Allow resharing" : "Tillåt vidaredelning", + "Allow sharing with groups" : "Tilåt delning med grupper", "Restrict users to only share with users in their groups" : "Begränsa användare till att enbart kunna dela med användare i deras grupper", "Allow users to send mail notification for shared files to other users" : "Tillåt användare att skicka mejlnotifiering för delade filer till andra användare", "Exclude groups from sharing" : "Exkludera grupp från att dela", "These groups will still be able to receive shares, but not to initiate them." : "Dessa grupper kommer fortfarande kunna ta emot delningar, men inte skapa delningar.", + "Allow username autocompletion in share dialog. If this is disabled the full username needs to be entered." : "Tillåt användarnamn att autokompletteras i delningsfönstret. Om det är inaktiverat krävs fullständigt användarnamn i rutan.", "Last cron job execution: %s." : "Sista cron kördes %s", "Last cron job execution: %s. Something seems wrong." : "Sista cron kördes %s. Något verkar vara fel.", "Cron was not executed yet!" : "Cron har inte körts ännu!", "Execute one task with each page loaded" : "Exekvera en uppgift vid varje sidladdning", "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php är registrerad som en webcron service att ropa på cron.php varje 15 minuter över http.", "Use system's cron service to call the cron.php file every 15 minutes." : "Använd systemets cron-tjänst för att anropa cron.php var 15:e minut.", + "Enable server-side encryption" : "Aktivera kryptering på server.", + "Please read carefully before activating server-side encryption: " : "OBS: Var god läs noga innan kryptering aktiveras på servern.", + "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." : "När kryptering är aktiverat, så kommer alla filer som laddas upp till servern från den tidpunkt och frammåt bli krypterad på servern. Det kommer bara vara möjligt att inaktivera kryptering vid ett senare tillfälle om krypteringsmodulen stödjer den funktionen och alla förvillkor (exempelvis använder återställningsnyckel) är mötta.", + "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." : "Kryptering ensamt garanterar inte säkerhet av själva systemet. Var god see Owncloud's dokumentation för mer information om hur krypteringsapplikationen fungerar, och de användarfallen som stöds.", + "Be aware that encryption always increases the file size." : "OBS! Observera att kryptering alltid ökar filstorleken", + "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." : "Det är alltid en god ide att skapa regelbundna säkerhetskopior av din data, om kryptering används var säker på att även krypteringsnycklarna säkerhetskopieras tillsammans med din data.", + "This is the final warning: Do you really want to enable encryption?" : "Detta är en slutgiltig varning: Vill du verkligen aktivera kryptering?", "Enable encryption" : "Aktivera kryptering", + "No encryption module loaded, please enable an encryption module in the app menu." : "Ingen krypteringsmodul laddad, var god aktivera krypteringsmodulen i applikationsmenyn.", + "Select default encryption module:" : "Välj standard krypteringsmodul:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Du behöver migrera dina krypteringsnycklar från den gamla krypteringen (owncloud <= 8.0) till den nya. Var god aktivera \"Default encryption module\" och kör 'occ encryption:migrate'.", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du behöver migrera dina krypteringsnycklar från den gamla krypteringen (owncloud <= 8.0) till den nya.", + "Start migration" : "Starta migrering", "This is used for sending out notifications." : "Detta används för att skicka ut notifieringar.", "Send mode" : "Sändningsläge", "Encryption" : "Kryptering", @@ -148,34 +192,65 @@ "Download logfile" : "Ladda ner loggfil", "More" : "Mer", "Less" : "Mindre", + "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Logfilen är större än 100 MB. Nerladdningen kan ta en stund!", "What to log" : "Vad som ska loggas", + "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "SQLite används som databas. För större installationer så rekommenderar vi ett byte till en annan databasmotor.", + "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Speciellt när desktop klienten för filsynkronisering används så avråds användande av SQLite.", + "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "För att migrera till en annan databas använd kommandoverktyget 'occ db:convert-type' eller se <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\"> dokumentationen ↗</a>", + "How to do backups" : "Hur man skapar säkerhetskopior", + "Advanced monitoring" : "Advancerad bevakning", + "Performance tuning" : "Prestanda inställningar", + "Improving the config.php" : "Förbättra config.php", + "Theming" : "Teman", + "Hardening and security guidance" : "Säkerhetsriktlinjer", "Version" : "Version", + "Developer documentation" : "Utvecklar dokumentation", + "Experimental applications ahead" : "Experimentiella applikationer framför", + "Experimental apps are not checked for security issues, new or known to be unstable and under heavy development. Installing them can cause data loss or security breaches." : "Experimentella applikationer är ej kontrollerade för säkerhetsproblem, nya eller kända att vara instabila och under föränderlig utveckling. Installation utav dessa kan orsaka dataförlust eller säkerhetsbrott.", + "by %s" : "av %s", "%s-licensed" : "%s-licensierad.", "Documentation:" : "Dokumentation:", + "User documentation" : "Användardokumentation", + "Admin documentation" : "Administratörsdokumentation", + "Show description …" : "Visa beskrivning", + "Hide description …" : "Dölj beskrivning", + "This app has an update available." : "Denna applikation har en uppdatering tillgänglig.", + "This app has no minimum ownCloud version assigned. This will be an error in ownCloud 11 and later." : "Denna applikation har ingen minimum version av Owncloud tilldelad. Detta kommer rapporteras som ett fel i Owncloud 11 och senare.", + "This app has no maximum ownCloud version assigned. This will be an error in ownCloud 11 and later." : "Denna applikation har ingen maximal version av Owncloud tilldelad. Detta kommer rapporteras som ett fel i Owncloud 11 och senare.", "This app cannot be installed because the following dependencies are not fulfilled:" : "Denna applikation kan inte installeras då följande beroenden inte är uppfyllda: %s", "Enable only for specific groups" : "Aktivera endast för specifika grupper", "Uninstall App" : "Avinstallera applikation", + "Enable experimental apps" : "Aktivera experimentiella applikationer", + "SSL Root Certificates" : "SSL Root certifikat", "Common Name" : "Vanligt namn", "Valid until" : "Giltigt till", "Issued By" : "Utfärdat av", "Valid until %s" : "Giltigt till %s", + "Import root certificate" : "Importera root certifikat", "Hey there,<br><br>just letting you know that you now have an %s account.<br><br>Your username: %s<br>Access it: <a href=\"%s\">%s</a><br><br>" : "Hej där,<br><br>vill bara informera dig om att du nu har ett %s konto.<br><br>Ditt användarnamn: %s<br>Accessa det genom: <a href=\"%s\">%s</a><br><br>", "Cheers!" : "Ha de fint!", "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Hej där,\n\nvill bara informera dig om att du nu har ett %s konto.\n\nDitt användarnamn: %s\nAccessa det genom: %s\n", + "Administrator documentation" : "Administratörsdokumentation", + "Online documentation" : "Online dokumentation", "Forum" : "Forum", + "Issue tracker" : "Felsökare", + "Commercial support" : "Kommersiell support", "You are using <strong>%s</strong> of <strong>%s</strong>" : "Du använder <strong>%s</strong> av <strong>%s</strong>", "Profile picture" : "Profilbild", "Upload new" : "Ladda upp ny", "Select from Files" : "Välj från Filer", "Remove image" : "Radera bild", "png or jpg, max. 20 MB" : "png eller jpg, max 20 MB", + "Picture provided by original account" : "Bild gjordes tillgänglig av orginal konto", "Cancel" : "Avbryt", "Choose as profile picture" : "Välj som profilbild", "Full name" : "Fullständigt namn", "No display name set" : "Inget visningsnamn angivet", "Email" : "E-post", "Your email address" : "Din e-postadress", + "For password recovery and notifications" : "För lösenordsåterställning och notifieringar", "No email address set" : "Ingen e-postadress angiven", + "You are member of the following groups:" : "Du är medlem i följande grupper:", "Password" : "Lösenord", "Unable to change your password" : "Kunde inte ändra ditt lösenord", "Current password" : "Nuvarande lösenord", diff --git a/settings/l10n/th_TH.js b/settings/l10n/th_TH.js index 03bef84b609..81055ec3bd8 100644 --- a/settings/l10n/th_TH.js +++ b/settings/l10n/th_TH.js @@ -80,7 +80,6 @@ OC.L10N.register( "Uninstall" : "ถอนการติดตั้ง", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "แอพฯจะต้องเปิดใช้งานก่อนทำการอัพเดท คุณจะถูกนำไปยังหน้าอัพเดทใน 5 วินาที", "App update" : "อัพเดทแอพฯ", - "No apps found for \"{query}\"" : "ไม่พบแอพฯสำหรับ \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "เกิดข้อผิดพลาด กรุณาอัพโหลดใบรับรองเข้ารหัส ASCII PEM", "Valid until {date}" : "ใช้ได้จนถึงวันที่ {date}", "Delete" : "ลบ", diff --git a/settings/l10n/th_TH.json b/settings/l10n/th_TH.json index ed1bf94abb1..4e4e56ec0f9 100644 --- a/settings/l10n/th_TH.json +++ b/settings/l10n/th_TH.json @@ -78,7 +78,6 @@ "Uninstall" : "ถอนการติดตั้ง", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "แอพฯจะต้องเปิดใช้งานก่อนทำการอัพเดท คุณจะถูกนำไปยังหน้าอัพเดทใน 5 วินาที", "App update" : "อัพเดทแอพฯ", - "No apps found for \"{query}\"" : "ไม่พบแอพฯสำหรับ \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "เกิดข้อผิดพลาด กรุณาอัพโหลดใบรับรองเข้ารหัส ASCII PEM", "Valid until {date}" : "ใช้ได้จนถึงวันที่ {date}", "Delete" : "ลบ", diff --git a/settings/l10n/tr.js b/settings/l10n/tr.js index e451f3fb9cd..7514577afde 100644 --- a/settings/l10n/tr.js +++ b/settings/l10n/tr.js @@ -67,11 +67,15 @@ OC.L10N.register( "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Onaylanan uygulamalar güvenilir geliştiriciler tarafından geliştirilir ve detaylı olmayan bir güvenlik kontrolünden geçirilir. Bunlar açık kaynak kod deposunda bulunmakta ve normal kullanım için kararlı oldukları varsayılmaktadır.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Bu uygulama güvenlik kontrolünden geçmedi veya yeni ya da kararsız olarak bilinmektedir. Kendiniz bu riski alarak yükleyebilirsiniz.", "Update to %s" : "%s sürümüne güncelle", + "_You have %n app update pending_::_You have %n app updates pending_" : ["Bekleyen %n uygulama güncellemesi var","Bekleyen %n uygulama güncellemesi var"], "Please wait...." : "Lütfen bekleyin....", "Error while disabling app" : "Uygulama devre dışı bırakılırken hata", "Disable" : "Devre Dışı Bırak", "Enable" : "Etkinleştir", "Error while enabling app" : "Uygulama etkinleştirilirken hata", + "Error: this app cannot be enabled because it makes the server unstable" : "Hata: bu uygulama etkinleştirilemez çünkü sunucuyu kararsız yapıyor", + "Error: could not disable broken app" : "Hata: bozuk uygulama devre dışı bırakılamadı", + "Error while disabling broken app" : "Bozuk uygulama devre dışı bırakılırken hata", "Updating...." : "Güncelleniyor....", "Error while updating app" : "Uygulama güncellenirken hata", "Updated" : "Güncellendi", @@ -80,7 +84,6 @@ OC.L10N.register( "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. Please upload an ASCII-encoded PEM certificate." : "Bir hata oluştu. Lütfen ASCII-kodlanmış PEM sertifikasını yükleyin.", "Valid until {date}" : "{date} tarihine kadar geçerli", "Delete" : "Sil", @@ -93,6 +96,7 @@ OC.L10N.register( "Strong password" : "Güçlü parola", "Groups" : "Gruplar", "Unable to delete {objName}" : "{objName} silinemiyor", + "Error creating group: {message}" : "Grup oluşturulurken hata: {message}", "A valid group name must be provided" : "Geçerli bir grup adı mutlaka sağlanmalı", "deleted {groupName}" : "{groupName} silindi", "undo" : "geri al", @@ -102,6 +106,7 @@ OC.L10N.register( "add group" : "grup ekle", "Changing the password will result in data loss, because data recovery is not available for this user" : "Parolayı değiştirmek, bu kullanıcı için veri kurtarması kullanılamadığından veri kaybına sebep olacak", "A valid username must be provided" : "Geçerli bir kullanıcı adı mutlaka sağlanmalı", + "Error creating user: {message}" : "Kullanıcı oluşturulurken hata: {message}", "A valid password must be provided" : "Geçerli bir parola mutlaka sağlanmalı", "A valid email must be provided" : "Geçerli bir e-posta belirtilmeli", "__language_name__" : "Türkçe", @@ -120,16 +125,20 @@ OC.L10N.register( "SSL" : "SSL", "TLS" : "TLS", "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP sistem değişkenleri sorgusuna uygun olarak ayarlanmamış görünüyor. getenv(\"PATH\") komutu sadece boş bir cevap döndürüyor.", + "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Lütfen php yapılandırma notları ve özellikler php-fpm kullanırken sunucu php yapılandırması için <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">kurulum belgelendirmesine ↗</a> bakın.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Salt Okunur yapılandırma etkinleştirilmiş. Bu, bazı ayarların web arayüzü ile yapılandırılmasını önler. Ayrıca, bu dosya her güncelleme sırasında el ile yazılabilir yapılmalıdır.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP satırıçi doc bloklarını ayıklamak üzere yapılandırılmış gibi görünüyor. Bu, bazı çekirdek (core) uygulamalarını erişilemez yapacak.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Bu, muhtemelen Zend OPcache veya eAccelerator gibi bir önbellek/hızlandırıcı nedeniyle gerçekleşir.", "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Sunucunuz, Microsoft Windows ile çalışıyor. En uygun kullanıcı deneyimi için şiddetle Linux'u öneriyoruz.", + "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s, %2$s sürümü altı kurulu. Kararlılık ve performans için daha yeni bir %1$s sürümüne güncellemenizi öneririz.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP modülü 'fileinfo' kayıp. MIME türü tanıma ile en iyi sonuçları elde etmek için bu modülü etkinleştirmenizi öneririz.", + "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "İşlemsel dosya kilidi devre dışı. Bu yarış koşulu (race condition) sorunlarına neden olabilir. Bu sorunlardan kaçınmak için config.php içindeki 'filelocking.enabled' ayarını etkinleştirin. Daha fazla bilgi için <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">belgelendirmeye ↗</a> bakın.", "System locale can not be set to a one which supports UTF-8." : "Sistem yereli, UTF-8 destekleyenlerden biri olarak ayarlanamadı.", "This means that there might be problems with certain characters in file names." : "Bu, dosya adlarında belirli karakterlerde problem olabileceği anlamına gelir.", "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Şu dillerden birini desteklemesi için sisteminize gerekli paketleri kurmanızı şiddetle tavsiye ederiz: %s.", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Eğer kurulumunuz alan adının köküne yapılmamışsa ve sistem cron'u kullanıyorsa, URL oluşturma ile ilgili sorunlar oluşabilir. Bu sorunların önüne geçmek için, kurulumunuzun web kök yolundaki config.php dosyasında \"overwrite.cli.url\" seçeneğini ayarlayın (Önerilen: \"%s\")", "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "Bu CLI ile cronjobı çalıştırmak mümkün değildi. Aşağıdaki teknik hatalar ortaya çıkmıştır:", + "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "Lütfen <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">kurulum rehberlerine ↗</a> ve <a href=\"#log-section\">günlük</a> kısmındaki hata ve uyarılara bakın.", "All checks passed." : "Tüm kontroller geçildi.", "Open documentation" : "Belgelendirmeyi aç", "Allow apps to use the Share API" : "Uygulamaların paylaşım API'sini kullanmasına izin ver", @@ -142,6 +151,7 @@ OC.L10N.register( "days" : "gün sonra dolsun", "Enforce expiration date" : "Son kullanma tarihini zorla", "Allow resharing" : "Yeniden paylaşıma izin ver", + "Allow sharing with groups" : "Grouplar ile paylaşıma izin ver", "Restrict users to only share with users in their groups" : "Kullanıcıların, dosyaları sadece kendi gruplarındaki kullanıcılarla paylaşmasına izin ver", "Allow users to send mail notification for shared files to other users" : "Kullanıcıların diğer kullanıcılara, paylaşılmış dosyalar için posta bildirimi göndermesine izin ver", "Exclude groups from sharing" : "Grupları paylaşma eyleminden hariç tut", @@ -188,6 +198,7 @@ OC.L10N.register( "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\" rel=\"noreferrer\" 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\" rel=\"noreferrer\" href=\"%s\">belgelendirmeye ↗</a> bakın.", "How to do backups" : "Nasıl yedekleme yapılır", "Advanced monitoring" : "Gelişmiş izleme", "Performance tuning" : "Performans ayarlama", @@ -205,6 +216,7 @@ OC.L10N.register( "Admin documentation" : "Yönetici belgelendirmesi", "Show description …" : "Açıklamayı göster...", "Hide description …" : "Açıklamayı gizle...", + "This app has an update available." : "Bu uygulamanın bir güncellemesi var.", "This app has no minimum ownCloud version assigned. This will be an error in ownCloud 11 and later." : "Bu uygulama atanmış bir en düşük ownCloud sürümü içermiyor. ownCloud 11 ve sonrasında bu bir hata olacaktır.", "This app has no maximum ownCloud version assigned. This will be an error in ownCloud 11 and later." : "Bu uygulama atanmış bir en yüksek ownCloud sürümü içermiyor. ownCloud 11 ve sonrasında bu bir hata olacaktır.", "This app cannot be installed because the following dependencies are not fulfilled:" : "Bu uygulama, aşağıdaki bağımlılıklar sağlanmadığından yüklenemiyor:", diff --git a/settings/l10n/tr.json b/settings/l10n/tr.json index 98f63aa95c5..863533a4ed8 100644 --- a/settings/l10n/tr.json +++ b/settings/l10n/tr.json @@ -65,11 +65,15 @@ "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Onaylanan uygulamalar güvenilir geliştiriciler tarafından geliştirilir ve detaylı olmayan bir güvenlik kontrolünden geçirilir. Bunlar açık kaynak kod deposunda bulunmakta ve normal kullanım için kararlı oldukları varsayılmaktadır.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Bu uygulama güvenlik kontrolünden geçmedi veya yeni ya da kararsız olarak bilinmektedir. Kendiniz bu riski alarak yükleyebilirsiniz.", "Update to %s" : "%s sürümüne güncelle", + "_You have %n app update pending_::_You have %n app updates pending_" : ["Bekleyen %n uygulama güncellemesi var","Bekleyen %n uygulama güncellemesi var"], "Please wait...." : "Lütfen bekleyin....", "Error while disabling app" : "Uygulama devre dışı bırakılırken hata", "Disable" : "Devre Dışı Bırak", "Enable" : "Etkinleştir", "Error while enabling app" : "Uygulama etkinleştirilirken hata", + "Error: this app cannot be enabled because it makes the server unstable" : "Hata: bu uygulama etkinleştirilemez çünkü sunucuyu kararsız yapıyor", + "Error: could not disable broken app" : "Hata: bozuk uygulama devre dışı bırakılamadı", + "Error while disabling broken app" : "Bozuk uygulama devre dışı bırakılırken hata", "Updating...." : "Güncelleniyor....", "Error while updating app" : "Uygulama güncellenirken hata", "Updated" : "Güncellendi", @@ -78,7 +82,6 @@ "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. Please upload an ASCII-encoded PEM certificate." : "Bir hata oluştu. Lütfen ASCII-kodlanmış PEM sertifikasını yükleyin.", "Valid until {date}" : "{date} tarihine kadar geçerli", "Delete" : "Sil", @@ -91,6 +94,7 @@ "Strong password" : "Güçlü parola", "Groups" : "Gruplar", "Unable to delete {objName}" : "{objName} silinemiyor", + "Error creating group: {message}" : "Grup oluşturulurken hata: {message}", "A valid group name must be provided" : "Geçerli bir grup adı mutlaka sağlanmalı", "deleted {groupName}" : "{groupName} silindi", "undo" : "geri al", @@ -100,6 +104,7 @@ "add group" : "grup ekle", "Changing the password will result in data loss, because data recovery is not available for this user" : "Parolayı değiştirmek, bu kullanıcı için veri kurtarması kullanılamadığından veri kaybına sebep olacak", "A valid username must be provided" : "Geçerli bir kullanıcı adı mutlaka sağlanmalı", + "Error creating user: {message}" : "Kullanıcı oluşturulurken hata: {message}", "A valid password must be provided" : "Geçerli bir parola mutlaka sağlanmalı", "A valid email must be provided" : "Geçerli bir e-posta belirtilmeli", "__language_name__" : "Türkçe", @@ -118,16 +123,20 @@ "SSL" : "SSL", "TLS" : "TLS", "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP sistem değişkenleri sorgusuna uygun olarak ayarlanmamış görünüyor. getenv(\"PATH\") komutu sadece boş bir cevap döndürüyor.", + "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Lütfen php yapılandırma notları ve özellikler php-fpm kullanırken sunucu php yapılandırması için <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">kurulum belgelendirmesine ↗</a> bakın.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Salt Okunur yapılandırma etkinleştirilmiş. Bu, bazı ayarların web arayüzü ile yapılandırılmasını önler. Ayrıca, bu dosya her güncelleme sırasında el ile yazılabilir yapılmalıdır.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP satırıçi doc bloklarını ayıklamak üzere yapılandırılmış gibi görünüyor. Bu, bazı çekirdek (core) uygulamalarını erişilemez yapacak.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Bu, muhtemelen Zend OPcache veya eAccelerator gibi bir önbellek/hızlandırıcı nedeniyle gerçekleşir.", "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Sunucunuz, Microsoft Windows ile çalışıyor. En uygun kullanıcı deneyimi için şiddetle Linux'u öneriyoruz.", + "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s, %2$s sürümü altı kurulu. Kararlılık ve performans için daha yeni bir %1$s sürümüne güncellemenizi öneririz.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP modülü 'fileinfo' kayıp. MIME türü tanıma ile en iyi sonuçları elde etmek için bu modülü etkinleştirmenizi öneririz.", + "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "İşlemsel dosya kilidi devre dışı. Bu yarış koşulu (race condition) sorunlarına neden olabilir. Bu sorunlardan kaçınmak için config.php içindeki 'filelocking.enabled' ayarını etkinleştirin. Daha fazla bilgi için <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">belgelendirmeye ↗</a> bakın.", "System locale can not be set to a one which supports UTF-8." : "Sistem yereli, UTF-8 destekleyenlerden biri olarak ayarlanamadı.", "This means that there might be problems with certain characters in file names." : "Bu, dosya adlarında belirli karakterlerde problem olabileceği anlamına gelir.", "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Şu dillerden birini desteklemesi için sisteminize gerekli paketleri kurmanızı şiddetle tavsiye ederiz: %s.", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Eğer kurulumunuz alan adının köküne yapılmamışsa ve sistem cron'u kullanıyorsa, URL oluşturma ile ilgili sorunlar oluşabilir. Bu sorunların önüne geçmek için, kurulumunuzun web kök yolundaki config.php dosyasında \"overwrite.cli.url\" seçeneğini ayarlayın (Önerilen: \"%s\")", "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "Bu CLI ile cronjobı çalıştırmak mümkün değildi. Aşağıdaki teknik hatalar ortaya çıkmıştır:", + "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "Lütfen <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">kurulum rehberlerine ↗</a> ve <a href=\"#log-section\">günlük</a> kısmındaki hata ve uyarılara bakın.", "All checks passed." : "Tüm kontroller geçildi.", "Open documentation" : "Belgelendirmeyi aç", "Allow apps to use the Share API" : "Uygulamaların paylaşım API'sini kullanmasına izin ver", @@ -140,6 +149,7 @@ "days" : "gün sonra dolsun", "Enforce expiration date" : "Son kullanma tarihini zorla", "Allow resharing" : "Yeniden paylaşıma izin ver", + "Allow sharing with groups" : "Grouplar ile paylaşıma izin ver", "Restrict users to only share with users in their groups" : "Kullanıcıların, dosyaları sadece kendi gruplarındaki kullanıcılarla paylaşmasına izin ver", "Allow users to send mail notification for shared files to other users" : "Kullanıcıların diğer kullanıcılara, paylaşılmış dosyalar için posta bildirimi göndermesine izin ver", "Exclude groups from sharing" : "Grupları paylaşma eyleminden hariç tut", @@ -186,6 +196,7 @@ "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\" rel=\"noreferrer\" 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\" rel=\"noreferrer\" href=\"%s\">belgelendirmeye ↗</a> bakın.", "How to do backups" : "Nasıl yedekleme yapılır", "Advanced monitoring" : "Gelişmiş izleme", "Performance tuning" : "Performans ayarlama", @@ -203,6 +214,7 @@ "Admin documentation" : "Yönetici belgelendirmesi", "Show description …" : "Açıklamayı göster...", "Hide description …" : "Açıklamayı gizle...", + "This app has an update available." : "Bu uygulamanın bir güncellemesi var.", "This app has no minimum ownCloud version assigned. This will be an error in ownCloud 11 and later." : "Bu uygulama atanmış bir en düşük ownCloud sürümü içermiyor. ownCloud 11 ve sonrasında bu bir hata olacaktır.", "This app has no maximum ownCloud version assigned. This will be an error in ownCloud 11 and later." : "Bu uygulama atanmış bir en yüksek ownCloud sürümü içermiyor. ownCloud 11 ve sonrasında bu bir hata olacaktır.", "This app cannot be installed because the following dependencies are not fulfilled:" : "Bu uygulama, aşağıdaki bağımlılıklar sağlanmadığından yüklenemiyor:", diff --git a/settings/l10n/uk.js b/settings/l10n/uk.js index 53cf77ae8b7..594e0de326a 100644 --- a/settings/l10n/uk.js +++ b/settings/l10n/uk.js @@ -78,7 +78,6 @@ OC.L10N.register( "Error while uninstalling app" : "Помилка видалення додатка", "Uninstall" : "Видалити", "App update" : "Оновлення додатку", - "No apps found for \"{query}\"" : "Не знайдено додатків для \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Виникла помилка. Будь ласка вивантажте PEM сертифікат в ASCII-кодуванні.", "Valid until {date}" : "Дійсно до {date}", "Delete" : "Видалити", diff --git a/settings/l10n/uk.json b/settings/l10n/uk.json index 13d1470c6e9..aebf8b206cf 100644 --- a/settings/l10n/uk.json +++ b/settings/l10n/uk.json @@ -76,7 +76,6 @@ "Error while uninstalling app" : "Помилка видалення додатка", "Uninstall" : "Видалити", "App update" : "Оновлення додатку", - "No apps found for \"{query}\"" : "Не знайдено додатків для \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Виникла помилка. Будь ласка вивантажте PEM сертифікат в ASCII-кодуванні.", "Valid until {date}" : "Дійсно до {date}", "Delete" : "Видалити", diff --git a/settings/l10n/zh_CN.js b/settings/l10n/zh_CN.js index efe9690cae0..c3ec2ebea0e 100644 --- a/settings/l10n/zh_CN.js +++ b/settings/l10n/zh_CN.js @@ -84,7 +84,6 @@ OC.L10N.register( "Uninstall" : "卸载", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "该应用已启用,但是需要更新。5秒后将跳转到更新页面。", "App update" : "应用更新", - "No apps found for \"{query}\"" : "未找到应用适合 \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "出现了一个错误。请上传 ASCII 编码的 PEM 证书。", "Valid until {date}" : "有效期至 {date}", "Delete" : "删除", diff --git a/settings/l10n/zh_CN.json b/settings/l10n/zh_CN.json index ed821b524b2..aa5827bbac6 100644 --- a/settings/l10n/zh_CN.json +++ b/settings/l10n/zh_CN.json @@ -82,7 +82,6 @@ "Uninstall" : "卸载", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "该应用已启用,但是需要更新。5秒后将跳转到更新页面。", "App update" : "应用更新", - "No apps found for \"{query}\"" : "未找到应用适合 \"{query}\"", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "出现了一个错误。请上传 ASCII 编码的 PEM 证书。", "Valid until {date}" : "有效期至 {date}", "Delete" : "删除", diff --git a/settings/l10n/zh_TW.js b/settings/l10n/zh_TW.js index 9877f3b3133..d3ee2579aba 100644 --- a/settings/l10n/zh_TW.js +++ b/settings/l10n/zh_TW.js @@ -80,7 +80,6 @@ OC.L10N.register( "Uninstall" : "解除安裝", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "這個應用程式已啟用但是需要更新,您將會在 5 秒後被引導至更新頁面", "App update" : "應用程式更新", - "No apps found for \"{query}\"" : "\"{query}\" 並未找到任何應用程式", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "發生錯誤,請您上傳 ASCII 編碼的 PEM 憑證", "Valid until {date}" : "{date} 前有效", "Delete" : "刪除", @@ -120,16 +119,19 @@ OC.L10N.register( "SSL" : "SSL", "TLS" : "TLS", "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP 看起來沒有設定完成,無法正確取得系統環境變數,getenv(\"PATH\") 回傳資料為空值", + "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "請您參考 <a target=\\\"_blank\\\" href=\\\"%s\\\">安裝文件手冊 ↗</a> 來確認php的設定值以及伺服器端的php設定,特別是當您使用php-fpm。", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "「唯讀設定檔」已經啟用,這樣可以防止來自網頁端的設定操作,每次需要更改設定時,都需要手動將設定檔暫時改為可讀寫。", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP 已經設定成「剪除 inline doc block」模式,這將會使幾個核心應用程式無法使用", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "這大概是由快取或是加速器像是 Zend OPcache, eAccelerator 造成的", "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "您使用的伺服器是微軟的 Windows,我們強烈建議您改用 Linux 以求最好的使用者體驗", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "未偵測到 PHP 模組 'fileinfo'。我們強烈建議啟用這個模組以取得最好的 mime-type 支援。", + "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "事務型文件鎖定的功能已經取消,這可能會造成競態條件,請在 config.php 中啟用 'filelocking.enabled' 以避免出現這樣的問題,請參考<a target=\\\"_blank\\\" href=\\\"%s\\\">文件手冊 ↗</a> 來了解更多的資訊。", "System locale can not be set to a one which supports UTF-8." : "無法設定為一個支援 UTF-8 的系統語系", "This means that there might be problems with certain characters in file names." : "這表示檔名中使用一些特殊字元可能會造成問題", "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "我們強烈建議在您的系統上安裝必要的套件來支援以下的語系:%s", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "如果您的安裝不在網域的最上層,並且使用 cron 作為排程器,URL 的生成可能會有問題,為了避免這樣的狀況,請您在 config.php 檔案裡設定 overwrite.cli.url 為您安裝的 webroot 路徑(建議值:\"%s\")", "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : " 無法透過 CLI 來執行排程工作,發生以下技術性錯誤:", + "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "請再次檢查 <a target=\"_blank\" href=\"%s\">安裝手冊 ↗</a>,並且確定沒有任何的錯誤或是警告訊息在 <a href=\"#log-section\">記錄檔</a>", "All checks passed." : "所有檢查正常", "Open documentation" : "開啟說明文件", "Allow apps to use the Share API" : "允許 apps 使用分享 API", diff --git a/settings/l10n/zh_TW.json b/settings/l10n/zh_TW.json index b3f237107b8..69ae4855d7c 100644 --- a/settings/l10n/zh_TW.json +++ b/settings/l10n/zh_TW.json @@ -78,7 +78,6 @@ "Uninstall" : "解除安裝", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "這個應用程式已啟用但是需要更新,您將會在 5 秒後被引導至更新頁面", "App update" : "應用程式更新", - "No apps found for \"{query}\"" : "\"{query}\" 並未找到任何應用程式", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "發生錯誤,請您上傳 ASCII 編碼的 PEM 憑證", "Valid until {date}" : "{date} 前有效", "Delete" : "刪除", @@ -118,16 +117,19 @@ "SSL" : "SSL", "TLS" : "TLS", "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP 看起來沒有設定完成,無法正確取得系統環境變數,getenv(\"PATH\") 回傳資料為空值", + "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "請您參考 <a target=\\\"_blank\\\" href=\\\"%s\\\">安裝文件手冊 ↗</a> 來確認php的設定值以及伺服器端的php設定,特別是當您使用php-fpm。", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "「唯讀設定檔」已經啟用,這樣可以防止來自網頁端的設定操作,每次需要更改設定時,都需要手動將設定檔暫時改為可讀寫。", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP 已經設定成「剪除 inline doc block」模式,這將會使幾個核心應用程式無法使用", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "這大概是由快取或是加速器像是 Zend OPcache, eAccelerator 造成的", "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "您使用的伺服器是微軟的 Windows,我們強烈建議您改用 Linux 以求最好的使用者體驗", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "未偵測到 PHP 模組 'fileinfo'。我們強烈建議啟用這個模組以取得最好的 mime-type 支援。", + "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "事務型文件鎖定的功能已經取消,這可能會造成競態條件,請在 config.php 中啟用 'filelocking.enabled' 以避免出現這樣的問題,請參考<a target=\\\"_blank\\\" href=\\\"%s\\\">文件手冊 ↗</a> 來了解更多的資訊。", "System locale can not be set to a one which supports UTF-8." : "無法設定為一個支援 UTF-8 的系統語系", "This means that there might be problems with certain characters in file names." : "這表示檔名中使用一些特殊字元可能會造成問題", "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "我們強烈建議在您的系統上安裝必要的套件來支援以下的語系:%s", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "如果您的安裝不在網域的最上層,並且使用 cron 作為排程器,URL 的生成可能會有問題,為了避免這樣的狀況,請您在 config.php 檔案裡設定 overwrite.cli.url 為您安裝的 webroot 路徑(建議值:\"%s\")", "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : " 無法透過 CLI 來執行排程工作,發生以下技術性錯誤:", + "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "請再次檢查 <a target=\"_blank\" href=\"%s\">安裝手冊 ↗</a>,並且確定沒有任何的錯誤或是警告訊息在 <a href=\"#log-section\">記錄檔</a>", "All checks passed." : "所有檢查正常", "Open documentation" : "開啟說明文件", "Allow apps to use the Share API" : "允許 apps 使用分享 API", diff --git a/settings/templates/apps.php b/settings/templates/apps.php index 4ae1022585d..47d1eff463e 100644 --- a/settings/templates/apps.php +++ b/settings/templates/apps.php @@ -167,7 +167,7 @@ script( </div> <div id="app-content"> <div id="apps-list" class="icon-loading"></div> - <div id="apps-list-empty" class="hidden emptycontent"> + <div id="apps-list-empty" class="hidden emptycontent emptycontent-search"> <div class="icon-search"></div> <h2><?php p($l->t('No apps found for your version')) ?></h2> </div> diff --git a/settings/templates/users/part.userlist.php b/settings/templates/users/part.userlist.php index 15b7cb4abd7..697d0f3f142 100644 --- a/settings/templates/users/part.userlist.php +++ b/settings/templates/users/part.userlist.php @@ -34,7 +34,7 @@ src="<?php print_unescaped(image_path('core', 'actions/rename.svg'))?>" alt="<?php p($l->t("set new password"))?>" title="<?php p($l->t("set new password"))?>"/> </td> - <td class="mailAddress"><span></span> <img class="svg action" + <td class="mailAddress"><span></span><div class="loading-small hidden"></div> <img class="svg action" src="<?php p(image_path('core', 'actions/rename.svg'))?>" alt="<?php p($l->t('change email address'))?>" title="<?php p($l->t('change email address'))?>"/> </td> diff --git a/tests/lib/avatartest.php b/tests/lib/avatartest.php index b2b69ac1a6c..b0ab4cb8b5c 100644 --- a/tests/lib/avatartest.php +++ b/tests/lib/avatartest.php @@ -148,8 +148,7 @@ class AvatarTest extends \Test\TestCase { ->willReturn('avatarX'); $nonAvatarFile->expects($this->never())->method('delete'); - $this->folder->method('search') - ->with('avatar') + $this->folder->method('getDirectoryListing') ->willReturn([$avatarFileJPG, $avatarFilePNG, $resizedAvatarFile, $nonAvatarFile]); $newFile = $this->getMock('\OCP\Files\File'); diff --git a/tests/lib/encryption/encryptionwrappertest.php b/tests/lib/encryption/encryptionwrappertest.php new file mode 100644 index 00000000000..909187ae43b --- /dev/null +++ b/tests/lib/encryption/encryptionwrappertest.php @@ -0,0 +1,101 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2016, 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 Test\Encryption; + + +use OC\Encryption\EncryptionWrapper; +use Test\TestCase; + +class EncryptionWrapperTest extends TestCase { + + /** @var EncryptionWrapper */ + private $instance; + + /** @var \PHPUnit_Framework_MockObject_MockObject | \OCP\ILogger */ + private $logger; + + /** @var \PHPUnit_Framework_MockObject_MockObject | \OC\Encryption\Manager */ + private $manager; + + /** @var \PHPUnit_Framework_MockObject_MockObject | \OC\Memcache\ArrayCache */ + private $arrayCache; + + public function setUp() { + parent::setUp(); + + $this->arrayCache = $this->getMock('OC\Memcache\ArrayCache'); + $this->manager = $this->getMockBuilder('OC\Encryption\Manager') + ->disableOriginalConstructor()->getMock(); + $this->logger = $this->getMock('OCP\ILogger'); + + $this->instance = new EncryptionWrapper($this->arrayCache, $this->manager, $this->logger); + } + + + /** + * @dataProvider provideWrapStorage + */ + public function testWrapStorage($expectedWrapped, $wrappedStorages) { + $storage = $this->getMockBuilder('OC\Files\Storage\Storage') + ->disableOriginalConstructor() + ->getMock(); + + foreach ($wrappedStorages as $wrapper) { + $storage->expects($this->any()) + ->method('instanceOfStorage') + ->willReturnMap([ + [$wrapper, true], + ]); + } + + $mount = $this->getMockBuilder('OCP\Files\Mount\IMountPoint') + ->disableOriginalConstructor() + ->getMock(); + + $returnedStorage = $this->instance->wrapStorage('mountPoint', $storage, $mount); + + $this->assertEquals( + $expectedWrapped, + $returnedStorage->instanceOfStorage('OC\Files\Storage\Wrapper\Encryption'), + 'Asserted that the storage is (not) wrapped with encryption' + ); + } + + public function provideWrapStorage() { + return [ + // Wrap when not wrapped or not wrapped with storage + [true, []], + [true, ['OCA\Files_Trashbin\Storage']], + + // Do not wrap shared storages + [false, ['OC\Files\Storage\Shared']], + [false, ['OCA\Files_Sharing\External\Storage']], + [false, ['OC\Files\Storage\OwnCloud']], + [false, ['OC\Files\Storage\Shared', 'OCA\Files_Sharing\External\Storage']], + [false, ['OC\Files\Storage\Shared', 'OC\Files\Storage\OwnCloud']], + [false, ['OCA\Files_Sharing\External\Storage', 'OC\Files\Storage\OwnCloud']], + [false, ['OC\Files\Storage\Shared', 'OCA\Files_Sharing\External\Storage', 'OC\Files\Storage\OwnCloud']], + ]; + } + +} diff --git a/tests/lib/encryption/managertest.php b/tests/lib/encryption/managertest.php index 6355c706b61..3dcfc949a18 100644 --- a/tests/lib/encryption/managertest.php +++ b/tests/lib/encryption/managertest.php @@ -24,6 +24,9 @@ class ManagerTest extends TestCase { /** @var \PHPUnit_Framework_MockObject_MockObject */ private $util; + + /** @var \PHPUnit_Framework_MockObject_MockObject | \OC\Memcache\ArrayCache */ + private $arrayCache; public function setUp() { parent::setUp(); @@ -32,7 +35,8 @@ class ManagerTest extends TestCase { $this->l10n = $this->getMock('\OCP\Il10n'); $this->view = $this->getMock('\OC\Files\View'); $this->util = $this->getMockBuilder('\OC\Encryption\Util')->disableOriginalConstructor()->getMock(); - $this->manager = new Manager($this->config, $this->logger, $this->l10n, $this->view, $this->util); + $this->arrayCache = $this->getMock('OC\Memcache\ArrayCache'); + $this->manager = new Manager($this->config, $this->logger, $this->l10n, $this->view, $this->util, $this->arrayCache); } public function testManagerIsDisabled() { diff --git a/tests/lib/encryption/utiltest.php b/tests/lib/encryption/utiltest.php index 449326bb351..ec316a9f05a 100644 --- a/tests/lib/encryption/utiltest.php +++ b/tests/lib/encryption/utiltest.php @@ -188,49 +188,4 @@ class UtilTest extends TestCase { ); } - /** - * @dataProvider provideWrapStorage - */ - public function testWrapStorage($expectedWrapped, $wrappedStorages) { - $storage = $this->getMockBuilder('OC\Files\Storage\Storage') - ->disableOriginalConstructor() - ->getMock(); - - foreach ($wrappedStorages as $wrapper) { - $storage->expects($this->any()) - ->method('instanceOfStorage') - ->willReturnMap([ - [$wrapper, true], - ]); - } - - $mount = $this->getMockBuilder('OCP\Files\Mount\IMountPoint') - ->disableOriginalConstructor() - ->getMock(); - - $returnedStorage = $this->util->wrapStorage('mountPoint', $storage, $mount); - - $this->assertEquals( - $expectedWrapped, - $returnedStorage->instanceOfStorage('OC\Files\Storage\Wrapper\Encryption'), - 'Asserted that the storage is (not) wrapped with encryption' - ); - } - - public function provideWrapStorage() { - return [ - // Wrap when not wrapped or not wrapped with storage - [true, []], - [true, ['OCA\Files_Trashbin\Storage']], - - // Do not wrap shared storages - [false, ['OC\Files\Storage\Shared']], - [false, ['OCA\Files_Sharing\External\Storage']], - [false, ['OC\Files\Storage\OwnCloud']], - [false, ['OC\Files\Storage\Shared', 'OCA\Files_Sharing\External\Storage']], - [false, ['OC\Files\Storage\Shared', 'OC\Files\Storage\OwnCloud']], - [false, ['OCA\Files_Sharing\External\Storage', 'OC\Files\Storage\OwnCloud']], - [false, ['OC\Files\Storage\Shared', 'OCA\Files_Sharing\External\Storage', 'OC\Files\Storage\OwnCloud']], - ]; - } } diff --git a/tests/lib/files/storage/wrapper/encryption.php b/tests/lib/files/storage/wrapper/encryption.php index bde920e440e..651299a3eab 100644 --- a/tests/lib/files/storage/wrapper/encryption.php +++ b/tests/lib/files/storage/wrapper/encryption.php @@ -87,6 +87,9 @@ class Encryption extends Storage { */ private $config; + /** @var \OC\Memcache\ArrayCache | \PHPUnit_Framework_MockObject_MockObject */ + private $arrayCache; + /** @var integer dummy unencrypted size */ private $dummySize = -1; @@ -104,6 +107,7 @@ class Encryption extends Storage { ->method('getEncryptionModule') ->willReturn($mockModule); + $this->arrayCache = $this->getMock('OC\Memcache\ArrayCache'); $this->config = $this->getMockBuilder('\OCP\IConfig') ->disableOriginalConstructor() ->getMock(); @@ -111,9 +115,10 @@ class Encryption extends Storage { ->disableOriginalConstructor() ->getMock(); - $this->util = $this->getMock('\OC\Encryption\Util', + $this->util = $this->getMock( + '\OC\Encryption\Util', ['getUidAndFilename', 'isFile', 'isExcluded'], - [new View(), new \OC\User\Manager(), $this->groupManager, $this->config]); + [new View(), new \OC\User\Manager(), $this->groupManager, $this->config, $this->arrayCache]); $this->util->expects($this->any()) ->method('getUidAndFilename') ->willReturnCallback(function ($path) { @@ -168,7 +173,7 @@ class Encryption extends Storage { 'mountPoint' => '/', 'mount' => $this->mount ], - $this->encryptionManager, $this->util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager + $this->encryptionManager, $this->util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager, $this->arrayCache ] ) ->setMethods(['getMetaData', 'getCache', 'getEncryptionModule']) @@ -245,7 +250,7 @@ class Encryption extends Storage { 'mountPoint' => '/', 'mount' => $this->mount ], - $this->encryptionManager, $this->util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager + $this->encryptionManager, $this->util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager, $this->arrayCache ] ) ->setMethods(['getCache', 'verifyUnencryptedSize']) @@ -255,25 +260,39 @@ class Encryption extends Storage { $this->invokePrivate($this->instance, 'unencryptedSize', [[$path => $storedUnencryptedSize]]); } - + $fileEntry = $this->getMockBuilder('\OC\Files\Cache\Cache') + ->disableOriginalConstructor()->getMock(); $sourceStorage->expects($this->once())->method('getMetaData')->with($path) ->willReturn($metaData); + $sourceStorage->expects($this->any()) + ->method('getCache') + ->with($path) + ->willReturn($fileEntry); + $fileEntry->expects($this->any()) + ->method('get') + ->with($metaData['fileid']); $this->instance->expects($this->any())->method('getCache')->willReturn($cache); $this->instance->expects($this->any())->method('verifyUnencryptedSize') ->with($path, 0)->willReturn($expected['size']); $result = $this->instance->getMetaData($path); - $this->assertSame($expected['encrypted'], $result['encrypted']); + if(isset($expected['encrypted'])) { + $this->assertSame($expected['encrypted'], (bool)$result['encrypted']); + + if(isset($expected['encryptedVersion'])) { + $this->assertSame($expected['encryptedVersion'], $result['encryptedVersion']); + } + } $this->assertSame($expected['size'], $result['size']); } public function dataTestGetMetaData() { return [ - ['/test.txt', ['size' => 42, 'encrypted' => false], true, true, 12, ['size' => 12, 'encrypted' => true]], + ['/test.txt', ['size' => 42, 'encrypted' => 2, 'encryptedVersion' => 2, 'fileid' => 1], true, true, 12, ['size' => 12, 'encrypted' => true, 'encryptedVersion' => 2]], ['/test.txt', null, true, true, 12, null], - ['/test.txt', ['size' => 42, 'encrypted' => false], false, false, 12, ['size' => 42, 'encrypted' => false]], - ['/test.txt', ['size' => 42, 'encrypted' => false], true, false, 12, ['size' => 12, 'encrypted' => true]] + ['/test.txt', ['size' => 42, 'encrypted' => 0, 'fileid' => 1], false, false, 12, ['size' => 42, 'encrypted' => false]], + ['/test.txt', ['size' => 42, 'encrypted' => false, 'fileid' => 1], true, false, 12, ['size' => 12, 'encrypted' => true]] ]; } @@ -293,7 +312,7 @@ class Encryption extends Storage { 'mountPoint' => '/', 'mount' => $this->mount ], - $this->encryptionManager, $this->util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager + $this->encryptionManager, $this->util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager, $this->arrayCache ] ) ->setMethods(['getCache', 'verifyUnencryptedSize']) @@ -331,7 +350,7 @@ class Encryption extends Storage { 'mountPoint' => '/', 'mount' => $this->mount ], - $this->encryptionManager, $this->util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager + $this->encryptionManager, $this->util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager, $this->arrayCache ] ) ->setMethods(['fixUnencryptedSize']) @@ -521,8 +540,15 @@ class Encryption extends Storage { ->disableOriginalConstructor()->getMock(); $util = $this->getMockBuilder('\OC\Encryption\Util') - ->setConstructorArgs([new View(), new \OC\User\Manager(), $this->groupManager, $this->config]) - ->getMock(); + ->setConstructorArgs( + [ + new View(), + new \OC\User\Manager(), + $this->groupManager, + $this->config, + $this->arrayCache + ] + )->getMock(); $instance = $this->getMockBuilder('\OC\Files\Storage\Wrapper\Encryption') ->setConstructorArgs( @@ -533,7 +559,7 @@ class Encryption extends Storage { 'mountPoint' => '/', 'mount' => $this->mount ], - $this->encryptionManager, $util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager + $this->encryptionManager, $util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager, $this->arrayCache ] ) ->setMethods(['readFirstBlock', 'parseRawHeader']) @@ -582,7 +608,7 @@ class Encryption extends Storage { ->disableOriginalConstructor()->getMock(); $util = $this->getMockBuilder('\OC\Encryption\Util') - ->setConstructorArgs([new View(), new \OC\User\Manager(), $this->groupManager, $this->config]) + ->setConstructorArgs([new View(), new \OC\User\Manager(), $this->groupManager, $this->config, $this->arrayCache]) ->getMock(); $cache = $this->getMockBuilder('\OC\Files\Cache\Cache') @@ -600,7 +626,7 @@ class Encryption extends Storage { 'mountPoint' => '/', 'mount' => $this->mount ], - $this->encryptionManager, $util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager + $this->encryptionManager, $util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager, $this->arrayCache ] ) ->setMethods(['readFirstBlock', 'parseRawHeader', 'getCache']) @@ -636,7 +662,7 @@ class Encryption extends Storage { 'mountPoint' => '/', 'mount' => $this->mount ], - $this->encryptionManager, $this->util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager + $this->encryptionManager, $this->util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager, $this->arrayCache ); @@ -763,6 +789,8 @@ class Encryption extends Storage { $expectedCachePut['encryptedVersion'] = 12345; } + $this->arrayCache->expects($this->never())->method('set'); + $this->cache->expects($this->once()) ->method('put') ->with($sourceInternalPath, $expectedCachePut); @@ -812,7 +840,8 @@ class Encryption extends Storage { null, $this->keyStore, $this->update, - $this->mountManager + $this->mountManager, + $this->arrayCache ] ) ->setMethods(['updateUnencryptedSize', 'getCache']) @@ -825,6 +854,9 @@ class Encryption extends Storage { $instance->expects($this->any())->method('getCache') ->willReturn($cache); + $this->arrayCache->expects($this->once())->method('set') + ->with('encryption_copy_version_' . $sourceInternalPath, true); + if ($copyResult) { $cache->expects($this->once())->method('get') ->with($sourceInternalPath) diff --git a/tests/lib/files/stream/encryption.php b/tests/lib/files/stream/encryption.php index f67dd09bc4d..afb31f2822d 100644 --- a/tests/lib/files/stream/encryption.php +++ b/tests/lib/files/stream/encryption.php @@ -31,6 +31,7 @@ class Encryption extends \Test\TestCase { $config = $this->getMockBuilder('\OCP\IConfig') ->disableOriginalConstructor() ->getMock(); + $arrayCache = $this->getMock('OC\Memcache\ArrayCache'); $groupManager = $this->getMockBuilder('\OC\Group\Manager') ->disableOriginalConstructor() ->getMock(); @@ -39,7 +40,11 @@ class Encryption extends \Test\TestCase { ->setMethods(['getAccessList']) ->getMock(); $file->expects($this->any())->method('getAccessList')->willReturn([]); - $util = $this->getMock('\OC\Encryption\Util', ['getUidAndFilename'], [new View(), new \OC\User\Manager(), $groupManager, $config]); + $util = $this->getMock( + '\OC\Encryption\Util', + ['getUidAndFilename'], + [new View(), new \OC\User\Manager(), $groupManager, $config, $arrayCache] + ); $util->expects($this->any()) ->method('getUidAndFilename') ->willReturn(['user1', $internalPath]); diff --git a/tests/lib/share20/defaultshareprovidertest.php b/tests/lib/share20/defaultshareprovidertest.php index 610de3b6232..8d8ae8d4809 100644 --- a/tests/lib/share20/defaultshareprovidertest.php +++ b/tests/lib/share20/defaultshareprovidertest.php @@ -969,7 +969,7 @@ class DefaultShareProviderTest extends \Test\TestCase { $this->assertCount(1, $share); $share = $share[0]; - $this->assertSame($id, $share->getId()); + $this->assertSame((string)$id, $share->getId()); $this->assertSame('sharedWith', $share->getSharedWith()); $this->assertSame('shareOwner', $share->getShareOwner()); $this->assertSame('sharedBy', $share->getSharedBy()); diff --git a/tests/lib/share20/managertest.php b/tests/lib/share20/managertest.php index 2f45de86b98..029c8cd8543 100644 --- a/tests/lib/share20/managertest.php +++ b/tests/lib/share20/managertest.php @@ -640,10 +640,21 @@ class ManagerTest extends \Test\TestCase { $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_GROUP, $limitedPermssions, $group0, $user0, $user0, null, null, null), 'A share requires permissions', true]; $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_LINK, $limitedPermssions, null, $user0, $user0, null, null, null), 'A share requires permissions', true]; + $mount = $this->getMock('OC\Files\Mount\MoveableMount'); + $limitedPermssions->method('getMountPoint')->willReturn($mount); + $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_USER, $limitedPermssions, $user2, $user0, $user0, 31, null, null), 'Cannot increase permissions of path', true]; $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_GROUP, $limitedPermssions, $group0, $user0, $user0, 17, null, null), 'Cannot increase permissions of path', true]; $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_LINK, $limitedPermssions, null, $user0, $user0, 3, null, null), 'Cannot increase permissions of path', true]; + $nonMoveableMountPermssions = $this->getMock('\OCP\Files\File'); + $nonMoveableMountPermssions->method('isShareable')->willReturn(true); + $nonMoveableMountPermssions->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_READ); + $nonMoveableMountPermssions->method('getPath')->willReturn('path'); + + $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_USER, $nonMoveableMountPermssions, $user2, $user0, $user0, 11, null, null), 'Cannot increase permissions of path', false]; + $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_GROUP, $nonMoveableMountPermssions, $group0, $user0, $user0, 11, null, null), 'Cannot increase permissions of path', false]; + $rootFolder = $this->getMock('\OCP\Files\Folder'); $rootFolder->method('isShareable')->willReturn(true); $rootFolder->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_ALL); diff --git a/tests/lib/share20/sharetest.php b/tests/lib/share20/sharetest.php new file mode 100644 index 00000000000..fdfc69f6577 --- /dev/null +++ b/tests/lib/share20/sharetest.php @@ -0,0 +1,93 @@ +<?php +/** + * @author Roeland Jago Douma <rullzer@owncloud.com> + * + * @copyright Copyright (c) 2016, 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 Test\Share20; + +use OCP\Files\IRootFolder; + +/** + * Class ShareTest + * + * @package Test\Share20 + */ +class ShareTest extends \Test\TestCase { + + /** @var IRootFolder|\PHPUnit_Framework_MockObject_MockObject */ + protected $rootFolder; + /** @var \OCP\Share\IShare */ + protected $share; + + public function setUp() { + $this->rootFolder = $this->getMock('\OCP\Files\IRootFolder'); + $this->share = new \OC\Share20\Share($this->rootFolder); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage String expected. + */ + public function testSetIdInvalid() { + $this->share->setId(1.2); + } + + public function testSetIdInt() { + $this->share->setId(42); + $this->assertEquals('42', $this->share->getId()); + } + + + public function testSetIdString() { + $this->share->setId('foo'); + $this->assertEquals('foo', $this->share->getId()); + } + + /** + * @expectedException \OCP\Share\Exceptions\IllegalIDChangeException + * @expectedExceptionMessage Not allowed to assign a new internal id to a share + */ + public function testSetIdOnce() { + $this->share->setId('foo'); + $this->share->setId('bar'); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage String expected. + */ + public function testSetProviderIdInt() { + $this->share->setProviderId(42); + } + + + public function testSetProviderIdString() { + $this->share->setProviderId('foo'); + $this->share->setId('bar'); + $this->assertEquals('foo:bar', $this->share->getFullId()); + } + + /** + * @expectedException \OCP\Share\Exceptions\IllegalIDChangeException + * @expectedExceptionMessage Not allowed to assign a new provider id to a share + */ + public function testSetProviderIdOnce() { + $this->share->setProviderId('foo'); + $this->share->setProviderId('bar'); + } +} diff --git a/tests/lib/traits/encryptiontrait.php b/tests/lib/traits/encryptiontrait.php index 92ba3734873..2c1c585d6d4 100644 --- a/tests/lib/traits/encryptiontrait.php +++ b/tests/lib/traits/encryptiontrait.php @@ -8,8 +8,8 @@ namespace Test\Traits; -use OC\Encryption\Util; -use OC\Files\View; +use OC\Encryption\EncryptionWrapper; +use OC\Memcache\ArrayCache; use OCA\Encryption\AppInfo\Application; use OCA\Encryption\KeyManager; use OCA\Encryption\Users\Setup; @@ -68,13 +68,13 @@ trait EncryptionTrait { } protected function postLogin() { - $util = new Util( - new View(), - \OC::$server->getUserManager(), - \OC::$server->getGroupManager(), - \OC::$server->getConfig() + $encryptionWrapper = new EncryptionWrapper( + new ArrayCache(), + \OC::$server->getEncryptionManager(), + \OC::$server->getLogger() ); - $this->registerStorageWrapper('oc_encryption', array($util, 'wrapStorage')); + + $this->registerStorageWrapper('oc_encryption', array($encryptionWrapper, 'wrapStorage')); } protected function setUpEncryptionTrait() { |